Высокопроизводительные многоядерные процессоры для встраиваемых систем
Введение
По мере развития технических средств и вслед за изменениями окружающего мира иными становятся потребности человека в производительности вычислительных систем, изменяются требования приложений. Одним из возможных способов удовлетворить растущие потребности является разработка и применение систем с массовым параллелизмом — кластеры, Grid-системы, многопроцессорные комплексы, системы на многоядерных процессорах.
Фактически многоядерными процессорами перекрываются области применения, классифицируемые как высокопроизводительные вычисления HPC и высокопроизводительные вычисления во встраиваемых приложениях HPEC. Особенно можно выделить динамически конфигурируемые системы и системы с перестраиваемой архитектурой — замена FPGA, ПЛИС и в некоторых случаях специализированных процессоров; обработка сигналов, аудио-, видеоданных — как конкуренция цифровым сигнальным процессорам и графическим процессорам (DSP); системы управления и системы реального времени; персональные вычислительные системы — как альтернатива микроконтроллерам и процессорам общего назначения. Не следует ожидать массового вытеснения из применения одно-, двух-, четырехъядерных процессоров, микроконтроллеров или ПЛИС. Скорее всего, произойдет слияние или взаимовыгодное соседство одно- и многоядерных процессоров и контроллеров. Это связано и с их относительно сложной структурой, иногда слишком избыточной, и с относительной дороговизной многоядерных процессоров, и с существующими наработками, и с отсутствием развитых подходов к программированию многоядерных процессоров и сложностей, возникающих при отладке приложений.
Целью данной работы является создание общей картины направления развития многоядерных процессоров. Рассмотрены структуры процессоров различных классов, структура вычислительных ядер и связей между ними. Упор сделан на процессоры, обозначаемые в иностранной литературе термином «many-core processor», то есть процессор, имеющий десятки или сотни вычислительных ядер в одном кристалле.
Рассмотрим архитектуры многоядерных процессоров в плане общей структуры, структуры ядер, организации внутренней памяти, связей между ядрами, наличия внешних интерфейсов.
Структура ядер важна с точки зрения программирования на нижнем уровне, при проектировании и оптимизации приложений. Она определяет возможности процессора в плане вычислений.
Перед разработчиками многоядерных процессоров, как правило, помимо задач повышения производительности и эффективности процессора стоят задачи уменьшения рассеиваемой мощности при малой загрузке процессора, во время его простоя или ожидания результатов вычислений от ядер. Также необходимо предусмотреть доступ к разделяемой памяти и эффективные коммуникации между ядрами.
Наличие внутрикристальной памяти, а также ее организация влияют на парадигму программирования, частоту обращений к внешней памяти, определяют способы синхронизации программ и данных.
Еще одна задача — распределение или передача данных между ядрами. Среда передачи данных должна обладать широкой полосой пропускания, малыми временами задержки соединения и распространения данных. Пропускная способность среды передачи, ее топология повлияют на производительность процессора на многопоточных приложениях, будут определять накладные расходы процессорного времени, задержки распространения данных.
Внешние интерфейсы определяют возможности взаимодействия процессора с памятью и внешними устройствами, а также возможности наращивания количества процессоров.
Произведем сравнение их характеристик по показателям: разрядность, производительность, потребляемая мощность, стоимость, размеры, классы задач, на которые рассчитаны. Безусловно, данное сравнение не вполне корректно, так как даст только абсолютные или пиковые показатели процессоров, безотносительно к задачам или тестам, однако даст общую картину — своего рода срез.
Процессоры Tile64, Tile64Pro
Процессоры Tile64 [1-3] рассчитаны на использование в высокопроизводительном сетевом оборудовании, беспроводных телекоммуникационных системах, а также серверах для потоковой обработки видеоданных. Они позволяют использовать во встраиваемых приложениях мощные вычислительные ресурсы при достаточно низких энергозатратах.
Процессоры подходят для работы в 10-20 Гбит/с сетях для поддержки следующих сервисов:
- обнаружение/предотвращение вторжений (IDS/IPS);
- общее управление рисками (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), организованные в двумерный массив 8·8 (рис. 1) [2]. Ячейка является базовым блоком процессора и состоит из комбинации коммутатора и RISC-ядра общего назначения. Каждое ядро представляет собой полноценный RISC-процессор, работающий на частотах от 600 МГц до 1 ГГц, содержит кэши первого и второго уровней (L1, L2 cache).
Рис. 1. Ячейка процессора Tile64
Ядро имеет все основные возможности обычного процессора, такие как:
- полный доступ к памяти и портам ввода/ вывода;
- виртуальная память и защита данных (MMU/TLB);
- иерархический кэш с отдельными уровнями L1-I и L1-D;
- многоуровневая система прерываний;
- трехканальный конвейер VLIW, позволяющий выбирать 3 инструкции за цикл.
Каждое из ядер процессора Tile64 имеет собственную кэш-память первого и второго уровней (рис. 2). При необходимости кэш L1 и L2 может быть объединен для формирования общего кэша суммарным объемом в 5 Мбайт (рис. 3). Процессоры семейства TilePro поддерживают технологию когерентного кэша Tilera’s DDC (Dynamic Distributed Cache) — динамический распределенный когерентный кэш, обеспечивающий в два раза большую производительность по сравнению с обычными многоядерными процессорами.
Рис. 2. Структура процессора Tile64 (SerDes — блок преобразования данных из последовательной формы в параллельную и наоборот)
Рис. 3. Организация кэш-памяти
Распределенный по ядрам когерентный кэш обеспечивает малое время задержки и большую емкость. Подсистема кэша состоит из высокопроизводительной двухуровневой неблокирующей иерархии кэшей. Двухуровневое решение изолирует кэш первого уровня (L1 инструкций и L1 данных) от лишних операций обращения к памяти, сохраняя решение быстрым и энергоэффективным. Аппаратная предварительная выборка инструкций для кэша инструкций L1 уменьшает частоту промахов. Программируемый блок прямого доступа в память позволяет осуществлять объемные передачи данных. Архитектура процессора разработана таким образом, что отдельному ядру доступен распределенный по другим ядрам кэш. Организация когерентного кэша предусматривает аппаратный контроль за доступом к общей распределенной памяти, что и позволяет ядру иметь доступ к набору локальных кэшей всех остальных ядер, работая как кэш третьего уровня.
Организованный данным образом кэш устраняет узкое место при доступе в глобальную внешнюю память — снижает частоту обращений.
Система когерентности кэшей позволяет получить доступ к странице памяти, кэшированной одним из ядер, остальным ядрам процессора при помощи операций чтения/записи (аналогично обращению к собственному кэшу ядра). Фактически ядро, кэшируя данные для себя, кэширует их для всех остальных ядер, независимо от их потребности в этих данных, что повышает производительность процессора в целом.
Технология Multicore Hardwall позволяет пользователю выделить одно или несколько ядер в относительно независимую процессорную группу, исключая коммуникации между выделенной группой и остальными ядрами, не включенными в группу. Если пакет данных пересекает установленную границу группы, вызывается прерывание и управление передается гипервизору — небольшой программе исполнительного уровня для отслеживания и управления системными ресурсами. Это обеспечивает защиту данных приложения в многозадачной среде. Технология Multicore Hardwall защищает множественные приложения и операционные системы от непредвиденных взаимодействий и случайных ошибок (рис. 4).
Рис. 4. Выделение независимых групп процессорных ядер
Сеть iMesh обеспечивает высокоскоростную передачу данных, необходимую для устранения узкого места системы и поддержки масштабирования приложений.
iMesh состоит из пяти отдельных подсетей: две подсети управляются полностью аппа-ратно и используются для передачи данных между ядрами и памятью при промахах кэша или при прямом доступе в память. Три оставшиеся подсети доступны для приложений, позволяют осуществлять взаимодействие между ядрами и между ядрами и устройствами ввода/вывода. Для доступа к аппаратуре используется некоторое количество абстракций, например потоковые каналы, аналогичные сокетам, или интерфейс передачи сообщений. Сеть iMesh передает данные без остановки приложений, выполняющихся на ядрах. Это позволяет производить обмен данными между ядрами, осуществляя контроль и маршрутизацию для каждого сетевого соединения, включая буферизацию и контроль потока по всей сети (рис. 5).
Рис. 5. Коммутатор сети iMesh (TDN, IDN, MDN, UDN, STN — блоки управления подсетями накристальной сети iMesh; L1-I, L1-D — кэши первого уровня инструкций и данных соответственно; блоки I-TLB, D-TLB — буфер ассоциативной трансляции кэшей команд и данных)
Неблокируемый коммутатор, расположенный возле ядра, подключает его к внутрикристальной сети Tilera’s iMesh, которая позволяет каждому отдельному ядру взаимодействовать с находящимися поблизости ядрами. Скорость передачи данных по сети iMesh при этом может достигать 27 Тбит/с.
Сеть реализована по топологии «толстого дерева» (Fat Tree) (рис. 6-8) [5].
Рис. 6. Топология «толстого дерева»
Рис. 7. Логическая схема топологии «толстого дерева», реализованная в Tile64
Рис. 8. Физическая топология
Ядра оптимизированы для обеспечения наивысшей производительности при минимальном потреблении энергии. При работах на частотах между 500 и 1000 МГц энергопотребление составляет 170-300 мВт в расчете на ядро для типичных приложений. Соответственно, суммарное энергопотребление процессора составляет около 20 Вт.
Средства разработки включают в себя среду Tilera’s Multicore Development Environment (MDE), имеющую в своем составе стандартные средства параллельного программирования для многоядерных систем. Среда Tilera’s MDE содержит:
- стандартную интегрированную среду разработки, основанную на Eclipse;
- компилятор ANSI C/C++ compiler;
- симулятор;
- систему отладки и анализа производительности;
- широкие возможности интерфейса командной строки;
- полную поддержку системы SMP Linux;
- библиотеку iLIB для повышения эффективности межъядерных коммуникаций;
- отладочные платы PCIe.
Библиотека iLib предоставляет программные интерфейсы, которые:
- позволяют разработчикам масштабировать прикладные программы от одного ядра до множества ядер;
- абстрагировать межъядерную передачу данных в виде потоков или передач сообщений;
- эффективно управлять ресурсами процессора.
Семейство процессоров Tile-Gx
Компания Tilera 26 октября 2009 г. анонсировала стоядерные 64-бит RISC-процессоры серии Tile-Gx общего назначения для применения в серверах, выполняющих многопоточные приложения. Процессор выполнен по 40-нм технологическому процессу с максимальным тепловыделением 55 Вт (16-ядерный вариант — около 5 Вт). За счет применения специализированных модулей процессор сможет обеспечивать передачу в полнодуплексном режиме потока шифрованных данных до 40 Гбит/с и до 20 Гбит/с сжатого. Процессор изначально разрабатывается для работы под операционной системой Linux. Также представлены чипы с 64, 36 и 16 ядрами.
Процессоры не совместимы напрямую с чипами на базе микроархитектуры x86, однако поддерживают ОС на базе ядра Linux. Для того чтобы использовать привычные приложения, их необходимо портировать с помощью прилагаемых программных инструментов (совместимость на уровне исходных текстов).
Основные области применения:
- сетевые приложения — межсетевые экраны, VPN, мониторинг трафика и сети;
- инфраструктура систем беспроводной связи — контроллеры базовых станций, шлюзы, мультимедийные шлюзы;
- мультимедийные приложения — обработка видеоданных, IPTV;
- «облачные» вычисления — веб-приложения, базы данных, хранилища данных.
Семейство Tile-Gx [4] выводит вычисления с использованием 64-разрядных процессоров на новый уровень, позволяя многим приложениям достигать высоких показателей производительности. Семейство включает в себя устройства с количеством ядер от 16 до 100 (рис. 9), соединенных накристальной сетью Tilera’s iMesh.
Рис. 9. Общая структура процессоров Tile-Gx
Так же, как и в предыдущих семействах, составной единицей процессора является ячейка, содержащая полноценный процессор (ядро) с кэшами первого и второго уровней и небло-кируемый коммутатор, соединяющий процессор (вычислительное ядро) с сетью (рис. 10). Ядра, аналогично предыдущим процессорам данной компании, могут работать как под управлением отдельной операционной системы, так и быть сгруппированы для работы под многопроцессорной системой типа SMP Linux.
Рис. 10. Ячейка процессора Tile-Gx
Процессоры семейства Tile-Gx снижают стоимость разработки системы благодаря наличию контроллеров памяти и ввода/вывода, уменьшая тем самым количество внешних компонент.
Технология TileDirect позволяет осуществлять согласованный ввод/вывод непосредственно в кэш ячейки процессора, что существенно снижает задержки при обработке пакетов информации. Система распределенного когерентного кэша Tilera’s DDC (Dynamic Distributed Cache) увеличивает производительность потоковых приложений и приложений, использующих разделяемую память. Ячейки могут быть сгруппированы в независимые вычислительные кластеры, выполняющие каждый свое приложение.
Процессоры программируются при помощи языка С/С++, что позволяет разработчикам переносить на них существующие приложения.
Вычислительное ядро представляет собой 64-разрядный VLIW-процессор с длиной команд 64 бита, содержащий 64 регистра в регистровом файле, трехканальный конвейер с возможностью выполнения до 3 команд за цикл, кэши первого уровня для данных и инструкций размерами по 32 кбайт и 256 кбайт кэша второго уровня. Тактовые частоты лежат в пределах 1-1,5 ГГц.
Кэш третьего уровня образуется при объединении кэшей отдельных ячеек — Tilera’s DDC (суммарный размер кэша для стоядерного процессора составляет при этом 32 Мбайт).
Скорость передачи данных между ядрами на кристалле составляет порядка 200 Тбит/с. Наличие четырех контроллеров памяти (DDR3) обеспечивает суммарную пропускную способность при обмене с памятью 500 Гбит/с. Процессор может иметь до восьми Ш-Гбитных 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).
Рис. 11. Структура процессора CSX700
Процессор состоит из двух относительно независимых модулей MTAP (MultiThreaded Array Processor — многопотоковый процессорный массив), содержащих кэши инструкций, данных, блоки управления процессорными элементами, и набор из 96 вычислительных ядер (рис. 12) [8].
Рис. 12. Структура MTAP-блока
Каждое ядро имеет двойной блок вычислений с плавающей точкой (сложение, умножение, деление, вычисление квадратного корня, поддерживаются числа одинарной и двойной точности), 6 кбайт высокопроизводительной оперативной памяти, 128-байтный регистровый файл. Поддерживается 64-битное виртуальное адресное пространство и 48-битное реальное.
Технические характеристики процессора:
- тактовая частота ядер 250 MГц;
- 96 ГФлоп для данных двойной или одинарной точности;
- поддерживает 75 ГФлоп при тесте перемножения матриц двойной точности (DGEMM);
- производительность целочисленных операций 48 ШАОс;
- рассеиваемая мощность 9 Вт;
- пропускная способность внутренних шин памяти 192 Гбайт/с;
- две внешние шины памяти 4 Гбайт/с;
- скорость обмена данными между отдельными процессорами 4 Гбайт/с;
- интерфейсы PCIe, 2·DDR2 DRAM (64 бита).
Разработанный для систем с низким энергопотреблением, данный процессор работает на относительно низкой тактовой частоте и имеет механизм управления частотой, который позволяет регулировать производительность приложений в условиях определенного энергопотребления и теплового окружения.
CSX700 поддерживается профессиональной средой разработки (SDK) на основе технологии Eclipse с визуальными средствами отладки приложений, базирующейся на оптимизированном компиляторе ANSI C с расширениями для параллельного программирования. В дополнение к стандартной библиотеке С идет набор оптимизированных библиотек с такими функциями, как БПФ, BLAS, LAPACK и др.
167-ядерная вычислительная платформа AsAP-II
167-ядерная вычислительная платформа [9, 10] (далее — процессор), разработанная в Калифорнийском университете в Дэвисе, реализована в кремнии фирмой STMicroelectronics по 65-нм технологическому циклу. Данный процессор предназначен прежде всего для цифровой обработки сигналов, коммуникационных функций, мультимедийных приложений. Процессор содержит 164 одинаковых программируемых ядра с динамическим управлением напряжением питания и тактовой частотой, три специализированных процессора, три буфера разделяемой памяти по 16 кбайт. Все компоненты процессора тактируются собственными независимыми генераторами и соединены специальной внутрикристальной сетью. Структурная схема процессора [10] представлена на рис. 13. Аналогично предыдущей версии процессора AsAP [9] каждое из ядер имеет 16-разрядные шины данных, 40-битный аккумулятор, независимый тактовый генератор с возможностью останова.
Рис. 13. Структурная схема 167-ядерного вычислительного массива
Гомогенный массив из 164 ядер уменьшает затраты на разработку приложений.
Для оптимизации соотношения энергия/производительность выделены специализированные процессоры, адаптированные для задач цифровой обработки сигналов (быстрое преобразование Фурье), коммуникаций (декодер Витерби), мультимедийных приложений (распознавание движений). Разделяемые буферы памяти обеспечивают скоростную запись данных и их хранение, поддерживают приоритеты портов, арбитраж обращений, множественные режимы адресации, включая программируемый генератор адреса. Специализированные процессоры и разделяемые блоки памяти также имеют независимые локальные тактовые генераторы. Взаимодействие осуществляется при помощи буферов FIFO с двойным тактированием.
Каждое ядро имеет память команд в 128 35-битных слов, 128 слов 16-разрядной памяти данных, два 16-разрядных FIFO-буфера по 64 слова, одноканальный шестиуровневый конвейер RISC. RISC-ядра поддерживают более 60 базовых инструкций, включая байтовое сложение/вычитание, вычисление минимума/максимума, абсолютных значений, переходы, возвраты из подпрограмм, инструкции условного выполнения, циклы, блок с плавающей точкой (рис. 14). Задача вычисления квадратного корня (CORDIC) выполняется за 216 циклов (в процессоре AsAP операция занимала 628 циклов).
Рис. 14. Структура вычислительного ядра
Процессор БПФ может динамически переключаться между вычислением прямого и обратного преобразования Фурье с количеством отсчетов от 16 до 4096 путем вычисления комплексной 4- или 2-точечной «бабочки» за цикл.
Конфигурируемый Витерби-процессор содержит 8 ACS-модулей и может осуществлять декодирование вплоть до длины 10.
Процессор детектора движения поддерживает несколько фиксированных и программируемых поисковых алгоритмов, отвечающих алгоритму H.264, выполняет более 14 млрд операций (SADs) в секунду на частоте 880 МГц.
Ядра процессора обмениваются данными посредством конфигурируемых связей между соседними процессорами. Связи являются циклически переключаемыми статически конфигурируемыми, что хорошо согласуется с технологией локальной синхронизации, используемой в процессоре. Структура связей включает два входа вычислительного ядра и одиночный выход, который динамически подключается к восьми выходам ячейки.
Каждая связь содержит 16-разрядную шину данных, сигнал синхронизации источника, разрешающий сигнал и сигнал запроса на смену направления, используемый для контроля потока. Ограниченные только искажениями тактового сигнала, связи могут быть сконфигурированы для передачи данных сквозь процессор в выбранном выделенном канале без участия промежуточных процессоров и безотносительно их текущих напряжений питания и тактовых частот (рис. 15). Данные могут быть помещены в конвейер в каждой ячейке для достижения полной скорости при передаче на длинные расстояния. Кроме того, они могут передаваться напрямую между ячейками без участия коммутаторов, если дистанция мала (например, соседние ячейки) или тактовая частота источника данных мала (рис. 16). Такие меры снижают общую задержку передачи данных.
Рис. 15. Пример межъядерных соединений
Рис. 16. Организация межъядерных соединений в вычислительном массиве
Для уменьшения рассеяния энергии, когда ядра не полностью загружены, они могут менять собственное напряжение питания и тактовую частоту. Ядра меняют напряжение питания, подключая свои питающие выводы (VddCore) к одной из двух глобальных шин питания [9] — VddHigh или VddLow (рис. 17). Локальные генераторы подключены к шине VddOsc и позволяют сглаживать сбои генерации при переключении питающих напряжений. Шина VddAlwaysOn питает цепи устройств коммуникации и конфигурации, а также цепи динамического управления питанием и коммуникациями. Также возможно отключение линий VddCore неиспользуемых процессоров от питающих глобальных шин, благодаря чему потребление ядра уменьшается более чем в 100 раз.
Рис. 17. Структурная схема управления питанием вычислительного ядра
Питающее напряжение и тактовая частота ядра могут быть установлены следующими способами: конфигурируемым аппаратным контроллером питания — DVFS; прикладной программой, выполняемой на ядре; статически заданной конфигурацией. Ключевой идеей является то, что состояние контроллера питания зависит от наполнения FIFO-буфера и сигнала останова (простоя) процессора. То есть переполняемое FIFO или редкие остановы показывают, что ядро работает слишком медленно, а опустошение FIFO или частые остановы показывают, что оно работает быстрее, чем необходимо. Поскольку характеристики FIFO и остановов различны для различных задач, предусмотрен конфигурируемый КИХ/БИХ-фильтр нижних частот, сглаживающий разброс значений. Пороги срабатываний датчика останова также конфигурируемы.
Риск динамического переключения питания ядер в многоядерной системе заключается в проседании локального напряжения на питании ядра и шуме на глобальных шинах питания. Для снижения негативных эффектов контроллер питания DVFS (рис. 18) выключает генератор на время переключения питания. В дополнение к этому силовые р-МОП транзисторные ключи каждого переключателя организованы как 48 включенных параллельно ключей с индивидуальными сигнальными линиями и конфигурируемым временем срабатывания. Контроллер DVFS, цепи межъядерных коммуникаций и р-МОП-ключи находятся вокруг ядра и запитываются шиной VddAlwaysOn, что делает возможным изменение уровня напряжения только между ядром и его окружением.
Рис. 18. Структурная схема DVFS-контроллера
Энергопотребление отдельного ядра при полной загрузке на частоте 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) в зависимости от степени параллелизма программы. Была показана эффективность регулирования тактовой частоты в асимметричной мультипроцессорной системе в зависимости от уровня активности вычислительных ядер.
Можно выделить несколько схем управления энергопотреблением многоядерных процессоров, реализуемых на данный момент:
- перевод неактивных ядер в состояние низкого энергопотребления;
- изменение тактовой частоты ядер в зависимости от их активности;
- изменение напряжения питания процессора или отдельных ядер;
- изменение тактовой частоты процессора;
- изменение и напряжения, и тактовой частоты ядер процессора. Суммарно сравнительные характеристики многоядерных процессоров представлены в таблицах 1-5 [3, 4, 8, 10, 12].
Таблица 1. Классификация многоядерных процессоров, представленных на современном рынке
Архитектура/модель обработки данных |
MIMD |
SMP |
SEAforth, Tile, CSX700 |
AMP |
AsAP-II |
Таблица 2. Производительность многоядерных процессоров
Процессор | Количество ядер | Производительность, млн операций в секунду | Производительность операций с числами в формате с плавающей точкой, МФлопс | Количество потоков на ядро | Потребляемая мощность, вт |
SEAforth40 | 40 | 26 000 | — | 1 | 0,5 |
Tile64pro | 64 | 443 000 | — | 1 | 20 |
Tile-Gx100 | 100 | 750 000 | 1 | 10-50 | |
AsAP-II | 167 | 10 824-196 800 | 770 | 1 | 0,01-10 |
CSX700 | 192 | 48 000 | 96000 | 1 | 9 |
Таблица 3. Скорости передачи данных и топология связей
Процессор | Топология | Скорость передачи данных между ядрами | Скорость обмена с памятью |
SEAforth40 | решетка | 3600 Мбит/с | 1600 Мбит/с |
Tile64pro | сеть («толстое дерево») | 27 Тбит/с | 25,6 Гбайт/с |
Tile-Gx100 | сеть («толстое дерево») | 200 Тбит/с | 500 Гбит/с |
AsAP-II | сеть | 1200 Мбит/с | |
CSX700 | сеть | 4 Гбайт/с | 2×4 Гбайт/с |
Таблица 4. Производительность отдельных ядер
Процессор | Разрядность | Млн операций в секунду | Количество потоков на ядро | Потребляемая ядром мощность, вт | Удельная потребляемая ядром мощность, мВт/MlPS | Удельная потребляемая мощность, вт/поток |
SEAforth40 | 18 | 700 | 1 | 0,0125 | 0,018 | 0,0125 |
Tile64pro |
32 |
700 |
1 |
0,3125 |
0,446 | 0,3125 |
866 | 0,361 | 0,3125 | ||||
Tile-Gx100 | 64 | 3000-4500 | 1 | 0,1-0,5 | 0,033-0,11 | 0,1-0,5 |
AsAP-II |
16 |
66 |
1 |
0,0001 | 0,001 | 0,0001 |
1000 | 0,0599 | 0,06 | 0,0599 | |||
CSX700 | 32 | 250 | 1 | 0,0469 | 0,188 | 0,0469 |
Таблица 5. Кэш-память
Процессор |
Количество ядер |
Размер кэша, байт |
|||
L1 |
L2 |
L3 |
|||
L1-I | L1-D | ||||
SEAforth40 | 40 |
64* |
|||
Tile64pro | 64 |
16К |
64К | 5М** | |
Tile-Gx100 | 100 | 32К | 32К | 256К | 32М** |
AsAP-II | 167 | 128* | 128* | ||
CSX700 | 192 |
6К |
Примечание. * локальная оперативная память; ** распределенный по ядрам процессора кэш.
Достаточно интересно также сравнить характеристики отдельных ядер многоядерных процессоров — производительность, количество поддерживаемых потоков выполнения, потребляемая мощность (табл. 4).
Заключение
В итоге можно выделить два направления, по которым на данный момент идет развитие многоядерных процессоров.
Первое — специализированные многоядерные процессоры с относительно простыми ядрами небольшой разрядности, с эффективной системой управления энергопотреблением. Как правило, они нацелены на применение в качестве контроллеров в сенсорных системах, мобильных устройствах и устройствах с автономным питанием, для первичной цифровой обработки сигналов. Ключевые свойства процессоров этого направления — низкое удельное энергопотребление ядер; возможности полного останова ядер; небольшое количество инструкций, поддерживаемых ядром; отсутствие кэш-памяти. На сегодняшний день наиболее яркие представители этого направления — процессоры семейств SEAforth, AsAP.
Второе направление — многоядерные процессоры общего назначения. Их ядра по сложности приближаются к ядрам процессоров общего назначения, имеют развитую систему кэш-памяти, высокопроизводительную систему связей между ядрами. Круг применений данных процессоров шире: бортовые вычислительные системы, системы, обслуживающие сетевые приложения, обработка мультимедийных данных и сигналов, высокопроизводительные кластеры. Ко второму направлению можно отнести процессоры семейств Tile и CSX.
Общим для многоядерных процессоров пока остается поддержка их ядрами одного потока выполнения (хотя в процессорах Tile и присутствует параллелизм на уровне инструкций).
- TILE64 Processor Family. http://www.tilera.com/products/tile64.php
- Tile Processor. Architecture. Technology Brief. http://www.tilera.com/pdf/ProductBrief_TileArchitecture_Web_v4.pdf
- TILE64 Processor. www.tilera.com/pdf/ProductBrief_Tile64_Web_v3.pdf
- Product Brief: TILE-Gx Processor Family. http://www.tilera.com/pdf/ProductBrief_TILE-Gx_v2.pdf
- Killebrew C. L2 Cache to Off-chip Memory Networks for Chip Multiprocessor. http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-71.pdf
- 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-abstract.pdf
- ClearSpeed CSX700 Product Brief. http://www.clearspeed.com/products/documents/CSX700_Product_Brief.pdf
- ClearSpeed — Products — CSX700. http://www.clearspeed.com/products/csx700.php
- 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
- 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
- IntellaSys — SEAforth 40C18. http://www.intellasys.net/index.php?option=com_content&task=view&id=60&Itemid=75
- SEK 40C18 DataSheet 1.1. http://www.intellasys.net/index.php?option=com_content&task=view&id=57&Itemid=68