Главная > Разное > Теория и применение цифровой обработки сигналов
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

11.16. Обзор особенностей FDP, связанных с распараллеливанием

В FDP действия над командами, арифметические операции и обращения к памяти выполняются параллельно. В связи с этим пришлось изменить некоторые стандартные команды ЦВМ, а также ввести несколько новых команд. Выше уже упоминались затруднения при выполнении команд перехода, вызванные поточным исполнением команд. В качестве выхода из положения было решено переходить к выполнению команды, следующей за командой перехода, не дожидаясь окончания проверки условия перехода. Такая схема вполне допустима при наличии в тексте программы одиночных (изолированных) команд перехода. Если же встречаются цепочки переходов,  то  зависимость получаемых результатов от входных (обрабатываемых) данных настолько сложна, что программисту будет трудно разобраться в работе машины. Для решения проблемы было предложено ввести команду «пропуск при переходе» SOJ (skip on jump), записываемую в левых 18 разрядах, если в правых 18 разрядах записана команда перехода. При этом, хотя проверка условия выполнения перехода еще не закончена, последующая команда вызывается, но пока не исполняется. Следовательно, сохраняется возможность отмены этой команды, если в результате проверки условия перехода выяснится, что переход необходим. Таким образом, за счет команды SOJ переход в  становится аналогичным переходу в обычной ЦВМ, но при этом приходится терять 150 нс на вызов отменяемой команды.

В большинстве ЦВМ переходы соответствуют различным арифметическим условиям: в накопителе находится нулевое или отрицательное число, произошло переполнение и т. д. Поскольку в  используются четыре арифметических устройства, то ситуация усложняется. Эта трудность преодолевается соответствующим выбором  формата команды:

 

6

8

 

 

 

 

Переход по

арифметическому условию

Четыре разряда справа определяют, какое АУ является управляющим. Если какое-либо из  равно 1, то переход произойдет, когда в соответствующем арифметическом устройстве АУ; будет выполнено условие перехода. Если несколько  равно 1, то переход происходит согласно логической функции ИЛИ. Так, если , то переход по команде JPR (jump if R is positive — переход при положительном ) произойдет, если хотя бы в одном из четырех регистров  окажется положительное число. Другим методом обработки условий перехода в  является использование команды блокировки  (nullify). При параллельной работе четырех АУ может потребоваться, чтобы каждое АУ работало по своей программе, зависящей от получаемых результатов (данных). Команда  позволяет заблокировать любую совокупность АУ, в результате чего состояния этих АУ не будут изменяться, даже если на них будут поступать соответствующие команды.  Код команды  имеет следующий формат:

 

6

 

3                3 АУ1           АУ2

3

А УЗ

2

АУ4

Для каждого АУ возможны восемь условий блокировки:

 

 

000 001 010

011

100

101

110

111

не блокировать

блокировать, если

блокировать, если

блокировать, если

блокировать, если

блокировать, если

блокировать, если

блокировать

 

В дополнение к команде  имеется команда  (activity) снятия блокировки с АУ, по условию или безусловно отменяющая блокировку АУ. Обе команды —  и  — исполняются с задержкой на время выполнения одной команды, что позволяет выполнить в АУ две команды после проверки условия выполнения команды NUL и одну после проверки условия выполнения команды .

Еще одна трудность связана с разделением памяти на ЗУ программы и ЗУ чисел, а также с наличием синхронного поточного обращения к ЗУ . Такое обращение может привести к сбоям, если разрешается как считывание, так и запись в . Если же запись не разрешается, то программы нельзя изменять, а это весьма неудобно. Например, программы БПФ и обратного БПФ отличаются лишь пятью или шестью командами. Кроме того, программа может быть большой и не помещаться в 512 ячейках, имеющихся в . Поэтому, чтобы скорость обработки существенно не изменялась, излишек текста программы  следует  хранить   в   ЗУ  и , предусмотрев возможность быстрого считывания из этих ЗУ в Мс. В  это обеспечивается командой пересылки массива, при выполнении которой управление передается специальному устройству,    единственной   задачей   которого    является   пересылка команд из ЗУ  и  в ЗУ . Число пересылаемых команд и их размещение в ЗУ задаются кодом команды пересылки массивов. При описании  уже отмечалось, что процессор оперирует с 18-разрядными словами. Следует, однако, помнить, что полная длина слова команды равна 36 разрядам, а так как к ЗУ  и  можно обращаться для записи или считывания одновременно, то в  распоряжении  программиста  имеются  и  36-разрядные числа. Более того, наличие четырех АУ позволяет формировать и обрабатывать 72-разрядные числа. Предусматривая все эти варианты, проектировщики постарались обеспечить в  широкие возможности для программного изменения  точности  вычислений. Для этого используется команда объединения  (link). С ее помощью можно разряд переноса передать из  в , а с применением команд сдвига — перемещать числа из  в АУИ и обратно. Например, команда  используется для сложения 36-разрядных чисел.  Первыми складываются младшие 18 разрядов, а затем — старшие. Если в команде  все четыре определяющих разряда — единицы, то все 72 разряда в четырех регистрах  можно сдвинуть (по кольцу) вправо или влево на один разряд, используя только одну 18-разрядную команду.

 

<< Предыдущий параграф Следующий параграф >>
Оглавление