Самая альтернативная

8 июль, 2003 - 23:00Андрей Зубинский Трудно сегодня отыскать что-нибудь броско "альтернативное" в перенасыщенном технологическом мире IT, а летом, в жару, так хочется чего-нибудь совсем забавного... Значит, надо обращаться к истории -- среди тупиковых (де-факто тупиковых... кто знает, какие реинкарнации хорошо забытого старого нас ожидают) ветвей эволюционного процесса в IT можно отыскать настоящие перлы, настолько "альтернативные", насколько это возможно. И нашу очередную беседу мы начнем с "глубокого отката" в до-IT-времена.


Гениальный неудачник

Самая альтернативная
Марк Глюскер, используя мощную CAD-систему (естественно, на ЭВМ двоичной логики) не только восстановил троичную машину Томаса Фоулера, но и воссоздал ее из того же материала -- дерева
В 1777 г. население Соединенного Королевства (Великобритания) выросло на одного человека -- в семье Хью и Элизабет Фоулер родился мальчик, которого назвали Томасом. Семья Фоулеров была, мягко говоря, небогатой (ее глава зарабатывал на жизнь бондарством) и смогла обеспечить Томасу только самый начальный уровень образования. Казалось, будущее его предопределено, да и на деле все складывалось в соотвествии с кажущимся предопределением -- в 13 лет мальчика отдали в подмастерья торговцу выделанными шкурами. Судьба поставила жирную точку над "i", дав юному Фоулеру возможность накрепко увязнуть в мелкой торговле, скопить небольшой капитальчик, удачно жениться, открыть свою кожевенную лавку... Возможно, так и было бы, если бы не страсть Томаса к самообучению -- днем он зарабатывал торговлей шкурами на книги, которые читал по ночам. А вот выбор книг даже сегодня кажется несколько странным для "временно исполняющего обязанности младшего менеджера" мелкой торговой розничной фирмы середины XVIII века (наверняка в те времена были свои плодовитые мастера pulp fiction) -- Томас предпочитал романам и повестям теорию разностных вычислений и математические монографии. Так как о жизни Томаса Фоулера известно очень немного (крупицы уже приведенной информации -- не домыслы автора статьи, они честно заимствованы из единственного письменного источника -- мемуаров сына Томаса, Хью), то тут остается непаханная целина для фантазии, достойная пера Паоло Коэльо. Мы же обратимся к неоспоримым фактам -- в 1828 г. Фоулер оформляет патент (# 5711, Великобритания) на весьма далекое от специфики IT изобретение и, даже не подозревая того, вписывает свое имя в не слишком обширный перечень великих архитекторов индустриального общества. "Термосифон" Фоулера, основа всех современных систем централизованного отопления, был создан, как говорится, в нужное время и в нужном месте -- и высокий уровень промышленного развития Великобритании, и климатические особенности страны способствовали фактически моментальному росту популярности изобретения. Казалось бы, Фоулер получил возможность забыть обо всех проблемах и сконцентрироваться исключительно на изобретательском творчестве. Но не тут-то было... а урок, преподанный историей неудачного патентования "Термосифона", не утратил актуальности спустя 175 лет. Причем мудрость этого урока заключается в одной короткой фразе-призыве: господа труженики на ниве интеллектуального продукта, не брезгуйте изучением патентного права! Достаточно одной неточности, неопределенности в формулировках в вашем патенте, и предприимчивые последователи конкурентов Фоулера 175-летней давности непременно этим воспользуются. В общем, история "Термосифона" завершилась не совсем уж печально -- несмотря на то что "пираты вскорости растащили изобретение по всем направлениям" (интересный факт -- сын Фоулера в мемуарах, датируемых 1875 г., уже упоминает именно "пиратов" -- "the invention was soon pirated in all directions"), Фоулер получил хоть какие-то средства, позволившие изменить образ жизни и занять весьма солидный пост... в банке. Именно в "банковский" период неуемный изобретательский дар, математические способности и феноменальная работоспособность Фоулера позволили ему добиться еще одного почетного места в списках героев технологической революции. Но уже в списках героев постиндустриального (информационного) общества!

В самом начале "банковского периода" Фоулер составляет таблицы для упрощения трудоемких вычислений и впоследствии издает их в виде брошюры "Tables for Facilitating Arithmetical Calculations" (1838 г.). Отличие таблиц Фоулера от многочисленных аналогов заключалось в используемом технологическом приеме -- в них числа представлялись степенными рядами двоек и троек. Через два года, в 1840 г., Фоулер овеществляет свою идею, самостоятельно разработав и воплотив в дереве (да-да, именно -- в дереве) работающую "вычисляющую машину", основанную на троичной системе счисления. Для своего времени и, по мнению некоторых специалистов, вообще до появления интегральных микросхем малоизвестная "троичная вычисляющая машина" Фоулера являла собой выдающееся событие. Она была технологически более совершенной, чем знаменитые аналогичные разработки (например, машина Бэббиджа). Но невысокий социальный статус Фоулера, обремененность большой семьей (у него было 11 детей, унаследовавших в какой-то мере таланты отца: так, его дочь Кэролайн уже в восьмилетнем возрасте добилась признания как иллюстратор книг) и постоянные финансовые проблемы (во все времена трудно сочетать свободное творчество с повседневными заботами о хлебе насущном) не позволили ни добиться известности, ни поставить "на поток" производство простых и нужных "вычисляющих машин"... Фоулер ушел из жизни в 66 лет (весьма почтенный возраст для того времени, когда средняя продолжительность жизни составляла 40 лет) -- 31 марта 1843 г. После кончины изобретателя о его машинах забыли быстро и надолго, а потом и об идеях, на основе которых эти машины были созданы.


Первый, второй, единственный

История первой и единственной серьезной реинкарнации идей английского изобретателя начинается через 148 лет с момента рождения Томаса Фоулера и весьма схожа с вышеизложенным рассказом в своей главной "сюжетной линии". Только следует заменить страну рождения ее героя на Украину, профессию отца -- на рабочего железной дороги и наконец, имя главного действующего лица -- на Николая Брусенцова. Ему тоже довелось рано начать зарабатывать на жизнь, пройти испытания, выпавшие на долю поколений тех лет, попробовать себя и в музыке, и в работе на химзаводе (интересующимся подробностями биографии Н. Брусенцова и многих других талантливых специалистов, создававших советскую IT-индустрию, рекомендуем прочесть книгу Б. Н. Малиновского "История вычислительной техники в лицах", доступную в онлайн-версии, например в "Библиотеке М. Мошкова": lib.ru/MEMUARY/MALINOWSKIJ/0.txt). Нам же в контексте статьи важен такой главный факт -- Н. Брусенцов фактически является архитектором и разработчиком "самой альтернативной ЭВМ" -- первой полноценной вычислительной машины в мире, которая в истории была вторым вычислителем, основанным на троичной логике. Более того, "альтернативность" этой машины, начинающаяся с арифметико-логических основ, продолжается и в "макроархитектуре", которую сегодня можно уверенно назвать устоявшимся термином MISC (Minimal Instructions Set Computer -- компьютер с минимальным набором команд, www.ultratechnology.com/misc.html). MISC как термин представляет детище еще одного "суперальтернативщика" Чарльза "Чака" Мура, независимо и примерно в одно время (на два года позже) с Брусенцовым создававшего схожую архитектуру, но виртуализованную, "оторванную" от аппаратных средств, получившую название Forth. Особенность MISC-машин -- стековая архитектура (в частности, и машины Брусенцова, и Forth-машины являются двухстековыми), специфическая форма представления программ (разнообразные разновидности так называемого "шитого кода", о нем и о Forth мы некогда говорили в статье, посвященной данной системе, однако в онлайн-версии "Компьютерного Обозрения" копии этой статьи нет) и сверхкомпактная система команд -- так, в машинах Брусенцова было всего 24 команды. Если учесть тот факт, что Н. Брусенцов все-таки "довел" свои разработки до малосерийного производства (они получили название "Сетунь" и их было собрано около полусотни), сделал это раньше, чем появились аппаратные Forth-процессоры, и с использованием весьма "лихой" элементной базы (мы еще обсудим употребленный эпитет), да еще и на основе троичной логики, то титул "самого альтернативного конструктора ЭВМ" наш соотечественник безусловно и безоговорочно заслуживает. Вот только машины "Сетунь", несмотря на низкую стоимость производства, очень высокую надежность, оснащенность более чем пристойным по своим временам ПО, хорошее быстродействие и массу достоинств, в перечне которых есть даже сложные аллюзии с философией Аристотеля, -- как говорится, "не пошли". Читатель может ознакомиться с одной из версий, объясняющих причины неудачи "Сетуни", в уже упомянутой книге Малиновского (именно поэтому мы эту версию обсуждать не будем), нам же настало время кратко познакомиться с основой альтернативности "вычисляющей машины" Фоулера и машины Брусенцова -- с троичной (трехзначной) логикой.


Святая троица

На самом деле термин "троичная логика" не совсем верен (точнее, он слишком общий), что иногда вызывает недоразумения. Так, электронщики часто путают его с "логикой с тремя состояниями" ("1" -- представляется, например, наличием некоторого уровня напряжения на выводе; "0" -- нулевой уровень напряжения; "Z-состояние", или разомкнутое состояние). Уточняющий термин "троичная система счисления" ставит все на свои места: мы ведем речь о таком специфическом наборе правил записи чисел с помощью заданного множества специальных знаков -- "цифр" (собственно, этот набор правил и называется "системой счисления"), в котором множество "цифр" состоит только из трех элементов -- 0, 1, 2 (отсюда "троичная"). Для еще большей детализации следует указать, что эта система счисления относится к классу позиционных -- в них значение цифры в записи числа определяется позицией в этой записи. Все современные цифровые вычислительные устройства основаны на двоичной системе счисления -- будь то однобитные секции секционированных процессоров, микроконтроллеры или сигнальные процессоры. И так было почти всегда -- "почти" потому, что в историю вычислительной техники все-таки вошли машины "Сетунь".

О математических аспектах троичной системы счисления мы говорить не будем -- Сеть изобилует материалами, в которых они описаны. Но... есть одна историческая математическая "шутка всерьез", автором которой является сам Дж. фон Hейман. В силу своей серьезности (и больше -- общности) она также формирует немало заблуждений. Речь идет о совершенно оторванной от прикладных областей оценке экономичности системы счисления. Под ней понимается мощность множества чисел (иначе говоря, сколько всего чисел), которое можно сформировать в данной системе с помощью определенного количества "цифр". Причем, что важно, количество "цифр" здесь означает не привычное количество разрядов в позиционной системе счисления, а общее число состояний, интерпретируемых в данной системе как различные цифры. Так, пусть "цифр" будет 18, тогда мы можем разбить их на 9 групп по две (1 и 0 для двоичной системы счисления), на 6 групп по три (0, 1, 2 для троичной системы) и т. д. Если обозначить количество "цифр" как n, а основание системы счисления (мощность множества возможных для данной системы "цифр") -- как m (например, для двоичной -- 2, троичной -- 3, десятичной -- 10), то экономичность E будет оцениваться следующей формулой:

Самая альтернативная
Оптимизация этого уравнения по критерию максимума E, т. е. нахождение такого основания системы счисления, при котором будет достигнута максимальная эффективность, -- тривиальная задачка, требующая нахождения производной функции E(m) и приводящая к несколько странному (с точки зрения практика) результату: система счисления с иррациональным основанием -- числом e (2,71828...), оказывается, наиболее эффективна. Впрочем, это чистая теория, и совершенно справедливая. А вот сделанные из нее далеко идущие практические выводы об экономичности вычислительных машин, основанных на элементах с полноценными тремя логическими состояниями и троичной арифметике, да еще и выводы, подтвержденные практикой (ну как же, 3 ведь ближе к e, чем 2, и к тому же "Сетунь" ведь действительно была одной из самых дешевых серийных, а тем более малосерийных, ЭВМ своего времени) -- как быть с ними? Уподобиться ли многим создателям сетевых ресурсов, посвященных "троичным вычислителям" (например, очень толкового сайта www.trinary.cc), перечислить ли множество достоинств и закончить это перечисление Великим Альтернативным Вопросом ко всему миру: "Где же работающие реализации?" (или чего хуже -- куда более резким Великим Альтернативным Укором)? Или все-таки тщательно подумать "о мелочах"?


Так где же троичные процессоры?

Давайте к факту диковинной элементной базы первого работающего на принципах троичной системы счисления вычислителя -- машины Фоулера (это все же был не кремний, а механика, воплощенная в дереве) -- добавим второй факт -- упомянутую "лихую" элементную базу "Сетуни". Эпитет "лихая" в те времена вряд ли был бы употребим: логические элементы на основе магнитоэлектрических эффектов в фактически маломощных импульсных трансформаторах (устройствах на перемагничиваемых тороидальных сердечниках -- трансфлюксорах, которые конструктивно не очень отличаются от трансформаторов; они разработаны в 50-е годы прошлого столетия в США американским поляком Яном Райхманом в лаборатории американского русского Владимира Зворыкина) до сих пор не редкость, например, в военной технике, где требуется высокий уровень надежности при работе в тяжелых условиях. А если вспомнить годы создания "Сетуни", когда мир еще только готовился к великому противостоянию в Карибском кризисе и выражение "вероятный противник" было не просто словосочетанием со смутным смыслом, когда в городах вовсю строились бомбоубежища, а туннели метрополитенов загоняли на глубину, достаточную для защиты от поражающих факторов ядерного взрыва... В те времена денег на вооружение не жалели и иногда кажется, вообще не считали. В таких условиях "магнитная логика" была вполне допустима и оправдана, а технология производства полупроводников, мягко говоря, оставляла желать лучшего. Так что выбор Брусенцовым именно такой элементной базы на тот момент был очень грамотным, а заложенные в схемотехнику логических элементов решения -- бесспорно талантливыми. Вот только не стоит обольщаться тогдашней дешевизной, ведь экономическая модель страны того времени, когда труд фактически был обесценен, и являлась ее причиной. Возможно, именно из-за очень высоких трудозатрат (их можно было скрыть от потребителя путем директивной установки отпускной стоимости, но никак не от производителя) и низкой цены конечной продукции (чем, бесспорно, характеризовалась "Сетунь") директор предприятия, на котором изготовлялась эта ЭВМ (Казанский завод математических машин), и не воспылал желанием развернуть крупносерийное производство. А вот то, что ожидало "троичные машины" в будущем, оказалось намного хуже...

Полупроводниковая технология развивалась очень быстро, почти мгновенно "перескочив" от дискретной компонентной базы к интегральной. Тут-то и произошло то самое неприятное, о чем признанный специалист в сфере вычислительной техники академик Д. А. Поспелов лаконично сказал так: "Барьеры, стоящие на пути приложения троичной симметричной системы счисления в компьютерах, являются препятствиями технического порядка. До сих пор не разработаны экономичные и эффективные элементы с тремя устойчивыми состояниями...". Это было произнесено очень давно и до сих пор не утратило актуальности -- трансфлюксоры даже сейчас очень трудно "красиво" заменить полупроводниковыми схемами. Еще труднее сделать эту замену "красивой" на уровне вентилей интегральных микросхем -- главных "кирпичиков" всей современной цифровой схемотехники. Три полноценных логических состояния буквально требуют двуполярного питания вентилей. Это означает, что к каждому из них необходимо подводить один лишний отвод от одной лишней шины питания. Если посчитать количество вентилей в нынешних процессорах... В общем, можно понять, почему первая серьезная модификация знаменитого микропроцессора i8080 -- i8085 -- заключалась в отказе от двуполярного питания и почему ни один из производителей цифровых микросхем к такому питанию никогда больше не возвращался.

"Мелкие неприятности" ожидали и макроархитектуру "Сетунь", равно как и необычайно популярную некогда архитектуру Forth. К ним начал угасать интерес, и сегодня стековые MISC-машины -- это большая экзотика, а Forth мало-помалу вытесняется разнообразными, ориентированными на "встраиваемые" приложения технологическими средствами, использующими языки С и С++ и технику кросс-компиляции. Возможно, объяснение этому явному факту может звучать так -- концепция стека, в котором хранятся одновременно и промежуточные значения вычислений, и данные, подлежащие обработке, требующая от программиста держать "в уме" все это "безобразие", действительно не очень удобна, а в некоторых случаях очень неудобна. Как бы то ни было, область потенциально перспективных для "троичных вычислителей" MISC-макроархитектур (они перспективны потому, что крайне просты и не нуждаются для реализации в миллионах или миллиардах вентилей) сегодня почти никого не интересует. Такова реальность.

Вот такие они, "мелочи альтернативы", -- препятствия технического порядка -- в действии...