Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС-всё(ЭКЗАМЕН).docx
Скачиваний:
36
Добавлен:
09.12.2018
Размер:
8.84 Mб
Скачать

5.4.2. Умножитель/накопитель mac.

Это операционное устройство обеспечивает высокоскоростное умножение, умножение с накоплением (или вычитанием) результата, «насыщение» и очистку результата.

Структурная схема MAC показана на рис.5.8.

Операционная схема умножителя имеет два входных 16-битных порта X и Y и один 32-битный выходной порт результата P. Результат умножения (32-разрядное произведение) поступает на 40-битный сумматор, который прибавляет или вычитает результат умножителя к регистру результата MR. Ширина регистра результата MR составляет 40 бит; он состоит из трёх регистров: двух 16-битных MR0 и MR1 и 8-битного MR2. Сумматор совместно с регистром MR имеют такую ширину для того, чтобы допустить промежуточные переполнения при выполнении нескольких операций подряд. Флаг переполнения умножителя MV (multiplier overflow) устанавливается, если значащие разряды появились выше 32-битной границы регистра MR.

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

Результат работы сумматора загружается либо в регистр обратной связи MF, либо в регистр результата MR. Регистр обратной связи MF позволяет использовать биты 16 – 31 результата непосредственно как операнд Y в следующем цикле. 40-битный регистр результата MR обеспечивает прямую загрузку любого из трёх регистров MR0, MR1 и MR2 через шину DMD или запись их содержимого через шину DMD или шину промежуточных результатов R.

MAC, аналогично ALU, содержит второй (теневой) банк регистров, что «тенью» показано на рис.5.8.

Выбор определяется битом 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-битным результатом.

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