Плис
Содержание
- 1 Содержимое пакетов уровня транзакций
- 2 Общие вопросы сравнения характеристик ПЛИС
- 3 Программируемая пользователем логика (Или как вы программируете FPGA?)
- 4 Шины с тремя состояниями.
- 5 История развития
- 6 Применение
- 7 Как сделать FPGA майнер своими руками
- 8 Типы ПЛИС
- 9 Применение
- 10 Этапы проектирования
- 11 Применение
- 12 Логическая таблица.
- 13 Этапы проектирования
- 14 Overview
- 15 ОЗУ в ПЛИС.
- 16 FPGA против микроконтроллера (Или зачем использовать FPGA, когда будет работать и микроконтроллер?)
- 17 FPGA in the cloud
- 18 Заключение
Содержимое пакетов уровня транзакций
Рисунок 3 — Пример запроса на запись в память длиной в 1 DWРисунок 4 — Пример запроса на чтение из памяти длиной в 1 DWРисунок 5 — Пример успешного ответа на чтениеРисунок 6— Пример ответа о неподдерживаемом запросеРисунок 7 — Пример заголовка запроса на запись 128 байтТаблица 4 — Перечень сокращений для полей заголовков
№ п. | Обозначение поля | Название поля | Назначение |
---|---|---|---|
1 | TC | Категория трафика ‒ Traffic Class | Определяет принадлежность к виртуальному каналу |
2 | Атр. | Атрибуты | Устанавливают порядок очередности пакетов: строгий, нестрогий, очередность только по ID, нестрогая очередность вместе с адресацией по ID. |
3 | TH | Наличие подсказки обработки пакетов ‒ TLP Processing Hint | Показывает, есть ли подсказка по обработке пакета в битах двойного слова с младшими байтами адреса. |
4 | TD | Наличие на уровне транзакций контрольной суммы пакета ‒ TLP Digest | Показывает, является последнее двойное слово в пакете контрольной суммой или нет. |
5 | EP | Наличие ошибки целостности данных пакета | Показывает, нарушена целостность данных пакета или нет. |
6 | AT | Трансляция адреса ‒ Address Translation | Определяет, должен ли адрес быть транслирован: адрес не транслирован, запрос трансляции, адрес транслирован |
7 | BE | Активные байты в первом и последнем двойных словах ‒ Byte Enable | Определяет положение активных байт внутри первого и последнего двойных слов |
8 | PH | Подсказка по обработке пакета ‒ Processing Hint | Подсказывает получателю пакета, как должен использоваться пакет, а также ‒ структуру данных |
9 | BCM | Наличие изменения числа байт | Показывает, было ли изменено количество байт в пакете. Флаг может устанавливать только отправитель в лице PCI-X устройства |
- унаследованные прерывания (Legacy Interrupts или INT);
- прерывания в виде сообщений (Message Signaled Interrupts или MSI);
- расширенные прерывания в виде сообщения (Message Signaled Interrupts Extended или MSI-X).
Рисунок 8 — Таблица векторов прерываний MSI-XРисунок 9 — Таблица флагов ожидающих прерываний
Общие вопросы сравнения характеристик ПЛИС
Чтобы получить представление о характере обсуждаемого в статье вопроса, обратимся к аналогичной технической проблеме, существующей в области процессоров общего назначения и, по всей, видимости, известной каждому, кто имеет отношение к информационным технологиям или хотя бы выбирал конфигурацию домашнего компьютера. Длительное время в сфере ПК обсуждается вопрос — как соотносятся линейки продукции Pentium и Celeron фирмы Intel? Является ли «облегченный» процессор Celeron низкопроизводительным бюджетным решением, покупка которого может быть произведенатолько при сильной стесненности в средствах, или же напротив, «полнофункциональные» Pentium не оправдывают себя, а их дополнительные возможности совершенно не требуются рядовому пользователю? Масса аргументов «за» и «против» привела в конце концов к появлению публикаций, которые тщательно анализировали, в каких именно условиях использование процессоров класса hi-end оправдывает себя. Имея доступ к подробной аналитической информации и результатам тестирования производительности процессоров в конкретных программных пакетах, пользователь мог сознательно сделать выбор в пользу того или иного решения.
Аналогичная ситуация складывается в настоящее время в области устройств программируемой логики. Являясь теми же цифровыми микросхемами, ПЛИС в полной мере подвержены тенденциям, характерным для цифровой микроэлектроники вообще. Так же, как и процессоры, ПЛИС могут быть выполнены либо на грани технологических возможностей, обеспечивая максимальную на настоящий момент производительность (и иметь весьма высокую цену), либо напротив, обеспечить разумный минимум возможностей, который все еще не приводит к резкому и неоправданному удорожанию. Перефразируя принцип Парето, можно сказать, что 80% функциональности ПЛИС можно обеспечить, реализовав 20% аппаратных ресурсов. Естественно, такое процентное соотношение, взятое из первоисточника, весьма далеко от реального, однако общая картина выглядит именно так — основные функции ПЛИС могут быть выполнены достаточно небольшим набором логических модулей. Добавление дополнительных устройств в скором времени приведет к «насыщению» характеристик — пропорциональный рост производительности прекратится. Соответственно, имеется некоторая архитектура, обеспечивающая оптимальное соотношение «производительность — цена». Из современной роли ПЛИС в разработке цифровых устройств проистекает дополнительное требование к такой архитектуре — совместимость с наиболее производительными устройствами класса hi-end на уровне исходных текстов описания аппаратуры. Иными словами, основные цифровые узлы, разрабатываемые с использованием языков описания аппаратуры (HDL), должны реализовываться как на наиболее производительных, так и на дешевых ПЛИС. Во втором случае возможна некоторая потеря производительности и увеличение размера проекта за счет того, что ряд цифровых узлов будет выполнен с использованием большего количества логических ячеек.
Таким образом, вопросы, возникающие при выборе серии ПЛИС, аналогичны вопросам о выборе модели процессора. Является ли серия Virtex неоправданным вложением средств? Или напротив, бюджетные устройства Spartan принципиально не позволяют реализовать какие-либо возможности обработки сигналов или реализации цифровых устройств и являются, таким образом, вынужденным компромиссом? Ответ на этот вопрос не имеет смысла без описания условий применения этих серий. Кроме того, необходимо подробно рассмотреть, какие именно характеристики ПЛИС подлежат сравнению и каким образом они отражаются на параметрах проектируемых изделий.
Программируемая пользователем логика (Или как вы программируете FPGA?)
Как мы собираемся превратить массив настраиваемых логических блоков (CLB, Configurable Logic Block) в цифровую схему, которая делает именно то, что мы хотим? На первый взгляд это кажется довольно сложной задачей. Действительно, реализация FPGA обычно считается сложнее, чем программирование микроконтроллера. Однако разработка для FPGA не требует глубокого знания функциональности CLB или кропотливой компоновки внутренних межсоединений, так же как разработка для микроконтроллеров не требует глубокого знания инструкций на языке ассемблера процессора или внутренних сигналов управления.
На самом деле, несколько неверно представлять FPGA как самостоятельный компонент. FPGA всегда поддерживаются программным обеспечением для разработки, которое выполняет сложный процесс преобразования аппаратного проектирования в программируемые биты, которые определяют поведение межсоединений и CLB.
Это оставляет нам важный вопрос: как мы «объясним» программе, что должно делать аппаратное обеспечение FPGA?
Языки описания аппаратных средств
Оказывается, люди создали языки, которые позволяют нам «описывать» аппаратное обеспечение, они называются (очень соответствующе) языки описания аппаратных средств (HDL, hardware description language), а два наиболее распространенных – VHDL и Verilog. Несмотря на очевидное сходство между HDL кодом и кодом, написанным на языке программирования высокого уровня, они принципиально отличаются друг от друга. Код программы определяет последовательность операций, тогда как HDL код больше похож на схему, которая использует текст для представления компонентов и создания взаимосвязей.
Пример цифровой схемы, которая соответствует VHDL коду, приведенному ниже
Шины с тремя состояниями.
Применение шин с тремя состояниями — типичное схемное решение вычислительных устройств, реализованных на плате. Благодаря такому решению, легко достигается многомодульность и наращиваемость системы, низкие аппаратурные затраты и малые задержки в системе межсоединений. Внутри заказных СБИС редко применяются шины с тремя состояниями из-за технологических трудностей их безотказной реализации, а также увеличенной задержки на их переключение.
Несмотря на это, в ПЛИС фирмы Xilinx всё-таки широко применяются шины с тремя состояниями, хотя это существенно повышает их себестоимость. Зато, во-первых, проще выполнить переход от проекта схемы на плате к проекту системы на кристалле. Во-вторых, ВУ с общими шинами, к которым подключено несколько десятков модулей, имеет аппаратные затраты в несколько раз меньше, чем такое же ВУ, в котором шины заменены на эквивалентную схему из системы мультиплексоров. В-третьих, с помощью общих шин можно эффективно реализовать встроенное распределенное ОЗУ, о котором пойдет речь ниже.
Для реализации общей шины каждый КЛБ имеет два буфера с тремя состояниями BUFT , которые через транзисторы-перемычки могут подключаться к общим шинам, проходящим вдоль всего кристалла. В обычных шинах третье состояние характеризуется уровнем, находящимся между уровнями логической 1 и логического 0. Но если такую шину реализовать внутри микросхемы, то в случае, когда все тристабильные буферы будут в третьем (закрытом) состоянии, их выходные транзисторы будут полуоткрытыми и могут выйти из строя. Для исключения такого электрического режима в ПЛИС общая шина нагружена на концах специальной триггерной схемой — Weak Keeper , которая выводит уровень шины или к уровню H, или к уровню L (слабые 1 или 0), если все буферы закрыты.
Неправильное функционирование общей шины, когда несколько источников с разными уровнями подключаются к шине, может вывести ПЛИС из строя. САПР ПЛИС тщательно проверяет, чтобы спроектированная общая шина функционировала правильно. Поэтому не рекомендуется ручное редактирование файла прошивки, так как случайная ошибка в коде может привести к неправильной работе общей шины и порче ПЛИС.
История развития
По мере развития цифровых микросхем возникло противоречие между возможной степенью интеграции и номенклатурой выпускаемых микросхем. Экономически оправдано было выпускать микросхемы средней интеграции, таких как регистры, счетчики, сумматоры. Более сложные схемы приходилось создавать из этих узлов. Разместить более сложную схему на полупроводниковом кристалле не было большой проблемой, но это было оправдано либо очень большой серийностью аппаратуры, либо ценой. Заказные микросхемы не могли удовлетворить возникшую потребность в миниатюризации аппаратуры. Решение могло быть только одним — предоставить разработчикам аппаратуры возможность изменять внутреннюю структуру микросхемы (программировать).
История развития программируемых логических интегральных схем начинается с появления программируемых постоянных запоминающих устройств. Первое время программируемые ПЗУ использовались исключительно для хранения данных, однако вскоре их стали применять для реализации цифровых комбинационных устройств с произвольной таблицей истинности. Однако данное решение имело существенный недостаток — экспоненциальный рост сложности устройства в зависимости от количества входов. Добавление одного дополнительного входа цифрового устройства приводит к удвоению требуемого количества ячеек памяти ПЗУ. Это не позволяет реализовать многовходовые комбинационные цифровые схемы.
Для реализации цифровых комбинационных устройств с большим числом входов были разработаны программируемые логические матрицы (ПЛМ). В иностранной литературе они получили название — PLA(англ. Programmable Logic Arrays). Именно программируемые логические матрицы можно считать первыми программируемыми логическими интегральными схемами (Programmable Logic Devices — PLDs).
Применение
ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:
- устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
- устройств, выполняющих цифровую обработку сигнала (ЦОС);
- цифровой видеоаудиоаппаратуры;
- устройств, выполняющих передачу данных на высокой скорости;
- устройств, выполняющих криптографические операции, систем защиты информации;
- устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
- устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
- реализаций нейрочипов;
- устройств, выполняющих моделирование квантовых вычислений;
- устройств, выполняющих обработку радиолокационной информации.
Как сделать FPGA майнер своими руками
Многих пользователей интересовала возможность создания майнера вручную в домашних условиях. Особенно популярной эта идея стала после появления первых успешных примеров устройств для добычи криптовалюты на базе ФПГА. На криптовалютных форумах можно найти обсуждения по этой теме и даже предложения от специалистов, которые предлагают помочь в создании подобных устройств за “дорого”. Следует понимать, что собрать FPGA майнер можно лишь при наличии хороших познаний в схемотехнике и программировании микроконтроллеров. Такие майнеры могут быть собраны далеко не каждым, а сегодняшнее положение на рынке делает их невостребованными.
Так или иначе, на ресурсе “Хабр” можно найти статью, где автор подробно описывает свой опыт создания майнера для криптовалюты BlakeCoin. Примечательно, что материал датирован 2018 годом. Из текста следует, что подходящего программного обеспечения для таких задач в открытом доступе не так уж много и автору пришлось адаптировать под свои нужды исходники из интернета. Запустить майнинг на ПЛИС Intel Cyclone V оказалось не такой уж простой задачей, на плате хватало места лишь для трёх хэшеров. При запуске устройства на частоте 120 МГц удалось достичь производительности в 360 MHs на секунду. Подъём частоты бы потребовал установки дополнительной системы охлаждения. Следует отметить, что протестировать свой майнер разработчик не успел из-за резкого скачка сложности данной монеты.
Много вопросов также вызывает возможность FPGA майнинга для алгоритмов, которые предполагают наличие большого количества оперативной памяти. В частности многих интересует майнинг Эфира на FPGA. В данный момент купить подобное устройство нельзя, но на форумах обсуждается возможность его создания своими руками. Однако разработчики Ethereum уже заявляли, что планируется переход сети на PoS, а значит майнинг эфира на ПЛИС не будет иметь смысла. А если говорить о более сложных алгоритмах, например, о CryptoNight, то в данном случае также необходимо наличие кэш памяти процессора.
Типы ПЛИС
Ранние ПЛИС
В 1970 году компания «TI» разработала маскируемые (то есть, программируемые с помощью маски, англ. mask-programmable) интегральные схемы (далее ИС), основанные на ассоциативном ПЗУ (ROAM) фирмы «IBM». Эта микросхема называлась TMS2000 и программировалась чередованием металлических слоёв в процессе производства интегральной схемы (ИС). TMS2000 имела до 17 входов и 18 выходов с 8 JK-триггерами в качестве памяти. Для этих устройств компания «TI» ввела термин PLA — англ. programmable logic array — программируемая логическая матрица.
PAL
Основная статья: PAL (ПЛИС)
PAL (англ. programmable array logic) — программируемый массив (матрица) логики. В СССР PLA и PLM не различались и обозначились как ПЛМ (программируемая логическая матрица). Разница между PLA и PLM состоит в доступности программирования внутренней структуры (матриц).
GAL
Основная статья: GAL
GAL (англ. generic array logic) — это ПЛИС, имеющие программируемую матрицу «И» и фиксированную матрицу «ИЛИ».
CPLD
Основная статья: CPLD
CPLD (англ. complex programmable logic device — сложные программируемые логические устройства) содержат относительно крупные программируемые логические блоки — макроячейки, соединённые с внешними выводами и внутренними шинами. Функциональность CPLD кодируется в энергонезависимой памяти, поэтому нет необходимости их перепрограммировать при включении. Может применяться для расширения числа входов/выходов рядом с большими кристаллами, или для предобработки сигналов (например, контроллер COM-порта, USB, VGA).
FPGA
Основная статья: FPGA
FPGA (англ. field-programmable gate array) содержат блоки умножения-суммирования, которые широко применяются при обработке сигналов (DSP, англ. digital signal processing), а также логические элементы (как правило, на базе таблиц перекодировки — таблиц истинности) и их блоки коммутации. FPGA обычно используются для обработки сигналов, имеют больше логических элементов и более гибкую архитектуру, чем CPLD. Программа для FPGA хранится в распределённой памяти, которая может быть выполнена как на основе энергозависимых ячеек статического ОЗУ (подобные микросхемы производят, например, фирмы «Xilinx» и «Altera») — в этом случае программа не сохраняется при исчезновении электропитания микросхемы, так и на основе энергонезависимых ячеек flash-памяти или перемычек antifuse (такие микросхемы производит фирма «Actel» и «Lattice Semiconductor») — в этих случаях программа сохраняется при исчезновении электропитания. Если программа хранится в энергозависимой памяти, то при каждом включении питания микросхемы необходимо заново конфигурировать её при помощи начального загрузчика, который может быть встроен и в саму FPGA. Альтернативой ПЛИС FPGA являются более медленные цифровые процессоры обработки сигналов. FPGA применяются также, как ускорители универсальных процессоров в суперкомпьютерах (например, компьютер «Cray XD1» компании «Cray», проект «RASC» компании «Silicon Graphics» («SGI»)).
Применение
ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:
- устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
- устройств, выполняющих цифровую обработку сигнала (ЦОС);
- цифровой видеоаудиоаппаратуры;
- устройств, выполняющих передачу данных на высокой скорости;
- устройств, выполняющих криптографические операции, систем защиты информации;
- устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
- устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
- реализаций нейрочипов;
- устройств, выполняющих моделирование квантовых вычислений;
- устройств, выполняющих обработку радиолокационной информации.
Этапы проектирования
- Задание принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др.
- Логический синтез с помощью программ-синтезаторов (получение списка электрических соединений (в виде текста) из абстрактной модели, записанной на языке описания аппаратуры).
- Проектирование печатной платы устройства с помощью системы автоматизированного проектирования (САПР) печатных плат (Altium Designer, P-CAD и др.), на которой размещается микросхема ПЛИС и прочие электронные компоненты (резисторы, конденсаторы, генераторы, АЦП, разъёмы и т.д.).
- Создание файла конфигурации ПЛИС.
- Загрузка файла в микросхему ПЛИС или отдельную микросхему памяти конфигурации. В результате загрузки конфигурации микросхема ПЛИС обретает заданную функциональность.
Применение
ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:
- устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
- устройств, выполняющих цифровую обработку сигнала (ЦОС);
- цифровой видеоаудиоаппаратуры;
- устройств, выполняющих передачу данных на высокой скорости;
- устройств, выполняющих криптографические операции, систем защиты информации;
- устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
- устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
- реализаций нейрочипов;
- устройств, выполняющих моделирование квантовых вычислений;
- устройств, выполняющих обработку радиолокационной информации.
Логическая таблица.
Роль основного логического элемента в ПЛИС играет логическая таблица (ЛТ) или look-up table (LUT), представляющая собой однобитное ОЗУ на 16 ячеек. В ЛТ по адресу G3,G2,G1,G0 записана единица, если код адреса представляет собой конституенту единицы заданной четырехвходовой логической функции. Например, если по адресу 1,1,1,1 записана единица, а по остальным адресам — ноль, то ЛТ реализует четырехвходовую функцию И. На рис. показан пример кодирования функции Исключающее ИЛИ на четыре входа.
Триггеры ЛТ входят в состав программирующего сдвигового регистра и их начальное состояние заполняется в период конфигурирования ПЛИС.
Этапы проектирования
- Задание принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др.
- Логический синтез с помощью программ-синтезаторов (получение списка электрических соединений (в виде текста) из абстрактной модели, записанной на языке описания аппаратуры).
- Проектирование печатной платы устройства с помощью системы автоматизированного проектирования (САПР) печатных плат (Altium Designer, P-CAD и др.), на которой размещается микросхема ПЛИС и прочие электронные компоненты (резисторы, конденсаторы, генераторы, АЦП, разъёмы и т.д.).
- Создание файла конфигурации ПЛИС.
- Загрузка файла в микросхему ПЛИС или отдельную микросхему памяти конфигурации. В результате загрузки конфигурации микросхема ПЛИС обретает заданную функциональность.
Overview
We offer a broad portfolio of low and mid-range density FPGAs that lead the industry in their low power consumption, reliability, and security capabilities. Our devices are unique in their use of non-volatile, instant-on technology that enables our FPGAs to deliver 30 to 50 percent lower power than competing FPGAs, immunity to radiation, and unique security features. Use our FPGAs, SoC FPGAs, and Radiation Tolerant FPGAs to meet high-bandwidth connectivity and high-data throughput needs in applications such as Hybrid and Electric Vehicles, Communications IoT Infrastructure, Industrial Controls and Automation, Spacecraft, Commercial Aircraft, and Defense Equipment.
PolarFire Mid-Range FPGAs
PolarFire FPGA Smart Embedded Vision>> All FPGAs |
RT PolarFire Radiation Tolerant FPGAs
RT Polar Fire FPGA Press Release |
||
PolarFire SoC FPGAsEarly access program for PolarFire SoC is now open.
>> All SoC FPGAs |
IGLOO2 Low-Density FPGAs
>> All FPGAs |
||
Microsemi Mi-V RISC-V Ecosystem
|
Design Resources
>> FPGA Technical Support >> Microchip FPGA Forum |
ОЗУ в ПЛИС.
Для реализации в ПЛИС модулей ОЗУ предусмотрено две возможности. Первую возможность предоставляет каждая ЛТ, которая может быть сконфигурирована как 16-битовое синхронное ОЗУ. Две соседних ЛТ могут быть сконфигурированы как 16-битовое двухпортовое ОЗУ с записью и чтением по одному адресу и чтением по другому адресу, как показано на рис. При этом для реализации синхронного режима записи входной бит данного, сигнал записи и адрес запоминаются в триггерах — защелках, а для чтения по второму адресу из блока второй ЛТ используется только мультиплексор чтения.
Для наращивания емкости памяти выходы нескольких КЛБ с модулями ОЗУ через тристабильные буферы подключаются к общим шинам. При этом требуется дополнительное оборудование только для построения схемы дешифрации адреса, которая выдает сигналы выборки той или иной ЛТ для записи, а также того или другого тристабильного буфера для чтения. Такое ОЗУ распределено по площади кристалла и поэтому названо Distributed RAM.
Если ЛТ запрограммировать как примитив SRL16, то из ее триггеров будет реализован 16-разрядный сдвиговый регистр с однобитовым входом и программируемым номером выходного разряда, т.е. память FIFO регулируемой длины.
Вторую возможность предоставляют отдельные блоки памяти BlockRAM. В ПЛИС серии Virtex они могут быть сконфигурированы как ОЗУ объемом 256 16-разрядных слов, 512 8-разрядных слов, и т.д. Эта память может быть запрограммирована как однопортовая или как полностью двухпортовая память. Начальное состояние этой памяти задается при ее конфигурировании, поэтому она может быть использована также как ПЗУ.
FPGA против микроконтроллера (Или зачем использовать FPGA, когда будет работать и микроконтроллер?)
Я думаю, мы все можем согласиться с тем, что микроконтроллеры стали доминирующим компонентом в современных электронных проектах. Они недорогие и универсальные, и в наши дни они часто служат первым в мире знакомством с миром электроники. Естественно, что мы продолжаем использовать компоненты, с которыми знакомы, и поскольку микроконтроллеры становятся всё более мощными, всё меньше и меньше нужно рассматривать альтернативные решения для наших задач проектирования. Тем не менее, микроконтроллер построен вокруг процессора, а процессоры имеют фундаментальные ограничения, которые необходимо признать и в некоторых случаях преодолеть.
Итак, когда инженер предпочтет FPGA микроконтроллеру? Ответ сводится к программному обеспечению и аппаратным средствам.
Процессор выполняет свои задачи, выполняя инструкции последовательно. Это означает, что операции процессора, по сути, ограничены: требуемая функциональность должна быть адаптирована к доступным инструкциям, и в большинстве случаев невозможно одновременно выполнять несколько задач обработки.
Микроконтроллер построен на одном процессоре, а процессор построен на одном CPU, а один CPU выполняет одну операцию за раз
Набор инструкций рассчитан на высокую универсальность, и в настоящее время инструкции могут выполняться на чрезвычайно высоких частотах; однако эти характеристики не устраняют недостатки программного подхода к цифровому проектированию.
Альтернативой является аппаратный подход. Было бы чрезвычайно удобно, если бы каждый новый проект мог быть построен вокруг цифровой микросхемы, которая в точности реализует функциональность, требуемую системой: нет необходимости писать программное обеспечение, никаких ограничений набора команд, никаких задержек обработки, только одна микросхема, которая имеет входные выводы, выходные выводы и цифровую схему, в точности соответствующую необходимым операциям. Эта методология нецелесообразна вне описания, поскольку она предполагает разработку ASIC (application-specific integrated circuit, специализированной интегральной микросхемы) для каждой платы. Однако мы можем аппроксимировать эту методологию, используя FPGA.
FPGA in the cloud
В облачных вычислениях FPGA применяются для быстрого счета, ускорения сетевого трафика и осуществления доступа к массивам данных. Сюда же можно отнести использование FPGA для высокочастотной торговли на биржах. В серверы вставляются платы FPGA с PCI Express и оптическим сетевым интерфейсом производства Intel (Altera) или .
На FPGA отлично ложатся криптографические алгоритмы, сравнение последовательностей ДНК и научные задачи вроде молекулярной динамики. В Microsoft давно используют FPGA для ускорения поискового сервиса Bing, а также для организации Software Defined Networking внутри облака Azure.
Бум машинного обучения тоже не обошел стороной FPGA. Компании Xilinx и Intel предлагают средства на основе FPGA для работы с глубокими нейросетями. Они позволяют получать прошивки FPGA, которые реализуют ту или иную сеть напрямую из фреймворков вроде Caffe и TensorFlow.
Причем это все можно попробовать, не выходя из дома и используя облачные сервисы. Например, в Amazon можно арендовать виртуальную машину с доступом к плате FPGA и любым средствам разработки, в том числе и machine learning.
Заключение
- Не позволяет описывать процессы с точностью до такта (но ведь от этого мы и хотели уйти!)
- Неприменим на маленьких чипах: инфраструктура отъедает огромное количество ресурсов.
Arria 10Stratix 10
Полезные ссылки
- Исходники примера и автосгеренеренный Verilog-код
- Altera SDK for OpenCL: Overview
- Altera SDK for OpenCL: Getting Started Guide
- Harnessing the Power of FPGAs using Altera’s OpenCL Compiler: очень большая презентация (>100 слайдов) для тех кто любит картинки смотреть :)
- Altera SDK for OpenCL: Programming Guide
- Altera SDK for OpenCL: Optimization Guide
- Altera SDK for OpenCL: Best Practices Guide
Update