Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МП

.pdf
Скачиваний:
9
Добавлен:
23.06.2024
Размер:
1.33 Mб
Скачать

Рис. 5

Целые числа в пределах 16 - разрядной сетки могут быть представлены как знаковые или как беззнаковые.

21

Беззнаковые числа представлены в диапазоне 0.....65535, при этом старший разряд D15 имеет вес 215 в соответствии с рис. 5. Такой формат представления чисел указывается в командах умножителя как U - unsigned.

Знаковые числа представляются в диапазоне -32768...32767; в этом случае старшему (знаковому) разряду D15 может быть присвоен отрицательный вес -215 . Такой формат представления чисел указывается в командах умножителя как S - signed - рис. 5 и рис. 6.

Вообще же формат целых чисел в 16 - разрядной сетке принято называть форматом 16.0, имея ввиду, что все 16 значащих разрядов находятся до запятой, а после запятой значащих разрядов нет.

Рис. 6

Произведение целочисленных операндов будет представлено в диапазонах:

0 ... 232 - 1 - при умножении беззнаковых чисел;

-231 ... +231 - 1 - при умножении знакового числа на беззнаковое;

22

-230 ... +230 - 1 - при умножении знаковых чисел.

При всех видах умножения целых чисел для обеспечения арифметически правильного представления результата младший разряд D0

должен иметь вес 20; таким образом, выравнивание произведений должно осуществляться относительно разряда D0 в соответствии с рис. 6, где S -

знаковый разряд. Естественно, что при умножении знаковых операндов,

модуль которых фактически представлен пятнадцатью разрядами, модуль произведения будет занимать 30 разрядов, а два старших разряда будут всегда одинаковыми и соответствовать знаку произведения.

Дробные числа в пределах 16 - разрядной сетки представляются процессором в формате 1.15 - один разряд до запятой и 15 разрядов после в соответствии с рис. 7.

Рис. 7

23

При беззнаковом представлении числа рассматриваются как лежащие в диапазонах 0 ... 2 - 2-15, при этом старший разряд D15 имеет вес 20; такой формат представления чисел должен указываться в командах умножителя как

U.

При знаковом представлении дробные числа рассматриваются как лежащие в диапазоне -1 ... +1 - 2-15 в соответствии с общепринятой формой представления электрических сигналов. Такой формат должен указываться в командах умножителя как S, старшему разряду операндов при этом должен быть приписан вес -20 = -1, соответствующий весу знака.

Произведение дробных чисел, выровненное по правилам умножения целых чисел, обеспечит вес разряда D0 равным 2-30, при этом весу 2-1

старшего разряда модуля будет соответствовать разряд D29 (рис. 6, верхнее по рисунку произведение). Между тем единство представления дробных чисел в процессоре требует выравнивания произведений по разряду 2-1 в

соответствии с рис. 7 (нижнее произведение); в этом случае содержимое регистра MR1 будет соответствовать старшим разрядам вычисленного произведения и может быть использовано в последующих операциях в такой же форме, что и исходные операнды, чем будет обеспечен одинаковый масштаб входного и выходного сигналов при их обработке.

Активизация режима выравнивания произведений дробных чисел по разряду с весом 2-1 в соответствии с рис. 7 (нижнее произведение)

осуществляется командой

dis m_mode;

Этот режим устанавливается по рестарту процессора и сохраняет активность до выполнения процессором команды

ena m_mode;

24

или до выхода из прерывающей подпрограммы, в которой режим был активирован.

При алгебраическом суммировании расширение разрядности суммы 1 *) происходит в сторону 8 - разрядного регистра MR2, что позволяет без потери точности результата производить суммирование до 256 дробных, до

512 целых знаковых произведений или до 256 произведений целых чисел без знака.

В этом смысле регистр MR2 выполнен в процессоре как знаковое дополнение регистра MR1, и при записи числа в регистр MR1 (методом пересылки, а не в результате операции умножения!) регистр MR2

заполняется значениями его знакового разряда. Если по ходу решения какой-

то задачи необходимо вычислить произведение и прибавить его значение к какому - то 40 - разрядному числу, находящемуся, например, в ОЗУ данных,

потребуется начальное занесение этого числа в регистры MR2, MR1 и MR0

по частям, методом пересылки из памяти. В этом случае запись в регистр

MR1 должна предшествовать записи в регистр MR2 во избежание потери записанной в MR2 информации.

Если в результате сложения накопленной суммы с очередным произведением происходит выход разрядности суммы за пределы 32 -

разрядной сетки, образованной регистрами MR1 и MR0, формируется признак MV переполнения умножителя.

Система команд умножителя позволяет в этом случае привести 40 -

разрядную сумму произведений к 16 - разрядному виду, масштабируемому к форме исходного операнда (сигнала). Для этого сумма должна быть сначала округлена по 16 младшим разрядам регистра MR0 командой

1*) может быть, нелишним будет напомнить, что сумма из M N- разрядных чисел может занимать максимум N + log2 M разрядов.

25

mr = mr (rnd);

а затем ограничена (в случае переполнения регистра MR1) по восьми старшим разрядам регистра MR2 командой

if mv sat mr;

Использование приведенных операций минимизирует шумы обработки, корректно округляя результат по младшим разрядам и заменяя применением ограничения по переполнению (аналогично АЛУ) разрядной сетки шумы перегрузки на нелинейные искажения типа ограничения.

В целом система команд умножителя достаточно наглядна и не требует комментариев. Под MR в системе команд подразумевается 40 -

разрядная совокупность регистров MR2 (старшие разряды), MR1 (средние) и MR0 (младшие).

Если в качестве приемника результата операции указан регистр MF,

то в него записываются 16 старших разрядов произведения,

соответствующие разрядам MR1. Приведенные в круглых скобках указания первой буквой указывают формат операнда хор, а второй - yop. Так например, команда

mr = mx0 * my0 (su);

вычисляет произведение содержимого регистра МХ0, рассматривая его как знаковое число, на беззнаковое число, записанное в регистре MY0.

Результат, - знаковое произведение, - будет размещен в регистрах

MR1 и MR0; переполнения не произойдет, поскольку разрядность одиночного произведения не может превысить 32 бита.

Указание в команде формата (RND) заставляет процессор рассматривать операнды и произведение как знаковые числа, а значение произведения при этом автоматически округляется по 16 младшим разрядам.

26

Аналогично АЛУ, комплект регистров MX0, MX1, MY0, MY1, MF, MR2, MR1 и MR0 задублирован комплектом аналогичных дополнительных регистров.

При записи информации в регистр MR2 из 16 - разрядного регистра записываются 8 младших (D7...D0) разрядов; при сохранении содержимого регистра MR2 в 16 -разрядном регистре или ячейке ОЗУ данных 8 старших разрядов дополняются значением знакового разряда D7 регистра MR2.

Аналогично командам АЛУ, команды умножителя имеют формат условных.

3.3Сдвигатель Функциональная схема, иллюстрирующая структурную организацию

сдвигателя, показана на рис. 8.

Сдвигатель поддерживает операции арифметического (ASHIFT) и

логического (LSHIFT) сдвигов 16 - разрядного операнда хор в 32 - разрядном поле регистров SR1 (старшие разряды) и SR0 (младшие). В качестве источника операнда хор может быть указан регистр SI или любой другой регистр, имеющий выход на шину результата R; их список приведен в таблице хор на рис. 8.

При необходимости может быть осуществлена операция логического ИЛИ над 32 - разрядной комбинацией, составленной из содержимого регистров SR1 и SR0, и сдвинутым значением операнда хор, с занесением результата операции в регистры SR1 и SR0; эта функция полезна при формировании многоразрядных чисел по результатам вычислений, например,

при формировании ключевых последовательностей в криптосистемах.

Аналогично командам АЛУ и умножителя, команды сдвигателя имеют условный формат и выполняются как безусловные, если поле условия в команде отсутствует.

27

Рис. 8

Величина сдвига (арифметического или логического) может быть указана в поле BY <EXP> в виде положительного или отрицательного числа,

при этом отрицательное число соответствует сдвигу вправо (в сторону младших разрядов), а положительное - сдвигу влево (в сторону старших

28

разрядов). Если поле BY <EXP> в команде отсутствует, значение сдвига определяется содержимым 8 - разрядного регистра SE, которое интерпретируется процессором как число со знаком, записанное в дополнительном коде.

Поле в круглых скобках (HI) или (LO) определяет позицию, по отношению к которой рассматривается сдвиг в поле регистров SR1 и SR0;

значение (HI) соответствует сдвигу относительно регистра SR1, а (LO) -

относительно регистра SR0.

Так, например, в результате выполнения команды

sr = lshift si by 0 (hi);

значение содержимого регистра SI без сдвига (с нулевым сдвигом) будет записано в регистр SR1, а регистр SR0 будет обнулен.

В результате выполнения команды

sr = lshift si by 0 (lo);

обнуленным окажется регистр SR1, а содержимое регистра SR0, будет дублировать содержимое регистра SI; к аналогичному результату приведет выполнение команды

sr = lshift si by -16 (hi);

Команда

sr = lshift si by -16 (lo);

обнулит оба регистра SR1 и SR0.

Если, например, в регистре MR накоплена сумма произведений,

занимающая 36 разрядов, и по условию задачи необходимо сохранить 32

старших из них, такая задача может быть решена операциями сдвига.

Значащая часть результата будет размещена в 3-х регистрах MR2, MR1 и MR0 в соответствии с рис. 9.

29

Рис. 9

Для того, чтобы сформировать в регистрах SR1 и SR0 искомое число,

необходимо записать в поле SR1 и SR0:

- содержимое регистра MR0 с логическим сдвигом вправо на 4

разряда по отношению к регистру SR0.

-сложить с ним по "ИЛИ" содержимое регистра MR1 с логическим сдвигом вправо 4 разряда по отношению к регистру SR1;

-сложить по "ИЛИ" с полученной комбинацией содержимое регистра

MR2 с логическим сдвигом влево на 12 разрядов относительно регистра SR1.

Описанные операции могут быть выполнены с помощью следующей программы:

sr =

lshift mr0

by -4 ( lo );

sr =

sr

or lshift

mr1

by

-4

(

hi );

sr =

sr

or lshift

mr2

by

12

(

hi );

Команды EXP и NORM предназначены главным образом для перевода чисел из формата с фиксированной запятой в формат с плавающей запятой, а

команда EXPADJ - для поддержки выполнения групповых операций сложения и вычитания над числами, представленными в формате с плавающей запятой. Ввиду дефицита места рассмотрение вопросов,

связанных с представлением в процессоре чисел в формате с плавающей

30

Соседние файлы в предмете Микропроцессорная техника в инфокоммуникациях