Логічні вентилі та булева алгебра
Кожне обчислення, яке виконує комп'ютер — додавання чисел, порівняння значень, ухвалення розгалужень — зводиться до одного: маніпулювання окремими бітами за допомогою простих логічних вентилів. Зрозуміти вентилі означає зрозуміти фізичну основу кожного процесора, відеокарти й мікроконтролера, що будь-коли створювалися.
Чому двійкова система?
Транзистор — це перемикач, керований напругою: він або увімкнений (проводить, висока напруга ≈ 3,3 В), або вимкнений (не проводить, ≈ 0 В). Це природно відображається на два стани: 1 і 0, істина та хиба, HIGH і LOW.
Проєктування електроніки під десять стабільних рівнів напруги (десяткова система) вимагало б значно більшої точності й було б набагато чутливішим до шуму. Двійкова система максимально стійка до шуму: різниця між 0 і 1 може становити сотні мілівольт, і все, що нижче порога, упевнено читається як LOW.
Базові вентилі: AND, OR, NOT, XOR
Логічний вентиль приймає один чи два двійкові входи й видає двійковий вихід за детермінованим правилом, зафіксованим у таблиці істинності.
Таблиці істинності AND і XOR
Таблиці істинності для всіх базових вентилів із двома входами A та B:
| A | B | AND | OR | XOR | NOT A |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Похідні вентилі: NAND, NOR, XNOR
Додавання етапу NOT до будь-якого вентиля інвертує його вихід, утворюючи новий вентиль:
Булева алгебра
Булева алгебра (Джордж Буль, 1854) — це математика логіки — правила, що дозволяють маніпулювати й спрощувати вирази з AND, OR та NOT, так само як звичайна алгебра спрощує арифметичні вирази.
Ці тотожності дозволяють розробнику звести складну специфікацію схеми — яка могла б використовувати десятки вентилів — до мінімального еквівалента, зменшуючи площу кремнію та енергоспоживання.
Закони де Моргана
Два закони Огастеса де Моргана — це практично найважливіші булеві тотожності у цифровому проєктуванні:
Простими словами:
- Заперечення AND те саме, що OR заперечених входів.
- Заперечення OR те саме, що AND заперечених входів.
Закони де Моргана — це причина, чому вентилі NAND і NOR кожен здатен реалізувати будь-яку булеву функцію: можна побудувати AND, OR і NOT, використовуючи лише NAND (або лише NOR). На практиці CMOS-схеми реалізують NAND і NOR ефективніше, ніж AND і OR, тож розробники навмисно перетворюють схеми на такі, що використовують лише NAND/NOR.
Перевірка за таблицею істинності (A=1, B=0): NOT(1·0) = NOT 0 = 1. Права частина: (NOT 1)+(NOT 0) = 0+1 = 1. ✓
Побудова суматора
Двійкове додавання дзеркалить десяткове: ви додаєте кожен стовпчик бітів і переносите переповнення до наступного стовпчика. Два вентилі реалізують додавання одного біта:
Напівсуматор
Додає два окремі біти A і B. Виходи: Sum (біт результату) і Carry (перенесення до наступної позиції).
Повний суматор
Напівсуматор не може прийняти перенесення (carry-in) з попередньої бітової позиції. Повний суматор приймає три входи (A, B та перенесення-вхід) і дає Sum та перенесення-вихід. Він будується з двох напівсуматорів та вентиля OR:
З'єднайте 8 повних суматорів послідовно у суматор з наскрізним перенесенням — і ви зможете додати два 8-бітні числа — кожне перенесення «прокочується» до наступного етапу. Щоб додати два 64-бітні цілих (повсякденна операція процесора), ви з'єднуєте 64 повні суматори плюс фінальний біт переповнення перенесення-виходу.
Арифметико-логічний пристрій (АЛП)
АЛП — це обчислювальне ядро процесора. Він приймає два операнди й селектор операції (кілька бітів, що обирають, що обчислити) і пропускає їх крізь відповідну мережу вентилів:
- Арифметика: ADD, SUBTRACT, INCREMENT, DECREMENT
- Побітова логіка: AND, OR, XOR, NOT
- Операції зсуву: ЗСУВ УЛІВО (÷2ⁿ), ЗСУВ УПРАВО (×2ⁿ)
- Порівняння: EQUAL, GREATER-THAN (через віднімання + біт знаку)
Селектор операції керує мультиплексором — схемою, що обирає один з багатьох входів для пропускання — спрямовуючи операнди до правильного логічного блоку й виводячи результат на вихід.
Сучасне ядро процесора містить багато АЛП, блоків з плаваючою комою (FPU) та SIMD-блоків, що застосовують одну операцію до багатьох значень одночасно — але всі вони фундаментально побудовані з тих самих вентилів AND, OR, NOT та XOR, які ви тепер розумієте.
NAND: універсальний вентиль
NAND (і NOR) називають функціонально повними — будь-яку булеву функцію можна реалізувати, використовуючи лише вентилі NAND:
У транзисторній технології CMOS NAND також є найдешевшим вентилем для виготовлення — він потребує лише 4 транзисторів (2 PMOS паралельно + 2 NMOS послідовно) проти 6 для вентиля AND (який є NAND + NOT). Саме тому реальні чипи проєктують у логіці NAND, синтезованій автоматично EDA-інструментами.
Вентилі в кремнії
Кожен логічний вентиль у сучасному чипі побудований з комплементарної пари MOSFET-транзисторів (технологія CMOS). У 2-входовому NAND на CMOS:
- Два транзистори PMOS (P-типу, «підтягувальна мережа») паралельно з'єднують вихід з напругою живлення — якщо будь-який вхід LOW, вихід підтягується до HIGH.
- Два транзистори NMOS (N-типу, «стягувальна мережа») послідовно з'єднують вихід із землею — лише якщо обидва входи HIGH, шлях до землі замкнений, стягуючи вихід до LOW.
Чип Apple M4 (2024) містить приблизно 28 мільярдів транзисторів у техпроцесі 3 нм — 3 нанометри — це приблизно 10 атомів кремнію. Кожен з тих ~28 мільярдів транзисторів бере участь у логічному вентилі, що підпорядковується тим самим таблицям істинності на цій сторінці.
Шлях від теорії перемикальних схем Шеннона 1937 року до чипа 3 нм, що містить 28 мільярдів вентилів — це 87 років інженерії, але базова булева алгебра не змінилася на жодну аксіому.