Алгоритмы FPGAs доминируют над центральными процессорами на

Для большей части моей жизни я запрограммировал центральные процессоры; и хотя для большинства алгоритмов, большое о время выполнения остается тем же на центральных процессорах / FPGAs, константы очень отличаются (например, большая мощность ЦП потрачена впустую, переставив данные вокруг; тогда как для FPGAs это, часто вычисляют связанный).

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

что делают задачи FPGAs доминируют над центральными процессорами на (с точки зрения чистой скорости), что делают задачи FPGAs доминируют над центральными процессорами на (с точки зрения работы на jule)

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

25
задан 2 revs, 2 users 90% 12 February 2017 в 16:36
поделиться

4 ответа

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

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

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

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

РЕДАКТИРОВАТЬ: Некоторые из этих условий - особенно. фиксированные потоки данных и множество отдельных задач, над которыми нужно работать - также включить битовое срезание на процессорах, что несколько выравнивает поле зрения.

34
ответ дан 28 November 2019 в 20:49
поделиться

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

1
ответ дан 28 November 2019 в 20:49
поделиться

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

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

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

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

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

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

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

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

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

У самой большой части 3960 множителей! И 142 200 слайсов, КАЖДЫЙ из которых может быть 8-битным сумматором. (4 6-битных лонжерона на ломтик или 8 5-битных ланц на ломтик в зависимости от конфигурации.)

9
ответ дан 28 November 2019 в 20:49
поделиться

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

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

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

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

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

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

6
ответ дан 28 November 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: