Особливості виконання основних арифметичних операцій в ЕОМ

Реферат на тему:

«Особливості виконання основних арифметичних операцій в ЕОМ»


1.1 Особливості виконання основних арифметичних операцій в ЕОМ



	Операція алгебраїчного додавання

Додавання чисел з фіксованою комою у цифрових обчислювальних машинах може виконуватися в одному з машинних кодів: прямому, оберненому або доповняльному. Суму також отримаємо в одному з цих кодів. При реалізації операції додавання знаковий розряд й інформаційна частина числа розглядаються як єдине ціле, в результаті чого з від‘ємними числами машина оперує як і з додатніми. Головна перевага такого методу полягає в тому, що правильний знак суми отримується автоматично в процесі додавання знакових цифр операндів і цифри переносу з сусіднього молодшого розряду. У випадку виникнення одиниці переносу зі знакового розряду суми її потрібно відкинути при додаванні в доповняльному коді і додати до молодшого інформаційного розряду суми при додаванні в оберненому коді (тобто виконати циклічний перенос одиниці переповнення). 

Для виявлення переповнення розрядної сітки при додаванні вводиться допоміжний розряд у знакову частину зображення числа, що називають розрядом переповнення. Таке подання числа називається модифікованим кодом.

Знакова частина позитивного числа містить цифри 00, а від’ємного 11. Ознакою переповнення розрядної сітки є наявність у знаковій частині цифр 01 або 10.

Додавання у прямому коді виконується тільки над числами одного знаку. Числа з різними знаками підсумовують в оберненому або доповняльному коді.

Машинна операція додавання чисел з плаваючою комою здійснюється в шість наступних етапів:

	вирівнюються порядки доданків: менший порядок збільшується до більшого, а мантиса числа зсувається вправо на відповідну кількість розрядів;

	виконується перетворення мантис доданків в один з модифікованих кодів (обернений чи доповняльний);

	мантиси доданків додаються;

	у разі необхідності мантиса суми переводиться в прямий код;

	 виконується нормалізація суми;

	виконується корекція порядку результату.

Число вважається нормалізованим, якщо старший інформаційний розряд дорівнює одиниці. Також слід зауважити, що додавання мантис здійснюється в оберненому або доповняльному кодах. Якщо мантиса результату додавання нормалізована, то до цього результату приписуємо порядок будь-якого з операндів. В протилежному випадку відбувається нормалізація числа. В процесі виконання операції додавання можеливе порушення нормалізації справа та зліва. Ознакою порушення нормалізації числа справа є наявність різних цифр у знакових розрядах. У цьому випадку необхідно зсунути число вправо на один розряд. А ознака порушення нормалізації числа зліва – це присутність однакових цифр в розряді переповнення і в старшому розряді цифрової частини. Він показує на необхідність зсуву числа вліво на один розряд.

Кожний зсув мантиси вліво при нормалізації веде до зменшення порядку результату додавання на одиницю. А кожний зсув мантиси вправо – до збільшення. Таким чином відбувається корекція порядку.



1.1.2 Операція множення

Найпростіше множення виконується у прямому коді. У разі представлення чисел з фіксованою комою воно реалізується у два етапи. На першому етапі визначається знак добутку шляхом додавання за модулем два цифр знакових розрядів співмножників (табл. 1). На другому етапі здійснюється множення модулів співмножників, потім, у разі потреби, округлення модуля добутку, після чого до модуля результату дописується його знак, що визначений на першому етапі. 



Таблиця 1 - Правила визначення знаку добутку

Обчислення вручну

Обчислення в машині



















В залежності від способу формування суми часткових добутків розрізняють чотири основних методи виконання множення та відповідно чотири структури АЛП для цієї операції.

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

Метод 2. Множення, починаючи з молодших розрядів множника при зсуві множеного вліво та нерухомій сумі часткових добутків. Послідовність дій визначається, як і в першому варіанті, молодшим розрядом регістра множника. При цьому методі регістр множеного та суматор часткових добутків повинні мати подвійну довжину. 

Метод 3. Множення, починаючи зі старших розрядів множника, при зсуві суми часткових добутків вліво та нерухомому множеному. Послідовність дій виконання множення визначається старшим розрядом регістра множника. Даний метод потребує додаткового в порівнянні з першим методом обладнання. Множення починається з молодших розрядів і множене зсувається вліво на один розряд в кожному такті.

Метод 4. Множення, починаючи зі старших розрядів множника, при зсуві вправо множеного та нерухомій сумі часткових добутків. Послідовність дій на кожному кроці множення визначається старшим розрядом регістра множника. 

	Операцію множення найпростіше виконувати в прямих кодах чисел. Разом з тим, застосування обернених та доповняльних кодів дозволяє істотно спростити операцію алгебричного додавання. Проте використання такої форми представлення чисел має певні особливості:

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

		Добуток обернених (доповняльних) кодів співмножників дорівнює оберненому (доповняльному) коду результату тільки у випадку додатного множника. 

		Якщо множник є від'ємним числом, то обернений (доповняльний) код добутку одержується додаванням поправок  і  ( ) до добутку обернених (доповняльних) кодів співмножників. Оскільки поправки мають різну вагу, то послідовність їх додавання залежить від того, з яких розрядів множника починається множення.

Для чисел  і , що представлені в формі з плаваючою комою, добуток обчислюється за формулою (1):

,		(1)

де , .

Звідси випливає, що процес множення складається з чотирьох етапів:

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

	додавання порядків;

	нормалізація й округлення мантиси добутку;

	корегування порядку добутку.

Підвищення швидкості виконання множення за чотирма основними методами досягається застосуванням методів прискорення операції множення. За способом реалізації вони поділяються на апаратні та логічні. Апаратні методи прискорення множення вимагають для свого здійснення введення додаткової апаратури в основні арифметичні кола пристрою для множення. Логічними методами прискорення множення називають такі методи, реалізація яких не вимагає змін основної структури арифметичних кіл пристрою для множення, а прискорення досягається тільки за рахунок ускладнення схеми керування цим пристроєм. До логічних методiв прискорення операції множення відносять метод множення з пропусканням додавань у тих випадках, коли чергова цифра множнику є нуль; метод множення з перетворенням цифр множнику шляхом групування розрядiв та метод множення з послідовним перетворенням цифр множника.



1.1.3 Операція ділення

	Ділення чисел у двійковій системі числення класифікується таким чином:

			за формою подання чисел:

		з фіксованою комою;

		з плаваючою комою.

			за механізмом виконання операції:

		з відновленням остачі;

		без відновлення остачі;

			за швидкодією:

		просте;

		прискорене;

			за точністю результату:

		з округленням результату;

		без округлення результату.

Для того, щоб поділити двійкові числа з відновленням остачі, необхідно виконати такі операції: 

1. Подвоїти модуль діленого .

	2. Відняти від подвоєного модуля діленого модуль дільника. Одержана різниця  є першою остачею.

3. Проаналізувати знак остачі R. Якщо , то черговому розряду частки присвоїти 1 і перейти до п. 5; якщо ж R < 0, то черговому розряду частки присвоїти 0. 

4. Відновити остачу, додавши модуль дільника .

5. Подвоїти остачу.

6. Визначити чергову остачу, віднявши від попередньої остачі модуль дільника. Перейти до п. 3.

Вищевказані дії слід виконувати до одержання всіх необхідних цифр частки.

Алгоритм ділення модулів чисел без відновлення остачi зводиться до виконання таких дій:

1. Подвоїти модуль діленого .

2. Відняти від подвоєного модуля діленого модуль дільника. Одержана різниця  є першою остачею.

3. Проаналізувати знак остачі R. Якщо , то черговому розряду частки присвоїти 1; якщо ж R < 0, то черговому розряду частки присвоїти 0. 

4. Подвоїти остачу.

5. Визначити чергову остачу, віднявши від попередньої остачі модуль дільника якщо  і додавши до попередньої остачі модуль дільника якщо R < 0. Перейти до п. 3.

При прискореному діленні на алгоритм з відновленням чи без відновлення остачі накладається алгоритм виконання операції прискорення. 

Для прискорення операції ділення використовують аналіз старших інформаційних розрядів. Якщо два старші інформаційні розряди дорівнюють одиниці, то у наступний розряд частки записуємо “1”, якщо “0”, то записуємо “0” і проводимо зсув суматора і регістру результату на два розряди вліво. 

Операція ділення належить до розряду неточних операцій, оскільки результат, як правило, отримують з деякою похибкою. Тому ознакою закінчення операції ділення може бути або досягнення заданої точності (кількість розрядів у частці), або отримання чергової остачі, яка рівна нулю. 

Після закінчення операції ділення двійкових чисел за обраним алгоритмом (з відновленням чи без відновлення остачі, з прискоренням чи без прискорення) для забезпечення округлення результату операцію ділення за обраним алгоритмом продовжують для визначення ще одного розряду результату. Потім аналізують молодший інформаційний розряд результату. Якщо у цьому розряді записана “1”, то її додають до попереднього розряду результату, якщо “0”, то останній інформаційний розряд результату просто ігнорують. При використанні методу ділення двійкових чисел без округлення результату описані дії не проводять, обмежуючись виконанням алгоритму ділення.

При діленні двійкових чисел з плаваючою комою спочатку визначають знак результату за правилом алгебри логіки “сума за модулем два”, потім проводять корекцію форми запису чисел (|mA| < |mB|) та визначають порядок результату за формулою (2): 



,					(2)

де  - порядок результату;  - порядок числа А;  - порядок числа В. 

Далі виконують операцію ділення мантиси числа А на мантису числа В за правилами ділення двійкових чисел з фіксованою комою за одним з обраних алгоритмів (з відновленням чи без відновлення остачі; з округленням чи без округлення; просте чи прискорене). Отриманий результат нормалізують.



1.2 Поняття граф-схеми алгоритму та правила її складання



Граф-схема алгоритму (ГСА) є найбільш наочною формою подання роботи автомата. ГСА – це орієнтоватий зв’язний граф, що містить вершини чотирьох типів (рис. 1). Кожен з існуючих входів і виходів вершин може розгалужуватись потрібну кількість разів.



	Кінець



Початок

1

 

1



а)

б)

в)

г)

0Рис. 1 – Типи вершин ГСА



Вершина "Початок" входів не має. Вершина "Початок" (рис. 1а) і будь-яка операторна (рис. 1г) вершина мають по одному виходу. Вершина "Кінець" (рис. 1б) виходів не має. Будь-яка умовна вершина (рис. 1в) має два виходи, які позначаються символами "Так" і "Ні". Замість цих символів можуть бути використані цифри "1" і "0" відповідно.

ГСА повинна задовольняти таким вимогам:

	містити скінченне число вершин;

	мати лише одну початкову та одну кінцеву вершини;

	входи і виходи кожної з вершин повинні з‘єднуватися дугами, спрямованими від виходу попередньої до входу наступної вершини;

	кожний вихід повинени з’єднуватись тільки з одним входом;

	будь-який вхід повинен з’єднуватись принаймні з одним виходом;

	для будь-якої вершини графа існує хоча б один шлях до кінцевої вершини;

	у кожній умовній вершині записуєтья тільки один з елементів множини логічних умов;

	у кожній операторній вершині записується один або деклька операторів, які можуть одночасно виконуватись, при чому допускається, що операторна вершина буде пустою.



1.3 Основні поняття теорії цифрових автоматів



Необхідність формального опису роботи комп’ютера та його окремих частин в процесі проектування вимагає використання спеціального математичного апарату, який необхідний при будь-яких розробках різних методів обробки інформації, при синтезі і аналізі інформаційних процесів, які відбуваються при роботі пристрою. Для цього вводять поняття абстрактного цифрового автомата. 

Цифровим автоматом (ЦА) називають пристрій, призначений для обробки та перетворення цифрової інформації. Найбільш розповсюдженим типом цифрових автоматів є комп’ютери. 

Цифровим автоматом вважаються пристрої, які характеризуються набором деяких внутрішніх станів , в які потрапляє автомат під впливом вхідних сигналів і відповідних команд розв’язання задачі ( Рис. 2 ).



	

ЦА                  А={аі(t)}	Х(t)                                                   Y(t) 



Рис. 2 – Цифровий автомат



Відповідно до Рис. 2, математичною моделлю ЦА є деякий абстрактний автомат, який задається таким чином, в початковий момент часу t = t0, внутрішній стан автомата а(t0) = a1 і зберігається таким до моменту часу t = t1, коли змінюється на стан а2, ця зміна відбувається під впливом вхідного сигналу Х(t1). При цьому формується вихідний сигнал Y(t1)=Y1, який визначається як функція від внутрішнього стану a1 і вхідного сигналу х1: Y=λ(a1, х1). В загальному випадку вважається, що при поданні довільного сигналу хі автомат переходить від стану а(t) в стан а(t+1), який, в свою чергу, є функцією від попереднього стану і вихідного сигналу. В результаті цього переходу виробляється відповідний сигнал Y.

Абстрактний ЦА описується шістьма основними параметрами:

		а1 – початковий стан автомата;

		А = {} - множина (алфавіт) внутрішніх станів;

		Х = {} - алфавіт вхідних сигналів;

		Y = {} – алфавіт вихідних сигналів;

		δ = {} – сукупність функцій переходу автомата з одного стану в інший;

		λ = {} – сукупність функцій виходу автомата.

Сукупність правил переходу автомата з одного стану в інший залежно від вхідної інформації і внутрішніх станів називається алгоритмом перетворення інформації в цифровому автоматі.

На відміну від абстрактного автомата, реально використовуються кінцеві автомати, які мають кінцеві множини вхідних сигналів, вихідних сигналів та внутрішніх станів. Всі кінцеві автомати поділяються на цілком визначені, у яких область визначення D функцій δ та λ збігається з множиною перетину алфавітів вхідного та станів, яка є в свою чергу множиною пар ; та нецілком визначені часткові кінцеві автомати, для яких функції внутрішніх станів і вихідних сигналів δ та λ визначаються не для всіх пар , Крім того кінцеві автомати підрозділяють за виглядом функцій виходів  та переходів . За цією ознакою автомати поділяються на автомати Мілі та Мура.

Будь-який автомат можна описати функцією стану і вихідною функцією:

				 (3)

Цьому виразу відповідає автомат, який називається автоматом Мілі. На відміну від нього, для автомата Мура функція стану не змінюється, а вихідний сигнал залежить тільки від внутрішнього стану автоматів: 

				 (4)



1.4 Синтез керуючого автомата



Процес синтезу керуючого автомату включає такі етапи:

	Кодоване представелення графа мікропрограми або отримання граф-схеми алгоритма роботи керуючого автомата.

	Розмічування граф-схеми алгоритму для визначення станів керуючого автомата, який функціонує відповідно до вибранї моделі (Мілі або Мура).

	Складання структурної таблиці переходів та виходів автомата.

	Отримання функцій збудження елементів пам’яті (тригерів).

	Побудова комбінаційної частини автомата.

Кодоване представлення граф-схеми алгоритму здійснюється шляхом заміни мікрокоманд, записаних в операторних вершинах, відповідними їм керуючими сигналами yj , а умов, які перевіряються в умовних вершинах, відповідними їм сигналами Xi.

Для автомата Мура вихідний сигнал залежить лише від внутрішнього стану, тобто y=λ(a). Тому кожна операторна вершина повинна бути відмічена символом вихідного стану автомата аі.

Для побудови автомата Мілі слід пам’ятати, що вихідний сигнал залежить як від внутрішнього стану, так і від вхідного сигналу (тобто умови Хі). Кодування граф-схеми автома Мілі відбувається не так, як для автомата Мура. Символом а0 кодується вхід першої вершини графа, що йде за початковою, і вхід кінцевої вершини. Виходи інших операторних вершин відмічаються символами аі, при чому виходи різних вершин мають різні номери станів. 

За кодованою граф-схемою роботи автомата складається таблиця переходів і виходів. Для цього спочатку здійснюють кодування станів автомата двійковими кодами, визначають тип та кількість тригерів. Потім за таблицею преходів визначають значення сигналів на входах тригерів, при яких здійснюються переходи; визначають функції збудження тригерів та виконують їх мінімізацію. За знайденими виразами будується комбінаційна схема керуючого автомата на обраних елементах.

Таблиця переходів і виходів має однаковий вигляд для автоматів Мілі та Мура і будується в наступній послідовності.

В полі аi графи t таблиці 2 записуємо поточний стан автомата, в полі аі графи t+1– наступний його стан, у полі Х –умову переходу зі стану аi(t) в стан аi(t+1) згідно граф-схеми алгоритму. В полі Y записуються мікрооперації, які виконуються при переході автомата в наступний стан. У полі “Тригери” вказано сигнали, які необхідно подати на входи відповідних запам’ятовуючих елементів. Таким чином описуються всі можливі переходи автомата (табл. 2).



Таблиця 2– Таблиця переходів і виходів автомата

t

t+1

Тригери

ai

Xі

ai

yi

Т1

Т2

…

Тn



















Кількість тригерів, які необхідні для організації пам’яті керуючого автомату, визначається як найближче більше ціле від двійкового логарифму кількості станів за формулою (5):



R = ] log2 M [ , 					 (5)

де М – кількість станів автомата, 

R – шукана кількість тригерів.

	За отриманою таким чином таблицею записуються та зводяться до мінімальної форми функції збудження тригерів та функції виходів цифрового автомата. Слід пам’ятати, що функції виходів цифрового автомата Мура залежать лише від внутрішніх станів (графа ai поля t+1) і не залежать від умов переходу Хі.

Далі обирається система елементів, з яких будується схема автомата. У більшості схем як елементи пам’яті використовуються елементарні автомати (тригери), що мають наступні особливості:

	вони є автоматами Мура і мають два стійких стани;

		станам елементарного автомата відповідають два різних вихідних сигнали: одиничний (коли на прямому виході тригера одиниця, а на інверсному – нуль) та нульовий;

	у загальному випадку елементарний автомат може мати декілька фізичний входів;

Крім того, схема будь-якого керуючого автомата повинна містити певну кількість логічний елементів, що утворюють функціонально повну систему для синтезу необхідної комбінаційної схеми.



1.5 Контроль виконання арифметичних операцій



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

	По-перше, розглянемо зображення числа у відповідному коді як єдину кодову комбінацію.

	Розглянемо послідовність дій на прикладі суматора прямого коду: якщо додаються тільки цифрові частини зображення чисел, а знак зберігається, то контроль можна здійснити двома способами:

		розділений контроль знакової і цифрової чистин зображень результату;

		загальний контроль всього зображення .

	При розділеному способі для контролю знакових розрядів можна використовувати засіб для визначення переповнення, оскільки у випадку модифікованого коду поява помилок в знакових розрядах призведе до неспівпадання інформації в них. При перевірці правильності обробки цифрових частин зображень також не виникає особливих труднощів .

	При загальному способі контролю необхідна корекція контрольного коду результату через те, що знак результату при додаванні повторює знак доданків. Загальний спосіб контролю може бути використаний і для суматорів оберненого і доповняльного кодів. При додаванні чисел на суматорі доповняльного коду можлива корекція контрольного коду в випадку, якщо знакові розряди зображень містять одиницю тому, що при цьому виникає одиниця переносу із знакового розряду. Очевидно, що контрольний код суми буде рівним

	,

	де – кореляція (=1, якщо виник перенос із знакового розряду, і =0 – якщо переносу немає).

Контроль по модулю. Різноманітні задачі можна вирішувати за допомогою метода контролю, заснованого на властивостях порівняння. Розвинені на цій основі методи контролю арифметичних і логічних операцій називають контролем по модулю.

Існують два метода отримання контрольного коду: числовий і цифровий.

Числовий метод контролю. При числовому методі контролю код заданого числа знаходиться як найменший додатній залишок від ділення числа на обраний модуль р:

, (6)

де  – модуль числа,

{А/р} – ціла частина від ділення числа,

А – контрольне число. 

Величина модуля р значно впливає на якість контроля; якщо p = q(де q – основа системи числення, в якій виражене число) і має місце числовий контроль, то контролюється тільки молодший розряд числа і контроль не має сенсу; для  справедливі аналогічні роздуми, тому, що якщо (де n розрядність числа), знову не всі розряди числа беруть участь в контролі і помилки в розрядах які старші m взагалі не сприймаються.

При числовому методі контролю по модулю р для знаходження залишку використовують операцію ділення, яка потребує значних витрат машинного часу. 

Цифровий метод контролю. При цифровому методі контролю контрольний код числа утворюється діленням суми цифр числа на обраний модуль:



або ,				(7)

 

де  – модуль числа,

 – -та цифра числа. 

Можливі два шляхи отримання контрольного коду:

	безпосереднє ділення суми цифр на модуль р;

	сумування цифр за модулем р.

Другий шлях простіше реалізується, оскільки якщо ai<p, то контрольний код отримується лише операцією сумування.

Проте при цифровому методі властивості порівнянь не завжди справедливі. Це відбувається через наявність переносів (запозичень) при наявності арифметичний дій над числами. Тому знаходження контрольного коду результату операції відбувається обов’язково з корекцією.

Арифметичний контроль (AN-контроль) вимагає утворення контрольного коду у вигляді AN, де А – контрольоване число, N – модуль. Вагою арифметичного коду прийнято вважати кількість ненульових символів у кодовій комбінації, а відстань, що визначається як вага різниці кодових комбінацій, називається арифметичною відстанню.

Якщо відстано між двома числами А1 та А2 рівна d, то це означає, що перехід від одного числа до другого досягається додаванням величини d. У цьому випадку всі комбінації чисел, що знаходяться між А1 та А2, є забороненими. Відповідно, для виявлення d-кратної помилки необхідно мати відстань не меншу за d+1. Якщо d=1, то такий код не зможе виявляти помилки. Величина відстані для кодів AN-вигляду залежить від величин А та N.

Для будь-якого числа А в системі основи q=2 існує єдине представлення вигляду  де аі=±1 або 0, в якому немоє двох сусідніх коефіцієнтів, відмінних від нуля.

Таке представлення містить мінімальне число ненульових коефіцієнтів і називається канонічним. У канонічному представленні вага будь-якого числа, починаючи з 2і+1 й до числа 2і+2і-1, на одиницю більша за вагу чисел від 1 до 2і-1. Вага чисел, починаючи з 2і+2і-1+1 і до 2і+1, співпадає з вагою чисел 2і+2і-1-1, 2і+2і-1-2 і т.д. 

Кількість розрядів для представлення числа AN дорівнює log2(AN)=log2A+log2N, де log2N – надлишковість кода. Таким чином, вибір модуля визначає не тільки надлишковість, але й відстань. В якості модуля доцільно вибирати деяке взаємно просте з основою системи q число, що перевищує саму основу. Можна припустити, що для двійкової системи N=3, і тоді будь-який код вигляду А·3 буде виявляти всі поодинокі помилки. Відповідно, мінімальна надлишковість при довільній основі визначається як logq(q+1), тобто завжди потрібно буде не менше одного, але й не більше двох додаткових розрядів.

Коди з мінімальною відстанню більшою за 2, характеризуються величиною Mq(N, d). Величина Mq(N, d) – найменше число, яке при множенні його на N дає число, вага якого менша за d у представленні за основою q. Іншими словами, якщо число N мало вагу d у представленні за основою q, то добуток N·Mq(N, d) матиме вагу, меншу від d за цією самою основою q.

Якщо число А змінюється в межах 0 ≤А ≤ Mq(N, d) , то при будь-яких N і q мінімальна відстань А·N-кода буде дорівнювати щонайменш d, що випливає з певної кількості Mq(N, d). 

В теорії кодування доведено, що M2(N, 3)=(2(N-1)/2+1)/N.

Основний спосіб для відшукання значення Мq – спосіб безпосередніх обчислень (див. Савєльєв А.Я., ст. 163).