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

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

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

Использования троичной системы счисления

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

Особенность троичной системы счисления - цельночисленное основание в ней равно трём. То есть все множество целых чисел можно записать с помощью всего трех цифр, например 0, 1, 2, 10, 11, 12 и так далее (10 соответствует цифре 3 из привычной нам десятичной системы).

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

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

  • единообразие кода чисел
  • варьируемая длина операндов
  • единственность операции сдвига
  • трехзначность функции знак числа
  • оптимальное округление чисел простым отсечением младших разрядов
  • взаимокомпенсируемость погрешностей округления в процессе вычисления

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

Преимуществом троичной системы счисления с цифрами -1, 0, 1 является:

Округление числа x до k верных троичных знаков, которое получается отбрасыванием всех младших знаков, начиная с (k+1).

Следствие. Ближайшим целым числа x,

X=E 1 , E 2 ...E m+1 ...XE

является число:

[X] бл = E 1 , E 2 ...E m

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

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

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

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

Как и двоичная система, троичная система исчисления основана на позиционном принципе кодирования чисел, но вес 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. Изменение знака числа в симметричном коде равно потритной инверсии, происходит взаимозамена "+" на "-", и наоборот.

Ниже приведена таблица с операциями сложения и умножения в троичном симметричном коде.


В троичном симметричном коде отсутствует проблема чисел со знаком.

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

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

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

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

Н.П. Брусенцов говорил :

История вычислительной машины Сетунь, как и сама эта машина, необычна - все совершалось вопреки общепринятым подходам и методам. Можно подумать, что действовали по принципу «Делай не так, как все». Но принцип был иной - «Чем естественней и проще, тем лучше».

Сложна судьба Николая Петровича Брусенцова - творца первой и единственной в мире троичной машины Сетунь

Родился Николай Петрович Брусенцов 7 февраля 1925 года в городе Днепродзержинске (Украина). Его отец Петр Николаевич Брусенцов был сыном простого рабочего - железнодорожника, учавствовал в строительстве Днепродзержинского коксохимического завода, умер в очень молодом возрасте 37 лет, когда Николаю было всего 14 лет. Мать Мария Дмитриевна осталась сама с тремя детьми. Началась война. В 1943 году Николая призвали в армию и отправили на курсы радистов в Свердловске. Позже он стал радистом 154 стрелковой дивизии в отделении разведки 2 дивизиона 571 артиллерийского полка. Был награжден медалью «За отвагу» и орденом Красной Звезды.

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

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

Пару слов из воспоминаний Брусенцова о семинаре :

Доклады посвящались, с одной стороны, инженерным вопросам технической реализации машины, а с другой - разработке и оптимизации ее архитектуры, анализу и обобщению имеющегося в этом деле опыта. Так, М.Р. Шура-Бура на четырех семинарах в апреле-мае 1956 года анализировал преимущества и недостатки отечественных машин «Стрела», БЭСМ, «Урал», М-20, сотрудники Сергея Львовича по курчатовскому институту Г.А. Михайлов и Б.И. Шитиков рассказали о созданных ими машинах ЦМ-1 и ЦМ-2, аспирант Томского университета А.Д. Закревский выступил с докладом «Применение алгебры логики к синтезу схем вычислительной машины». Вопросы инженерной реализации цифровых устройств на полупроводниковых и магнитных элементах рассматривались в докладах сотрудников нашего отдела электроники. Разработкой же функциональной схемы и системы команд машины довелось заниматься мне с Е.А. Жоголевым, и результаты по мере продвижения неоднократно представлялись семинару в наших, иногда совместных, докладах: 17.9.56 - «Эскизная схема машины», 15.10.56 - «Операции в троичной системе счисления», 11.2.57 - «Система команд для одноадресной троичной машины», 8.4.57 - «Блок-схема троичной машины», 24.2.58 - «Блок-схема и система команд машины «Сетунь».

Именно тогда у Брусенцова возникла мысль использовать троичную систему счисления.

Николай Петрович Брусенцов заведовал лабораторией ЭВМ факультета вычислительной математики и кибернетики Московского государственного университета им. М.В.Ломоносова. Основными направлениями его научной деятельности являлись: архитектура цифровых машин, автоматизированные системы обучения, системы программирования для мини- и микрокомпьютеров. Им было опубликовано более 100 научных работ, в том числе монографии «Малая цифровая вычислительная машина Сетунь» (1965 год, «Миникомпьютеры» (1979 год), «Микрокомпьютеры» (1985 год), учебное пособие «Базисный фортран» (1982 год).

Брусенцову Николаю Петровичу, лауреату премии Совета Министров СССР, принадлежат 11 авторских свидетельств на изобретения. Он был награжден орденом «Знак Почета», Большой золотой медалью ВДНХ ССС.

В 2014 году в возрасте 90 лет ушел из жизни известный конструктор троичных ЭВМ, ученый Брусенцов Николай Петрович. Как вспоминали его друзья, он был очень скромным, приятным в общении человеком, всегда готовым прийти на помощь.

В Вычислительном центре МГУ была создана Сетунь, которая стала первой машиной с алфавитно-цифровыми устройствами ввода и вывода в СССР.

В разработке ЭВМ активное участие принимал советский математик Сергей Львович Соболев, на то время он был заведующим кафедрой вычислительной математики на механико-математическом факультете Московского университета. Созданием и разработкой машины Сетунь занимался коллектив начинающих сотрудников, это были 8 выпускников МЭИ и МГУ, 12 техников и лаборантов. Работа была проделана довольно в короткий срок, что напрямую свидетельствовало о простоте троичной цифровой техники, достигалось существенное упрощение, естественность архитектуры троичных устройств. Такая архитектура - рационально построенная система программирования, которая включала интерпретирующие системы ИП-2 (плавающая запятая, 8 десятичных знаков), ИП-3 (плавающая запятая, 6 десятичных знаков), ИП-4 (комплексные числа, 8 десятичных знаков), ИП-5 (плавающая запятая, 12 десятичных знаков), автокод ПОЛИЗ(язык обратной польской записи) с операционной системой и библиотекой стандартных подпрограмм (плавающая запятая, 6 десятичных знаков) делали малую машину Сетунь простой в освоении.


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

В конце 1959 года для машины уже существовала система программирования и набор прикладных программ.

Параметры машины

Для установки малой машины Сетунь необходима была площадь размером 25-30 м 2 , оформлена она была в виде шкафа с такими параметрами 2,9 х 1,85 х 0,5 м, пульт управления 1,6 х 0.6 х 1 м, стол для внешних устройств 1,2 х 0,8 х 0,75 м.


Как и упоминалось раньше числа и команды предоставлены троичным кодом (с цифрами 1, 0, -1), Сетунь оперировала 18 разрядным и 9 разрядными троичными кодами, запятая всегда после второго разряда, что означало, что все числа по модулю меньше 4,5. Команды представлялись 9 троичными разрядами, 5 старших из них - адресная часть, три - это код операции и один, младший разряд, - в качестве признака модификации адреса. При выполнении команд, содержащих в этом разряде 1 или -1, их адресная часть автоматически изменялась соответственно прибавлением или вычитанием числа, хранящегося в специальном 5 разрядном индекс-регистре.

Оперативная память состояла из устройства на ферритовых сердечниках емкостью в 162 9-тритных ячейки, то есть разделена на 3 страницы по 54 ячейки для постраничного обмена с основной памятью. Основная память - это запоминающее устройство на магнитном барабане, емкостью 36 либо 72 страницы (1944 9-тритных ячейки). Передача информации между запоминающими устройствами производилась зонами, содержащими по 54 девятиразрядных кода. С помощью пятипозиционной бумажной перфоленты через фотоэлектрическое вводное устройство вводились данные в машину. Такое вводное устройство работало со скоростью 800 знаков в секунду. Вывод данных осуществлялся благодаря печати и перфорации на бумажной ленте со скоростью 7 знаков в секунду (вывод как троичных кодов, так и буквенно-цифрового текста с заданием произвольной формы бланка).



Перфолента

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



Сумматор



Ферритовый куб

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

Запитывалась машина от сети трехфазного тока 220/380В, потребляемая мощность составляла 2,5 кВА.

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



Блок-схема вычислительной машины Сетунь

Заводские испытания первого серийного образца Сетунь показали, что машина полностью соответствует поставленым техническим параметрам. Все работало без сбоев и полезное время составило 95% от зачетного. За первый год из 4000 деталей были заменены всего лишь три детали. Выпущено было 7 таких малых ЭВМ, в течение 1963 года было запланировано произвести еще 10 таких машин. Уже в 1964 году завод выпустил 21 машину Сетунь, так как спрос на них рос. Но в 1965 году Сетунь была снята с производства.

Начиная с 1959 года Сетунь за полтора месяца вывела больше расчетов, чем ЭВМ Урал-2 с двоичной системой счисления. Малая машина Сетунь работала безотказно, но чиновникам была не выгодна такая ЭВМ - себестоимость ее была всего 30 000 рублей. Первая модель Сетунь была в работе 15 лет. Серийное производство было решено отложить на 15 лет, но этого так и не произошло. Как говорил сам создатель машины Брусенцов потом:«Сетунь мешала людям с косным мышлением , которые занимали высокие руководящие посты». В конечном счете Сетунь разрезали автогеном и отправили на утилизацию.

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

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

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

Других компьютеров на основе троичного кода нет и не было.


История создании машины Сетунь

По словам самого создателя Сетунь Брусенцова:

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

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

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

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

    Информация, которой оперирует компьютер, так или иначе раскладывается на единицы и нули — графика, музыка, тексты, алгоритмы программ. Все просто и понятно: «включено» — «выключено», «есть сигнал» — «нет сигнала». Либо« истина», либо« ложь» — двоичная логика. А между тем еще в 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», который используется для самосинхронизации процессов. В этом же направлении работают еще несколько исследовательских групп.

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