Режим блокировки переполнения
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Режим блокировки переполнения разрешается при установки бита 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 вручную. Он показывает, что остаток должен быть положительным.

 

 

Рис 2.2. Структурная реализация команды DIVS
          Второй примитив из раздела деления – это команда DIVQ, которая выполняется неоднократно и генерирует по одному биту частного. При простой точности деления чисел без знака команда DIVQ выполняется 16 раз, для такой же точности деления чисел со знаком операция выполняется 15 раз после вычисления знакового разряда с помощью команды DIVS. DIVQ сдвигает регистр AY0 влево на один разряд так, чтобы новый бит частного оказался в позиции LSB. Состояние бита AQ, которое генерируется на предыдущей операции, определяет операцию ALU для вычисления частичного результата. Если AQ=1, то ALU добавляет делитель к частичному результату в AF. Если AQ=0, то ALU вычитает делитель из частичного результата в AF. Так же как и в операции DIVS ALU выводит результат в регистр AF. Операция DIVQ проиллюстрирована на рис.2.3.

Рис 2.2. Структурная реализация команды DIVS
Формат результата при любом числовом представлении определяется форматом делителя и делимого. Пусть NL число разрядов влево и NR – это число разрядов вправо от двоичной точки делимого; DL и DR- соответственно тоже, только для делителя. Тогда частное состоит из NL–DL + 1 битов слева от двоичной точки и содержит NR– DR–1 битов справа.

 

      

 

   

Рис 2.3. Структурная реализация команды DIVQ

 

 

     Иногда необходимо некоторое изменение формата делимого и делителя. Например, если оба операнда знаковые и дробные (делимое в формате 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-рахрядный) регистров.

 

Рис 3.1. Структурная реализация команды DIVQ
                  

 

Блок сложения/вычитания имеет более 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.2. Дробный формат

 

 

     В целочисленном формате (рис.3.3) регистр P не сдвигается прежде чем прибавиться к MR.

 

Рис.3.3. Целочисленный формат

 

 

     Выбор режима осуществляется установкой 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, просмотров: 193.