Цифровой журнал «Компьютерра» № 101 - Коллектив Авторов
Шрифт:
Интервал:
Закладка:
- Как я понимаю, сейчас вы восстанавливаете программу из ПЗУ?
- Недавно была получена пачка листочков, на которых были распечатаны данные ПЗУ. К сожалению, есть одна сложность: никто точно не знает, в каком порядке нужно располагать эти страницы. Так что сейчас будет длительная работа с попыткой подобрать, посмотреть, какие части кода к чему подходят.
- После этого можно будет получить готовую «Сетунь-70»?
- Можно будет запускать все доступные алгоритмы, но часть требует разных аппаратных устройств типа терминалов, информации о которых у нас нет. Поскольку «Сетунь-70» существовала в единственном экземпляре, для нее не так много программного обеспеченья, как для первой «Сетуни». Она использовалась по большей части для нужд МГУ.
- Как программировали «Сетунь-70»?
- У программистов «Сетуни-70» был достаточно развитый инструментарий. В нём имелся, по-моему, ассемблер даже и то ли транслятор Фортрана, то ли компилятор Алгола.
- В коде приходилось как-то учитывать троичность?
- Есть операции перехода, которые в зависимости от знака тебя переводят. Если минус, то по одному адресу за одну операцию, если ноль — то по другому, если плюс — то по третьему.
- Какие алгоритмы больше всего выигрывают от троичной логики? Обход бинарного дерева?
- Да, с ними троичные машины работают эффективнее, чем двоичные. В двоичном при обходе можно либо «попасть», либо «не попасть», а тут ты либо «перелетел», либо «попал», либо «не долетел». Так значительно проще понять, что делать дальше.
Собственно говоря, разницу между двоичными и троичными подходами в строении вычислительных машин можно проиллюстрировать на примере пешеходного перехода. Если рассматривать с точки зрения двоичного — ты можешь двигаться по переходу только в одну сторону. Если с точки зрения троичного подхода — ты можешь переходить как в одну сторону, так и в другую. Не приходится, как в случае с двоичным, бежать до следующего перехода, если этот только в обратную сторону. К тому же при троичном представлении данных в ячейке памяти умещается больше значений — диапазон шире. Это значит, что для того, чтобы представить число, этих ячеек понадобится меньше.
Плюс у уравновешенного троичного кода (его по-разному называют — уравновешенный, сбалансированный) есть преимущество: каждый разряд содержит знак того значения, которое содержится в этом разряде. В данном случае у нас минус один, ноль и плюс один. Для того чтобы выяснить, какой знак у всего числа, содержащегося в ячейке, достаточно взять первый ненулевой разряд и посмотреть, какой у него знак.
В двоичной системе берёшь ячейку и смотришь: если там единица, то соответствующую степень двойки надо добавить к общей сумме. В случае с троичной системой если в ячейке плюс, то степень тройки необходимо добавить, а если минус, то вычесть. И соответственно там может лежать и отрицательное число, и положительное, и нулевое. Здесь очень интересно проявляется особенность, которая есть во всех уравновешенных системах счисления — у них наилучшее округление. Не нужно никаких специальных алгоритмов для того, чтобы округлить число, достаточно просто отбросить ненужные знаки, и в оставшихся разрядах автоматически получится лучшее приближение числа.
Уравновешенное троичное представление имеет интересную особенность: поскольку оно уравновешенное, то содержит как положительные, так и отрицательные значения. То есть можно в некоторых алгоритмах добиться существенного прироста, например при сжатии. Здесь не нужно всегда только увеличивать словарь — в какой-то момент его можно и уменьшать. Это тоже даст небольшой выигрыш. Результат сжатия файла будет поменьше, чем у двоичного с тем же самым алгоритмом.
- Говорят ещё про удачное применение в механике, где троичный разряд описывает не только наличие тока, но и направление вращения ротора.
- Да, по своей природе уравновешенная троичная система исчисления позволяет обозначить одним разрядом не только включение и выключение мотора, но и включение со вращением в одну сторону и включение со вращением в другую сторону. Например, минус один — налево, плюс один — направо, ноль — не крутить вообще. Это удобнее, чем в двоичной системе, где сначала надо задать направление, а потом включить двигатель. На одно действие меньше.
- Если бы сегодня было возможно создать троичные процессоры, в какой области они пригодились бы?
- Это, прежде всего, обработка статистической информации. Там математика, где требуется работа с большими числами с высокой точностью. В принципе, никто не мешает сделать троичную машину, где будет неограниченное количество разрядов в числе, и оперировать с ней будет проще, просто принимая во внимание природу уравновешенного кодирования, где округление и некоторые другие операции выполняются значительно проще и экономнее.
- Сейчас очень актуален поиск и распознавание образов — в них троичная логика пригодилась бы?
- Да, именно там. В области обработки цифровых сигналов применяется знакоразрядная система, которая по сути своей эмулирует троичное представление просто на двоичных компонентах. Если будет готовое достаточно быстрое «железо», для того чтобы выполнять эти алгоритмы достаточно эффективно, то я думаю, именно троичная реализация окажется предпочтительнее.
- Со стороны это выглядит странно: с одной стороны, делается что-то новое, но речь в основном о старинном, давно не используемом компьютере. Кроме разработки эмулятора есть ли какие-то попытки сделать работающий троичный компьютер?
- Да, элементная база, к сожалению, осталась старая. Это большая проблема, а поиск новых компонентов, пригодных для этого, затруднён: единственное, что можно делать, — рассматривать большое количество элементов и пытаться понять, подходят они или нет. За несколько лет удалось подобрать только два элемента — операционные усилители, КМОП-ключи 403. И ещё некоторые оптические компоненты. На заказ сделать, конечно, можно, но кто будет этим заниматься? Если делать микросхемы, то нужно обращаться в Зеленоград и пытаться оформить какой-нибудь минимальный заказ, чтобы посмотреть. Это можно сделать, но бесплатно никто работать не станет, а будет ли дальнейшее развитие — неясно. К тому же процесс выпуска серии микросхем нас задержит на некоторое время.
- Есть ли шанс, что новые троичные компьютеры окажутся выгоднее обычных?
- Поначалу, конечно, нет. Придётся ведь всё разрабатывать с нуля, начиная с элементной базы. Чтобы это оправдалось, нужен большой прирост эффективности при обработке данных.
- Ну зато можно будет работать на реальном «железе». Или на современных двоичных процессорах эмуляция будет работать быстрее, чем машина на неких малотиражных элементах?
- Здесь вопрос доступности. Если ты выпускаешь элемент, тебе его нужно сначала получить, потом припаять. А эмулятор — собрал и запустил. Не нужно никаких дополнительных усилий для того, чтобы посмотреть, как всё работает.
- Но если вдруг появится какая-то элементная база, которая дает это естественным образом, сразу все старые наработки сразу пригодятся, так?
- Да, всё можно достаточно быстро адаптировать. Это один из вариантов будущего. Когда упрётся прирост производительности нынешней архитектуры, почему не пойти по пути расширения количества разрядов разрядности? Ну и ещё есть квантовые компьютеры, они тоже оперируют не всегда двоичными данными, здесь может оказаться больше возможностей.
Читайте также: Tertium datur: другие компьютеры. Полвека назад на эволюционном древе вычислительной техники появилась особая ветвь — ЭВМ, в основе которых лежала логика, отличающаяся от двоичной. Их разработали в МГУ.
Полезные ссылки
Основные русские ресурсы по изучению истории, разработке троичной вычислительной техники, алгоритмов и по троичной логике:
История создания «Сетуни» и «Сетуни-70» в «Виртуальном компьютерном музее»
Попытка создания
Проект «Тунгуска» — интересное применение архитектурных принципов микропроцессора 6502 и компьютера «Commodore-64», но с использованием симметричного троичного кода
Симулятор «Сетуни»
К оглавлению
Колумнисты
Василий Щепетнёв: Месть индейских вождей
Василий Щепетнев
Опубликовано 26 декабря 2011 года