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

56
Управление вычислительным кластером DSP процессоров на Erlang Илья Щербак Eltex [email protected]

description

HighLoad++ 2013

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

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

Управление вычислительным кластером DSP процессоров на

Erlang Илья Щербак

[email protected]

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

I. Intro

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

С чего все начиналось?

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

Особенности специализированных вычислителей

• Различные архитектуры (DSP, GPU, FPGA, ARM, etc)

• Сложность разработки• Сложность отладки• Низкий уровень• Высокие требования к разработчику

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

– Как этого избежать?

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

– Как этого избежать?– Никак.

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

– Зачем это нужно?

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

– Зачем это нужно?– Решение специализированных задач более эффективно.

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

Когда это нужно

• Нужно повысить вычислительную плотность

• Нужно сэкономить на энергопотреблении• GPP не справляется с этой задачей или решение на GPP слишком дорого

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

Что хорошо делать на DSP

• Цифровая обработка сигналов• Анализ изображений• Обработка видео

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

Чего стоит избегать

• Бизнес логика на вычислителях• Монолитность системы

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

Модульная архитектура

• DSP выполняет узкоспециализированную задачу

• DSP могут быть скоммутированы произвольным образом

• Бизнес-логика системы находится на уровне хоста

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

DSP – специализированный вычислитель

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

The UNIX K.I.S.S.Простые части через прозрачный интерфейс

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

II. Actor model and Erlang

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

Особенности модели акторов

• Интефейс обмена сообщениями• Динамическое порождение других акторов• Изоляция данных внутри актора, отсутствие shared state

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

Модель акторов хорошо подходит для concurency систем

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

Erlang как реализация модели акторов

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

Особенности Erlang VM

• Очень дешевые процессы• Легкие байнари• Развитые extentions механизмы

• Сборщик мусора на каждый Erlang процесс (никакого Stop-World)

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

Erlang process как интерфейс к вычислителю

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

III. Cluster structure

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

Вычислительная частьTI TMS320C6678

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

Core Pack

• 8 ядер 1025 MGz

• 8 функциональных модулей на ядро

• VLIW (Very long instruction world) архитектура

• L1/L2 configurable cache

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

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

Peripherals• EMIF

• EDMA3

• SRIO

• PCIe

• Ethernet

• HyperLink

• TSIP

• SPI

• UART

• I2C

• GPIO

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

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

Peripherals use in cluster

• EMIF

• EDMA3

• PCIe

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

DSP programm

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

SYS/BIOS

• Real-time OS

• Управление памятью• Механизмы шедулинга

• Механизмы синхронизации

• Инструменты мониторинга и отладки

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

Транспортная частьPCI-E/DMA/MSI

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

PCIe

• Соединение точка-точка• Транзакционный протокол

Peripheral Component Interconnect

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

DMA

• Транспорт данных через EDMA для снижения нагрузки на хост/DSP

Direct Memory Access

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

MSI

• Отсутствие гонок • Расширенный набор векторов прерывания

Message Signalled Interrupt

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

IV. Driver interface

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

Функции драйвера

• Загрузка DSP

• Предоставление интерфейса к DSP

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

Boot protocol

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

Processprotocol

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

Implemented interfaces

• read/write – для синхронных операций

• mmap/ioctl/poll – для асинхронных запросов

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

V. Erlang interface

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

Взаимодействие с кодомvs

взаимодействие с приложениемСкорость

vsБезопасность VM

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

Erlang extentions

• Port extentions

• Port Driver

• Erlang DP

• NIF (Native Implemented Function)

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

Почему NIF – самый быстрый extention механизм

• Прямой вызов функции, как BIF

• Исполнение в контексте Erlang process

• Использование внутренних структур данных VM

• Прямой доступ к Heap процесса

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

NIF only

Erlang VM

DSP DSP

driver_lib.soHost

ClusterDSP DSP

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

Гибридная схема

• NIF – как интерфейс доступа к Shared Memory

• Port extention – как интерфейс доступа к вычислителю

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

Гибридная схема

Erlang VMOS Process

shm_lib.so

DSP DSP

shm_lib.so

Host

ClusterDSP DSP

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

Zero-copy mode илиMagic binary

Erlang binary resource

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

Кастомные аллокаторы в 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

Потоки данных в системе

ProcessProducer

ProcessConsumer

Erlang VM

– реальный поток

– логический поток

– Erlang Port

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

Erlang VM как тонкий коммутатор

Erlang VM

OS

HostDSP cluster

App App App

Peripherials

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

VI. Shared memory framework

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

Задачи SHM framework

• Аллокация shared memory

• Серилизация/десерилизация• Получение объекта по id

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

Shared memory allocationBuddy memory allocation

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

Lock free memory accessCAS operators

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

VII. Coda

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

Основные идеи доклада

• Управляющая логика на Erlang

• Программа на DSP небольшая, хорошо выполняет определенную задачу

• Система на Erlang нужным образом коммутирует DSP

• При данной декомпозиции системы вычислитель легко заменяется, так как логика работает с ним как с черным ящиком

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

Спасибо за внимание!Илья Щербак

[email protected]