Режим блокировки переполнения разрешается при установки бита 2 регистра MSTAT. В этом режиме при переполнении бит AV устанавливается и при последующих операциях остается в этом состоянии, таким образом следующее переполнение уже не генерируется. Бит состояния AV можно очистить непосредственно с DMD-шины.
Деление
ALU поддерживает методы деления. Деление осуществляется путем сложения и циклического сдвига с помощью двух специальных примитивов. Делить можно знаковые и без знаковые числа, однако делитель и делимое должны быть одного типа.
Обычная точность деления (32-разрядное делимое, 16-разрядный делитель, 16-разрядный остаток) реализуется за 16 циклов. Может быть получена большая или меньшая точность остатка. Делитель может быть сохранен в регистре AX0, AX1 или в любом регистре результатов R. Старший байт знакового делителя должен находиться либо в регистре AY1, либо в AF, без знакового – в AF. Младший байт делителя любого типа должен находиться в AY0. Остаток после деления будет записан в регистр AY0.
Первый из двух примитивов - это команда «деление-знак» (DIVS), преназначена для деления чисел со знаком. Она вычисляет знаковый бит остатка выполняя операцию исключающее-ИЛИ для знаковых разрядов делителя и делимого. Регистр AY0 сдвигается на одну позицию таким образом, чтобы знаковый разряд переместился в позицию LSB. Вычисленный зныковый разряд сохраняется в бит AQ регистра состояния. Структура операции DIVS показанна на рисунке 2.2.
При делении чисел без знака операция DIVS не применяется. В этом случае бит AQ устанавливается в 0 вручную. Он показывает, что остаток должен быть положительным.
|
|
|
Иногда необходимо некоторое изменение формата делимого и делителя. Например, если оба операнда знаковые и дробные (делимое в формате 1.31, а делитель – 1.15), то результат запишется в формате 1.15, т.о. для правильного результата необходимо, чтобы делимое было меньше делителя.
Чтобы разделить два целых числа (делимое в формате 32.1, а делитель – 16), необходимо перед делением привести делимое к формату 31.1, т.е. сдвинуть его влево на один разряд.
Делимое: BBBBB.BBBBBBBBBBBBBBBBBBBBBBBBBBB
NL NR
Делитель: BB.BBBBBBBBBBBBBB
DL DR
Частное: BBBB.BBBBBBBBBBBB
(NL–DL+1) (NR–DR–1)
Алгоритм переполняется, если результат не представляется в формате частного, как вычислено выше и когда делитель равен нулю или меньше делимого.
Регистр состояния ALU
Назначение битов регистра ASTAT описано ниже:
· AZ – ZERO - логическое сложение всех битов регистра результатов ALU. Устанавливается в 1, если результат операции равен нулю.
· AN – NEGATIV - знаковый разряд результата ALU. Единица, если результат отрицательный.
· AV – OVERFLOW – устанавливается в единицу, если происходит переполнение ALU.
· AC – CARRY – бит переноса.
· AS – SIGN – знаковый разряд входного X-порта ALU. Необходим только для команды ABS.
· AQ – QUOTIENT – бит частного. Генерируется только командами DIVS и DIVQ.
Вычислительный модуль умножения с накоплением (MAC)
Вычислительный модуль МАС обеспечивает быстрое умножение, умножение с добавлением, умножение с вычитанием, функции насыщения и очистка в ноль. Функция обратной связи позволяет части результата в одном цикле быть одним из сомножителей в следующем.
Описание блок-схемы МАС
На рисунке 3.1. показана блок-схема вычислительного модуля умножения с накоплением.
МАС имеет два входных 16-разрядных порта X и Y и 32-разрядный порт вывода результата P. 32-разрядный результат поступает в 40-разрядный блок сложения/вычитания, который либо прибавляет, либо вычитает текущий результат из регистра результата МАС (MR), либо передает текущий результат непосредственно в MR (регистр MR имеет 40 разрядов). Фактически регистр MR состоит из трех (MR0 и MR1 – 16-разрядные и MR2 – 8-рахрядный) регистров.
|
Блок сложения/вычитания имеет более 32 разрядов затем, чтобы учесть промежуточные переполнения в ряде операции умножения с накоплением. Бит признака МV (переполнение) устанавливается в единицу, если значение аккумулятора превышает 32 разряда, т.е. в старшей части регистра результата MR есть девять значащих битов (без знака).
Регистры ввода-вывода подобны регистрам ALU.
Порт Х может принимать данные из регистра 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 позволяет 16-31-разрядному результату вычисления в предыдущем цикле становится операндом умножения на входе Y, в следующем. 40-разрядный регистр MR разделен на три секции (MR0, MR1, MR2). Содержимое любой из них может быть выведено на DMD- или R-шину и записано с DMD-шины.
Любой из регистров МАС может читаться и записываться в одном цикле (чтение в начале цикла, запись - в конце). Прочитанное содержимое регистра в начале одного цикла записано в конце предыдущего, следовательно новое значение регистра может быть прочитано только в течении следующего цикла. Это позволяет входному порту предоставлять операнд для МАС в начале цикла и оперировать со следующим значением из памяти в конце того же цикла. Это относится и к выходному регистру.
Регистры MR, MF, MX, MY продублированы во вторичном банке (на рис.3.1. он показан на заднем плане). Одновременно доступен лишь один из банков. Дополнительный банк регистраторов может быть активизирован для чрезвычайно быстрого контекстного переключения. Таким образом новая задача, типа подпрограммы обработки прерывания, может выполняться без сохранения текущих данных в памяти.
Выбор первичного или дополнительного банка регистров определяется установкой нулевого бита в регистре MSTAT состояний процессора. Если этот бит установлен в 0, то выбран первичный банк.
Операции МАС
В этом разделе описываются операции вычислительного модуля МАС, входные форматы данных, обработка переполнения и насыщения.
Стандартные функции
Набор стандартных операций перечислен в таблице 3.1.
Таблица 3.1
Название | Назначение |
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. показан дробный формат работы модуля умножения.
|
В целочисленном формате (рис.3.3) регистр P не сдвигается прежде чем прибавиться к MR.
|
Выбор режима осуществляется установкой 4 бита регистра MSTAT процессора. Если этот бит в 1, то выбран целочисленный режим. В любом формате блок умножения формирует 32-разрядный результат и передает его в блок сложения/вычитания, где получается конечное значение операции, которое записывается в MR.
Входные форматы
Для облегчения умножения входные операнды могут находится в любых форматах. Входные форматы определяются, как часть команды и выбираются динамически при обращению к блоку умножения.
1. Знаковый ´ знаковый – используется при умножении двух знаковых чисел простой точности или двух старших частей знаковых чисел двойной точности.
2. Без знака ´ знаковый (знаковый ´ без знака) - используется при умножении верхней части знакового числа на нижнюю часть другого или для умножения знакового числа простой точности с числом той же точности без знака.
3. Без знака ´ без знака – используется при умножении чисел простой точности без знака, или нижних частей знаковых чисел двойной точности.
Регистры ввода вывода МАС
Регистры для входного порта X – MX0, MX1, AR, MR0, MR1, MR2, SR0, SR1.
Регистры для входного порта Y – MY0, MY1, MF.
Регистры для выходного порта R – MR (MR0, MR1, MR2), MF.
Операции над регистром MR
Как показано на рис.3.1 регистр MR разбит на три секции: MR0 (биты 0-15), MR1 (биты 16-31) и MR2 (биты 32- 39). Каждая из них может быть загружена с DMD-шины и выведена на R- или DMD-шину. Регистр MR2 связан с младшими восемью разрядами этих шин. Когда MR2 выводится на R- или DMD-шину это означает, что знак расширен до 16 разрядов.
Дата: 2019-05-29, просмотров: 231.