Клікніть на біти для перемикання 0/1 · Спостерігайте за поширенням переносу · Двійковий, шістнадцятковий, десятковий результат
Інтерактивна візуалізація 8-бітного суматора з поширенням переносу — фундаментального елементу АЛП кожного процесора. Перемикайте біти, спостерігайте поширення переносів та бачте результат у двійковій, шістнадцятковій і десятковій системах.
Як повний суматор обчислює суму та перенос з двох вхідних бітів та переносу, а потім ланцюжок із 8 таких суматорів поширює перенос до наступного. Критичний шлях через ланцюг переносів визначає максимальну тактову частоту.
Натисніть на окремі біти A та B для перемикання. Спостерігайте, як перенос поширюється через усі 8 стадій. Результат відображається у двійковій, шістнадцятковій та десятковій формах.
Суматор з поширенням переносу — найпростіша конструкція, але O(n) затримка переносу обмежує швидкість. Сучасні процесори використовують суматори з випередженням переносу (Kogge-Stone), що працюють за O(log n).
Ця симуляція моделює 8-бітний суматор з наскрізним перенесенням — арифметичне ядро АЛП процесора. Він з'єднує вісім однакових каскадів повних суматорів, по одному на кожну бітову позицію. Кожен каскад обчислює біт суми та перенесення на виході з двох вхідних бітів і вхідного перенесення, використовуючи булеві рівняння S = A ⊕ B ⊕ Cₜₙ та Cₒₕₜ = (A·B) + (B·Cₜₙ) + (A·Cₜₙ). Перенесення поширюється від біта 0 до біта 7.
Натискайте кнопки бітів на панелях Вхід A та Вхід B, щоб перемикати кожен біт між 0 і 1; десяткове значення кожного операнда оновлюється в реальному часі. Панель Сума показує результат у вигляді 9-бітного двійкового рядка, десяткового, шістнадцяткового значення та прапорця переповнення (перенесення на виході біта 7). Кнопки Скинути та Випадково задають операнди. Такі суматори лежать в основі кожного додавання, віднімання та обчислення адреси, які виконує процесор.
Що таке суматор з наскрізним перенесенням?
Суматор з наскрізним перенесенням — це цифрова схема, яка додає два двійкові числа, з'єднуючи ланцюг повних суматорів, по одному на кожен біт. Перенесення, утворене кожним каскадом, надходить до наступного, тож сигнал перенесення «прокочується» вздовж ланцюга від молодшого біта до старшого. Ця симуляція використовує вісім таких каскадів для додавання двох 8-бітних чисел.
Яка різниця між напівсуматором і повним суматором?
Напівсуматор додає лише два вхідні біти й утворює суму та перенесення, але не може прийняти вхідне перенесення. Повний суматор додає три біти — два операнди плюс вхідне перенесення, — і саме це дозволяє з'єднувати каскади в ланцюг. Цей суматор повністю побудований з повних суматорів, тож перенесення можуть поширюватися.
Як працює один каскад повного суматора?
Кожен каскад обчислює біт суми як S = A ⊕ B ⊕ Cₜₙ, тобто виключне АБО двох вхідних бітів і вхідного перенесення. Перенесення на виході дорівнює Cₒₕₜ = (A·B) + (B·Cₜₙ) + (A·Cₜₙ), яке дорівнює 1, коли принаймні два з трьох входів дорівнюють 1. Це перенесення на виході стає вхідним перенесенням для наступного біта.
На панелях Вхід A та Вхід B відображається по вісім кнопок бітів — від біта 7 до біта 0; натискання однієї з них перемикає її між 0 і 1. Панель Сума показує результат у двійковому, десятковому та шістнадцятковому вигляді, а також індикатор переповнення. Кнопка Скинути обнуляє обидва числа, а кнопка Випадково заповнює обидва випадковими бітами.
Додавання двох 8-бітних чисел може дати значення більше за 255 — максимум, який вміщує 8-бітний регістр. Додатковий дев'ятий біт фіксує підсумкове перенесення на виході біта 7. Оскільки кожен операнд може сягати 255, найбільша можлива сума становить 510, для повного представлення якої потрібно дев'ять бітів.
Прапорець переповнення показує перенесення на виході старшого біта, позначене C₈. Коли беззнакова сума перевищує 255, він установлюється у «Так (C₈=1)», що означає, що відповідь більше не вміщується у 8 бітів. У справжньому процесорі цей біт перенесення зберігається у регістрі стану й використовується для багатобайтової арифметики та порівнянь.
Так, логіка достовірна: вона реалізує справжні булеві рівняння повного суматора та ланцюг перенесення зліва направо точно так, як це робив би апаратний суматор з наскрізним перенесенням. Основне спрощення стосується часу; анімація підсвічує шлях перенесення для наочності, а не відтворює реальні затримки поширення через вентилі, які вимірюються в наносекундах.
Оскільки кожен каскад має чекати на перенесення від нижчого каскаду, затримка в найгіршому випадку зростає лінійно з кількістю бітів, даючи час поширення O(n). Для широких слів цей критичний шлях через ланцюг перенесення обмежує максимальну тактову частоту схеми.
Суматори з прискореним перенесенням обчислюють перенесення паралельно на основі сигналів генерації та поширення, отримуючи всі перенесення приблизно за час O(log n). Інші швидкі конструкції включають суматори з вибором перенесення, із збереженням перенесення та паралельно-префіксні суматори, як-от Когге–Стоуна, усі з яких обмінюють додаткову логіку на меншу затримку. Сучасні процесори покладаються на них, а не на звичайне наскрізне перенесення.
Комп'ютери віднімають, додаючи доповняльний код другого операнда: інвертують його біти й додають 1. Те саме апаратне забезпечення суматора виконує віднімання, щойно вхід інвертовано, тому один суматор з наскрізним перенесенням, разом з інверторами та вхідним перенесенням, може виконувати як додавання, так і віднімання в АЛП.