Сдвиг влево в этом случае не нужен, т.к. он изменит числовое представление результата. В табл. 15.1 показаны форматы данных операндов и результата для вычислительных устройств процессора ADSP-2181.
Таблица 15.1 Форматы данных операндов и результата для вычислительных устройств процессора ADSP-2181
Операции |
Арифметические форматы |
Операнды |
Результат |
Устройство ALU |
Сложение |
Знаковые числа или без знака |
Установка флагов |
Вычитание |
Знаковые числа или без знака |
Установка флагов |
Логические операции |
Двоичные строки |
Тот же, что и операнды |
Деление |
Знаковые числа или без знака |
Тот же, что и операнды |
Переполнение ALU |
Знаковые числа |
Тот же, что и операнды |
Бит коррекции ALU |
16-разрядные числа без знака |
Тот же, что и операнды |
Насыщение ALU |
Знаковые числа |
Тот же, что и операнды |
Устройство MAC (дробные числа) |
Умножение (P) |
1.15 знаковые числа /без знака |
32 разряда (2.30) |
Умножение (MR) |
1.15 знаковые числа /без знака |
2.30, сдвинутый к 1.31 |
Умножение с накоплением |
1.15 знаковые числа /без знака |
2.30, сдвинутый к 1.31 |
Умножение с вычитанием |
1.15 знаковые числа /без знака |
2.30, сдвинутый к 1.31 |
Насыщение MAC |
Знаковые числа |
Тот же, что и операнды |
Устройство MAC (целые числа) |
Умножение (P) |
1.15 знаковые числа /без знака |
32 разряда (32.0) |
Умножение (MR) |
16.0 знаковые числа /без знака |
32.0 без сдвига |
Умножение с накоплением |
16.0 знаковые числа /без знака |
32.0 без сдвига |
Умножение с вычитанием |
16.0 знаковые числа /без знака |
32.0 без сдвига |
Насыщение MAC |
Знаковые числа |
Тот же, что и операнды |
Устройство сдвига Shifter |
Логические сдвиги |
Баз знака/двоичные строки |
Тот же, что и операнды |
Арифметические сдвиги |
Знаковые числа |
Тот же, что и операнды |
Определение порядка |
Знаковые числа |
Тот же, что и операнды |
Структура MAC
Рассмотрим подробнее содержимое устройства MAC. Его структурная схема приведена на рис. 15.1.
Рис. 15.1. Структурная схема MAC
MAC имеет два входных 16-разрядных порта X и Y и один 32-разрядный порт вывода результата P. 32-разрядный результат поступает в 40-разрядный блок сложения/вычитания, который либо прибавляет, либо вычитает текущий результат из регистра результата MR, либо передает текущий результат непосредственно в MR. Регистр MR имеет 40 разрядов. Фактически регистр MR состоит из трех регистров. Два из них, MR0 и MR1, являются 16-разрядными, а регистр MR2 8-разрядный. Мультиплексоры MUX позволяют коммутировать внутри устройства один из нескольких операндов.
Блок сложения/вычитания имеет более 32 разрядов для того, чтобы учесть промежуточные переполнения в ряде операций умножения с накоплением. Флаг MV (переполнение) устанавливается в единицу, если значение аккумулятора превышает 32 разряда.
Регистры ввода-вывода подобны регистрам ALU. Порт X может принимать данные из регистра MX или из любого другого регистра на R-шине результата. R-шина соединяет выходные регистры всех вычислительных модулей для непосредственного использования результатов вычислений в качестве входных операндов. Регистр MX состоит из двух регистров (MX0 и MX1).
Эти регистры читаются и записываются с DMD-шины. Организованы регистры MX0 и MX1 таким образом, что один из них поставляет множитель в блок умножения, а другой управляет DMD-шиной.
Порт Y принимает данные из регистра MY или регистра обратной связи MF. Регистр MY также разбит на два регистра (MY0 и MY1), доступ к которым осуществляется с DMD-шины и возможна запись с PMD-шины. Система команд предусматривает чтение этих регистров с помощью PMD-шины, но прямого доступа для этой операции нет, в этом случае используется устройство DMD-PMD обмена. Выводы регистра MY устроены аналогично MX.
Результат умножения поступает либо в блок сложения/вычитания, либо в регистры MY или MF. Регистр обратной связи MF позволяет результату вычисления в предыдущем цикле становиться операндом умножения на входе Y, в последующей операции. 40-разрядный регистр MR разделен на три регистра (MR0, MR1, MR2). Содержимое любого из них может быть выведено на DMD-шину или R-шину и записано с DMD-шины.
Читать дальше