Реконфигурируемые архитектуры

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

Выбор вычислительных элементов

Замечания о выборе вычислительных элементов

Программируемость вычислительных элементов: Определяющие факторы

Что такое реконфигурируемые вычисления?

Используют реконфигурируемые аппаратные средства: (пространственно-программируемые соединения аппаратных процессорных элементов), привязанные к приложению:

Реконфигурируемый процессор - это “железо”, настроенное на специфику задачи. Прямое отображение специфичного потока данных, управления. Схемы “адаптируются” по мере изменения требований задачи.

Пространственные и временные вычисления

Пространственные вычисления - слева - используют оборудование.

Временные вычисления используют программы, выполняющиеся на процессоре.

Стандартные программируемые процессоры и конфигурируемые устройства

Стандартные программируемые процессоры

Конфигурируемые устройства (типа FPGAs):

Зачем нужны реконфигурируемые вычисления?

Преимущества устройств конфигурируемой логики

Нет жесткой неизменяемой настройки и возможна разработка новых приложений после производства

Экономия от масштаба (большая отдача от вложения, фиксированная стоимость разработки)

Время выпуска на рынок короче, чем для ASIC (возможна работа с изменяющимися требованиями и стандартами, новыми идеями)

Потенциальные недостатки:

Гораздо меньшая эффективность (площадь чипа, производительность, потребление) по сравнению с ASIC

Необходимость верификации корректности

Преимущества конфигурируемого аппаратного обеспечения над пространственным

Недостатки пространственного/конфигурируемого HW

Области приложений конфигурируемых вычислений

В общем это многие типы приложений с малыми вычислительно интенсивными “ядрами” (внутренние циклы?), которые более эффективно реализовывать аппаратно.

Технологические тенденции, влияющие на конфигурируемые вычисления

В итоге имеем вопрос - какие комбинации вариантов возможны и как это всё эффективно использовать?

Архитектуры конфигурируемых вычислений

Компьютер с гибридной архитектурой

Сочетает процессоры общего назначения (GPPs) и реконфигурируемые устройства (чаще всего FPGA чипы, или программируемые массивы простых процессоров).

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

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

Гибридно-реконфигурируемый компьютер: Уровни связности

Различные уровни связности в гибридной реконфигурируемой системе.Реконфигурируемая логика выделена серым.

Программируемые микросхемы: FPGA

Программируемые вентильные матрицы (Field-Programmable Gate Array,FPGA) впервые представленные Xilinx (1986). Изначально предполагавшаяся область приложений: верификация аппаратного дизайна, быстрое прототипирование цифровых устройств, и потенциальная замена ASIC. Программируемые схемы могут создаваться или удаляться путем посылки сигналов в вентили логических элементов (битовый конфигурационный поток). Встроенная решетка из схем, организованных в столбцы и строки, позволяет разработчику соединять логические элементы между собой или с внешней памятью или микропроцессором. Логические элементы группируются в блоки, производящие базовые бинарные операции типа AND, OR и NOT, называемые вентилями (gate)

Отдельные фирмы, включая Xilinx и Altera, разработали устройства, содержащие 10,000,000 или больше одинаковых вентилей. В добавление к “ общецелевым” или обобщенным FPGA, были разработаны более специализированные семейства FPGA, содержащие аппаратно зашитые функциональные устройства (например, MAC устройства), предназначенные для специализированных областей вроде DSP приложений.

Программируемые вентильные матрицы (Field Programmable Gate Arrays, FPGA)

Чип содержит много малых строительных блоков, которые могут быть сконфигурированы для выполнения различных функций. Эти строительные блоки известны также как Блоки конфигурируемой логики (Configurable Logic Blocks, CLB). FPGA обычно «программируются" с помощью чтения потока конфигурационной информации, идущей извне чипа Обычно программируемы внутрисхемно (in-circuit) (подход, противоположный EPLD –электрически программируемым логическим устройствам (Electrically Programmable Logic Devices) – которые стандартно программируются путем вынимания их из схемы и применения Flash программатора) Применяются специальные последовательные памяти.

25% вентилей FPGA могут быть использованы приложением. Оставшаяся часть управляет конфигурированием, соединениями, и т.д.

Имеется 5-10X снижение частоты по сравнению с полностью аппаратно настроенными реализациями (ASICs). Обычно производятся с использованием технологии SRAM. Поскольку FPGA «действуют» как SRAM или логика, они теряют свою программу при потере питания. Биты конфигурации приходится перезагружать при включении. Обычно перезагрузка идет из Flash, или закачивается из памяти через шину I/O.

Табличные функциональные преобразователи (Look-Up Table,LUT)

K-LUT – таблица функций с K аргументами

Любая функция с K аргументами содержится в программируемой таблице функций

Стандартная FPGA плитка

Обобщенная архитектура маршрутизации FPGA островного типа (island-style)

Сравнение вычислительной плотности FPGA и RISC процессоров

Использование площади в процессоре и FPGA

Программирование/конфигурирование FPGA

  1. Спецификация аппаратного дизайна: аппаратный дизайн для реализации выбранной аппаратно-связанной вычислительно-интенсивной части приложения специфицируется с помощью RTL/HDL/логических диаграмм.
  2. Синтез и размещение: Для конвертирования аппаратного дизайна в формат netlist используют специфические для устройства программные утилиты, предоставленные производителем.
    1. Дизайн разделяется на логические блоки (CLBs) : LUT- отображение
    2. Потом находят хорошее (3) размещение для каждого блока (4) и проводят между ними маршрутизацию
  3. Затем генерируется последовательный битовый поток смены конфигураций (5) и скармливается собственно FPGA устройствам
  1. Конфигурационные биты загружаются в «длинный регистр сдвига" на FPGA.
  2. Выходами этого регистра сдвига являются управляющие проводники, которые контролируют поведение всех CLBs на чипе.

Программирование/конфигурирование FPGA

Инструменты для реконфигурируемого процессора (поток аппаратно/программного совместного дизайна)

Непростые моменты в разработке конфигурируемых приложений

Уровни реконфигурируемых вычислительных элементов

Проблемы при использовании FPGA для реконфигурируемых вычислений

Модели реконфигурируемых вычислений (RC) с гибридной архитектурой

Не затронуто логикой массивов: сопряжение (interfacing)

Выделенный I/O процессор.

Расширение инструкций: (Сильная связность)

Модели RC с гибридной архитектурой: Interfacing

Пример: Интерфейс/Периферийные устройства

Triscend E5

Процессор Atmel AT94 – ядро AVR + FPGA

Интерфейс между ядром процессора и FPGA содержит 8 входов и 8 выходов данных, 16 линий разрешения выбора для FPGA и 16 линий прерывания от FPGA к ядру процессора

AT94K

Структура одной из 5-ти плоскостей FPGA AT94

Модели RC с гибридной архитектурой: IO процессор

Первая попытка расширения инструкций: PRISM (Brown, 1991)

Результаты PRISM-1

Прямое ускорение ядра (время на IO конфигурации не включено?)

Модели RC с гибридной архитектурой: VLIW/программируемая модель

Похожа на расширение инструкций. Один тег (адрес, инструкция) управляет большим числом более простых операций. Может синтезировать в одну последовательность большое число различных тегов/операций.

REMARC (Stanford, 1998)

Массив “нано-процессоров”: 16b, 32 инструкции каждый. VLIW-подобное исполнение, глобальный sequencer.

Сопроцессорный интерфейс (по аналогии с GARP). Нет прямого отображения массив память.

Архитектура REMARC

Сопроцессор выдачи rex. Глобальный контроллер упорядочивает нано-процессоры. Несколько тактов (микрокод). Каждый нано-процессор имеет свой I-store (VLIW) нанопроцессор.

Здесь массив содержит 8 x 8 = 64 нано-процессора

Результаты REMARC’а

Модели RC с гибридной архитектурой

Итого (вместо заключения)

IntellaSyS 24-Core SEAforth processor

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

Внутри - простейший стековый процессор.

Ambric Parallel Processor

Лозунг: от программных инструментов к процессорам!

Ambric - программирование

Всё новое – хорошо забытое старое.

Базовые кирпичики системы – 32-х разрядное RISC ядро, и более сложное DSP-ядро. 8 32-битных регистров. 256 байт локальной памяти. 18 32-х битных регистров, 1К локальной памяти, 64-битовый аккумулятор.

«Половинка» базового вычислительного элемента, содержащего 4 процессора и 4 локальные памяти. Две «половинки» формируют базовый вычислительный элемент (вторая половинка - зеркально отражённая первая).

MathStar

Массив программируемых объектов – FPGA, но уровень абстракции выше. 256 АЛУ (16 бит), 64 МАС, 80 регистровых файлов (64 по 20 бит) в массиве объектов 20х20. 12 банков памяти 2К*76 бит.

Достаточно простые элементы (38 операций в АЛУ, 1-на в МАС). Упрощенный цикл расположения алгоритма на массиве элементов (по сравнению с FPGA).

MathStar изнутри

NVidia G80

GeForce 8800 - 681 миллион транзисторов. На дизайн архитектуры имела влияние разработка мультипроцессора Larrabee фирмой Intel. 768 МБайт памяти на борту. Унифицированная архитектура (массив общих процессоров для потоковой обработки вершин и пикселей, а также других возможных видов данных). Аппаратная поддержка последних новшеств DirectX 10, в том числе и новая шейдерная модель - SM4, генерация геометрии и запись промежуточных данных из шейдеров. 384 бит шина памяти, 6 независимых контроллеров шириной 64 бита, поддержка GDDR4 (1.8Ггц). 128 скалярных (не векторных, внимание!) ALU с плавающей точкой (целочисленные и плавающие форматы, поддержка FP 32бит точности в рамках стандарта IEE 754, MAD+MUL без потери тактов). ALU работают на удвоенной частоте (1.35ГГц для 8800GTX). 32 текстурных блока, поддержка FP16 и FP32 компонент в текстурах. 64 блока билинейной фильтрации (то есть, возможна честная бесплатная трилинейная фильтрация, а также вдвое более эффективная по скорости анизотропная фильтрация).

Возможность динамических ветвлений в пиксельных и вершинных шейдерах - размер блока планирования - 8х4 (32) пикселя. (!)

6 широких блоков ROP (24 пикселя) c поддержкой AA до 16 семплов на пиксель, в том числе при FP16 или FP32 формате буфера кадра (то есть, возможны HDR+AA). Каждый блок состоит из массива гибко конфигурируемых ALU и отвечает за генерацию и сравнение Z, MSAA, блендинг. Пиковая производительность всей подсистемы до 96 MSAA отсчетов (+ 96 Z) за такт, в режиме без цвета (Z only) - 192 отсчета за такт. Запись результатов до 8 буферов кадра одновременно (MRT) 

Очень хорошая масштабируемость архитектуры, можно по одному блокировать или убирать контроллеры памяти и ROP (Всего 6), шейдерные блоки (Всего 8 блоков TMU+ALU).

Чип G80

Чип состоит из 8 универсальных вычислительных блоков (шейдерных процессоров). Единица исполнения команд - блок, в котором сгруппированы 4 TMU и 16 ALU. Все ветвления, переходы, условия и т.д. применяются целиком к одному блоку. Каждый процессор снабжен собственным КЭШем первого уровня, в котором хранятся не только текстуры, как ранее, но и другие данные, которые могут быть запрошены шейдерным процессором. Основной поток данных, например, пиксели или вершины, не кэшируются, а идут потоком. Есть 6 блоков ROP, исполняющих определение видимости, запись в буфер кадра и MSAA (синие, рядом с блоками КЭШа L2), сгруппированные c контроллерами памяти, очередями записи и КЭШем второго уровня. Архитектура способна плавно масштабироваться в обе стороны. Добавление или удаление контроллеров памяти и шейдерных процессоров будет соответствующим образом масштабировать пропускную способность ВСЕЙ системы, не нарушая баланса и не создавая узких мест. (из ixbt.com).

G80 – шейдерный процессор

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

Характеристики производительности

Постепенно, с появлением DX10 шейдерные ограничения уходят в прошлое.

G80 – персональный суперкомпьютер

Специально для программирования чипа разработана Compute Unified Device Architecture – инструменты и библиотеки, позволяющие запускать вычислительно тяжёлые алгоритмы на графической карте В перспективе, центральный процессор будет обрабатывать только события мышки и клавиатуры. От 10х прироста по сравнению с Core 2 Duo 2.66 МГц

AMD Fusion – тогдашний ответ G80

Очень важный и трагический вопрос – 20 лет назад основной деталью компьютера был центральный процессор. Теперь же компьютер «без приличной» видеокарты считается бюджетным и годится только в офис.

AMD: почему бы не интегрировать графику на кристалл? Транзисторов много…

Зачем графическому ядру общаться с процессором через медленную шину PCI-E, пусть они общаются через унифицированный кэш 3-го уровня, а память системы будет общей

Практически одновременно идея была подхвачена Intel, и у последней получилось лучше. Как доказательство - семейство Haswell (2013).

ATI – “Close to Metal” – мы не хуже NVidia

Используем массив параллельных процессоров видеокарты.

Спасибо за внимание!