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

Post on 17-Dec-2014

689 views 5 download

description

HighLoad++ 2013

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

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

Erlang Илья Щербак

Eltexilya@shcherbak.ru

I. Intro

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

II. Actor model and Erlang

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

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

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

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

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

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

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

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

III. Cluster structure

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

Core Pack

• 8 ядер 1025 MGz

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

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

• L1/L2 configurable cache

On-Chip Memory

• 256 KB L1 Program Memory/Cache

• 256 KB L1 Data Memory/Cache

• 4096 KB L2 Memory/Cache

• 4096 KB MSM

Peripherals• EMIF

• EDMA3

• SRIO

• PCIe

• Ethernet

• HyperLink

• TSIP

• SPI

• UART

• I2C

• GPIO

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

Peripherals use in cluster

• EMIF

• EDMA3

• PCIe

DSP programm

SYS/BIOS

• Real-time OS

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

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

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

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

PCIe

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

Peripheral Component Interconnect

DMA

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

Direct Memory Access

MSI

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

Message Signalled Interrupt

IV. Driver interface

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

• Загрузка DSP

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

Boot protocol

Processprotocol

Implemented interfaces

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

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

V. Erlang interface

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

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

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

Erlang extentions

• Port extentions

• Port Driver

• Erlang DP

• NIF (Native Implemented Function)

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

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

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

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

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

NIF only

Erlang VM

DSP DSP

driver_lib.soHost

ClusterDSP DSP

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

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

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

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

Erlang VMOS Process

shm_lib.so

DSP DSP

shm_lib.so

Host

ClusterDSP DSP

Zero-copy mode илиMagic binary

Erlang binary resource

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

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

ProcessProducer

ProcessConsumer

Erlang VM

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

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

– Erlang Port

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

Erlang VM

OS

HostDSP cluster

App App App

Peripherials

VI. Shared memory framework

Задачи SHM framework

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

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

Shared memory allocationBuddy memory allocation

Lock free memory accessCAS operators

VII. Coda

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

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

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

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

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

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

Eltexilya@shcherbak.ru