
Асинхронный метод
Старшая и младшая часть множителя находится в двух разных регистрах В1 и В2: регистр В аппаратно разделен на две части, управление осуществляется двумя автономными УА. Первый УА управляет вычисление суммы частичных произведений при умножении на В1, второй УА – на В2. в одном и том же такте в каждом из сумматоров может хранится сумма 5 и 7 частичных произведений(3 и 6, и т.д.). Операции сдвига в В1С1 и В2С2 независимы и инициируются разными УА. По окончании процесса умножения выдается в каждом из сумматоров осведомительный сигнал.
tумн.ср=.n/2(0.5Тумн.+Тсдв.)+Тсум.
Если сумматоров к, то tумн.ср=.n/к(0.5Тумн.+Тсдв.)+Тсум.
Для предельного распараллеливания процесса требуется n-1 сумматоров, чтобы сложить n частичных произведений за 1 такт. Подобное устройство называется одновременным множительным устройством.
Вопрос №29. Аппаратные методы ускорения умножения. Использование сумматора с запоминанием переносов.
tсум=ntкс+tпр.кода
Основная идея:
n-разрядный сумматор строится на базе одноразрядных сумматоров с разорванными цепями переноса. Переносы запоминать на регистре и прибавлять к сдвинутой сумме частичных произведений в следующем такте.
В цикле проверки Bn
1такт – y(+) (множитель+сумма част.произведений+перенос)
2Такт – y(-)(сдвиг)
Пропуски тактов суммирования в этом алгоритме запрещены, т.к. перенос всегда необходимо прибавлять.
П
осле
n
циклов вычисленное произведение будет
представлено двумя числами С и Р. их
нужно сложить на обычном сумматоре с
замкнутыми цепями переноса.
0 1001 7/16*15/16=105/256
00 0110 6/16+9/256=105/256
0110
0 1111
00
Вопрос №33. Операция нормализации.
Р – порядок
М – мантисса
А=М*2Р
Если Р определяет диапазон представления чисел в ЭВМ, то М – точность представления чисел в ЭВМ.
С:=АВ; {+,-,*,/}
Необходимое оборудование:
N+2 разряд в мантиссах необходим для округления, т.к. выполнение операций с плавающей точкой связаны с потерей точности.
Операнды (ОП) поступают из памяти в ОА в нормализованном виде; знаковые разряды дублируются только на ОЭ. Результат операции тоже должен быть в нормализованном виде.
Нормализованное число: 1/2|М|1.
Нормализованное число – это число, у которого первая информационная цифра мантиссы равна 1 для положительных чисел и равна 0 – для отрицательных чисел, и знаковые разряды мантиссы при этом одинаковые.
00,11001 – нормализованное число
11,0011 – нормализованное число
Требования для нормализованных чисел:
Мс(0)Мс(2)=1
Мс(0)Мс(1)=0.
Виды нарушения нормализации:
Нарушение нормализации влево(переполнение мантиссы).
01,110
01 – для положительных чисел
10 – для отрицательных чисел Восстановление нормализации в этом случае происходит сдвигом мантиссы на один разряд, при этом мантисса уменьшается в два раза, поэтому порядок нужно увеличивать на 1.
Нарушение нормализации вправо(знаковые разряды мантиссы равны, но не выполняется условие: Мс(0)Мс(2)=1).
00.00010
11.110
Восстановление нормализации возможно сдвигом мантиссы влево и уменьшением порядка на 1.
-1/210=11,1002 – нормализованное число, не выполняется условие Мс(0)Мс(2)=1;
+1/210=00,1002
Исключительные ситуации при нормализации и после выполнения операций с плавающей точкой.
Аварийное завершение операции(прерывание).
Мантисса=0, а порядок любой. Ситуация такая называется потеря значимости.
Fпз:=1; Р:=0.
При нарушении нормализации влево, после сдвига мантиссы вправо может возникнуть переполнение порядка. Такая ситуация называется переполнение порядка.
Fпп :=1.
При нарушении нормализации вправо, после сдвига мантиссы влево может возникнуть отрицательное переполнение порядка. Такая ситуация называется исчезновением порядка.
Fип :=1.
Вопрос №34. Алгоритм сложения чисел с плавающей точкой.
Даны:
А=МА*2Ра В=МВ*2Рв
Найти:
С=МС*2Рс
Операнды и результат должны быть в нормализованном виде.
Проверка особых ситуаций:
Если МВ=0, то С:=А Если МА=0, то С:=В Переход к концу.
Выравнивание порядков.
0,5*103+0,4*102=0,5*103+0,04*103=0,54*103.
Вычисление разности порядков: РС:=РА-РВ.
Если |РС|n+1, то сумма принимается равной числу с большим порядком:
Если РС=0, то С:=А;
Если РС=1, то С:=В.
Переход к концу.
Если РС0, то производится уравнивание порядков слагаемых, путем приведения числа с меньшим порядком к числу с большим порядком. Уравнивание порядков выполняется арифметическим сдвигом мантиссы числа с меньшим порядком вправо на число разрядов равное |РС|.
Если ЗнРс=1, то преобразуется МА.
Если ЗнРс=0, то преобразуется МВ.
Сдвиг осуществляется следующим образом:
При каждом элементарном сдвиге на 1 разряд из РС вычитается 1, если сдвигается МВ, и прибавляется 1, если сдвигается МА.
Выход из цикла по РС=0.
Если МА и МВ представлены в прямом коде, то старшие освобождающиеся при сдвиге информационные разряды заполняются нулями; если в инверсном коде, то знаковыми разрядами.
Мантиссы, полученные после уравнивания порядков, складываются как числа с фиксированной точкой.
МС:=МА+МВ.
Порядок суммы принимается равным наибольшему из порядков слагаемого.
РС:=max(РАРВ).
Отличие от алгоритма сложения с фиксированной точкой – не вырабатывается сигнал переполнения, т.к. возможна нормализация со сдвигом вправо.
Округление мантиссы результата осуществляется прибавлением 1 к n+2 разряду сумматора мантисс.
Нормализация результата (см. алгоритм выше).
Исключительные ситуации при сложении:
Потеря значимости;
Переполнение порядка при нормализации со сдвигом вправо;
Исчезновение порядка при нормализации со сдвигом влево.
Вопрос №35. Исполнение операций умножения и деления чисел с плавающей точкой.
Умножение чисел с плавающей точкой.
С=А*В
Даны:
РА, МА, РВ, МВ.
Найти:
РС, МС.
Порядки складываются по правилам сложения чисел с фиксированной точкой. Мантиссы перемножаются по правилам умножения чисел с фиксированной точкой.
Младшие разряды произведения, выдвигаемые в такте сдвига из сумматора мантисс, не сохраняются, кроме n+2 разряда.
Результат округляется добавлением 1 в n+2 разряд МС и нормализуется.
Исключительные ситуации:
Исчезновение порядка при нормализации со сдвигом влево;
Переполнение порядков, т.к. имеет место сложение порядков в алгоритме.
Деление чисел с плавающей точкой.
С=А/В.
РС=РА-РВ;
МС=МА/МВ.
Порядки вычитаются, а мантиссы делятся по соответствующим алгоритмам выполнения операций с фиксированной точкой.
Исключительные ситуации:
Деление на ноль;
Исчезновение порядка при нормализации со сдвигом влево;
Переполнение порядков, т.к. имеет место сложение порядков в алгоритме.
Особенности применяемого алгоритма деления с фиксированной точкой.
В классический алгоритм деления вносятся незначительные изменения:
МА перед выполнением деления с фиксированной точкой сдвигается влево на один разряд, порядок увеличивается на 1.
Предусматривается нормализация со сдвигом влево.
Вопрос №36. Алгоритм сложения десятичных чисел.
Не во всех системах команд есть такие операции. Наличие операций десятичной арифметики целесообразно для несложных расчетов коммерческого характера с простыми формулами, где нужны целочисленные вычисления и невыгодно переводить числа в двоичные представления и обратно, для того чтобы над ними выполнить 2-3 операции.
Десятичные числа представляются в АЛУ в двоично-десятичном коде.
Сложение двух десятичных чисел сводится к последовательной выработке сумм вида:
PiCi=Ai+Bi+Pi+1 , где
Ai и Bi – четырехразрядные коды десятичных цифр слагаемых;
Pi+1 – десятичный перенос(перенос со сдвигом 10) из предыдущего младшего десятичного разряда суммы;
Pi – десятичный перенос в следующий старший разряд суммы;
Ci – 4-х разрядный двоичный код цифр суммы
Ai+Bi+Pi+1<=19;
Построение такой схемы достаточно сложное и схема будет сложной, поэтому обычно для сложения десятичных чисел используется обычный двоичный сумматор, который настраивается на уровне микропрограммы применительно к специфике сложения десятичных чисел.
Вычисление десятичной суммы может быть параллельно-последовательным процессом, т.к. двоичный сумматор имеет ограниченную длину, а число десятичных цифр может варьироваться.
Алгоритм сложения десятичных чисел.
A>0; B>0; C=A+B.
Вычисляется сумма С=а1а2..an+bb..b (рассматриваются только информационные разряды).
С:=С+В
Если перенос старшей тетрады равен1, то фиксируется Fпп:=1.
Иначе переход к концу.
Формируется корректирующее слагаемое.
Корректирующая цифра ki=0000, если Pi=1.
Ki=1010, если Pi=0.
Вычисляется сумма: С:=С+Л(суммирование производится с разорванными цепями межтетрадных переносов).
Пример:
134+591=725
0001 0011 0100
+
0110 0110 0110 +6
0111 1001 1010
+
0101 1001 0001 +В
1101 10010 1011 (*)
-
1010 0000 1010 +К
0111 0010 0101
Для того, чтобы преодолеть недостаток, заключающийся в управлении цепями переноса, предложен следующий подход – корректирующие константы уменьшить на 1, перенос в младший разряд сделать равным 1, заведя на него перенос со старшего разряда, либо замкнуть на вход управляющий сигнал.
В этом случае во все тетрады будет идти перенос, но учитываться он не будет.