Процесори FPGA, як знайти максимальну швидкість?


14

Я просто потрапляю в FPGA, і якщо я правильно розумію, ви підключаєте логічні ворота разом за допомогою коду. Отже, якщо я розробляю процесор у Verilog, він повинен з'єднувати між собою деякі логічні ворота і працювати, але як я можу знати, як швидко мій DIY процесор може працювати? Від чого це залежить?


12
@KingDuken Мені цікаво про альтернативу Verilog для розробки чогось типу процесора, який ви маєте на увазі (не VHDL, я вважаю :))?
Євген Ш.

1
@KingDuken Це не проблема у мене, я вже створив свій процесор, і це архітектура на макеті, і хочу перенести його на FPGA. Моє запитання полягає в тому, як я можу підрахувати, якою буде максимальна тактова частота для мого процесора, що обмежує це?

4
Ви можете захотіти в Google "статичний аналіз часу"
The Photon

14
@KingDuken Як хтось, хто розробив два процесори, це насправді не забирає багато часу. Ви можете мати робочий процесор через 1-2 місяці, якщо знаєте, що робите.
користувач110971

2
@KingDuken Fun факт: Sun / Oracle випустив вихідний код Verilog для своїх процесорів UltraSPARC T1 і T2. Я випадково бачив декількох особисто, і всі вони працювали. FYI, вони навіть пішли виграти SPECint_rate2006! : D Це наочно показує, наскільки неможливо створити процесори в Verilog або інших HDL. Я робив так собі пару разів як хобі, і це насправді не є нічого неможливого (раз ти його погризеш, як завжди)
Річард Spacecat

Відповіді:


29

Швидкість дизайну обмежена кількома речами. Найбільше, швидше за все, буде затримка розповсюдження через комбінаторну логіку у вашій конструкції, що називається критичним шляхом . Якщо ви використовуєте швидку FPGA і дуже обережно пишете свій HDL, ви, ймовірно, можете вражати 700 МГц на щось на зразок Virtex Ultrascale +. На нижньому кінці FPGA, наприклад, Spartan 6, розумна цифра, ймовірно, більше схожа на 250 МГц. Для цього потрібні конвеєрні установки скрізь, щоб у вас був абсолютний мінімальний об'єм комбінаторної логіки між стаціонарними компонентами (мінімізували рівні логіки), низькі вентилятори (мінімізували навантаження на логічні елементи) та відсутність перевантажених щурів-гнізд (ефективні маршрути маршрутів).

Тканинна логіка різних FPGA матиме різні параметри часу. Більш швидкі, дорожчі FPGA матимуть менші затримки і, як результат, можна досягти більш високих тактових частот з однаковою конструкцією, або виконати більш складну конструкцію або конструкцію з меншим конвеєром на одній частоті. Продуктивність у конкретному процесі може бути однаковою - наприклад, Kintex Ultrascale та Virtex Ultrascale виготовляються за одним процесом і мають однакові затримки в комірки та маршрутизації. Неможливо сказати, наскільки швидко буде дана конструкція, не запускаючи її через ланцюг інструментів і не переглядаючи звіти про хронологічний аналіз із статичного аналізу часу.

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

Якщо ви можете оптимізувати свій дизайн так, щоб критичний шлях не був межею, тоді ви зіткнетесь з обмеженнями в генеруванні та розповсюдженні тактових годин (PLL, DCM, буфери годин та глобальні тактові мережі). Ці обмеження можна знайти у таблицях даних, але наблизитись до них нетривіально. Я працював на Virtex Ultrascale на частоті 500 МГц, але це було лише кілька лічильників, щоб надати тригерні сигнали іншим компонентам.


22

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

Або ви додаєте обмеження дизайну в першу чергу, і тоді інструменти дадуть вам знати, чи відповідають вони чи ні.


Що може спричинити невиконання обмежень? Що обмежує годинний період? Чи це залежно від FPGA, який я використовую, чи він однаковий для всієї родини FPGA? (Або, можливо, для кожного існуючого FPGA?)

3
Це залежить від швидкості роботи FPGA та кількості комбінаторної логіки, яку ви вкладаєте між FF у своєму дизайні.
Дейва

9
@ appmaker1358, ви намагалися прочитати таблицю даних для FPGA? Рейтинг швидкості - це один з найважливіших параметрів, який викликається у таблиці.
The Photon

2
Швидкість буде обмежена найдовшим тимчасовим шляхом, який буде найдовшою затримкою розповсюдження за логікою та маршрутизацією між двома стаціонарними елементами (фліп-флоп, оперативна пам’ять тощо). У різних FPGA будуть різні параметри часу і, отже, конструкція буде досягати різної швидкості на різних FPGA. Є деякі частини FPGA, хоча частотні обмежені, хоча компоненти розподілу тактової частоти та PLL зазвичай мають обмеження, але важко написати HDL, що наближається до тих, що стосуються нетривіальних конструкцій.
alex.forencich

3
Крім того, вам завжди потрібно додати обмеження в часі. Розміщення та маршрутизація враховують обмеження та працюють над тим, щоб намагатися їх виконувати. Якщо ви не додасте жодних обмежень, інструменти не будуть дуже старатися, і ви не отримаєте дуже оптимістичне число.
alex.forencich

13

Швидкість роботи вашого процесора буде базуватися на вашій тривалій затримці «flop to flop» у вашому синтезованому дизайні. Затримка флопа-флопа буде включати тактовий час до Q, маршрутизацію, логіку / LUT та час установки флопа. Ці додані разом утворюють критичний шлях вашого хронометражу, який ви можете перевірити у результатах звіту про хронологію інструментом "Місце і маршрут".

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

Зважаючи на це, виробники FPGA даватимуть різні класи швидкості для своїх деталей, які відповідають максимальній швидкості МГц. Наприклад, -2 Xilinx Artix - це частина «250 МГц», грубо кажучи, хоча вона здатна до більш високих тактових частот для висококонвеєрних конструкцій.

Коли ви взаємодієте з синтезом FPGA та інструментами місця та маршруту, вам потрібно буде дати обмежити свій дизайн. Вони повідомляють потоці інструменту цільову затримку флоп-флоп, яку ви намагаєтеся досягти. У Quartus (Altera) та Vivado (Xilinx) ці обмеження використовують синтаксис під назвою SDC, що означає обмеження дизайну Synopsys. SDC спочатку прийшов із світу ASIC і був прийнятий також галуззю FPGA. Ознайомтеся з SDC - це допоможе вам отримати потрібні результати.

Altera та Xilinx мають онлайн-спільноти, які допомагають використовувати синтаксис SDC та багато інших тем.

Все, що сказано, якщо вам важлива швидкість, вам слід врахувати FPGA, в якому є жорсткий макрос процесора, наприклад, Zynq.


-2

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

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