На главную страницу AlgoNet В сотрудничестве с ZDNet
АРХИВ СТАТЕЙ 2005-6-2 на главную / новости от 2005-6-2
AlgoNet.ru
поиск

 

Место для Вашей рекламы!

 

Все новости от 2 июня 2005 г.

Интеллектуальная мощь Cell

Если PPE выглядит всего лишь несколько странно, то восемь остальных ядер процессора Cell, называемые Synergistic Processing Elements (SPE), совсем уж необычны.

Прежде всего каждый SPE состоит из двух подсистем — как такового процессорного ядра (SPU, Synergistic Processing Unit) и своей собственной локальной, напрямую адресуемой, сверхбыстрой оперативной памятью (LS, Local Store).

Главная черта ядра SPE (точнее, SPU) — то, что оно является не традиционным, а по сути чисто векторным 128-разрядным процессором. А поэтому и все регистры данных SPE — 128-разрядные, причем их аж 128 штук в каждом ядре! Можно сказать, что SPE реализует самые смелые фантазии создателей RISC-архитектуры...

Блок-схема процессора Cell

Блок-схема процессора Cell

Хотя система команд SPE несовместима с используемым в PowerPC 970 векторным блоком Altivec/VMX, она строилась на ее базе; кроме того, SPE разрабатывался с учетом опыта создания и применения векторного процессора Emotion Engine, используемого в игровой приставке Sony PlayStation 2 (набор команд которого является точным подмножеством набора SPE). Типы данных Altivec/VMX и SPE тоже очень похожи: регистр может интерпретироваться как вектор целочисленных данных (8-, 16 и 32-разрядных) или чисел с плавающей точкой (32-разрядных “одинарной точности” и 64-разрядных “двойной точности"). Хотя ядро SPE, в отличие от Altivec/VMX, поддерживает и плавающую арифметику с двойной точностью, все же оно явно оптимизировано для работы с одинарной точностью и выполняет операции с числами такого типа раз в десять быстрее. Так что для использования в качестве суперкомпьютерной “цифродробилки” в тесте Linpack процессор Cell подходит не слишком хорошо — все же он создавался для несколько иных задач...

Интересно, что первоначально инженеры из IBM пытались при создании SPE следовать канонам VLIW, однако столкнулись с серьезными проблемами и вернулись к уже хорошо обкатанной архитектуре SIMD-сопроцессора Altivec/VMX.

Как и в Altivec/VMX, каждая команда SPE может одновременно обращаться за данными к трем разным регистрам, а результат записывать в четвертый. Учитывая, что здесь имеются и соответствующие сложные команды (вроде команды одновременного умножения двух регистров и сложения с третьим, выполняемой всего за один такт), это позволяет чрезвычайно эффективно работать с векторной арифметикой.

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

Несмотря на сложность операций и четырехадресные команды, конвейер SPE получился очень коротким, не более семи стадий.

Но самой интригующей чертой ядер SPE является организация локальной памяти LS. Повторюсь: LS — это не кэш-память, а самая обычная оперативная память (правда, сверхбыстрая и статическая), так что программист, пишущий код для Cell, может полностью управлять распределением памяти для данных или кода, оптимизировать обмен данными между локальной памятью каждого ядра SPE и глобальным пулом и оптимизировать программы тем или иным способом.

Объем LS составляет 256 Кб, организованных как набор 128-разрядных слов.

Для обмена данными LS с оперативной памятью каждый пул LS может на аппаратном уровне (контроллером памяти MFC — Memory Flow Controller) по команде PPE синхронизироваться с локальной памятью PPE, так что в этом случае именно PPE отвечает за загруженность SPE работой и выгрузку ее результатов. Однако возможен и иной сценарий обмена: каждое ядро SPE может, воспользовавшись контроллером DMA, инициировать обмен данными с LS любого другого SPE или с памятью PPE (в SPE могут быть одновременно активными до 128 однонаправленных каналов DMA). Наконец, можно воспользоваться программно-аппаратной подсистемой виртуальной памяти, являющейся расширением принятой в PowerPC, и отобразить LS в общее адресное пространство Cell.

Отметим, что в принятой в Cell модели организации памяти ни о какой автоматической когерентности данных в разных пулах речи не идет и никакие изменения в LS, сделанные своим собственным локальным SPU, не отражаются в других пулах, пока об этом не будет спрошено специально. Именно это “ограничение” и позволяет оптимизировать использование разных пулов памяти без требования безумно высоких скоростей обмена по межъядерной шине данных (хотя и скорость, обеспечиваемую в Cell, маленькой назвать трудно).

Интересно, что один SPE может быть почти полностью изолирован от всех остальных для задач обеспечения безопасности. В результате, хотя в Cell и нет специально выделенного “процессора безопасности”, архитектура чипа нисколько от этого не страдает, обеспечивая и защиту от несанкционированного доступа, и работу системы управления правами доступа к цифровому контенту. Детали реализации пока не разглашаются.

Располагая столь большим количеством SPE, программист может сам выбирать наиболее приемлемый способ обработки данных. Самый очевидный из них — параллельный, когда все SPE загружаются одинаковым программным кодом, но каждому отводится свое множество данных. Однако во многих случаях более интересным оказывается последовательная обработка данных, когда единый алгоритм делится на стадии и программа для каждой из них загружается в свое SPE. В этом случае одни и те же данные последовательно обрабатываются всеми участвующими в работе алгоритма SPE, перемещаясь из одной LS в другую посредством каналов DMA. Последовательные алгоритмы позволяют добиться меньшей задержки при обработке данных и при этом обойти ограничение на объем загружаемого в LS программного кода.

 

← май 2005 1  2  3  5  6  7  8  9  10 июль 2005 →
Реклама!
 

 

Место для Вашей рекламы!