Компьютер сетунь на троичной логике
+7 (499) 444-90-36 Отдел заботы о пользователях
Москва, Ленинский проспект, дом 6, строение 20
- Участник Skolkovo
- Премии Рунета 2018, 2019, 2020
Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies ?
Предыстория
Из истории известно, что первые попытки создать троичную машину начались немного раньше двоичных машин. Английский изобретатель Томас Фоулер (Thomas Fowler), еще 1840 году, построил механическую вычислительную машину. Многие компоненты, счетной троичной машины были сделаны из дерева. Чтобы добиться высокой точности, Фоулеру приходилось создавать ее в более крупных размерах. Длиной в 2 метра, глубиной 1 метр, шириной 30 см. К сожалению, троичная машина Фоулера не сохранилась до наших дней. И многие достижения Томаса Фоулера остались бы неизвестными, если бы не сын, который написал его биографию. В начале 60-х годов МГУ им М.В. Ломоносова была разработана троичная ЭВМ под руководством Н.П. Брусенцова. Новому троичному компьютеру было дано название Сетунь. Машину назвали по имени речки, протекавшей недалеко от университета. Данная машина по своей элементной базе относится ко второму поколению компьютеров. Но по своей архитектуре абсолютно отличается от своих современников, т.к. основывается на троичной логике. Серийный выпуск «Сетуни» был непродолжительным, с 1962 по 1965 год. Но это была первая троичная ЭВМ, выпускаемая серийно. Ее конструктивные особенности были таковы, что она могла адресовать одновременно только один трайт оперативной памяти. Использовалась троичная система счисления: 0, 1, -1. И только для чисел с фиксированной точкой. Оперативная память на ферритовых сердечниках емкостью в 162 трайта. В качестве внешней памяти, использовался магнитный барабан, предшественник современных жестких дисков. На нем вмещалось до 4000 трайт. Пропускная способность шины памяти составляла 54 трайта. Что давало высокую производительность и не слишком частое обращение, к медленной внешней памяти. Троичная машина выполняла порядка четырех тысяч операций в секунду. Ввод и вывод происходили через телетайп и перфоленту. Чтение с последней 800 строк/с, запись 20 строк/секунду. «Сетунь» имел 37 электронных ламп, 300 транзисторов, 4500 полупроводниковых диодов, 7000 ферритовых колец. «Сетунь» занимала около 30 квадратных метра и потребляла 2,5 кВт. Кроме Бруснецова в разработке данной машины участвовали: С.П. Маслов, Е.А. Жоголев, В.В. Веригин. (Для сравнения современный компьютер потребляет 0,3кВт электроэнергии)
Троичные ЭВМ “Сетунь” и “Сетунь 70”
В начале 1956 г . по инициативе академика С.Л. Соболева, заведующего кафедрой вычислительной математики на механико-математическом факультете Московского университета, в вычислительном центре МГУ был учрежден отдел электроники и стал работать семинар с целью создать практичный образец цифровой вычислительной машины, предназначенной для использования в вузах, а также в лабораториях и конструкторских бюро промышленных предприятий. Требовалось разработать малую ЭВМ, простую в освоении и применениях, надежную, недорогую и вместе с тем эффективную в широком спектре задач.
Обстоятельное изучение в течение года имевшихся в то время вычислительных машин и технических возможностей их реализации привело к нестандартному решению употребить в создаваемой машине не двоичный, а троичный симметричный код, реализовав ту самую уравновешенную систему счисления, которую Д. Кнут двадцать лет спустя назовет быть может, самой изящной 1 и как затем стало известно, достоинства которой были выявлены К. Шенноном в 1950 г . 121.
В отличие от общепринятого в современных компьютерах двоичного кода с цифрами 0, 1, арифметически неполноценного вследствие невозможности непосредственного представления в нем отрицательных чисел, троичный код с цифрами -1, 0, 1 обеспечивает оптимальное построение арифметики чисел со знаком. При этом, не только нет нужды в искусственных и несовершенных дополнительном, прямом либо обратном кодах чисел, но арифметика обретает ряд значительных преимуществ: единообразие кода чисел, варьируемая длина операндов, единственность операции сдвига, трехзначность функции знак числа, оптимальное округление чисел простым отсечением младших разрядов, взаимокомпенсируемость погрешностей округления в процессе вычисления 3.
Троичная ЭВМ “Сетунь” 4, 5, опытный образец которой разработали, смонтировали и к концу 1958 г . ввели в эксплуатацию сотрудники отдела электроники, как показал опыт ее освоения, программного оснащения и многообразных практических применений, с исчерпывающей полнотой удовлетворяла всем предусмотренным заданием на ее разработку требованиям. Этот успех, с учетом того, что разработка троичной ЭВМ предпринималась впервые, проводилась немногочисленным коллективом начинающих сотрудников (8 выпускников МЭИ и МГУ, 12 техников и лаборантов) и была выполнена в короткий срок, явно свидетельствует о благодатности троичной цифровой техники. Ценой усложнения по сравнению с двоичными элементов памяти и элементарных операций достигается существенное упрощение и, главное, естественность архитектуры троичных устройств.
При минимальном наборе команд (всего 24 одноадресные команды) “Сетунь” обеспечивала возможность вычислений с фиксированной и с плавающей запятой, обладала индекс-регистром, значение которого можно как прибавлять, так и вычитать при модификации адреса, предоставляла операцию сложения с произведением, оптимизирующую вычисление полиномов, операцию поразрядного умножения и три команды условного перехода по знаку результата. Простая и эффективная архитектура позволила усилиями небольшой группы программистов уже к концу 1959 г . оснастить машину системой программирования и набором прикладных программ 6, достаточными для проведения в апреле 1960 г . междуведомственных испытаний опытного образца.
По результатам этих испытаний “Сетунь” была признана первым действующим образцом универсальной вычислительной машины на безламповых элементах, которому свойственны “высокая производительность, достаточная надежность, малые габариты и простота технического обслуживания”. По рекомендации Междуведомственной комиссии Совет Министров СССР принял постановление о серийном производстве “Сетуни” на Казанском заводе математических машин. Но почему-то троичный компьютер пришелся не по нраву чиновникам радиоэлектронного ведомства: они не обеспечили разработку серийного образца машины, а после того как он все-таки был осуществлен с использованием конструктивов выпускавшейся заводом машины М-20, не содействовали наращиванию выпуска в соответствии с растущим числом заказов, в частности из-за рубежа, а наоборот, жестко ограничивали выпуск, отклоняя заказы, и в 1965 г . полностью прекратили, причем воспрепятствовали освоению машины в ЧССР, планировавшей ее крупносерийное производство. Поводом для этой странной политики могла быть рекордно низкая цена “Сетуни” — 27,5 тыс., рублей, обусловленная бездефектным производством ее магнитных цифровых элементов на Астраханском заводе ЭА и ЭП, по 3 руб. 50 коп. за элемент (в машине было около 2 тыс., элементов). Существенно то, что электромагнитные элементы “Сетуни” позволили осуществить пороговую реализацию трехзначной логики на редкость экономно, естественно и надежно. Опытный образец машины за 17 лет эксплуатации в ВЦ МГУ, после замены на первом году трех элементов с дефектными деталями, не потребовал никакого ремонта внутренних устройств и был уничтожен в состоянии полной работоспособности. Серийные машины устойчиво функционировали в различных климатических зонах от Одессы и Ашхабада до Якутска и Красноярска при отсутствии какого-либо сервиса и запчастей.
Благодаря простоте и естественности архитектуры, а также рационально построенной системе программирования, включающей интерпретирующие системы: ИП-2 (плавающая запятая, 8 десятичных знаков), ИП-3 (плавающая запятая, 6 десятичных знаков), ИП-4 (комплексные числа, 8 десятичных знаков), ИП-5 (плавающая запятая, 12 десятичных знаков), автокод ПОЛИЗ с операционной системой и библиотекой стандартных подпрограмм (плавающая запятая, 6 десятичных знаков), машины “Сетунь” успешно осваивались пользователями в вузах, на промышленных предприятиях и в НИИ, оказываясь эффективным средством решения практически значимых задач в самых различных областях, от научно-исследовательского моделирования и конструкторских расчетов до прогноза погоды и оптимизации управления предприятием 7. На семинарах пользователей вычислительных машин “Сетунь”, проведенных в МГУ (1965), на Людиновском тепловозостроительном заводе (1968), в Иркутском политехническом институте (1969) были представлены десятки сообщений о результативных народнохозяйственных применениях этих машин. “Сетунь”, благодаря естественности троичного симметричного кода, оказалась поистине универсальным, несложно программируемым и весьма эффективным вычислительным инструментом, положительно зарекомендовавшим себя, в частности, как техническое средство обучения вычислительной математике более чем в тридцати вузах. А в Военно-воздушной инженерной академии им. Жуковского именно на “Сетуни” была впервые реализована автоматизированная система компьютерного обучения 8.
Троичная система счисления основана на том же позиционном принципе кодирования чисел, что и принятая в современных компьютерах двоичная система, однако вес i -й позиции (разряда) в ней равен не 2 i , а 3 i . При этом сами разряды не двухзначны (не биты), а трехзначны (триты) — помимо 0 и 1 допускают третье значение, которым в симметричной системе служит -1, благодаря чему единообразно представимы как положительные, так и отрицательные числа. Значение n -тритного целого числа N определяется аналогично значению n -битного:
где а i ∈ — значение цифры 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 < |М|
Страничная двухступенная структура памяти с пословной адресацией в пределах трех страниц ОЗУ, обходящейся 5-тритными адресами и соответственно 9-тритными командами, обусловила необыкновенную компактность программ и вместе с тем высокое быстродействие машины, несмотря на то, что в интерпретирующих системах магнитный барабан функционирует как оперативная память.
В 1967-1969 гг. на основе опыта создания и практических применений машины “Сетунь” разработана усовершенствованная троичная цифровая машина “Сетунь 70”, опытный образец которой вступил в строй в апреле 1970 г . Это была машина нетрадиционной двухстековой архитектуры, ориентированной на обеспечение благоприятных условий дальнейшего развития ее возможностей методом интерпретирующих систем 9.
Принятие арифметического стека (стека 18-тритных операндов) обусловлено использованием в качестве машинного языка так называемой польской инверсной записи программ (ПОЛИЗ), положительно зарекомендовавшей себя в одноименном интерпретаторе на “Сетуни”. ПОЛИЗ-программа состоит не из команд той или иной адресности, а является последовательностью коротких слов — 6-тритных трайтов (троичных байтов). Как элемент программы трайт может быть либо адресным, либо операционным. Адресный трайт либо используется в качестве операнда предшествующим операционным, либо воспринимается как предписание заслать в стек операндов из оперативной памяти адресуемое слово от одного до трех трайтов. В оперативной памяти всего 9 страниц по 81 трайту, причем открыты для доступа в данный момент три страницы, номера которых указаны в так называемых “регистрах приписки”.
Операционный трайт указывает операции, а вернее процедуры, выполняемые над стеком операндов, а также над регистрами процессора. Всего предусмотрена 81 операция — 27 основных, 27 служебных и 27 программируемых пользователем.
Второй (системный) стек, содержащий адреса возврата при обработке прерываний и при выполнении вложенных подпрограмм, позволил успешно реализовать на “Сетуни 70” идею структурированного программирования Э. Дейкстры, введя операции вызова подпрограммы, вызова по условию и циклического выполнения подпрограмм. Осуществленное таким образом процедурное структурированное программирование на практике подтвердило заявленные Дейкстрой преимущества его метода: трудоемкость создания программ сократилась в 5-7 раз, благодаря исключению традиционной отладки тестированием на конкретных примерах, причем программы обрели надлежащую надежность, упорядоченность, понятность и модифицируемость. В дальнейшем эти особенности архитектуры “Сетуни 70” послужили основой диалоговой системы структурированного программирования ДССП, реализованной на машинах серии ДВК и на последующих персональных компьютерах 10, 11.
К сожалению, дальнейшее развитие заложенных в “Сетуни 70” возможностей путем разработки ее программного оснащения было административным порядком прекращено. Пришлось переориентироваться на компьютеризацию обучения. “Сетунь 70” стала основой для разработки и реализации автоматизированной системы обучения “Наставник” 12, 13, воплотившей принципы “Великой дидактики” Яна Амоса Коменского. Назначение компьютера в этой системе не “электронное перелистывание страниц” и не мультимедийные эффекты, а отслеживание верности понимания учащимся того, чему он учится, своевременное преодоление заблуждений и обеспечение путем обоснованно назначаемых упражнений реального овладения предметом обучения. Вместе с тем компьютер протоколирует ход занятия, предоставляя разработчику учебного материала возможность оценивать эффективность используемых дидактических приемов и совершенствовать их.
Учебный материал в “Наставнике” предоставляется учащимся в печатном виде с пронумерованными секциями, абзацами, упражнениями и справками к ошибочным ответам, благодаря чему при помощи простейшего терминала с цифровой клавиатурой и калькуляторным индикатором компьютер без гипертекстового дисплея легко и безвредно взаимодействует с обучаемым, придавая книге недостающую ей способность диалога с читателем. Создание учебных материалов для “Наставника” не связано с программированием компьютера, и, как показала практика, разработка вполне удовлетворительных пособий по математике, физике, английскому языку и другим предметам посильна школьным учителям. Дидактическая эффективность этой немудреной системы оказалась на редкость высокой. Так, курс “Базисный Фортран” студенты факультета ВМК МГУ проходили в “Наставнике” за 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 года)
Развитие вычислительной техники в России и странах бывшего СССС: история и перспективы
Статья помещена в музей 31.10.2007 с разрешения автора
Александр Самсонов о троичной логике и цифровой археологии
В шестидесятые годы прошлого столетия в СССР разрабатывали уникальные вычислительные машины «Сетунь». В отличие от обычных компьютеров, они оперировали данными по законам не двоичной, а троичной логики (подробности — в статье Евгения Лебеденко «Tertium Datur»). Хотя исправных троичных ЭВМ не осталось, идея, на которой они были основаны, настолько интересна и необычна, что о «Сетуни» помнят до сих пор.
Александр Самсонов не застал тех времён, но увлекается троичной логикой сегодня. В свободное время он собирает и систематизирует информацию о троичных компьютерах и троичной логике. Помимо этого, он координирует группу, работающую над программным эмулятором «Сетуни-70».
— Как вы наткнулись на эту тему?
— Совершенно случайно. Году в 1998 читал журнал American Scientist, и там была статья о троичной неуравновешенной системе исчисления. Потом, если не ошибаюсь, троичная логика была упомянута во втором томе Дональда Кнута, и каким-то образом мне попалась статья о том, что существовала даже троичная ЭВМ. Я начал интересоваться, ходить по библиотекам, пытаться найти публикации, меня это захватило.
Когда я начинал, у меня не было ни единого знакомого, который не то что знал, а хотя бы мог понять основные принципы троичного представления данных. Дипломированному программисту показываешь эту систему, но для него понять, что нужно не только складывать, но ещё и вычитать — это шок и взрыв мозга. Кто-то сразу начинает критиковать, кто-то через какое-то время понимает. Некоторые вообще не в состоянии понять после того, как долго работают с двоичной логикой, что всё может быть проще и быстрее.
— И теперь вы пытаетесь организовать тех, кто интересуется троичной логикой?
— Всего заинтересованных — несколько десятков, но постоянно контактируют и чем-то занимаются человек пять. В России только один человек, все остальные из других стран — Штатов, Швеции и так далее. В Украинском Институте кибернетики серьёзно занимались этой темой, были публикации, патенты, какие-то схемы на уровне того времени. И у нас в Институте прикладной математики Варшавский занимался этим. Но он сконцентрировался на математике, а потом, с его отъездом, исследования прервались.
— Что представляла собой «Сетунь», и откуда она взялась?
— «Сетунь» — это первая и единственная в мире серийно производившаяся троичная вычислительная машина, которая относилась к классу малых. Её создали в лаборатории вычислительных систем МГУ. Работа началась в 1955 году, когда Николаю Петровичу Брусенцову дали задание ознакомиться с разрабатывающимися на то время ЭВМ, чтобы впоследствии приобрести одну их них для нужд университета.
— А Николай Петрович вместо этого сказал, что ему не нравится двоичная логика?
— Не совсем так. Его направили в одно из КБ, которое занималось созданием ЭВМ. Он с большим интересом наблюдал, каким образом производится машина, и обратил внимание на то, что некоторые элементы недостаточно оптимально используются, в частности память. Поскольку было много брака, приходилось устанавливать в два раза больше элементов.
— То есть в машины тогда сразу ставили запасные элементы на случай неисправности?
— Да, поскольку часть элементов была бракованная, то один из них мог сработать, а второй — нет. Так вот, через какое-то время из-за ссоры в верхах университету отказались продавать машину. Сказали: «Разбирайтесь сами, покупайте в другом месте». В итоге в МГУ её решили разработать собственными силами.
У Николая Петровича уже было представление о том, как это делается и что должно получиться. Он обратил внимание на бесполезное удвоение элементов и попробовал реализовать троичные элементы. В результате количество элементов сократилось в семь раз по сравнению с тем, что он видел в КБ. При поддержке академика Соболева решили попробовать реализовать многозначную, полностью троичную машину — «Сетунь».
Конструкторские работы продолжались до 1957 года, и в 1958-59 годах «Сетунь» была запущена. Машина получилась, во-первых, на удивление небольшой, во-вторых, дешёвой, что потом сыграло с ней злую шутку. К тому же она заметно отличалась от всех остальных ЭВМ того времени, поскольку была троичной. Тем не менее, когда опытный образец показали на ВДНХ, он получил приз. Пошли разговоры о серийном производстве. В 1960-61 году на Казанском заводе вычислительных машин начали собирать «Сетунь».
— Тогда и появились те самые пятьдесят экземпляров?
— Да. Их строили очень долго, не больше десяти штук в год. В основном «Сетунь» расходилась по небольшим инженерным КБ, бюро и университетам. Насколько мне известно, одна из них стояла в академии Жуковского в Москве: с её помощью учили программированию и вели расчёты.
— И писали для этого собственный софт?
— Да. В то время это было нормально. Каждый получал машину практически безо всего и самостоятельно решал свои задачи.
— Как примерно выглядел этот агрегат?
— Он был относительно невелик — занимал площадь небольшой комнаты. Четыре небольших шкафа и две стойки: на одной пульт с индикаторами, а на другой — электрическая пишущая машинка, с помощью которой происходил набор данных. Фактически что-то вроде терминала: вводишь текст, и на бумаге остается всё, что набрал.
— Возможно ли описать производительность «Сетуни» в современных терминах?
— В современных получается совсем уж скромно — порядка двадцати тысяч операций в секунду. В своё время она попадала в класс малых машин, не особо требовательных к скорости вычислений.
После запуска «Сетуни» в производство проводились семинары по программированию, которые послужили, наверное, отправной точкой для большинства других семинаров по вычислительной технике — как московских, так и новосибирских. Результатом этих семинаров стал ежегодник, в котором публиковались программы — включая исходный код и подробное описание принципов работы, проблем и задач, которые эта программа решала.
— Какие же преимущества давала троичная логика?
— Двоичная логика по своей сути представляет собой сильно урезанную формальную логику. Из-за своих ограничений она не позволяет произвести некоторые действия. Либо позволяет, но неэкономно, и придётся прилагать значительно больше сил. Впрочем, в первой «Сетуни» самой по себе троичной логики практически не было, а применялось в основном троичное представление данных. Логических же операций как таковых в системе команд, по-моему, не имелось вовсе.
— То есть это была исключительно счётная машина?
— Да, она создавалась именно для выполнения расчётов. А вот в первом варианте «Сетуни-70» уже были некоторые средства для выполнения логических операций.
— «Сетунь-70» начала разрабатываться сразу, как только первая «Сетунь» была закончена?
— Нет. В 1965 году был расцвет первой «Сетуни», когда она производилась, продавалась, поставлялась в университеты и КБ. Ближе к семидесятому году, к столетнему юбилею Ленина, всем институтам предлагали показать свои достижения. Коллектив Николая Петровича решил сделать следующую модель «Сетуни», тоже троичную. ЭВМ назвали «Сетунь-70». Работу начали в 1968 году. Сначала был сделан один вариант и нормально запущен, но потом пришла мысль чуть-чуть поменять архитектуру и лучше приспособить её для стекового программирования, которое сейчас больше известно как структурное. Идею структурного программирования предложил Дейкстра, и «Сетунь-70» прекрасно подошла для такого подхода.
— И после этого появился единственный опытный экземпляр?
— Да. Его построили и испытали, но в серию эти компьютеры не пошли, потому что к тому времени сложилась нехорошая ситуация вокруг первой «Сетуни». Как уже было сказано, машина получилась очень дешёвой, поэтому её просто невыгодно было производить. Да и производительность к тому времени уже была не того уровня, который требовался. К тому же тогда началось распространение полностью полупроводниковых машин, на фоне которых ферритовые катушки «Сетуни» смотрелись совсем несерьёзно.
— Были ли другие исследования, связанные с троичной логикой?
— В семидесятых годах, если не ошибаюсь, в Штатах была сделана попытка построить на большой двоичной ЭВМ эмулируемую троичную ЭВМ для того, чтобы оценить эффективность. По результатам работы опубликовали три документа: два из них можно найти в Сети, а третий неуловим — название книги есть, но найти её нереально. Известно, что выводы были положительными, но всё уперлось в то, что как раз тогда происходил переход на полупроводниковую элементную базу. Реализовать на транзисторах троичную логику гораздо сложнее. В принципе, это и мешает появлению троичных систем. Сейчас они если и существуют, то не распространены.
— Выходит, виноваты транзисторы?
— Да. При реализации троичной логики на транзисторах требуется больше элементов, и на первый взгляд кажется, что это не так эффективно. Но здесь вот какая особенность: чем больше троичных элементов добавляешь, тем меньше соединений требуется. К тому же в определённый момент количество элементов начинает расти нелинейно. Когда число элементов переваливает некоторый порог, для увеличения сложности троичного компьютера требуется всё меньше и меньше элементов. Там, где двоичному компьютеру приходится удваивать количество элементов, троичному достаточно увеличить количество элементов только в полтора раза, потом в 1,3 раза и так далее.
— Существуют ли троичные машины, сопоставимые с «Сетунью-70»?
— Насколько мне известно, нет. Алгоритмов же написано много. Есть множество патентов как на электронику, так и на алгоритмы, которые упоминают и применяют в той или иной степени как классическое троичное представление данных (то есть смещённое от нуля — «один» и «два»), так и уравновешенное — «минус один», «ноль», «плюс один». Но я не слышал, чтобы кто-то пытался их серьёзно применять на практике. Известно, что студенческие коллективы предпринимали попытки построить подобный компьютер в Штатах, во Франции и в Новой Зеландии. В Испании построили троичный процессор с небольшим количеством памяти, но сейчас о нём уже ничего не узнать, кроме названия. Это сделали лет восемь назад, были публикации, но потом всё это пропало.
Троичных вычислительных машин, по-моему, никто не делает, полнофункциональных процессоров — тоже. При этом в области обработки цифровых сигналов широко применяются знакоразрядные системы исчисления, которые фактически эмулируют уравновешенное троичное представление на двоичных процессорах. То есть берутся два бита, один из них означает знак, а четвёртое состояние соответственно либо не используется, либо используется в отладочных целях.
— Зато у вас есть два эмулятора «Сетуни».
— Один есть и доступен уже года три. Он эмулирует первую «Сетунь», ту, которую разработали в 1959 году. Эмулятор интересно устроен — в виде веб-приложения: на страничку заходишь, там перед тобой фактически один в один модель панели той самой «Сетуни». Эмулятор называется «Сетунь ВС». Можно двигать переключатели и всякие ползунки, запускать машину на счёт, переключать режимы. Но для освоения придётся прочесть книжку (которая есть в интернете, кстати) «Малая цифровая вычислительная машина Сетунь».
Второй эмулятор — это уже попытка эмулировать «Сетунь-70». Пока он не подходит для посторонних: тот, кто знает, что делает, может собрать и запустить его, а все остальные, скорее всего, не разберутся. С помощью этого симулятора мы надеемся рано или поздно получить возможность запускать программы для «Сетуни-70», которые сохранились в распечатках, на перфолентах и в других источниках.
— Как я понимаю, сейчас вы восстанавливаете программу из ПЗУ?
— Недавно была получена пачка листочков, на которых были распечатаны данные ПЗУ. К сожалению, есть одна сложность: никто точно не знает, в каком порядке нужно располагать эти страницы. Так что сейчас будет длительная работа с попыткой подобрать, посмотреть, какие части кода к чему подходят.
— После этого можно будет получить готовую «Сетунь-70»?
— Можно будет запускать все доступные алгоритмы, но часть требует разных аппаратных устройств типа терминалов, информации о которых у нас нет. Поскольку «Сетунь-70» существовала в единственном экземпляре, для нее не так много программного обеспеченья, как для первой «Сетуни». Она использовалась по большей части для нужд МГУ.
— Как программировали «Сетунь-70»?
— У программистов «Сетуни-70» был достаточно развитый инструментарий. В нём имелся, по-моему, ассемблер даже и то ли транслятор Фортрана, то ли компилятор Алгола.
— В коде приходилось как-то учитывать троичность?
— Есть операции перехода, которые в зависимости от знака тебя переводят. Если минус, то по одному адресу за одну операцию, если ноль — то по другому, если плюс — то по третьему.
— Какие алгоритмы больше всего выигрывают от троичной логики? Обход бинарного дерева?
— Да, с ними троичные машины работают эффективнее, чем двоичные. В двоичном при обходе можно либо «попасть», либо «не попасть», а тут ты либо «перелетел», либо «попал», либо «не долетел». Так значительно проще понять, что делать дальше.
Собственно говоря, разницу между двоичными и троичными подходами в строении вычислительных машин можно проиллюстрировать на примере пешеходного перехода. Если рассматривать с точки зрения двоичного — ты можешь двигаться по переходу только в одну сторону. Если с точки зрения троичного подхода — ты можешь переходить как в одну сторону, так и в другую. Не приходится, как в случае с двоичным, бежать до следующего перехода, если этот только в обратную сторону. К тому же при троичном представлении данных в ячейке памяти умещается больше значений — диапазон шире. Это значит, что для того, чтобы представить число, этих ячеек понадобится меньше.
Плюс у уравновешенного троичного кода (его по-разному называют — уравновешенный, сбалансированный) есть преимущество: каждый разряд содержит знак того значения, которое содержится в этом разряде. В данном случае у нас минус один, ноль и плюс один. Для того чтобы выяснить, какой знак у всего числа, содержащегося в ячейке, достаточно взять первый ненулевой разряд и посмотреть, какой у него знак.
В двоичной системе берёшь ячейку и смотришь: если там единица, то соответствующую степень двойки надо добавить к общей сумме. В случае с троичной системой если в ячейке плюс, то степень тройки необходимо добавить, а если минус, то вычесть. И соответственно там может лежать и отрицательное число, и положительное, и нулевое. Здесь очень интересно проявляется особенность, которая есть во всех уравновешенных системах счисления — у них наилучшее округление. Не нужно никаких специальных алгоритмов для того, чтобы округлить число, достаточно просто отбросить ненужные знаки, и в оставшихся разрядах автоматически получится лучшее приближение числа.
Уравновешенное троичное представление имеет интересную особенность: поскольку оно уравновешенное, то содержит как положительные, так и отрицательные значения. То есть можно в некоторых алгоритмах добиться существенного прироста, например при сжатии. Здесь не нужно всегда только увеличивать словарь — в какой-то момент его можно и уменьшать. Это тоже даст небольшой выигрыш. Результат сжатия файла будет поменьше, чем у двоичного с тем же самым алгоритмом.
— Говорят ещё про удачное применение в механике, где троичный разряд описывает не только наличие тока, но и направление вращения ротора.
— Да, по своей природе уравновешенная троичная система исчисления позволяет обозначить одним разрядом не только включение и выключение мотора, но и включение со вращением в одну сторону и включение со вращением в другую сторону. Например, минус один — налево, плюс один — направо, ноль — не крутить вообще. Это удобнее, чем в двоичной системе, где сначала надо задать направление, а потом включить двигатель. На одно действие меньше.
— Если бы сегодня было возможно создать троичные процессоры, в какой области они пригодились бы?
— Это, прежде всего, обработка статистической информации. Там математика, где требуется работа с большими числами с высокой точностью. В принципе, никто не мешает сделать троичную машину, где будет неограниченное количество разрядов в числе, и оперировать с ней будет проще, просто принимая во внимание природу уравновешенного кодирования, где округление и некоторые другие операции выполняются значительно проще и экономнее.
— Сейчас очень актуален поиск и распознавание образов — в них троичная логика пригодилась бы?
— Да, именно там. В области обработки цифровых сигналов применяется знакоразрядная система, которая по сути своей эмулирует троичное представление просто на двоичных компонентах. Если будет готовое достаточно быстрое «железо», для того чтобы выполнять эти алгоритмы достаточно эффективно, то я думаю, именно троичная реализация окажется предпочтительнее.
— Со стороны это выглядит странно: с одной стороны, делается что-то новое, но речь в основном о старинном, давно не используемом компьютере. Кроме разработки эмулятора есть ли какие-то попытки сделать работающий троичный компьютер?
— Да, элементная база, к сожалению, осталась старая. Это большая проблема, а поиск новых компонентов, пригодных для этого, затруднён: единственное, что можно делать, — рассматривать большое количество элементов и пытаться понять, подходят они или нет. За несколько лет удалось подобрать только два элемента — операционные усилители, КМОП-ключи 403. И ещё некоторые оптические компоненты. На заказ сделать, конечно, можно, но кто будет этим заниматься? Если делать микросхемы, то нужно обращаться в Зеленоград и пытаться оформить какой-нибудь минимальный заказ, чтобы посмотреть. Это можно сделать, но бесплатно никто работать не станет, а будет ли дальнейшее развитие — неясно. К тому же процесс выпуска серии микросхем нас задержит на некоторое время.
— Есть ли шанс, что новые троичные компьютеры окажутся выгоднее обычных?
— Поначалу, конечно, нет. Придётся ведь всё разрабатывать с нуля, начиная с элементной базы. Чтобы это оправдалось, нужен большой прирост эффективности при обработке данных.
— Ну зато можно будет работать на реальном «железе». Или на современных двоичных процессорах эмуляция будет работать быстрее, чем машина на неких малотиражных элементах?
— Здесь вопрос доступности. Если ты выпускаешь элемент, тебе его нужно сначала получить, потом припаять. А эмулятор — собрал и запустил. Не нужно никаких дополнительных усилий для того, чтобы посмотреть, как всё работает.
— Но если вдруг появится какая-то элементная база, которая дает это естественным образом, сразу все старые наработки сразу пригодятся, так?
— Да, всё можно достаточно быстро адаптировать. Это один из вариантов будущего. Когда упрётся прирост производительности нынешней архитектуры, почему не пойти по пути расширения количества разрядов разрядности? Ну и ещё есть квантовые компьютеры, они тоже оперируют не всегда двоичными данными, здесь может оказаться больше возможностей.
Читайте также: Tertium datur: другие компьютеры. Полвека назад на эволюционном древе вычислительной техники появилась особая ветвь — ЭВМ, в основе которых лежала логика, отличающаяся от двоичной. Их разработали в МГУ.