На днях президент США Барак Обама закрыл новую лунную программу США.
Если при жизни вы мечтали прыгнуть на лунную поверхность или поехать в отпуск на лунную базу, то вам следует отложить свои планы, с грустью пересмотреть сериал «Футурама» о лунном парке и продолжить мечтать о яблонях на Марсе.
Но я хочу немного написать об этом.
Я хочу вспомнить первую попытку человека высадиться на Луну и компьютерные технологии, которые сделали это возможным.
Многие наверняка помнят, что американская лунная программа называлась «Аполлон», а некоторые, возможно, даже видели фильм «Аполлон-13» с Томом Хэнксом в главной роли о драматической судьбе тринадцатой миссии программы «Аполлон».
В фильме есть сцена, где астронавты перепрограммируют бортовой компьютер, вводя набор цифр на клавиатуре, похожей на большой калькулятор.
Это компьютер, о котором я хочу поговорить.
(Компьютер управления «Аполлон» с клавиатурно-дисплейным модулем.
Источник .
) AGC — Apollo Guidance Computer был первым цифровым бортовым компьютером, построенным на интегральных схемах.
Он устанавливался на борту командного и лунного модулей и отвечал за навигацию и управление кораблем.
AGC стал первым компьютером, в котором можно увидеть прототип современных встроенных систем.
Компьютер был разработан в начале шестидесятых годов в Массачусетском технологическом институте.
В компьютере использовались интегральные схемы компании Fairchild Semiconductor, создателя первых коммерческих интегральных схем.
Основой компьютера были логические блоки ИЛИ, построенные на резисторно-транзисторной логике (как рассказал нам преподаватель схемотехники, схемы RTL грелись хуже, чем современные компьютеры).
Существовали две версии AGC — ранняя BLOCK I и более поздняя BLOCK II. Первая версия имела 4100 интегральных схем, вторая — 5600. Процессор оперировал 16-битными словами, из которых 14 бит использовались для данных, один бит — для знака и один — для флага переполнения.
Объем ОЗУ составлял 2048 слов, а объем ПЗУ – 36 килослов (72 килобайта для облегчения понимания).
ПЗУ было основано на тех же принципах, которые использовались в ОЗУ на ферритовые матрицы , однако ферритовые сердечники в нем использовались лишь как трансформаторы; он не менял своего магнитного состояния, а лишь совмещал линию чтения с "битовой" линией возбуждения - если сердечник был подключен к "битовой" линии, то на выходе имелся сигнал, интерпретируемый как логическая единица, если ее не было соединения, был получен логический ноль.
(Увеличенный участок ферритовой матрицы.
Источник .
Компьютер имел четыре основных регистра: Аккумулятор; Z: счетчик команд; Вопрос: сохраняется остаток деления, а также обратный адрес при передаче управления; LP: сохраняется младшая часть результата инструкции умножения.
Он также имел ряд вспомогательных регистров для управления банками памяти, адресации и ввода-вывода.
Набор команд состоял из 12 инструкций — арифметических инструкций, инструкций управления, доступа к памяти и логического поразрядного И.
Естественно, все расчеты проводились с числами с фиксированной точкой.
Линий прерываний было пять — одна для обновления экрана, одна для ответа на нажатие кнопок на клавиатуре, одна для часов реального времени, линия прерывания для завершения загрузки слова из памяти и прерывание, сигнализирующее об аппаратном сбое.
АРУ также имело 20 независимых ячеек памяти, которые могли работать в трёх режимах в зависимости от сигналов на их входах — возрастающего счётчика, убывающего счётчика и сдвигового регистра.
Переполнение счетчика могло вызвать прерывание — в частности, так было устроено обновление дисплея и часов.
Они срабатывали при переполнении счетчиков, управляемых аппаратными часами в сто герц.
АРУ работало на частоте 2,048 МГц — такой обычный микроконтроллер по нынешним меркам.
И эта штука направила на Луну корабль с тремя астронавтами на борту и посадила лунный модуль.
Также компьютер имел режим пониженного энергопотребления (при полной нагрузке он потреблял 70 Вт).
В этом режиме компьютер фактически был выключен, потреблял 5-10 Вт и просыпался каждые 1,2 секунды.
Этот режим предполагалось использовать на средних участках полета, когда нет необходимости в частом уточнении и корректировке курса, но он так и не был использован.
(Начало списка программы Лунного модуля для миссии Аполлон-13. Источник .
) Когда была создана AGC, такого программного обеспечения или методов программирования не существовало.
Программное обеспечение было написано на ассемблере.
На борту находилась небольшая операционная система реального времени с кооперативной многозадачностью, способная выполнять «одновременно» до восьми задач (работ).
В ОС также был компонент «Список ожидания», который мог выполнять небольшие задачи с помощью таймера по расписанию.
Эти задачи также могут добавляться в расписание и запускать и останавливать задания.
(Все это мне напомнило активные задачи Symbian с их планировщиком, активными объектами и его вариациями - таймерами).
Все задачи (работы) имели свой приоритет, одна из задач, имевшая наименьший приоритет, называлась фиктивной работой и была аналогом современной «Неактивности системы» :) — эта задача выполняла диагностические проверки, а также отключала индикатор активности.
на панели компьютера.
Если этот индикатор погас, это означало, что компьютеру делать нечего :) Также в MIT была разработана виртуальная машина для AGC, которая позволяла запускать программы, написанные на языке более высокого уровня.
Этот язык содержал набор команд, позволяющих производить вычисления с более высокой точностью, а также содержал более продвинутые инструкции — вплоть до операций над матрицами и векторами.
Он использовался для программирования навигационных вычислений, но, как и любая виртуальная машина, работал заметно медленнее и потреблял больше памяти, хотя имел то преимущество, что позволял смешивать высокоуровневый и собственный код в одном коде.
Чтобы облегчить жизнь программистам, была создана система контроля версий YUL.
(Панель управления АРУ в командном модуле.
Источник .
) Также существовало подобие оболочки — космонавт мог запускать задания, отображать значения различных ячеек памяти в восьмеричной и десятичной системах, а также управлять задачами, периодически выводить на дисплей те или иные значения.
Давайте подробнее рассмотрим систему отображения и ввода.
Управление АРУ и удобство использования — вещи несколько несовместимые.
Все управление осуществлялось с помощью цифровой клавиатуры по типу калькулятора.
Космонавт мог указать действие (глагол) и то, над чем должно быть выполнено действие (существительное).
Для отображения числовых значений имелось три пятизначных индикатора.
Три были выбраны неслучайно — они часто отображали вектор положения корабля, его скорость и т. д. Командный модуль имел два клавиатурно-дисплейных модуля, а лунный — только один.
(Памятка со списком «глаголов» и «существительных» на панели командного модуля.
Источник .
) АРУ с честью выполнила возложенные на нее задачи и даже использовалась на начальном этапе разработки электродистанционной системы управления шаттлом (АРУ была установлена на экспериментальном F8 для демонстрации возможности использования СДСУ).
Не обошлось и без ошибок - при первой высадке на Луну сработало два сигнала о нехватке памяти и вычислительных ресурсов - как выяснилось позже, программа "Лунный модуль" продолжала обрабатывать данные радара сближения с командным модулем, для чего потребовалось 14% вычислительных ресурсов, а для запуска программы потребовалось 90% ресурсов.
По совету с земли астронавты проигнорировали эти сигналы и осуществили успешную посадку на Луну.
Позже эта программная ошибка была исправлена.
AGC, а точнее LGC — Lunar Guidance Computer можно смело назвать первым компьютером на Луне и, дай Бог, не последним.
Если вам интересна эта тема, советую посетить этот ресурс (англ.
) — имеется много материалов по вычислительным системам Apollo и Gemini, включая руководства по ассемблеру и листинги программ.
Или просто поговорим об AGC/LGC Apollo. Кстати, один сумасшедший построил в 2004 году свой аналог АРУ :) Теги: #Луна #ИТ-история #Аполлон #AGC #НАСА высадка на Луну
-
Ubuntu+Aptana=… Установка Aptana В Картинках
19 Oct, 24 -
Лемма Ито
19 Oct, 24 -
Эволюция Сети В Сторону Sdn И Nfv
19 Oct, 24 -
Технические Проблемы С Gmail
19 Oct, 24