Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
razrabotka_ustroystv_na_osnove_tsifrovyih_signa...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.57 Mб
Скачать

Глава 16. Устройство сдвига

В этой главе говорится об устройстве сдвига сигнального процессора и выполняемых с его помощью командах.

Устройство сдвига именуется как Shifter и обеспечивает полный набор сдвиговых функций для 16-разрядных операндов, результатом которых является 32-разрядное слово данных. К числу сдвиговых функций относятся арифметические сдвиги, логические сдвиги и нормализация. Кроме того, shifter позволяет вычислить порядок (экспоненту) числа и порядок для целого массива (блока) чисел. Эти базовые функции могут быть объединены для быстрого преобразования любого формата чисел, в том числе и чисел с плавающей точкой.

На рис. 16.1 представлена структурная схема устройства сдвига. Shifter включает в себя следующие основные блоки: массив сдвига, логику OR/PASS (ИЛИ/ПЕРЕДАЧА), детектор порядка и логику сравнения порядка.

Рис. 16.1. Структурная схема устройства сдвига

Массив сдвига состоит из шестнадцати 32-разрядных регистров. Он принимает 16-разрядные данные и в одном цикле может поместить их в любой позиции 32-разрядного поля вывода, начиная с данных, полностью сдвинутых влево, и кончая данными, полностью сдвинутыми вправо, за один цикл. Это дает 49 вариантов возможных размещений 16-разрядных входных данных в 32- разрядном поле вывода, как показано в табл. 16.1.

Таблица 16.1 Варианты возможных размещений 16-разрядных входных данных в 32-разрядном поле вывода

Размещение 16 входных разрядов определяется кодом управления «С» и сигналом ссылки HI/LO. Код управления «С» является 8-битным значением, которое указывает направление сдвига и число разрядов, на которое необходимо будет сдвинуть данные.

Положительные значения кода управления указывают на сдвиг данных влево, а отрицательные на сдвиг вправо. Код управления может быть взят из регистра экспоненты SE или непосредственно из инструкции команды. Сигнал ссылки HI/LO определяет начальную точку сдвига. В состоянии HI все сдвиги производятся относительно регистра SR1 (старшей половины выходных данных), а в состоянии LO все сдвиги производятся относительно регистра SR0 (младшей половины выходных данных). В табл. 16.2 показаны все возможные комбинации сдвигов данных для сигналов ссылки LO и HI.

Таблица 16.2 Возможные комбинации сдвигов данных для сигналов ссылки L0 и HI

Массив сдвига и связанная с ним логика OR/PASS находятся в окружении набора регистров. Входной регистр SI (Shifter Input) содержит данные для массива сдвига и детектора порядка. Разрядность регистра SI составляет 16 бит.

Этот регистр записывается с DMD-шины. В качестве входных регистров для массива сдвига и детектора порядка могут служить регистры AR, SR или MR, подключенные через R-шину. Выходной 32-разрядный регистр SR (Shifter Result) разделен на два 16- разрядных регистра SR0 и SR1. Загрузка данных в эти регистры может производиться с DMD-шины, а результат выводится на R-шину или DMD-шину. Регистр SR подключен к блоку OR/PASS логики для проведения сдвигов двойной точности.

Регистр SE (Shifter Exponent) состоит из 8 разрядов и содержит порядок во время нормализации и денормализации данных. Он доступен через 8 младших разрядов DMD-шины. Его формат 8.0 в дополнительном коде.

Регистр SB (Shifter Block) используется в блочных операциях для чисел с плавающей точкой. Его значение определяет сдвиг для нормализации чисел в блоке данных, т.е. значение, на которое должен произойти сдвиг для нормализации самого большого числа в блоке данных. Разрядность регистра SB составляет 5 бит. Он доступен через 5 младших разрядов DMD-шины. Его формат 5.0 в дополнительном коде.

При чтении регистров SE и SB на DMD-шину числа автоматически дополняются знаковыми битами до 16-разрядного значения. Любой из регистров SI, SE, SR может быть прочитан или записан в одном и том же цикле.также имеет банк теневых регистров SI, SE, SR и SB. Выбор банка регистров производится установкой нулевого бита регистра режима MSTAT процессора.

Устройство сдвига заполняет все биты 32-разрядного результата правее сдвига нулями, а левее сдвига битом расширения. Бит расширения может принимать значение знакового бита, бита флага АС из регистра ASTAT или нулевое значение, в зависимости от выполняемой инструкции.

Логика OR/PASS позволяет правильно комбинировать сдвинутые секции числа с двойной точностью. При выборе инструкции PASS результат массива сдвигов загружается в регистр SR без изменения. При выборе инструкции OR результат массива сдвигов подвергается операции «ЛОГИЧЕСКОЕ ИЛИ» с предыдущим значением регистра SR и после этого вновь помещается в SR.

Детектор порядка вычисляет степень из входного операнда устройства сдвига. Входное значение для него интерпретируется в зависимости от одного из трех режимов, в котором он работает.

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

В режиме HIX входной операнд воспринимается как результат сложения или вычитания, выполненного в ALU, когда могло произойти переполнение. Поэтому детектор степени берет в учет значение флага AV регистра ASTAT. Если он установлен, формируется дополнительный бит для нормирования данных. Если флаг сброшен, отличий между режимами HI и HIX нет. В режимах HI и HIX детектор степени формирует бит знака SS (Shifter Sing), который помещается в регистр ASTAT устройства ALU. Он соответствует старшему разряду входного операнда, за исключением тех случаев, когда установлен флаг AV в режиме HIX. В этом случае формируется отрицание старшего разряда входного операнда, для сохранения знака переполненного значения.

В режиме LO входной операнд интерпретируется как младшая половина числа с двойной точностью. В этом режиме детектор степени интерпретирует бит SS как знак числа. Регистр SE загружается результатом детектора порядка только в том случае, если регистр SE равен минус 15. Это происходит в тех случаях, когда старшая часть числа содержит лишь знаковые разряды. При этом выходное значение детектора порядка сдвигается на 16 разрядов влево, для того чтобы определить, что операнд является младшей половиной 32-разрядного числа.

Для наглядности, в табл. 16.3–16.5 показаны все три режима работы детектора порядка. В таблицах приняты следующие условные обозначения: S — знаковый бит, N — знаковый бит, D — незначащий бит.

Таблица 16.3 Детектор порядка в режиме работы HI

Таблица 16.4 Детектор порядка в режиме работы HIX

Таблица 16.5 Детектор порядка в режиме работы LO

Источниками входных данных в устройстве сдвига могут служить регистры SI, AR, MR0, MR1, MR2, SR0 и SR1. Результат работы устройства сдвига всегда помещается в регистр SR (SR0, SR1).

Как было сказано выше, устройство сдвига выполняет следующие функции:

• Арифметический сдвиг (ASHIFT)

• Логический сдвиг (LSHIFT)

• Нормализация числа (NORM)

• Определение экспоненты (ЕХР)

• Блочное изменение экспоненты (EXPADJ)

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

Ниже приводится полный список команд устройства сдвига Shifter в соответствии с принятыми ранее условными сокращениями. Назначение команд приводится в тексте описания этих команд и комментариях для некоторых из команд.

Команды арифметического сдвига:

[IF cond] SR = |SR OR| ASHIFT xop |(HI)|;

                                  |(LO)|

Команды логического сдвига:

[IF cond] SR = |SR OR| LSHIFT xop |(HI)|;

                                  |(LO)|

Команды нормализации:

[IF cond] SR = |SR OR| NORM xop |(HI)|;

                                |(LO)|

Команды выделения порядка:

[IF cond] SR = EXP xop |(HI) |;

                       |(LO) |

                       |(HIX)|

Команды выравнивания блочного порядка:

[IF cond] SR = EXPADJ xop;

Команды арифметического непосредственного сдвига:

[IF cond] SR = |SR OR| ASHIFT xop BY <exp> |(HI)|;

                                           |(LO)|

Команды логического непосредственного сдвига:

[IF cond] SR = |SR OR| LSHIFT xop BY <exp> |(HI)|;

                                           |(LO)|

В записях некоторых команд присутствуют символы, которые имеют следующее назначение:— сдвиг выполняется относительно старших 16 разрядов (SR1);— сдвиг выполняется относительно младших 16 разрядов (SR0);— расширенный режим HI (при выделении порядка учитывается бит переполнения AV).

Например, команда:=EXP AR (HIX);

означает, что в регистр SE будет занесен результат выделения порядка из регистра AR в расширенном режиме, т.е. с учетом бита переполнения AV.

Команда:=NORM AR (HI); Нормализация

означает, что в регистр SR будет занесен результат нормализации регистра AR, причем сдвиг при нормализации будет выполняться относительно старших 16 разрядов.

Для всех команд устройства сдвига разрешено использовать следующие операнды xop: SI, SR0, SR1, AR, MR0, MR1, MR2, а в качестве ЕХР может быть любое целое число от -128 до 127.

Коды условия IF соответствуют кодам, приведенным ранее в табличном виде.

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

.MODULE float_point_sub;

 Программный модуль вычисления z = x - y в формате с плавающей точкой

 Входные операнды:

  AX0 = показатель x, АХ1 = мантисса x, AY0 = показатель y, AY1 = мантисса y.

 Выходные данные: AR = показатель z, SR1 = мантисса z

 Изменяются регистры: AX0,AY1,AY0,AF,AR,SI,SE,SR

 Время вычисления = 11 циклов

.ENTRY fps;: AF=AX0-AY0;   Показатель x > показателя y?GT JUMP shifty;  Если да - переход на сдвиг y=AX1, AR=PASS AF; Иначе - сдвиг x=AR;=ASHIFT SI (HI);=SR1-AY1; Вычисление мантиссыsubt;: SI=AY1, AR=-AF; SE=AR;=ASHIFT SI (HI);=SR1;=AX0, AR=AX1-AY1; Вычисление мантиссы: SE=EXP AR (HIX);=SE, SR=NORM AR (HI); Нормализация=AX0+AY0; Вычисление показателя;

.ENDMOD;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]