Виконання операції множення
Вступ
Перші ЕОМ з програмованим керуванням із
програмою, яка зберігається в пам’яті з’явились практично одночасно в Англії,
США та ін.
Фундаментальний внесок в розвиток вітчизняної
обчислювальної техніки вніс академік С.А. Лєбєдєв. Під його керівництвом в
1949-1951 роках в АНУРСР в Києві була побудована перша в нашій країні ЕОМ -
мала електронна лічильна машина (МЕЛМ), а в 1952-1954 рр. - швидкодіюча
електронна лічильна машина (ШЕЛМ), яка виконувала 8000 операцій/сек. і була на
той час однією із самих швидкодіючих ЕОМ в світі.
Покоління ЕОМ, визначається сукупністю
взаємозв’язаних і взаємообумовлених суттєвих особливостей та характеристик,
конструктивно-технологічної бази, що використовується при побудові машин, і
архітектури, яка реалізується в машині (логічної організації).
Обчислювальні можливості мікро ЕОМ виявились
достатніми для створення на основі в рамках ЕОМ четвертого покоління, нового за
рядом експлуатаційних характеристик та способу використання типа обчислювальних
пристроїв - персональних ЕОМ (персональних комп’ютерів), які отримали в
теперішній час широке поширення.
В останній час визначились контури нового,
п’ятого покоління ЕОМ. В значній мірі цьому допомогли публікації відомостей про
проект ЕОМ п’ятого покоління, який розробляється провідними японськими фірмами
та науковими організаціями.
Згідно цьому проекту ЕОМ і обчислювальні системи
п’ятого покоління крім більш високої продуктивності та надійності при більш
низькій вартості повинні мати такі якісно нові властивості:можливість взаємодії
з ЕОМ за допомогою природної мови, людського голосу і графічних зображень.
1. Розробка операційного автомату і машинного
алгоритму
.1 Основні способи виконання операції множення
Ми використовуємо двійкову систему числення, в
якій є декілька основних способів виконання операції множення:
Метод 1. Множення, починаючи з молодших розрядів
множника, зі зсувом множеного вліво.
Множник B = 0,b1b2…bn
перетворюється за схемою Горнера:
= (… ((bn×2-1 +
bn-1)×2-1 + bn-2)×2-1 +
… + b2)×2-1 + b1)×2-1
Тоді
= A×B = (… ((bn×0, a1a2…an)×2-1 +
bn-1×0, a1a2…an)×2-1+ …
+ b1×0, a1a2…an)×2-1
Тут множення починається з молодших розрядів та
зсувається вправо сума часткових добутків. Структурну схему пристрою наведено
на рис. 1.1. Час виконання операції можна визначити за формулою
Тмн2 = n ×tдод (1.1)
Рисунок 1.1 - Структурна схема пристрою множення
(метод 1).
Регістр множника повинен мати кола зсуву вправо,
регістр множеного - кола зсуву вліво, суматор часткових добутків не зсувається.
При цьому методі регістр множника і суматор часткових добутків повинні мати
подвійну довжину. Цей метод потребує більше обладнання, але ніяких переваг не
дає, і тому використання його недоцільно.
Метод 2. Множення, починаючи з молодших розрядів
із зсувом вправо суми часткових добутків.
Припустимо В-множене (В>0), A-множник (А>0), С-добуток. Тоді, у випадку
зображення чисел у формі з фіксованою комою, отримуємо:
А = а1а2…аn;= b1b2…bn
= b1×2-1 + b2×2-2 +
… + bn×2-n;
Випливає що,
С = А×В = (0,а1а2…аn)×(b1×2-1 +
… + bn×2-n) =
= (2-1×0, a1a2…an)×b1 +
(2-1×0, a1a2…an)×b2 + …
+ (2-n×0, a1a2…an)×bn.
Множник 2-n означає зсув на n розрядів
вправо числа, яке заключене в дужки, тобто в даному
випадку зсувається вправо множене і множення починається з старших розрядів.
Структурну схему пристрою для множення,
реалізуючого цей метод, наведено на рис 1.2. Час виконання операції можна
визначити за формолою
Тмн1 = n ×(tдод
+ tзс) (1.2)
Регістр множника і суматор часткових добутків
повинні мати кола зсуву вправо. Регістр множеного не має кіл зсуву.
Рисунок 1.2 - Структурна схема пристрою множення (метод 2)
При даному методі множення всі три регістри мають однакову
довжину, яка дорівнює числу розрядів множників. Цей метод знайшов найбільше
застосування в ЕОМ.
Метод 3. Множення, починаючи зі старших розрядів
множника зі зсувом вліво суми часткових добутків.
Множник записується таким чином:
= 2-n×(bn +
bn-1×21 + bn-2×22 + …
+b1×2n-1).
В цьому випадку
С = A×B = 2-n×[bn×0, a1a2…an
+ bn-1×(21×0, a1a2…an)
+ bn×(22×0, a1a2…an)
+ … + b1×(2n-1×0, a1a2…an)].
Це означає, що множення починається
з молодших розрядів і множене зсувається вліво на один розряд в кожному такті.
Структурну схему пристрою наведено на рис. 1.3.
Час виконання операції визначається за формулою.
Тмн3 = n ×(tдод
+ tзс) (1.3)
Рисунок 1.2 - Структурна схема пристрою множення
(метод 3)
Регістр множника і суматор часткових добутків
повинні зсуватися вліво. Регістр множеного кіл зсуву не має.
При цьому методі суматор часткових добутків
повинен мати подвійну довжину. Даний метод потребує додаткового, порівняно з
першим методом, обладнання. Не дивлячись на це, він застосовується в деяких
АЛП, тому що дозволяє без додаткових кіл зсуву виконувати також й ділення.
Метод 4. Множення, починаючи із старших розрядів
множника з зсувом вправо множеного.
Якщо множник записати за формулою Горнера:
= 2-n×(… ((b1×21 + b2)×21 + …
+ bn-1)×21 + bn
,
C = A×B = 2-n×(… ((b1×0, a1a2…an)×21 + b2×0, a1a2…an)×21 + …
+
+ bn-1×0, a1a2…an)×21 + bn×0, a1a2…an).
У цьому випадку множення починається з старшого
розряду і в кожному такті зсувається вліво сума часткових добутків.
Структурну схему наведено на рис. 1.4. Час
виконання операції можна визначити за формулою
Тмн4 = n ×tдод
(1.4)
Регістр множника повинен мати кола зсуву вліво,
регістр множеного - кола зсуву вправо. Суматор часткових добутків не має кіл
зсуву.
Рисунок 1.4 - Структурна схема пристрою множення (метод 4).
При цьому методі множення і регістр множеного, і суматор
часткових добутків повинні мати подвійну довжину. Але, як і в попередньому
методі, він не потребує додаткових кіл зсуву для виконання ділення.
1.2 Методи прискорення операції множення
Методи прискорення множення діляться на апаратні
та логічні. Як ті, так і інші потребують додаткових витрат апаратури. При
використанні апаратних методів додаткові витрати апаратури прямо пропорційні
числу розрядів в операндах.
До логічних методів прискорення множення
відносяться: пропускання тактів сумування, групування розрядів множника,
розподілення множника на частини; множення з запам’ятовуванням перенесення та
інші.
Аналізуємо
пара розрядів
|
Перенос
із попередньої пари розрядів
|
Перетворена
пара розрядів
|
Примітка
|
00
|
0
|
00
|
|
01
|
0
|
01
|
|
10
|
10
|
Попередній
зсув множника
|
11
|
0
|
01 для наступного розряду
|
|
00
|
1
|
01
|
|
01
|
1
|
10
|
Попередній
зсув множника
|
10
|
1
|
01 для наступного розряду
|
|
11
|
1
|
00
|
|
Розглянемо докладніше метод групування розрядів множника.
Розбивання множника на групи з довжиною 2 з цього слідує що ми переходимо до
нової системи числення з основою 22. комбінації вигляду 01, 10 не
змінюються, перетворюється 11 в наступну комбінацію 101. Для більш детального
зображення побудуємо таблицю правила перетворення множника для системи (0,1,).
1.3 Формалізований опис операційного автомату
Складемо формалізований опис операційного
автомату операції множення в обернених кодах з старших розрядів з пропусканням
тактів додавання чисел з фіксованою комою. Формалізований опис операційного
автомата має вигляд:
,
де
DI - множина вхідних даних,
S - множина проміжних результатів,
DO - множина вихідних даних,
X - множина логічних умов,
Y - множина мікрооперацій, що виконується,
Множиною вхідних даних є значення числа А,
значення числа В, кількість розрядів n:
.
Множина проміжних результатів має вигляд:
.
Множиною вихідних даних є значення числа С:
.
Множина логічних умов має вигляд:
, де
х1, х2, х3 - чергові цифри
множника;
х4 - логічна умова: якщо усі кроки множення
виконані, то , інакше .
Множина мікрооперацій, що виконується:
.
1.4 Структурна схема операційного автомату
Згідно канонічного методу синтезу поставимо у
відповідність кожному математичному елементу структурний елемент.
. Вхідні дані - множене і множник
надходять в обернених кодах у пристрій через шину вхідних даних (Швх).
2. Для зберігання операнду А потрібний
регістр (РгА). Для регістру А потрібна схема формування оберненого коду
(СхФОК).
. Для зберігання знаку операнда А
потрібний регістр (Тзн А).
. Для зберігання знаку операнда В
потрібний регістр (Тзн В).
. Для регістру А потрібна схема формування
оберненого коду (СхЗс).
. Для зберігання операнду В потрібний
регістр (РгВ).
. Для накопичення часткових добутків
необхідно використати комбінаційний суматор (КСМ).
. Для збереження результату потрібен
регістр (РгС).
. Для підрахунку кількості кроків множення
використовується лічильник (Ліч).
. Результат добутку виводиться з пристрою
через шину вихідних даних (Швих).
Структурна схема операційного автомата.
1.5 Машинний алгоритм виконання операції
1.
Число А зі знаком записується в регістр Рг А і Тзн А, відповідно.
2.
Число В зі знаком записується в регістр РгВ і Тзн В, відповідно.
3.
Регістру С присвоюється значення 0.
4.
Лічильнику присвоюється значення 8.
5.
Розраховується знаковий розряд.
6.
Перевіряється два розряди в регістрі В, після чого робиться
наступні кроки, якщо:
7.
В=00 переходиться до пункту 11.
8.
В=01 до регістру С додається значення регістр А.
9.
В=10 до регістру С додається значення регістр А в доповняльному
коді.
10.В=11 до регістру С додається зсунений на один
розряд значення регістру А.
11. Зсувається регістр С вліво на 2 розряди.
. Зсувається регістр В вліво на 2 розряди.
. Вміст лічильника зменшується на 1.
. Аналізується лічильник якщо він дорівнює 1, то
потрібно перейти до пункту 15, інакше в п. 6.
. Видається результат знак РгС на шину даних.
. Кінець алгоритму
Граф-схема алгоритму
1.6 Приклад реалізації алгоритму
Виконаємо множення за розробленим алгоритмом для
чисел. Переведемо їх в двійкову систему числення і запишемо їх у вигляді з
фіксованою комою. При цьому обмежимось 8-ма розрядами.
Двійкові коди чисел А і В
Число
А=0.458110
|
Число
В=0,789110
|
Виконувані
дії
|
Остача
|
Виконувані
дії
|
Розряд
|
0.4581
· 2 = 0.9162 0.9162 · 2 = 1.8324 0.8324 · 2 = 1.6648 0.6648 · 2 = 1.3296
0.3296 · 2 = 0.6592 0.6592 · 2 = 1.3184
|
0 1 1 1
0 1
|
0.7891
· 2 = 1.5782 0.5782 · 2 = 1.1564 0.1564 · 2 = 0.3128 0.3128· 2 = 1.6256
0.6259 · 2 = 1.2512 0.2512· 2 = 0.5024
|
1 1 0 0
1 0
|
Отриманий
код: 011101
|
Отриманий
код: 110010
|
Двійковий код чисел
А = -0,4581= -0,01110112
В = -0,7891= -0,11001002
Запишемо машинне зображення операндів в прямому
коді.
РгА= 0,0111011
РгВ= 1,000100
Виконаємо множення (вміст регістрів і виконані операції
приведені в таб 2:
Приклад виконання множення за розробленим
алгоритмом
РгС
|
РгВ
|
Примітки
|
0000000000000000
|
0,1100100
|
РгВ=В;
РгC:=0
|
0,011101
+ 1111000
|
1,001000
|
Х1=0;
Х2=1 РгC:= РгC+РгА РгВ:=L2 (РгВ); РгC:=L2 (РгC)
|
0010101110
+ 0000000111
|
0,100000
|
Х1=1;
Х2=0 РгC:= РгC+(РгА) д РгВ:=L2 (РгВ); РгC:=L2 (РгC)
|
001011010101
|
0000000
|
Х1=0;
Х2=1 РгВ:=L2 (РгВ); РгC:=L2 (РгC)
|
A + Sgn B= Sgn C
Знак дорівнє 1, тобто мінус
1.7 Обчислення абсолютної та відносної похибок
виконання операції
,7891*0,4581=0,36148 в десятковій.
,011101
,110010
,010110101010 множення в двійковій в стовпчик
,3437- в десятковій
Абсолютна похибка ∆=0,3614-0,3437=0,0177
Відносна похибка σ=∆/0,3437*100%=5,1%
2. Розробка керуючого автомату
2.1 Керуючі автомати з жорсткою логікою
Керуючий автомат генерує послідовність керуючих
сигналів, яка передбачена мікропрограмою і відповідає значенням логічних умов.
Інакше кажучи, керуючий автомат задає порядок виконання дій в операційному
автоматі, який виходить з алгоритму виконання операцій. Найменування операції,
яку необхідно виконувати у пристрої, визначається кодом операції. По відношенню
до керуючого автомату сигнали коду операції, за допомогою яких кодується
найменування операції, і повідомлювальні сигнали х1,…, хl,
які формуються в операційному автоматі, грають однакову роль: вони впливають на
порядок генерування керуючих сигналів y. Тому сигнали коду операції і умовні
сигнали відносяться до одного класу - до класу повідомлювальних сигналів, які
поступають на вхід керуючого автомату.
Функція керуючого автомату - це операторна схема
алгоритму (мікропрограми), функціональними операторами якої є символи у1,…,
уm, які ототожнюються з мікроопераціями, в якості логічних умов
(предікатів) використовуються булеві змінні х1,…, хl.
Кожна з цих формул визначає обчислювальний процес в послідовному аспекті -
встановлює порядок перевірки логічних умов х1,…, хl і
порядок виконання мікрооперацій у1,…, уm.
В залежності від способу визначення вихідного
сигналу в керуючих автоматах розрізняють три типи абстрактних автоматів:
автомат Мілі, автомат Мура, С-автомат. В абстрактному автоматі Мілі функція
виходів l задає відображення (XxS)®Y. В абстрактному
автоматі Мура функція виходів l задає відображення S®Y. В абстрактному
С-автоматі вводяться дві функції виходів l1 і l2, що задають
відображення (XxS)®Y1 і S®Y2
відповідно. При цьому алфавіт виходів С-автомата, Y=Y1=Y2
або Y=Y1ÈY2.
Довільний абстрактний атомат Мілі або Мура має
один вхідний і один вихідний канали. Довільний абстрактний С-автомат має один
вхідний і два вихідних канали.
Розмічена граф-схема алгоритму
2. Закодуємо вхідні та вихідні сигнали та стани автомату
. Складаємо кодовану таблицю переходів та виходів.
xi
|
ai(t)
|
ai
(t+1)
|
yi
|
D1
|
D2
|
D3
|
D4
|
a0
|
a1
|
y1
|
0
|
0
|
0
|
1
|
-
|
a1
|
a2
|
y2
|
0
|
0
|
1
|
0
|
-
|
a2
|
a3
|
y3
|
0
|
0
|
1
|
1
|
-
|
a3
|
a4
|
y4
|
0
|
1
|
0
|
0
|
-
|
a4
|
a5
|
y5
|
0
|
1
|
0
|
1
|
a5a6-0110
|
|
|
|
|
|
|
|
a5a6y60110
|
|
|
|
|
|
|
|
a5a6y70110
|
|
|
|
|
|
|
|
a5a6y80110
|
|
|
|
|
|
|
|
-
|
a6
|
a7
|
y9
|
0
|
1
|
1
|
1
|
-
|
a7
|
a8
|
y10
|
1
|
0
|
0
|
0
|
-
|
a8
|
a9
|
y11
|
1
|
0
|
0
|
1
|
a9a10y121010
|
|
|
|
|
|
|
|
a9a6-0110
|
|
|
|
|
|
|
|
a9a6y60110
|
|
|
|
|
|
|
|
a9a6y80110
|
|
|
|
|
|
|
|
-
|
a10
|
a0
|
y13
|
0
|
0
|
0
|
0
|
До складу керуючого автомату входять такі основні вузли:
чотири D-тригерів для формування коду внутрішнього стану;
дишифратор DC для визначення стану за його двійковим кодом;
логічні схеми на елементах «І», «АБО», «НІ».
3. Методика контролю арифметичної операції
.1 Загальні теоретичні відомості
Арифметичні операції виконуються на суматорах
прямого, оберненого і доповняльного коду. Допустимо, що зображення чисел
зберігаються в машині в деякому коді, тобто операція перетворення в заданий код
або обернений проводиться на виході чи вході машини. Методика реалізації
операцій контролю представляється таким чином.
По-перше розглянемо зображення числа в
відповідному коді, як єдину кодову комбінацію.
Розглянемо послідовність дій на прикладі суматора
прямого коду: додаються тільки цифрові частини зображення чисел, а знак
зберігається, то контроль можна здійснити двома способами:
1)
розділений контроль знакової і цифрової чистин зображень
результату;
2)
загальний контроль всього зображення.
При розділеному способі, для контролю знакових
розрядів, можна використовувати засіб для визначення переповнення, так як у
випадку модифікованого коду появи помилок в знакових розрядах приведе до
неспівпадання інформації в них. При перевірці правильності обробки цифрових
частин зображень також не виникає особливих труднощів.
При загальному способі контролю потребує корекцію
контрольного коду результату із-за того, що знак результату при додаванні
повторює знак доданків.
При числовому методі контролю код заданого числа
визначається як найменший додатній залишок від ділення числа на вибраний модуль
p:
A=A - {A/p} p,
де у фігурних дужках - ціла частина від ділення;
А - число, яке контролюється.
Величина модуля р істотно впливає на якість
контролю; якщо р=q (q - основа системи числення, в якій виражене число) і має
місце числовий контроль, то контролюється тільки молодший розряд числа і
контроль як такий не має змісту; для р = qm вірні аналогічні
міркування, так як, якщо m<n, знову ж не всі розряди числа приймають участь
у контролі і помилки в розрядах старших m взагалі не сприймаються.
При числовому методі контролю по модулю р для
визначення залишку використовують операцію ділення, яка потребує великих витрат
машинного часу. Для числового методу контролю вірні основні властивості
порівнянь (додавання, множення порівнянь і т.д.). Тому, якщо
А º rA (mod
p); B º rB (mod p)
де 0 £ rA £ p-1, то А + В º rA +
rB(mod p).
Звідси
A +В º rA + rB(modp).
Аналогічним чином доводиться вірність і наступних
відношень:
A -В º rA - rB(modp).A
В º rA rB(modp).
.2 Приклад реалізації методики контролю
Розглянемо застосування числового методу контролю
на прикладі двох чисел:
А = 47 та В =-16, якщо модуль p = 3.
Контрольні коди чисел:A= 47 mod 3 = 2,
rB = 16 mod 3 = 1
Контрольні коди для суми:- B = 47-16 =
31, (А+ В) mod 3=(31) mod 9= 0;A+rB =2+1 = 3, (rA-rB)mod
3= (3) mod 3= 0;
Так як (А - В) mod 3 = (rA+rB)mod
3=0, то це означає, що операцію віднімання виконано вірно.
Тепер внесемо помилку. Нехай А - В=30, (А - В)
mod 3= (30) mod 3=1;
(rA-rB)mod 3= (3) mod 3= 0;
Оскільки, (А - В) mod 3¹(rA-rB)mod
3, то існує помилка - операцію додавання виконано невірно.
Таким чином, числовий контроль дозволяє
визначити, чи вірний результат було отримано
Висновок
цифровий автомат множення мілі
В даній курсовій роботі було синтезовано
цифровий автомат для виконання операції множення в оберненому коді двох
двійкових чисел з фіксованою комою. Керуючий автомат побудований з жорсткою
логікою і працює по принципу автомата Мілі. Використання алгоритму множення з
пропусканням тактів додавання дозволяє підвищити швидкодію автомата.
Використання автомата з жорсткою логікою типу Мілі дозволяє підвищити швидкодію
керуючого пристрою в порівнянні з автоматами з програмованою логікою.