8-900-374-94-44
[email protected]
Slide Image
Меню

Fpga что это: Технология FPGA для тысячи применений / Хабр

Технология FPGA для тысячи применений / Хабр

Трудно представить другую технологию, которая настолько разносторонняя как FPGA.
FPGA — Field-Programmable Gate Array, то есть программируемая логическая матрица (ПЛМ), программируемая логическая интегральная схема (ПЛИС). Это технология, при которой создается микросхема с набором логических элементов, триггеров, иногда оперативной памяти и программируемых электрических связей между ними. При этом программирование FPGA оказывается похоже на разработку электрической схемы, а не программы. Пользуюсь данной технологией давно и попробую описать самые полезные с моей точки зрения применения по мере их усложнения.

1. Помощь при разводке плат

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

Но стоит поставить между микросхемами FPGA как разводка становится на несколько порядков проще:

И все это благодаря возможности внутренней перекоммутации сигналов внутри FPGA.

2. Согласование уровней сигналов

Часть микросхем имеет интерфейс 1.2В, другая 1.5, 1.8, 2.5, 3.3В, и все эти микросхемы можно подключить к одной FPGA и обеспечить двусторонний обмен за счет того, что любая FPGA имеет несколько банков ввода-вывода, каждый из которых может иметь свое опорное напряжение сигналов. Например, так:


3. Обеспечение надежности устройства

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

Мне очень нравится использовать FPGA (маленький PLD) как умный сторожевой таймер и схема запуска — ни разу не подводил.


4. Автоматы состояний или аппаратное программирование

Если на процессоре сначала создается «исполнитель команд», то есть процессор, а потом в него загружается последовательность команд, то на FPGA можно писать программу с командами, вшитыми в структуру прошивки. При этом отсутствует избыточность процессора, появляется малое потребление при той же скорости и функциональности, гарантированное время выполнения и высокая надежность. Пример такого автомата состояний:


5. Создание процессора внутри FPGA

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

При этом структура процессора проста и легко реализуема на FPGA:

Недостатком такого процессора является отсутствие готовых компиляторов и отладчиков.

6. Использование готовых библиотек процессоров для FPGA

Библиотеки готовых процессоров есть у любого производителя FPGA (от 8086 до ARM), позволяют быстро создать процессор с определенным набором периферии и вставить его в проект FPGA. К процессору прилагается компилятор и отладчик. Быстро, удобно, но избыточно и потому ограничено по быстродействию. Пример структуры готовой библиотеки процессора:


7. Объединять процессор и периферию в одной микросхеме — SoC (System-On-Chip)

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

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

Видно, что FPGA и HPS (Host Processor System, процессор) находятся внутри одной микросхемы и окружены программируемыми ножками ввода-вывода. Действительно это многофункциональная система на кристалле.

8. Модные приложения типа crypto mining

Вспоминая, что FPGA — это набор логических ячеек и триггеров, работающих параллельно, на FPGA можно проводить много параллельных операций, что отличает от процессора, параллельность которого ограничена количеством ядер и потоков. Поэтому можно использовать FPGA как сопроцессор к центральному процессору, вынося на FPGA все самые требовательные к вычислительной мощности операции. Например, центральный процессор занимается логической обработкой задачи, а FPGA параллельно вычисляет контрольные суммы, хэши, ищет совпадения, перебирает варианты и так далее. Быстродействие FPGA ограничено только количеством параллельных блоков и временем выполнения одной операции. Отладив таким образом вычисления можно заказать ASIC, то есть заказную микросхему, выполняющую те же функции, но дешевле (при массовом производстве) и с меньшим энергопотреблением. И данная идея оказалась настолько перспективной и удобной, что гиганты разработки FPGA начали создавать специальное ПО, позволяющее интерактивно переносить части вычислений из программы на C/C++ в FPGA и контролировать быстродействие (HLS, High-Level Synthesis). Есть готовые платы с быстрыми интерфейсами для этого и средства отладки. Очень интересная и перспективная тема для использования.


9. Реализация нейронных сетей на FPGA

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

Поэтому перенеся нейронную сеть на FPGA удается на много порядков ускорить работу нейронной сети, остается обеспечить высокоскоростной интерфейс для загрузки исходных данных и получения результата. В качестве примера — реализация системы распознавания лиц на процессоре i7/9Gen распознает до 20 лиц за секунду с одной видеокамеры HD, реализация на FPGA — порядка 1000 лиц с нескольких камер. Структура используемой глубокой нейронной сети:

Это только часть применений FPGA, с которыми можно столкнуться.
И жаль, что не так много людей ее активно используют и развивают.

Архитектура ПЛИС (FPGA)

FPGA – это сокращение от английского словосочетания Field Programmable Gate Array.

ПЛИС – это сокращение от словосочетания «Программируемая Логическая Интегральная Схема». Слово ПЛИС встречается в русскоязычных документациях и описаниях вместо слова FPGA. Далее по тексту в основном будет использоваться этот термин — ПЛИС.


 
ПЛИС и FPGA – это аббревиатуры, обозначающие один и тот же класс электронных компонентов, микросхем. Это микросхемы, применяемые для создания собственной структуры цифровых интегральных схем.

Логика работы ПЛИС определяется не на фабрике изготовителем микросхемы, а путем дополнительного программирования (в полевых условиях, field-programmable) с помощью специальных средств: программаторов и программного обеспечения.

Микросхемы ПЛИС – это не микропроцессоры, в которых пользовательская программа выполняется последовательно, команда за командой. В ПЛИС реализуется именно электронная схема, состоящая из логики и триггеров.

Проект для ПЛИС может быть разработан, например, в виде принципиальной схемы. Еще существуют специальные языки описания аппаратуры типа Verilog или VHDL.

В любом случае, и графическое и текстовое описание проекта реализует цифровую электронную схему, которая в конечном счете будет «встроена» в ПЛИС.

Обычно, сама микросхема ПЛИС состоит из:

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

Строго говоря это не полный список. В современных ПЛИС часто бывают встроены дополнительно блоки памяти, блоки DSP или умножители, PLL и другие компоненты. Здесь, в этой статье я их рассматривать не буду.

Разработчик проекта для ПЛИС обычно абстрагируется от внутреннего устройства конкретной микросхемы. Он просто описывает желаемую логику работы «своей» будещей микросхемы в виде схемы или текста на Verilog/ VHDL. Компилятор, зная внутреннее устройство ПЛИС сам пытается разместить требуемую схему по имеющимся конфигурируемым логическим блокам и пытается соединить эти блоки с помощью имеющихся программируемых электронных связей. В общем случае размещение и трассировка связей между логическими блоками в ПЛИС остается за компилятором.

Классификация ПЛИС по типу хранения конфигурации.

SRAM-Based.
Это одна из самых распространенных разновидностей ПЛИС. Конфигурация ПЛИС хранится ячейках статической памяти, изготовленной по стандартной технологии CMOS.
Достоинство этой технологии – возможность многократного перепрограммирования ПЛИС. Недостатки – не самое высокое быстродействие, после включения питания прошивку нужно вновь загружать. Значит на плате должен еще стоять загрузчик, специальная микросхема FLASH или микроконтроллер – все это удорожает конечное изделие.

Flash-based.
В таких микросхемах хранение конфигурации происходит во внутренней FLASH памяти или памяти типа EEPROM. Такие ПЛИС лучше тем, что при выключении питания прошивка не пропадает. После подачи питания микросхема опять готова к работе. Однако, у этого типа ПЛИС есть и свои недостатки. Реализация FLASH памяти внутри CMOS микросхемы – это не очень просто. Требуется совместить два разных техпроцесса для производства таких микросхем. Значит они получаются дороже. Кроме того, такие микросхемы, как правило, имеют ограниченное количество циклов перезаписи конфигурации.

Antifuse.
Специальная технология по которой выполняются однократно программируемые ПЛИС. Программирование такой ПЛИС заключается в расплавлении в нужных местах чипа специальных перемычек для образования нужной схемы.
Недостаток – собственно программировать / прошивать чип можно только один раз. После этого исправить уже ничего нельзя. Сам процесс прошивки довольно не быстрый. Зато есть масса достоинств у таких ПЛИС: они довольно быстрые (могут работать на больших частотах), меньше подвержены сбоям при радиации – все из-за того, что конфигурация получается в виде перемычек, а не в виде дополнительной логики, как у SRAM-based.

Конфигурируемые логические блоки.

В документации компании Альтера встречается выражение Logic Array Block (LAB) – массив логики. У компании Xilinx в микросхемах ПЛИС есть примерно такие же блоки — Configurable Logic Block (CLB). Конфигурируемый логический блок – это базовый элемент в ПЛИС, в нем может быть выполнена какая-то простая логическая функция или реализовано хранение результата вычисления в регистрах (триггерах).

Сложность и структура конфигурируемого логического блока (CLB) определяется производителем.

Теоретически, конфигурируемый логический блок может быть, например, очень простым, просто как отдельный транзистор. Или он может быть очень сложным, как целый процессор. Это крайние точки реализации.

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

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

Таким образом, выбор структуры конфигурируемого логического блока производителем ПЛИС – это всегда поиск компромиса по площади кристалла, по быстродействию, энергопотреблению и так далее.

Конфигурируемый логический блок может состоять из одного или нескольких базовых логических элементов. В англоязычной литературе это Basic Logic Element (BLE) или просто Logic Element  (LE). В ПЛИС обычно используются так называемые LUT-based базовые логические элементы. Что-то вроде этого:


Рис. 1. Пример традиционного базового логического элемента.

LUT – это Look-Up Table, таблица преобразования. Например, на Рис.1 показан четырехбитный LUT в составе базового логического блока. Здесь четырехбитному числу на входе логической функции ставится в соответствие однобитный результат. Красные квадратики на Рис. 1 обозначают программируемый элемент, регистр – это та память, где хранится прошивка для ПЛИС. Видно, что для конфигурации 4-х битного LUT требуется 16 конфигурационных регистра. Содержимое этих регистров определяют логическую функцию, реализованную внутри  базового логического элемента.

Еще один конфигурационный регистр (на Рис. 1 это одиночный красный квадратик справа) определяет нужно ли на выход базового логического элемента выдавать прямо значение с LUT или нужно выдать зафиксированное в D-триггере значение с LUT. Фиксация и хранение данных в цифровых схемах нужна практически в любом проекте.

Примерно такой логический элемент использовался в моем экспериментальном проекте «ПЛИС внутри ПЛИС».

Рассматривая Рис. 1 как пример традиционного базового логического элемента понимаешь какая избыточность заложена внутрь современного кристалла ПЛИС (SRAM-based). Ведь в самом деле, конфигурационные регистры (красные квадратики) прямо не доступны для использования в цифровом проекте. Они только служат для формирования пользовательской функции. Для одного D-триггера в пользовательском проекте требуется более 16 (иногда много больше) триггеров для хранения конфигурации ПЛИС.

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

Рис. 2. Базовый логический элемент CPLD MAX II компании Альтера.

Здесь хорошо видны LUT и D-Триггер хранения результата. Ниже, на Рис. 3 представлен базовый элемент Cyclone III.

Рис. 3. Базовый логический элемент FPGA Cyclone III компании Альтера.

В микросхемах Альтеры в одном LAB может содержаться 10-16 LE.

В микросхемах компании Xilinx Virtex-6 базовый логический элемент – это так называемый Slice. В одном CLB всего два Slice. Зато один Slice – это довольно сложное устройство:

Рис. 4. Базовый элемент Xilinx Virtex-6 Slice.

В одном CLB Virtex-6 имеется 8 LUT и 16 D-Триггеров и еще кое-что плюс к этому. Вот так все сложно.

Другая крайность – микросхемы FPGA компании Microsemi (бывшая Actel).
Например, в микросхемах серии 40MX базовый логический элемент выглядит вот так:

Рис. 5. Logic Module of Microsemi 40MX serie.

Восемь входов и один выход.
Здесь нет ни Look-Up Table, ни даже D-Триггера. Триггера, как и остальная логика, формируются где нужно из вот таких крошечных кирпичиков – Logic Module.

Почему у разных компаний получилась такая большая разница в реализации базового логического элемента? Видимо в микросхемах Microsemi связь между базовыми блоками обходится гораздо дешевле: серия 40MX является однократно программируемой. В ней межблочные связи «проплавляются» между соединяющими дорожками и позже не могут быть изменены. Нет никаких регистров для временного хранения прошивки. Здесь нет программируемых переключателей, мультиплексоров, как в FPGA других типов. Ну микросхемы компании Microsemi — это несколько особый случай. Это технология называется antifuse – для производства таких микросхем используется модифицированный техпроцесс CMOS с дополнительными слоями для организации межблочных связей.

Программируемые связи между логическими блоками.

Чтобы в ПЛИС заработала нужная нам цифровая схема мало того, что нужно сконфигурировать имеющиеся логические блоки особым образом, еще нужно создать, запрограммировать связи между логическими блоками.

Для этого в ПЛИС имеются специальные конфигурируемые коммутаторы.

В англоязычной документации встречаются следующие термины: FPGA Routing Architecture и Programmable Routing Interconnect. Это все об этом, о программируемых связях между логическими блоками.

Известно две основных методики построения ПЛИС по типу архитектуры связей: островная и иерархическая.

Рис. 6. Островная ПЛИС.

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

Здесь, на Рис. 6 обозначаются CB – Connection Box и SB – Switch Box. В сущности это программируемые мультиплексоры, подключающие тот или иной CLB к другому CLB через цепочки проводов в ПЛИС.

Это island-style FPGA или mesh-based FPGA. Типичный пример таких микросхем – это серии Altera Cyclone и Stratix.

Второй известный тип ПЛИС – это иерархические ПЛИС. Здесь идет расчет на то, что в схеме всегда есть участки которые взаимодействуют друг с другом более тесно, чем с отдаленными модулями проекта.

Рис. 7. Иерархическая ПЛИС.

Здесь близлежащие CLB соединить довольно просто, нужно не много коммутаторов и получающиеся связи работают быстро. Вот если нужен более крупный блок вычислителей, то сигнал должен выйти на более высокий уровень иерархии и потом зайти вглубь в соседнюю «комнату».

Нельзя сказать, что это существенно хуже, чем island-style. Просто каждый метод имеет свои плюсы и минусы.

Типичные представители иерархических ПЛИС – это микросхемы компании Альтера серии Flex10K, APEX.

Программное обеспечение для проектирования ПЛИС.

Программное обеспечение для проектирования ПЛИС, а именно компилятор (синтезатор логики и фиттер и ассемблер) – это, возможно, самая сложная часть всей ПЛИС технологии.

Компилятор должен проанализировать пользовательский проект (схемы и текстовые описания на Verilog HDL или VHDL ) и сгенерировать нетлист (netlist) – список всех элементов схемы и связи между ними. Netlist должен быть оптимизирован – логические функции нужно минимизировать, возможные дублированные регистры нужно удалить.

Затем компилятор должен вместить всю логику из netlist в имеющуюся архитектуру ПЛИС. Это делает фиттер (fitter). Он размещает логические элементы и выполняет трассировку связей между ними (процесс place and route). Сложность состоит в том, что один и тот же проект может быть размещен в ПЛИС разными способами и этих способов миллионы. Некоторое размещение и трассировка оказываются лучше, другие хуже. Главный критерий качества полученной системы – максимальная частота, на которой сможет работать проект при данном размещении элементов и при данной трассировке связей. Здесь оказывает влияние длина связей между логическими блоками и количество программируемых коммутаторов между ними.

Компилятор, зная архитектуру ПЛИС по результатам работы дополнительно выдает отчет о времени прохождении сигналов от регистра до регистра. Эта информация часто бывает полезной для разработчика высокопроизводительных систем. Разработчик для ПЛИС имеет возможность давать некоторые советы компилятору где, в каком месте кристалла лучше разместить тот или иной модуль проекта.

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

Программное обеспечение компании Альтера: Quartus II.
ПО Xilinx для проектирования для ПЛИС: ISE Suite, Vivaldo Design Suite.
ПО компании Microsemi: Libero IDE, Libero SoC.

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

На страницах нашего сайта https://marsohod.org мы уделяем внимание прежде всего проектированию систем на базе ПЛИС компании Альтера и пользуемся средой разработки Altera Quartus II.

 

Что такое ПЛИС? Программируемая пользователем вентильная матрица

  1. Устройства
  2. ПЛИС и 3D ИС
  3. Что такое ПЛИС? Программируемая пользователем вентильная матрица

Программируемые вентильные матрицы (FPGA) — это полупроводниковые устройства, основанные на матрице конфигурируемых логических блоков (CLB), соединенных через программируемые межсоединения. ПЛИС могут быть перепрограммированы в соответствии с желаемыми приложениями или функциональными требованиями после изготовления. Эта функция отличает ПЛИС от специализированных интегральных схем (ASIC), которые изготавливаются на заказ для конкретных задач проектирования. Хотя доступны одноразовые программируемые (OTP) FPGA, преобладающие типы основаны на SRAM, которые можно перепрограммировать по мере развития конструкции. — Узнать больше

В чем разница между ASIC и FPGA?

ASIC и FPGA имеют разные ценностные предложения, и их необходимо тщательно оценить, прежде чем сделать выбор в пользу одного из них. Информации, которая сравнивает две технологии, предостаточно. В то время как в прошлом FPGA выбирались для более низких скоростей/сложности/объема, сегодняшние FPGA легко преодолевают барьер производительности в 500 МГц. Благодаря беспрецедентному увеличению плотности логики и множеству других функций, таких как встроенные процессоры, блоки DSP, тактовая частота и высокоскоростной последовательный порт по еще более низкой цене, ПЛИС являются убедительным предложением практически для любого типа дизайна. — Узнать больше

Приложения ПЛИС

Благодаря своей программируемости ПЛИС идеально подходят для многих различных рынков. Являясь лидером отрасли, AMD предлагает комплексные решения, состоящие из устройств FPGA, передового программного обеспечения и настраиваемых, готовых к использованию IP-ядер для таких рынков и приложений, как: обработка изображений, генерация сигналов и частичная реконфигурация для SDR.

  • Прототипирование ASIC — прототипирование ASIC с ПЛИС обеспечивает быстрое и точное моделирование систем на кристалле и проверку встроенного программного обеспечения
  • Automotive — автомобильные полупроводниковые и IP-решения для шлюзов и систем помощи водителю, комфорта, удобства и информационно-развлекательных систем в автомобиле. — Узнайте, как AMD FPGA позволяют использовать автомобильные системы
  • .
  • Broadcast & Pro AV — Быстрее адаптируйтесь к меняющимся требованиям и удлиняйте жизненный цикл продукта с помощью платформ целевого вещания и решений для профессиональных вещательных систем высокого класса.
  • Бытовая электроника — экономичные решения, обеспечивающие полнофункциональные потребительские приложения нового поколения, такие как конвергентные телефоны, цифровые плоские дисплеи, информационные устройства, домашние сети и бытовые телеприставки.
  • Центр обработки данных
  • — предназначен для серверов с высокой пропускной способностью и малой задержкой, сетевых приложений и приложений для хранения, чтобы повысить ценность облачных развертываний.
  • Высокопроизводительные вычисления и хранение данных — решения для сетевых хранилищ (NAS), сетей хранения данных (SAN), серверов и устройств хранения.
  • Industrial — AMD FPGA и специализированные платформы проектирования для промышленности, науки и медицины (ISM) обеспечивают более высокую степень гибкости, более быстрый выход на рынок и более низкие общие единовременные инженерные затраты (NRE) для широкого спектра приложений, таких как промышленная визуализация и наблюдение, промышленная автоматизация и медицинское оборудование для визуализации.
  • Медицина — для приложений диагностики, мониторинга и терапии можно использовать семейства Virtex FPGA и Spartan™ FPGA, отвечающие ряду требований к обработке, отображению и интерфейсу ввода/вывода.
  • Безопасность — AMD предлагает решения, отвечающие растущим потребностям приложений безопасности, от контроля доступа до систем наблюдения и безопасности.
  • Обработка видео и изображений — AMD FPGA и целевые платформы проектирования обеспечивают более высокую степень гибкости, более быстрый выход на рынок и более низкие общие единовременные инженерные затраты (NRE) для широкого спектра приложений для обработки видео и изображений.
  • Wired Communications — комплексные решения для перепрограммируемой сетевой карты обработки пакетов, Framer/MAC, последовательных объединительных плат и т. д.
  • Беспроводная связь — РЧ, основная полоса частот, подключение, транспорт и сетевые решения для беспроводного оборудования, соответствующие стандартам адресации, таким как WCDMA, HSDPA, WiMAX и другим.
  • Что такое FPGA и почему это так важно?

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

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

    С ПЛИС чипа нет. Пользователь программирует аппаратную схему или схемы. Программирование может представлять собой один простой логический элемент (функция И или ИЛИ) или может включать одну или несколько сложных функций, включая функции, которые вместе действуют как комплексный многоядерный процессор.

    Вы можете использовать FPGA, когда вам нужно оптимизировать микросхему для конкретной рабочей нагрузки или когда вам, вероятно, потребуется внести изменения на уровне микросхемы позже. Использование FPGA охватывает широкий спектр областей — от оборудования для видео и обработки изображений до схем для компьютерных, автомобильных, аэрокосмических и военных приложений, а также электроники для специализированной обработки и многого другого. ПЛИС особенно полезны для прототипирования специализированных интегральных схем (ASIC) или процессоров. FPGA можно перепрограммировать до тех пор, пока конструкция ASIC или процессора не станет окончательной и не будет содержать ошибок, и не начнется фактическое производство окончательной ASIC. Сама Intel использует FPGA для создания прототипов новых чипов.

    Недавно Intel приобрела компанию eASIC, чтобы ускорить процесс проектирования и создания прототипов. eASIC производит так называемую «структурированную ASIC», которая опирается на модель, которая находится между ASIC и FPGA. Как объясняется в этой статье AnandTech, со структурированной ASIC:

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

    Итак, каков реальный пример использования ПЛИС? В электронной книге FPGA для чайников соавторы Эндрю Мур и Рон Уилсон приводят простой пример FPGA камеры заднего вида для автомобиля. В примере камере может потребоваться 250 миллисекунд, чтобы захватить и отобразить изображение водителю. Если правила изменятся, требуя, чтобы окно времени составляло всего 100 миллисекунд, автомобиль может потребовать дорогостоящих и практически невозможных изменений, если камера будет опираться на решение на основе микропроцессора. Однако с FPGA новые правила могут быть выполнены и реализованы без нового оборудования или новых процессоров. Автомобили в производстве, непроданные автомобили и уже проданные автомобили можно было обновить простым перепрограммированием ПЛИС.

    ПЛИС также полезны для предприятий, поскольку их можно динамически перепрограммировать с помощью пути данных, точно соответствующего конкретной рабочей нагрузке, такой как анализ данных, вывод изображений, шифрование или сжатие. Оптимизированные ПЛИС также более энергоэффективны, чем выполнение эквивалентных рабочих нагрузок на ЦП. Такое сочетание универсальности, эффективности и производительности представляет собой привлекательный пакет для современных предприятий, стремящихся обрабатывать больше данных при более низкой совокупной стоимости владения (TCO).

    Сегодня ПЛИС получают все большее распространение в другой области: глубоких нейронных сетях (ГНС), которые используются для искусственного интеллекта (ИИ). Выполнение моделей логического вывода DNN требует значительной вычислительной мощности. Графические процессоры (GPU) часто используются для ускорения обработки логических выводов, но в некоторых случаях высокопроизводительные FPGA могут даже превосходить GPU при анализе больших объемов данных для машинного обучения. (В этой статье описывается один из таких примеров, в котором FPGA Intel Stratix 10 превзошла GPU при тестировании.)

    Microsoft уже использует универсальность Intel FPGA для ускорения искусственного интеллекта. Microsoft Project Brainwave предоставляет клиентам доступ к FPGA Intel Stratix через облачные сервисы Microsoft Azure. Облачные серверы, оснащенные этими FPGA, были настроены специально для запуска моделей глубокого обучения. Служба Microsoft позволяет разработчикам использовать возможности микросхем FPGA без покупки и настройки специализированного оборудования и программного обеспечения.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *