11.15. Подпрограммы для действий с плавающей запятой
FDP оперирует 18-разрядными
числами с фиксированной запятой, но позволяет также выполнять действия над
числами, имеющими плавающую запятую. В последнем случае сложение занимает
около 6,5 мкс, изменение знака — 1,5 мкс, умножение — около 2,0 мкс, деление —
около 10 мкс. Эти величины приблизительные, так как продолжительность операции
зависит от значений обрабатываемых чисел.
Под обрабатываемые массивы в FDP
отводятся два блока памяти
и
объемом по 4096 слов каждый.
Отсюда следует, что БПФ массива, содержащего более 2048 точек, нельзя выполнить
без обращения к большей памяти. Роль этой дополнительной памяти большего объема
играет ЗУ
, подключенное к каналу ввода-вывода FDP.
Фиг.
11.13. Вычисление БПФ большого массива с использованием магнитного ЗУ большого
объема в составе FDP.
Рассмотрим, как выполняется БПФ с использованием ЗУ
. В гл. 6 было
показано, что если представить данные в виде двумерной матрицы размером
, причем
, то БПФ
всего массива можно получить, найдя БПФ отдельных строк, перемножив все
коэффициенты на поворачивающие множители и выполнив затем БПФ столбцов.
Поскольку поворачивающих множителей
, их следует хранить в
вместе с обрабатываемым
массивом и при считывании очередной строки данных в ЗУ FDP вместе с ней должна передаваться и соответствующая строка
поворачивающих множителей. После поворота эта строка пересылается обратно в
. Таким образом, для обработки (включая
повороты всех строк матрицы) требуется
циклов обращения к памяти
. Как видно из фиг. 11.13, еще
циклов
потребуется для вычисления БПФ столбцов и пересылки результатов в память
. Полагая, что поворот занимает столько же времени, что и
выполнение базовой операции, и обозначая это время через
, а время,
затрачиваемое на обмен информацией между
и
,
— через
,
получим следующее выражение для времени выполнения БПФ всего массива:
(11.3)
Если,
например,
и
=1,2 мкс,
то
=0,87
с, причем большую часть этого времени занимает выполнение базовых операций,
необходимых в любом случае. Время, затрачиваемое только на выполнение
базовых операций
(если весь массив данных помещается в ЗУ
), составляет
=0,629 с. Отсюда
можно было бы сделать вывод, что ограничение объема быстродействующей памяти
не слишком
замедляет вычисление БПФ больших массивов, когда массивы хранятся в большом ЗУ
с произвольным доступом, подключенном к
в качестве устройства ввода—вывода. С
таким заключением не следует, однако, спешить. Заметим, что если время
обращения к
внешней памяти
слишком
велико, так что
превышает
первое слагаемое суммы (11.3), то
становится ограничивающим
фактором. В
может
составлять, например, 1,6 или 3,2 мкс (в зависимости от режима работы). При
=1,6 мкс и
=65 536 время
обмена
=0,52с,
т. е. меньше времени счета и не играет существенной роли. При
= 3,2 мкс, однако,
=1,04с, т.
е. именно оно ограничивает скорость обработки.
Упражнение.
Пусть объем памяти
равен 1024 числам и необходимо
выполнить 1024-точечное БПФ, используя
.
Считая, что
=1,2 мкс,
=0,5 мкс и
=3,2 мкс,
определите время обработки. Сравните результат со временем вычисления БПФ того
же массива в
при
большем объеме быстродействующей памяти.
Упражнение.
Несколько более сложным вариантом предыдущей задачи является
выполнение БПФ большого объема в реальном времени. Попытайтесь перечислить
основные действия (и определить длительность их выполнения), необходимые для
такой обработки. Составьте блок-схему программы. В результате должна получиться
система с одним входом и одним выходом, причем отсчеты сигнала последовательно
поступают на вход, а отсчеты спектра последовательно появляются на выходе в
реальном времени. Оцените максимальную скорость поступления данных, при
которой
еще
справляется с обработкой.