Выбор определяется битом 0 регистра состояния процессора MSTAT.
Список операций MAC:
R = X*Y - умножить X на Y;
R = (MR) + X*Y - добавить произведение X*Y к содержимому регистра MR;
R = (MR) – X*Y - вычесть произведение X*Y из содержимого регистра MR;
R = 0 - очистка регистра результата MR.
MAC обеспечивает два стандартных режима выполнения своих операций: дробный (для чисел в формате 1.15) и целый (целые числа, формат 16.0). Режим выбирается 4-м битом регистра состояния MSTAT: 1 в разряде – целочисленный режим, 0 – дробный.
В дробном режиме формат 32-битного выходного порта P поддерживает знаковое расширение и сдвиг содержимого на 1 бит влево перед добавлением в (вычитанием из) MR. Это означает, что 31-й бит порта P соответствует 32-му биту регистра MR (нулевому биту регистра MR2), нулевой бит порта P соответствует 1-му биту регистра MR (биту 1 регистра MR0), а младший, нулевой, бит регистра MR просто очищается; старшие семь разрядов регистра MR2 заполняются знаком (содержимым 31-го бита порта P).
В целочисленном режиме 32-битный результат выходного порта P при подаче в регистр MR не сдвигается. Все восемь разрядов регистра MR2 заполняются знаком порта P.
Для реализации вычислений с повышенной точностью MAC позволяет осуществлять любые комбинации форматов операндов X и Y: умножить знаковое на знаковое (SS), беззнаковое на знаковое (US), беззнаковое на беззнаковое (UU), знаковое на беззнаковое (SU). Форматы операндов записываются как часть инструкции и динамически выбираются из каждой инструкции умножения.
Особые режимы в MAC.
Сумматор генерирует флаг переполнения MV, засылаемый в регистр признаков результата («арифметического состояния») ASTAT после выполнения устройством каждой операции. Этот флаг устанавливается в 1 в случае, если результат суммирования/вычитания, интерпретируемый как число с дополнением до 2, приводит к переносу из регистровой пары MR0/MR1. Другими словами флаг MV устанавливается в 1, если верхние девять бит регистра MR не все одновременно равны 0 или 1.
В регистре MR может выполняться операция «насыщения», т.е. в регистре устанавливается максимальное положительное или отрицательное число при переполнении. Операция определяется флагом MV и знаковым битом регистра MR2:
Флаг MV Старший Результат после насыщения бит MR2
0 0 без изменений
0 1 без изменений
1 0 00000000 01111111111111111111111111111111
1 1 11111111 10000000000000000000000000000000
«Насыщение» в MAC – это операция (в отличие от ALU, где это режим). Выполнение этой операции необходимо использовать после умножений с накоплением так, чтобы предварительные результаты не вызывали насыщения, ибо это приведёт к потере точности.
Переполнение выше 40-го бита регистра MR не должно допускаться. Знак числа при этом теряется безвозвратно, и насыщение может получить совершенно противоположный результат. Но требуется более 255 простых переполнений MV, чтобы такое могло случиться.
Устройство имеет возможность округлять 40-битный результат R до 16-битного. Округление должно быть указано в команде с помощью опции RND. Округлённый результат направляется в регистр MR или MF. Когда происходит округление с регистром MR в качестве выходного, содержимое MR1 является округлённым 16-битным результатом.
5.4.3. Устройство сдвига SHIFTER.
Операционное устройство сдвига обеспечивает полный набор сдвигов для 16-битных аргументов, результатом которых является 32-битное слово. Операции включают логические и арифметические сдвиги и нормализацию. Устройство также производит нахождение порядка и общего порядка для блока их нескольких чисел. Базовые примитивы могут быть эффективно скомбинированы для вычислений повышенной точности и реализации вычислений с плавающей точкой.
Структурная схема устройства показана на рис.5.9.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.