Почему ПЛИС не являются вездесущими?


65

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


2
возможный дубликат процессоров с мягким ядром и процессоров с жестким ядром
PeterJ

Вы также можете прочитать эту тему: electronics.stackexchange.com/questions/4382/…
Том Л.

43
Вертолеты более гибкие, чем автомобили, так почему же кто-то все еще использует автомобиль для поездок на работу?
Олин Латроп

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

@R .. ... или, по крайней мере, не выбор абсолютного крайнего варианта.
Дэн Нили,

Ответы:


94

Вы игнорируете множество факторов, влияющих на выбор дизайна:

  1. Стоимость . ПЛИС стоят дороже, чем микро-по той же сложности логики.

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

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

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

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


2
«Даже тогда вы реализуете только критические по скорости детали в ПЛИС и оставляете функции управления на более низкой скорости и тому подобное в микро». И это потому, что разработка FPGA - это боль, верно?
Утку

2
@Utku: Да, это причина 3 выше, хотя причины 1-2 обычно также применимы. FPGA просто не так рентабельны, как микро-для той же задачи, если только эта задача не требует таких высоких скоростей, что микро-просто не может это сделать.
Олин Латроп

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

26
Как я обычно это объясняю: трудно делать что-то параллельно на процессоре, и трудно делать это последовательно в FPGA.
Бен Джексон

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

45

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

FPGA действительно хорош в выполнении одной и той же задачи, снова и снова. Например, обработка видео, аудио или радиосигналов. Или маршрутизация пакетов Ethernet. Или моделирование потока жидкости. В любой ситуации, когда вы получаете очень много одинаковых данных, вам очень быстро приходится работать с ними одинаково. Или вы хотите запустить один и тот же алгоритм несколько раз. FPGA действительно не имеет «задач», которые запускаются и останавливаются [1], вся ее работа заключается в том, чтобы делать то же самое с любыми данными, которые они получают, в течение всего времени, пока они включены. Он не меняет передачи, больше ничего не делает. Это конечный работник производственной линии. Он будет делать то же самое неоднократно, так быстро, как только может, навсегда.

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

FPGA и CPU - полная противоположность. Товар ЦП - это время - он должен делать вещи быстрее. Чем быстрее работает ваше приложение, тем лучше.

Товар FPGA - это космос. Ваша FPGA настолько велика, и есть только так много доступных ворот для выполнения желаемой задачи. В большинстве случаев проблема больше в размере, чем в скорости [2].

Можно заставить FPGA действовать как процессор. Вы можете поместить IP-ядро ЦП в ПЛИС, однако это очень трудно оправдать из-за причин, описанных другими [3]. ПЛИС и ЦП являются противоположностями, оба имеют свои сильные и слабые стороны, и в результате оба имеют свое место.


Примечания:

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

2) Скорость также является спецификацией FPGA. Это действительно компромисс между скоростью и размером.

3) Установка ЦП в ПЛИС выполняется относительно часто, однако это делается в каждом конкретном случае, в зависимости от конкретных приложений. Например, если вам нужен действительно крошечный микроконтроллер и у вас есть дополнительное пространство для ПЛИС.

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


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

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

5
@reirab все, что FPGA может сделать ASIC, может сделать для более низкой мощности и более низких предельных производственных затрат. Преимущества ПЛИС заключаются в прототипировании и низком объеме производства, поскольку первоначальные затраты на ASIC намного выше; Это означает, что последнее имеет смысл только тогда, когда дизайн завершен, и вы делаете их много.
Дэн Нили,

Странно утверждать, что процессор более гибкий, чем FPGA, учитывая, что вы можете легко внедрить CPU в FPGA (любой серьезный студент CS должен делать это хотя бы один раз). FPGA - это гораздо более низкое понятие, чем процессор, поэтому просто не имеет смысла сравнивать их напрямую imho.
Во

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

20

Как говорит Олин, что-то вроде микро более эффективно для многих задач, и вы почти всегда найдете микро, используемый везде, где есть FPGA. Площадь используемого кремния (что приводит к нелинейной стоимости) и энергопотребление значительно меньше. По этой причине нередко внедряется «мягкий» MCU на ПЛИС, но стоимость и производительность такого микроаппарата не впечатляют.

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

Разработка значительно сложнее, и IP, как правило, не так свободно доступен, как для микро- и специализированных решений SOC, например, контроллеров LCD, интерфейсов PCI, Ethernet MAC. Отчасти это объясняется тем, что, раскрывая логические описания HDL, они передают дизайн, а не только его реализацию. Другая причина заключается в том, что производительность зависит от компоновки логики в ПЛИС, что требует больших усилий при разработке.

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

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


10

Лучшее использование кремния для работы - это ASIC, ничего не теряется, но у них огромная кривая обучения, NRE и негибкость.

Есть два способа встроить гибкость в чип. а) Иметь ALU с оптимизированным пространством и использовать его снова и снова на сохраненных данных. Это называется MCU и требует обширной области кремния, которая «ничего не делает», памяти программ, широких шин, идущих от устройства к устройству, и переключателей доступа к шине. б) иметь мелкозернистую логику с несколькими дополнительными оптимизированными для пространства частями, такими как множители, небольшие ОЗУ и простые процессоры. Это называется FPGA и требует огромной площади кремния, которая «ничего не делает», программируемых переключателей и линий связи.

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

Когда применение является легким, но большим объемом, в стоимости преобладает упаковка, а не кремний, и любой тип является жизнеспособным. У Altera есть несколько очень маленьких FPGA с очень низким энергопотреблением, чтобы конкурировать с MCU за доллар.

Для приложений с небольшим объемом стоимость разработки имеет тенденцию доминировать, и там выигрывают MCU, при условии, что они имеют скорость


9

С точки зрения энергопотребления и использования кремния FPGA очень плох по сравнению с микропроцессором.

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

FPGA потребляет больше энергии, чем специализированная ASIC, такая как микропроцессор, поскольку логика реализована не так эффективно.

Любая функция, которая может быть реализована в FPGA, может быть выполнена более эффективно, дешевле, с меньшим энергопотреблением, меньшим пространством на плате и т. Д. В специализированной ASIC. Это при условии, что объемы достаточно велики, чтобы компенсировать NRE.


Если цель состоит в том, чтобы реализовать весь набор функций микропроцессора, конечно. Как только вы приступите к конкретной задаче, вы также сможете обнаружить много потраченного впустую кремния в микроконтроллере - возможно, этот механизм шифрования - это потраченное впустую пространство в вашем проекте. Или МОЖЕТ периферийное устройство? Или с плавающей запятой? Лучшее использование FPGA ниже, но вы также не будете страдать от 0% использования на больших площадях, как это делает микроконтроллер. (С другой стороны, при стробировании тактовых импульсов использование больших цепей на 0% очень желательно с точки зрения энергопотребления)
Бен Фойгт

8

Микропроцессорные dsystems и более поздние микроконтроллеры смогли достичь огромной степени функциональности благодаря своей способности использовать множество отдельных элементов схемы для выполнения множества различных задач в разное время. Я думаю, что поучительно сравнить аркадный автомат Tank, созданный в 1976 году, с игрой Combat, которая работает на втором в мире игровом автомате с микропроцессорным управлением Atari 2600. Несмотря на некоторые различия в игровом процессе, аппаратное обеспечение Atari 2600 было разработано по существу. реализовать игры типа Tank с минимальными затратами; тот факт, что можно было играть в разные игры, вставляя разные картриджи с ПЗУ, был приятным бонусом.

Игра Tank позволяет двум игрокам водить танки по экрану и стрелять друг в друга. Он имеет счетчики «проскальзывания» для позиции X и Y каждого танка, позиции X и Y выстрелов каждого игрока, счетчик вверх / вниз для угла каждого игрока и угла выстрела каждого игрока, счетчик для счета каждого игрока, растровый луч X и Y счетчики положения и множество схем управления поверх этих вещей. Он имеет аппаратное обеспечение для извлечения данных игрового поля из ПЗУ и его отображения, а также имеет аппаратное обеспечение для извлечения фигур для танков двух игроков и партитур из ПЗУ и их отображения.

Atari 2600 имеет счетчик скольжения для горизонтальных положений каждого из двух игровых объектов, каждого из двух ракетных объектов, и одного дополнительного объекта, называемого «мячом», который не используется в бою, но используется в некоторых других играх. Для каждого из объектов проигрывателя имеется аппаратное обеспечение для вывода шаблона, сохраненного в 8-разрядной защелке, а также «задержанной» восьмибитной защелки для каждого игрока, которая копируется в основную 8-разрядную защелку всякий раз, когда другой игрок Форма обновлена. Он также имеет горизонтальный счетчик положения луча и 20-битную защелку в форме игрового поля, которая выводится на экран дважды за строку сканирования, при этом правая копия отображается как повтор или отражение левого. У него есть оборудование для обнаружения коллизий, но не для того, чтобы что-либо делать из-за них. Это не не имеет аппаратного обеспечения для вертикальных положений любых объектов, а также для вертикального положения растрового луча (!), а также не имеет аппаратного обеспечения, связанного с ведением счета, отображением счета, продолжительностью игры и т. д.

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

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

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


Не могли бы вы также поставить мины? ;-)
Скотт Сейдман

@ScottSeidman: у аркадной машины было несколько мин в зашитых местах, которые были нарисованы как X. Для 2600 было бы очень трудно показать мины как X, показывая как игроков, так и обе ракеты. Если не возражать против того, чтобы мины мерцали на частоте 60 Гц, было бы возможно использовать некоторые приемы, которые были обнаружены позже, но потребовалось бы больше кода (COMBAT - это 2K-картридж, который почти полностью заполнен - ​​даже два байта в неиспользованном виде Вектор BRK / IRQ в $ FFFE / FFFF используется для хранения двухбайтовой таблицы!).
суперкат

Вероятно, для Combat было бы возможно реализовать мины в виде мигающих квадратов, если бы он был готов отказаться от некоторых других своих опций, таких как прыгающие выстрелы и т. Д., Но я думаю, что Джо Декюир (программист) отлично справился с выбором игровых вариантов. Мое единственное сомнение в том, что биплан-против-бомбардировщик мог бы быть веселее, если бы бомбардировщик был спрайтом 2х, а не 4х.
суперкат

5

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


6
Стоимость, конечно , один вопрос, но сказать , разница полностью стоимость , как наивна, думая все Micros может быть заменена ПВМ.
Олин Латроп

@OlinLathrop, если цена не была проблемой, то все, что может сделать микро, может быть сделано FPGA. Это было продемонстрировано на способности ПЛИС удерживать мягкое ядро ​​микроконтроллера. Проблема в том, что FPGA, которая может содержать такое ядро, как минимум и на порядок дороже, чем микропроцессорное ядро, имитируемое.
vini_i

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

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

4
@ Sleb: Нет, разница в стоимости не только из-за объема. Площадь кремния, необходимая для каждого поставляемого затвора, в ПЛИС значительно больше, чем в специальном чипе, таком как микроконтроллер. Вся эта конфигурируемость на уровне межсоединений затвора требует кремниевой области для реализации. В больших объемах стоимость чипа зависит от его площади.
Олин Латроп

5

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

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


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

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
Funkyguy

3
@ Funkyguy, это действительно отвечает на вопрос. По сути, они говорят, что ПЛИС не являются вездесущими, потому что обычные потребительские приложения не требуют параллелизма, который является сильной стороной ПЛИС.
Станри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.