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

1,197 views

Published on

HighLoad++ 2013

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

  • Be the first to like this

No Downloads
Views
Total views
1,197
On SlideShare
0
From Embeds
0
Number of Embeds
304
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Управление вычислительным кластером DSP процессоров на Erlang Илья Щербак Eltex ilya@shcherbak.ru
  2. 2. I. Intro
  3. 3. С чего все начиналось?
  4. 4. Особенности специализированных вычислителей • • • • • Различные архитектуры (DSP, GPU, FPGA, ARM, etc) Сложность разработки Сложность отладки Низкий уровень Высокие требования к разработчику
  5. 5. – Как этого избежать?
  6. 6. – Как этого избежать? – Никак.
  7. 7. – Зачем это нужно?
  8. 8. – Зачем это нужно? – Решение специализированных задач более эффективно.
  9. 9. Когда это нужно • • • Нужно повысить вычислительную плотность Нужно сэкономить на энергопотреблении GPP не справляется с этой задачей или решение на GPP слишком дорого
  10. 10. Что хорошо делать на DSP • • • Цифровая обработка сигналов Анализ изображений Обработка видео
  11. 11. Чего стоит избегать • • Бизнес логика на вычислителях Монолитность системы
  12. 12. Модульная архитектура • • • DSP выполняет узкоспециализированную задачу DSP могут быть скоммутированы произвольным образом Бизнес-логика системы находится на уровне хоста
  13. 13. DSP – специализированный вычислитель
  14. 14. The UNIX K.I.S.S. Простые части через прозрачный интерфейс
  15. 15. II. Actor model and Erlang
  16. 16. Особенности модели акторов • • • Интефейс обмена сообщениями Динамическое порождение других акторов Изоляция данных внутри актора, отсутствие shared state
  17. 17. Модель акторов хорошо подходит для concurency систем
  18. 18. Erlang как реализация модели акторов
  19. 19. Особенности Erlang VM • • • • Очень дешевые процессы Легкие байнари Развитые extentions механизмы Сборщик мусора на каждый Erlang процесс (никакого Stop-World)
  20. 20. Erlang process как интерфейс к вычислителю
  21. 21. III. Cluster structure
  22. 22. Вычислительная часть TI TMS320C6678
  23. 23. Core Pack • • • • 8 ядер 1025 MGz 8 функциональных модулей на ядро VLIW (Very long instruction world) архитектура L1/L2 configurable cache
  24. 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. 25. Peripherals • • • • • • • • • • • EMIF EDMA3 SRIO PCIe Ethernet HyperLink TSIP SPI UART I2C GPIO
  26. 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. 27. Peripherals use in cluster • • • EMIF EDMA3 PCIe
  28. 28. DSP programm
  29. 29. SYS/BIOS • • • • • Real-time OS Управление памятью Механизмы шедулинга Механизмы синхронизации Инструменты мониторинга и отладки
  30. 30. Транспортная часть PCI-E/DMA/MSI
  31. 31. PCIe Peripheral Component Interconnect • • Соединение точка-точка Транзакционный протокол
  32. 32. DMA Direct Memory Access • Транспорт данных через EDMA для снижения нагрузки на хост/DSP
  33. 33. MSI Message Signalled Interrupt • • Отсутствие гонок Расширенный набор векторов прерывания
  34. 34. IV. Driver interface
  35. 35. Функции драйвера • • Загрузка DSP Предоставление интерфейса к DSP
  36. 36. Boot protocol
  37. 37. Process protocol
  38. 38. Implemented interfaces • • read/write – для синхронных операций mmap/ioctl/poll – для асинхронных запросов
  39. 39. V. Erlang interface
  40. 40. Взаимодействие с кодом vs взаимодействие с приложением Скорость vs Безопасность VM
  41. 41. Erlang extentions • • • • Port extentions Port Driver Erlang DP NIF (Native Implemented Function)
  42. 42. Почему NIF – самый быстрый extention механизм • • • • Прямой вызов функции, как BIF Исполнение в контексте Erlang process Использование внутренних структур данных VM Прямой доступ к Heap процесса
  43. 43. NIF only Erlang VM driver_lib.so DSP Host DSP DSP DSP Cluster
  44. 44. Гибридная схема • • NIF – как интерфейс доступа к Shared Memory Port extention – как интерфейс доступа к вычислителю
  45. 45. Гибридная схема shm_lib.so shm_lib.so Erlang VM OS Process Host DSP DSP DSP DSP Cluster
  46. 46. Zero-copy mode или Magic binary Erlang binary resource
  47. 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. 48. Потоки данных в системе Erlang VM – реальный поток – логический поток Process Producer – Erlang Port Process Consumer
  49. 49. Erlang VM как тонкий коммутатор App App App Erlang VM OS Peripherials Host DSP cluster
  50. 50. VI. Shared memory framework
  51. 51. Задачи SHM framework • • • Аллокация shared memory Серилизация/десерилизация Получение объекта по id
  52. 52. Shared memory allocation Buddy memory allocation
  53. 53. Lock free memory access CAS operators
  54. 54. VII. Coda
  55. 55. Основные идеи доклада • • Управляющая логика на Erlang • • Система на Erlang нужным образом коммутирует DSP Программа на DSP небольшая, хорошо выполняет определенную задачу При данной декомпозиции системы вычислитель легко заменяется, так как логика работает с ним как с черным ящиком
  56. 56. Спасибо за внимание! Илья Щербак Eltex ilya@shcherbak.ru

×