Слайд 1Процессор Cell
Киреев Сергей
ИВМиМГ
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 2План
Общая информация о процессоре Cell
Архитектура процессора Cell
Программирование процессора Cell
Реализации систем на
                                                            
                                    базе Cell
                                
                            							
							
							
						 
											
                            Слайд 3История 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
                                
                            							
														
						 
											
                            Слайд 4Время
Punch Cards
Green Screen/
Teletype
Spreadsheet
WWW
Gaming
Main Frame
Multitasking
Main Frame
Batch
Client/Server
Internet
Mini-Computer
WYSIWYG
Stand Alone PC
Windows
Word 
Processing
Уровень взаимодействия
Immersive Interaction
Online Gaming
Source:
                                                            
                                    J.A. Kahle
Предпосылки архитектуры Cell
Эволюция пользовательского интерфейса
Cell
                                
 
                            							
														
						 
											
                            Слайд 5Преодоление барьеров производительности
Power Wall – барьер мощности,
Memory Wall – барьер памяти,
Frequency
                                                            
                                    Wall – барьер частоты.
Предпосылки архитектуры Cell
                                
 
                            							
														
						 
											
                            Слайд 6Характеристики процессора Cell
Cell – многоядерный микропроцессор, содержащий ядра различных типов:
	1 PPE
                                                            
                                    – Power Processor Element
	8 SPE – Synergistic Processor Element
Cell – это не набор различных процессоров, а согласованное целое:
Согласованные принципы функционирования, форматы и семантика данных,
Используется общая модель памяти.
Cell – специально создавался для работы на высоких частотах (более 4 ГГц)
Фиксированная частота: 3.2 ГГц
                                
                            							
														
						 
											
                            Слайд 7Структура процессора Cell
SPE – Synergistic Processor Element
PPE – Power Processor Element
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 8План
Общая информация о процессоре Cell
Архитектура процессора Cell
Программирование процессора Cell
Реализации систем на
                                                            
                                    базе Cell
                                
                            							
														
						 
											
											
                            Слайд 10Power Processor Element
PPE исполняет код операционной системы и управляет заданиями
64-битная архитектура
                                                            
                                    Power с расширением VMX
Упорядоченное исполнение (in-order)
Аппаратная поддержка 2-х параллельных потоков
Кэш-память: 32 KB L1 code, 32 KB L1 data, 512 KB L2 общий
                                
                            							
														
						 
											
                            Слайд 11Synergistic Processor Element
SPE обеспечивает вычислительную мощность
До 2-х 128-битных SIMD команд за
                                                            
                                    такт
Большие ресурсы памяти: 128 128-битных регистров, 256 KB локальной памяти
DMA – асинхронный доступ в общую память: до 16 одновременных запросов
                                
                            							
														
						 
											
                            Слайд 12Характеристики SPE
Организация по типу RISC
Фиксированные 32-битные инструкции
Простая структура – общий регистровый
                                                            
                                    файл
Нет поддержки системных функций
SIMD-архитектура: большой набор векторных операций
8,16,32-битные целочисленные
32,64-битные вещественные
Два исполнительных конвейера
Общий регистровый файл
128 регистров по 128 бит (16 байт)
256 KB локальной памяти
Общая для кода и данных
16 B/такт для чтения/записи регистров
128 B/такт для передач DMA
                                
                            							
														
						 
											
                            Слайд 13Element Interconnect Bus
Обмен данными для внутренних коммуникаций
Четыре 16-байтных кольцевых канала с
                                                            
                                    поддержкой нескольких одновременных передач
96 B/такт пиковая пропускная способность
До 100 одновременных запросов
                                
                            							
														
						 
											
                            Слайд 14Пример восьми одновременных транзакций
на Element Interconnect Bus
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 15Интерфейсы памяти
и ввода-вывода
Двойной контроллер памяти XDR (25.6 GB/s)
Два конфигурируемых интерфейса
Конфигурируемое число
                                                            
                                    байт на канал
Когерентность
Позволяет создавать системы различных конфигураций
                                
                            							
														
						 
											
                            Слайд 16Предпосылки архитектуры Cell
Преодоление барьеров производительности
Power Wall. Увеличение эффективности затрачиваемой энергии за
                                                            
                                    счет разделения функций:
Процессор, оптимизированный для работы операционной системы и кода со сложным управлением.
Процессор, оптимизированный для выполнения приложений с интенсивными вычислениями.
Memory Wall. Уменьшение влияния задержек памяти за счет:
3-х уровневая структура памяти (основная память, локальная память SPE, большой регистровый файл SPE).
Асинхронная передача между основной и локальной памятью.
Frequency Wall. Достижение высоких частот благодаря специализации процессоров под решение конкретных задач.
                                
                            							
														
						 
											
											
                            Слайд 18План
Общая информация о процессоре Cell
Архитектура процессора Cell
Программирование процессора Cell
Уровни параллелизма
Взаимодействие ядер
Программирование
                                                            
                                    SPE
Реализации систем на базе Cell
                                
                            							
														
						 
											
                            Слайд 19Программирование процессора Cell
Два уровня параллелизма:
Независимые задачи, которые могут быть выполнены параллельно:
2
                                                            
                                    аппаратных потока PPE
8 программ SPE
Регулярные векторные данные, обработка которых может быть векторизована:
SPE SIMD
PPE VMX
                                
                            							
														
						 
											
                            Слайд 20Модели параллельного программирования
Параллелизм по данным
Параллелизм задач
Конвейер (параллелизм задач)
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 21Программа «Hello, World!»
Программа для PPE
#include 
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 
int main (unsigned long long spe, unsigned long long argp, unsigned long long envp) 
{
 printf("Hello, World! (%llu,%llu)\n", argp, envp);
 return 0;
}
                                
                            							
														
						 
											
                            Слайд 22Программа «Hello, World!»
Программа для PPE многопоточная
#include 
#include 
#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 for (i=0;i return 0;
}
                                
                            							
														
						 
											
                            Слайд 23Взаимодействие между PPE и SPE
Доступ к основной памяти
PPE – с помощью
                                                            
                                    обычных инструкций чтения/записи памяти:
Регистр ? память
Память ? регистр
SPE – с помощью команд DMA (через EIB)
Доступ к основной памяти асинхронный
Используется для передачи команд и данных
                                
                            							
														
						 
											
                            Слайд 24Взаимодействие между 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.
                                
                            							
														
						 
											
                            Слайд 25Пример передачи данных DMA
Программа для SPE
void get (void *dest_lsa, unsigned long
                                                            
                                    long sour_ea, unsigned long size)
{
 int tag=15,mask=1<
 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<
 mfc_put (sour_lsa, dest_ea, size, tag, 0, 0);
 mfc_write_tag_mask (mask);
 mfc_read_tag_status_any();
}
                                
                            							
														
						 
											
                            Слайд 26Программа «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
…
                                
                            							
														
						 
											
                            Слайд 27Программирование SPE
Все регистры SPE векторные.
Все инструкции являются параллельными по данным и
                                                            
                                    работают с векторами.
Скалярные операции выполняются путем соответствующего использования векторных команд.
Скалярные аргументы, необходимые некоторым инструкциям, располагаются в «предпочтительных» позициях вектора:
                                
                            							
														
						 
											
											
                            Слайд 29Векторизация вычислений
Для манипуляции векторными данными используются intrinsics – встроенные в компилятор
                                                            
                                    команды:
Специальные – отображаются в одну инструкцию процессора,
Например: d = si_to_int(a);
Обобщенные – отображаются в одну или несколько инструкций процессора в зависимости от входных параметров,
Например: c = spu_add (a, b);
Составные – последовательности обобщенных и специальных intrinsics (объединенные для удобства).
Например, команды DMA-передачи.
                                
                            							
														
						 
											
                            Слайд 30Инструкции SPE
Ядро SPE имеет 2 конвейера (load & execute)
Инструкции каждого типа
                                                            
                                    исполняются только на «своем» конвейере
Не все инструкции реализованы для всех типов данных
Отсутствуют инструкции деления (для всех типов)
Отсутствуют инструкции 32-битного целочисленного умножения
Реализуется программно с помощью 16-битного умножения
…
                                
                            							
														
						 
											
                            Слайд 31Предсказание ветвлений в SPE
Аппаратное предсказание отсутствует
Используется упрощенное предсказание:
Подсказках компилятора: адрес инструкции
                                                            
                                    ветвления и адрес перехода
Таблица ветвлений (BTB – Branch Target Buffer)
Пример программы:
                                
                            							
														
						 
											
                            Слайд 32Пример: векторное умножение матриц
Программа для 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
 for (i=0; i  for (k=0; k  { s = spu_splats (a[i*n+k]);
   for (j=0; j    cv[i*n/4+j] = spu_add (cv[i*n/4+j], spu_mul (s, bv[k*n/4+j]) );
  }
}
                                
                            							
														
						 
											
                            Слайд 33Типичный порядок разработки программы для Cell
Изучение алгоритма
Изучение размещения и потоков данных
Экспериментальное
                                                            
                                    разбиение и отображение алгоритма и структуры программы на архитектуру
Разработка PPE-управления, PPE-скалярного кода
Разработка PPE-управления, распределенного SPE-скалярного кода
Коммуникации, синхронизация, задержки при пересылках
Преобразование SPE-скалярного кода в SPE SIMD код
Перебалансировка вычислений / пересылок данных
Другие оптимизации
PPE SIMD, узкие места системы, балансировка загрузки
                                
                            							
														
						 
											
                            Слайд 34План
Общая информация о процессоре Cell
Архитектура процессора Cell
Программирование процессора Cell
Реализации систем на
                                                            
                                    базе Cell
                                
                            							
														
						 
											
                            Слайд 35Реализации систем на базе 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)