Илья Щербак, eltex
DESCRIPTION
HighLoad++ 2013TRANSCRIPT
![Page 1: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/1.jpg)
Управление вычислительным кластером DSP процессоров на
Erlang Илья Щербак
![Page 2: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/2.jpg)
I. Intro
![Page 3: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/3.jpg)
С чего все начиналось?
![Page 4: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/4.jpg)
Особенности специализированных вычислителей
• Различные архитектуры (DSP, GPU, FPGA, ARM, etc)
• Сложность разработки• Сложность отладки• Низкий уровень• Высокие требования к разработчику
![Page 5: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/5.jpg)
– Как этого избежать?
![Page 6: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/6.jpg)
– Как этого избежать?– Никак.
![Page 7: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/7.jpg)
– Зачем это нужно?
![Page 8: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/8.jpg)
– Зачем это нужно?– Решение специализированных задач более эффективно.
![Page 9: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/9.jpg)
Когда это нужно
• Нужно повысить вычислительную плотность
• Нужно сэкономить на энергопотреблении• GPP не справляется с этой задачей или решение на GPP слишком дорого
![Page 10: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/10.jpg)
Что хорошо делать на DSP
• Цифровая обработка сигналов• Анализ изображений• Обработка видео
![Page 11: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/11.jpg)
Чего стоит избегать
• Бизнес логика на вычислителях• Монолитность системы
![Page 12: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/12.jpg)
Модульная архитектура
• DSP выполняет узкоспециализированную задачу
• DSP могут быть скоммутированы произвольным образом
• Бизнес-логика системы находится на уровне хоста
![Page 13: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/13.jpg)
DSP – специализированный вычислитель
![Page 14: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/14.jpg)
The UNIX K.I.S.S.Простые части через прозрачный интерфейс
![Page 15: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/15.jpg)
II. Actor model and Erlang
![Page 16: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/16.jpg)
Особенности модели акторов
• Интефейс обмена сообщениями• Динамическое порождение других акторов• Изоляция данных внутри актора, отсутствие shared state
![Page 17: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/17.jpg)
Модель акторов хорошо подходит для concurency систем
![Page 18: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/18.jpg)
Erlang как реализация модели акторов
![Page 19: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/19.jpg)
Особенности Erlang VM
• Очень дешевые процессы• Легкие байнари• Развитые extentions механизмы
• Сборщик мусора на каждый Erlang процесс (никакого Stop-World)
![Page 20: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/20.jpg)
Erlang process как интерфейс к вычислителю
![Page 21: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/21.jpg)
III. Cluster structure
![Page 22: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/22.jpg)
Вычислительная частьTI TMS320C6678
![Page 23: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/23.jpg)
Core Pack
• 8 ядер 1025 MGz
• 8 функциональных модулей на ядро
• VLIW (Very long instruction world) архитектура
• L1/L2 configurable cache
![Page 24: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/24.jpg)
On-Chip Memory
• 256 KB L1 Program Memory/Cache
• 256 KB L1 Data Memory/Cache
• 4096 KB L2 Memory/Cache
• 4096 KB MSM
![Page 25: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/25.jpg)
Peripherals• EMIF
• EDMA3
• SRIO
• PCIe
• Ethernet
• HyperLink
• TSIP
• SPI
• UART
• I2C
• GPIO
![Page 26: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/26.jpg)
16 Features Copyright 2012 Texas Instruments Incorporated
SPRS691C—February 2012Multicore Fixed and Floating-Point Digital Signal ProcessorTMS320C6678
www.ti.com
1.3 Functional Block Diagram
Figure 1-1 shows the functional block diagram of the TMS320C6678 device. Figure 1-1 Functional Block Diagram
8 Cores @ up to 1.25 GHz
PowerManagement
Debug & Trace
Boot ROM
Semaphore
SR
IO4
!
PC
Ie2
!
UA
RT
TS
IP!
2
SP
I
IC
2
PacketDMA
Multicore Navigator
QueueManager
GP
IO
!3
PLL
EDMA
!3
EM
IF16
4MBMSM
SRAM
64-BitDDR3 EMIF
Memory Subsystem
MSMC
C66xCorePac
32KB L1P-Cache
32KB L1D-Cache
512KB L2 Cache
TeraNetHyperLink TeraNet
Network Coprocessor
Sw
itch
Eth
ern
et
Sw
itch
SG
MII
2!
PacketAccelerator
SecurityAccelerator
![Page 27: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/27.jpg)
Peripherals use in cluster
• EMIF
• EDMA3
• PCIe
![Page 28: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/28.jpg)
DSP programm
![Page 29: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/29.jpg)
SYS/BIOS
• Real-time OS
• Управление памятью• Механизмы шедулинга
• Механизмы синхронизации
• Инструменты мониторинга и отладки
![Page 30: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/30.jpg)
Транспортная частьPCI-E/DMA/MSI
![Page 31: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/31.jpg)
PCIe
• Соединение точка-точка• Транзакционный протокол
Peripheral Component Interconnect
![Page 32: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/32.jpg)
DMA
• Транспорт данных через EDMA для снижения нагрузки на хост/DSP
Direct Memory Access
![Page 33: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/33.jpg)
MSI
• Отсутствие гонок • Расширенный набор векторов прерывания
Message Signalled Interrupt
![Page 34: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/34.jpg)
IV. Driver interface
![Page 35: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/35.jpg)
Функции драйвера
• Загрузка DSP
• Предоставление интерфейса к DSP
![Page 36: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/36.jpg)
Boot protocol
![Page 37: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/37.jpg)
Processprotocol
![Page 38: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/38.jpg)
Implemented interfaces
• read/write – для синхронных операций
• mmap/ioctl/poll – для асинхронных запросов
![Page 39: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/39.jpg)
V. Erlang interface
![Page 40: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/40.jpg)
Взаимодействие с кодомvs
взаимодействие с приложениемСкорость
vsБезопасность VM
![Page 41: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/41.jpg)
Erlang extentions
• Port extentions
• Port Driver
• Erlang DP
• NIF (Native Implemented Function)
![Page 42: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/42.jpg)
Почему NIF – самый быстрый extention механизм
• Прямой вызов функции, как BIF
• Исполнение в контексте Erlang process
• Использование внутренних структур данных VM
• Прямой доступ к Heap процесса
![Page 43: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/43.jpg)
NIF only
Erlang VM
DSP DSP
driver_lib.soHost
ClusterDSP DSP
![Page 44: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/44.jpg)
Гибридная схема
• NIF – как интерфейс доступа к Shared Memory
• Port extention – как интерфейс доступа к вычислителю
![Page 45: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/45.jpg)
Гибридная схема
Erlang VMOS Process
shm_lib.so
DSP DSP
shm_lib.so
Host
ClusterDSP DSP
![Page 46: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/46.jpg)
Zero-copy mode илиMagic binary
Erlang binary resource
![Page 47: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/47.jpg)
Кастомные аллокаторы в Erlang
#define SIZE 100ErlNifResourceType *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;}
![Page 48: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/48.jpg)
Потоки данных в системе
ProcessProducer
ProcessConsumer
Erlang VM
– реальный поток
– логический поток
– Erlang Port
![Page 49: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/49.jpg)
Erlang VM как тонкий коммутатор
Erlang VM
OS
HostDSP cluster
App App App
Peripherials
![Page 50: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/50.jpg)
VI. Shared memory framework
![Page 51: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/51.jpg)
Задачи SHM framework
• Аллокация shared memory
• Серилизация/десерилизация• Получение объекта по id
![Page 52: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/52.jpg)
Shared memory allocationBuddy memory allocation
![Page 53: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/53.jpg)
Lock free memory accessCAS operators
![Page 54: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/54.jpg)
VII. Coda
![Page 55: Илья Щербак, Eltex](https://reader031.vdocuments.pub/reader031/viewer/2022020101/549232f5ac79595e288b4714/html5/thumbnails/55.jpg)
Основные идеи доклада
• Управляющая логика на Erlang
• Программа на DSP небольшая, хорошо выполняет определенную задачу
• Система на Erlang нужным образом коммутирует DSP
• При данной декомпозиции системы вычислитель легко заменяется, так как логика работает с ним как с черным ящиком