Your SlideShare is downloading. ×
0
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Илья Щербак, Eltex
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Илья Щербак, Eltex

754

Published on

HighLoad++ 2013

HighLoad++ 2013

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
754
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Управление вычислительным кластером DSP процессоров на Erlang Илья Щербак Eltex ilya@shcherbak.ru
  • 2. I. Intro
  • 3. С чего все начиналось?
  • 4. Особенности специализированных вычислителей • • • • • Различные архитектуры (DSP, GPU, FPGA, ARM, etc) Сложность разработки Сложность отладки Низкий уровень Высокие требования к разработчику
  • 5. – Как этого избежать?
  • 6. – Как этого избежать? – Никак.
  • 7. – Зачем это нужно?
  • 8. – Зачем это нужно? – Решение специализированных задач более эффективно.
  • 9. Когда это нужно • • • Нужно повысить вычислительную плотность Нужно сэкономить на энергопотреблении GPP не справляется с этой задачей или решение на GPP слишком дорого
  • 10. Что хорошо делать на DSP • • • Цифровая обработка сигналов Анализ изображений Обработка видео
  • 11. Чего стоит избегать • • Бизнес логика на вычислителях Монолитность системы
  • 12. Модульная архитектура • • • DSP выполняет узкоспециализированную задачу DSP могут быть скоммутированы произвольным образом Бизнес-логика системы находится на уровне хоста
  • 13. DSP – специализированный вычислитель
  • 14. The UNIX K.I.S.S. Простые части через прозрачный интерфейс
  • 15. II. Actor model and Erlang
  • 16. Особенности модели акторов • • • Интефейс обмена сообщениями Динамическое порождение других акторов Изоляция данных внутри актора, отсутствие shared state
  • 17. Модель акторов хорошо подходит для concurency систем
  • 18. Erlang как реализация модели акторов
  • 19. Особенности Erlang VM • • • • Очень дешевые процессы Легкие байнари Развитые extentions механизмы Сборщик мусора на каждый Erlang процесс (никакого Stop-World)
  • 20. Erlang process как интерфейс к вычислителю
  • 21. III. Cluster structure
  • 22. Вычислительная часть TI TMS320C6678
  • 23. Core Pack • • • • 8 ядер 1025 MGz 8 функциональных модулей на ядро VLIW (Very long instruction world) архитектура L1/L2 configurable cache
  • 24. On-Chip Memory • • • • 256 KB L1 Program Memory/Cache 256 KB L1 Data Memory/Cache 4096 KB L2 Memory/Cache 4096 KB MSM
  • 25. Peripherals • • • • • • • • • • • EMIF EDMA3 SRIO PCIe Ethernet HyperLink TSIP SPI UART I2C GPIO
  • 26. Figure 1-1 Functional Block Diagram Memory Subsystem 4MB MSM SRAM 64-Bit DDR3 EMIF MSMC Debug & Trace Boot ROM Semaphore C66x CorePac Power Management PLL 32KB L1 P-Cache ´3 32KB L1 D-Cache 512KB L2 Cache EDMA 8 Cores @ up to 1.25 GHz ´3 TeraNet HyperLink Multicore Navigator Switch ´4 SRIO Ethernet Switch SGMII ´2 ´2 TSIP SPI UART ´2 PCIe I2C GPIO EMIF 16 Queue Manager Packet DMA Security Accelerator Packet Accelerator Network Coprocessor
  • 27. Peripherals use in cluster • • • EMIF EDMA3 PCIe
  • 28. DSP programm
  • 29. SYS/BIOS • • • • • Real-time OS Управление памятью Механизмы шедулинга Механизмы синхронизации Инструменты мониторинга и отладки
  • 30. Транспортная часть PCI-E/DMA/MSI
  • 31. PCIe Peripheral Component Interconnect • • Соединение точка-точка Транзакционный протокол
  • 32. DMA Direct Memory Access • Транспорт данных через EDMA для снижения нагрузки на хост/DSP
  • 33. MSI Message Signalled Interrupt • • Отсутствие гонок Расширенный набор векторов прерывания
  • 34. IV. Driver interface
  • 35. Функции драйвера • • Загрузка DSP Предоставление интерфейса к DSP
  • 36. Boot protocol
  • 37. Process protocol
  • 38. Implemented interfaces • • read/write – для синхронных операций mmap/ioctl/poll – для асинхронных запросов
  • 39. V. Erlang interface
  • 40. Взаимодействие с кодом vs взаимодействие с приложением Скорость vs Безопасность VM
  • 41. Erlang extentions • • • • Port extentions Port Driver Erlang DP NIF (Native Implemented Function)
  • 42. Почему NIF – самый быстрый extention механизм • • • • Прямой вызов функции, как BIF Исполнение в контексте Erlang process Использование внутренних структур данных VM Прямой доступ к Heap процесса
  • 43. NIF only Erlang VM driver_lib.so DSP Host DSP DSP DSP Cluster
  • 44. Гибридная схема • • NIF – как интерфейс доступа к Shared Memory Port extention – как интерфейс доступа к вычислителю
  • 45. Гибридная схема shm_lib.so shm_lib.so Erlang VM OS Process Host DSP DSP DSP DSP Cluster
  • 46. Zero-copy mode или Magic binary Erlang binary resource
  • 47. Кастомные аллокаторы в Erlang #define SIZE 100 ErlNifResourceType *resource; static ERL_NIF_TERM sample_nif_function(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]){ void *data = enif_alloc_resource(resource, SIZE); return enif_make_resource(env, data); } static void custom_destructor(ErlNifEnv *env, void *obj){} static int load(ErlNifEnv *env, void **priv, ERL_NIF_TERM load_info){ resource = enif_open_resource_type(env, NULL, "resource", custom_destructor, ERL_NIF_RT_CREATE, NULL); return 0; }
  • 48. Потоки данных в системе Erlang VM – реальный поток – логический поток Process Producer – Erlang Port Process Consumer
  • 49. Erlang VM как тонкий коммутатор App App App Erlang VM OS Peripherials Host DSP cluster
  • 50. VI. Shared memory framework
  • 51. Задачи SHM framework • • • Аллокация shared memory Серилизация/десерилизация Получение объекта по id
  • 52. Shared memory allocation Buddy memory allocation
  • 53. Lock free memory access CAS operators
  • 54. VII. Coda
  • 55. Основные идеи доклада • • Управляющая логика на Erlang • • Система на Erlang нужным образом коммутирует DSP Программа на DSP небольшая, хорошо выполняет определенную задачу При данной декомпозиции системы вычислитель легко заменяется, так как логика работает с ним как с черным ящиком
  • 56. Спасибо за внимание! Илья Щербак Eltex ilya@shcherbak.ru

×