Назначение битов регистра ASTAT описано ниже:
· AZ – ZERO - логическое сложение всех битов регистра результатов ALU. Устанавливается в 1, если результат операции равен нулю.
· AN – NEGATIV - знаковый разряд результата ALU. Единица, если результат отрицательный.
· AV – OVERFLOW – устанавливается в единицу, если происходит переполнение ALU.
· AC – CARRY – бит переноса.
· AS – SIGN – знаковый разряд входного X-порта ALU. Необходим только для команды ABS.
· AQ – QUOTIENT – бит частного. Генерируется только командами DIVSи DIVQ.
Вычислительный модуль МАС обеспечивает быстрое умножение, умножение с добавлением, умножение с вычитанием, функции насыщения и очистка в ноль. Функция обратной связи позволяет части результата в одном цикле быть одним из сомножителей в следующем.
На рисунке 3.1. показана блок-схема вычислительного модуля умножения с накоплением.
МАС имеет два входных 16-разрядных порта X и Y и 32-разрядный порт вывода результата P. 32-разрядный результат поступает в 40-разрядный блок сложения/вычитания, который либо прибавляет, либо вычитает текущий результат из регистра результата МАС (MR), либо передает текущий результат непосредственно в MR (регистр MR имеет 40 разрядов). Фактически регистр MR состоит из трех (MR0 и MR1 – 16-разрядные и MR2 – 8-рахрядный) регистров.
Название | Назначение |
X×Y | Умножение X на Y |
MR+X×Y | Умножение и сложение с MR |
MR-X×Y | Умножение и вычитание из MR |
0 | Очистка MR |
ADSP-2100 обеспечивают два режима работы операции умножения с накоплением: работы с дробными числами (1.15) и работа с целыми числами (16.0).
В дробном режиме выходной регистр P корректирует формат, т.е. прежде чем добавить значение в MR оно сдвигается на один разряд влево. Таким образом, бит 31 регистра P запишется в бит 32 регистра MR, а 0-ой бит – в первый. В позицию LSB, при этом записывается ноль. На рисунке 3.2. показан дробный формат работы модуля умножения.
MV | MSB | Содержимое регистра MR после операции |
0 | 0 или 1 | Без изменений |
1 | 0 | 00000000 0111111111111111 1111111111111111 (положит.) |
1 | 1 | 11111111 1000000000000000 0000000000000000 (отрицат.) |
Насыщение в МАС является скорее командой, чем режимом, как в ALU. Она используется при завершении последовательности умножений с накоплением, таким образом, чтобы промежуточные переполнения не привели сумматор к насыщению.
Переполнение больше MSB недопустимо. В обратном случае знаковый разряд будет потерян и насыщение не будет правильным. Однако, чтобы достигнуть этого состояния требуется 255 переполнений.
Сумматор может округлять 40-разрядный результат до 15-16 разряда. Округление можно отнести к системе команд микропроцессора. Округленный результат направляется либо в MR, либо в регистр обратной связи MF. Когда для вывода используется MF, в него записывается 16-разрядный округленный результат. Аналогично, если для вывода выбран MR, то в MR1 записываются 16 разрядов округленного результата, а в MR2 – эффект округления, таким образом получается 24-разрядный округленный результат.
Сумматор использует несмещенную схему округления. Стандартный метод смещенного округления состоит в записи 1 в 15-ю разрядную позицию. Этот метод вызывает ряд положительных смещений, начиная с середины (когда MR=0х8000), округляя результат вверх. Сумматор же устраняет это смещение, устанавливая 16 бит в 0, когда значение регистра MR достигает середины. При этом четные значения MR1 округляются вниз, а нечетные вверх. Таким образом получается однородная последовательность смещений.
Пример типичной операции округления:
MR2 MR1 MR0
Неокругленное значение : xxxxxxxx xxxxxxxx00100101 1xxxxxxxxxxxxxxx
Бит 15 = 1
Прибавляем 1 к 15 разряду и смещаем 1
Округленное значение : xxxxxxxx xxxxxxxx00100110 0xxxxxxxxxxxxxxx
MR2 MR1 MR0
Неокругленное значение : xxxxxxxx xxxxxxxx01100110 1000000000000000
Бит 15 = 1 и биты 0-14 = 0
Прибавляем 1 к разряду 15 и сдвигаем 1
xxxxxxxx xxxxxxxx01100111 0000000000000000