Что делает нелинейные функции вычислительно дорогими в аппаратном обеспечении (например, FPGA)? - PullRequest
0 голосов
/ 14 мая 2019

Я читал несколько статей о том, что нелинейные функции состояния (например, экспоненты) являются вычислительно дорогими.

Мне было интересно, что делает их вычислительно дорогими.

Применительно к «вычислительно дорогим» это означает с точки зрения затраченного времени или используемых аппаратных ресурсов?

Я попытался выполнить поиск в Google, но не смог найти простых объяснений этому.

1 Ответ

1 голос
/ 14 мая 2019

Не делая вид, что предлагаете ответ , но начните с того, что у вас есть в fpga.

Обычно вы ограничены сумматорами, множителями и некоторой памятью. Что вы можете сделать с ними?

Линейная функция - просто, с одним множителем и одним сумматором.

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

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

Так что это основные расходы - вы потратите много выделенных аппаратных ресурсов (множители, память для справочных таблиц) или потратите много времени на алгоритмы многоэтапного приближения или алгоритмы, которые уточняют результаты на одну «цифру» за итерация (целочисленное деление, CORDIC и т. д.).

...