Компьютерра PDA N151 (24.12.2011-30.12.2011) - Компьютерра
Шрифт:
Интервал:
Закладка:
После запуска "Сетуни" в производство проводились семинары по программированию, которые послужили, наверное, отправной точкой для большинства других семинаров по вычислительной технике - как московских, так и новосибирских. Результатом этих семинаров стал ежегодник, в котором публиковались программы - включая исходный код и подробное описание принципов работы, проблем и задач, которые эта программа решала.
- Какие же преимущества давала троичная логика?
- Двоичная логика по своей сути представляет собой сильно урезанную формальную логику. Из-за своих ограничений она не позволяет произвести некоторые действия. Либо позволяет, но неэкономно, и придётся прилагать значительно больше сил. Впрочем, в первой "Сетуни" самой по себе троичной логики практически не было, а применялось в основном троичное представление данных. Логических же операций как таковых в системе команд, по-моему, не имелось вовсе.
- То есть это была исключительно счётная машина?
- Да, она создавалась именно для выполнения расчётов. А вот в первом варианте "Сетуни-70" уже были некоторые средства для выполнения логических операций.
- "Сетунь-70" начала разрабатываться сразу, как только первая "Сетунь" была закончена?
- Нет. В 1965 году был расцвет первой "Сетуни", когда она производилась, продавалась, поставлялась в университеты и КБ. Ближе к семидесятому году, к столетнему юбилею Ленина, всем институтам предлагали показать свои достижения. Коллектив Николая Петровича решил сделать следующую модель "Сетуни", тоже троичную. ЭВМ назвали "Сетунь-70". Работу начали в 1968 году. Сначала был сделан один вариант и нормально запущен, но потом пришла мысль чуть-чуть поменять архитектуру и лучше приспособить её для стекового программирования, которое сейчас больше известно как структурное. Идею структурного программирования предложил Дейкстра, и "Сетунь-70" прекрасно подошла для такого подхода.
- И после этого появился единственный опытный экземпляр?
- Да. Его построили и испытали, но в серию эти компьютеры не пошли, потому что к тому времени сложилась нехорошая ситуация вокруг первой "Сетуни". Как уже было сказано, машина получилась очень дешёвой, поэтому её просто невыгодно было производить. Да и производительность к тому времени уже была не того уровня, который требовался. К тому же тогда началось распространение полностью полупроводниковых машин, на фоне которых ферритовые катушки "Сетуни" смотрелись совсем несерьёзно.
- Были ли другие исследования, связанные с троичной логикой?
- В семидесятых годах, если не ошибаюсь, в Штатах была сделана попытка построить на большой двоичной ЭВМ эмулируемую троичную ЭВМ для того, чтобы оценить эффективность. По результатам работы опубликовали три документа: два из них можно найти в Сети, а третий неуловим - название книги есть, но найти её нереально. Известно, что выводы были положительными, но всё уперлось в то, что как раз тогда происходил переход на полупроводниковую элементную базу. Реализовать на транзисторах троичную логику гораздо сложнее. В принципе, это и мешает появлению троичных систем. Сейчас они если и существуют, то не распространены.
- Выходит, виноваты транзисторы?
- Да. При реализации троичной логики на транзисторах требуется больше элементов, и на первый взгляд кажется, что это не так эффективно. Но здесь вот какая особенность: чем больше троичных элементов добавляешь, тем меньше соединений требуется. К тому же в определённый момент количество элементов начинает расти нелинейно. Когда число элементов переваливает некоторый порог, для увеличения сложности троичного компьютера требуется всё меньше и меньше элементов. Там, где двоичному компьютеру приходится удваивать количество элементов, троичному достаточно увеличить количество элементов только в полтора раза, потом в 1,3 раза и так далее.
- Существуют ли троичные машины, сопоставимые с "Сетунью-70"?
- Насколько мне известно, нет. Алгоритмов же написано много. Есть множество патентов как на электронику, так и на алгоритмы, которые упоминают и применяют в той или иной степени как классическое троичное представление данных (то есть смещённое от нуля - "один" и "два"), так и уравновешенное - "минус один", "ноль", "плюс один". Но я не слышал, чтобы кто-то пытался их серьёзно применять на практике. Известно, что студенческие коллективы предпринимали попытки построить подобный компьютер в Штатах, во Франции и в Новой Зеландии. В Испании построили троичный процессор с небольшим количеством памяти, но сейчас о нём уже ничего не узнать, кроме названия. Это сделали лет восемь назад, были публикации, но потом всё это пропало.
Троичных вычислительных машин, по-моему, никто не делает, полнофункциональных процессоров - тоже. При этом в области обработки цифровых сигналов широко применяются знакоразрядные системы исчисления, которые фактически эмулируют уравновешенное троичное представление на двоичных процессорах. То есть берутся два бита, один из них означает знак, а четвёртое состояние соответственно либо не используется, либо используется в отладочных целях.
- Зато у вас есть два эмулятора "Сетуни".
- Один есть и доступен уже года три. Он эмулирует первую "Сетунь", ту, которую разработали в 1959 году. Эмулятор интересно устроен - в виде веб-приложения: на страничку заходишь, там перед тобой фактически один в один модель панели той самой "Сетуни". Эмулятор называется "Сетунь ВС". Можно двигать переключатели и всякие ползунки, запускать машину на счёт, переключать режимы. Но для освоения придётся прочесть книжку (которая есть в интернете, кстати) "Малая цифровая вычислительная машина Сетунь".
Второй эмулятор - это уже попытка эмулировать "Сетунь-70". Пока он не подходит для посторонних: тот, кто знает, что делает, может собрать и запустить его, а все остальные, скорее всего, не разберутся. С помощью этого симулятора мы надеемся рано или поздно получить возможность запускать программы для "Сетуни-70", которые сохранились в распечатках, на перфолентах и в других источниках.
- Как я понимаю, сейчас вы восстанавливаете программу из ПЗУ?
- Недавно была получена пачка листочков, на которых были распечатаны данные ПЗУ. К сожалению, есть одна сложность: никто точно не знает, в каком порядке нужно располагать эти страницы. Так что сейчас будет длительная работа с попыткой подобрать, посмотреть, какие части кода к чему подходят.
- После этого можно будет получить готовую "Сетунь-70"?
- Можно будет запускать все доступные алгоритмы, но часть требует разных аппаратных устройств типа терминалов, информации о которых у нас нет. Поскольку "Сетунь-70" существовала в единственном экземпляре, для нее не так много программного обеспеченья, как для первой "Сетуни". Она использовалась по большей части для нужд МГУ.
- Как программировали "Сетунь-70"?
- У программистов "Сетуни-70" был достаточно развитый инструментарий. В нём имелся, по-моему, ассемблер даже и то ли транслятор Фортрана, то ли компилятор Алгола.
- В коде приходилось как-то учитывать троичность?
- Есть операции перехода, которые в зависимости от знака тебя переводят. Если минус, то по одному адресу за одну операцию, если ноль - то по другому, если плюс - то по третьему.
- Какие алгоритмы больше всего выигрывают от троичной логики? Обход бинарного дерева?
- Да, с ними троичные машины работают эффективнее, чем двоичные. В двоичном при обходе можно либо "попасть", либо "не попасть", а тут ты либо "перелетел", либо "попал", либо "не долетел". Так значительно проще понять, что делать дальше.
Собственно говоря, разницу между двоичными и троичными подходами в строении вычислительных машин можно проиллюстрировать на примере пешеходного перехода. Если рассматривать с точки зрения двоичного - ты можешь двигаться по переходу только в одну сторону. Если с точки зрения троичного подхода - ты можешь переходить как в одну сторону, так и в другую. Не приходится, как в случае с двоичным, бежать до следующего перехода, если этот только в обратную сторону. К тому же при троичном представлении данных в ячейке памяти умещается больше значений - диапазон шире. Это значит, что для того, чтобы представить число, этих ячеек понадобится меньше.
Плюс у уравновешенного троичного кода (его по-разному называют - уравновешенный, сбалансированный) есть преимущество: каждый разряд содержит знак того значения, которое содержится в этом разряде. В данном случае у нас минус один, ноль и плюс один. Для того чтобы выяснить, какой знак у всего числа, содержащегося в ячейке, достаточно взять первый ненулевой разряд и посмотреть, какой у него знак.
В двоичной системе берёшь ячейку и смотришь: если там единица, то соответствующую степень двойки надо добавить к общей сумме. В случае с троичной системой если в ячейке плюс, то степень тройки необходимо добавить, а если минус, то вычесть. И соответственно там может лежать и отрицательное число, и положительное, и нулевое. Здесь очень интересно проявляется особенность, которая есть во всех уравновешенных системах счисления - у них наилучшее округление. Не нужно никаких специальных алгоритмов для того, чтобы округлить число, достаточно просто отбросить ненужные знаки, и в оставшихся разрядах автоматически получится лучшее приближение числа.