Сайт о телевидении

Сайт о телевидении

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

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

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

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

    Троичная система счисления - позиционная система счисления с целочисленным основанием, равным 3.

    Существует в двух вариантах: несимметричная и симметричная.

    В несимметричной троичной системе счисления чаще применяются цифры {0,1,2}, а в троичной симметричной системе счисления знаки {-,0,+}, {-1,0,+1}, {1,0,1}, {1,0,1}, {i,0,1}, {N,O,P}, {N,Z,P} и цифры {2,0,1}, {7,0,1}. Троичные цифры можно обозначать любыми тремя знаками {A,B,C}, но при этом дополнительно нужно указать старшинство знаков, например, C>B, B>A.

    Цифры в троичной симметричной системе целесообразно обозначать их знаками, т.е. вместо 1, 0, -1 писать +, 0, -. Например, десятичные числа 13, 7, 6, -6 в такой троичной записи будут:

    13 = +++
    7 = +-+
    б = +-0
    -6 = -+0

    Изменение знака числа в симметричном коде равносильно потритной инверсии, т.е. взаимозамене всех “+” на “-” и всех “-” на “+”.

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

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

    Если общее количество состояний равно m, то количество триггеров равно m/b, а количество представимых ими чисел соответственно - b^(m/b). Как функция от b, это выражение достигает максимума при b равном числу e = 2,718281828…. При целых значениях b максимум достигается для b = 3. Таким образом, наиболее экономичной является троичная система счисления (используемая в троичных ЭВМ), следом за которой идут двоичная система счисления (традиционно используемая в большинстве распространённых ЭВМ) и четверичная система счисления.

    Немного философии

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

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

    Почему именно двоичная логика стала базой современных ЭВМ? Ответ представляется очевидным. Исторически математическая логика опиралась на идею "третьего не дано", сводя процесс логических умозаключений к бинарным решениям.

    Эта догма классической логики обязана рождением принципу бивалентности логических суждений, введённому яростным стоиком Хризиппом и поддерживаемому авторитетом Аристотеля. "Фундаментом диалектики служит тезис, что всякое высказывание (то, что называют "аксиомой") или истинно, или ложно", - говорил Цицерон.

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

    Давайте взвесим на обычных рычажных весах два предмета А и В. Весы с лёгкостью позволят определить нам две противоположности: вес А > В и вес А
    Логику повседневной жизни сложно впихнуть в чёрно-белую картину бивалентности - это осознавали многие мыслители. В результате на свет появились неклассические логики, отказавшиеся от закона исключённого третьего. Один из первых вариантов многозначной логики в двадцатых годах прошлого столетия разработал польский учёный Ян Лукасевич. В его трёхзначной логике кроме полярных "да" и "нет" появилось значение "возможно". Трёхзначные логические высказывания Лукасевича допускали отсутствие непротиворечивости и назывались модальными. Помните консилиум в сказке о Буратино? "Пациент скорее жив, чем мёртв". "Скорее жив" и есть модальное логическое высказывание.


    Льюис Кэролл (Чарльз Лютвидж Доджсон)
    В двоичной системе естественно представимы неотрицательные либо неположительные числа, а поскольку необходимы и те, и другие, то приходится прибегать к дополнительному или обратному коду или вводить особый бит знака числа (“прямой код”). По сравнению с троичным кодом, позволяющим ввести знак (+, 0, -) на уровне элемента-трита, благодаря чему радикально упрощаются все дальнейшие построения, двоичные конструкции в принципе неполноценны, за исключением, разве только двоично-троичной, представляющей триты парами битов. Дело в том, что числа (похоже, как и все в мире) тройственны по природе. Ведь положительное не есть неотрицательное (вопреки тому, как это встречается в англоязычной литературе) и отрицательное не есть неположительное, потому что имеется три фундаментальных класса чисел - положительные, отрицательные и нуль. Это трехзначная (не хрисиппо-булева) логика: положительное есть антиотрицательное, а отрицательное - антиположительное, комплементарно же положительному отрицательное или нуль и т.д. Это логика знаков числа, и хотя их два (плюс, минус), значений все-таки три: +, 0, -.

    В русской историко-математической литературе «задача о гирях» известна под названием «задачи Баше-Менделеева», названной так в честь французского математика 17 в. Баше де Мезириака, который разместил эту задачу в своем «Сборнике приятных и занимательных задач» (1612 г.) и блестящего русского химика Дмитрия Ивановича Менделеева, который интересовался этой задачей будучи директором Главной Палаты мер и весов России.

    Сущность «задачи Баше-Менделеева» состоит в следующем: при какой системе гирь, имея их по одной, можно взвесить всевозможные грузы Q от 0 до максимального груза Qmax, чтобы значение максимального груза Qmax было бы наибольшим среди всех возможных вариаций? Известно два варианта решения этой задачи: (1) когда гири позволено класть на свободную чашу весов; (2) когда гири позволяется класть на обе чаши весов. В первом случае «оптимальная система гирь» сводится к двоичной системе гирь: 1, 2, 4, 8, 16, ..., а появляющийся при этом «оптимальный» алгоритм или способ измерения рождает двоичную систему счисления, лежащую в основе современных компьютеров. Во втором случае наилучшей является троичная система гирь: 1, 3, 9, 27, 81,…

    Хронология


    Преимущества троичных ЭВМ

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

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

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

    «Се́тунь» - малая ЭВМ на основе троичной логики, разработанная в вычислительном центре Московского государственного университета в 1959 году.

    Руководитель проекта - Н. П. Брусенцов, основные разработчики: Е. А. Жоголев, В. В. Веригин, С. П. Маслов, А. М. Тишулина. Разработка машины была предпринята по инициативе и осуществлялась при активном участии советского математика С. Л. Соболева.

    Казанским заводом математических машин было произведено 46 компьютеров Сетунь, 30 из них использовались в университетах СССР.

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

    Обстоятельное изучение в течение года имевшихся в то время вычислительных машин и технических возможностей их реализации привело к нестандартному решению употребить в создаваемой машине не двоичный, а троичный симметричный код, реализовав ту самую уравновешенную систему счисления, которую Д. Кнут двадцать лет спустя назовет быть может, самой изящной и как затем стало известно, достоинства которой были выявлены К. Шенноном в 1950 г. 121.

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

    Троичная ЭВМ “Сетунь” , опытный образец которой разработали, смонтировали и к концу 1958 г. ввели в эксплуатацию сотрудники отдела электроники, как показал опыт ее освоения, программного оснащения и многообразных практических применений, с исчерпывающей полнотой удовлетворяла всем предусмотренным заданием на ее разработку требованиям. Этот успех, с учетом того, что разработка троичной ЭВМ предпринималась впервые, проводилась немногочисленным коллективом начинающих сотрудников (8 выпускников МЭИ и МГУ, 12 техников и лаборантов) и была выполнена в короткий срок, явно свидетельствует о благодатности троичной цифровой техники. Ценой усложнения по сравнению с двоичными элементов памяти и элементарных операций достигается существенное упрощение и, главное, естественность архитектуры троичных устройств.

    При минимальном наборе команд (всего 24 одноадресные команды) “Сетунь” обеспечивала возможность вычислений с фиксированной и с плавающей запятой, обладала индекс-регистром, значение которого можно как прибавлять, так и вычитать при модификации адреса, предоставляла операцию сложения с произведением, оптимизирующую вычисление полиномов, операцию поразрядного умножения и три команды условного перехода по знаку результата. Простая и эффективная архитектура позволила усилиями небольшой группы программистов уже к концу 1959 г. оснастить машину системой программирования и набором прикладных программ , достаточными для проведения в апреле 1960 г. междуведомственных испытаний опытного образца.

    По результатам этих испытаний “Сетунь” была признана первым действующим образцом универсальной вычислительной машины на безламповых элементах, которому свойственны “высокая производительность, достаточная надежность, малые габариты и простота технического обслуживания”. По рекомендации Междуведомственной комиссии Совет Министров СССР принял постановление о серийном производстве “Сетуни” на Казанском заводе математических машин. Но почему-то троичный компьютер пришелся не по нраву чиновникам радиоэлектронного ведомства: они не обеспечили разработку серийного образца машины, а после того как он все-таки был осуществлен с использованием конструктивов выпускавшейся заводом машины М-20, не содействовали наращиванию выпуска в соответствии с растущим числом заказов, в частности из-за рубежа, а наоборот, жестко ограничивали выпуск, отклоняя заказы, и в 1965 г. полностью прекратили, причем воспрепятствовали освоению машины в ЧССР, планировавшей ее крупносерийное производство. Поводом для этой странной политики могла быть рекордно низкая цена “Сетуни” - 27,5 тыс., рублей, обусловленная бездефектным производством ее магнитных цифровых элементов на Астраханском заводе ЭА и ЭП, по 3 руб. 50 коп. за элемент (в машине было около 2 тыс., элементов). Существенно то, что электромагнитные элементы “Сетуни” позволили осуществить пороговую реализацию трехзначной логики на редкость экономно, естественно и надежно. Опытный образец машины за 17 лет эксплуатации в ВЦ МГУ, после замены на первом году трех элементов с дефектными деталями, не потребовал никакого ремонта внутренних устройств и был уничтожен в состоянии полной работоспособности. Серийные машины устойчиво функционировали в различных климатических зонах от Одессы и Ашхабада до Якутска и Красноярска при отсутствии какого-либо сервиса и запчастей.

    Благодаря простоте и естественности архитектуры, а также рационально построенной системе программирования, включающей интерпретирующие системы: ИП-2 (плавающая запятая, 8 десятичных знаков), ИП-3 (плавающая запятая, 6 десятичных знаков), ИП-4 (комплексные числа, 8 десятичных знаков), ИП-5 (плавающая запятая, 12 десятичных знаков), автокод ПОЛИЗ с операционной системой и библиотекой стандартных подпрограмм (плавающая запятая, 6 десятичных знаков), машины “Сетунь” успешно осваивались пользователями в вузах, на промышленных предприятиях и в НИИ, оказываясь эффективным средством решения практически значимых задач в самых различных областях, от научно-исследовательского моделирования и конструкторских расчетов до прогноза погоды и оптимизации управления предприятием . На семинарах пользователей вычислительных машин “Сетунь”, проведенных в МГУ (1965), на Людиновском тепловозостроительном заводе (1968), в Иркутском политехническом институте (1969) были представлены десятки сообщений о результативных народнохозяйственных применениях этих машин. “Сетунь”, благодаря естественности троичного симметричного кода, оказалась поистине универсальным, несложно программируемым и весьма эффективным вычислительным инструментом, положительно зарекомендовавшим себя, в частности, как техническое средство обучения вычислительной математике более чем в тридцати вузах. А в Военно-воздушной инженерной академии им. Жуковского именно на “Сетуни” была впервые реализована автоматизированная система компьютерного обучения .

    Троичная система счисления основана на том же позиционном принципе кодирования чисел, что и принятая в современных компьютерах двоичная система, однако вес i -й позиции (разряда) в ней равен не 2 i , а 3 i . При этом сами разряды не двухзначны (не биты), а трехзначны (триты) - помимо 0 и 1 допускают третье значение, которым в симметричной системе служит -1, благодаря чему единообразно представимы как положительные, так и отрицательные числа. Значение n -тритного целого числа N определяется аналогично значению n -битного:

    где а i ∈ {1, 0, -1} - значение цифры i -го разряда.

    Цифры в троичной симметричной системе целесообразно обозначать их знаками, т.е. вместо 1, 0, -1 писать +, 0, -. Например, десятичные числа 13, 7, 6, -6 в такой троичной записи будут: 13 = +++, 7 = +-+, б = +-0, -6 = -+0. Изменение знака числа в симметричном коде равносильно потритной инверсии, т.е. взаимозамене всех “+” на “-” и всех “-” на “+”. Операции сложения и умножения в троичном симметричном коде определены таблицами:

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

    Машина “Сетунь” может быть охарактеризована как одноадресная, последовательного действия, с 9-тритным кодом команды, 18-тритными регистрами сумматора S и множителя R , 5-тритными индекс-регистром модификации адреса F и счетчиком-указателем выполняемых команд C , а также однобитным указателем знака результата? , управляющим условными переходами.

    Оперативная память - 162 9-тритных ячейки - разделена на 3 страницы по 54 ячейки для постраничного обмена с основной памятью - магнитным барабаном емкостью 36 либо 72 страницы. Считывание и запись в оперативную память возможны 18-тритными и 9-тритными словами, причем 9-тритное слово соответствует старшей половине 18-тритного в регистрах S и R . Содержимое этих регистров интерпретируется как число с фиксированной после второго из старших разрядов запятой, т.е. по модулю оно меньше 4,5. При вычислениях с плавающей запятой мантисса М нормализованного числа удовлетворяет условию 0,5 < |М| <1,5, а порядок представлен отдельным 5-тритным словом, интерпретируемым как целое со знаком.

    Страничная двухступенная структура памяти с пословной адресацией в пределах трех страниц ОЗУ, обходящейся 5-тритными адресами и соответственно 9-тритными командами, обусловила необыкновенную компактность программ и вместе с тем высокое быстродействие машины, несмотря на то, что в интерпретирующих системах магнитный барабан функционирует как оперативная память.

    В 1967-1969 гг. на основе опыта создания и практических применений машины “Сетунь” разработана усовершенствованная троичная цифровая машина “Сетунь 70”, опытный образец которой вступил в строй в апреле 1970 г. Это была машина нетрадиционной двухстековой архитектуры, ориентированной на обеспечение благоприятных условий дальнейшего развития ее возможностей методом интерпретирующих систем .

    Принятие арифметического стека (стека 18-тритных операндов) обусловлено использованием в качестве машинного языка так называемой польской инверсной записи программ (ПОЛИЗ), положительно зарекомендовавшей себя в одноименном интерпретаторе на “Сетуни”. ПОЛИЗ-программа состоит не из команд той или иной адресности, а является последовательностью коротких слов - 6-тритных трайтов (троичных байтов). Как элемент программы трайт может быть либо адресным, либо операционным. Адресный трайт либо используется в качестве операнда предшествующим операционным, либо воспринимается как предписание заслать в стек операндов из оперативной памяти адресуемое слово от одного до трех трайтов. В оперативной памяти всего 9 страниц по 81 трайту, причем открыты для доступа в данный момент три страницы, номера которых указаны в так называемых “регистрах приписки”.

    Операционный трайт указывает операции, а вернее процедуры, выполняемые над стеком операндов, а также над регистрами процессора. Всего предусмотрена 81 операция - 27 основных, 27 служебных и 27 программируемых пользователем.

    Второй (системный) стек, содержащий адреса возврата при обработке прерываний и при выполнении вложенных подпрограмм, позволил успешно реализовать на “Сетуни 70” идею структурированного программирования Э. Дейкстры, введя операции вызова подпрограммы, вызова по условию и циклического выполнения подпрограмм. Осуществленное таким образом процедурное структурированное программирование на практике подтвердило заявленные Дейкстрой преимущества его метода: трудоемкость создания программ сократилась в 5-7 раз, благодаря исключению традиционной отладки тестированием на конкретных примерах, причем программы обрели надлежащую надежность, упорядоченность, понятность и модифицируемость. В дальнейшем эти особенности архитектуры “Сетуни 70” послужили основой диалоговой системы структурированного программирования ДССП, реализованной на машинах серии ДВК и на последующих персональных компьютерах .

    К сожалению, дальнейшее развитие заложенных в “Сетуни 70” возможностей путем разработки ее программного оснащения было административным порядком прекращено. Пришлось переориентироваться на компьютеризацию обучения. “Сетунь 70” стала основой для разработки и реализации автоматизированной системы обучения “Наставник” , воплотившей принципы “Великой дидактики” Яна Амоса Коменского. Назначение компьютера в этой системе не “электронное перелистывание страниц” и не мультимедийные эффекты, а отслеживание верности понимания учащимся того, чему он учится, своевременное преодоление заблуждений и обеспечение путем обоснованно назначаемых упражнений реального овладения предметом обучения. Вместе с тем компьютер протоколирует ход занятия, предоставляя разработчику учебного материала возможность оценивать эффективность используемых дидактических приемов и совершенствовать их.

    Учебный материал в “Наставнике” предоставляется учащимся в печатном виде с пронумерованными секциями, абзацами, упражнениями и справками к ошибочным ответам, благодаря чему при помощи простейшего терминала с цифровой клавиатурой и калькуляторным индикатором компьютер без гипертекстового дисплея легко и безвредно взаимодействует с обучаемым, придавая книге недостающую ей способность диалога с читателем. Создание учебных материалов для “Наставника” не связано с программированием компьютера, и, как показала практика, разработка вполне удовлетворительных пособий по математике, физике, английскому языку и другим предметам посильна школьным учителям. Дидактическая эффективность этой немудреной системы оказалась на редкость высокой. Так, курс “Базисный Фортран” студенты факультета ВМК МГУ проходили в “Наставнике” за 10-15 часов, студенты экономического факультета - за 15-20 часов, показывая затем в практикуме более совершенное умение программировать на Фортране, чем после обычного семестрового курса.

    Реализованный в “Наставнике” принцип “книга-компьютер” обусловил оптимальное использование компьютера как средства обучения практически во всех отношениях: необходимая аппаратура (микрокомпьютер и подключенные к нему 3-4 десятка терминалов, подобных простейшему калькулятору) предельно дешева, надежна и легко осваивается как учащимися, так и преподавателями, работа в режиме диалога с книгой неутомительна, увлекательна и при надлежащей организации изложения гарантирует быстрое и полноценное усвоение изучаемого предмета. Применение системы в МГУ, МАИ, ВИА им. Куйбышева, в средней школе и для профессионального обучения на ЗИЛе подтвердили ее высокую эффективность в широком спектре предметов и уровней обучения. Вместе с тем “Наставник” уже более 30 лет постоянно используется на факультете ВМиК для автоматизированного проведения контрольных работ, а также тестирования поступивших на факультет, определяющего уровень владения английским языком для комплектования однородных учебных групп.

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

    Система команд машины “Сетунь”

    Литература

    Shаnnonc. Е.А Symmetrical notation for numbers. - “The American Mathematical Monthly”, 1950, 57, N 2, р, 90 - 93,
    Reid J.B. Letter to the editor. - “Comm. ACM”, 1960, 3, N 3, р. А12 - A13.
    Howden Р.F. Weigh-counting technique is faster then binary.- “Electronics”, 1974, 48, N 24, р. 121 - 122.
    Байцер Б. Архитектура вычислительных комплексов, т. 1. М., “Мир”, 1974.
    Proceedings of the Sixth International Symposium on Multiple-Valued Logic, Мау 25 - 28 1976. IEEE Press, 1976.
    Croisier А. Introduction to pseudoternary transmission codes.- “IBM Journal of Research and Development”, 1970, 14, N 4, р. 354 - 367.
    Брусенцов Н.П. Электромагнитные цифровые устройства с однопроводной передачей трехзначных сигналов. - В кн.: Магнитные элементы автоматики и вычислительной техники. XIV Всесоюзное совещание (Москва, сентябрь 1972 г.). М., “Наука”, 1972, с. 242 - 244.
    Аристотель. 06 истолковании. СПб., 1891.
    Брусенцов Н.П. Диаграммы Льюиса Кэррола и аристотелева силлогистика. - В кн.: Вычислительная техника и вопросы кибернетики, вып. 13. Изд-во МГУ, 1976, с. 164-182.
    Introduction to programming. PDP-8 handbook series. Digital Equipment Corporation, 1972.
    Материалы международной конференции SORUCOM 2006 (3-7 июля 2006 года)

    Информация, которой оперирует компьютер, так или иначе раскладывается на единицы и нули — графика, музыка, тексты, алгоритмы программ. Все просто и понятно: «включено» — «выключено», «есть сигнал» — «нет сигнала». Либо« истина», либо« ложь» — двоичная логика. А между тем еще в 1961-м, в год первого полета человека в космос, в Советском Союзе наладили производство необычных вычислительных машин, оперировавших не двоичной, а троичной логикой

    «Лишняя» переменная Недвухзначность логики восходит к основоположнику первой законченной логической теории — Аристотелю, который между утверждением и антиутверждением помещал третье «привходящее» — «может да, а может нет». В последующем развитии логика была упрощена за счет отказа от этого третьего состояния и в таком виде оказалась необычайно живучей, несмотря на свое несоответствие нечеткой, не всегда раскладывающейся на «да» и «нет» действительности. В разные века «расширить» логику пытались Оккам, Лейбниц, Гегель, Кэрролл и некоторые другие мыслители, в конечном же виде трехзначную логику разработал в начале XX века польский ученый Ян Лукасевич.


    «Сетунь» Несмотря на то что впоследствии команда Брусенцова разработала вторую модель «Сетунь-70», а в США в 1970-х годах шла работа над аналогичной ЭВМ Ternac, «Сетунь» осталась единственным в истории троичным компьютером, производившимся серийно.

    В принципе, у троичной системы счисления было не меньше шансов, чем у двоичной. Кто знает, по какому пути развития пошел бы технический прогресс, если бы «трайты» одержали победу над «байтами». Как выглядели бы современные смартфоны или GPS-навигаторы, как отразилось бы значение «может быть» на их быстродействии? Сложно сказать. Мы проанализируем этот вопрос, а вам предоставим возможность сделать выводы самостоятельно.

    Машина Фоулера

    Справедливости ради сразу следует заметить: первую вычислительную машину с троичной системой счисления задолго до советских конструкторов построил английский изобретатель-самоучка Томас Фоулер в далеком 1840 году. Его машина была механической и полностью деревянной.

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

    Затем он пошел дальше, решив полностью автоматизировать расчеты по таблицам, и построил счетную машину. Английская патентная система того времени была несовершенна, предыдущее изобретение Фоулера (термосифон для систем парового отопления) было скопировано с минимальными изменениями и запатентовано множеством недобросовестных «изобретателей», поэтому, опасаясь, что его идею снова могут украсть, он решил изготовить машину в единственном экземпляре и — из дерева. Так как дерево — материал ненадежный, для обеспечения достаточной точности вычислений Фоулеру пришлось сделать машину весьма громоздкой, около 2 м в длину. Впрочем, как писал сам изобретатель в сопроводительной записке, отправляя машину в Лондонский королевский колледж, «если бы ее можно было изготовить из металла, она бы оказалась не больше пишущей машинки».

    Машина Фоулера была проста, эффективна и использовала новаторский подход: вместо десятичной системы счисления оперировала «триадами», то есть степенями тройки. К сожалению, замечательное изобретение так и осталось незамеченным, оригинал машины не сохранился до наших времен, и о ее устройстве известно только из сочинения Фоулера-младшего, написавшего биографию отца.

    Первые советские опыты

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

    Все началось в 1954 году: кафедре должны были передать электронно-вычислительную машину М-2, но не сложилось. А машину-то ждали, готовились ее устанавливать и налаживать, с нею связывались определенные ожидания и планы. И кто-то предложил: давайте построим свою.

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

    К концу 1958 года был закончен первый экземпляр машины, которой дали имя «Сетунь» — по названию московской речки. «Сетунь» была относительно невелика для вычислительных машин того поколения и занимала площадь 25−30 м2. Благодаря своей изящной архитектуре она была способна выполнять 2000−4500 операций в секунду, обладала оперативной памятью в 162 девятитритных ячейки и запоминающим устройством на магнитном барабане емкостью 36−72 страницы по 54 ячейки каждая. Машинных команд было всего 27 (причем три так и остались невостребованными), благодаря чему программный код получался весьма экономным; программирование непосредственно в машинных кодах было настолько простым, что для «Сетуни» даже не разрабатывали свой ассемблер. Данные вводили в машину с перфоленты, результаты выводились на телетайп (причем, что любопытно, отрицательные цифры печатались как обычные, но перевернутые кверху ногами). При эксплуатации машина показывала 95−98% полезного времени (расходуемого на решение задач, а не на поиск неисправностей и устранение неполадок), а в те времена очень хорошим результатом считалось, если машина могла дать хотя бы 60%.

    На межведомственных испытаниях 1960 года машину признали пригодной для массового использования в КБ, лабораториях и вузах, последовало распоряжение о серийном выпуске «Сетуни» на Казанском заводе математических машин. С 1961 по 1965 год было построено 50 экземпляров, которые работали по всей стране. Затем производство свернули. Почему перестали выпускать «Сетунь», если она успешно использовалась всюду от Калининграда до Якутска? Одна из возможных причин в том, что компьютер оказался слишком дешевым в производстве и потому невыгодным для завода. Другая причина- косность бюрократических структур, противодействие ощущалось на каждом из этапов.

    Впоследствии Николай Брусенцов и Евгений Жоголев разработали более современную версию машины, использовавшую те же принципы троичности, — «Сетунь-70″, но она так и не пошла в серийное производство, единственный опытный образец работал в МГУ до 1987 года.

    Трехзначная логика

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

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

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

    В троичной симметричной системе используются цифры: -1, 0 и 1 (или, как их еще обозначают, -, 0 и +). Преимущества ее как симметричной системы состоят в том, что, во‑первых, не нужно как-то особо отмечать знак числа — число отрицательно, если его ведущий разряд отрицателен, и наоборот, а инвертирование (смена знака) числа производится путем инвертирования всех его разрядов; во‑вторых, округление здесь не требует каких-то специальных правил и производится простым обнулением младших разрядов.

    Кроме того, из всех позиционных систем счисления троичная наиболее экономична — в ней можно записать большее количество чисел, нежели в любой другой системе, при равном количестве используемых знаков: так, например, в десятичной системе, чтобы представить числа от 0 до 999, потребуется 30 знаков (три разряда, десять возможных значений для каждого), в двоичной системе теми же тридцатью знаками можно закодировать числа в диапазоне от 0 до 32767, а в троичной — от 0 до 59048. Самой экономичной была бы система счисления с основанием, равным числу Эйлера (e = 2,718…), и 3 — наиболее близкое к нему целое.

    Если в привычных нам двоичных компьютерах информация измеряется в битах и байтах, то компьютеры на троичной системе счисления оперируют новыми единицами: тритами и трайтами. Трит — это один троичный разряд; подобно тому, как бит может принимать значения 0 и 1 («ложь» и"истина»), трит может быть (+), (0) или (-) (то есть «истина», «неизвестно» или «ложь»).

    Один трайт традиционно (так было на «Сетуни») равен шести тритам и может принимать 729 различных значений (байт — только 256). Впрочем, возможно, в будущем трайты станут 9- или 27-разрядными, что естественнее, так как это степени тройки.

    Настоящее и будущее троичных компьютеров

    После «Сетуни» было несколько экспериментальных проектов, осуществлявшихся энтузиастами (таких, например, как американские Ternac и TCA2), однако это были либо весьма несовершенные машины, далекие от двоичных аналогов, либо и вовсе программные эмуляции на двоичном «железе».

    Основная причина состоит в том, что использование в компьютерах троичных элементов пока не дает никаких существенных преимуществ перед двоичными: выпуск последних налажен массово, они проще и дешевле по себестоимости. Даже будь сейчас построен троичный компьютер, недорогой и по своим характеристикам сравнимый с двоичными, он должен быть полностью совместим с ними. Уже разработчики «Сетуни-70» столкнулись с необходимостью обеспечить совместимость: чтобы обмениваться информацией с другими университетскими машинами, пришлось добавить возможность читать с перфолент двоичные данные и при выводе также конвертировать данные в двоичный формат.

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

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

    Другое направление, также нацеленное на увеличение производительности, — разработки в области асинхронных процессоров. Известно, что обеспечение синхронности процессов в современных компьютерах изрядно усложняет архитектуру и расходует процессорные ресурсы — до половины всех транзисторов в чипе работает на обеспечение этой самой синхронности. Компания Theseus Logic предлагает использовать «расширенную двоичную» (фактически — троичную) логику, где помимо обычных значений «истина» и «ложь» есть отдельный сигнал «NULL», который используется для самосинхронизации процессов. В этом же направлении работают еще несколько исследовательских групп.

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