Регистр MR имеет возможность насыщения в определенном положительном или отрицательном значении, если происходит переполнение. Насыщение зависит от состояния бита MV регистра состояний арифметики ASTAT и бита MSB регистра MR2. Операцию насыщения описывает табл. 15.3.
Таблица 15.3
Флаг MV | Старший разряд MR2 | Содержимое регистра MR после операции |
---|---|---|
0 | 0 или 1 | Без изменений |
1 | 0 | 00000000 0111111111111111 1111111111111111 (положительное) |
1 | 1 | 11111111 1000000000000000 0000000000000000 (отрицательное) |
Насыщение в MAC является скорее командой, чем режимом, как в ALU. Она используется при завершении последовательности умножений с накоплением, таким образом, чтобы промежуточные переполнения не привели сумматор к насыщению.
Переполнение больше старшего разряда MSB недопустимо. В обратном случае знаковый разряд будет потерян, и насыщение не будет правильным. Однако, чтобы достигнуть этого состояния, требуется 255 циклов переполнения.
В сумматоре MAC можно округлять 40-разрядный результат на границе между 15-м и 16-м разрядами. Округление относится к системе команд процессора. Округленный результат направляется либо в регистр MR, либо в регистр обратной связи MF. Когда для вывода используется MF, в него записывается 16-разрядный округленный результат. Аналогично, если для вывода выбран MR, то в MR1 записываются 16 разрядов округленного результата, а в регистр MR2 результат округления, таким образом, получается 24-разрядный округленный результат.
Сумматор производит процедуру округления без смещения. Стандартный метод смещенного округления состоит в записи единицы в 15-й разряд. Этот метод вызывает положительное смещение, так как срединное значение числа, когда MR=0x8000 округляется в сторону увеличения. Сумматор устраняет это смещение, принудительно устанавливая шестнадцатый разряд в ноль, когда значение регистра MR достигает середины. При этом четные значения MR1 округляются в сторону уменьшения, а нечетные в сторону увеличения. Таким образом достигается нулевое смещение при выборе множества равномерно распределенных значений. Для наглядности сказанного выше, в табл. 15.4 приведено два примера операций округления результата.
Таблица 15.4
Операнды и операции | Регистры | ||
---|---|---|---|
MR2 | MR1 | MR0 | |
Пример 1 | |||
Неокругленное значение, где 15-й разряд равен 1 | xxxxxxxx | xxxxxxxx 00100101 | 1xxxxxxxxxxxxxxx |
Прибавление 1 к 15-му разряду и учет переноса | 100000000 0000000 | ||
Округленное значение | xxxxxxxx | хххххххх 00100110 | 0xxxxxxxxxxxxxxx |
Пример 2 | |||
Неокругленное значение, где 15-й разряд равен 1, а разряды с 0-го по 14-й равны нулю | xxxxxxxx | хххххххх 00100110 | 100000000 0000000 |
Прибавление 1 к 15-му разряду и учет переноса | 100000000 0000000 | ||
Неокругленное значение, где бит 16 равен 1 | xxxxxxxx | хххххххх 00100111 | 00000000 00000000 |
Установка 16-го разряда в ноль и получение округленного значения | xxxxxxxx | хххххххх 00100110 | 00000000 00000000 |
x — произвольное значение (0 или 1).
В первом примере число не является срединным и производится его стандартное округление.
Во втором примере число имеет срединное значение, поэтому его 16-й разряд устанавливается в ноль. Алгоритм округления применяется для каждой операции округления, но становится очевидным лишь при таком наборе младших бит, который показан в примере 2.
В процессорах ADSP-2181 возможен режим смещенного округления. Этот режим выбирается путем установки 12-го бита (BIARND) регистра управления SPORT0. Если BIARND=0, то используется операция несмещенного округления, если BIARND=1, то смещенного. Примеры таких операций приведены в табл. 15.5.
Таблица 15.5