Введение

Многоядерная микроархитектура микропроцессора Cell – это 64-битная многоядерная микроархитектура микропроцессора, объединяющая универсальное ядро PowerPC умеренной производительности с оптимизированными сопроцессорными элементами, значительно ускоряющими мультимедийные и векторные вычисления, а также многие другие специализированные задачи. Cell – это сокращение от Cell Broadband Engine Architecture, обычно обозначаемое как CBEA (полная форма) или Cell BE (частичная форма). Первым крупным коммерческим применением Cell стала игровая консоль PlayStation 3 компании Sony, выпущенная в 2006 году. В мае 2008 года суперкомпьютер IBM Roadrunner на базе Cell стал первой системой, прошедшей тест TOP500 LINPACK с устойчивой производительностью 1,0 петафлопс. Компания Mercury Computer Systems также разработала решения на основе Cell. Архитектура Cell включает в себя архитектуру когерентности памяти, ориентированную на энергоэффективность, отдающую приоритет пропускной способности над низкой задержкой и предпочитающую пиковую вычислительную пропускную способность простоте программного кода. По этим причинам Cell считается сложной средой для разработки программного обеспечения. IBM предоставляет платформу разработки на базе Linux для помощи разработчикам в программировании для чипов Cell.

История

В середине 2000 года Sony Computer Entertainment, Toshiba Corporation и IBM сформировали альянс, известный как "STI", для разработки и производства процессора. Центр проектирования STI открылся в марте 2001 года. Процессор Cell разрабатывался в течение четырех лет с использованием усовершенствованных версий инструментов проектирования для процессора POWER4. Более 400 инженеров из трех компаний работали вместе в Остине, при критической поддержке из одиннадцати центров разработки IBM. Компания Bandai Namco Entertainment использовала процессор Cell/BE для своей аркадной платы 357, а также для последующей 369. В феврале 2008 года IBM объявила о начале производства процессоров Cell по 45-нм технологии. В мае 2008 года IBM представила высокопроизводительную версию процессора Cell с двойной точностью вычислений с плавающей запятой – PowerXCell 8i – с техпроцессом 65 нм. В мае 2008 года суперкомпьютер на базе Opteron и PowerXCell 8i, система IBM Roadrunner, стал первой в мире системой, достигшей производительности в один петафлопс, и оставался самым быстрым компьютером в мире до третьего квартала 2009 года. Три самых энергоэффективных суперкомпьютера в мире, согласно списку Green500, также основаны на PowerXCell 8i. В августе 2009 года был представлен 45-нм процессор Cell вместе с Sony PlayStation 3 Slim. К ноябрю 2009 года IBM прекратила разработку процессора Cell с 32 APU, но продолжала разрабатывать другие продукты на базе Cell.

Коммерциализация

17 мая 2005 года Sony Computer Entertainment подтвердила некоторые характеристики процессора Cell, который будет использоваться в готовящейся к выпуску консоли PlayStation 3. Эта конфигурация Cell включает в себя один PPE на ядро и восемь физических SPE на кристалле. С тех пор Mercury выпустила серверные модули, стандартные серверы в стойке и платы расширения PCI Express с процессорами Cell. Высокопроизводительный медиасервер ZEGO от Sony использует процессор Cell/B.E с частотой 3,2 ГГц.

Обзор

Cell Broadband Engine, или Cell, как его чаще называют, — это микропроцессор, разработанный как гибрид традиционных настольных процессоров (таких как семейства Athlon 64 и Core 2) и более специализированных высокопроизводительных процессоров, таких как графические процессоры NVIDIA и ATI (GPU). Более полное название указывает на его предполагаемое применение, а именно в качестве компонента в современных и будущих системах онлайн-дистрибуции; в связи с этим он может использоваться в дисплеях высокого разрешения и оборудовании для записи, а также в системах HDTV. Кроме того, процессор может быть адаптирован для систем цифровой обработки изображений (медицинских, научных и т. д.) и физического моделирования (например, научного и строительного проектирования). В PlayStation 3 он содержит 250 миллионов транзисторов. При упрощенном анализе процессор Cell можно разделить на четыре компонента: внешние структуры ввода и вывода, основной процессор, называемый Power Processing Element (PPE) (двухпоточный, одновременно выполняющий несколько потоков, PowerPC 2.02), восемь полностью функциональных сопроцессоров, называемых Synergistic Processing Elements (SPE), и специализированную высокоскоростную кольцевую шину данных, соединяющую PPE, элементы ввода/вывода и SPE, называемую Element Interconnect Bus (EIB). Для достижения высокой производительности, необходимой для математически сложных задач, таких как декодирование/кодирование потоков MPEG, генерация или преобразование трехмерных данных или проведение преобразования Фурье, процессор Cell объединяет SPE и PPE через EIB, обеспечивая доступ через полностью когерентный DMA (прямой доступ к памяти) как к основной памяти, так и к другим внешним устройствам хранения данных. Для оптимального использования EIB и для одновременного выполнения вычислений и передачи данных каждый из девяти процессорных элементов (PPE и SPE) оснащен DMA-движком. Поскольку инструкции загрузки/сохранения SPE могут обращаться только к собственной локальной памяти scratchpad, каждый SPE полностью зависит от DMA для передачи данных в основную память и локальную память других SPE. Операция DMA может передавать либо один блок размером до 16 КБ, либо список из 2–2048 таких блоков. Одним из ключевых архитектурных решений в Cell является использование DMA в качестве основного средства передачи данных внутри чипа, что позволяет обеспечить максимальную асинхронность и параллелизм в обработке данных. PPE, способный работать с традиционной операционной системой, управляет SPE и может запускать, останавливать, прерывать и планировать процессы, выполняемые на SPE. Для этого PPE имеет дополнительные инструкции для управления SPE. В отличие от SPE, PPE может читать и записывать основную память и локальную память SPE через стандартные инструкции загрузки/сохранения. Несмотря на то, что SPE имеют полную архитектуру Тьюринга, они не являются полностью автономными и требуют предварительной подготовки со стороны PPE, прежде чем они смогут выполнять полезную работу. Поскольку основная вычислительная мощность системы обеспечивается синергетическими процессорными элементами, использование DMA в качестве метода передачи данных и ограниченный объем локальной памяти каждого SPE создают серьезные проблемы для разработчиков программного обеспечения, стремящихся максимально использовать эту мощность, требуя тщательной ручной оптимизации программ для достижения максимальной производительности этого процессора. Архитектура PPE и шины включает различные режимы работы, обеспечивающие различные уровни защиты памяти, позволяя защищать области памяти от доступа конкретным процессам, работающим на SPE или PPE. И PPE, и SPE являются RISC-архитектурами с фиксированным 32-битным форматом инструкций. PPE содержит 64-битный набор регистров общего назначения (GPR), 64-битный набор регистров с плавающей запятой (FPR) и 128-битный набор регистров Altivec. SPE содержит только 128-битные регистры. Они могут использоваться для скалярных типов данных размером от 8 до 64 бит или для SIMD-вычислений в различных форматах целых чисел и чисел с плавающей запятой. Адреса системной памяти для PPE и SPE выражаются 64-битными значениями, что обеспечивает теоретический диапазон адресов в 264 байта (16 эксабайт или 16 777 216 терабайт). На практике не все эти биты реализованы в аппаратном обеспечении. Адреса локальной памяти внутри процессора SPU (Synergistic Processor Unit) выражаются 32-битным словом. В документации, относящейся к Cell, слово всегда означает 32 бита, двойное слово — 64 бита, а счетверённое слово — 128 бит.

PowerXCell 8i

В 2008 году IBM представила обновлённую версию Cell под названием PowerXCell 8i, которая доступна на QS22 Blade-серверах от IBM. PowerXCell производится по 65-нм технологии и поддерживает до 32 ГБ слотов DDR2, а также значительно повышает производительность вычислений с двойной точностью на SPE с пиковой отметки около 12,8 GFLOPS до 102,4 GFLOPS в сумме для восьми SPE, что, примечательно, соответствует пиковой производительности векторного процессора NEC SX 9, выпущенного примерно в то же время. Суперкомпьютер IBM Roadrunner, самый быстрый в мире в 2008–2009 годах, состоял из 12 240 процессоров PowerXCell 8i и 6562 процессоров AMD Opteron. Суперкомпьютеры на базе PowerXCell 8i также доминировали во всех шести "самых экологичных" системах в списке Green500, демонстрируя самое высокое соотношение MFLOPS/Ватт в мире. Помимо QS22 и суперкомпьютеров, процессор PowerXCell также доступен как ускоритель на карте PCI Express и используется в качестве основного процессора в проекте QPACE. Поскольку в PowerXCell 8i был удалён интерфейс RAMBUS и добавлены значительно увеличенные интерфейсы DDR2, а также улучшенные SPE, потребовалась переработка компоновки чипа, что привело к увеличению площади кристалла и размеров корпуса.

Архитектура

В то время как чип Cell может иметь несколько различных конфигураций, базовая конфигурация представляет собой многоядерный чип, состоящий из одного "элемента мощного процессора" ("PPE") (иногда называемого "элементом обработки" или "PE") и нескольких "синергетических элементов обработки" ("SPE"). PPE и SPE связаны между собой внутренней высокоскоростной шиной, получившей название "элементная межсоединительная шина" ("EIB").

Элемент процессора мощности (PPE)

PPE – это процессорное ядро, основанное на PowerPC, с двойной выдачей команд, выполняющее инструкции последовательно, двухпоточное, с 23-ступенчатым конвейером, выступающим в качестве контроллера для восьми SPE, которые обрабатывают основную вычислительную нагрузку. PPE обладает ограниченными возможностями внеочередного выполнения; он может выполнять загрузки вне очереди и имеет конвейеры с задержкой выполнения. PPE будет совместим с традиционными операционными системами благодаря сходству с другими 64-битными процессорами PowerPC, в то время как SPE предназначены для векторизованного выполнения кода с плавающей точкой. PPE содержит кэш инструкций L1 объемом 32 КиБ, кэш данных L1 объемом 32 КиБ и кэш L2 объемом 512 КиБ. Размер кэш-линии составляет 128 байт во всех кэшах. Он полностью конвейеризован для вычислений с одинарной точностью (Altivec 1 не поддерживает векторы с плавающей точкой двойной точности), 32-битный блок фиксированной точки (FXU) с 64-битным регистровым файлом на поток, блок загрузки и сохранения (LSU), 64-битный блок операций с плавающей точкой (FPU), блок ветвлений (BRU) и блок исполнения ветвлений (BXU).

Ксенон в Xbox 360

PPE была разработана специально для процессора Cell, но в ходе разработки Microsoft обратилась к IBM с запросом на высокопроизводительное процессорное ядро для своей Xbox 360. IBM согласилась и создала трехъядерный процессор Xenon, основанный на немного модифицированной версии PPE с добавленными расширениями VMX128.

Синергетические элементы обработки (SPE)

Каждый SPE представляет собой двойной процессор, состоящий из "Синергетического процессорного блока" (SPU) и "Контроллера потока памяти" (MFC), включающего DMA, MMU и шинный интерфейс. SPE не имеют аппаратной поддержки предсказания ветвлений (следовательно, большая нагрузка ложится на компилятор). Каждый SPE имеет 6 исполнительных устройств, разделенных на нечетные и четные конвейеры. SPU выполняет специально разработанный набор инструкций (ISA) с 128-битной SIMD-организацией для операций с одинарной и двойной точностью. В текущем поколении Cell каждый SPE содержит 256 КБ встроенной SRAM для инструкций и данных, называемой "Локальным хранилищем" (не следует путать с "Локальной памятью" в документации Sony, которая относится к VRAM), видимой для PPE и адресуемой непосредственно программным обеспечением. Каждый SPE может поддерживать до 4 ГБ локального хранилища. Локальное хранилище функционирует не как обычный кэш процессора, поскольку оно не прозрачно для программного обеспечения и не содержит аппаратных структур для предсказания загрузки данных. SPE содержат 128-битный регистровый файл на 128 элементов и занимают площадь 14,5 мм² при использовании 90-нм технологического процесса. SPE может обрабатывать шестнадцать 8-битных целых чисел, восемь 16-битных целых чисел, четыре 32-битных целых числа или четыре числа с плавающей точкой одинарной точности за один тактовый цикл, а также выполнять операцию с памятью. Важно отметить, что SPU не может напрямую обращаться к системной памяти; 64-битные виртуальные адреса, формируемые SPU, должны быть переданы из SPU в контроллер потока памяти SPE (MFC) для настройки операции DMA в адресном пространстве системы. В типичном сценарии использования система загружает в SPE небольшие программы (аналогичные потокам), объединяя SPE для последовательного выполнения этапов сложной операции. Например, приставка может загружать программы для чтения DVD, декодирования видео и аудио, а также для отображения, при этом данные передаются от SPE к SPE, пока не достигнут телевизора. Другой вариант – разделить набор входных данных и задействовать несколько SPE для параллельного выполнения одной и той же операции. При частоте 3,2 ГГц каждый SPE обеспечивает теоретическую производительность 25,6 GFLOPS в операциях с одинарной точностью. По сравнению с современными персональными компьютерами, относительно высокая общая производительность Cell в операциях с плавающей точкой значительно превосходит возможности SIMD-устройств в процессорах, таких как Pentium 4 и Athlon 64. Однако сравнение только производительности в операциях с плавающей точкой является односторонним и зависит от конкретного приложения. В отличие от процессора Cell, такие настольные процессоры лучше подходят для универсального программного обеспечения, обычно используемого на персональных компьютерах. Помимо выполнения нескольких инструкций за такт, процессоры Intel и AMD оснащены предсказателями ветвлений. Cell компенсирует это за счет помощи компилятора, который генерирует инструкции для подготовки к переходу по ветви. Для операций с плавающей точкой двойной точности, которые иногда используются на персональных компьютерах и часто применяются в научных вычислениях, производительность Cell снижается на порядок, но все равно достигает 20,8 GFLOPS (1,8 GFLOPS на SPE, 6,4 GFLOPS на PPE). Вариант PowerXCell 8i, специально разработанный для операций двойной точности, достигает 102,4 GFLOPS при вычислениях с двойной точностью. Тесты, проведенные IBM, показали, что SPE могут достигать 98% от своей теоретической пиковой производительности при выполнении оптимизированного параллельного умножения матриц. В общей сложности SPE имеют 2 МБ локальной памяти.

Сервер лезвия

29 августа 2007 года компания IBM представила BladeCenter QS21. Обеспечивая измеренную производительность 1,05 гигафлопс на ватт и пиковую производительность около 460 GFLOPS, это одна из самых энергоэффективных вычислительных платформ на сегодняшний день. Одно шасси BladeCenter способно достигать производительности 6,4 терафлопс и более 25,8 терафлопс в стандартной 42U стойке. 13 мая 2008 года IBM представила BladeCenter QS22. QS22 оснащен процессором PowerXCell 8i, который обеспечивает в пять раз более высокую производительность в операциях с двойной точностью по сравнению с QS21, а также поддерживает до 32 ГБ памяти DDR2 на модуль. Компания IBM прекратила производство серверной линейки Blade на базе процессоров Cell с 12 января 2012 года.

Планшет PCI Express

Несколько компаний предлагают платы PCI-e, использующие IBM PowerXCell 8i. Сообщаемая производительность составляет 179,2 GFlops (SP) и 89,6 GFlops (DP) при частоте 2,8 ГГц.

Консольные видеоигры

Видеоигровая консоль PlayStation 3 от Sony стала первым продуктом, в котором был применен процессор Cell с тактовой частотой 3,2 ГГц, включающий семь из восьми рабочих SPE. Это позволило Sony повысить выход годных при производстве процессоров. Разработчикам доступны только шесть из семи SPE, так как один из них зарезервирован операционной системой.

Домашнее кино

Toshiba производила HDTV на базе Cell. Они представили систему, способную одновременно декодировать 48 потока MPEG 2 стандартной четкости на экране 1920×1080. Это позволяет зрителю выбирать канал, основываясь на десятках миниатюрных видеороликов, отображаемых одновременно на экране.

Суперкомпьютерные технологии

Суперкомпьютер IBM Roadrunner представлял собой гибрид процессоров General Purpose x86 64 Opteron и Cell. Эта система заняла первое место в списке Top 500 в июне 2008 года, став первым суперкомпьютером, достигшим производительности в один петафлопс, продемонстрировав устойчивую скорость 1,026 петафлопс при использовании стандартного бенчмарка LINPACK. В IBM Roadrunner использовалась версия процессора Cell PowerXCell 8i, изготовленная по 65-нм технологии и оснащенная улучшенными SPU, способными выполнять вычисления двойной точности в 128-битных регистрах, достигая производительности 102 GFLOPS на чип в режиме двойной точности.

Кластерные вычисления

Кластеры консолей PlayStation 3 являются привлекательной альтернативой высокопроизводительным системам на основе Cell blades. Группа Innovative Computing Laboratory под руководством Джека Донгарры из отдела компьютерных наук Университета Теннесси провела углубленное исследование такого применения. Terrasoft Solutions продает 8- и 32-узловые кластеры PS3 с предустановленной операционной системой Yellow Dog Linux, являющейся реализацией исследований Донгарры. Как впервые сообщил Wired 17 октября 2007 года, астрофизик Гаурав Ханна из физического факультета Университета Массачусетса Дартмут реализовал интересное применение PlayStation 3 в кластерной конфигурации, заменив время, затрачиваемое на суперкомпьютерах, кластером из восьми PlayStation 3. Впоследствии следующее поколение этой системы, теперь известное как PlayStation 3 Gravity Grid, использует сеть из 16 машин и задействует процессор Cell для решения задачи коалесценции двойных черных дыр с использованием теории возмущений. В частности, кластер выполняет астрофизическое моделирование захвата компактных объектов меньшего размера крупными сверхмассивными черными дырами и генерирует численные данные, которые многократно публиковались в соответствующей научной литературе. Версия процессора Cell, используемая в PlayStation 3, предоставляет пользователю основной процессор и 6 SPE, что обеспечивает машине Gravity Grid 16 процессоров общего назначения и 96 векторных процессоров. Стоимость создания машины составляет 9 000 долларов США, и она подходит для моделирования черных дыр, которое в противном случае обошлось бы в 6 000 долларов за один запуск на традиционном суперкомпьютере. Вычисления, связанные с черными дырами, не требуют больших объемов памяти и хорошо локализуются, что делает эту архитектуру для них подходящей. Ханна утверждает, что производительность кластера превосходит производительность традиционного Linux-кластера на базе более 100 ядер Intel Xeon при его моделировании. PS3 Gravity Grid привлек значительное внимание средств массовой информации в 2007, 2008, 2009 и 2010 годах. В 2007 году лаборатория вычислительной биохимии и биофизики Университета Помпеу Фабра в Барселоне развернула систему BOINC под названием PS3GRID для совместных вычислений на основе программного обеспечения CellMD, разработанного специально для процессора Cell. Исследовательская лаборатория ВВС США развернула кластер PlayStation 3, состоящий из более чем 1700 единиц, получивший прозвище "Кластер Кондора", для анализа спутниковых снимков высокого разрешения. ВВС утверждают, что "Кластер Кондора" по вычислительной мощности будет 33-м по величине суперкомпьютером в мире. Лаборатория открыла доступ к этому суперкомпьютеру для проведения исследований университетами.

Распределенные вычисления

С помощью вычислительной мощности более полумиллиона консолей PlayStation 3, распределённый вычислительный проект Folding@home был признан Книгой рекордов Гиннеса самой мощной распределённой сетью в мире. Первый рекорд был установлен 16 сентября 2007 года, когда проект превысил один петафлопс, что ранее не удавалось ни одной распределённой вычислительной сети. Более того, благодаря совместным усилиям, PS3 в одиночку достигла отметки в один петафлопс 23 сентября 2007 года. Для сравнения, второй по мощности суперкомпьютер в мире на тот момент, IBM Blue Gene/L, работал на уровне примерно 478,2 терафлопс, что означает, что вычислительная мощность Folding@home примерно вдвое превышает мощность Blue Gene/L (хотя межпроцессорное соединение в Blue Gene/L более чем в миллион раз быстрее средней скорости сети в Folding@home). По состоянию на 7 мая 2011 года, Folding@home работает на уровне примерно 9,3 x86 петафлопс, при этом 1,6 петафлопс генерируется только 26 000 активных PS3.

Главные рамки

25 апреля 2007 года IBM объявила о начале интеграции своих микропроцессоров Cell Broadband Engine Architecture в линейку мейнфреймов System z. Это привело к появлению игрового фрейма.

Разблокировка пароля

Архитектура процессора лучше приспособлена для приложений, использующих криптографический взлом методом перебора с аппаратной поддержкой, чем для обычных процессоров.

Очередь рабочих мест

В ППУ поддерживается очередь заданий, планируется выполнение заданий в ПЭП и отслеживается прогресс. Каждый ПЭП запускает "мини-ядро", которое отвечает за получение задания, его выполнение и синхронизацию с ППУ.

Самостоятельная многозадачность специальных операторов

Мини-ядро и планирование распределены между процессорами SPE. Задачи синхронизируются с помощью мьютексов или семафоров, как и в традиционной операционной системе. Задачи, готовые к выполнению, ожидают в очереди, пока SPE не начнет их выполнение. В данной конфигурации процессоры SPE используют общую память для всех задач.

Обработка потоков

Каждый SPE выполняет отдельную программу. Данные поступают из входного потока и отправляются в SPE. Когда SPE завершает обработку, выходные данные отправляются в выходной поток. Это обеспечивает гибкую и мощную архитектуру для потоковой обработки и позволяет осуществлять явное планирование для каждого SPE по отдельности. Другие процессоры также могут выполнять задачи потоковой обработки, но ограничены загруженным ядром.

Разработка программного обеспечения с открытым исходным кодом

В 2005 году разработчики IBM представили патчи, обеспечивающие поддержку Cell в ядре Linux. Арнд Бергманн (один из разработчиков упомянутых патчей) также представил архитектуру Cell на базе Linux на LinuxTag 2005. Начиная с выпуска 2.6.16 (20 марта 2006 года), ядро Linux официально поддерживает процессор Cell. Как PPE, так и SPE могут быть запрограммированы на C/C++ с использованием общего API, предоставляемого библиотеками. Fixstars Solutions предоставляет Yellow Dog Linux для систем IBM и Mercury Cell, а также для PlayStation 3. Terra Soft стратегически сотрудничает с Mercury для предоставления пакета поддержки Linux Board для Cell, а также поддержки и разработки программных приложений для различных других платформ Cell, включая IBM BladeCenter JS21 и Cell QS20, и решения на базе Mercury Cell. Terra Soft также поддерживает Y HPC (High Performance Computing) Cluster Construction and Management Suite и инструменты секвенирования генов Y Bio. Y Bio основан на стандарте RPM Linux для управления пакетами и предлагает инструменты, помогающие исследователям в области биоинформатики проводить свою работу более эффективно. IBM разработала псевдофайловую систему для Linux под названием "Spufs", упрощающую доступ и использование ресурсов SPE. В настоящее время IBM поддерживает ядро Linux и порты GDB, а Sony поддерживает инструментарий GNU (GCC, binutils). В ноябре 2005 года IBM выпустила "Cell Broadband Engine (CBE) Software Development Kit Version 1.0", состоящий из симулятора и набора инструментов, на своем веб-сайте. Разработческие версии новейшего ядра и инструментов для Fedora Core 4 поддерживаются на веб-сайте Барселонского суперкомпьютерного центра. В августе 2007 года Mercury Computer Systems выпустила комплект разработки программного обеспечения для PlayStation 3 для высокопроизводительных вычислений. В ноябре 2007 года Fixstars Corporation выпустила новый модуль "CVCell", предназначенный для ускорения нескольких важных API OpenCV для Cell. В серии тестов программных вычислений они зафиксировали время выполнения на процессоре Cell с частотой 3,2 ГГц, которое было в 6–27 раз быстрее, чем то же программное обеспечение на процессоре Intel Core 2 Duo с частотой 2,4 ГГц. В октябре 2009 года IBM выпустила драйвер OpenCL для POWER6 и CBE. Это позволяет легко запускать программы, написанные на кроссплатформенном API, на Cell PSE.

Галерея

Иллюстрации различных поколений процессоров Cell/B. E. и PowerXCell 8i. Изображения не в масштабе; все корпуса Cell/B. E. имеют размеры 42,5×42,5 мм, а PowerXCell 8i – 47,5×47,5 мм.