Булева алгебра: как из чистой логики собрали процессор
В середине XIX века математик придумал алгебру, где есть только «истина» и «ложь». Он и не подозревал, что через сто лет на ней построят все компьютеры мира — от калькулятора до суперкомпьютера.
Два значения, три операции — и из этого крошечного набора выросла вся вычислительная техника.
Процессор не «думает». Он лишь миллиарды раз в секунду решает простейшие логические задачки «да или нет». Магия — в количестве и в комбинировании.
В 1854 году Джордж Буль опубликовал работу, где предложил описывать логику языком алгебры: вместо чисел — «истина» и «ложь», вместо сложения и умножения — операции «или» и «и». Современники сочли это любопытной абстракцией. А спустя восемьдесят лет инженеры поняли: это же готовая инструкция, как строить вычислительные машины.
Три кирпичика логики
Вся булева алгебра держится на трёх операциях, которые легко понять на словах:
- И (AND): истина, только если оба входа истинны. «Пойду гулять, если тепло и нет дождя».
- ИЛИ (OR): истина, если хотя бы один вход истинен. «Возьму зонт, если дождь или прогноз пасмурный».
- НЕ (NOT): переворачивает значение. Истина становится ложью и наоборот.
Обозначим истину за $1$, ложь за $0$. Тогда поведение операций удобно записать таблицей истинности:
| A | B | A И B | A ИЛИ B |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
От логики к электричеству
Прорыв случился, когда Клод Шеннон (тот самый!) в 1937 году заметил: переключатели и реле ведут себя в точности как булевы операции. Ток идёт — это $1$, не идёт — $0$. Два выключателя последовательно — это «И», параллельно — «ИЛИ». Логику можно паять!
Так родились логические вентили — крошечные электронные схемы, выполняющие И, ИЛИ, НЕ. В современном процессоре их миллиарды, и каждый — буквально воплощённая в кремнии формула Буля.
Удивительный факт об универсальности
Оказывается, любую логическую функцию можно собрать всего из одного типа вентиля — например, из «И-НЕ» (NAND). Это как если бы из одного-единственного кубика лего можно было построить что угодно. Поэтому процессоры так однородны внутри: бесконечное повторение простейших элементов.
Как из логики получается сложение
Самое поразительное — что арифметика тоже сводится к логике. Сложим два бита. Если оба нули — сумма $0$. Один из них единица — сумма $1$. Оба единицы — сумма $0$, и единица переносится в старший разряд (как при сложении $1+1=10$ в двоичной системе).
Заметьте: «сумма без переноса» — это операция исключающее ИЛИ (XOR), а «перенос» — это «И». Соединив несколько таких блоков, инженеры получают сумматор — схему, складывающую многозначные числа. А из сложения уже рождаются вычитание, умножение и вся остальная арифметика процессора.
Память — тоже логика
Процессор не только считает, но и помнит — и память тоже собрана из вентилей. Соедините пару элементов в кольцо так, чтобы выход одного питал вход другого, и схема «застрянет» в одном из двух состояний: $0$ или $1$. Она будет хранить этот бит, пока есть питание. Такая ячейка называется триггером, и из миллиардов триггеров складываются регистры и кэш процессора. Получается, что и вычисление, и хранение информации — это две грани одной булевой логики: одни комбинации вентилей преобразуют биты, другие их удерживают. Вся машина целиком говорит на языке «истины» и «лжи».
Великая цепочка абстракций
Сложите картину целиком: абстрактная логика Буля → электрические вентили Шеннона → сумматоры и блоки памяти → процессор → операционная система → приложение, в котором вы это читаете. Каждый слой стоит на предыдущем, и в самом фундаменте — два значения и три операции, придуманные из чистого любопытства за век до первого компьютера. Иногда самая отвлечённая математика оказывается самой практичной.