Процессоры FPGA, как найти максимальную скорость?


14

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


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

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

4
Возможно, вы захотите Google "статический анализ времени"
Фотон

14
@KingDuken Как разработчик двух процессоров, это не так уж и много времени. Вы можете иметь работающий процессор через 1-2 месяца, если знаете, что делаете.
user110971

2
@KingDuken Забавный факт: Sun / Oracle выпустили исходный код Verilog для своих процессоров UltraSPARC T1 и T2. Я случайно видел несколько человек, и все они работали. К вашему сведению, они даже пошли выиграть SPECint_rate2006! : D Это ясно показывает, как невозможно проектировать процессоры в Verilog или других HDL. Я сделал это сам пару раз в качестве хобби, и это на самом деле не является чем-то невозможным (как только вы
начинаете это делать

Ответы:


29

Скорость дизайна ограничена несколькими вещами. Наиболее вероятной будет задержка распространения через комбинаторную логику в вашем проекте, называемую критическим путем . Если вы используете быструю FPGA и очень осторожно пишете HDL, вы, вероятно, могли бы достичь частоты 700 МГц на чем-то вроде Virtex Ultrascale +. На более низком уровне FPGA, например, Spartan 6, разумная цифра, вероятно, больше похожа на 250 МГц. Это требует повсеместной конвейерной обработки, поэтому у вас есть абсолютное минимальное количество комбинаторной логики между компонентами с состоянием (минимизировать уровни логики), низкими разветвлениями (минимизировать нагрузку на логические элементы) и отсутствием перегруженных крысиных гнезд (эффективных путей маршрутизации).

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

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

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


22

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

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


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

3
Это зависит от скорости работы ПЛИС и от того, сколько комбинаторной логики вы вкладываете между FF в свой дизайн.
Дэйв Твид

9
@ appmaker1358, вы пытались прочитать таблицу данных для FPGA? Оценка скорости является одним из наиболее важных параметров, указанных в таблице.
Фотон

2
Скорость будет ограничена самым длинным путем синхронизации, который будет самой длинной задержкой распространения через логику и маршрутизацию между двумя элементами с состоянием (триггеры, ОЗУ и т. Д.). Разные FPGA будут иметь разные параметры синхронизации, и, следовательно, дизайн будет достигать разных скоростей на разных FPGA. Хотя есть некоторые части FPGA, которые ограничены по частоте - компоненты распределения тактовой частоты и PLL обычно имеют ограничения, но трудно написать HDL, который приближается к таковым для нетривиальных проектов.
alex.forencich

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

13

Скорость, с которой будет работать ваш процессор, будет зависеть от самой длинной задержки флопа-флопа в вашем синтезированном дизайне. Задержка флоп-флоп будет включать в себя часы до Q, маршрутизацию, логику / LUT и время настройки флопа. Они, сложенные вместе, образуют критический путь вашего времени, который вы можете проверить в отчете о времени с помощью инструмента «место и маршрут».

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

Тем не менее, производители ПЛИС будут давать различные оценки скорости для своих частей, которые соответствуют максимальной частоте МГц. Например, -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.