Процессор Cell Киреев Сергей ИВМиМГ. План Общая информация о процессоре Cell Архитектура процессора Cell Программирование процессора Cell Реализации систем.

Презентация:



Advertisements
Похожие презентации
Процессор Cell Киреев Сергей ИВМиМГ.
Advertisements

Программирование процессора Cell Киреев С.Е. Летняя школа по параллельному программированию, Новосибирск, 28 августа 2009.
Архитектура микропроцессоров И ее эволюция. Процессор и память: Команды и данные.
Современные микропроцессоры Тенденции развития. Рассматриваемые процессоры Intel Itanium 2 Intel Core 2 Duo IBM Cell.
Введение в параллельную обработку. Уровни параллелизма в процессорах Параллелизм данных (DLP – Data Level Parallelism) Параллелизм команд (ILP – Instruction.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Core 2 Duo Двухъядерная 64-битная архитектура –За основу ядра взято ядро Pentium Pro Широкое динамическое исполнение Разделяемый КЭШ 2го уровня Поддержка.
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
Интерфейсный блок AXI- коммутатора в составе системы на кристалле «Эльбрус-S2» Студент: Смольянов Павел 518 гр. Научный руководитель: Сахин Ю.Х.
Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные.
Архитектура ЭВМ (лекция 7) проф. Петрова И.Ю. Курс Информатики.
Архитектуры с параллелизмом на уровне команд. Два класса Суперскалярные процессоры Процессоры с длинным командным словом.
RISC-архитектуры ( Reduced Instruction Set Computer)
Проектирование центральных и периферийных устройств Преподаватель: Мельников Максим Игоревич.
Архитектуры с параллелизмом на уровне команд. Два класса Суперскалярные процессоры Процессоры с длинным командным словом.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx Часть 3. Архитектура ядра процессоров с64хх.
Организация памяти. Иерархии памяти Идея иерархической (многоуровневой) организации памяти заключается в использовании на одном компьютере нескольких.
Программирование многоядерных архитектур (слайды для лекции 2013/04/20) Киреев С.Е., Маркова В.П., Остапкевич М.Б., Перепелкин В.А. МО ВВС ИВМиМГ СО РАН.
The AMD Athlon (K7). Шина AMD Athlon AMD Opteron.
Система фрагментированного программирования Перепелкин В.А. Всероссийская молодежная школа по параллельному программированию МО ВВС ИВМиМГ 2009 г.
Транксрипт:

Процессор 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 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 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

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

Характеристики процессора 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 команд за такт Большие ресурсы памяти: битных регистров, 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 PPE Основная память SPE PPE Основная память

Программа «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; }

Программа «Hello, World!» Программа для PPE многопоточная #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

Взаимодействие между 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

Программа «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

Типичный порядок разработки программы для Cell Изучение алгоритма Изучение размещения и потоков данных Экспериментальное разбиение и отображение алгоритма и структуры программы на архитектуру Разработка PPE-управления, PPE-скалярного кода Разработка PPE-управления, распределенного SPE-скалярного кода Коммуникации, синхронизация, задержки при пересылках Преобразование SPE-скалярного кода в SPE SIMD код Перебалансировка вычислений / пересылок данных Другие оптимизации PPE SIMD, узкие места системы, балансировка загрузки

План Общая информация о процессоре 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 в отделе МО ВВС

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