Каких только компьютеров не напридумывали: квантовых, молекулярных, нейронных, оптических и фотонных, на основе ДНК и белков-ферментов... Недавно я вычитал, что и в России, в Казанском физико-техническом институте, с 2001 года ведутся поиски в области квантовых компьютеров – без особой, судя по всему, специальной программы, по личной инициативе сотрудников. Про проект троичного компьютера Николая Петровича Брусенцова, ныне заслуженного научного сотрудника МГУ, о котором я хочу рассказать здесь, краем уха слышали, вероятно, все, имеющие отношение к компьютерам и программированию. Интерес к этой теме, в том числе и на Западе, не утихал никогда. Восьмидесятилетний Брусенцов уже в наши дни свидетельствует: «Буквально на днях я получил письмо из США, где также спрашивают, как удалось реализовать троичную логику? К нам постоянно приходят по e-mail письма с запросами. Надо сказать, что наибольший интерес проявляют такие страны, как Бангладеш, Пакистан, Индия».
Но ЭВМ «Сетунь» так и осталась единственной в мире моделью вычислительной машины, основанной на троичной системе счисления, причем серийной – было выпущено полсотни экземпляров. У нее был в истории единственный предшественник, о котором сам Брусенцов, скорее всего, и не подозревал: в 1840 году Томас Фоулер в Англии построил механическую троичную вычислительную машину (сохранилось ее описание). Но ни одного последователя у Брусенцова не было, если не считать любительских проектов. Почему? Прямой ответ на этот вопрос вы найдете едва ли: в публикациях о «Сетуни» и Брусенцове перечисляются достоинства троичной системы, но прямо не указываются ни недостатки, ни причины, по которым проект так и остался уникальным. Сам Николай Петрович до сих пор полагает, что дело в косности советских чиновников, и еще, возможно, в колоссальных средствах, затраченных на создание полупроводниковой индустрии, основанной на двоичной булевой алгебре. Но суть дела заметно сложнее. ПОСЛЕДСТВИЯ ОДНОЙ ССОРЫ В 1953 году Н. П. Брусенцов, закончивший радиотехнический факультет Московского энергетического института, попал по распределению в специальное конструкторское бюро (СКБ) МГУ, где долго не мог найти себе работу по душе. Он поплакался бывшему сокурснику М. А. Карцеву, работавшему в лаборатории И. С. Брука, – одного из первопроходцев советской компьютерной техники. Там занимались созданием М-2 – четвертой по счету советской ЭВМ, – и Карцев устроил для товарища экскурсию. Впечатленный Брусенцов рассказал о посещении своему шефу, академику С. Л. Соболеву, и тот устроил ему командировку в лабораторию Брука, чтобы освоить М-2 в целях передачи ее в университет. Но вскоре Соболев поссорился с Бруком: на одно место в академии претендовали И. С. Брук и другой выдающийся конструктор ЭВМ, С. А. Лебедев. Соболев голосовал за Лебедева, Брук обиделся, и вопрос о передаче М-2 в МГУ отпал. Может, оно и к лучшему: Соболев решил строить свою собственную оригинальную машину и поручил это Брусенцову. Так Николай Петрович попал в другую секретную лабораторию – в ИТМиВТ, к известному математику Л. И. Гутенмахеру, под чьим руководством строили машину ЛЭМ-1 на ферритовых сердечниках в качестве запоминающих элементов. Брусенцов сразу разобрался, что ферриты используются неправильно, и предложил свою схему, сократившую количество элементов в семь раз и резко облегчившую процесс их отбора. Такие элементы называются трансфлюксорами – управляемыми магнитными усилителями. Но самое главное было в другом: Брусенцов предложил использовать троичную логику, которая на ферритах реализовалась просто и изящно: два противоположных направления тока – минус и плюс единица, – и третье, нулевое – отсутствие тока. Ферритовые элементы соединялись непосредственно, поэтому ЭВМ, по предложению М. Р. Шуры-Буры названная впоследствии «Сетунь», получилась необычайно простой схемотехнически: в ней на 3500 трансфлюксоров было всего 330 транзисторов, 37 электронных ламп и десяток электромагнитных реле. В «Сетуни» была двухуровневая память: быстрое ОЗУ (162 9-разрядных троичных ячейки) и магнитный барабан. При тактовой частоте 200 кГц машина выполняла большинство команд за 100–180 микросекунд. КОГДА ТРИ ЛУЧШЕ, ЧЕМ ДВА Троичная система экономичнее любой другой в смысле количества знаков (а, следовательно, и элементов) для представления многоразрядного числа. Чтобы записать 1000 чисел (от 0 до 999) в десятичной системе нужно 30 знаков, а в двоичной системе с помощью тех же 30 знаков можно записать 32 768 чисел. Самой же экономичной считается система счисления с основанием е (2,718282...), а на практике – 3, ближайшим к числу е. Но все зависит от выбора элементов. Брусенцову удалось найти аппаратное решение, которое было действительно – на том уровне техники – непревзойденным по экономичности. Если повторить то же самое на серийно выпускаемых полупроводниковых чипах, получится только усложнение схемы. Так что преимущества троичной системы не в экономичности, а в том, что сама организация вычислительного процесса резко упрощается. Так, в системе с тремя цифрами (1,0,-1) числовая ось автоматически получается непрерывной, отсюда – естественное сравнение и вычитание чисел; автоматически выполняется правильное округление чисел простым отбрасыванием младших разрядов; арифметический и логический сдвиг совпадают и т. п. В общем, перечислять приятные особенности этой системы можно долго. Основными единицами информации в «Сетуни» были триты (аналоги битов), принимавшие значения минус 1, 0 и плюс 1, и трайты (аналоги байтов), состоявшие каждый из шести тритов и принимавшие значения от -364 до +364. Для «Сетуни» не стали даже разрабатывать ассемблер: написание прямо в машинных кодах оказалось ничуть не сложнее, тем более, что самих команд было всего 24 ,– «Сетунь» была настоящей RISC-машиной, когда еще самого такого термина не существовало. Но самая главная эксплуатационная особенность «Сетуни» – ее ошеломляющая даже по нынешним временам надежность, оцененная в технических условиях в 95% рабочего времени. Реально она была много выше: для 50 выпущенных серийно экземпляров, разбросанных по стране от Одессы и Ашхабада до Якутска и Магадана, не требовалось даже ЗИПа, как не требовались и специалисты по техническому обслуживанию машины. А первый экземпляр «Сетуни», собранный «на коленке» группой Брусенцова в МГУ, проработал 15 лет, за которые случилось всего 3 отказа элементов из четырех с лишним тысяч (и все – в первый год эксплуатации). КАК НАЧАЛЬСТВО ОСТАНОВИЛО ТРОИЧНУЮ ЛОГИКУ Но советские и чиновники, и производственники были против машины: первые, видимо, «на всякий случай», ориентируясь на «мировой уровень», а вторые – из-за необычных требований к культуре производства. У Брусенцова первый экземпляр машины заработал в штатном режиме уже через десять дней после монтажа – за счет тщательного отбора и сортировки компонентов (в те времена не подвергавшихся никакому выходному контролю по параметрам), и многочисленных предварительных тестов каждой платы. А на Казанском заводе математических машин автору разработки приходилось пропадать месяцами, заново втолковывая заводчанам уже прописанные в методичках правила тестирования и исправляя вольности в компоновке. Называлась в числе причин неприязни со стороны казанцев и стоимость машины в 27 500 рублей – смехотворно низкая по тем временам, из-за чего якобы ее было производить невыгодно. Н. П. Брусенцов вспоминает: «В феврале 1962 г. мне с Е. А. Жоголевым и С. П. Масловым по приглашению правительства ЧССР довелось побывать на заводе Яна Швермы в Брно, где предполагалось запустить в серийное производство нашу «Сетунь». Инициаторами этого проекта были чешские инженеры И. Крыже и И. Бранд, ознакомившиеся с машиной при посещении Вычислительного центра МГУ в 1960 году и, по-видимому, реально оценившие её коммерческие достоинства. Планировался выпуск в первый же год трехсот машин, и завод был вполне готов реализовать это. В отчёте о командировке, направленном в ГКНТ, мы предложили рассмотреть возможность сотрудничества с заводом Яна Швермы Астраханского завода ЭА и ЭП, уже освоившего производство логических элементов «Сетуни».
Но вскоре стало известно, что передача документации для производства машины в ЧССР возможна лишь после освоения крупносерийного выпуска её в нашей стране, а затем выпуск был и вовсе прекращен». Чехи планировали на каждой машине заработать, продавая ее не только в страны СЭВ, но и на Запад за валюту, но советские чиновники встали в позицию «собака на сене», заявив, что «золото нам и самим нужно», и тем временем тормозя проект всеми силами. С какой-то точки зрения эти чиновники были правы: у «Сетуни», даже в улучшенной модификации «Сетунь-70», не было будущего. Те самые трансфлюксоры, требовавшие ручной намотки (у Брусенцова каждый день начинался с того, что все, включая руководителя, сосредоточенно мотали тончайшие проволочки на трехмиллиметровые сердечники) – это технология первого поколения компьютеров. К 1970-м годам это все отстало на два поколения, а реальной замены в полупроводнике так и не появилось: на транзисторах схемы получаются более громоздкими. Еще одна деталь: двоичная логика хорошо стыкуется с теорией информации, где именно бит (а не трит) есть мельчайшая и неделимая мера всего. И передавать данные лучше по принципу «есть напряжение – нет напряжения», так получается и проще и надежней. Так что, идеям Брусенцова, – а их, кстати, поддержал классик программирования Дональд Кнут, писавший, что не сомневается в постепенном переходе на троичные ячейки вместо двоичных, – так и суждено остаться в истории техническим курьезом вроде дирижаблей в авиации? Не совсем так. Одно из направлений, где троичная логика находит свое применение, – создание асинхронных процессоров. Они необходимы, например, в особо точных аналогово-цифровых схемах, где наличие тактового генератора ведет к неприятным и трудно устранимым помехам, а в асинхронных схемах, где сигналы распределены во времени случайным образом, такая помеха намного меньше. Асинхронные процессоры проще проектировать автоматизированным методом, и в них меньше элементов, чем в обычных. Троичная логика прямо фигурирует в технологии NCL от Theseus Logic. Есть и другие применения троичной логики. Так что вполне возможно, что энтузиазм Брусенцова и чаяния Кнута еще оправдаются в веках.