Подтвердить что ты не робот

Алгоритмы ПЛИС доминируют над ЦП на

В течение большей части моей жизни я программировал процессоры; и хотя для большинства алгоритмов время работы Big-Oh остается неизменным на процессорах /FPGA, константы сильно различаются (например, большая часть мощности процессора теряется, перетасовывая данные, а для FPGA часто вычисляет привязку).

Я хотел бы узнать больше об этом - кто-нибудь знает хорошие книги/справочные материалы/учебники, посвященные проблеме:

какие задачи ПЛИС доминируют над ЦП (с точки зрения чистой скорости) какие задачи ПЛИС доминируют над ЦП (в терминах работы за каждый)

Примечание: отмеченная вики сообщества

4b9b3361

Ответ 1

[нет ссылок, только мои размышления]

FPGA - это, по сути, интерпретаторы для аппаратного обеспечения! Архитектура подобна специализированным ASIC, но для быстрого развития, и вы платите коэффициент в 10 раз и коэффициент [не знаете, по крайней мере, 10?] В энергоэффективности.

Итак, выполняйте любую задачу, когда выделенный HW может значительно превосходить процессоры, делятся на коэффициенты FPGA 10/[?], и у вас, вероятно, все еще будет победитель. Типичные качества таких задач:

  • Массивные возможности для мелкозернистого parallelism.
    (Выполнение 4 операций сразу не считается, 128 делает.)
  • Возможность для глубокой конвейерной обработки.
    Это также своего рода parallelism, но трудно применить его к единственная задача, поэтому она помогает, если вы можете получить множество отдельных задач для работайте параллельно.
  • (В основном) Пути фиксированных потоков данных.
    Некоторые мультиплексоры в порядке, но массивные случайные обращения плохие, потому что вы не могут их распараллелить. Но см. Ниже о воспоминаниях.
  • Высокая общая пропускная способность до многих мелких воспоминаний.
    FPGA имеют сотни небольших (O (1KB)) внутренних памяти (BlockRAMs на языке Xilinx), поэтому, если вы можете разбить вас использование памяти во многих независимых буферах, вы можете пользоваться данными пропускная способность, о которой никогда не мечтали CPU.
  • Малая внешняя полоса пропускания (по сравнению с внутренней работой). Идеальная задача FPGA имеет небольшие входы и выходы, но требует много внутренней работы. Таким образом, ваш FPGA не будет голодать в ожидании I/O. (Процессоры уже страдают от голода, и они облегчают его с очень сложными (и большими) кэшами, недоступными для FPGA.) Совершенно возможно подключить огромную пропускную способность ввода/вывода к FPGA (~ 1000 контактов в настоящее время, некоторые с высокоскоростными SERDES) - но для этого требуется специальная плата, созданная для таких пропускная способность; в большинстве сценариев ваш внешний ввод-вывод будет узкое место.
  • Достаточно просто для HW (также известный как секция SW/HW).
    Многие задачи состоят из 90% неправильной логики клея и всего 10% тяжелая работа ( "ядро" в смысле DSP). Если вы положите все это на ПЛИС, вы будете тратить драгоценную площадь на логику, которая не делает работать большую часть времени. В идеале, вы хотите, чтобы все гадости для обработки в SW и полностью использовать HW для ядра. ( "Мягкие ядра" процессоры внутри FPGA являются популярным способом упаковки большого количества медленная нерегулярная логика на среднюю область, если вы не можете разгрузить ее до реальный CPU.)
  • Бесполезные манипуляции с битами - плюс.
    Вещи, которые плохо сопоставляются с традиционными наборами инструкций процессора, такой как неприсоединенный доступ к упакованным битам, хэш-функции, кодирование и amp; сжатие... Однако не переоценивайте коэффициент, который дает вы - большинство форматов данных и алгоритмов, которые вы встретите, уже были разработаны, чтобы легко справляться с наборами инструкций процессора, а процессоры добавление специализированных инструкций для мультимедиа.
    Большая часть плавающей точки - это минус, потому что оба Процессоры и графические процессоры сжимают их на чрезвычайно оптимизированном выделенном кремнии. (Так называемые "DSP" FPGA также имеют множество выделенных блоков mul/add, но AFAIK это только целые числа?)
  • Требования к низкой задержке/в режиме реального времени - плюс.
    Аппаратное обеспечение действительно может сиять под такими требованиями.

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

Ответ 2

Ну, новейшее поколение частей Xilinx просто объявило хвастовство 4.7TMACS и логику общего назначения на частоте 600 МГц. (Это, в основном, Virtex 6s, наложенные на меньший процесс.)

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

Вы можете делать плавающие на них, но будет удар производительности. Блоки DSP содержат 25x18 бит MACC с 48-битной суммой. Если вы можете уйти с формами oddball и обходить часть нормализации с плавающей запятой, которая обычно происходит, вы все равно можете извлечь из них нагрузку на грузовик. (т.е. используйте вход 18Bit как неподвижную точку с плавающей точкой или поплавок с 17-битной мантиссией вместо обычного 24-битного.) Удвоенные поплавки будут потреблять много ресурсов, поэтому, если вам это нужно, вы, вероятно, сделаете лучше на ПК.

Если ваши алгоритмы могут быть выражены как в терминах операций добавления и вычитания, тогда логика общего назначения в них может использоваться для реализации gazillion adders. Такие вещи, как алгоритмы Bresenham line/circle/yadda/yadda/yadda, очень хорошо подходят для проектов FPGA.

ЕСЛИ вам нужно деление... EH... это болезненно и, вероятно, будет относительно медленным, если вы не сможете реализовать свои деления как множители.

Если вам нужно много функций триггера высокого уровня, не так много... Опять же, это может быть сделано, но это не будет красивым или быстрым. (Так же, как это можно сделать на 6502.) Если вы можете справиться с использованием таблицы поиска в ограниченном диапазоне, то ваш золотой!

Говоря об 6502, демо-кодер 6502 может заставить одну из этих вещей петь. Любой, кто знаком со всеми старыми математическими трюками, которые программисты использовали на старой школьной машине, все равно будет применяться. Все трюки, которые современный программист говорит вам, "дайте библиотеке сделать для вас", - это те вещи, которые вам нужно знать, чтобы реализовать математику. Если вы можете найти книгу, в которой рассказывается о том, как делать 3d на основе Atari или Amiga на 68000, они обсудят много способов реализовать вещи только в целых числах.

В любом случае любые алгоритмы, которые могут быть реализованы с использованием таблиц поиска, будут ОЧЕНЬ хорошо подходят для ПЛИС. Мало того, что у вас есть блок-модули, распространяемые через часть, но сами логические ячейки могут быть сконфигурированы как различные СНМП и мини-барабаны.

Вы можете просматривать такие вещи, как операции с фиксированным битом, как БЕСПЛАТНО! Он просто управляется маршрутизацией. Исправленные смены или разворот бит ничего не стоят. Операции динамического бита, такие как сменная на переменную, будут стоить минимальное количество логики и могут быть выполнены до тех пор, пока корова не вернутся домой!

Самая большая часть имеет 3960 мультипликаторов! И 142 200 фрагментов, каждый из которых может быть 8-битным сумматором. (4 6Bit Luts за кусочек или 8 5 бит Luts на срез в зависимости от конфигурации.)

Ответ 3

Выберите громовой алгоритм SW. Наша компания делает HW ускорение SW algo для жизни.

Мы сделали HW-реализации механизмов регулярного выражения, которые будут выполнять 1000 наборов правил параллельно со скоростью до 10 Гбит/с. Целевым рынком для этого является маршрутизатор, где антивирус и ips/ids могут работать в режиме реального времени по мере потоковой передачи данных, не замедляя работу маршрутизатора.

Мы сделали HD-кодирование видео в HW. Для преобразования его в HD использовалось несколько часов обработки в секунду. Теперь мы можем сделать это практически в режиме реального времени... для преобразования 1 секунды фильма требуется почти 2 секунды обработки. Netflix использовал наш HW почти исключительно для своего видео по запросу.

Мы даже сделали простые вещи, такие как RSA, 3DES и AES шифрование и дешифрование в HW. Мы сделали простой zip/unzip в HW. Целевой рынок для этого - для видеокамер безопасности. В правительстве имеется огромное количество видеокамер, генерирующих огромные потоки данных в режиме реального времени. Они запирают его в реальном времени, прежде чем отправлять его по сети, а затем разархивировать его в реальном времени на другом конце.

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

Попробуйте сделать это в программном обеспечении!: -)

Ответ 4

Для чистой скорости:  - Паразитируемые  - DSP, например. видеофильтры  - Перемещение данных, например. DMA