Процессор cell

37
Процессор Cell Киреев Сергей ИВМиМГ

Upload: merlin

Post on 15-Jan-2016

63 views

Category:

Documents


0 download

DESCRIPTION

Процессор Cell. Киреев Сергей ИВМиМГ. План. Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора Cell Реализации систем на базе Cell. История Cell. IBM, SCEI/Sony, Toshiba Alliance formed in 2000 Austin-based Design Center opened in March 2001 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Процессор  Cell

Процессор Cell

Киреев СергейИВМиМГ

Page 2: Процессор  Cell

План

Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора Cell Реализации систем на базе Cell

Page 3: Процессор  Cell

История Cell

IBM, SCEI/Sony, Toshiba Alliance formed in 2000 Austin-based Design Center opened in March 2001 Single CellBE operational Spring 2004 2-way SMP operational Summer 2004 February 7, 2005: First technical disclosures October 6, 2005: Mercury announces Cell Blade November 9, 2005: Open source SDK & simulator

published November 14, 2005: Mercury announces Turismo Cell

offering February 8, 2006: IBM announced Cell Blade

Page 4: Процессор  Cell

ВремяPunch Cards

Green Screen/Teletype

Spreadsheet

WWW

Gaming

Main FrameMultitasking

Main FrameBatch

Client/ServerInternet

Mini-ComputerWYSIWYG

Stand Alone PCWindows

Word Processing

Уро

вень

вза

имо

де

йст

вия

Immersive InteractionOnline Gaming

Source: J.A. Kahle

Предпосылки архитектуры Cell

Эволюция пользовательского интерфейса

Cell

Page 5: Процессор  Cell

Преодоление барьеров производительности Power Wall – барьер мощности, Memory Wall – барьер памяти, Frequency Wall – барьер частоты.

Предпосылки архитектуры Cell

Page 6: Процессор  Cell

Характеристики процессора Cell

Cell – многоядерный микропроцессор, содержащий ядра различных типов:

1 PPE – Power Processor Element8 SPE – Synergistic Processor Element

Cell – это не набор различных процессоров, а согласованное целое: Согласованные принципы функционирования, форматы и

семантика данных, Используется общая модель памяти.

Cell – специально создавался для работы на высоких частотах (более 4 ГГц) Фиксированная частота: 3.2 ГГц

Page 7: Процессор  Cell

Структура процессора Cell

SPE – Synergistic Processor Element PPE – Power Processor Element

Page 8: Процессор  Cell

План

Общая информация о процессоре CellАрхитектура процессора Cell Программирование процессора Cell Реализации систем на базе Cell

Page 9: Процессор  Cell
Page 10: Процессор  Cell

Power Processor Element PPE исполняет код операционной системы и управляет

заданиями 64-битная архитектура Power с расширением VMX Упорядоченное исполнение (in-order) Аппаратная поддержка 2-х параллельных потоков Кэш-память: 32 KB L1 code, 32 KB L1 data, 512 KB L2 общий

Page 11: Процессор  Cell

Synergistic Processor Element

SPE обеспечивает вычислительную мощность До 2-х 128-битных SIMD команд за такт Большие ресурсы памяти: 128 128-битных регистров, 256 KB

локальной памяти DMA – асинхронный доступ в общую память: до 16

одновременных запросов

Page 12: Процессор  Cell

Характеристики SPE Организация по типу RISC

Фиксированные 32-битные инструкции Простая структура – общий регистровый

файл Нет поддержки системных функций SIMD-архитектура: большой набор

векторных операций 8,16,32-битные целочисленные 32,64-битные вещественные

Два исполнительных конвейера Общий регистровый файл

128 регистров по 128 бит (16 байт) 256 KB локальной памяти

Общая для кода и данных 16 B/такт для чтения/записи регистров 128 B/такт для передач DMA

Page 13: Процессор  Cell

Element Interconnect Bus

Обмен данными для внутренних коммуникаций Четыре 16-байтных кольцевых канала с поддержкой

нескольких одновременных передач 96 B/такт пиковая пропускная способность До 100 одновременных запросов

Page 14: Процессор  Cell

Пример восьми одновременных транзакцийна Element Interconnect Bus

Page 15: Процессор  Cell

Интерфейсы памятии ввода-вывода

Двойной контроллер памяти XDR (25.6 GB/s) Два конфигурируемых интерфейса

Конфигурируемое число байт на канал Когерентность

Позволяет создавать системы различных конфигураций

Page 16: Процессор  Cell

Предпосылки архитектуры Cell

Преодоление барьеров производительности

Power Wall. Увеличение эффективности затрачиваемой энергии за счет разделения функций:

Процессор, оптимизированный для работы операционной системы и кода со сложным управлением.

Процессор, оптимизированный для выполнения приложений с интенсивными вычислениями.

Memory Wall. Уменьшение влияния задержек памяти за счет: 3-х уровневая структура памяти (основная память, локальная память

SPE, большой регистровый файл SPE). Асинхронная передача между основной и локальной памятью.

Frequency Wall. Достижение высоких частот благодаря специализации процессоров под решение конкретных задач.

Page 17: Процессор  Cell

Пиковая производительность

Page 18: Процессор  Cell

План

Общая информация о процессоре Cell Архитектура процессора CellПрограммирование процессора Cell

Уровни параллелизма Взаимодействие ядер Программирование SPE

Реализации систем на базе Cell

Page 19: Процессор  Cell

Программирование процессора Cell

Два уровня параллелизма:1. Независимые задачи, которые могут быть

выполнены параллельно: 2 аппаратных потока PPE 8 программ SPE

2. Регулярные векторные данные, обработка которых может быть векторизована: SPE SIMD PPE VMX

Page 20: Процессор  Cell

Модели параллельного программирования

Параллелизм по данным Параллелизм задач

Конвейер (параллелизм задач)

SPE

SPE

SPE

SPE

PPE

Осн

ов

ная

п

амя

ть

SPE

SPE

SPE

SPE

PPEО

сно

вн

ая

пам

ять

Page 21: Процессор  Cell

Программа «Hello, World!»

Программа для PPE#include <libspe2.h>extern spe_program_handle_t spu_hello;int main (){ unsigned int entry = SPE_DEFAULT_ENTRY; spe_context_ptr_t spe;

spe = spe_context_create (0, NULL); spe_program_load (spe, &spu_hello); spe_context_run (spe, &entry, 0, (void *)10, (void *)20, NULL); spe_context_destroy (spe);

return 0;}

Программа для SPE#include <stdio.h>int main (unsigned long long spe, unsigned long long argp, unsigned long long envp) { printf("Hello, World! (%llu,%llu)\n", argp, envp); return 0;}

Page 22: Процессор  Cell

Программа «Hello, World!»

Программа для PPE многопоточная#include <libspe2.h>#include <pthread.h>#define NTHREADS 40extern spe_program_handle_t spu_hello;

void *thread_func (void *data){ unsigned int entry = SPE_DEFAULT_ENTRY; spe_context_ptr_t spe; spe = spe_context_create (0,NULL); spe_program_load (spe, &spu_hello); spe_context_run (spe, &entry, 0, (void *)data, (void *)NTHREADS, NULL); spe_context_destroy (spe); return 0;}

int main (){ pthread_t tid[NTHREADS]; unsigned long i; for (i=0;i<NTHREADS;i++) pthread_create (&tid[i], NULL, &thread_func, (void *)i); for (i=0;i<NTHREADS;i++) pthread_join (tid[i], NULL); return 0;}

Page 23: Процессор  Cell

Взаимодействие между PPE и SPE

Доступ к основной памяти PPE – с помощью обычных инструкций

чтения/записи памяти: Регистр память Память регистр

SPE – с помощью команд DMA (через EIB) Доступ к основной памяти асинхронный Используется для передачи команд и данных

Page 24: Процессор  Cell

Взаимодействие между PPE и SPE

Основные механизмы общения SPE и PPE

Mailbox-ы – очереди 32-битных сообщений: SPU in (4), SPU out (1), SPU out interrupt (1)

Сигналы – 32-битные сообщения PPE SPE

Прямой доступ к памяти (DMA-передача) get, put – блок данных до 16 KB

SPE может обмениваться данными и сообщениями с другими SPE.

Page 25: Процессор  Cell

Пример передачи данных DMA

Программа для SPE

void get (void *dest_lsa, unsigned long long sour_ea, unsigned long size){ int tag=15,mask=1<<tag;

mfc_get (dest_lsa, sour_ea, size, tag, 0, 0); mfc_write_tag_mask (mask); mfc_read_tag_status_any();}

void put (void *sour_lsa, unsigned long long dest_ea, unsigned long size){ int tag=15,mask=1<<tag;

mfc_put (sour_lsa, dest_ea, size, tag, 0, 0); mfc_write_tag_mask (mask); mfc_read_tag_status_any();}

Page 26: Процессор  Cell

Программа «Ping-pong»

Фрагмент программы для PPE

while ( spe_out_mbox_status(spe) == 0 ); // ожидание данных в очереди

spe_out_mbox_read(spe ,&data ,1); // чтение одного элемента из очереди

data++; // изменение данных

spe_signal_write(spe, SPE_SIG_NOTIFY_REG_1, data); // запись в регистр сигнала 1

Фрагмент программы для SPE

spu_write_out_mbox(data); // запись элемента данных в очередь

data=spu_read_signal1(); // чтение данных из регистра сигнала 1

Page 27: Процессор  Cell

Программирование SPE Все регистры SPE векторные. Все инструкции являются параллельными по данным

и работают с векторами. Скалярные операции выполняются путем

соответствующего использования векторных команд. Скалярные аргументы, необходимые некоторым

инструкциям, располагаются в «предпочтительных» позициях вектора:

Page 28: Процессор  Cell

Векторные типы данных

Page 29: Процессор  Cell

Векторизация вычислений

Для манипуляции векторными данными используются intrinsics – встроенные в компилятор команды:

Специальные – отображаются в одну инструкцию процессора,

Например: d = si_to_int(a);

Обобщенные – отображаются в одну или несколько инструкций процессора в зависимости от входных параметров,

Например: c = spu_add (a, b);

Составные – последовательности обобщенных и специальных intrinsics (объединенные для удобства).

Например, команды DMA-передачи.

Page 30: Процессор  Cell

Инструкции SPE Ядро SPE имеет 2 конвейера (load & execute)

Инструкции каждого типа исполняются только на «своем» конвейере

Не все инструкции реализованы для всех типов данных Отсутствуют инструкции деления (для всех типов) Отсутствуют инструкции 32-битного целочисленного

умножения Реализуется программно с помощью 16-битного

умножения

Page 31: Процессор  Cell

Предсказание ветвлений в SPE

Аппаратное предсказание отсутствует Используется упрощенное предсказание:

Подсказках компилятора: адрес инструкции ветвления и адрес перехода

Таблица ветвлений (BTB – Branch Target Buffer)

Пример программы:

...

if (a>b)

work1();

else

work2();

...

...

if (__builtin_expect(a>b, 1) )

work1();

else

work2();

...

Page 32: Процессор  Cell

Пример: векторное умножение матриц

Программа для SPE

void mulv (float *a, float *b, float *c, int n){ int i, j, k; vector float *av = (vector float *) a; vector float *bv = (vector float *) b; vector float *cv = (vector float *) c; vector float s = {0.0,0.0,0.0,0.0}; for (i=0; i<n*n/4; i++) cv[i] = s;

for (i=0; i<n; i++) for (k=0; k<n; k++) { s = spu_splats (a[i*n+k]); for (j=0; j<n/4; j++) cv[i*n/4+j] = spu_add (cv[i*n/4+j], spu_mul (s, bv[k*n/4+j]) ); }}

Page 33: Процессор  Cell

Типичный порядок разработки программы для Cell

Изучение алгоритма Изучение размещения и потоков данных Экспериментальное разбиение и отображение алгоритма и

структуры программы на архитектуру Разработка PPE-управления, PPE-скалярного кода Разработка PPE-управления, распределенного SPE-

скалярного кода Коммуникации, синхронизация, задержки при пересылках

Преобразование SPE-скалярного кода в SPE SIMD код Перебалансировка вычислений / пересылок данных Другие оптимизации

PPE SIMD, узкие места системы, балансировка загрузки

Page 34: Процессор  Cell

План

Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора CellРеализации систем на базе Cell

Page 35: Процессор  Cell

Реализации систем на базе Cell

IBM BladeCenter QS 21 2 × Cell B.E.

IBM BladeCenter QS 22 2 × PowerXCell 8i

Sony PlayStation 3 1 × Cell B.E. (6 SPE)

Page 36: Процессор  Cell

Cell в отделе МО ВВС

Page 37: Процессор  Cell

Спасибо за внимание!