Троичный компьютер: Да, нет, может быть: Логика. Троичная система счисления

  • Ненормальное программирование ,
  • Программирование ,
  • Совершенный код
    • Перевод
    "Возможно, самая красивая система счисления - это сбалансированная троичная" - Дональд Е. Кнут, Искусство программирования, Издание 2.

    Многие знают, что компьютеры хранят данные и работают с ними с помощью двоичной системы счисления. Одно из главных объяснений этому можно найти в схеме современных компьютеров, которые состоят из миллиардов простых и массово производимых транзисторов и конденсаторов, которые могут вместе представлять два состояния: высокое напряжение (1) и низкое напряжение (0).


    Такая конструкция сегодня настолько распространена, что трудно себе представить, как компьютеры могут работать иначе. Но, в Советской России 50-х годов они работали иначе. Если вы вдруг не слышали про такое, загуглите "Сетунь " - сбалансированный трехкомпонентный компьютер, разработанный в 1958 году небольшой группой во главе с Брусенцовым, в МГУ.


    Перед тем, как говорить о Брусенцове и Сетуни, давайте я немного объясню вам троичную сбалансированную систему счисления.

    Сбалансированная троичность

    Тернарная или троичная - это система счисления, в которой есть три вероятных значения: 0 , 1 и 2 . В её сбалансированной версии существуют три вероятности -1 , 0 и +1 , часто упрощённые до - , 0 и + соответственно.


    В такой форме троичные значения подразумеваются в виде "централизованных" вокруг средней точки 0 . Применяются те же правила, как и к любой другой системе счисления: самый правый символ, R , имеет собственное значение, а каждый последующий символ имеет значение, умноженное на основание B , возведенное в степень равную расстоянию D от R .


    Эмм, давайте я просто приведу пример. Давайте запишем 114:


    +++-0 = (1 * 3^4) + (1 * 3^3) + (1 * 3^2) + (-1 * 3^1) + 0 = 81 + 27 + 9 + -3 = 114

    И в бинарной (двоичной):


    1110010 = (1 * 2^6) + (1 * 2^5) + (1 * 2^4) + 0 + 0 + (1 * 2^1) + 0 = 64 + 32 + 16 + 2 = 114

    И, для уверенности, те же правила, применённые при десятичной системе счисления:


    114 = (1 * 10^2) + (1 * 10^1) + (4 * 10^0) = 100 + 10 + 4 = 114

    Что если мы хотим представить -114 ? В двоичной и десятичной системах нам понадобится использовать новый символ: знак (sign). В основной памяти двоичного компьютера это осуществляется либо через хранение ведущего бита, указание знака или значительное уменьшение количества чисел, которые мы можем представить 1 . Именно по этой причине мы говорим о signed и unsigned в языках программирования.


    Но в симметричной троичной системе, как мы узнаем позже, чтобы представить обратную величину числа (инвертированное число), нам просто нужно поменять все "+" на "-" и наоборот. Нам не нужна какая-то дополнительная информация, чтобы указать знак!


    Вот смотрите:


    ---+0 = (-1 * 3^4) + (-1 * 3^3) + (-1 * 3^2) + (1 * 3^1) + 0 = -81 + -27 + -9 + 3 = -114

    Чуть позже мы увидим, что это и несколько других свойств сбалансированной троичной системы дают нам некоторые очень интересные вычислительные преимущества. Но сейчас, давайте вернемся к разговору о компьютере Сетунь.

    Рождение Сетуни

    В конце 50-х годов в мире компьютеров был захватывающий период: Натаниэль Рочестер и его команда в IBM недавно разработали первый серийно выпускаемый компьютер с хранящейся в памяти программой, так называемый «современный» компьютер IBM 701 . Джон Бэкус со своей командой изобрели FORTRAN , первый язык программирования высокого уровня, который обрёл широкое применение. И, пожалуй, самое главное - начали развиваться первые целиком транзисторные компьютеры, такие как TX-0 и Philco Transac S-2000 . Было задано направление для разработки двоичных компьютеров, которые позже стали доминировать.


    Но это было в Северной Америке.


    В то же время в России группа математиков и инженеров под руководством Брусенцова и его коллеги Сергея Соболева разрабатывает другие компьютерные системы 2 . Брусенцов и его коллеги исследуют множество западных компьютеров и технологических достижений, и осмысливают применение транзисторов для представления двоичных данных. Но давайте вспомним, что это СССР - транзисторы не так легко доступны за железным занавесом. А электронные лампы трубки одинаково отстойны как в России, так и на Западе!


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


    Команда из десяти человек буквально построила Сетунь из ничего, работая в небольшой комнате, заполненной лабораторными столами (которые они же сами и построили!). Каждое утро члены команды собирали пять простых машинных элементов. Они брали ферритовые сердечники и, используя обычную швейную иглу, наматывали на каждый по 52 мотка проволоки. Ядра затем передавали техникам, которые завершали процесс сборки и монтировали их в блоки.


    Троичная логика была реализована через объединение двух таких ферритовых элементов и подключения их таким образом, что они моделировали три устойчивых состояния. Этот подход был успешным, но количество необходимых элементов не сокращалось, поскольку в действительности два ферритовых сердечника могут потенциально представлять собой два двоичных бита, что в итоге даёт больший объём информации (2 ^ 2), чем один троичный "трит" (3 ^ 1), Печально, но хотя бы потребляемая мощность была снижена!


    Сетунь оперирует числами до 18 тритов, то есть один трит может моделировать любое число между -387 420 489 и 387 420 489 . Двоичному компьютеру требуется как минимум 29 битов для достижения такой мощности.


    Разработка Сетуни длилась два года, несмотря на то, что система была способна производить операции уже через десять дней с начала испытаний, а в то время подобное было беспрецедентным. Всего было выпущено около 50 машин. И хотя компьютеры Сетунь безотказно работали в течение многих лет в экстремальных российских климатических условиях, проект разрывали противоречия.


    В большей степени из-за неспособности завода-изготовителя оправдать массовое производство того, что они расценивали как дешёвую область науки и "плод университетской фантазии". Думаю, можно с уверенностью предположить, что Россия тогда просто была не готова понять потенциальную важность вычислительных машин. В конце концов, машины Сетунь были заменены двоичными аналогами, которые справлялись с вычислениями с той же эффективностью, но стоимость эксплуатации была выше чем в два раза!

    Что же особенного в тернарной системе?

    Как я уже рассказал, в ней нет необходимости хранить ведущий бит, точнее трит, чтобы указывать знак. А значит, нет понятия целых чисел со знаком или без знака - всё это просто целое число. Таким образом, вычитание достигается простым инвертированием операнда и применением сложения (которое реализуется аналогично компьютерам с двоичной системой). Эта плюс-минус консистенция также может сократить количество переносов, которые требуются для операций умножения.


    Ещё одна полезная черта сбалансированной троичной системы (или любой симметричной системы счисления, раз на то пошло) это вероятность реализовать округление чисел с плавающей точкой, явным выделением целой части числа, что даёт возможность упрощённой реализации деления. Это благодаря тому как троичная система выводит дробную часть действительных чисел.


    Давайте я приведу простой пример. Перевод в код числа 0.2 выглядит следующим образом:


    0.+--+ = 0 + (1 * (3^-1)) + (-1 * (3^-2)) + (-1 * (3^-3)) + (1 * (3^-4)) = 0.33 + -0.11 + -0.03 + 0.01 = 0.2

    И для записи 0.8 нужно начать с + в старшем разряде, а затем просто инвертировать дробную часть (например, 1 + -0,2):


    +.-++- = 1 + (-1 * (3^-1)) + (1 * (3^-2)) + (1 * (3^-3)) + (-1 * (3^-4)) = 1 + -0.33 + 0.11 + 0.03 + -0.01 = 0.8

    Выше видно, что выделение целой части тритов справа от поразрядной точки эквивалентно округлению: 0,2 становится нулём, а 0,8 становится единицей. Круто!

    Программирование с тритами и трайтами!

    Ок, возвращаемся к Сетуни в последний раз. В конце 60-х Брусенцов разработал более современную машину "Сетунь-70", которая воплотила тернарность более чётко. Было введено понятие "трайт", который состоял из 6 тритов (примерно 9,5 битов). Компьютер Сетунь-70 был стековым , и поэтому вместо машинных инструкций, которые намеренно назвали регистрами для ввода и вывода, все операции выполнялись в двух стеках - одном для операндов (вход) и одном для возвращаемых значений (выход). Для того, чтобы приспособить этот дизайн, машинные инструкции были написаны в обратной бесскобочной нотации (обратной польской нотации или постфиксной записи).


    В конце 70-х годов, Брусенцов и несколько его учеников разработали язык программирования для Сетунь-70, который назвали Диалоговая система структурированного программирования (ДССП). Проводя своё исследование 4 , я заметил, что это стек-ориентированный язык (что, правда, совсем не удивительно), аналогичный Forth и использует обратную польскую нотацию. Это позволяет писать программы на языке относительно высокого уровня, но продолжать чувствовать себя "низкоуровнево". Настолько, что у его авторов было следующее сообщение:


    ДССП не был изобретен. Он был открыт. Поэтому у языка нет версий, только расширения.

    Рассмотрим программу на ДССП, которая складывает группу цифр:


    1 2 3 4 DEEP 1- DO +

    Давайте попробуем разложить её. В первой колонке у нас команда, во второй - состояние компьютера после выполнения (стека операндов), а в третьей я даю объяснение:


    1 Добавить 1 в стек. 2 Добавить 2 в стек. 3 Добавить 3 в стек. 4 Добавить 4 в стек. DEEP Добавить "глубину стека" (4) в стек. 1- [-1 4 4 3 2 1] Добавить -1 в стек. DO Начать цикл, удалить два элемента из стека. Для управления циклом первый элемент применяется ко второму пока не получится 0. + Применить оператор "+" до завершения цикла, каждый раз удаляя верхний элемент из стека операндов, применяя + и добавляя вывод в стек возвратов.

    По окончанию исполнения, стек операндов будет пустым, а в стеке возвратов будет .


    О ДССП подробней написано на сайте Ивана Тихонова (авторы Сидоров С.А. и Шумаков М.Н.).

    Будущее

    Развитие сбалансированных тернарных компьютеров практически перешло в небольшую сноску в анналах компьютерной истории. И в то время, как исследование клеток памяти, способных эффективно представлять три различных состояния было незначительным, некоторые достижения в этой области всё же были.


    А именно, японские исследователи в конце 90 -х годов описали возможность использовать переход Джозефсона для реализации троичной логики. Этого можно было достичь за счет циркуляции сверхпроводящих токов - положительного (по часовой), отрицательного (против часовой стрелки), или нулевого. Они обнаружили, что это даёт ячейкам памяти "высокоскоростную способность вычислений, низкое энергопотребление и очень простую конструкцию с меньшим количеством элементов, благодаря тернарной операции".


    Но я не думаю, что в ближайшем будущем вы часто будете сталкиваться с понятием сбалансированного тернарного компьютера. И что ДССП станет прорывом у агрессивных поклонников языков программирования - тоже. Но я считаю, что из прошлого можно извлечь много мудрых решений 5 .



    1. Это зависит от того, как конкретная машина представляет числа. Дополнительный код - это представление чисел в десятичной системе счисления, которое даёт возможность представить от -((2^n) / 2) до ((2^n) / 2) - 1 в n битах.

    2) Хотя компьютер Сетунь был первым электронным устройством, использовавшим для работы тернарную систему, стоит отметить, что идея использования такой системы в вычислительных устройствах впервые была популяризована более 100 лет назад. В 1840 году Томас Фаулер построил вычислительную машину целиком из дерева, и она работала с данными, используя тернарную систему.

      Более точное описание можно найти на сайте российского компьютерного музея .

      Справочный материал для ДССП на английском языке не слишком доступен, поэтому я предупреждаю, что мои знания ограничены и могут содержать догадки трайты

    1. тернарный компьютер
    2. Добавить метки
    В 1959 году Н. П. Брусенцов разработал для МГУ уникальную вычислительную машину «Сетунь». Она была основана на троичной системе счисления и хотя элементная база была частично двоичной, что приводило к перерасходу деталей, машина зарекомендовала себя как экономичная и надёжная. Сегодня троичную машину можно увидеть разве что в музее, двоичный код победил.

    Общение с внешним миром происходит с помощью записи в ячейку памяти с предустановленным адресом значения, которое обработает хост-исполнитель. Например, можно таким образом реализовать примитивную отладочную консоль.
    Так как у нас веб-приложение, выведем эту консоль в аутентичном черном окошке с белыми буквами. Для этого воспользуемся готовым компонентом и возможностями стандартной библиотеки Dart по управлению веб-содержимым.

    +-0. Первые шаги

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

    Итак, для прошивки в память готового кода опишем класс-загрузчик, котовый будет загружать код с сервера и записывать его в память. Код в формате JSON, странно, но факт, ведь любой бинарный формат записи был бы не совсем совместим с троичным кодом.

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

    Отдельным модулем идет bootstrap, это несколько команд, которые установят в памяти константы машины (размер памяти, адрес таблицы модулей и др.) и переведет процессор на адрес первой исполняемой команды. Bootstrap был подготовлен вручную.

    Модуль Core создан по образу и подобию ядра системы Оберон, модулю Kernel, так как это ядро, в нем много прямых операций с памятью, реализация аллокатора динамических структур (глючит иногда) реализация перехватчика исключений и т.д,
    Как раз в модуле Core реализуем самую примитивную консоль. Для вывода строк и чисел будем записывать значения символов в ячейку памяти, как было описано выше. Платформозависимый модуль SYSTEM является виртуальным, его вызовы компилятор переводит непосредственно в машкод.

    Невыразительный скриншот.
    Проверить работоспособность получившейся виртуальной машины можно вот . Конечно, комплексная отладка и процессора и компилятора одновременно привела к некоторым багам (которые я еще не нашел), но как proof of concept результат работы мне показался достаточным.

    +-+. Итоги

    В итоге мы получили вполне работоспособный, расширяемый во все стороны аналог процессора Н. Вирта из проекта Оберон 2013 с модификацией для троичной системы счисления и троичного кода и несколько модулей для работы в получившейся системе.

    В оригинальном интерпретаторе я предпринял попытку развить успех и реализовать общение с внешним миром по аналогу порта rs232, с файловой системой на основе протокола 9p. И вот с чем я столкнулся. И та и другая технология, хоть и декларируются кроссплатформенными, при вводе в понятие платформы тритов и трайтов стремительно теряют свою кроссплатформенность. Основа в виде байтов и битов делает портирование таких технологий нетривиальной задачей.

    Конечно, здесь можно возразить, что значимость и распространенность троичных систем равна нулю, но тут как в анекдоте про Вовочку, троичность есть, а слов про кроссплатформенность для нее нет. Возможно это является некоторым тормозом в распространении троичных систем. Ведь все и так работает.

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

    +0-. Ссылки

    Ну и пожалуй, несколько ссылок для тех, кто заинтересуется.
    • trinary.ru красивый сайт с калькуляторами, календарями, симулятором ОС оригинальной Сетуни.
    • ternarycomp.cs.msu.ru более серьезный сайт, с описанием патентов, алгоритмов
    • www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html авторская страница проекта Оберон 2013.
    • github.com/kpmy/tri репозиторий проекта
    • bitbucket.org/petryxa/trisc репозиторий оригинального эмулятора

    +00. P.S

    Н.П. Брусенцов скончался 4 декабря 2014 года. Надеюсь, дело его жизни не будет забыто.

    Теги: Добавить метки

    Вторую электронную троичную ЭВМ (компьютер) «Сетунь-70» , ведущим системным программистом которой был Рамиль Альварес Хосе .

  • г., G. Frieder, A. Fong и C. Y. Chao (SUNY , Буффало , США), создали Ternac - экспериментальный троичный эмулятор с арифметикой над 24-тритными целыми и 48-тритными действительными числами на двоичном компьютере Burroughs B1700 .
  • Преимущества троичных ЭВМ (компьютеров)

    Троичные ЭВМ (компьютеры) обладают рядом преимуществ по сравнению с двоичными ЭВМ (компьютерами).

    При сложении тритов в троичных полусумматорах и в троичных сумматорах количество сложений в log 2 ⁡ 3 = 1 , 58... {\displaystyle \log _{2}3=1,58...} раза меньше, чем при сложении битов в двоичных полусумматорах и в двоичных сумматорах, и, следовательно, быстродействие при сложении в 1,58.. раза (на 58%) больше.

    При применении симметричной троичной системы счисления и сложение и вычитание производится в одних и тех же двухаргументных (двухоперандных) полусумматорах-полувычитателях или полных трёхаргументных (трёхоперандных) сумматорах-вычитателях без преобразования отрицательных чисел в дополнительные коды , то есть ещё немного быстрее, чем в двоичных полусумматорах и в двоичных полных сумматорах, в которых для вычитания используется сложение с двумя преобразованиями отрицательных чисел, сначала в первое дополнение , а затем во второе дополнение , т.е. два дополнительных действия ("инверсия" и "+1") на каждое отрицательное слагаемое.

    Сложение сильно тормозят переносы, которые в двоичном сумматоре возникают в 4-х случаях из 8-ми (в 50% случаев), в троичном несимметричном сумматоре возникают в 9-ти случаях из 18-ти (в 50% случаев), а в троичном симметричном сумматоре в 8-ми случаях из 27-ми (в 29,6...% случаев), что ещё немного увеличивает быстродействие при применении троичных симметричных сумматоров.

    3-х битная троичная физическая система кодирования и передачи данных 3B BCT имеет на 15,3% большее быстродействие, чем обычная двоичная система кодирования и передачи данных , что ещё немного увеличивает быстродействие.

    3-х битная троичная физическая система кодирования троичных данных 3B BCT избыточна (используются только 3 кода из 8-ми), что позволяет обнаружить ошибки и повысить надёжность изделия.

    В сумме, приблизительно в 2 раза большее увеличение быстродействия в изделиях долговременного применения может окупить приблизительно в 1,5 раза большие единовременные затраты на аппаратную часть. В некоторых изделиях одноразового применения увеличение быстродействия и надёжности может перевесить увеличение затрат на аппаратную часть.

    Кроме этого, вместо 4-х унарных, 16-ти бинарных и 256-ти тринарных двоичных логических функций в троичных эвм появляются 27-мь унарных, 19 683-и бинарных и 7 625 597 484 987-мь тринарных (трёхоперандных) троичных логических функций , которые намного мощнее бинарных. Увеличение "логической мощности" в неизвестное число раз, может в 19 683/16 = 1 230 раз, а может в 7 625 597 484 987/256 = 29 787 490 175 раз (нет методики сравнения "логических мощностей"), но намного, может увеличить "логическую мощность" даже медленнодействующих физических систем кодирования и передачи данных, в том числе и трёхуровневой (3-Level CodedTernary (3L CT), "однопроводной").

    Подобно тому, как в двоичных эвм деление на 2 осуществляется для целых чисел операцией сдвига кода на 1 разряд вправо, а для чисел в виде мантиссы и экспоненты (с плавающей запятой) вычитанием 1 из экспоненты, в троичных эвм для целых чисел операцией сдвига кода на 1 разряд вправо, а для чисел в виде мантиссы и экспоненты (с плавающей запятой) вычитанием из экспоненты 1 производится деление на 3. Из-за этого свойства троичные алгоритмы, а некоторые троичные алгоритмы работают быстрее двоичных алгоритмов, работают на троичных эвм быстрее, чем на двоичных эвм, что ещё немного увеличивает скорость решения некоторых задач, особенно имеющих троичность, на троичных эвм.

    В троичной системе знак числа может иметь все три значения: "-", "0" и "+", т.е. лучше используется троичная суть знака числа. Это можно сделать и в двоичной системе, но в двоичной системе потребуется два двоичных разряда (бита) на знак числа, а в троичной системе только один троичный разряд (трит).

    Может быть, что на первых порах пакеты прикладных программ с применением более мощной, чем двоичная логика, троичной логики, особенно в задачах имеющих троичность (обработка RGB-изображений, трёхкоординатные (объёмные) x,y,z-задачи и др.) позволит существенно сократить время решения многих троичных задач на обычных двоичных компьютерах (двоичная эмуляция троичных эвм и троичной логики на двоичных компьютерах).

    Удельное натуральнологарифмическое число кодов (чисел) (плотность записи информации) описывается уравнением y = ln ⁡ x x {\displaystyle y={\frac {\ln x}{x}}} , где x {\displaystyle x} - основание системы счисления . Из уравнения следует, что наибольшей плотностью записи информации обладает система счисления с основанием равным основанию натуральных логарифмов , то есть равным числу Эйлера (е=2,71…). Эту задачу решали ещё во времена Непера при выборе основания для логарифмических таблиц . Из целочисленных систем счисления наибольшей плотностью записи информации обладает троичная система счисления .

    Потенциальные

    Трёхуровневые

    Амплитуда наибольшего сигнала помехи равной помехоустойчивости с двухуровневыми элементами не более (+/-)Uп/6 (16,7% от Uп), при делении всего диапазона напряжений на три равные части и номинальных напряжениях сигналов в срединах поддиапазонов.

    Недостатки:
    1. необходимость, для равной помехоустойчивости с обычной двоичной системой, увеличения размаха сигнала в 2 раза,
    2. неодинаковость среднего состояния с верхним и нижним состояниями,
    3. неодинаковость амплитуд переходов из крайних состояний в среднее (одинарная амплитуда) и переходов из одного крайнего состояния в другое крайнее состояние (двойная амплитуда).

    Двухуровневые

    Амплитуда наибольшего сигнала помехи не более (+/-)Uп/4 (25% от Uп), при делении всего диапазона напряжений на две равные части и номинальных напряжениях сигналов в срединах поддиапазонов.

    Двухбитные

    Недостатки:

    1. два провода на один разряд.

    Трёхбитные

    Недостатки:

    1. три провода на один разряд.

    Смешанные

    Узлы троичных ЭВМ

    Будущее

    В работе возможным путём считают комбинацию оптического компьютера с троичной логической системой. По мнению авторов работы, троичный компьютер, использующий волоконную оптику, должен использовать три величины: 0 или ВЫКЛЮЧЕНО, 1 или НИЗКИЙ, 2 или ВЫСОКИЙ, т.е. трёхуровневую систему. В работе же автор пишет, что более быстродействующей и более перспективной является трёхчастотная система с тремя величинами: (f1,f2,f3) равными "001" = "0", "010" = "1" и "100" = "2", где 0 - частота выключена, а 1 - частота включена.

    Будущий потенциал троичной вычислительной техники был также отмечен такой компанией как Hypres, которая активно участвует в троичной вычислительной технике. IBM в своих публикациях также сообщает о троичной вычислительной технике, но активно не участвует в ней.

    См. также

    • Троичный разряд
    • Троичный процессор
    • Троичные алгоритмы

    Примечания

    1. D. C. Rine (ed.), Computer Science and Multiple-Valued Logic. Theory and Applications. Elsevier, 1977, 548p. ISBN 9780720404067
    2. Славянская «золотая» группа . Mузей Гармонии и Золотого Сечения.
    3. «Liber аbaci» Леонардо Фибоначчи. Наталья Карпушина. Задача 4. Вариант 1
    4. «Троичный принцип» Николая Брусенцова . Mузей Гармонии и Золотого Сечения
    5. «Liber аbaci» Леонардо Фибоначчи. Наталья Карпушина. Задача 4. Вариант 2
    6. Троичная механическая счётная машина Томаса Фоулера .
    7. Сайт Томаса Фоулера
    8. Раздел 5.2 Choice of binary system
    9. Троичные ЭВМ «Сетунь» и «Сетунь 70». Н. П. Брусенцов, Рамиль Альварес Хосе
    10. Брусенцов Н. П. Троичные ЭВМ "Сетунь" и "Сетунь 70" // Международная конференция SORUCOM. - 2006.
    11. Брусенцов Н. П. Электромагнитные цифровые устройства с однопроводной передачей трёхзначных сигналов // Магнитные элементы автоматики и вычислительной техники. XIV Всесоюзное совещание (Москва, сентябрь 1972 г.). - Москва: Наука, 1972. - С. 242-244.
    12. Забытая история советских ЭВМ. Владимир Сосновский, Антон Орлов
    13. Trinary Computer
    14. Ternary Computing Testbed 3-Trit Computer Architecture. Jeff Connelly, Computer Engineering Department, August 29th, 2008, with contributions from Chirag Patel and Antonio Chavez. Advised by Professor Phillip Nico. California Polytechnic State University of San Luis Obispo

    Учась на последнем курсе и готовя дипломный проект, будущий создатель первого и единственного в мире троичного компьютера столкнулся с необходимостью расчета сложных таблиц. Уже тогда он освоил численные методы вычислений и составил таблицы дифракции на эллиптическом цилиндре (известны как таблицы Брусенцова). Так закладывался фундамент его деятельности в области вычислительной техники в Московском государственном университете.

    Его научный руководитель академик С.Л. Соболев загорелся идеей создания малой ЭВМ, пригодной по стоимости, размерам, надежности для институтских лабораторий. Он организовал семинар, в котором участвовали М.Р. Шура-Бура, К.А. Семендяев, Е.А. Жоголев и, конечно, сам Сергей Львович. Анализировали недостатки существующих машин, прикидывали систему команд и структуру (теперь это называют архитектурой), рассматривали варианты технической реализации, склоняясь к магнитным элементам, поскольку транзисторов еще не было, лампы исключались, а сердечники и диоды можно было достать и все сделать самим. На одном из семинаров (23 апреля 1956 г.) с участием С.Л. Соболева были сформулированы основные технические требования к созданию малой ЭВМ. Руководителем и вначале единственным исполнителем разработки нового компьютера был назначен Н.П. Брусенцов. Заметим, что речь шла о машине с двоичной системой счисления на магнитных элементах.

    Именно тогда у Н.П. Брусенцова возникла мысль использовать троичную систему счисления. Она позволяла создать очень простые и надежные элементы, уменьшала их количество в машине в семь раз по сравнению с другими элементами. Существенно сокращались требования к мощности источника питания, к отбраковке сердечников и диодов, и, главное, появлялась возможность использовать натуральное кодирование чисел вместо применения прямого, обратного и дополнительного кода чисел.

    Первый экземпляр «Сетуни» (а машина была названа так по имени речки, протекавшей возле университета) был готов к концу 1958 г. Сделали ее, можно сказать, своими руками сотрудники возглавляемой Н. П. Брусенцовым лаборатории: Е. А. Жоголев, С. П. Маслов, В. В. Веригин, В. С. Березин, Б. Я. Фельдман, Н. С. Карцева, А. М. Тишулина, В. П. Рогозин. На десятый день комплексной наладки машина заработала. Такого в практике наладчиков разрабатываемых в те годы ЭВМ еще не было.

    Постановлением Совмина СССР серийное производство «Сетуни» было поручено Казанскому заводу математических машин. Конструкторскую документацию на машину разработали в СКБ Института кибернетики АН Украины. Первый образец машины демонстрировался на ВДНХ в Москве. Второй пришлось сдавать на заводе, поскольку заводские начальники пытались доказать, что машина, принятая Межведомственной комиссией и успешно работающая на ВДНХ, не годится для производства. «Пришлось собственными руками привести заводской (второй) образец в соответствие с нашей документацией, - вспоминает Брусенцов, - и на испытаниях он показал 98% полезного времени при единственном отказе (пробился диод на телетайпе), а также солидный запас по климатике и вариациям напряжения сети». Желания наладить крупносерийное производство у руководства завода не было. Причины: «Сетунь» была слишком дешевой машиной, а значит, невыгодной для завода, и тот факт, что она надежно и продуктивно работала во всех климатических зонах от Калининграда до Магадана и от Одессы до Якутска, причем без какого-либо обслуживания и по существу без запасных частей, в расчет не принимался. Успешность испытаний вынудили 30 ноября 1961 г. директора завода был подписать акт, положивший конец его стараниям похоронить неугодную машину.

    Выпускали всего по 15-20 машин в год, а вскоре и от этого отказались. Всего казанский завод выпустил 50 ЭВМ «Сетунь», 30 из них работали в высших учебных заведениях СССР.

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

    В 1961-1968 гг. Брусенцов вместе с Жоголевым разработал архитектуру новой машины, названной затем «Сетунь-70». Было намечено к 1970 г. разработать действующий образец. В апреле 1970 г. образец уже действовал. Работал он на тестах, которые пришлось писать Н. П. Брусенцову, потому что Жоголев увлекся другой работой. Машину все же «оседлали», помог программист Рамиль Альварес Хосе, а еще через год, «слегка» модернизировав «Сетунь-70», сделали ее машиной структурированного программирования.

    Это была машина, в которой неизвестные в то время (1966-1968 гг.) RISC - идеи соединились с преимуществами трехзначной логики, троичного кода и структурированного программирования Э. Дейкстры. Для нее создали диалоговую систему структурированного программирования, а в ней множество высокоэффективных, надежных и компактных продуктов - таких, как кросс-системы программирования микрокомпьютеров, системы разработки технических средств на базе однокристальных микропроцессоров, системы обработки текстов, управления роботами-манипуляторами, медицинский мониторинг и многое другое.

    Машина была задумана так, что обеспечивалась эффективная возможность ее программного развития. Троичность в ней играла ключевую роль. Команд в традиционном понимании не было - они виртуально складывались из слогов. Длина и адресность команд варьируются по необходимости, начиная с нульадресной. На самом деле программист не думает о командах, а пишет в постфиксной форме (ПОЛИЗ) выражения, задающие вычисления над стеком операндов. Для процессора эти алгебраические выражения являются готовой программой, но алгебра дополнена операциями тестирования, управления, ввода-вывода. Пользователь может пополнять набор слогов своими операциями и вводить (определять) постфиксные процедуры, использование которых практически не снижает быстродействия, но обеспечивает идеальные условия для структурированного программирования. Результат - трудоемкость программ уменьшилась в 5-10 раз при небывалой надежности, понятности, модифицируемости и т. п., а также компактности и скорости.

    К сожалению, лаборатория Н. П. Брусенцова после создания машины «Сетунь-70» была выселена из помещения ВЦ МГУ на чердак студенческого общежития. Вероятно, причина была в том, что на фоне двоичных ЭВМ выглядела она со своей троичностью белой вороной. Первое детище Николая Петровича - машина «Сетунь» (экспериментальный образец, проработавший безотказно 17 лет) была варварски уничтожена - ее разрезали на куски и выбросили на свалку. «Сетунь-70» сотрудники лаборатории забрали с собой на чердак и там на ее основе создали «Наставник» - замечательную систему обучения с помощью компьютера.

    В человеческом обществе неприятие нового в порядке вещей, и Н. П. Брусенцов еще легко отделался. А вот Уильям Оккам, проповедовавший трехзначную логику в ХIII веке, с большим трудом избежал костра…Тем не менее Н. П. Брусенцов уверен, что полноценная информатика не может ограничиться общепринятой сегодня по техническим причинам двоичной системой - основа должна быть троичной.

    В настоящее время Николай Петрович Брусенцов заведует лабораторией ЭВМ факультета вычислительной математики и кибернетики Московского государственного университета им. М.В. Ломоносова. Основные направления его научной деятельности - архитектура цифровых машин, автоматизированные системы обучения, системы программирования для мини- и микрокомпьютеров. ЭВМ «Сетунь-70» и сегодня успешно используется в учебном процессе в МГУ. Н.П. Брусенцов является научным руководителем тем, связанных с созданием микрокомпьютерных обучающих систем и систем программирования.

    Н. П. Брусенцов говорил, что «..налицо убедительные доказательства верности открытого пути. С какой легкостью была сделана «Сетунь», как просто ее осваивали и продуктивно применяли во всех областях и как программисты плевались, когда пришлось им переходить на двоичные машины. Наивысшее достижение сегодня -- RISC-архитектура - машины с сокращенным набором команд (обычно их 150), но где им до «Сетуни», у которой 24 команды обеспечивали полную универсальность и несвойственные RISC эффективность и удобство программирования!

    Истинный RISC может быть только троичным.