Рефераты. Выполнение арифметических операций в АЛУ

В результате нормализации мантисса произведения сдвинулась влево на один разряд и порядок произведения уменьшился на единицу (см. табл. 4.2).

Табл. 4 .2. Результат нормализации мантиссы произведения

До нормализации

После нормализации

Сч1[0¸7]

(порядок произведения)

РгСм[8¸17]

(мантисса произведения)

Сч1[0¸7]

(порядок произведения)

РгСм[8¸17]

(мантисса произведения)

01000101

0111110100

01000100

1111101000

Значения Тг1=0 и Сч1[0¸1]=01 показывают, что отрицательного и положительного переполнения не произошло.

В РгСм формируется окончательный результат операции умножения. Так как ТгЗн1=ТгЗн2, то РгСм[0]:=0. Смещённый порядок Сч1[1¸7] заносится в соответствующие разряды РгСм[1¸7].

Двоичное произведение Z представлено на рис. 4.7:



Веса разрядов

26

25

24

23

22

21

20

23

22

21

20

2-1

2-2

2-3

2-4

2-5

2-6

0

1

0

0

0

1

0

0

1

1

1

1

1

0

1

0

0

0

знак

смещённый порядок

мантисса

Рис. 4.7. Двоичный результат операции умножения Z=X×Y=15,625

Преобразуем двоичное произведение Z к десятичному виду:

Z =1 ´ 23 + 1 ´ 22 + 1 ´ 21 + 1 ´ 20 + 1 ´ 2-1 + 0 ´ 2-2 + 1 ´ 2-3 + 0 ´

´2-4 + 0 ´ 2-5 + 0 ´ 2-6 = 15,625

























4.3. Алгоритм деления чисел с плавающей запятой

Деление чисел с плавающей запятой выполняется в соответствии с формулой:

Z=,

где S - основание системы счисления;

pX - порядок делимого;

pY - порядок делителя;

pZ - порядок частного;

- мантисса делимого;

- мантисса делителя;

- мантисса частного.

 

При делении чисел с плавающей запятой мантисса частного равна частному от деления мантиссы делимого на мантиссу делителя, а порядок частного - разности порядков делимого и делителя.

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

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

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

Частному присваивается знак плюс, если делимое и делитель имеют одинаковые знаки, и знак минус, если знаки разные.

Многофункциональное АЛУ для деления чисел с плавающей запятой (см. рис. 4.1) использует: сумматор См; регистры Рг1 и Рг2 для приёма соответственно делителя и делимого; регистры РгА и РгВ для передачи на сумматор смещенных порядков делителя и делимого при получении разности порядков и для передачи на сумматор мантиссы делителя и частичного остатка при получении мантиссы частного; счетчик Сч1 для хранения смещенного порядка частного; регистры Рг2 и Рг2’ для хранения цифровых разрядов мантиссы частного; триггеры знаков делимого и делителя ТгЗн2 и ТгЗн1.

Последовательность выполнения операции деления на функциональных узлах многофункционального АЛУ можно обобщить и выделить следующие этапы:

- прием операндов X и Y;

- проверка мантиссы делителя на равенство нулю;

- проверка мантиссы делимого на равенство нулю;

- вычисление смещённого порядка частного;

- проверка мантиссы делимого и делителя;

- деление мантисс;

- формирование окончательного результата.

Алгоритм операции деления в многофункциональном АЛУ приведён на рис. 4.8. Этапы выполнения разделены пунктирной линией. В блоках микрооперации, выполняемые в разных тактах, разделяются горизонтальной чертой.

Приём операндов X и Y выполняется в блоке 1. В первом такте производится приём первого операнда (делителя) в Рг1. Во втором такте производится фиксация знака принятого операнда в триггере знака ТгЗн1. В этом же такте можно принять второй операнд (делимое) в Рг2. В третьем такте производится фиксация знака второго операнда в триггере знака ТгЗн2.

Мантиссы операндов X и Y нормализованы.


 































 






























































Рис. 4.8. Микропрограмма деления чисел с плавающей
запятой без восстановления остатка

Проверка мантиссы делителя на равенство нулю осуществляется в блоке 2. Так как для числа с плавающей запятой 0 разряд используется для представления знака числа, разряды с 1 по 7 используются для представления смещённого порядка (характеристики) числа, то 8 разряд будет соответствовать старшему разряду мантиссы. Так как у числа, отличного от нуля, старший разряд нормализованной мантиссы равен 1, то, таким образом, если этот разряд в мантиссе делителя равен 0, то вырабатывается прерывание по делению на ноль.
Проверка мантиссы делимого на равенство нулю осуществляется в блоке 3 и заключается в проверке старшего разряда нормализованной мантиссы делимого на равенство нулю. Если это так, то в частное записывается 0 без выполнения деления.

Вычисление смещённого порядка частного производится в блоках с 4 по 9. Необходимо отметить, что знаковые разряды (старшие разряды) делимого и делителя, находящихся в регистрах Рг2 и Рг1 на этом этапе обнуляются, так как они уже были скопированы в триггеры знаков на этапе приёма операндов. Это необходимо для использования этих разрядов при вычислении смещённого порядка частного, а также при вычислении разности мантисс. В обоих случаях разряды используются для анализа знака результата.

Для вычисления смещённого порядка частного во входной регистр сумматора РгА заносится смещённый порядок делителя в дополнительном коде, а во входной регистр сумматора РгВ заносится смещённый порядок делимого в прямом коде. Затем на сумматоре производится суммирование РгА и РгВ.

В результате в левом байте сумматора См[0¸7] образуется разность порядков делимого и делителя. Первоначально анализируются значения разрядов См[0] и См[1]:

-     если См[0¸1] = 00, то получен положительный не переполненный порядок. Отсутствие переполнения фиксируется триггером Тг1 (Тг1: = 0);

-     если См[0¸1] = 01, то имеет место положительное переполнение порядка. В этом случае вырабатывается сигнал прерывания по переполнению порядка и деления не происходит;

-          если См[0¸1] = 11, то получен отрицательный порядок. Отсутствие переполнения порядка фиксируется установкой Тг1: = 0;

Во всех трёх случаях для получения смещённого порядка в Сч1[0¸7] нулевой разряд Сч1[0] обнуляется, в первый разряд Сч1[1] заносится инвертированное значение первого разряда сумматора См[1], а в разряды Сч1[2¸7] заносятся соответствующие разряды с выхода сумматора См[2¸7].

-          если же См[0¸1] = 10, то получено отрицательное переполнение порядка, но исчезновение порядка не фиксируется, так как переполнение может исчезнуть при денормализации. Факт переполнения фиксируется установкой Тг1: = 1. Для получения смещённого порядка в Сч1[0¸7] в нулевой разряд Сч1[0] заносится значение нулевого разряда сумматора См[0], в первый разряд Сч1[1] заносится инвертированное значение первого разряда сумматора См[1], а в разряды Сч1[2¸7] заносятся соответствующие разряды с выхода сумматора См[2¸7].

Проверка мантиссы делимого и делителя осуществляется в блоках с 10 по 12. Если при делении нормализованных чисел с плавающей запятой мантисса делимого больше мантиссы делителя, то мантисса частного образуется с переполнением (мантисса частного больше 1). Поэтому в данном случае перед делением мантисс делимое денормализуется на 1 разряд вправо. То есть мантисса делимого смещается на 1 разряд вправо. При этом порядок частного, находящийся в Сч1 необходимо увеличить на 1. Если же мантисса делимого меньше мантиссы делителя, то происходит переход к подпрограмме деления мантисс без денормализации.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.