Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.12.2021

Просмотров: 6845

Скачиваний: 22

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.



207

6.7.4. Виключне АБО

Також цю операцію ще називають додавання за модулем два (XOR), оскільки вона виконує порозрядне додавання вхідних змінних за модулем два. Ця операція виконуєть­ся як мінімум над двома операндами X та Y. Відобразимо значення функції наступною таблицею істинності (табл. 6.4).

Таблиця 6.4



біт X

біт Y

біт результату

0

0

0

0

1

1

1

0

1

1

1

0

Приклади виконання операції логічного додавання за модулем два наведено на

рис. 6.3.

6.2. Операції зсуву

6.2.1. Логічні зсуви

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


208

Команда логічного зсуву має наступні поля: код логічної операції зсуву праворуч або ліворуч, адреса операнда та код зсуву, який вказує величину зсуву, тобто кількість розрядів, на які має бути проведений зсув. Якщо операнд позначити через X, а код зсуву через Y, то результат Z виконання операції буде рівним Z = X 2+/-Y, де знак "+" відповідає зсуву ліворуч, а знак "-" - праворуч.

6.2.2. Арифметичні зсуви

Арифметичні зсуви дуже подібні до попередніх (логічних), але вони мають таку особ­ливість, як розмноження знака при зсуві праворуч та збереження знака при зсуві ліво­руч (рис. 6.5).

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

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

6.2.3. Циклічні зсуви

Циклічний зсув передбачає, що розряди, які витісняються з одного боку операнда, дописуються з іншого його боку (рис. 6.6).


209

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

6.3. Операції відношення

6.3.1. Порівняння двійкових кодів на збіжність

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

n Z = AND ((X. AND Y) OR (NOT(X) AND NOT(Y))),

i = 0 де і = 0, 1 ... n - номери розрядів чисел X та Y, які порівнюються, Z - розряд ре­зультату.

6.3.2. Визначення старшинства двійкових кодів

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

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

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


210

6.4. Арифметичні операції

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

До арифметичних належать також наступні операції над одиночними операндами:

  • взяття абсолютної величини від операнда;

  • інверсія знака операнда;

  • прирощення операнда на одиницю;

  • зменшення операнда на одиницю.

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

6.4.1. Додавання двійкових чисел без знаків

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

Si= xiXOR yiXOR ci

ci-1 = (xiANDyi) OR i AND ci) OR iAND сi)

де: S. - і-тий розряд суми, х., у. - і-ті розряди першого та другого доданків відповідно, с. - розряд переносу.

Ці формули отримані з наступної таблиці істинності (табл. 6.5).

Таблиця 6.5



сi

xi

yi

Si

ci+1

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1


211

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

Приклади виконання операції додавання двійкових чисел без знаків приведено на рис. 6.7.

Позначимо оператор виконання операції однорозрядного двійкового додавання від­повідно до табл. 6.5 знаком суми, як це показано на рис. 6.8.

Тут Si- і-й розряд суми, хi, уi - і-ті розряди першого та другого доданків відповідно, сi та сi+1 - відповідно і-й та (і+1)-й розряди переносу. Тоді граф алгоритму п-розрядного додавання буде мати вигляд, показаний на рис. 6.9. Показаний на рис. 6.9. алгоритм на­зивається алгоритмом додавання двійкових чисел з послідовним переносом, оскільки перенос проходить через всі оператори однорозрядного двійкового додавання.

Вхідними даними тут є двійкові числа хп1, хn-2, ..., х0 та уn-1, уn-2, ..., у0 , а вихідним - двійкове число Sn-1, Sn-2, ..., S0, яке є сумою вхідних чисел. Показаний алгоритм додаван­ня є доволі простим. Недоліком представленого алгоритму є його суттєва часова склад­ність, тобто велика кількість операцій, які знаходяться на критичному шляху, оскільки