Введение: возвращение к истокам ради глубокого понимания

Представьте, что вместо привычного бесшумного кликанья мышки вы запускаете скрипт на машине, где каждый такт процессора сопровождается громким механическим щелканьем и вспыхивающим светом спирали накаливания. В эпоху квантовых вычислений, нейроморфных процессоров и многоядерных кремниевых монстров мы порой забываем фундаментальные принципы, на которых строится вся современная вычислительная техника. (Программист, пишущий на высокоуровневых языках вроде Python или TypeScript, редко задумывается о том, что происходит на уровне физических вентилей — пока код не начинает тормозить в продакшене из-за очередной неочевидной абстракции). Еще реже современные инженеры обращаются к технологиям первой половины XX века. Однако концепция создания вычислительного устройства из подручных материалов — а именно из обычных лампочек накаливания, тумблеров и реле — остается лучшим учебным упражнением для понимания самой сути бинарной логики.

Проект, неофициально известный в гик-сообществе как The Lightbulb Computer, представляет собой осязаемый мост между абстрактной булевой алгеброй и физическим электричеством. Это не замена кремнию, но это лучший способ понять физику вычислений. В этой статье мы разберем архитектуру такого устройства, особенности схемотехники и проблемы, с которыми сталкиваются инженеры при создании релейной логики.

«Чтобы по-настоящему понять, как работает процессор, нужно спалить пару реле и пару сотен метров провода своими руками».

Анатомия простейшей логики: от выключателя к биту

Любой компьютер оперирует информацией, представленной в двоичном коде. Когда вы в следующий раз будете оптимизировать SQL-запрос или паттерн в приложении, вспомните, что на самом базовом уровне все сводится к простейшим физическим состояниям. В нашей лампово-релейной системе они сопоставляются следующим образом:

  • Логический ноль (0): Цепь разомкнута, напряжение на выходе близко к 0В, сигнальная лампочка не горит.
  • Логическая единица (1): Цепь замкнута, течет рабочий ток, лампочка горит в полную силу.

Базовыми строительными блоками любого процессора являются логические вентили: AND (И), OR (ИЛИ) и NOT (НЕ). На электромеханических реле они реализуются интуитивно понятно через комбинацию последовательных и параллельных соединений.

Реализация базовых вентилей на реле

  • Вентиль NOT (Инвертор): Использует нормально замкнутое реле. Когда на катушку подается ток (1), сердечник притягивает пластину и размыкает силовую цепь лампы (0). Когда вход обесточен (0), контакт замкнут, и лампа горит (1).
  • Вентиль AND (И): Два тумблера или выходных контакта предыдущих реле соединяются последовательно. Лампа загорится только тогда, когда замкнуты И первый, И второй контакты.
  • Вентиль OR (ИЛИ): Два контакта соединяются параллельно. Лампа загорится, если замкнут ЛИБО первый, ЛИБО второй (либо оба сразу) тумблер.

Освоившись с простейшими вентилями, мы получаем в руки ключи от создания полноценной вычислительной архитектуры — переходим к проектированию «мозгов» нашей системы.

Проектирование АЛУ (Арифметико-логического устройства)

Имея базовые вентили, мы можем построить полноценный сумматор (Adder). В основе процессора лежит однобитный полусумматор, который выполняет сложение двух бит с выдачей результата (SUM) и переноса в следующий разряд (CARRY).

Схема полусумматора на реле выглядит следующим образом:


Вход A ----[ XOR ]----+----> Сумма (SUM)
Вход B ----+          |
                      +----> Перенос (CARRY) [ AND ]

Каждое реле вносит задержку срабатывания (обычно от 10 до 50 миллисекунд). (Отладка такой системы — это уже не дебаг в IDE, это буквально поиск плохого контакта методом «пошевелить провод отверткой, пока не заработает»). Из-за этого при каскадировании таких элементов возникает визуально заметный эффект «бегущих волн» вычислений — сигнал