Логические методы ускорения умножения
1. умножение на два разряда множителя за один такт:
bn bn+1 микрооперация
0 0 нет
0 1 +А
1 0 +2А
1 1 -А
Bn | bn+1 | P | мко | P' |
- | ||||
+A | ||||
+A | ||||
+2A | ||||
+2A | ||||
-A | ||||
-A | ||||
- |
В базовом алгоритме Тумн= n(Тсдв+0,5Тсум).
В этом алгоритме Тумн=n/2(Тсдв+3/4Тсум).
Микропрограмма умножения на два разряда множителя.
При прибавлении к сумме частных произведений n+1 разрядного частного произведения 2А,. Результат может получиться n+2 разрядным. С учетом разряда переноса и знакового разряда сумматор должен быть n+3 разрядным, предполагается, что n – четное.
В качестве аппаратной поддержки необходим формирователь дополнительного кода, чтобы вычесть А.
2. умножение с последовательным преобразованием цифр множителя.
В …01111110…
+А -А
…1 0 1 0 1 0 1 0 1… (*)
-А+А-А+А-А+А-А+А-А
Для приодаления ситуации (*) договорились игнорировать серии длиной в 1 бит. Для реализации микропрограммы умножения вводится триггер j, который задает режим сдвига, и тогда возможны 4 ситуации:
j=0 – сдвиг по 0ж
j=1 – сдвиг по единицам.
1) начало серии единиц
j=0
bn+1=1
bn=1
-A j:=1
2) начало серии нулей
j=1
bn+1=0
bn=0
+A j:=0
3) единица среди нулей
j=0
bn+1=1
bn==0
+A j=0(без изм.)
4) ноль среди единиц
…111101111…В
j=1
bn+1=0
bn=1
-A j=1(без изм.).
В начале алгоритма j:=0. сдвиг осуществляется на первый разряд. Цикл проверки bn, bn+1, p повторяются n раз. Если при выходе из цикла j=1, то делается дополнительное суммирование С:=С+1.
№ | bn | bn+1 | j | M\o | j’ |
- | |||||
+A | |||||
+A | |||||
- | |||||
- | |||||
-A | |||||
-A | |||||
- |
Пример:
В = 0 1 1 0 1 1 1 0 1 0 1 1 1
+А - - -А - - - -А - -А - - -
Тумн.=n*(Тсдв+1/3Тсум.);
Для ускорения алгоритма можно ввести цепи сдвига на 2 разряда. При встречи комбинации, описанной в 4 и 5 строках, выполнить микрооперацию сдвига на 1 разряд, для остальных – на 2 разряда.