Лекция
Привет, сегодня поговорим про многоядерные процессоры для встраиваемых приложений, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое многоядерные процессоры для встраиваемых приложений , настоятельно рекомендую прочитать все из категории Компьютерная схемотехника и архитектура компьютеров.
Процессоры Tile64 рассчитаны на применение в высокопроизводительном сетевом оборудовании, беспроводных телекоммуникационных системах, а также серверах для потоковой обработки видеоданных. Позволяют использовать во встраиваемых приложениях мощные вычислительные ресурсы при достаточно низких энергозатратах.
Круг целевых задач для данных процессоров следующий.
Процессоры способны работать в сетях с уровнем трафика порядка 10-20 Гб/с, обеспечивая поддержку следующих сервисов:
Мультимедиа-приложения, прежде всего включают цифровую обработку данных, легко замещая несколько цифровых сигнальных процессоров (ЦПС) или FPGA:
Применение в области беспроводных коммуникаций включает работу в существующих сетях GSM/CDMA и в сетях следующего поколения WiMAX & LTE. Прежде всего, это:
Процессор Tile64 может быть оптимизирован для выполнения определенных задач. Теоретически Tile64 будет обеспечивать десятикратный прирост производительности по сравнению с серверным процессором Intel Xeon при значительно меньшем энергопотреблении.
Виртуальная память и технология Tilera's Multicore Hardwall позволяет осуществлять защиту данных на уровне ядра, как для общей памяти, так и для потоков и сообщений пользовательского уровня.
Процессор содержит 64 идентичных вычислительных ячейки (tile), организованных в двумерный массив 8х8 (рис.27.1, 27.2). Ячейка является базовым блоком процессора и состоит из комбинации коммутатора и RISC-ядра общего назначения. Каждое ядро представляет собой полноценный RISC-процессор, работающий на частотах от 600 МГц до 1 ГГц, и содержит кэши первого и второго уровней (L1, L2 cache).
Рис.27.1. Ячейка процессора Tile64
Ядро имеет все основные возможности обычного процессора, такие как:
Каждое из ядер процессора Tile64 имеет собственную кэш-память первого и второго уровней (рис.27.3).
Рис.27.3. Организация кэш-памяти
Ядра оптимизированы для обеспечения наивысшей производительности при минимальном потреблении энергии. При работах на частотах между 500 и 1000 МГц энергопотребление составляет 170-300 мВт в расчете на ядро для типичных приложений. Соответственно, суммарное энергопотребление процессора составляет около 20 Вт.
Распределенный по ядрам когерентный кэш обеспечивает малое время задержки и большую емкость. Подсистема кэша состоит из высокопроизводительной двухуровневой неблокирующей иерархии кэшей. Двухуровневое решение изолирует кэш первого уровня (L1-инструкций и L1-данных) от лишних операций обращения к памяти, сохраняя решение быстрым и энергоэффективным. Аппаратная предварительная выборка инструкций для кэша инструкций L1-I уменьшает частоту промахов кэша. Программируемый блок прямого доступа в память позволяет осуществлять объемные передачи данных. Архитектура процессора разработана таким образом, что отдельному ядру доступен распределенный по другим ядрам кэш. Такая организация когерентного кэша предусматривает аппаратный контроль за доступом к общей распределенной памяти, это и позволяет ядру иметь доступ к набору локальных кэшей всех остальных ядер, работая как кэш третьего уровня.
Организованный данным образом кэш устраняет узкое место при доступе в глобальную внешнюю память — снижает частоту обращений.
Система когерентности кэшей позволяет получить доступ к странице памяти, кэшированной одним из ядер, и к остальным ядрам процессора при помощи операций чтения/записи (аналогично обращению к собственному кэшу ядра). Фактически ядро, кэшируя данные для себя, кэширует их для всех остальных ядер, независимо от их потребности в этих данных, что повышает производительность процессора в целом.
Технология Multicore Hardwall позволяет пользователю выделить одно или несколько ядер в относительно независимую процессорную группу, исключая коммуникации между выделенной группой и остальными ядрами, не включенными в группу. Если пакет данных пересекает установленную границу группы, вызывается прерывание и управление передается гипервизору — небольшой программе исполнительного уровня для отслеживания и управления системными ресурсами. Это обеспечивает защиту данных приложения в многозадачной среде. Технология Multicore Hardwall защищает множественные приложения и операционные системы от непредвиденных взаимодействий и случайных ошибок (рис.27.4).
Рис.27.4. Выделение независимых групп процессорных ядер
Сеть iMesh обеспечивает высокоскоростную передачу данных, необходимую для устранения узкого места системы и поддержки масштабирования приложений. iMesh состоит из пяти отдельных подсетей. Две подсети управляются полностью аппаратно и используются для передачи данных между ядрами и памятью при промахах кэша или при прямом доступе в память. Три оставшиеся подсети доступны для приложений, позволяют осуществлять взаимодействие между ядрами и между ядрами и устройствами ввода-вывода. Для доступа к аппаратуре используется некоторое количество абстракций, например, потоковые каналы, аналогичные сокетам, или интерфейс передачи сообщений. Сеть iMesh позволяет передавать данные без остановки приложений, выполняющихся на ядрах. Это позволяет осуществлять обмен данными между ядрами и осуществлять контроль и маршрутизацию для каждого сетевого соединения, включая буферизацию и контроль потока по всей сети (рис.27.5).
Рис.27.5. Коммутатор сети iMesh
Коммутатор, расположенный возле ядра, является неблокируемым и подключает ядро к внутрикристальной сети Tilera's iMesh™, которая позволяет каждому отдельному ядру взаимодействовать с находящимися поблизости ядрами. Скорость передачи данных по сети iMesh может достигать 27 Тбит/с.
Сеть реализована по топологии "толстого дерева" (Fat Tree).
Средства разработки включают в себя среду Tilera's Multicore Development Environment™ (MDE), имеющую в своем составе стандартные средства параллельного программирования для многоядерных систем.
Среда Tilera's MDE содержит:
Библиотека iLib предоставляет программные интерфейсы, которые позволяют разработчикам:
Архитектура процессора CSX700 была разработана для решения проблемы размеров, веса и потребляемой мощности (Size, Weight and Power (SWAP)), которая, как правило, доминирует во встраиваемых высокопроизводительных приложениях. Путем интегрирования процессоров, системных интерфейсов и встроенной памяти с коррекцией ошибок, CSX700 представляет собой экономичное, надежное и производительное решение, отвечающее требованиям современных приложений.
Кристалл CSX700 содержит 192 высокопроизводительных процессорных ядра, встроенную буферную память размером 256 Кбайт (два банка по 128 Кбайт), кэш данных и кэш команд, ECC защиту внутренней и внешней памяти, встроенный контроллер прямого доступа в память. Для обеспечения накристальной и межкристальной сети используется технология ClearConnect NoC (рис.27.6).
Рис.27.6. Структура процессора CSX700
Интерфейс внешней памяти имеет 72 бита для контроля и коррекции данных (Error Checking and Correction — ECC). Используется память 64-бит DDR2 SDRAM объемом до 4 Гбайт. Процессор имеет 64- разрядное адресное пространство, которое отображается в 48-разрядное физическое. Порты CCBR0 и CCBR1 предназначены для образования мультикристальных систем, а также могут служить для подключения ПЛИС.
Рис.27.8. Структура MTAP-блока
На каждом такте процессор извлекает команду, декодирует ее и направляет в исполнительные блоки mono или poly либо на контроллер ввода-вывода. Набор команд традиционен для RISC-процессоров — это трехадресные команды. Кроме того, процессор выполняет команды перехода и управляет переключением потоков. Команды выполняются над операндами mono или poly, причем некоторые из них реализуются только в каком-то одном блоке (например, команды переходов — лишь в mono). Каждое ядро имеет двойной блок вычислений с плавающей точкой (сложение, умножение, деление, вычисление квадратного корня, поддерживаются числа одинарной и двойной точности), 6 Кбайт высокопроизводительной оперативной памяти, 128-байтный регистровый файл. Поддерживается 64-битное виртуальное адресное пространство и 48-битное реальное.
Технические характеристики процессора:
Внутрикристальная магистраль позволяет одновременно выполнять несколько обменов, например, обеспечивает доступ процессора к внутренней памяти. Кроме того, она дает возможность вести передачу данных из внешней памяти на порты CCBR0 или CCBR1 с использованием канала DMA.
Ядра синхронно исполняют один поток команд в режиме SIMD. Данные, которые должны обрабатываться параллельно, снабжены описателем poly.
Процессор поддерживает для каждого потока его контекст. Если PE- ядра выполняют длительный ввод-вывод, то процессор должен переключиться на другой поток. При этом потоки имеют приоритеты, и готовый поток с более высоким приоритетом прерывает выполнение потока с более низким. Потоки синхронизируются друг с другом и контроллерами ввода-вывода через аппаратные семафоры.
Семафоры представляют собой специальные регистры, значения которых увеличиваются или уменьшаются с помощью неделимых атомарных команд — соответственно, signal и wait. Если wait выполняется над семафором с нулевым значением, то выполнение команды приостанавливается до тех пор, пока не будет исполнена команда signal над этим семафором в другом треде или устройстве. Операции над семафорами способны выполнять и аппаратные блоки, например, контроллеры ввода-вывода.
Условное выполнение команд в PE поддерживается poly-командами перехода: if, else, endif и др. Они управляют значениями битов разрешения. Например, при выполнении команды if сравнения двух операндов во всех PE происходит следующее: в тех PE, где есть совпадение, в вершину стека будет помещена "1", а в тех, где обнаружено несовпадение, в вершину стека помещается "0". Соответственно, эти PE будут или не будут выполнять последующие команды — вплоть до команды endif, которая "вытолкнет" из стека значение, занесенное командой if. Стек имеет фиксированный размер, поэтому необходимо следить за его переполнением.
Команды чтения и записи из локальной памяти PE в регистры также могут выполняться или нет в зависимости от значения разрешающего бита. Для безусловного выполнения обмена между памятью и регистрами введены специальные команды forced load и forced store.
Канал ввода-вывода PE включает в себя контроллер и один или несколько каналов прямого доступа. Контроллер интерпретирует команды ввода-вывода и взаимодействует с тредами посредством семафоров. Обмен между локальной памятью PE и внешними устройствами выполняется путем программируемого ввода-вывода или с использованием каналов прямого доступа в локальную память. Каждый процессор может читать свою часть данных или выполнять общее чтение — с "нарезкой" одинаковых блоков для каждого процессора.
Разработанный для низкопотребляющих систем, данный процессор сочетает управление тактовой частотой, обычное для встраиваемых систем, с относительно низкой тактовой частотой. Управление частотой позволяет регулировать производительность приложений при работе в условиях определенного энергопотребления и теплового окружения.
CSX700 поддерживается профессиональной средой разработки (SDK) на основе технологии Eclipse с визуальными средствами отладки приложений, базирующейся на оптимизированном компиляторе ANSI C с расширениями для параллельного программирования. В дополнение к стандартной библиотеке С идет набор оптимизированных библиотек с такими функциями, как БПФ, BLAS, LAPACK и др.
167-ядерная вычислительная платформа (далее — процессор), разработанная в Калифорнийском университете в Дэвисе, реализована в кремнии фирмой STMicroelectronics по 65-нм технологическому циклу. Данный процессор предназначен прежде всего для цифровой обработки сигналов, коммуникационных функций, мультимедийных приложений. Процессор содержит 164 программируемых ядра с динамическим управлением напряжением питания и тактовой частотой, три специализированных процессора, три буфера разделяемой памяти по 16 Кбайт. Все компоненты процессора тактируются собственными независимыми генераторами и соединены специальной внутрикристальной сетью. Структурная схема процессора представлена нарис.27.9. Каждое из ядер имеет 16-разрядные шины данных, 40-битный аккумулятор, независимый тактовый генератор с возможностью останова.
Каждое ядро имеет память команд в 128 35-битных слов, 128 слов 16-разрядной памяти данных, два 16-разрядных FIFO-буфера по 64 слова, одновыходной шестиуровневый конвейер RISC. RISC-ядра поддерживают более 60 базовых инструкций, включая байтовое сложение/вычитание, вычисление минимума/максимума и абсолютных значений, переходы, возвраты из подпрограмм, инструкции условного выполнения, циклы, блок с плавающей точкой. Об этом говорит сайт https://intellect.icu . Задача вычисления квадратного корня (CORDIC) выполняется за 216 циклов .
Процессор БПФ может динамически переключаться между вычислением прямого и обратного преобразования Фурье с количеством отсчетов от 16 до 4096 путем вычисления комплексной 4- или 2-точечной "бабочки" за цикл.
Конфигурируемый Витерби-процессор содержит 8 ACS-модулей и может осуществлять декодирование кодов вплоть до длины 10.
Процессор детектора движения поддерживает несколько фиксированных и программируемых поисковых алгоритмов, отвечающих алгоритму H.264, выполняет более 14 миллиардов операций (SADs) в секунду на частоте 880 МГц.
Ядра процессора обмениваются данными посредством конфигурируемых связей между соседними процессорами и длинных связей. Связи являются циклически переключаемыми и статически конфигурируемыми, что хорошо согласуется с технологией локальной синхронизации, используемой в процессоре.
Рис.27.9. Структурная схема 167-ядерного вычислительного массива
Структура связей включает два входа вычислительного ядра и одиночный выход, который динамически подключается к восьми выходам ячейки. Каждая связь содержит 16-разрядную шину данных, сигнал синхронизации источника, разрешающий сигнал (стробирующий) и сигнал запроса на смену направления, используемый для контроля потока. Ограниченные только искажениями тактового сигнала, связи могут быть сконфигурированы для передачи данных сквозь процессор в выбранном выделенном канале без привлечения промежуточных процессоров и безотносительно их текущих напряжений питания и тактовых частот (рис.27.10). Данные могут быть помещены в конвейер в каждой ячейке для достижения полной скорости при передачи на длинные расстояния или передаваться напрямую, если дистанция мала или тактовая частота источника данных мала . Такие меры снижают общую задержку передачи данных.
Для уменьшения рассеяния энергии, когда ядра не полностью загружены, ядра могут менять собственное напряжение питания и тактовую частоту. Ядра меняют напряжение питания, подключая свои питающие выводы (VddCore) к одной из двух глобальных шин питания. Также возможно отключение линий VddCore неиспользуемых процессоров от питающих глобальных шин (уменьшая таким образом потребление ядра более чем в 100 раз).
Энергопотребление отдельного ядра при полной загрузке на частоте 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 мВт для Витерби).
Процессор Cell представляет собой мощную асимметричную многоядерную процессорную систему. Состоит из процессорного элемента Power, чаще всего выполняющего управляющие функции, и из восьми синергичных процессорных элементов, выполняющих основную вычислительную работу. Ядра объединены при помощи двунаправленной кольцевой шины.
Для борьбы с узким местом при доступе в основную память в процессоре Cell в процессорном элементе PPE применяется двухуровневый кэш и аппаратная поддержка двух потоков. В элементах SPE присутствует локальная оперативная память объемом 256 Кбайт и высокопрозводи-тельный блок прямого доступа в память.
Процессор Cell — совместная разработка компаний Sony, Toshiba и IBM, которые организовали альянс, известный как «STI». Разработка архитектуры и первые прототипы были созданы в STI Design Center за четырехлетний период с начала марта 2001 года.
Первое коммерческое применение процессора Cell — в игровой консоли Sony PlayStation 3. Toshiba использует Cell в своих домашних HDTV-кинотеатрах.
Характеристики
Cell представляет собой процессор с архитектурой CBEA (CBEA (Cell Broadband Engine Architecture) — архитектура, расширяющая 64-битную архитектуру), построенный на основе 64-битной архитектуры Power, которая направлена на распределенную обработку данных и выполнение приложений, предназначенных для обработки больших объемов мультимедиа-данных (рис.27.11).
Процессор состоит из набора модулей, объединенных при помощи высокоскоростной шины (EIB), которая представляет собой две пары колец (96 байт за такт), работающих на половине частоты процессора. Пропускная способность канала ввода данных — 35 Гб/с, канала вывода данных — 40 Гб/с, объединенная пропускная способность канала обмена данными с общей памятью — 25,6 Гб/с.
В состав процессора входит 8 одинаковых процессорных модулей (SPE), содержащих процессорное ядро (SPU), локальную память модуля (LS), один процессорный модуль (PPE), содержащий 64-битный процессор, кэши первого и второго уровней, два реконфигурируемых некогерентных интерфейса ввода-вывода (BIC), интерфейс памяти (MIC).
Рис.27.11. Блок-схема мультипроцессора Cell
Процессорный элемент Power (PPE) имеет 64-разрядную архитектуру, с упорядоченной выдачей двух инструкций одновременно (SMT), кэш данных и кэш инструкций первого уровня объемом 32 Кб, объединенный кэш второго уровня объемом 512 Кб.
Простые арифметические операции выполняются и отправляют далее свои результаты за два такта. Задействован режим отложенного выполнения на конвейере операций с фиксированной запятой, благодаря чему команды загрузки также завершаются и отправляют свои результаты за два такта. Команда двойной точности с плавающей запятой выполняется за десять тактов.
PPE поддерживает обычную иерархию кэш-памяти; имеются кэши первого уровня для команд и данных емкостью по 32 Кбайт и кэш-память второго уровня емкостью 512 Кбайт. Кэш второго уровня и кэши преобразования адресов используют таблицы управления заменой, чтобы разрешить программе направлять данные из определенных диапазонов адресов в конкретное подмножество кэша. Такой механизм позволяет блокировать данные в кэше, если размер диапазона адресов равен размеру множества. Он может служить и для предотвращения перезаписи данных в кэше: данные, применяемые только один раз, направляются в определенное множество кэша. Все это повышает эффективность процессора и усиливает контроль над процессором, осуществляемый в масштабе реального времени.
Процессорный блок состоит из 3 блоков: IU (Instruction Unit); XU (eXecution Unit); VSU (Vector Scalar Unit) (рис.27.12). Узел команд IU (Instruction Unit) отвечает за выборку, дешифровку, выдачу и завершение команды, а также за выполнение команд перехода. Узел операций с фиксированной запятой XU (Fixed-Point eXecution Unit) выполняет все команды с фиксированной запятой и команды загрузки/сохранения. Узел векторно-скалярных команд VSU (Vector Scalar Unit) отвечает за векторные команды и команды с плавающей запятой.
При такой "сдвоенной" выдаче возможны любые комбинации, кроме двух команд к одному и тому же узлу, а также следующих исключений. Простая векторная, комплексная векторная, векторная с плавающей запятой и скалярная с плавающей запятой арифметические команды не могут быть сдвоены с командой того же типа (например, не допускается выдача простой векторной команды в одном такте с комплексной векторной). Однако эти команды могут быть сдвоены с любой формой команды загрузки/сохранения, перехода с фиксированной запятой или перестановки элементов вектора. Очередь готовых к выдаче команд в узле VSU отделяет конвейеры векторных команд и команд с плавающей запятой от остальных конвейеров. Это позволяет выдавать такие команды вне очереди других команд.
Рис.27.12. Структурная схема процессорного элемента PPE
Узел XU состоит из двух файлов регистров общего назначения 32x64 бит (по одному на поток), блока выполнения команд с фиксированной запятой и блока загрузки/сохранения. В последний входят кэш данных первого уровня, кэш преобразования адресов, 8-элементная очередь кэш-промахов и 16-элементная очередь хранения. Он поддерживает неблоки-руемый кэш данных первого уровня, который позволяет процессору обращаться к другой области кэш-памяти даже в процессе замены блока, вызвавшего кэш-промах (hit under miss cache).
Узел VSU состоит из двух файлов регистров 32x64 бит (по одному на поток) и конвейера двойной точности с десятью стадиями. Узел работает со 128-разрядным потоком данных. Он имеет четыре узла для выполнения простых и комплексных векторных операций, операций одинарной точности с плавающей запятой и операций перестановки. В нем имеются два 32-элементных 128-разрядных векторных файла регистров (по одному на поток), а все команды являются 128-разрядными SIMD-командами с изменяющейся шириной элементов (2x64, 4x32, 8x16, 16x8 и 128x1 разрядов).
SPE (Synergistic Processor Elements) представляет собой отдельный процессор, выполняющий отдельное приложение, но разделяемая когерентная память и большой набор команд для DMA позволяет организовать эффективных обмен данными между SPE (рис.27.13).
Рис.27.13. Структурная схема процессорного элемента SPE
Выборка инструкций, а также инструкции загрузки/сохранения работают только в пределах адресного пространства локальной памяти SPE. Большой объем регистрового файла служит более полному заполнению вычислительного конвейера. В каждом SPE есть контроллер потока данных памяти (Memory Flow Controller — MFC), в состав которого входит DMA-контроллер .
SPE может настроить DMA для обмена данными с локальной памятью другого SPE, а также для обмена данными с общей памятью.
В процессорном элементе SPE реализована новая архитектура системы команд, энергопотребление и производительность которой оптимизированы для вычислительных и мультимедийных приложений. SPE работает с локальной памятью объемом 256 Кбайт, которая хранит команды и данные. Они передаются между этой и системной памятью с помощью асинхронных когерентных команд прямого доступа, которые выполняются блоком управления потоком данных, входящим в состав любого SPE.
Каждый SPE поддерживает до 16 ожидающих выполнения команд прямого доступа к памяти (DMA). В этих когерентных командах применяются такие же, как в PPE, преобразование адресов и защита, управляемые таблицами страниц и сегментов из архитектуры Power Architecture, поэтому адреса можно передавать между PPE и SPE. Вследствие этого операционная система способна использовать общую память и согласованно управлять всеми системными ресурсами.
Появление локальной памяти вводит новый уровень иерархии памяти — в дополнение к регистрам, которые обеспечивают локальное хранение данных в большинстве процессорных архитектур. Это обеспечивает механизм борьбы с проблемой "стена памяти" (memory wall), поскольку позволяет одновременно выполнять множество транзакций с памятью без глубокой спекуляции, которая сильно снижает эффективность других процессоров. Латентность основной памяти приближается к 1 тыс. тактов, поэтому те несколько тактов, которые нужны для настройки команды DMA при обращении к ней, становятся вполне приемлемой дополнительной нагрузкой. Очевидно, что такая организация процессора удобна для обработки мультимедийных потоков. А поскольку локальная память достаточно велика для хранения большего, чем просто ядро (streaming kernel) потока, возможна поддержка самых разных моделей программирования.
Локальная память — самый крупный компонент SPE, поэтому была очень важна ее эффективная реализация. Для минимизации площади использована однопортовая ячейка SRAM. Локальная память имеет узкий (128-разрядный) и широкий (128-байтовый) порты чтения и записи. Это обеспечивает высокую производительность, хотя она и должна выступать в роли арбитра по отношению к операциям чтения, записи, выборки команд, загрузки и сохранения с прямым доступом. Широкий порт служит для прямого чтения и записи в память, а также для упреждающей выборки команд.
Поскольку типичная 128-байтовая операция прямого чтения/записи требует 16 тактов процессора для пересылки данных по внутренней когерентной шине (даже когда операции прямого чтения/записи выполняются без ограничений на пропускную способность), семь из каждых восьми тактов остаются доступными для операций загрузки, сохранения и выборки команд. Аналогичным образом команды выбираются по 128 байтов за раз, и нагрузка на локальную память остается минимальной. Наивысший приоритет отдан командам DMA, за которыми следуют операции загрузки и сохранения, а операция упреждающей выборки команды выполняется, когда есть свободный такт. Существует специальная команда "без операции", позволяющая при необходимости принудительно обеспечить доступность слота для выборки команды.
Блоки выполнения операций в SPE работают со 128-разрядным потоком данных. Достаточно большой файл регистров из 128 элементов позволяет компилятору переупорядочить команды и компенсировать ла-тентность их выполнения. Имеется только один файл регистров, а все команды являются 128-разрядными SIMD-командами с изменяющейся шириной элемента (2x64, 4x32, 8x16, 16x8 и 128x1 разрядов).
За один такт может быть выдано до двух команд; один слот выдачи команды поддерживает операции с плавающей и фиксированной запятой, а другой обеспечивает загрузку/сохранение, операции перестановки байтов и перехода. Простые операции с фиксированной запятой занимают два такта, а команды одинарной точности с плавающей запятой и команды загрузки требуют шести тактов. Поддерживаются также двухпоточные SIMD-команды двойной точности с плавающей запятой, но максимальная скорость их выдачи составляет семь тактов на команду. Все остальные команды полностью конвейеризованы.
Настройка DMA-контроллера, а также наличие очередей запросов позволяет SPE работать параллельно с работой DMA. Именно таким образом удается избежать простаивания SPE в результате задержки получения данных из основной памяти.
Несмотря на то, что PPE и SPE имеют общую память, между ними есть четкое разделение функций. PPE оптимизирован для решения задач управления и смены контекста, в то время как SPE — для решения вычислительных задач.
PPE получает доступ к общей памяти посредством инструкций загрузки/сохранения (через иерархию кэшей), перемещающих данные между регистровым файлом PPE и основной памятью.
SPE получает доступ к общей памяти посредством DMA-передач, перемещающих данные между локальной памятью SPE и общей памятью CELL.
Архитектура ATAC основывается на ячеистом принципе построения многоядерных процессоров, с тем отличием, что ячейками в данном случае выступают кластеры, которые состоят из нескольких вычислительных ядер, объединенных нанокристалльной сетью. Ячейки объединяются широковещательной оптической шиной. Интересным моментом является интеграция оптоэлектронных модулей и оптических каналов в рамках КМОП-технологии. Предусматривается возможность масштабирования количества ядер до нескольких тысяч.
Архитектура АТАС объединяет оптическую широковещательную сеть с ячеистой (плиточной) мультиядерной архитектурой для значительного увеличения производительности, энергетической масштабируемости и упрощения программирования.
Существующие многоядерные архитектуры не позволяют следовать закону Мура для некоторых важных классов параллельных приложений. Ограничения накладываются стоимостью взаимодействий ядер и скоростью обмена с внешней памятью. Целью проекта АТАС является решение этих проблем путем внедрения технологии оптической связи.
Вычислительный процесс можно представить как некий информационный поток, захватывающий ядра процессора, распространение инструкций и передачу значений между ядрами. По мере увеличения количества процессоров будет возрастать задержка передачи данных между отдаленными ядрами. Эффект может увеличиваться, если взаимодействие между парами ядер будет требовать уже занятых коммуникационных ресурсов. Это принципиально для приложений, работающих на глобальных взаимодействиях (широковещательная рассылка или синхронизация кэшей). Помимо потери производительности глобальные коммуникационные операции также ведут к значительным энергетическим затратам. Мультипроцессоры с небольшим количеством ядер используют для внутренних соединений шину. Это простое решение, как известно, не масштабируется на большое количество ядер. Системы с большим количеством ядер применяют связи типа "точка-точка", где управление коммуникациями осуществляется программно.
Как правило, для приложений с нерегулярной, не предсказуемой заранее или широковещательной структурой связей переход к процессорам с тысячами ядер на кристалле может быть крайне затруднен или невозможен. Масштабируемости приложений также мешают существующие программные техники. Программисты должны распределять вычисления по пространству и по времени, а также управлять взаимодействием ядер, если они хотят достичь высокой производительности для данной аппаратной архитектуры. В зависимости от используемой внутрикристальной сети скоординировать действия сотен и тысяч процессоров может быть крайне сложно.
Такие действия, как доставка инструкций ядрам, могут создать сложности даже для SIMD-архитектур. Существующие техники программирования не предусматривают оптимизации межпроцессорных коммуникаций для достижения высокой производительности. Широковещательные сообщения и сообщения "все-ко-всем", используемые в протоколах синхронизации, согласования или распределения инструкций, не имеют прямой аппаратной поддержки и эмулируются путем многократных передач типа "точка-точка".
Процессорная архитектура АТАС предусматривает решение этих проблем путем организации оптической сети вместо электрических каналов и шин. Проект нацелен на интеграцию оптоэлектронных компонент со стандартными КМОП-схемами. АТАС предусматривает частотное мультиплексирование — передачу сигналов на различных длинах волн — до 64 частотно разнесенных каналов. Оптические линии помимо прочего передают данные на более высоких скоростях, чем электрические линии (функция коэффициента преломления света в сравнении с задержками RC-цепей, диэлектрик, окружающий связи, и задержка, необходимая для ретрансляции электрического сигнала).
Оптические сигналы также могут требовать меньше мощности, чем электрические сигналы (особенно для длинных расстояний), за счет меньших потерь и отсутствия необходимости повторения сигналов.
Рис.27.14 АТАС-архитектура
Архитектура АТАС (рис.27.14) базируется на возможности нанооптики создавать высокопроизводительные, глобальные накристальные сети с низкой задержкой распространения сигнала. Сеть состоит из оптического канала, охватывающего кристалл. Оптические хабы передают данные при помощи модуляции лазерного луча источника и направления его в сеть. Свет быстро распространяется по каналу и становится доступным для приема остальным хабам. Таким образом, любое сообщение в сети может быть эффективно передано всем ее участникам. Фильтрация на приемном хабе позволяет ограничить количество получателей сообщения.
При использовании новых оптических технологий АТАС процессор имеет потенциальную возможность уменьшить трудность программирования, повысить энергоэффективность, увеличить пропускную способность как внешних, так и внутренних шин данных и соответственно предусматривает масштабирование мощности .
Ключевыми элементами технологии, присутствующими на АТАС- кристалле, являются: так называемый "оптический источник питания" — источник света, волноводы для передачи света, модуляторы для помещения световых сигналов в волноводы, детекторы для приема сигналов. В АТАС источником света (оптическим питанием) служат внешние лазеры. Световой поток направляется в накристальные световоды. Энергопотребление внешнего лазера — примерно 1,5 Вт с выходом примерно 0,2 Вт в виде оптического излучения, попадающего в световод. Для использования схемы разделения частот предполагается наличие нескольких источников лазерного излучения. Световоды представляют собой встроенные каналы, по которым распространяется свет. Они направляют и распределяют при помощи комбинирования материала с большим коэффициентом преломления в центре и с меньшим по краям канала. Световоды могут быть изготовлены как из кремния, так и из полимера. С учетом того, что кремниевые световоды могут быть размещены на кристалле более компактно и что модуляторы для кремниевого световода намного более компактные, чем для полимерного, в АТАС предполагается создание кремниевых световодов. Тем более что кремниевые световоды могут быть изготовлены в стандартном КМОП-процессе.
Требуются световоды с потерями менее, чем 0,3 дБ/см и емкостью по мощности не менее 10мВт. И то и другое требование в кремнии достижимо. Для обмена информацией используются следующие компоненты: источник света, модулятор, оптический фильтр, электронный драйвер модулятора. Оптический фильтр представляет собой кольцевой резонатор(рис.27.15), настроенный на определенную длину волны, — определяется размерами резонатора (также им определяется расстояние между длинами волн для схемы WDM). Дальнейшая настройка может быть осуществлена путем изменения температуры резонатора или его заряда. Модулятор представляет собой оптическое устройство, которое формирует цифровой сигнал, изменяя коэффициент поглощения. Модуляторы применяются для преобразования электрического сигнала в оптический — своего рода оптический коммутатор, помещающий оптический сигнал в световод.
Модуляторы, требуемые для архитектуры АТАС, должны иметь параметры, которые ориентировочно будут достигнуты в 2012 году: потери на включение — 1 дБ, площадь — менее 50 кв. мкм, скорость модуляции — 20 Гб/с, энергия, необходимая на переключение, — менее 25 фДж и общее потребление — порядка 25 мкВт/ГГц. На приемной стороне для приема сигнала используется дополнительный компонент — оптический фильтр для приема сигнала и преобразования его в электрический вид.
Оптический фильтр (кольцевой резонатор) используется для извлечения света нужной длины волны из световода и транспортировки его к фотодетектору. Так же как и модулятор, оптический фильтр должен быть настроен на конкретную длину волны. Фотодетектор в данном случае должен быть сверхчувствительным приемником. Для архитектуры АТАС требуются следующие параметры: для 11-нм технологичного процесса — чувствительность более 1 А/Вт, ширина полосы пропускания более 3 дБ на частотах более 20 ГГц, занимаемая площадь — менее 20 кв. мкм, паразитная емкость менее 1 фФ. При данной технологии выход детектора нуждается в усилении. Как правило, начиная с технологии 22 нм, меньшая емкость входа транзистора позволяет фотодетектору управлять цифровыми схемами. На рисунке 27.16 вышеперечисленные компоненты изображены вместе. Для одного ядра показана передающая часть, для другого — принимающая.
Рис.27.16 Схема оптической передачи между двумя ядрами
Архитектура АТАС представляет собой "плиточную/ячеистую" многоядерную архитектуру, сочетающую технологию электрических соединений с оптической накристальной сетью. Применяется связанный двумерный массив простых вычислительных ядер, каждое из которых содержит одиночный или двойной RISC-процессор и кэш данных первого уровня. ATAC использует протокол распределенных директорий. Часть распределенной директории расположена в каждом узле.
Ядра в АТАС связаны двумя сетями — электрической EMesh и оптико-электрической ANet. ENet — обычная двумерная электрическая сеть типа "точка-точка", аналогичная существующим в обычных мультипроцессорах. EMesh идеальна для предсказуемых, близких взаимодействий. ANet предлагает технологию для организации оптической накристальной сети, основанную на технологии оптической памяти. Ядро сети ANet составляет ONet (рис.27.17). Сеть ANet содержит 64 оптически соединенных кластера, включающих в себя небольшие электрические структуры, служащие для взаимодействия с оптической сетью, — это сети ENet и BNet.
Рис.27.17. Организация связи между модулями АТАС архитектуры на различных уровнях
ANet используется обычно для осуществления передачи данных между удаленными ядрами или для глобальных передач в рамках сети (широковещательные передачи).
Указанные ограничения могут быть обойдены использованием нескольких волноводов и распределением каналов передачи данных между ними. Как правило, при этом площадь, необходимая для реализации световода, может также стать ограничением. Оптические компоненты сети и сама сеть могут быть вынесены на отдельный уровень КМОП-стека и накладываться на электронные компоненты, к которым они подключаются. К примеру, на кристалле площадью 400 мм2 может разместиться оптическая сеть с 384 хабами. Для рассматриваемого случая ONet соединяет 64 одинаковых кластера при помощи 64-битной оптической шины, проложенной по всему кристаллу. Каждый кластер содержит 16 вычислительных ядер и хаб сети ONet. Внутри кластера ядра связаны между собой и с оптическим хабом двумя сетями — ENet и BNet. ENet используется только для передачи данных от ядер кластера к хабу ONet. BNet — широковещательная электрическая сеть для передачи данных от оптической сети вычислителям.
Более детально процесс передачи данных с применением сети ANet показан на рис. 27.18.
Рис.27.18. Процесс передачи данных с использованием сети ANet
Сообщения ядер достигают хаба, который, в свою очередь, пересылает их в сеть ONet на своей уникальной длине волны. Это позволяет двум хабам передавать данные одновременно без интерференции. ONet состоит из нескольких световодов: 64 для данных, 1 для управления и несколько для метаданных. Световоды метаданных служат для указания типа передаваемого сообщения (чтение памяти, данные и пр.) или как тэг сообщения (для устранения двусмысленности при нескольких сообщениях от одного источника). Хаб приемника принимает оба значения последовательно в FIFO-буфер, связанный с конкретным отправителем. Затем данные пересылаются вычислительным ядрам через BNet. Оптическая часть позволяет эффективно реализовывать широковещательную передачу с большей скоростью и меньшими затратами на регенерацию сигнала.
Ядра в АТАС — простые процессоры с кэшем данных и команд первого уровня. Когерентность кэшей поддерживается при помощи протокола, известного как ACKwise. Кэши поддерживают когерентность при помощи протокола распределенных директорий MOESI.
Директории распределены равномерно между ядрами, более того, каждое ядро является "домом" для определенного пула адресов (распределяется статически). Рис 27.19 представляет три ядра, находящиеся в различных кластерах. Каждое ядро содержит процессор, кэш данных и директории кэша. Для примера (рис. 27.19) предположим, что обращение к директории кэша всегда приводит к промаху (необходимости синхронизации кэша). Стрелками на рисунке обозначены типовые операции по согласованию кэшей: промах по записи по адресу А ядром а. В данном примере ядро б является "домом" адреса А, и начальное состояние адреса А в кэше — "занято" (O-state) ядром с. Трафик по согласованию кэшей передается по сети ANet. Последовательность действий для согласования кэшей для данного случая будет следующей:
Рис.27.19. Пример согласования кэшей различных ядер
1. процессор в ядре а пытается осуществить запись по адресу А и получает ошибку записи;
2. ядро а посылает запрос на запись ядру б, к которому относится адрес А;
4.
o ядро с пересылает данные адреса А ядру а и обновляет состояние кэша для этого адреса до "недействительный";
o ядро с посылает ACK-сигнал в директорию ядра б;
5. линия кэша, содержащая адрес А, обновляется на ядре а, и линия получает статус "модифицирована";
6. процессор ядра а производит запись по адресу А.
Вполне допустим вариант использования оптических интерфейсов как на ввод-вывод, так и для шины памяти. Это даст преимущество в пропускной способности и потребляемой мощности.
Каждый оптический вывод может поддерживать до 64 длин волн со скоростями до 20 ГГц. Скорость передачи данных будет ограничена скоростью работы электронных компонент, управляющих оптическим потоком. Предполагается, что скорость в 5 ГГц вполне может быть достигнута. При этом полоса пропускания оптического вывода может достигать 320 Гб/с (40 Гб/с). Для сравнения, 64-битная DDR3 имеет пиковую пропускную способность 12,8 Гб/с. Поскольку оптическая шина памяти состоит только из одного световода, уменьшается количество выводов, и это при увеличении пропускной способности практически в три раза. Все это де- лает применение оптического ввода-вывода востребованным для АТАС- процессоров с несколькими контроллерами памяти.
Архитектура ориентируется на 11-нм техпроцесс, который, по мнению ее разработчиков, может быть реализован к середине десятилетия (ориентировочно 2012-2016 гг.).
1. Структура процессора Tile64.
2. Организация кэш-памяти в процессоре Tile64.
3. Коммутатор сети iMesh.
4. Структура процессора CSX700.
5. Структура MTAP-блока в процессоре CSX700.
6. 167-ядерная вычислительная платформа — AsAP-II.
7. Общая структура процессора Cell.
8. Структурная схема процессорного элемента PPE в Cell.
9. Структурная схема процессорного элемента SPE в Cell.
10. Альтернативная технология построения многоядерных систем на кристалле — ATAC.
11. Основные идеи архитектуры ATAC.
13. Структура межъядерных связей в архитектуре АТАС.
14. Передача данных и согласование кэш-памяти в архитектуре АТАС.
Надеюсь, эта статья про многоядерные процессоры для встраиваемых приложений, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое многоядерные процессоры для встраиваемых приложений и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Компьютерная схемотехника и архитектура компьютеров
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Компьютерная схемотехника и архитектура компьютеров
Термины: Компьютерная схемотехника и архитектура компьютеров