Архитектура процессора Cell

advertisement
Процессор 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
Уровень взаимодействия
Предпосылки архитектуры Cell
Эволюция пользовательского
интерфейса
Immersive Interaction
Online Gaming
Client/Server
Internet
Stand Alone PC
Windows
Mini-Computer
WYSIWYG
Gaming
Main Frame
Multitasking
WWW
Cell
Spreadsheet
Main Frame
Batch
Word
Processing
Green Screen/
Teletype
Source: J.A. Kahle
Punch Cards
Время
Предпосылки архитектуры Cell
Преодоление барьеров
производительности
Power Wall – барьер мощности,
Memory Wall – барьер памяти,
Frequency Wall – барьер частоты.
Характеристики процессора Cell
 Cell – многоядерный микропроцессор, содержащий
ядра различных типов:
1 PPE – Power Processor Element
8 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
Модели параллельного
программирования
PPE
SPE
SPE
SPE
SPE
 Конвейер
(параллелизм задач)
Основная память
Основная память
 Параллелизм по данным
 Параллелизм задач
PPE
SPE
SPE
SPE
SPE
Программа «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 40
extern 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 в отделе МО ВВС
Спасибо за внимание!
Download