Чому FPGA не є всюдисущими?


65

Читаючи про FPGA, якщо я правильно розумію, вони в основному повністю налаштовані логічні схеми воріт. Будучи цим, можна створити з ними що завгодно. Можна спроектувати все найбільш можливим способом, а отже, досягти тих же цілей набагато ефективнішим способом, який можна отримати за допомогою мікроконтролера. Маючи це, схоже, що FPGA б'є мікроконтролер будь-коли, в будь-який день. Отже, моє запитання полягає в тому, що якщо FPGA насправді такі дивовижні, що перешкоджає їм бути набагато більш поширеними, ніж мікроконтролери? З цієї точки зору, мені здається, що FPGA повинні були давно знищити мікроконтролери. То чому це не так? Це вартість, труднощі програмування FPGA або зовсім щось інше?


2
можливий дублікат Soft core Processors VS Hard core Processors
PeterJ

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

43
Вертольоти більш гнучкі, ніж автомобілі, тож чому хтось досі користується машиною для поїздок на роботу?
Олін Латроп

15
Тому що всі компанії FPGA надають вам надзвичайно жахливі фірмові інструменти, які мають величезну криву навчання та недоступні для більшості розробників. Замініть це повністю відкритим ланцюжком інструментів, і вони, мабуть, були б всюдисущими.
Р ..

@R .. ... або, принаймні, не вибір абсолютного останнього варіанту.
Дан Нілі

Відповіді:


94

Ви ігноруєте безліч факторів, які впливають на вибір дизайну:

  1. Вартість . FPGA дорожчі, ніж мікросхеми за однакової складності логіки.

  2. Логічна складність . Код, що виконується, може реалізувати набагато складнішу логіку, ніж та сама кількість воріт, що використовуються безпосередньо в мікрофоні.

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

  4. Споживання електроенергії . Оскільки FPGA призначені для високошвидкісних операцій, з якими мікросхеми не можуть впоратися (інакше ви використовуєте мікро), вони не оптимізовані для низької потужності. Це робить їх непридатними для деяких додатків малої потужності. Деякі мікросхеми мають струми сну менше 1 мкА і можуть працювати лише на декількох мкА при повільній тактовій частоті. Спробуйте знайти FPGA, який може це зробити.

Основними перевагами FPGA в порівнянні з мікросередовищем є те, що вони швидші і можуть робити більше справ паралельно. Крім цього, ви краще скористаєтеся мікрофоном. Тому в процесі проектування ви, як правило, починаєте роботу з мікрофоном, а потім з нетерпінням переходите до FPGA, коли вам справді потрібна швидкість та / або одночасне високошвидкісне функціонування. Вже тоді ви реалізуєте лише важливі для швидкості частини в FPGA, а функції мікроконтролю нижчої швидкості тощо подібні залишаєте в мікрофоні.


2
"Вже тоді ви реалізуєте лише критичні для швидкості частини в FPGA, а функції мікроконтролю нижчої швидкості тощо подібні залишаєте в мікрофоні." І це тому, що розробка для FPGA - це біль, правда?
Утку

2
@Utku: Так, це причина 3 вище, хоча причини 1-2 зазвичай також стосуються. FPGA просто не настільки економічно ефективні, як мікросередовища для однієї і тієї ж задачі, якщо тільки ця задача не має настільки високі вимоги до швидкості, що мікро просто не може це зробити.
Олін Латроп

4
Неважко сказати, що ця відповідь написана з точки зору користувача CPU. "з нетерпінням переходьте на FPGA, коли вам дійсно потрібна швидкість та / або одночасне високошвидкісне використання". Вони не такі вже й погані. Є додатки, де можна навіть не думати використовувати процесор через FPGA.
stanri

26
Те, як я зазвичай пояснюю це: Важко робити паралельно все на процесорі, і важко робити серійні речі в FPGA.
Бен Джексон

14
Про FPGA слід пам’ятати одне велике: перенастроєність логіки виходить ціною - еквівалентна логіка, яку реалізує FPGA, набагато менш складна, ніж сама FPGA. Усі таблиці, що шукають, компоненти матриці маршрутизації тощо, споживають набагато більше кремнієвої площі та потужності, ніж еквівалентні реалізації у жорсткій логіці. Це означає, що FPGA є гіршими у всіх показниках продуктивності - активному та простою енергоспоживання, щільності, тактовій частоті тощо - ніж побудова тієї ж функціональності безпосередньо в кремнію, як це робиться з мікроконтролерами, центральними процесорами загального призначення та FPGA.
alex.forencich

45

Одне розрізнення, про яке я не бачив детальніше, - це те, що FPGA використовуються та поводяться абсолютно по-іншому з процесорами.

FPGA справді добре робити те саме завдання, знову і знову. Наприклад, обробка відео, аудіо або радіочастотних сигналів. Або маршрутизація пакетів Ethernet. Або імітуючи потік рідини. Будь-яка ситуація, коли у вас дуже швидко викидаються однакові дані, і ви хочете розібратися з цим однаково. Або ви хочете кілька разів запускати той же алгоритм. FPGA насправді не має "завдань", які починаються та зупиняються [1], вся її робота полягає в тому, щоб робити те саме, що і з отриманими даними, настільки, наскільки вони є. Він не змінює передачі, нічого іншого не робить. Він є найвищим виробничим виробником. Це те саме зробить повторно, якнайшвидше, назавжди.

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

FPGA і процесор - цілком протилежні. Товар CPU - час - він повинен швидше виконувати роботу. Чим швидше працює ваша програма, тим краще.

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

Можна зробити FPGA дією, як процесор. Можна поставити IP-ядро CPU в FPGA, однак це дуже важко виправдати через причини, які описали інші [3]. FPGA і CPU - це протилежності, які мають свої сильні та слабкі сторони, і обидва мають своє місце в результаті.


Примітки:

1) FPGA могла бути розроблена для виконання різних завдань, але навіть тоді це було б конкретне число, для якого вона була попередньо розроблена.

2) Швидкість - це також специфікація дизайну FPGA. Це дійсно торгівля між швидкістю та розміром.

3) Встановлення процесора в FPGA робиться відносно часто, однак це робиться в кожному конкретному випадку, залежно від конкретних програм. Наприклад, якщо вам потрібен дійсно крихітний мікроконтролер і у вас є додатковий простір FPGA.

І нарешті: ця відповідь є великим спрощенням - FPGA використовуються надзвичайно різноманітно і складно, і це дуже короткий огляд того, як вони використовуються в цілому.


1
"Або маршрутизація пакетів Ethernet. Або моделювання потоку рідини." Хоча, наскільки я знаю, ASIC зазвичай використовується для перших (принаймні у масовому виробництві), а графічні процесори - швидші, дешевші, з меншою потужністю і легше програмуються для останніх.
reirab

1
@reirab Це були приклади таких операцій, які FPGA можуть зробити добре, вони прийшли до тями, оскільки вони обидва додатки, для яких я особисто кодував FPGA. Існує більше ніж один спосіб шкіри шкіри кішки. Вибір пристрою залежить від багатьох факторів проектування.
stanri

5
@reirab все, що FPGA може зробити, ASIC може зробити для меншої потужності та нижчих граничних витрат виробництва. Переваги FPGA полягають у виробництві прототипів та малому обсязі виробництва, оскільки передові витрати на ASIC значно більші; Це означає, що останні мають сенс лише тоді, коли дизайн буде доопрацьований, і ви робите їх багато.
Ден Нілі

Дивно стверджувати, що процесор є більш гнучким, ніж FPGA, враховуючи, що ви можете легко реалізувати процесор у FPGA (будь-який серйозний студент CS повинен зробити це хоча б один раз). FPGA - це набагато нижча концепція, ніж процесор, тому просто не має сенсу порівнювати їх безпосередньо.
Voo

Ця відповідь мене справді хвилює. "Товар процесора - це час", "товар FPGA - це простір." Так? ASIC і CPU - це полярні протилежності, а FPGA сидять посередині, отримуючи як найкраще, так і найгірше з обох світів.
Веселий

20

Як каже Олін, щось на зразок мікроелемента є більш ефективним для багатьох завдань, і ви майже завжди знайдете мікро, що використовується там, де FPGA з’являється. Площа використовуваного кремнію (що означає нелінійну вартість) та енергоспоживання набагато менше. З цієї причини не рідкість впроваджувати "м'який" MCU на FPGA-, але вартість та продуктивність такого мікросередовища є значною.

Деякі сучасні FPGA містять одне або кілька «жорстких» ядер, таких як всюдисуща серія ARM. Крім того, вони можуть містити виділені блоки пам'яті, оскільки це дійсно неефективно робити пам'ять поза воротами. 32-бітове мікроядер займає крихітний біт кремнієвої області в типовому FPGA, що дає вам уявлення про відносні витрати.

Розробка значно складніша, і IP, як правило, не є настільки вільно доступним, як для мікро- і спеціалізованих рішень SOC - наприклад, ЖК-контролери, інтерфейси PCI, Ethernet MAC. Причина частково полягає в тому, що, розкриваючи логічні описи HDL, вони передають дизайн не просто обґрунтування дизайну. Ще одна причина полягає в тому, що продуктивність залежить від розміщення логіки в FPGA, що вимагає великих зусиль під час розробки.

Наступним ускладненням є те, що найскладніші FPGA засновані на оперативній пам’яті для конфігурації, а витрати процесу такі, що для зберігання конфігураційної та програмної пам’яті для будь-якого MCU на борту потрібна зовнішня енергонезалежна пам’ять. Ця пам'ять повинна бути завантажена в оперативну пам'ять при включенні живлення.

FPGA є надзвичайно корисними інструментами в наборі інструментів, але вони незабаром не збираються замінювати MCU або ASIC.


10

Найкраще використовувати кремній для роботи - це ASIC, нічого не витрачається, але вони мають величезну криву навчання, NRE та негнучкість.

Є два способи вбудувати гнучкість у чіп. а) Майте АЛУ, оптимізовану простір, і використовуйте його знову і знову на збережених даних. Це називається MCU, і потрібна велика площа кремнію, яка "нічого не робить", програмна пам'ять, широкі шини, що працюють від блоку до блоку, і комутатори доступу до шини. б) мати тонкозернисту логіку з кількома додатковими оптимізованими для простору частинами, такими як множники, невеликі оперативні пам’яті та прості процесори. Це називається FPGA і вимагає великої площі кремнію, який "нічого не робить", програмованих комутаторів та ліній зв'язку.

Очевидно, що з цими структурами MCU працюють найкраще для завдань, які можуть бути розбиті на послідовні шматки, а FPGA найкраще працюють для завдань, що потребують паралельної високої швидкості. Якщо застосування велике, а у собівартості переважають витрати на кремній, саме так будуть використовуватися ці два типи.

Якщо додаток легкий, але великий об'єм, у вартості переважає упаковка, а не кремній, і будь-який тип є життєздатним. У Altera є кілька дуже малих FPGA з дуже низькою потужністю, щоб конкурувати з MCU з доларом за долар.

У програмах з низьким обсягом витрат вартість розробки, як правило, домінує, і MCU виграють, якщо припустити, що вони мають швидкість


9

Що стосується споживання енергії та використання кремнію, то FPGA дуже погано порівняно з мікропроцесором.

FPGA споживає значну частину своєї області кремнію в логічній конфігураційній схемі, що не стосується мікро. Має бути набагато більше взаємозв'язків, ніж потрібно для спеціальної реалізації мікропроцесора.

FPGA споживає більше енергії, ніж виділений ASIC, такий як мікропроцесор, оскільки логіка реалізована не так ефективно.

Будь-яка функція, яка може бути реалізована в FPGA, може бути виконана ефективніше, дешевше, з меншим споживанням енергії, меншим простором плати тощо в спеціальному ASIC. Це за умови, що обсяги є досить великими, щоб компенсувати NRE.


Якщо мета - реалізувати весь набір функцій мікропроцесора, обов'язково. Після того, як ви перейдете до конкретного завдання, ви також можете виявити багато мікротравма кремнію в мікроконтролері - можливо, цей механізм шифрування витрачає місце у вашому проекті. Або CAN периферійний? Або одиниця з плаваючою комою? Найкраща ефективність використання FPGA нижча, але ви також не страждаєте від 0% використання на великих площах, як це робить мікроконтролер. (З іншого боку, з решіткою годин, використання 0% використання великих схем дуже бажано з точки зору живлення)
Ben Voigt

8

Мікропроцесорні системи та пізніші мікроконтролери змогли досягти величезної ступеня функціональності завдяки їх здатності використовувати багато окремих ланцюгів в них для виконання багатьох різних завдань у різний час. Я думаю, що корисно порівнювати аркадну машину Tank, розроблену в 1976 році, з грою Combat, яка працює на другому в світі мікропроцесорним ігровим автоматом, Atari 2600. Хоча існують деякі відмінності в геймплеї, апаратне забезпечення Atari 2600 по суті було розроблено впроваджувати ігри типу Tank за мінімальних витрат; той факт, що можна було змусити грати в різні ігри, вставляючи різні картриджі ROM, був приємним бонусом.

Гра Tank дозволяє двом гравцям керувати танками по екрану і вести постріли один в одного. У ньому є лічильники "ковзання" для позицій X та Y кожного танку, позиції X і Y для пострілів кожного гравця, лічильник вгору / вниз для кута кожного гравця та кут пострілу кожного гравця, лічильник за рахунок кожного гравця, X та Y растровий промінь - лічильники розташування та безліч схем управління поверх цих речей. У ньому є обладнання для отримання даних ігрового поля з ПЗУ та їх відображення, а також обладнання для вибору фігур для танків двох гравців та зарахування з ПЗУ та їх відображення.

Atari 2600 має лічильник ковзання для горизонтальних позицій кожного з двох об'єктів гравця, кожного з двох ракетних об'єктів, і один додатковий об'єкт під назвою "м'яч", який не використовується в бою, але використовується в деяких інших іграх. Для кожного з об’єктів програвача в ньому є апаратне обладнання для виведення шаблону, що зберігається у 8-бітовій засувці, а також "затримка" восьмибітової засувки для кожного гравця, яка копіюється в основний 8-бітний засув кожного разу, коли інший гравець форма оновлюється. Він також має горизонтальний лічильник положення променя та 20-бітну засувку у формі ігрового поля, яка виводиться на екран двічі за кожну лінію сканування, при цьому права копія виглядає як повтор або відображення зліва. У нього є обладнання для виявлення зіткнень, але не робити нічого, як наслідок цього. Це не так не має будь-якого обладнання для вертикальних позицій будь-яких об'єктів, а також вертикального положення (!), а також обладнання, пов'язане з веденням балів, відображенням рахунків, тривалістю гри тощо.

Усі функції, для яких апарат 2600 опускає, керуються програмним забезпеченням у картриджі. Потрібно лише перевірити вертикальну позицію кожного об'єкта на позицію растрового проміння один раз на кожну лінію сканування, необхідно лише оновити рахунок гравця та час, що залишився в грі, щонайменше один на кадр, результати гравців зберігаються на лініях сканування над ігровим полем і, таким чином, можуть використовувати одне і те ж обладнання, яке використовується для ігрового поля тощо.

Нормальним підходом до здійснення гри типу "Tank" в FPGA було б використання окремих схем для різних функцій приблизно так само, як і аркадна машина 1976 року. Такий підхід працював, але використовував значну кількість апаратних засобів. Підхід, заснований на мікропроцесорі, міг би усунути більше половини цього обладнання в обмін на додавання мікропроцесора, який, ймовірно, міститиме менше схем, ніж замінене обладнання (2600 могло б реалізувати ігри набагато складніші, ніж Tank, для чого було б потрібно набагато більше апаратного забезпечення якщо вони не використовували мікропроцесор).

FPGA є відмінними у випадках, коли потрібен пристрій, який може виконувати багато простих завдань одночасно . Системи на основі мікропроцесорів (або на основі мікроконтролерів), як правило, кращі, однак у випадках, коли є багато завдань, які потрібно виконати, але їх не потрібно обробляти одночасно, оскільки вони полегшують використання невеликої кількості схеми для досягнення великої кількості різних цілей.


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

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

Напевно, Combat міг би реалізувати міни як миготливі квадрати, якби він був готовий відмовитись від деяких інших своїх варіантів, таких як підстрибуючі постріли і т. Д., Але я думаю, що Джо Декуїр (програміст) зробив хорошу роботу, вибираючи відтворювані варіанти. Моя одна особливість полягає в тому, що біплан проти бомбардувальника міг би бути веселішим, якби бомбардувальник був 2х, а не 4х спрайт.
supercat

5

Це цілком вартість. Коли мікро може бути від 30 центів, дешевий FPGA знаходиться на території 5 доларів. Вартість може здатися не такою високою, але коли ви заробляєте мільйон пернатих іграшкових новинок, щоб продати за 10 доларів, то ціна FPGA вбиває підсумки.


6
Вартість - це, безумовно, одне питання, але сказати, що різниця цілком полягає в тому, що вартість настільки ж наївна, як і мислення, що всі мікрофони можуть бути замінені FPGA.
Олін Латроп

@OlinLathrop, якщо вартість не була проблемою, то все, що може зробити мікро, може зробити FPGA. Це було показано завдяки здатності FPGA утримувати м'яке ядро ​​мікроконтролера. Проблема полягає в тому, що FPGA, яка вміщає таке ядро, принаймні і на порядок дорожче, ніж мікроемульсійне ядро.
vini_i

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

2
Я не можу сказати, чи ви навмисно робите вигляд, що пропустите точку, чи просто щільно. Так чи інакше, ви реагуєте на те, що ніхто не сказав. Усі згодні з тим, що FPGA коштують дорожче, і ці витрати є проблемою. Але знову ж таки, стверджувати, що це єдине питання - просто неправильно. Якби я дав вам купу безкоштовних мікро- і FPGA, все ще є вагомі причини, чому ви б використовували мікросхему над FPGA у багатьох проектах.
Олін Летроп

4
@sleb: Ні, різниця у вартості пов'язана не лише з обсягом. Потрібна площа кремнію на поставлений затвор значно більша у FPGA, ніж у спеціальній мікросхемі, як мікроконтролер. Вся ця налаштованість на рівні взаємозв'язку затвора займає область кремнію. У великих обсягах вартість мікросхеми залежить від його кремнієвої площі.
Олін Латроп

5

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

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


Хоча це може бути правдою, це не виглядає достатньою для повного відповіді. Можливо, це було б краще як коментар, або ви могли б розширити його.
Нуль

Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх дописом.
Funkyguy

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