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 мкс,
определите время обработки. Сравните результат со временем вычисления БПФ того
же массива в при
большем объеме быстродействующей памяти.
Упражнение.
Несколько более сложным вариантом предыдущей задачи является
выполнение БПФ большого объема в реальном времени. Попытайтесь перечислить
основные действия (и определить длительность их выполнения), необходимые для
такой обработки. Составьте блок-схему программы. В результате должна получиться
система с одним входом и одним выходом, причем отсчеты сигнала последовательно
поступают на вход, а отсчеты спектра последовательно появляются на выходе в
реальном времени. Оцените максимальную скорость поступления данных, при
которой еще
справляется с обработкой.