Не бит, а трит

1958 год. Весь мир строит двоичные компьютеры. Фон Нейман, IBM, мейнфреймы — всё на битах: 0 и 1. В Московском государственном университете молодой инженер Николай Петрович Брусенцов берёт и делает троичную ЭВМ. Сетунь. Логика: −1, 0, +1. Не бит, а трит. Она работала — 50 машин, 15 лет эксплуатации, без сбоев.

Это не была «альтернативная архитектура» в академическом смысле. Это был чистый хак — на уровне физики, математики и софта.

Хак на уровне физики: феррит-диодные ячейки

Брусенцов не располагал интегральными схемами. Он использовал то, что было: ферритовые сердечники и диоды. Два сердечника, работающих как единый тактируемый контур, дают три устойчивых состояния.

   Феррит-диодная ячейка Сетуни
   (3 состояния из 2 сердечников,
    работающих как единый контур)

   ╔════════════════════════════════════════════╗
   ║  ТАКТ СЧИТЫВАНИЯ                           ║
   ║          ↓                                 ║
   ║  ╔═══════╩═══════╗                         ║
   ║  ║ Сердечник 1   ║ ← Рабочий. Направление  ║
   ║  ║  (феррит)     ║    намагниченности      ║
   ║  ╚═══════╦═══════╝    определяет: +1,0,-1  ║
   ║          ↓                                 ║
   ║      ╔═══╩═══╗                             ║
   ║      ║ Диод  ║ ← Выпрямляет сигнал         ║
   ║      ╚═══╦═══╝                             ║
   ║          ↓                                 ║
   ║    ╔═════╩═════╗                           ║
   ║    ║ Выход:    ║                           ║
   ║    ║ +1, 0, -1 ║                           ║
   ║    ╚═══════════╝                           ║
   ╚════════════════════════════════════════════╝

   ╔════════════════════════════════════════════╗
   ║  ТАКТ ПОДГОТОВКИ (сразу после считывания)  ║
   ║          ↓                                 ║
   ║  ╔═══════╩═══════╗                         ║
   ║  ║ Сердечник 2   ║ ← Компенсационный.      ║
   ║  ║  (феррит)     ║    Гасит гистерезис     ║
   ║  ╚═══════╦═══════╝    Сердечника 1,        ║
   ║          ↓            готовит к след. такту║
   ║     (обратная связь                        ║
   ║      к Сердечнику 1)                       ║
   ╚════════════════════════════════════════════╝

   Сердечник 2 НЕ кодирует данные.
   Информацию хранит только отклик Сердечника 1.

Почему три состояния, а не четыре? Два сердечника — это не два независимых бита. Они работают в паре. Второй сердечник не кодирует информацию — он подготавливает первый к следующему такту, компенсируя гистерезис. Информацию несёт только отклик первого сердечника на тактовый импульс: импульс не прошёл (0), прошёл в одном направлении (+1), прошёл в противоположном (−1). Три физически различных состояния. Четырёх не бывает.

Никаких транзисторов. Чистая электромагнитная логика, выжатая из доступных материалов.

Хак на уровне математики: уравновешенная троичная система

Двоичные компьютеры мучаются с отрицательными числами. Прямой код, обратный код, дополнительный код — три разных представления для одного и того же. Знаковый бит, переносы, путаница.

Брусенцов выбрал уравновешенную троичную систему. Цифры: −1, 0, +1 (обычно записываются как T, 0, 1). Отрицательные числа представляются так же, как положительные — просто с отрицательными цифрами. Никакого знакового бита. Никакого дополнительного кода.

Алгоритм перевода из двоичной/десятичной системы в троичную элегантен до предела:

  1. Делим число на 3 с остатком.

  2. Если остаток 0 или 1 — записываем соответствующую цифру.

  3. Если остаток 2 — записываем T (−1), а к частному прибавляем 1.

Этот третий шаг — и есть математический хак Брусенцова. Вместо того чтобы вводить искусственный знаковый бит, он превращает неудобный остаток в удобный ценой одного переноса.

Пример: число 42₁₀ в троичной системе:

42 ÷ 3 = 14, остаток 0 → 0
14 ÷ 3 = 4,  остаток 2 → T, частное +1 = 5
5 ÷ 3 = 1,   остаток 2 → T, частное +1 = 2
2 ÷ 3 = 0,   остаток 2 → T, частное +1 = 1
1 ÷ 3 = 0,   остаток 1 → 1

Читаем снизу вверх: 1 T T T 0. Проверка: 1×3⁴ + (−1)×3³ + (−1)×3² + (−1)×3¹ + 0×3⁰ = 81 − 27 − 9 − 3 + 0 = 42. ✓

Та же идея, что в дополнительном двоичном коде, но встроенная в саму систему счисления. Никаких костылей.

Хак на уровне софта: 24 операции — и всё

Сетунь имела одноадресную систему команд из 24 операций. Для сравнения: современный x86-64 имеет около 1000 инструкций. Брусенцов выбрал минимальный набор, заточенный под реальные задачи физфака МГУ: кристаллография, дифференциальные уравнения, расчёты. Никакой избыточности. Только то, что нужно.

Хак на уровне системы: троичный триггер и защита от помех

Брусенцов не остановился на логических элементах. Он разработал троичный триггер — устройство, способное хранить одно из трёх состояний. Это был ключевой элемент для построения регистров и памяти Сетуни. Позднее он запатентовал усовершенствованный троичный триггер, который был более устойчив к бета-частицам и импульсным наводкам — критическое свойство для вычислительной техники того времени.

Логический троичный элемент, лежащий в основе этих разработок, был создан ещё раньше. Это показывает, что Брусенцов не был «изобретателем-одиночкой» — он систематически, шаг за шагом, выстраивал элементную базу для троичных вычислений, от простейшего логического элемента до помехоустойчивого триггера.

Почему Сетунь — это хак

Потому что Брусенцов не вписался в двоичную ортодоксию. Он не стал делать «ещё один двоичный компьютер». Он построил альтернативу. И она работала — 15 лет, 50 машин, без сбоев.

Определение хакера: сделать то, что «невозможно», из того, что есть, и оно работает. Брусенцов сделал именно это. Не теоретическую модель. Не прототип в лаборатории. А серийную машину, которая решала реальные задачи.

Сегодня, когда мы обсуждаем квантовые вычисления, троичную логику и не-фон-неймановские архитектуры, стоит помнить: всё это уже было. В 1958 году. В МГУ. Сделано инженером, который взял то, что было под рукой, и построил то, что считалось невозможным.

Подписвайтесь на мой ТГ-канал, если хотите видеть больше нетривиальное в тревиальном.

Комментарии (36)