Knigi-for.me

Коллектив Авторов - Цифровой журнал «Компьютерра» № 166

Тут можно читать бесплатно Коллектив Авторов - Цифровой журнал «Компьютерра» № 166. Жанр: Прочая околокомпьтерная литература издательство неизвестно, год неизвестен. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте knigi-for.me (knigi for me) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.

Как определить, что именно произошло? Осмотреть сломанную машину нельзя, и с измерительными инструментами в неё не залезешь. Программу, которая на нём идёт, не запихнёшь в отладчик, чтобы узнать, в какой момент она отказывается продолжать работу. И даже когда такая возможность есть, экспериментировать с компьютером, который находится на другой планете, — слишком большой риск. В космосе нет команды «Отменить».

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


К рабочей станции Sun в кабинете Делимана была подключена одна из копий бортового компьютера Spirit и Opportunity. Внешне она напоминала потрёпанный чемоданчик, но в действительности стоила дороже любого другого оборудования, находившегося поблизости. Цена одного лишь процессора, использованного в Spirit, составляет 200-300 тысяч долларов. При этом его не назовёшь мощным. Он отставал от уровня 2004 года лет на пятнадцать, если не больше.

В марсоходах стоял 20-мегагерцевый процессор BAE RAD6000, имеющий архитектуру Power PC и напоминающий процессор рабочей станции IBM серии RS/6000, выпускавшейся в начале девяностых. Объём оперативной памяти Spirit и Opportunity составлял по 128 мегабайтов, а в качестве накопителя использовались 256 мегабайтов флэша. Кроме того, имелось трёхмегабайтное ПЗУ.

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

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

Злоключения Galileo на пути к ЮпитеруНесмотря на многочисленные поломки, аппарат добрался до Юпитера и сделал большую часть запланированной работы. А всё потому, что инженеры NASA сумели найти программное решение аппаратных проблем, которые казались непреодолимыми.


Дело в том, что между космическим аппаратом и очередным айфоном такая же разница, как между черепахой и бабочкой-однодневкой. Разработка межпланетного зонда продолжается не один год — и это мягко сказано. К примеру, Galileo, летавший к Юпитеру в конце девяностых, был задуман в середине шестидесятых. Работа над его бортовым компьютером началась в 1976 году — во времена, когда для записи тактовой частоты или объёма ОЗУ персональных компьютеров хватало одной цифры.

Планировалось, что Galileo стартует в 1982 году, но то по одной, то по другой причине его откладывались до 1989 года. Зонду потребовалось шесть лет для того, чтобы приблизиться к цели, а затем он ещё восемь лет передавал данные с Юпитера. На Земле менялись поколения электроники, а бортовой компьютер Galileo оставался неизменным и продолжал работу.

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

Смешно жаловаться на RAD6000 (который, кстати, до сих пор работает на Марсе, хотя прошло десять лет), когда специалистам из NASA до сих пор приходится поддерживать связь с «Вояджерами», запущенными в 1977 году, а спроектированными и того раньше. RAD6000 хотя бы имеет какие-то современные аналоги — скажем, процессор игровой приставки XBox 360. О бортовых компьютерах «Вояджеров» такого не скажешь.

Это гости из забытого времени, столкновение с которыми должно вызывать у современных программистов трепет. На каждом из них стоит по паре крайне маломощных компьютеров трёх совершенно разных типов и назначений, в которых сам чёрт ногу сломит: четыре восемнадцатиразрядных и два шестнадцатиразрядных процессора с тактовой частотой 250 килогерц, причём два из них имеют доступ лишь к ПЗУ объёмом 4096 восемнадцатиразрядных слов, ещё два — к двум банкам ОЗУ ёмкостью 8196 шестнадцатиразрядных слов, а остальные — к двум банкам ОЗУ ёмкостью 4096 восемнадцатиразрядных слов (в сумме набирается около 64 килобайтов).

И этот динозавр не просто продолжает работать уже без малого сорок лет — его по-прежнему приходится программировать, отлаживать и чинить. Это значит, что где-то в закромах американского аэрокосмического агентства содержится небольшой компьютерный парк Юрского периода: работоспособная копия бортовой вычислительной машины «Вояджеров». И кому-то приходится за ним ухаживать, помня и используя методы полувековой давности, на фоне которых все современные ограничения, которые налагают в NASA на программистов, кажутся нелепым баловством.


Один из компьютеров Voyager

Удалённый ремонт понадобился одному из аппаратов относительно недавно: в 2010 году нарушилась связь c Voyager 2. Вместо телеметрии зонд передал с окраины Солнечной системы нечитаемый поток цифрового мусора. Инженеры три недели определяли причину: оказалось, что одна из ячеек памяти вышла из строя и поменяла своё значение на противоположное. Программное обеспечение Voyager 2 пропатчили, чтобы он обходил испорченную область памяти стороной.

И причина неисправности Voyager 2, и способ её исправления некомфортабельно близка к железу. Современные программисты почти никогда не опускаются до уровня отдельных ячеек, регистров и портов. Обычно работа происходит на много уровней абстракции выше, и ошибки почти никогда не имеют отношения к тому, что происходит в реальном мире. В космосе же (да и вообще во встраиваемых применениях) реальный мир трудно игнорировать.

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

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

В Spirit и Opportunity имеется плата, которая перезапускает бортовой компьютер, когда он подвисает. Пока компьютер работает исправно, специальный процесс следит, чтобы перезапуска не произошло. Когда он замолкает, плата понимает, что произошёл сбой, и выполняет сброс.

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

Сброс происходил снова и снова. Именно поэтому из Spirit никак не удавалось вытянуть телеметрию или перевести его в спящий режим. После шестидесяти перезагрузок батарея истощилась настолько, что марсоход перешёл в режим сохранения энергии, при котором не требовалась полная реинициализация файловой системы. Это его и спасло. Решение проблемы оказалось совсем простым: лишние файлы удалили, а чтобы история не повторилась, конфигурацию некоторых модулей слегка изменили.

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


Коллектив Авторов читать все книги автора по порядку

Коллектив Авторов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-for.me.