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

Для сдвига мантиссы второго операнда необходимо содержимое регистра Рг2 присвоить регистру РгВ, а регистр другого операнда (РгА) в данном случае остается обнуленным. После этого осуществляется суммирование содержимого входных регистров сумматора и передача результата в регистр сумматора РгСм со сдвигом вправо. Таким образом, произошел сдвиг мантиссы числа вправо.


 


































































































































Рис. 4.2. Алгоритм сложения и вычитания

чисел с плавающей запятой


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

Пусть схема СОЛО выработала признак РгС < РгD, тогда наименьший порядок в начале выравнивания порядков имел первый операнд, т. е. значение регистра РгС было меньше значения регистра РгD, то выполняются аналогичные операции, описанные выше; но при этом сдвигаемый порядок операнда будет находиться не в регистре Рг2, а в регистре Рг1, а сдвинутый порядок через регистр Рг1 будет передаваться в регистр РгC. В остальном операции выравнивания порядков идентичны.

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

В случае, когда порядки операндов стали равны и счетчик циклов при этом отличен от нуля, производится обнуление порядков в регистрах Рг1 и Рг2, так как порядок результата хранится в счетчике Сч1.

После выравнивания порядков модули мантисс хранятся в Рг1 и Рг2 в разрядах с 8-го по 31-й, их знаки – в ТгЗн1 и ТгЗн2, а порядок результата содержится в счетчике Сч1.


Сложение мантисс

Данная процедура выполняется в блоках 19 – 32. Сначала анализируются знаки мантисс, и при равенстве знаков модули мантисс складываются.

Если при сложении мантисс возникло переполнение, т. е. в седьмом разряде сумматора вместо 0 формируется значение 1, то мантисса суммы сдвигается на один разряд вправо, а порядок увеличивается на 1 (Сч1: = Сч1+1). Если после этого значение нулевого разряда счетчика Сч1 не равно 0 (возникло переполнение порядка), то регистр сумматора обнуляется и вызывается прерывание из-за переполнения порядка.

При суммировании мантисс с различными знаками сначала определяется операнд, содержащий отрицательную мантиссу. Затем мантисса данного операнда складывается с положительной мантиссой второго операнда в дополнительном коде, для чего она передается на входной регистр сумматора в обратном коде и производится ее суммирование с прямым кодом положительной мантиссы второго операнда. Затем происходит подсуммирование единицы для преобразования обратного кода мантиссы в дополнительный код. Если в результате операции сложения седьмой разряд регистра сумматора (РгСм[7]) равен 1, то результат положителен, и в триггер знака ТгЗн1 заносится 0, а единица в РгСм[7] не учитывается; в противном случае результат отрицателен, и в триггер знака ТгЗн1 заносится 1, а результат переводится из дополнительного кода в прямой.

Если результат нормализованный (См[8]¹0), то производится переход на блок 25, где в регистр сумматора РгСм, содержащий модуль мантиссы, заносится знак результата (по значению триггера знака ТгЗн1) и порядок – значение Сч1. В результате данной операции в регистре сумматора находится результат (операнд Z), который затем передается на ШИВых.

Если результат оказался ненормализованным, то происходит проверка на равенство мантиссы нулю. Если мантисса равна нулю, то регистр сумматора обнуляется и вызывается прерывание из-за потери значимости. Если нет исчезновения значимости и Сч1 = 0 , то регистр сумматора обнуляется и вызывается прерывание из-за исчезновения порядка. Если нет прерываний, то производится нормализация результата.


Нормализация результата производится в блоках 33 – 38. Для этого мантисса результата сдвигается на один разряд влево, а значение Сч1 уменьшается на 1.

Если после этого результат оказывается ненормализованным, то вышеописанные шаги повторяются.

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


















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

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

Z=

,

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

pX - порядок множимого;

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

pZ - порядок произведения;

- мантисса множимого;

- мантисса множителя;

- мантисса произведения.

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

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

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

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

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

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

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

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

- проверка мантисс сомножителей на равенство нулю;

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

- умножение мантисс;

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

На рис. 4.3 этапы выполнения операции умножения разделены пунктирной линией.















































 




















Рис. 4.3. Микропрограмма умножения чисел с плавающей запятой

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

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

Вычисление смещённого порядка произведения произво- дится в блоках с 3 по 9. Перед вычислением смещенного порядка входные регистры сумматора РгА и РгВ обнуляются. В РгА заносится смещённый порядок множимого, а в РгВ заносится смещённый порядок множителя. Затем на сумматоре производится их суммирование.

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

-          если См[0¸1] = 00, то получено отрицательное переполнение порядка. При этом сразу фиксируется нулевой результат умножения;

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

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

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

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



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