logo search
AK

1.7.6. Реалізація в процесорі операції множення в додатковому коді

Існують алгоритми множення в додатковому коді (ДК), які вимагають введення поправок і які не вимагають. При реалізації множення в ДК знакові розряди співмножників беруть участь в множенні поряд з числовими розрядами.

1. Методи, що вимагають введення поправок

1) X> 0, Y> 0 - поправок немає

2) X> 0, Y <0      [X] дк = X   [Y] дк = 2 + Y      XY <0      

[X] дк * [Y] дк = 2 X + XY           [XY] дк = 2 + XY

                                Корекція:-2Х.

Тобто при множенні позитивного множимо на негативний множник необхідно ввести поправку (-2Х). Для спрощення процесу представимо Y   у вигляді:

Приклад    

[X] дк = 0.1011 = 11/16

[Y] = -13/16 = -0.1101

[Y] дк = 1.0011

Множення проводиться по 3 варіанту.

3) X <0, Y> 0     [X] дк = 2 + X    [Y] дк = Y [X] дк * [Y] дк = 2Y + XY

[XY] дк = 2 + XY

                                Корекція:-2Y.

Якщо виконувати множення по I варіанту і при цьому користуватися правилами зсуву від'ємних чисел в ДК вправо, то така поправка буде вводитися автоматично.

Правила зсуву вправо від'ємних чисел в ДК: передача знакової одиниці в старший числовий розряд; заповнення утворилися вакансії одиницею.

[Y] дк = Y -1 * 2 -1 + Y -2 * 2 -2 + ... + Y - n * 2 - n

[X] дк * [Y] дк = [X] дк * Y -1 * 2 -1 + [X] дк * Y -2 * 2 -2 + ... + [X] дк * Y - n * 2 - n

[XY] дк = [X * 2 -1] дк * Y -1 + [X * 2 -2] дк * Y -2 + ...

      4) X <0, Y <0          Корекція:-2Х і -2 Y.

Недоліки:   залежність величини корекції від поєднання знаків.

Метод множення знаків в ДК без введення корекції

Алгоритм Бутта. Його суть: перетворення множника в модифіковану двійкову СС з трьома символами: , 0, 1. Причому це перетворення робиться не до операції, а під час її в розумі.

1,0101      зрушення

1,1010       вправо

Нехай Y = [Y] дк-2Y 0, Y 0 - знаковий розряд

Y> 0   Y 0 = 0             Y = [Y] дк

Y <0   Y 0 = 1             Y = [Y] дк -2

Уявімо Y: [Y] дк = Y -1 * 2 -1 + Y -2 * 2 -2 + ... + Y-n * 2-n + Y - (n +1) * 2-n  

Y - (n +1)  0

Зробимо заміну: Y-i * 2-i = Y-i * 2 - (i +1) - Y-i * 2-i

Остаточно отримаємо: Y =  0 * 2 0 +  -1 * 2 -1 + ... +  - n * 2 - n, Y - (n +1) = 0. Це запис   в двійковій модифікованої СС з трьома символами: , 0, 1.

 

- I = y - (i +1) + y - I

Ці символи виходять, якщо в процесі множення аналізуються поточний і сусідній з ним молодший розряд. Якщо інформація співпадає, то цифра перетвореного множника - 0, інакше - дивись таблицю.

«0» відповідає відсутності передачі множимо на суматор.

«1» - передача множимо зі своїм знаком, « »- Із зворотним знаком.

В даний блок входять 3 регістра, в Рг Z і Рг Y організований правий зсув на 1 розряд; комбінаційний суматор; СПК, робота якого управляється двома сигналами ПП (пряма передача) та ІП (інверсна передача). 1 розряд СПК має вигляд:

Сигнали ПП та ІП виробляються за допомогою двох КС, які аналізують 2 розряди множника: молодший розряд n і додатковий розряд (n +1). Перед множенням в (n +1) розряд записується 0.