Бортовой компьютер "Аполлона"

Sep 19, 2019 00:07

На юбилей полета Аполлона-11, я сходил на замечательное мероприятие в музее Массачусетского технологического института: там был выставлен восстановленный оригинальный бортовой компьютер "Аполлона". Под катом -- описание компьютера, с ссылками на дополнительную матчасть для любопытных, и фотографии/видео с выставки. Картинка для привлечения внимания:




На самом деле, картинка для привлечения внимания слегка лукавая -- на ней запечатлен не сам компьютер Аполлона (далее -- AGC, Apollo Guidance Computer), а так называемый DSKY (DiSplay and KeYboard), или, говоря по-современному, интерфейс пользователя AGC. О DSKY я ещё напишу ниже, а пока вот фото восстановленного комьютера (бежевый ящик справа на фотографии):



Этот конкретный экземпляр использовался для обучения экипажей Аполлонов на Земле. После завершения программы его сдали на свалку по цене лома (!), как и много других ставших ненужными артефактов эпохи. Но, к счастью, этот AGC был выкуплен каким-то энтузиастом, долго лежал у того дома, и, в конце концов, очутился в месте, где его создали, а теперь и восстановили: в Массачусетском технологическом институте (МТИ).

Выглядит неказисто, конечно, но на деле перед вами -- громадная веха, один из первых комьютеров на микросхемах, прадедушка современных компьютеров. Для того времени спользование микросхем было очень смелым и рискованным техническим решением, но иного выхода не было: без применения новейших на тот момент технологий, разработчики и близко не смогли бы уложиться в заданную массу и габариты. В результате, AGC стал тогдашним шедевром минитюаризации: при массе в 32 килограмма и энергопотреблении 55 Вт, он имел аж четыре килобайта ОЗУ и 74 килобайта ПЗУ! А если точнее, 2048 слов ОЗУ и 36864 слов ПЗУ, с длиной каждого слова в 16 бит. Логическая схема компьютера (кликабельно):




Давайте теперь заглянем внутрь этой "коробки" (кликабельно):




Слева лоток "А", в котором находятся модули логики и интерфейса. Связки проводов в левой части лотка это источник питания, который преобразовал 28 вольт от космического корабля в 4 и 14 вольт для использования в AGC. Справа лоток "B", в котором находятся схемы памяти, генератор и сигнализация. В пустом месте должен был быть модуль памяти ядра.

Что за модуль памяти ядра, спросите вы? В это место вставлялось постоянное запоминающее устройство (ПЗУ). Оно была ферритовым, т.е. если совсем по-простому, когда некий провод проходит через магнитный сердечник в форме кольца -- это логическая единица, когда нет -- ноль. Главных преимуществ у этого метода хранения информации было два. Во-первых, имеем высокую для тех времен плотность хранения информации: на AGC через или вокруг каждого кольца проходило 192 провода, т.е. каждое кольцо хранило 12 слов данных. А во-вторых этот метод был сверхнадежен для космических условий, ибо космические лучи имеют весьма неприятное свойство менять состояние случайных битов в определенных типах накопителей информации, и функционерам НАСА хотелось иметь уверенность, что состояние ПЗУ ACG те лучи затронуть не смогут. Стоит отметить, что программное обеспечение замораживалось где-то за десять месяцев до полета.

Вот фотография одного из этих модулей:



И увеличенный вид самих колец с проводами:



Только представьте себе, какой ответственной, и в то же время адовой работой было плетение этих "узоров"! Занимались этим исключительно женщины, в силу лучшей мелкой моторики. Для них у членов лаборатории приборов МТИ была даже аббревиатура LOL, или "Little Old Ladies", т.е. "маленькие пожилые женщины":



Хотя на деле, конечно, отнюдь не все они были пожилыми:



"Плетение" крупным планом:



Интересующиеся могут прочитать пару очень подробных постов на английском об устройстве этого ПЗУ; автор -- один из тех, кто, собственно, и восстанавливал комьютер: Software woven into wire: Core rope and the Apollo Guidance Computer и Inside the Apollo Guidance Computer's core memory. По первой ссылке имеется даже короткое видео "плетения" узоров.

В том же блоге по тэгу Аполлон есть еще несколько интересных постов, включая пост, где они описывают использование восстановленного AGC для...майнинга биткоинов! Впрочем, для майнинга одного-единственного блока старичку понадобилось бы время, которое примерно в миллион раз превышает возраст вселенной, так что разбогатеть таким способом не выйдет.

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



Что интересно, ни самого эмулятора, ни даже его подробного технического описания не сохранилось, так что при реставрации AGC тот пришлось создавать чуть ли не с нуля:



Еще одна фотография "вскрытого" AGC (кликабельно):




Ну и блок питания (пост об оном из вышеупомянутого блога):



Теперь стоит немного описать интерфейс AGC, т.е. DSKY. Вот аутентичный DSKY с выставки:



Команды в него вводились в формате "Verb-Noun" ("глагол-существительное" ).
- Verb: некое действие -- вывести или обновить информацию на дисплее, поменять программу, и т.д.
- Noun: данные над которыми производится действие Verb'a -- скорость, углы, время, и т.д.

Кому интересно, в этой презентации, в числе прочего, подробнее про DSKY и описание нескольких режимов работы оного: The Apollo Guidance Computer Architecture and Operation.

Для примера, ниже на картинке изображен дисплей DSKY при вводе программы 63:



Современные UX-шники, конечно, от такого интерфейса сразу повесились бы. Чего стоит то, что позиция дробного знака может меняться, но на дисплее дробный знак вообще никак не отображается, нужно просто помнить в какой ты программе. Всего тех программ было 45. Verb'ов и noun'ов было 80 и 90 соответственно.

Но астронавты, конечно, помнили всё это -- не зря же они до автоматизма отрабатывали всё на тренажерах. Более того, в одной из миссий (Аполлон-14), астронавты даже ввели в компьютер самый настоящий патч! Контакты кнопки аварийного прерывания посадки на Луну начали замыкаться плавающим там куском припоя, что обнаружилось незадолго до начала посадки. Если контакты снова случайно замкнулись бы во время посадки, то та бы сорвалась -- что, после аварии Аполлона-13, запросто могло привести к отмене всей программы. Инженеры на Земле всего за два часа написали и протестировали патч, который заставил нужную часть программы "думать" что та уже в режиме отмены посадки. Зачитали нужные команды по радисвязи на борт, астронавты вручную ввели их в компьютер лунного модуля (ЛМ), и всё обошлось.

Я, впрочем, нифига не астронавт, триножоров не заканчивал, так что просто от балды понажимал на кнопки на эмуляторе DSKY, который был там на выставке :)



Стол этот пользовался особой любовью посетителей:



Кстати, а многие заметили и опознали кусок фотографии на снимке выше?



Это Маргарет Гамильтон, на снимке она стоит рядом с распечатками текста программы, которую создали она и её команда в МТИ. Именно благодаря её коду Аполлон-11 смог сесть.

Дело было вот в чем. Радар для орбитальной стыковки ЛМ делал около 12800 запросов в секунду при максимально широком режиме сканирования, что составляло около 15% производительности комьютера лунного модуля (LGC). Инженеры специально оставили именно такой резерв для максимального ожидаемого количества подобных запросов. Но тут вмешался закон подлости: LGC и груманновская система аварийного взлета (AGS) были запитаны индивидуальными блоками питания, каждый с переменным током с частотой 800Гц, причём фаза между ними не была синхронизована. Когда радар находился под контролем системы аварийного взлета, и в то же время работал еще и LGC, примерно в 1-2% случаев определенная комбинация фаз источников питания приводила к тому, что количество запросов от радара начинало превышать те самые 15%. По мнению инженеров "Груманна", несмотря на этот недостаток, такого сочетания режимов принципиально не должно было возникнуть, так что на проблему попросту махнули рукой. Отчасти на это решение могла повлиять некоторая вражда между "Груманном" и лабораторией приборов МТИ: в 1964 году груманновцы попытались было "отобрать" у МТИ бортовой компьютер Аполлона, и были отшиты с особым цинизмом.

Так вот. Во время полета Аполлона-10, т.е. генеральной репетиции посадки Аполлона-11, ЛМ снизился до высоты 15 километров, и потом снова начал взлет. Во время взлета система навигации и управления нештатно повела себя из-за неверных настроек автопилота: так, корабль сделал восемь неожиданных и довольно резких разворотов по крену. Помятуя об этом, во время посадки Аполлона-11 Базз Олдрин оставил радар орбитальной стыковки включенным (т.е. под управлением AGS) -- дабы при аварийном прерывании посадки, у него и Нила было бы больше времени на поиск второго корабля и маневрирование. При этом выпала неудачная комбинация фаз источников питания (повторюсь, вероятность в районе 1-2%!), и компьютер попросту перестал справляться с выполнением всех задач, выдав астронавтам те самые широко известные в узких кругах предупреждения 1202 и 1201. Если бы не код команды Маргарет, который в таких случаях заставлял LGC игнорировать все второстепенные задачи, то неизвестно, чем кончилось бы дело. Стоит отметить, что во второстепенные задачи вошло даже отображение данных на DSKY, т.е. тот какое-то время попросту перестал показывать астронавтам расстояние и время до посадки, чем изрядно шокировал Базза :)

И раз уж упомянул посадку, самое время вернуться к восстановленному AGC. Он там, на выставке, был не просто для красоты. Один из членов МТИшной команды посадил с его помощью ЛМ в Orbiter'е: компьютер считывал данные с органов управления и с симулированных в Orbiter датчиков, и выдавал соответствующие команды двигателям и DSKY:



Рядом была лего-модель лунного модуля (да, такая же, как у меня), на которой AGS "зажигал" в реальном времене посадочный двигатель:



Дюзы маневрирования тоже загорались:



Видео "посадки", пардон за небольшую шевеленку:

image Click to view



И еще видео, уже не моё:

image Click to view



Основные члены команды, слева направо: Mike Stewart (сидит спиной к объективу на снимке выше), Carl Claunch, Ken Shirriff, Marc Verdiell:



Кен читает лекцию об AGC перед "полетом":



Вот и всё. Надеюсь, пост понравился. Если что-то неверно, или какие-то снимки у вас неправильно отображаются (например, повернуты набок) -- напишите в комментариях, пожалуйста.

ЗЫ В дополнение к уже упомянутым в посту ссылкам, вот ссылки по которым описан процесс восстановления: часть 1, часть 2.

Ещё могу порекомендовать книгу Left Brains for the Right Stuff, за авторством одного из создателей AGC, Хьюга Блэйр-Смита. Весьма интересный взгляд изнутри на процесс создания компьютера (плюс, есть немного информации про компьютер Шаттла). Я свою купил на этой же выставке, с дарственной подписью автора, но и на Амазоне она тоже имеется.

Ну и наконец, очень подробная книга об AGC за авторством Frank O'Brien: The Apollo Guidance Computer Architecture and Operation.

аполлон, история, космос

Previous post Next post
Up