Чужие: странная архитектура инопланетных компьютеров

Внутри современные компьютерные системы очень похожи. Они могут быть крохотными, а могут занимать целые залы — это не играет роли. В конечном счёте всё разнообразие сводится к паре-тройке процессорных архитектур и одной из вариаций на тему Unix или Windows.

Так было не всегда. Лет двадцать назад суперкомпьютеры и обычные ПК не имели ничего общего между собой. Прогресс свёл их отличия к мощности и цене. То же самое касается софта. С точки зрения программиста между сервером в дата-центре, дешёвым смартфоном в кармане и макбуком на столе не так уж много разницы. Unix, Java, Си++ будут и там, и там, и там.

Чтобы встретить нечто действительно неординарное, нужно смотреть дальше.

Фотография кометы Чурюмова-Герасименко, которую передал на Землю аппарат RosettaФотография кометы Чурюмова-Герасименко, которую передал на Землю аппарат Rosetta

Иной мир Расстояние, разделяющее Землю и комету Чурюмова-Герасименко, на которую в ноябре высадился автоматический зонд Philae, втрое больше расстояния от Земли до Солнца. Чтобы преодолеть его, аппарату понадобилось больше десяти лет, но по-настоящему путь Philae начался ещё раньше — в середине девяностых, когда его проектировали инженеры и учёные Европейского космического агентства.

Если вы ищете необычную вычислительную машину, бортовой компьютер Philae — как раз то, что нужно. Это не просто гость из другой эпохи. Требования к бортовым компьютерам космических аппаратов радикально отличаются от требований к земной электронике. Это накладывает неизгладимый отпечаток и на их железо, и на их софт. Они совершенно другие.

Одна из причин проста: межпланетный зонд нельзя проапгрейдить. Долгие циклы разработки и чудовищные расстояния означают, что любой космический компьютер превращается в динозавра куда раньше, чем подходит к концу его миссия. Поэтому аппаратная база прошлого века в космосе — это не исключение, а норма.

Весточка из девяностых: отладка прототипа бортового компьютера Philae. Тогда ЭЛТ-мониторы ещё были в ходуВесточка из девяностых: отладка прототипа бортового компьютера Philae. Тогда ЭЛТ-мониторы ещё были в ходу

Впрочем, невозможность апгрейда — ещё полбеды. Хуже другое: бортовой компьютер межпланетного аппарата невозможно починить. Это значит, что он обязан выдерживать без ремонта и непоправимых сбоев годы, а то и десятилетия. Такая надёжность обходится недёшево, но провал миссии всё равно дороже.

При этом нужно понимать, что космос — суровое место. Во-первых, космическое излучение. Оно выводит из строя микросхемы, которые прекрасно работают на Земле. Во-вторых, механические воздействия. Спускаемым аппаратам приходится выдерживать нагрузки и удары, которые обнулили бы гарантию любого гаджета.

Сложите эти факторы вместе — и получится монстр, достойный самого пристального внимания.

Сборка бортового компьютера PhilaeСборка бортового компьютера Philae

Космический кремний Чтобы добраться до Земли и вернуться обратно, радиосигналу с Philae требуется почти час. Это исключает непосредственное управление аппаратом. Всё, что делает зонд, начиная с посадки и заканчивая научными экспериментами, контролирует его бортовой компьютер.

Устранение неполадок — тоже его ответственность. При разработке и аппаратных, и программных решений Philae использовался подход, который гарантирует максимальную надёжность и готовность к нештатным ситуациям. Многие аппаратные модули имеют дублёров, а в некоторых случаях предусмотрен не один, а множество запасных вариантов.

Сердце бортового компьютера — два одинаковых блоков обработки данных (DPU): основной и запасной. Пока первый работает, второй следит за его исправностью. Если возникнут проблемы, он тут же возьмёт управление на себя.

Каждый из блоков обработки данных снабжён шестнадцатиразрядным процессором Harris RTX2010, работающим с тактовой частотой 8 МГц. Процессор защищён от радиации и выдерживает обстрел заряженными частицами с интенсивностью, в триста раз превышающей уровень, который способны выдержать обычные микросхемы.

Три системные шины соединяют его с интерфейсным модулем на базе перепрограммируемой матрицы Actel A1280RH, а также с оперативной памятью, энергонезависимой памятью и ПЗУ. Все эти микросхемы тоже защищены от воздействия радиации.

Схема блока обоработки данных (DPU)Схема блока обоработки данных (DPU)

Энергонезависимая память предназначена для хранения данных в то время, когда бортовой компьютер не работает. При отключении блока содержимое ОЗУ сбрасывается в энергонезависимую память, а при включении — загружается из неё обратно. Именно поэтому банки оперативной и энергонезависимой памяти имеют одинаковую ёмкость: 128 тысяч 24-разрядных машинных слов (то есть 384 Кб).

Интерфейсный модуль содержит сторожевой таймер, который автоматически перезапускает блок обработки данных в случае зависания. Кроме того, он отвечает за управление прерываниями и контролирует взаимодействие с памятью и внешним миром.

Внешний мир в данном случае — это контроллеры многочисленных научных инструментов Philae. Кроме того, к бортовому компьютеру подключены прочие системы зонда, такие как двигатели, солнечные батареи и телекоммуникационная система для связи с космическим аппаратом Rosetta, который ретранслирует информацию в Центр управления полётами на Земле.

Каждый из восьми контроллеров научных инструментов снабжён собственным процессором RTX2010, работающим с тактовой частотой 10 МГц. Бортовой компьютер также оснащён двумя процессорами серии 80C3x (вариант популярнейшего восьмиразрядного микроконтроллера с архитектурой Intel 8051) и специализированным цифровым сигнальным процессором ADSP—21020.

Итого: тринадцать процессоров, в том числе десять RTX2010. Непривычно, но настоящая экзотика ещё впереди.

Если бы посадочный модуль был крупнее, в нём уместилась бы батарея помощнее. Но нет...Если бы посадочный модуль был крупнее, в нём уместилась бы батарея помощнее. Но нет…

Чужие Подавляющее большинство процессоров, выпущенных за последние тридцать лет, имеет регистровую архитектуру. Процессоры с регистровой архитектурой обладают встроенными ячейками памяти (регистрами) и позволяют манипулировать их содержимым.

RTX2010 — куда более редкий зверь. Это стековый процессор. Он оперирует данными, которые находятся не в регистрах, а в двух встроенных стеках. Роль машинного кода при этом исполняет высокоуровневый язык программирования Forth.

Стеком называют список, извлекать элементы которого можно лишь в той же очерёдности, в какой они сохранялись. Стек можно сравнить с колодой карт, перебираемой по порядку. Чтобы узнать, что нарисовано на второй карте, придётся снять первую.

Стеки используются и другими компьютерами или языками программирования, но в Forth (а значит и в RTX2010) они занимают центральное место. Любая операция в этом языке использует в качестве аргументов данные, которые находятся в стеке. В большинстве случаев стек заменяет собой и временные локальные переменные.

Кроличья нора уходит ещё глубже. Если присмотреться к Forth, становится понятно, что это не обычный язык программирования. Он не делает различия между интерактивным режимом, исполнением программы и её компиляцией. Более того, у него нет определённого синтаксиса или операторов.

Код на Forth состоит из последовательности «слов» — подпрограмм с именем. Как правило, слова, которые определяют пользователи Forth, служат для тех же целей, что и функции в Си, однако этим их возможности не исчерпываются. У Forth есть важное отличие: в этом языке словами являются даже такие базовые операции, как управление циклом, создание новых слов или условное ветвление.

При необходимости пользователь может переопределить их или расширить Forth собственными словами, которые не просто исполняются, а управляют самим процессом исполнения или компиляции. Именно таким образом в Forth были добавлены средства объектно-ориентированного программирования. Си для этого пришлось переделать в совершенно другой язык.

Не менее важна простота Forth. Размер модуля, занимающегося непосредственным исполнением программы, — это считанные байты машинного кода. Набор низкоуровневых слов, которые необходимы для компиляции прочих стандартных слов, написанных уже на самом Forth, — ещё несколько сотен или тысяч байтов.

Приличная скорость, компактность и мощь сразу же сделали Forth привлекательным средством разработки встроенных систем. Собственно говоря, именно с них и начинал создатель этого языка Чарльз Мур: в 1971 году он разработал на базе Forth систему управления радиотелескопом.

Так выглядела бы посадка Philae на комету, если бы всё пошло по плануТак выглядела бы посадка Philae на комету, если бы всё пошло по плану

Железный гигант История RTX2010 восходит к 1983 году и тоже связана с Чарльзом Муром, а точнее — с компанией Novix, которую он основал. Миссией компании была разработка стекового микропроцессора, способного исполнять код на Forth непосредственно, без промежуточного байт-кода и неизбежных накладных расходов.

Первый процессор Novix появился в июне 1985 года и получил обозначение NC4016. Он работал с тактовой частотой до 7,5 МГц и показывал скорость до 10 миллионов операций в секунду — впечатляющий результат для того времени. Все операции NC4016 исполнялись за один такт.

Процессор Novix NC4016CПроцессор Novix NC4016C

Процессор тут же привлёк внимание и американского, и советского ВПК. Советский процессор Дофин—1610, выпущенный в 1990 году, воспроизводил функциональность NC4016, но реализовывал её по-своему. После распада СССР работа над проектом продолжилась в Беларуси и привела к появлению ещё двух стековых процессоров: Дофин—1620 и Дофин—1630.

Американскую оборонку представляла корпорация Harris, лицензировавшая разработки Novix ещё в 1985 году. Вскоре она пустила в производство серию радиационно-защищённых процессоров RTX, расширяющих стековую архитектуру NC4016. Одна из последних моделей RTX, RTX2010, и отправилась к комете Чурюмова-Герасименко.

Процессор привлёк внимание конструкторов Philae своим низким энергопотреблением. Дело в том, что энергоснабжение — это слабое место зонда. Химических источников питания хватает всего на несколько суток, а затем ему остаётся надеяться только на солнечные батареи. Это, как показала практика, рискованное занятие — зонд угодил в тень и отключился из-за нехватки энергии на третий день работы. Если бы использовался более прожорливый процессор, то Philae посадил бы батарею ещё быстрее.

Другая причина связана с тем, что RTX2010 — это не особенно рискованный выбор. Его эффективность и работоспособность уже доказана. До Philae процессор применяли в нескольких межпланетных зондах и околоземных спутниках, в том числе в зонде MESSENGER, который уже два года изучает Меркурий, аппарате Cassini-Huygens, больше десяти лет собирающем научные данные на орбите Сатурна, и зонде NEAR Shoemaker, в 2001 году успешно высадившемся на астероид.

Пока на Земле развитие вычислительной техники идёт по одной траектории, в миллионах километров от нас неспешно продолжает своё существование другая, альтернативная ветвь компьютерных технологий — совершенно непохожая на всё то, что нам знакомо и привычно. В этом мире двадцать лет — не срок, а наша погоня за гигабайтами и гигагерцами кажется смешной и нелепой. Присматриваясь к этому миру, трудно не задаваться вопросом: уж не лучше ли он? Возможно, не лучше, но уж как минимум — интересней.

Полный текст статьи читайте на Ferra.ru