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

высокопроизводительные многоядерные процессоры

для встраиваемых систем

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

Александр КАлАчЕв

forther@yandex.ru

введение

По мере развития технических средств и вслед за изменениями окружающего мира иными становятся потребности человека в производительности вычислительных систем, изменяются требования приложений. Одним из возможных способов удовлетворить растущие потребности является разработка и применение систем с массовым параллелизмом — кластеры, Grid-системы, многопроцессорные комплексы, системы на многоядерных процессорах.

Фактически многоядерными процессорами перекрываются области применения, классифицируемые как высокопроизводительные вычисления HPC и высокопроизводительные вычисления во встраиваемых приложениях HPEC. Особенно можно выделить динамически конфигурируемые системы и системы с перестраиваемой архитектурой — замена FPGA, ПЛИС и в некоторых случаях специализированных процессоров; обработка сигналов, аудио-, видеоданных — как конкуренция цифровым сигнальным процессорам и графическим процессорам (DSP); системы управления и системы реального времени; персональные вычислительные системы — как альтернатива микроконтроллерам и процессорам общего назначения. Не следует ожидать массового вытеснения из применения одно-, двух-, четырехъядерных процессоров, микроконтроллеров или ПЛИС. Скорее всего, произойдет слияние или взаимовыгодное соседство одно- и многоядерных процессоров и контроллеров. Это связано и с их относительно сложной структурой, иногда слишком избыточной, и с относительной дороговизной многоядерных процессоров,

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

Целью данной работы является создание общей картины направления развития многоядерных процессоров. Рассмотрены структуры процессоров различных классов, структура вычислительных ядер и связей между ними. Упор сделан на процессоры, обозначаемые в иностранной литературе термином “many-core processor”, то есть процессор, имеющий десятки или сотни вычислительных ядер в одном кристалле.

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

Структура ядер важна с точки зрения программирования на нижнем уровне, при проектировании и оптимизации приложений. Она определяет возможности процессора в плане вычислений.

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

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

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

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

Произведем сравнение их характеристик по показателям: разрядность, производительность, потребляемая мощность, стоимость, размеры, классы задач, на которые рассчитаны. Безусловно, данное сравнение не вполне корректно, так как даст только абсолютные или пиковые показатели процессоров, безотносительно к задачам или тестам, однако даст общую картину — своего рода срез.

Процессоры Tile64, Tile64Pro

Процессоры Tile64 [1-3] рассчитаны на использование в высокопроизводительном сетевом оборудовании, беспроводных телекоммуникационных системах, а также серверах для потоковой обработки видеоданных. Они позволяют использовать во встраиваемых приложениях мощные вычислительные ресурсы при достаточно низких энергозатратах.

Процессоры подходят для работы в 10-20 Гбит/с сетях для поддержки следующих сервисов:

• обнаружение/предотвращение вторжений

(IDS/IPS);

Вычислительное ядро + коммутатор = ячейки

Рис. 1. Ячейка процессора Tile64

Контроллер памяти DDR2

SerDes

Контроллер

PCIeO

МАС/

PHY

интерфейсов: UART, HPI, lJC, SPI, JTAG

Блок линий ввода/вывода

Контроллер

PCIel

МАС/

PHY

SerDes

Контроллер памяти DDR2

II I I П I I

Контроллер памяти DDR2

SerDes

II] ]

Контроллер памяти DDR2

Рис. 2. Структура процессора ^^64

• общее управление рисками (UTM);

• анализ пакетов 4-7 уровней;

• мониторинг сети;

• планирование качества обслуживания (QoS).

Мультимедийные приложения прежде всего включают цифровую обработку данных, легко замещая несколько ЦПС или FPGA:

• кодирование/декодирование видео;

• потоковое и IP-видео (IPTV);

• диагностика проблем;

• пост-обработка видеоданных.

Применение в области беспроводных коммуникаций включает работу в существующих сетях GSM/CDMA и в сетях следующего поколения WiMAX & LTE. Прежде всего, это:

• базовые приемо-передающие станции (BTS);

• контроллеры базовых станций (BSC);

• шлюзы кампусной зоны (GGSN, SGSN, media gateway).

Процессор Tile64 может быть оптимизирован для выполнения определенных задач. Теоретически он будет обеспечивать десятикратный прирост производительности по сравнению с серверным процессором Intel Xeon при значительно меньшем энергопотреблении.

Tile64Pro является процессором общего назначения с MIMD-архитектурой. Каждое ядро может работать как под управлением собственной операционной системы, так и под управлением многопроцессорной системы типа SMP Linux, соответственно, одновременно процессор может поддерживать различные приложения, к примеру, обработку видеокадров, шифрование данных и обработку стека сетевых протоколов.

Виртуальная память и технология Tilera’s Multicore Hardwall позволяет осуществлять защиту данных на уровне ядра как для общей памяти, так и для потоков и сообщений пользовательского уровня.

Процессор содержит 64 идентичные вычислительные ячейки (tile), организованные в двумерный массив 8x8 (рис. 1) [2]. Ячейка является базовым блоком процессора и состоит из комбинации коммутатора и RISC-ядра общего назначения. Каждое ядро представляет собой полноценный RISC-процессор, работающий на частотах от 600 МГц до 1 ГГц, содержит кэши первого и второго уровней (L1, L2 cache).

Ядро имеет все основные возможности обычного процессора, такие как:

• полный доступ к памяти и портам ввода/ вывода;

• виртуальная память и защита данных (MMU/TLB);

• иерархический кэш с отдельными уровнями L1-I и L1-D;

• многоуровневая система прерываний;

• трехканальный конвейер VLIW, позволяющий выбирать 3 инструкции за цикл. Каждое из ядер процессора Tile64 имеет

собственную кэш-память первого и второго

уровней (рис. 2). При необходимости кэш L1 и L2 может быть объединен для формирования общего кэша суммарным объемом в 5 Мбайт (рис. 3). Процессоры семейства TilePro поддерживают технологию когерентного кэша Tilera’s DDC (Dynamic Distributed Cache) — динамический распределенный когерентный кэш, обеспечивающий в два раза большую производительность по сравнению с обычными многоядерными процессорами.

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

Рис. 3. Организация кэш-памяти

Рис. 5. Коммутатор сети iMesh MDN, UDN, STN — блоки управления подсетями

накристальной сети iMesh; L1-I, L1-D — кэши первого уровня инструкций и данных соответственно; блоки I-TLB, D-TLB — буфер ассоциативной трансляции кэшей команд и данных)

кэша инструкций L1 уменьшает частоту промахов. Программируемый блок прямого доступа в память позволяет осуществлять объемные передачи данных. Архитектура процессора разработана таким образом, что отдельному ядру доступен распределенный по другим ядрам кэш. Организация когерентного кэша предусматривает аппаратный контроль за доступом к общей распределенной памяти, что и позволяет ядру иметь доступ к набору локальных кэшей всех остальных ядер, работая как кэш третьего уровня.

Организованный данным образом кэш устраняет узкое место при доступе в глобальную внешнюю память — снижает частоту обращений.

Система когерентности кэшей позволяет получить доступ к странице памяти, кэши-

рованной одним из ядер, остальным ядрам процессора при помощи операций чтения/записи (аналогично обращению к собственному кэшу ядра). Фактически ядро, кэшируя данные для себя, кэширует их для всех остальных ядер, независимо от их потребности в этих данных, что повышает производительность процессора в целом.

Технология МиШсоге Hardwall позволяет пользователю выделить одно или несколько ядер в относительно независимую процессорную группу, исключая коммуникации между выделенной группой и остальными ядрами, не включенными в группу. Если пакет данных пересекает установленную границу группы, вызывается прерывание и управление передается гипервизору — небольшой программе исполнительного уровня для отслеживания и управления системными ресур-

сами. Это обеспечивает защиту данных приложения в многозадачной среде. Технология МиШсоге Hardwall защищает множественные приложения и операционные системы от непредвиденных взаимодействий и случайных ошибок (рис. 4).

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

iMesh состоит из пяти отдельных подсетей: две подсети управляются полностью аппаратно и используются для передачи данных между ядрами и памятью при промахах кэша или при прямом доступе в память. Три оставшиеся подсети доступны для приложений, позволяют осуществлять взаимодействие между ядрами и между ядрами и устройствами ввода/вывода. Для доступа к аппа-

Рис. 4. Выделение независимых групп

процессорных ядер Рис. 6. Топология «толстого дерева»

I - Level 1 Routes I I - Level 2 Routes I I - Level 3 Routes

1---1 (Connected to MCs) 1---------------1

Рис. 7. Логическая схема топологии «толстого дерева», реализованная в ^^64

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

Неблокируемый коммутатор, расположенный возле ядра, подключает его к внутрикристальной сети Tilera’s iMesh, которая позволяет каждому отдельному ядру взаимодействовать с находящимися поблизости ядрами. Скорость передачи данных по сети iMesh при этом может достигать 27 Тбит/с.

Сеть реализована по топологии «толстого дерева» (Fat Tree) (рис. 6-8) [5].

Ядра оптимизированы для обеспечения наивысшей производительности при минимальном потреблении энергии. При работах на частотах между 500 и 1000 МГц энергопотребление составляет 170-300 мВт в расчете на ядро для типичных приложений. Соответственно, суммарное энергопотребление процессора составляет около 20 Вт.

Средства разработки включают в себя среду Tilera’s Multicore Development Environment (MDE), имеющую в своем составе стандартные средства параллельного программирования для многоядерных систем.

Среда Tilera’s MDE содержит:

• стандартную интегрированную среду разработки, основанную на Eclipse;

• компилятор ANSI C/C++ compiler;

• симулятор;

• систему отладки и анализа производительности;

• широкие возможности интерфейса командной строки;

• полную поддержку системы SMP Linux;

• библиотеку ШВ для повышения эффективности межъядерных коммуникаций;

• отладочные платы РСІе.

Библиотека ЇЬІЬ предоставляет программные интерфейсы, которые:

• позволяют разработчикам масштабировать прикладные программы от одного ядра до множества ядер;

• абстрагировать межъядерную передачу данных в виде потоков или передач сообщений;

• эффективно управлять ресурсами процессора.

Семейство процессоров ТМе-вх

Компания ТДега 26 октября 2009 г. анонсировала стоядерные 64-бит RISC-процессоры серии ТПе^х общего назначения для применения в серверах, выполняющих многопоточные приложения. Процессор выполнен по 40-нм технологическому процессу с максимальным тепловыделением 55 Вт (16-ядерный вариант — около 5 Вт). За счет применения специализированных модулей процессор сможет обеспечивать передачу в полнодуплексном режиме потока шифрованных данных до 40 Гбит/с и до 20 Гбит/с сжатого. Процессор изначально разрабатывается для работы под операционной системой Linux. Также представлены чипы с 64, 36 и 16 ядрами.

Процессоры не совместимы напрямую с чипами на базе микроархитектуры х86, однако поддерживают ОС на базе ядра Linux. Для того чтобы использовать привычные приложения, их необходимо портировать с помощью прилагаемых программных ин-

струментов (совместимость на уровне исходных текстов).

Основные области применения:

• сетевые приложения — межсетевые экраны, VPN, мониторинг трафика и сети;

• инфраструктура систем беспроводной связи — контроллеры базовых станций, шлюзы, мультимедийные шлюзы;

• мультимедийные приложения — обработка видеоданных, IPTV;

• «облачные» вычисления — веб-приложения, базы данных, хранилища данных. Семейство Tile-Gx [4] выводит вычисления

с использованием 64-разрядных процессоров на новый уровень, позволяя многим приложениям достигать высоких показателей производительности. Семейство включает в себя устройства с количеством ядер от 16 до 100 (рис. 9), соединенных накристальной сетью Tilera’s iMesh.

Так же, как и в предыдущих семействах, составной единицей процессора является ячейка, содержащая полноценный процессор (ядро) с кэшами первого и второго уровней и неблокируемый коммутатор, соединяющий процессор (вычислительное ядро) с сетью (рис. 10). Ядра, аналогично предыдущим процессорам данной компании, могут работать как под управлением отдельной операционной системы, так и быть сгруппированы для работы под многопроцессорной системой типа SMP Linux.

Процессоры семейства Tile-Gx снижают стоимость разработки системы благодаря наличию контроллеров памяти и ввода/вывода, уменьшая тем самым количество внешних компонент.

Технология TileDirect позволяет осуществлять согласованный ввод/вывод непосредственно в кэш ячейки процессора, что

Контроллер памяти DDR3

Контроллер памяти DDR3

Контроллер памяти DDR3

Контроллер памяти DDR3

Рис. 9. Общая структура процессоров Tile-Gx

Кэш

L2

L1-I L1-D

I-TLB D-TLB

Блок прямого доступа в память

Коммутатор -200 Гб/с

Ячейка

(ТГ

Рис. 10. Ячейка процессора Tile-Gx

существенно снижает задержки при обработке пакетов информации. Система распределенного когерентного кэша Tilera’s DDC (Dynamic Distributed Cache) увеличивает производительность потоковых приложений и приложений, использующих разделяемую память. Ячейки могут быть сгруппированы в независимые вычислительные кластеры, выполняющие каждый свое приложение.

Процессоры программируются при помощи языка С/С++, что позволяет разработчи-

кам переносить на них существующие приложения.

Вычислительное ядро представляет собой 64-разрядный VLIW-процессор с длиной команд 64 бита, содержащий 64 регистра в регистровом файле, трехканальный конвейер с возможностью выполнения до 3 команд за цикл, кэши первого уровня для данных и инструкций размерами по 32 кбайт и 256 кбайт кэша второго уровня. Тактовые частоты лежат в пределах 1-1,5 ГГц.

Кэш третьего уровня образуется при объединении кэшей отдельных ячеек — Tilera’s DDC (суммарный размер кэша для стоядерного процессора составляет при этом 32 Мбайт).

Скорость передачи данных между ядрами на кристалле составляет порядка 200 Тбит/с. Наличие четырех контроллеров памяти (DDR3) обеспечивает суммарную пропускную способность при обмене с памятью 500 Гбит/с. Процессор может иметь до восьми 10-Гбитных Ethenet-интерфейсов (XAUI), до трех интерфейсов PCIe второго поколения, до 32-Гбитных Ethernet-интерфейсов (МАС), устройство обработки сетевых пакетов mPIPE, устройства шифрования и сжатия данных MiCA (Multistream iMesh Crypto Accelerator).

Все это позволяет процессору работать с сетевыми приложениями с уровнем трафика 40-80 Гбит/с (пропускная способность при обработке пакетов 80 Гбит/с, при обработке VPN-трафика — 40 Гбит/с), обеспечивая пропускную способность по PCIe до 80 Гбит/с.

Суммарное энергопотребление лежит в пределах всего 10-50 Вт.

Процессор CSX700

Архитектура процессора CSX700 была разработана для решения так называемой проблемы массо-габаритных показателей и потребляемой мощности (Size, Weight and Power (SWAP)), которая, как правило, является основной для встраиваемых высокопроизводительных приложений. Путем интегрирования процессоров, системных интерфейсов и встроенной памяти с коррекцией ошибок, CSX700 представляет собой достаточно экономичное, надежное и производительное решение, отвечающее требованиям современных приложений [6-8].

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

Кристалл CSX700 содержит 192 высокопроизводительных процессорных ядра, встроенную буферную память размером 256 кбайт (два банка по 128 кбайт), кэш данных и кэш команд, ECC-защиту внутренней и внешней памяти, встроенный контроллер прямого доступа в память. Для обеспечения накристаль-ной и межкристальной сети используется технология ClearConnect NoC (рис. 11).

Процессор состоит из двух относительно независимых модулей MTAP (MultiThreaded Array Processor — многопотоковый процессорный массив), содержащих кэши инструкций, данных, блоки управления процессорными элементами, и набор из 96 вычислительных ядер (рис. 12) [8].

О

Контроллер шины

Сеть С1еагСоппес1

Контроллер шины

о

о

I*

2

5

3

3

О

О

ОЗУ 128 кбайт

ОЗУ 128 кбайт

МТАР

4-------

Блок управления и отладки

Кэш

инструкций

Контроллер

МТАР

О

Кэш

данных

Контроллер многопроцессорного блока

Блок управления линиями ввода/вывода

МТАР

Блок управления и отладки

4--

Кэш

инструкций

Контроллер

МТАР

О

Кэш

данных

І

Контроллер многопроцессорного блока

*.............*..............*.........

орн

Процессорный {_) элемент 1 1***1 )

Многопроцессорный блок

Процессорный элемент О

Процессорный элемент 95

Блок управления линиями ввода/вывода

Системные сервисы Отладочный порт подключения к хост-системе

Линии ввода/вывода ЛА0 Управление сбросами и тактированием

Пол ноду п л ексн ы й РРбА-совместимый системный интерфейс

о

-о

о

_о_

Контроллер прямого доступа в память

о

о

РС1ех16

О

о

I*

2

5

3

3

О

Рис. 11. Структура процессора CSX700

Каждое ядро имеет двойной блок вычислений с плавающей точкой (сложение, умножение, деление, вычисление квадратного корня, поддерживаются числа одинарной и двойной точности), 6 кбайт высокопроизводительной оперативной памяти, 128-байтный регистровый файл. Поддерживается 64-битное виртуальное адресное пространство и 48-битное реальное.

Технические характеристики процессора:

• тактовая частота ядер 250 МГц;

• 96 ГФлоп для данных двойной или одинарной точности;

• поддерживает 75 ГФлоп при тесте перемножения матриц двойной точности ДОЕММ);

• производительность целочисленных операций 48 ГМАС/с;

• рассеиваемая мощность 9 Вт;

• пропускная способность внутренних шин памяти 192 Гбайт/с;

• две внешние шины памяти 4 Гбайт/с;

• скорость обмена данными между отдельными процессорами 4 Гбайт/с;

• интерфейсы РС1е, 2xDDR2 DRAM (64 бита).

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

; МТАР

Блок управления и отладки

Кэш Контроллер Кэш

инструкции МТАР N V данных

Контроллер многопроцессорного блока

Рис. 12. Структура MTAP-блока

Внешний тактовы й си тал Последовател ьн ы й вход конфи гу рации Тестовы й вы вод

Рис. 13. Структурная схема 167-ядерного вычислительного массива

CSX700 поддерживается профессиональной средой разработки (SDK) на основе технологии Eclipse с визуальными средствами отладки приложений, базирующейся на оптимизированном компиляторе ANSI C с расширениями для параллельного программирования. В дополнение к стандартной библиотеке С идет набор оптимизированных библиотек с такими функциями, как БПФ, BLAS, LAPACK и др.

167-ядерная вычислительная платформа AsAP-II

167-ядерная вычислительная платформа [9, 10] (далее — процессор), разработанная в Калифорнийском университете в Дэвисе, реализована в кремнии фирмой STMicroelectronics по 65-нм технологическому циклу. Данный процессор предназначен прежде всего для цифровой обработки сигналов, коммуникационных функций, мультимедийных приложений. Процессор содержит 164 одинаковых программируемых ядра с динамическим управлением напряжением питания и тактовой частотой, три специализированных процессора, три буфера разделяемой памяти по 16 кбайт. Все компоненты процессора тактируются собственными независимыми генераторами и соединены специальной внутрикристальной сетью. Структурная схема процессора [10] представ-

лена на рис. 13. Аналогично предыдущей версии процессора AsAP [9] каждое из ядер имеет 16-разрядные шины данных, 40-битный аккумулятор, независимый тактовый генератор с возможностью останова.

Гомогенный массив из 164 ядер уменьшает затраты на разработку приложений.

Для оптимизации соотношения энергия/производительность выделены специализированные процессоры, адаптированные для задач цифровой обработки сигналов (быстрое преобразование Фурье), коммуникаций (декодер Витерби), мультимедийных приложений (распознавание движений). Разделяемые буферы памяти обеспечивают скоростную запись данных и их хранение, поддерживают приоритеты портов, арбитраж обращений, множественные режимы адресации, включая программируемый генератор адреса. Специализированные процессоры и разделяемые блоки памяти также имеют независимые локальные тактовые генераторы. Взаимодействие осуществляется при помощи буферов FIFO с двойным тактированием.

Каждое ядро имеет память команд в 128 35-битных слов, 128 слов 16-разрядной памяти данных, два 16-разрядных FIFO-буфера по 64 слова, одноканальный шестиуровневый конвейер RISC. RISC-ядра поддерживают более 60 базовых инструкций, включая байтовое сложение/вычитание, вычисление

минимума/максимума, абсолютных значений, переходы, возвраты из подпрограмм, инструкции условного выполнения, циклы, блок с плавающей точкой (рис. 14). Задача вычисления квадратного корня (CORDIC) выполняется за 216 циклов (в процессоре AsAP операция занимала 628 циклов).

Процессор БПФ может динамически переключаться между вычислением прямого и обратного преобразования Фурье с количеством отсчетов от 16 до 4096 путем вычисления комплексной 4- или 2-точечной «бабочки» за цикл.

Конфигурируемый Витерби-процессор содержит 8 ACS-модулей и может осуществлять декодирование вплоть до длины 10.

Процессор детектора движения поддерживает несколько фиксированных и программируемых поисковых алгоритмов, отвечающих алгоритму ^264, выполняет более 14 млрд операций (SADs) в секунду на частоте 880 МГц.

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

Рис. 14. Структура вычислительного ядра

Каждая связь содержит 16-разрядную шину данных, сигнал синхронизации источника, разрешающий сигнал и сигнал запроса на смену направления, используемый для контроля потока. Ограниченные только искажениями тактового сигнала, связи могут быть сконфигурированы для передачи данных сквозь процессор в выбранном выделенном канале без участия промежуточных процессоров и безотносительно их текущих напряжений питания и тактовых частот (рис. 15). Данные могут быть помещены в конвейер в каждой ячейке для достижения полной скорости при передаче на длинные расстояния. Кроме того, они могут передаваться напрямую между

ячейками без участия коммутаторов, если дистанция мала (например, соседние ячейки) или тактовая частота источника данных мала (рис. 16). Такие меры снижают общую задержку передачи данных.

Для уменьшения рассеяния энергии, когда ядра не полностью загружены, они могут менять собственное напряжение питания и тактовую частоту. Ядра меняют напряжение питания, подключая свои питающие выводы (VddCore) к одной из двух глобальных шин питания [9] — VddHigh или VddLow (рис. 17). Локальные генераторы подключены к шине VddOsc и позволяют сглаживать сбои генерации при переключении питающих на-

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

Питающее напряжение и тактовая частота ядра могут быть установлены следующими способами: конфигурируемым аппаратным контроллером питания — DVFS; прикладной программой, выполняемой на ядре; статически заданной конфигурацией. Ключевой идеей является то, что состояние контроллера

Рис. 15. Пример межъядерных соединений

у

Шина питания с высоким напряжением — VddHigh

Шина питания с пониженным наиряже

Шина питания тактовых генераторов

Шина питания - VddAlwaysOn

Блок

управления

питанием

DVFS

Контроль VddHigh JE

ниєм — VddLow

Контроль VddLow

Контроль

частоты

генератора

Питание ядра — VddCore

Сдвиг

уровней

VddOsc

jt-1

Коммутатор

Процессорное ядро

Тактовый

генератор

Общая линия тактовых ге нераторов — G

idOsc

Сдвиг

уровней

Общая линия — GndCom

Рис. 17. Структурная схема управления питанием вычислительного ядра

питания зависит от наполнения FIFO-буфера и сигнала останова (простоя) процессора. То есть переполняемое FIFO или редкие остановы показывают, что ядро работает слишком медленно, а опустошение FIFO или частые остановы показывают, что оно работает быстрее, чем необходимо. Поскольку характеристики FIFO и остановов различны для различных задач, предусмотрен конфигурируемый КИХ/БИХ-фильтр нижних частот, сглаживающий разброс значений. Пороги срабатываний датчика останова также конфигурируемы.

Риск динамического переключения питания ядер в многоядерной системе заключается в проседании локального напряжения на питании ядра и шуме на глобальных ши-

нах питания. Для снижения негативных эффектов контроллер питания DVFS (рис. 18) выключает генератор на время переключения питания. В дополнение к этому силовые р-МОП транзисторные ключи каждого переключателя организованы как 48 включенных параллельно ключей с индивидуальными сигнальными линиями и конфигурируемым временем срабатывания. Контроллер DVFS, цепи межъядерных коммуникаций и р-МОП-ключи находятся вокруг ядра и за-питываются шиной VddAlwaysOn, что делает возможным изменение уровня напряжения только между ядром и его окружением.

Энергопотребление отдельного ядра при полной загрузке на частоте 1,07 ГГц и питании 1,2 В составляет около 48,4 мВт. При

напряжении питания 0,675 В ядра работают на частоте 66 МГц и потребляют 0,61 мВт. Таким образом, в зависимости от режима энергопотребление процессора в целом составляет от 101 мВт до 7,93 Вт.

По результатам тестирования 9-процес-сорный JPEG-кодер, работающий при напряжениях питания 1,3 и 0,8 В, достигает примерно 8%-ной экономии энергии по сравнению с тем же кодером, работающим исключительно при питании 1,3 В. Приемник, полностью совместимый со стандартом IEEE 802.11a/g, реализован с использованием 39-процессорных ядер (при этом задействованы только связи между соседними ячейками) и специализированных процессоров БПФ и Витерби. Используя длинные связи, приемник можно реализовать на 27 ядрах, что почти на треть меньше. При симуляции последняя версия приемника рассеивает примерно 75 мВт при работе на частоте 690 МГц и скорости данных 54 Мбит/с в режиме реального времени, включая 2,7 мВт для процессора БПФ и 5,5 мВт для процессора Витерби. Данная реализация в 34 раза быстрее, чем реализация на процессоре TI C62x, причем быстродействие повышено в 19 раз, а энергопотребление снижено в 28 раз по сравнению с реализацией на LART [10].

Сравнительные характеристики процессоров

Таким образом, среди многоядерных процессоров к данному моменту можно выделить:

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

• процессоры для вычислительных или графических станций, где вопросы энергопотребления не столь критичны;

• процессоры так называемого «мейнстрима» — предназначенные для серверных, рабочих станций и персональных компьютеров.

В плане управления энергопотреблением процессора интересны разработки, направленные на реализацию метода динамического регулирования интенсивности выполнения инструкций (energy per instruction, EPI) в зависимости от степени параллелизма программы. Была показана эффективность регулирования тактовой частоты в асимметричной мультипроцессорной системе в зависимости от уровня активности вычислительных ядер.

Можно выделить несколько схем управления энергопотреблением многоядерных процессоров, реализуемых на данный момент:

• перевод неактивных ядер в состояние низкого энергопотребления;

• изменение тактовой частоты ядер в зависимости от их активности;

Блок управления питанием — DVFS

Схема управления переключением напряжения

_о<]-------о<3-

і Линия задержки разъединения

в

— Защелка

нг^

-L

Конфигурирование

напряжения

БИХ/КИХ-

фильтр

Счетчик

количества

остановов

Линия задержки переключения

Сигнал переполнения/опустошения буфера

Регулятор частоты и напряжения питания ядра

Управление частотой

Конфигурирование

DVFS-блока

Сигнал основа (простоя) ядра

Шина питания — VddAlwaysOn Шина питания 'с высоким напряжением — VddHigh

Шина питания с пониженным напряжением -VddHigh

JF

JF

Питание ядра — VddCore

Процессорное ядро

Тактовый

генератор

Блок

конфигурации

Динамически

конфигурируемая

память

FIFO-

буфер

Рис. 1S. Структурная схема DVFS-контроллера

• изменение напряжения питания процессора или отдельных ядер;

• изменение тактовой частоты процессора;

Таблица 1. Классификация многоядерных процессоров, представленных на современном рынке

Архитектура/модель обработки данных MIMD

SMP SEAforth, Tile, CSX7M

AMP AsAP-II

• изменение и напряжения, и тактовой частоты ядер процессора.

Суммарно сравнительные характеристики многоядерных процессоров представлены в таблицах 1-5 [3, 4, 8, 10, 12].

Достаточно интересно также сравнить характеристики отдельных ядер многоядерных процессоров — производительность, количество поддерживаемых потоков выполнения, потребляемая мощность (табл. 4).

Таблица 2. Производительность многоядерных процессоров

Процессор Количество ядер Производительность, млн операций в секунду Производительность операций с числами в формате с плавающей точкой, МФлопс Количество потоков на ядро Потребляемая мощность, Вт

SEAforth40 4О 26 000 - О О,5

Tile64pro 64 443 000 - О 2О

ТіІе^хШ МО 750 000 О Ю-5О

AsAP-II М7 10 824-196 800 77О О О, ОО О О

CSX7M О92 48 000 96ООО О 9

Таблица 4. Производительность отдельных ядер

Процессор Разрядность Млн операций в секунду Количество потоков на ядро Потребляемая ядром мощность, Вт Удельная потребляемая ядром мощность, мВт/MIPS Удельная потребляемая мощность, Вт/поток

SEAforth40 7ОО О О,ОО25 О,ОО8 О,ОО25

Tile64pro 32 7ОО О О,3О25 О,446 О,3О25

S66 О,36О О,3О25

ТіІе^хШ 64 3ООО-45ОО О О,ЬО,5 О,О33-О,П О,О-О,5

AsAP-II О6 66 О О,ОООО О,ООО О,ОООО

ЮОО О,О599 О,О6 О,О599

CSX7M 32 25О О О,О469 О,Щ О,О469

Таблица З. Скорости передачи данных и топология связей

Процессор Топология Скорость передачи данных между ядрами Скорость обмена с памятью

SEAforth40 решетка 3600 Мбит/с О6ОО Мбит/с

Tile64pro сеть («толстое дерево») 27 Тбит/с 25,6 Гбайт/с

Tile-Gx^ сеть («толстое дерево») 200 Тбит/с 5ОО Гбит/с

AsAP-II сеть 1200 Мбит/с

CSX7M сеть 4 Гбайт/с 2x4 Гбайт/с

Заключение

В итоге можно выделить два направления, по которым на данный момент идет развитие многоядерных процессоров.

Первое — специализированные многоядерные процессоры с относительно простыми ядрами небольшой разрядности, с эффективной системой управления энергопотреблением. Как правило, они нацелены на применение в качестве контроллеров в сенсорных системах, мобильных устройствах и устройствах с автономным питанием, для первичной цифровой обработки сигналов. Ключевые свойства процессоров этого направления — низкое удельное энергопотребление ядер; возможности полного останова ядер; небольшое количество инструкций, поддерживаемых ядром; отсутствие кэш-памяти. На сегодняшний день наиболее яркие представители этого направления — процессоры семейств SEAforth, AsAP.

Второе направление — многоядерные процессоры общего назначения. Их ядра по сложности приближаются к ядрам процессоров общего назначения, имеют развитую систему кэш-памяти, высокопроизводительную систему связей между ядрами. Круг применений данных процессоров шире: бортовые вычислительные системы, системы, обслуживающие сетевые приложения, обработка мультимедийных данных и сигналов, высокопроизводительные кластеры. Ко второму направлению можно отнести процессоры семейств Tile и CSX.

Общим для многоядерных процессоров пока остается поддержка их ядрами одного потока выполнения (хотя в процессорах Tile и присутствует параллелизм на уровне инструкций).

Литература

1. TILE64 Processor Family. http://www.tilera.com/ products/tile64.php

2. Tile Processor. Architecture. Technology Brief. http://www.tilera.com/pdf/ProductBrief_ TileArchitecture_Web_v4.pdf

3. TILE64 Processor. www.tilera.com/pdf/ ProductBrief_Tile64_Web_v3.pdf

4. Product Brief: TILE-Gx Processor Family. http://www.tilera.com/pdf/ProductBrief_TILE-Gx_v2.pdf

Таблица 5. Кэш-память

Процессор Количество ядер Размер кэша, байт

L1 L2 L3

L1-I L1-D

SEAforth40 4О 64*

Tile64pro 64 О6К 64К 5М**

Тііє^хШ ЮО 32К 32К 256К 32М**

AsAP-II О28* Ш*

CSX7M О92 6К

Примечание. * локальная оперативная память; ** распределенный по ядрам процессора кэш.

5. Killebrew C. L2 Cache to Off-chip Memory Networks for Chip Multiprocessor. http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-71.pdf

6. McIntosh-Smith S. A next-generation many-core processor with reliability, fault tolerance and adaptive power management features optimized for embedded and high performance computing applications. http://www.ll.mit.edu/HPEC/ agendas/proc08/Day2/31-Day2-PosterDemoB-McIntosh-Smith-abstractpdf

7. ClearSpeed CSX700 Product Brief. http://www.clearspeed.com/products/ documents/CSX700_Product_Brief.pdf

8. ClearSpeed — Products — CSX700. http://www.clearspeed.com/products/ csx700.php

9. Truong D. N., Cheng W. H., Mohsenin T., Yu Z., Jacobson A. T., Landge G., Meeuwsen M. J. , Watnik C., Tran A. T., Xiao Z., Work E. W., Webb J. W.

A 167-Processor Computational Platform in 65 nm CMOS. // IEEE JOURNAL OF SOLID-STATE CIRCUITS. Vol. 44. No. 4. April, 2009. http://www.ece.ucdavis. edu/vcl/pubs/2009.04.JSSC

10. Truong D., Cheng W., Mohsenin T. 167-processor 65 nm Computational Platform with Per-Processor Dynamic Supply Voltage and Dynamic Clock Frequency Scaling. http://www.ece.ucdavis.edu/vcl/pubs/2008.06.symp.vlsi/ vlsi.2008.03.05.0215.pdf

11. IntellaSys — SEAforth 40C18. http://www.mtellasys.net/mdex.php?option=com_content&task=view&id =60&Itemid=75

12. SEK 40C18 DataSheet 1.1. http://www.intellasys.net/index.phploption =com_content&task=view&id=57&Itemid=68