390 likes | 695 Views
Процессор Cell. Киреев Сергей ИВМиМГ. План. Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора Cell Реализации систем на базе Cell. История Cell. IBM, SCEI/Sony, Toshiba Alliance formed in 2000 Austin-based Design Center opened in March 2001
E N D
Процессор 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 L1code, 32 KB L1data, 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 Два уровня параллелизма: • Независимые задачи, которые могут быть выполнены параллельно: • 2 аппаратных потока PPE • 8 программ SPE • Регулярные векторные данные, обработка которых может быть векторизована: • SPE SIMD • PPE VMX
Параллелизм по данным Параллелизм задач Конвейер (параллелизм задач) Основная память SPE Основная память SPE SPE SPE SPE SPE SPE SPE PPE 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 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) • Пример программы:
Пример: векторное умножение матриц • Программа для 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)