23Л_Сумматори та АЛУ
1. Арифметичні операції над двійковими числами
1.1. Додавання позитивних двійкових чисел виконується у звичайному двійковому коді, що називається прямим кодом. Один або два старші розряди використовуються для знака числа. Розглянемо з прикладу восьми бітного числа із двома знаковими розрядами. Використання для представлення знака двох біт надає цікаву можливість контролювати переповнення при виконанні арифметичних операцій. Розглянемо кілька прикладів.
Підсумуємо числа A = 12 і B = 5. Для виконання цієї операції в АЛУ треба зі входів мультиплексорів передати числа A і B без зміни до суматора, на виході S якого отримаємо результат.
В результаті підсумовування виходить правильний результат. Це можна проконтролювати за старшим розрядом знака (прапором перенесення C), який збігається з другим знаковим розрядом (знаком результату).
Підсумуємо числа 100 та 31
У цьому вся прикладі видно, що результаті підсумовування відбулося переповнення восьмибітової змінної, т.к. внаслідок операції над позитивними числами вийшов негативний результат. Однак, якщо розглянути прапор переносу, то він не збігається зі знаком результату. Ця ситуація є ознакою переповнення результату і легко виявляється за допомогою операції, що "виключає АБО" над старшим бітом результату і прапором перенесення C. Більшість процесорів здійснюють цю операцію апаратно і поміщають результат у прапор переповнення OV.
1.2. Додавання негативних двійкових чисел виконується в додатковому коді. У ньому операції з негативними числами виконуються аналогічно до операцій з позитивними числами.
Підсумуємо два негативні числа -12 і -5.Щоб уявити негативнечисло в додатковому коді, треба подати його у прямому коді з нульовими знаковими розрядами як у попередньому прикладі. Після цього треба інвертувати всі розряди коду і додати одиницю молодшого розряду. Отримаємо значення A і B, наведені нижче і підсумуємо їх.
У прикладі прапор перенесення C теж збігається зі знаком результату, тобто переповнення не відбулося і в цьому випадку.
1.3. Додавання позитивного і негативного двійкових чисел нічим не відрізняється від попередніх операцій. Підсумуємо позитивне та негативне число -12 і +5.
У цьому прикладі під час підсумовування позитивного і негативного числа автоматично виходить правильний знак результату. У разі знак результату негативний. Прапор перенесення співпадає зі знаком результату, тому переповнення не було.
Суматори виконують арифметичну операцію додавання двох чисел. Вони мають як самостійне значення, так і є складовою арифметично-логічного пристрою (АЛП) мікропроцесора. При організації різних обчислювальних процесів підсумовування приділяється головна роль, воно є основною операцією. Наприклад, віднімання - це підсумовування з використанням додаткового або зворотного коду, множення зводиться до зсуву та додавання (підсумовування) двійкових чисел. Слід зазначити, що суматори є логічними пристроями, функціонують за законами логіки алгебри, але виконують операцію арифметичного, а не логічного складання.

Мал. 1. Позначення суматора на функціональних схемах
За функціями, що виконуються, розрізняють: напівсуматори, однорозрядні суматори, багаторозрядні суматори.
На основі суматорів будуються арифметико-логічні пристрої (АЛП).
2.1. Однорозрядний напівсуматор
У суматорах операція підсумовування чисел, поданих у двійковому коді, здійснюється порозрядно.
Таблиця істинності напівсуматора
На підставі цієї таблиці вираз для S є функцією двох змінних ДОДАТОК ПО МОДУЛЮ 2 (ВИКЛЮЧНЕ-АБО), а для перенесенняР– просто функцією збігуІ:
Використовуючи уявлення в базисіІ-НЕ,з таблиці істинності отримаємо
.
Технічна реалізація напівсуматора представлена на рис.2.

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

Повні однорозрядні суматори є основою, з яких одержують різні схеми багаторозрядних суматорів.
2.2. Багаторозрядні суматори
Суматор паралельної дії містить однорозрядні суматори, число яких дорівнює розрядності подвійних слів, що підсумовуються (рис. 4).
Розряди двійкових слів надходять на відповідні однорозрядні суматори. Кожен однорозрядний суматор формує виходи сумиS1-S4 та виходи переносу Р. Перенесення передається на вхід наступного однорозрядного суматора більш старшого розряду. За ланцюгами перенесення суматори з'єднані послідовно. Імпульс перенесення в кожному суматорі формується після того, як буде сформовано і надійде на суматор перенесення попереднього розряду. Тому швидкодія такого паралельного суматора з послідовним перенесенням невисока. У найгіршому випадку перенос може послідовно пройти всі суматори. Загальна затримка сигналу
де τ1-затримка поширення в одномусуматорі.

Підвищення швидкодії досягається застосуванням спеціальних схем наскрізного чи паралельного формування перенесення.
В результаті затримки сигналів у логічних елементах та неодночасного приходу сигналів на входи a,b,pсуматорів (затримка перенесення) вихідний код суми може приймати протягом коротких інтервалів часу неправдиві значення, що не відповідають вхідних сумованих кодів.
Для того, щоб уникнути невизначених станів, застосовують синхронізацію або стробування вихідних сигналів.
3. Арифметико-логічні пристрої
Для організації функціонування обчислювального пристрою крім операцій складання необхідно реалізувати низку арифметичних та логічних операцій: віднімання, інверсія знака, інкремент, декремент, зсув тощо. Пристрій, що реалізує весь набір арифметичних і логічних операцій в процесорі називається арифметико-логічним пристроєм (АЛУ). Воно може бути реалізовано на основі керованого суматора, двох багаторозрядних інверторів та двох мультиплексорів. Типова структура АЛУ наведена на рис.5.

Рис.5. Структурна схема арифметичного устрою.
У цій схемі арифметичні операнди передаються через дві групи чотиривхідних комутаторів (мультиплексорів). На входи мультиплексорів надходять прямі та інверсні значення розрядів чисел-операндів, а також логічний нуль та логічна одиниця. Цей набір необхідний виконання різних операцій над числами. Прямий та інверсний операнди використовуються для реалізації арифметичного складання або віднімання. За допомогою логічних нулів та одиниць, можна виконувати операції інкременту, декременту, формування нуля, одиниці та мінус одиниці на виході АЛУ.
Крімарифметичних операцій АЛУ може виконувати порозрядні логічні операції, якщо суматор ввести додаткові елементи здатні забороняти і змінювати міжрозрядні переноси всередині суматора. Управління міжрозрядними переносами здійснюється за спеціальним входомM.