Upload
merlin
View
76
Download
0
Embed Size (px)
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
Citation preview
Процессор Cell
Киреев СергейИВМиМГ
План
Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора Cell Реализации систем на базе 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
Время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
Преодоление барьеров производительности Power Wall – барьер мощности, Memory Wall – барьер памяти, Frequency Wall – барьер частоты.
Предпосылки архитектуры Cell
Характеристики процессора Cell
Cell – многоядерный микропроцессор, содержащий ядра различных типов:
1 PPE – Power Processor Element8 SPE – Synergistic Processor Element
Cell – это не набор различных процессоров, а согласованное целое: Согласованные принципы функционирования, форматы и
семантика данных, Используется общая модель памяти.
Cell – специально создавался для работы на высоких частотах (более 4 ГГц) Фиксированная частота: 3.2 ГГц
Структура процессора Cell
SPE – Synergistic Processor Element PPE – Power Processor Element
План
Общая информация о процессоре CellАрхитектура процессора Cell Программирование процессора Cell Реализации систем на базе Cell
Power Processor Element PPE исполняет код операционной системы и управляет
заданиями 64-битная архитектура Power с расширением VMX Упорядоченное исполнение (in-order) Аппаратная поддержка 2-х параллельных потоков Кэш-память: 32 KB L1 code, 32 KB L1 data, 512 KB L2 общий
Synergistic Processor Element
SPE обеспечивает вычислительную мощность До 2-х 128-битных SIMD команд за такт Большие ресурсы памяти: 128 128-битных регистров, 256 KB
локальной памяти DMA – асинхронный доступ в общую память: до 16
одновременных запросов
Характеристики SPE Организация по типу RISC
Фиксированные 32-битные инструкции Простая структура – общий регистровый
файл Нет поддержки системных функций SIMD-архитектура: большой набор
векторных операций 8,16,32-битные целочисленные 32,64-битные вещественные
Два исполнительных конвейера Общий регистровый файл
128 регистров по 128 бит (16 байт) 256 KB локальной памяти
Общая для кода и данных 16 B/такт для чтения/записи регистров 128 B/такт для передач DMA
Element Interconnect Bus
Обмен данными для внутренних коммуникаций Четыре 16-байтных кольцевых канала с поддержкой
нескольких одновременных передач 96 B/такт пиковая пропускная способность До 100 одновременных запросов
Пример восьми одновременных транзакцийна Element Interconnect Bus
Интерфейсы памятии ввода-вывода
Двойной контроллер памяти XDR (25.6 GB/s) Два конфигурируемых интерфейса
Конфигурируемое число байт на канал Когерентность
Позволяет создавать системы различных конфигураций
Предпосылки архитектуры Cell
Преодоление барьеров производительности
Power Wall. Увеличение эффективности затрачиваемой энергии за счет разделения функций:
Процессор, оптимизированный для работы операционной системы и кода со сложным управлением.
Процессор, оптимизированный для выполнения приложений с интенсивными вычислениями.
Memory Wall. Уменьшение влияния задержек памяти за счет: 3-х уровневая структура памяти (основная память, локальная память
SPE, большой регистровый файл SPE). Асинхронная передача между основной и локальной памятью.
Frequency Wall. Достижение высоких частот благодаря специализации процессоров под решение конкретных задач.
Пиковая производительность
План
Общая информация о процессоре Cell Архитектура процессора CellПрограммирование процессора Cell
Уровни параллелизма Взаимодействие ядер Программирование SPE
Реализации систем на базе Cell
Программирование процессора Cell
Два уровня параллелизма:1. Независимые задачи, которые могут быть
выполнены параллельно: 2 аппаратных потока PPE 8 программ SPE
2. Регулярные векторные данные, обработка которых может быть векторизована: SPE SIMD PPE VMX
Модели параллельного программирования
Параллелизм по данным Параллелизм задач
Конвейер (параллелизм задач)
SPE
SPE
SPE
SPE
PPE
Осн
ов
ная
п
амя
ть
SPE
SPE
SPE
SPE
PPEО
сно
вн
ая
пам
ять
Программа «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;}
Программа «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;}
Взаимодействие между PPE и SPE
Доступ к основной памяти PPE – с помощью обычных инструкций
чтения/записи памяти: Регистр память Память регистр
SPE – с помощью команд DMA (через EIB) Доступ к основной памяти асинхронный Используется для передачи команд и данных
Взаимодействие между 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.
Пример передачи данных 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();}
Программа «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
…
Программирование SPE Все регистры SPE векторные. Все инструкции являются параллельными по данным
и работают с векторами. Скалярные операции выполняются путем
соответствующего использования векторных команд. Скалярные аргументы, необходимые некоторым
инструкциям, располагаются в «предпочтительных» позициях вектора:
Векторные типы данных
Векторизация вычислений
Для манипуляции векторными данными используются intrinsics – встроенные в компилятор команды:
Специальные – отображаются в одну инструкцию процессора,
Например: d = si_to_int(a);
Обобщенные – отображаются в одну или несколько инструкций процессора в зависимости от входных параметров,
Например: c = spu_add (a, b);
Составные – последовательности обобщенных и специальных intrinsics (объединенные для удобства).
Например, команды DMA-передачи.
Инструкции SPE Ядро SPE имеет 2 конвейера (load & execute)
Инструкции каждого типа исполняются только на «своем» конвейере
Не все инструкции реализованы для всех типов данных Отсутствуют инструкции деления (для всех типов) Отсутствуют инструкции 32-битного целочисленного
умножения Реализуется программно с помощью 16-битного
умножения
…
Предсказание ветвлений в SPE
Аппаратное предсказание отсутствует Используется упрощенное предсказание:
Подсказках компилятора: адрес инструкции ветвления и адрес перехода
Таблица ветвлений (BTB – Branch Target Buffer)
Пример программы:
...
if (a>b)
work1();
else
work2();
...
...
if (__builtin_expect(a>b, 1) )
work1();
else
work2();
...
Пример: векторное умножение матриц
Программа для 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]) ); }}
Типичный порядок разработки программы для Cell
Изучение алгоритма Изучение размещения и потоков данных Экспериментальное разбиение и отображение алгоритма и
структуры программы на архитектуру Разработка PPE-управления, PPE-скалярного кода Разработка PPE-управления, распределенного SPE-
скалярного кода Коммуникации, синхронизация, задержки при пересылках
Преобразование SPE-скалярного кода в SPE SIMD код Перебалансировка вычислений / пересылок данных Другие оптимизации
PPE SIMD, узкие места системы, балансировка загрузки
План
Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора CellРеализации систем на базе 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)
Cell в отделе МО ВВС
Спасибо за внимание!