Из Википедии, бесплатной энциклопедии
  (Перенаправлено с компьютера наведения Apollo )
Перейти к навигации Перейти к поиску

Управляющий компьютер Apollo ( AGC ) - это цифровой компьютер, созданный для программы Apollo, который был установлен на борту каждого командного модуля Apollo (CM) и лунного модуля Apollo (LM). AGC предоставил вычислительные и электронные интерфейсы для наведения, навигации и управления космическим кораблем. [3]

AGC имеет длину слова 16 бит , 15 бит данных и один бит четности . Большая часть программного обеспечения на AGC хранится в специальной постоянной памяти, известной как память сердечника каната , созданная путем переплетения проводов через магнитные сердечники и вокруг них , хотя доступен небольшой объем основной памяти для чтения / записи .

Астронавты общались с AGC с помощью цифрового дисплея и клавиатуры, называемой DSKY (от «дисплей и клавиатура», произносится как «DIS-kee»). AGC и его пользовательский интерфейс DSKY были разработаны в начале 1960-х годов для программы Apollo приборной лабораторией Массачусетского технологического института и впервые полетели в 1966 году. [4] AGC был первым компьютером, основанным на кремниевых интегральных схемах . Производительность компьютера была сопоставима с домашними компьютерами первого поколения конца 1970-х годов, такими как Apple II , TRS-80 и Commodore PET . [5]

Операция [ править ]

Астронавты вручную управляли Project Gemini с помощью джойстиков , но компьютеры управляли большей частью Project Apollo, за исключением кратковременных посадок на Луну. [6] Каждый полет на Луну осуществлялся двумя AGC, по одному в командном модуле и лунном модуле « Аполлон» , за исключением « Аполлона-8», которому не требовался лунный модуль для его полета на лунную орбиту. AGC в командном модуле была центром его системы наведения, навигации и управления (GNC). AGC в лунном модуле запускала свою Apollo PGNCS (первичную систему наведения, навигации и управления) с аббревиатурой, произносимой как pings .

Интерфейс дисплея и клавиатуры (DSKY) управляющего компьютера Apollo, установленного на панели управления командного модуля, с указателем положения руководителя полета (FDAI) выше
Неполный список числовых кодов глаголов и существительных в навигационном компьютере Apollo, напечатанный для быстрой справки на боковой панели

У каждой лунной миссии было два дополнительных компьютера:

  • Ракета - носитель ЦВМ (LVDC) на Сатурн V бустер приборного кольцо
  • система Прервать Руководство (AGS, выраженные AGS ) лунного модуля, который будет использоваться в случае выхода из строя LM PGNCS. AGS можно было использовать для взлета с Луны и для сближения с командным модулем, но не для посадки.

Дизайн [ править ]

Flatpack кремния интегральных схем в ориентировке компьютера Apollo

AGC был разработан в приборной лаборатории Массачусетского технологического института под руководством Чарльза Старка Дрейпера , а проектирование аппаратного обеспечения - под руководством Элдона К. Холла . [2] Ранние архитектурные работы исходили от Дж. Х. Ланинга-младшего , Альберта Хопкинса , Ричарда Баттина , Рамона Алонсо, [7] [8] и Хью Блэр-Смита. [9] Летное оборудование было изготовлено компанией Raytheon , чей Херб Талер [10] также входил в группу архитекторов.

После использования микросхем интегральных схем (IC) в платформе межпланетного мониторинга (IMP) в 1963 году, технология IC была позже принята для AGC. [11] Бортовой компьютер Apollo был первым компьютером, в котором использовались кремниевые микросхемы IC. [12]

В то время как версия Block I использовала 4100 IC, каждая из которых содержала один вентиль NOR с тремя входами , более поздняя версия Block II (используемая в пилотируемых полетах) использовала 2800 IC, каждая из которых имела двойные вентили NOR с тремя входами. [2] : 34 [ необходима цитата ] ИС от Fairchild Semiconductor были реализованы с использованием резисторно-транзисторной логики (RTL) в плоском корпусе . Они были соединены проволочной обмоткой , а затем проводка была залита литым эпоксидным пластиком. [ необходима цитата ]Использование одного типа IC (двойная NOR3) по всему AGC избежать проблем , которые мешали другой ранний компьютерный дизайн IC, то Минитмен II руководства компьютер , в котором используется сочетание диодно-транзисторной логики и диодных логических вентилей. [ необходимая цитата ] Это возможно, потому что вентили ИЛИ-НЕ являются универсальными логическими вентилями, из которых могут быть сделаны любые другие вентили , хотя и за счет использования большего количества вентилей. [13]

Компьютер был 2048 слов стираемой магнитной памяти ядра и 36 kilowords [ разъяснение необходимости ] из только для чтения памяти ядра веревки . [ необходима цитата ] У обоих время цикла составляло 11,72 микросекунды. [ необходима цитата ] Длина слова памяти составляла 16 бит: 15 бит данных и один бит нечетной четности . CPU -Internal 16-битный формат слово было 14 бит данных, один перепускной бит и один знаковый бит ( обратный код представления). [ необходима цитата]

Интерфейс DSKY [ править ]

Блок пользовательского интерфейса компьютера Apollo DSKY
Схема интерфейса LM DSKY

Пользовательский интерфейс к AGC был DSKY , стоя на дисплей и клавиатуру и , как правило , выраженный «DIS-Kee». Он имеет ряд световых индикаторов, числовые дисплеи и клавиатуру в стиле калькулятора . Команды вводились численно, как двузначные числа: Глагол и Существительное . Verb описывает тип действия, которое должно быть выполнено, а Noun указывает, какие данные были затронуты действием, указанным командой Verb.

Каждая цифра отображалась на зеленом высоковольтном электролюминесцентном семисегментном индикаторе ; они управлялись электромеханическими реле , что ограничивало скорость обновления. Три пятизначных числа со знаком также могли отображаться в восьмеричном или десятичном формате и обычно использовались для отображения векторов, таких как ориентация космического корабля или требуемое изменение скорости ( дельта-V ). Хотя данные хранились внутри в метрических единицах , они отображались как обычные единицы измерения США . Этот интерфейс в стиле калькулятора был первым в своем роде.

Командный модуль имеет два DSKY, подключенных к его AGC: один расположен на главной приборной панели, а второй расположен в нижнем отсеке оборудования рядом с секстантом, используемым для выравнивания инерциальной платформы наведения . Лунный модуль имел единственный DSKY для своей AGC. Индикатор положения руководителя полета (FDAI), управляемый AGC, был расположен над DSKY на консоли командира и на LM.

Сроки [ править ]

Эталонная синхронизация АРУ поступала от тактовой частоты кварцевого генератора 2,048 МГц . Тактовая частота была разделена на два, чтобы получить четырехфазную тактовую частоту 1,024 МГц, которую AGC использовала для выполнения внутренних операций. Тактовая частота 1,024 МГц также была разделена на два для получения сигнала 512 кГц, называемого основной частотой ; этот сигнал использовался для синхронизации внешних систем космического корабля «Аполлон».

Далее основная частота была разделена с помощью преобразователя частоты , сначала на пять с использованием кольцевого счетчика для получения сигнала 102,4 кГц. Затем он был разделен на две - 17 последовательных ступеней, называемых F1 (51,2 кГц) - F17 (0,78125 Гц). Каскад F10 (100 Гц) подавался обратно в АРУ для увеличения часов реального времени и других непроизвольных счетчиков с помощью Pinc (обсуждается ниже). Ступень F17 использовалась для периодического запуска АРУ, когда она работала в режиме ожидания.

Центральные регистры [ править ]

У AGC было четыре 16-битных регистра для общего вычислительного использования, которые назывались центральными регистрами :

Также было четыре ячейки в основной памяти, по адресам 20-23, дублированные ячейки редактирования, потому что все, что там хранилось, появлялось сдвинутым или повернутым на одну битовую позицию, за исключением одной, которая сдвигалась вправо на семь битовых позиций, чтобы извлечь одну из семи бит интерпретирующий op. коды, упакованные по два в слово. Это было общим для АРУ блока I и блока II.

Другие регистры [ править ]

Прототипы DSKY и AGC на выставке в Музее истории компьютеров . AGC открывается, показывая его логические модули.
Прототип логического модуля из блока I AGC
Логический модуль Block II с плоскими ИС
Двойной вентиль ИЛИ с 3 входами АРУ
Схема двухканального затвора ИЛИ-ИЛИ с 3 входами АРУ

У AGC были дополнительные регистры, которые использовались внутри во время работы:

Набор инструкций [ править ]

Формат инструкции использовал 3 бита для кода операции и 12 бит для адреса. Блок I имел 11 инструкции: TC, CCS, INDEX, XCH, CS, TS, AD, и MASK(основной), и SU, MPи DV( за дополнительную плату). К первым восьми, называемым базовыми инструкциями , напрямую обращалась 3-битная операция. код. Последние три были обозначены как инструкции экстракода, потому что доступ к ним осуществлялся путем выполнения TCинструкции специального типа (называемой EXTEND) непосредственно перед инструкцией.

Инструкции AGC блока I состояли из следующего:

TC (передача управления)
Безусловный переход по адресу, указанному в инструкции. Адрес возврата автоматически сохранялся в регистре Q, поэтому TCинструкцию можно было использовать для вызовов подпрограмм.
CCS (считать, сравнить и пропустить)
Сложная инструкция условного перехода. Регистр A был загружен данными, полученными с адреса, указанного в инструкции. (Поскольку AGC использует нотацию с дополнением до единиц , существует два представления нуля. Когда все биты установлены в ноль, это называется плюс ноль . Если все биты установлены в единицу, это называется минус нулем .) Уменьшенное абсолютное значение (DABS) данных затем вычислялись и сохранялись в регистре A. Если число было больше нуля, DABS уменьшает значение на 1; если число было отрицательным, оно дополняется перед применением декремента - это абсолютное значение. Уменьшеноозначает «уменьшено, но не ниже нуля». Следовательно, когда AGC выполняет функцию DABS, положительные числа будут стремиться к плюсу, как и отрицательные числа, но сначала выявляют свою отрицательность с помощью четырехстороннего пропуска ниже. Последний шаг CCS- это четырехсторонний пропуск, в зависимости от данных в регистре A перед DABS. Если регистр A был больше 0, CCSсразу после него переходит к первой инструкции CCS. Если регистр A содержит плюс ноль, CCSпереходит ко второй инструкции после CCS. Меньше нуля приводит к переходу к третьей инструкции после CCS, а минус ноль пропускает к четвертой инструкции после CCS. Основная цель подсчета состояла в том, чтобы позволить обычному циклу, управляемому положительным счетчиком, заканчиваться на a CCSи a.TCк началу цикла, что эквивалентно IBM 360 -х BCT. Функция абсолютного значения была сочтена достаточно важной, чтобы быть встроенной в эту инструкцию; при использовании только для этой цели последовательность после символа CCSбыла TC* + 2, TC* + 2, ADONE. Любопытным побочным эффектом было создание и использование CCS-отверстий, когда было известно, что проверяемое значение никогда не было положительным, что происходило чаще, чем можно было предположить. Осталось два целых слова незанятыми, и специальный комитет отвечал за присвоение констант данных этим дырам.
INDEX
Добавьте данные, полученные по адресу, указанному в инструкции, к следующей инструкции. INDEXможет использоваться для добавления или вычитания значения индекса к базовому адресу, указанному операндом следующей инструкции INDEX. Этот метод используется для реализации массивов и поиска в таблицах; поскольку добавление было выполнено для обоих целых слов, оно также использовалось для изменения op. код в следующей инструкции (extracode), а в редких случаях обе функции одновременно.
RESUME
Частный случай INDEX( INDEX25). Это инструкция, используемая для возврата из прерываний. Это приводит к возобновлению выполнения в прерванном месте.
XCH (обмен)
Обменять содержимое памяти на содержимое регистра A. Если указанный адрес памяти находится в фиксированной (только для чтения) памяти, содержимое памяти не изменяется, и эта инструкция просто загружает регистр A. Если он находится в стираемой памяти, «коррекция» переполнения достигается сохранением крайнего левого из 16 бит в A как знаковый бит в памяти, но нет исключительного поведения, подобного поведению TS.
CS (очистить и вычесть)
Загрузить регистр A одним дополнением данных, на которые ссылается указанный адрес памяти.
TS (передать на хранение)
Сохраните регистр A по указанному адресу памяти. TSтакже обнаруживает и корректирует переполнения таким образом, чтобы распространять перенос для сложения / вычитания с высокой точностью. Если результат не имеет переполнения (два крайних левых бита A совпадают), ничего особенного не происходит; если происходит переполнение (эти 2 бита различаются), крайний левый переходит в память как знаковый бит, регистр A изменяется на +1 или -1 соответственно, и управление переходит ко второй инструкции, следующей за TS. Всякий раз, когда переполнение является возможным, но ненормальным событием, TSза TCлогикой отсутствия переполнения следует знак a ; когда это обычная возможность (например, при сложении / вычитании с высокой точностью), TSза CAFсимволом следует ZERO ( CAF=XCHв фиксированную память), чтобы завершить формирование переноса (+1, 0 или -1) в следующее слово с более высокой точностью. Углы сохранялись с одинарной точностью , расстояния и скорости - с двойной точностью , а прошедшее время - с тройной точностью.
AD (Добавлять)
Добавьте содержимое памяти в регистр A и сохраните результат в A. 2 крайних левых бита A могут быть разными (состояние переполнения) до и / или после AD. Тот факт, что переполнение - это состояние, а не событие, допускает ограниченную степень переполнения при добавлении более двух чисел, если ни одна из промежуточных сумм не превышает вдвое большую емкость слова.
MASK
Выполнить побитовое (булево) и оперативной памяти с регистром А и сохранить результат в регистре A.
MP (умножить)
Умножьте содержимое регистра A на данные по указанному адресу памяти и сохраните произведение высокого порядка в регистре A, а произведение низкого порядка в регистре LP. Части продукта согласовываются в знаке.
DV (делить)
Разделите содержимое регистра A на данные по указанному адресу памяти. Сохраните частное в регистре A, а абсолютное значение остатка - в регистре Q. В отличие от современных машин, числа с фиксированной точкой обрабатывались как дроби (условная десятичная точка справа от знакового бита), поэтому вы могли производить мусор, если делитель не было больше дивиденда; от этой ситуации не было никакой защиты. В AGC блока II деление с двойной точностью начиналось с A и L (LP блока II), а правильно подписанный остаток доставлялся в L. Это значительно упростило подпрограмму для деления с двойной точностью.
SU (вычесть)
Вычтите (дополнение до единицы) данные по указанному адресу памяти из содержимого регистра A и сохраните результат в A.

Команды были реализованы в группах по 12 шагов, называемых тактовыми импульсами . Импульсы синхронизации были названы от TP1 до TP12. Каждый набор из 12 синхронизирующих импульсов назывался подпоследовательностью инструкций . Простые инструкции, такие как TC, выполняются в одной подпоследовательности из 12 импульсов. Более сложные инструкции требовали нескольких подпоследовательностей. Инструкция умножения ( MP) использовала 8 подпоследовательностей: первая вызываемая MP0, за которой следовала MP1подпоследовательность, которая повторялась 6 раз, а затем завершалась MP3подпоследовательностью. Это было сокращено до 3 подпоследовательностей в Блоке II.

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

Память [ править ]

Память сердечника AGC (ROM)

Память блока I AGC была организована в банки по 1 киловорд. Самый низкий банк (банк 0) был стираемой памятью (RAM). Все банки выше банка 0 были фиксированной памятью (ROM). Каждая инструкция AGC имела 12-битное адресное поле. Младшие биты (1-10) адресованы памяти внутри каждого банка. Биты 11 и 12 выбирают банк: 00 выбирают стираемый банк памяти; 01 выбрал самый низкий банк (банк 1) фиксированной памяти; 10 выбрали следующий (банк 2); и 11 выбрал регистр банка, который можно использовать для выбора любого банка выше 2. Банки 1 и 2 назывались фиксированной памятью, потому что они всегда были доступны, независимо от содержимого регистра банка. Банки 3 и выше назывались фиксированно-переключаемыми, потому что выбранный банк определялся банковским регистром.

Блок I AGC изначально имел 12 киловордов фиксированной памяти, но позже это было увеличено до 24 киловордов. Блок II имел 36 киловордов фиксированной памяти и 2 киловорда стираемой памяти.

AGC передавал данные в память и из памяти через регистр G в процессе, называемом циклом памяти . Цикл памяти занял 12 тактовых импульсов (11,72 мкс). Цикл начинается с синхронизирующего импульса 1 (TP1), когда АРУ ​​загружает адрес памяти, который должен быть извлечен, в регистр S. Аппаратное обеспечение памяти извлекало слово данных из памяти по адресу, указанному в регистре S. Слова из стираемой памяти заносились в регистр G с помощью тактового импульса 6 (TP6); слова из фиксированной памяти были доступны с помощью синхронизирующего импульса 7. Затем извлеченное слово памяти было доступно в регистре G для доступа к АРУ во время синхронизирующих импульсов с 7 по 10. После синхронизирующего импульса 10 данные в регистре G были записаны обратно в память.

Цикл памяти AGC происходил непрерывно во время работы AGC. Инструкции, которым требуются данные памяти, должны были обращаться к ним во время тактовых импульсов 7-10. Если АРУ изменяет слово памяти в регистре G, измененное слово записывается обратно в память после синхронизирующего импульса 10. Таким образом, слова данных непрерывно циклически переходят из памяти в регистр G, а затем обратно в память.

Младшие 15 бит каждого слова памяти содержат инструкции или данные AGC, при этом каждое слово защищено 16-м битом нечетной четности. Этот бит был установлен в 1 или 0 схемой генератора четности, поэтому подсчет единиц в каждом слове памяти всегда давал нечетное число. Схема проверки четности проверяла бит четности во время каждого цикла памяти; если бит не соответствовал ожидаемому значению, считалось, что слово памяти повреждено, и загорался индикатор на панели сигнализации четности .

Прерывания и непроизвольные счетчики [ править ]

У AGC было пять векторных прерываний :

  • Dsrupt запускался через регулярные промежутки времени для обновления пользовательского дисплея (DSKY).
  • Прерывание было вызвано различными аппаратными сбоями или сигналами тревоги.
  • Keyrupt сигнализирует о нажатии клавиши с клавиатуры пользователя.
  • T3Rrupt генерировался через регулярные промежутки времени аппаратным таймером для обновления часов реального времени AGC .
  • Uprupt генерировался каждый раз, когда в AGC загружалось 16-битное слово данных восходящей линии связи.

AGC реагировал на каждое прерывание, временно приостанавливая текущую программу, выполняя короткую процедуру обслуживания прерывания, а затем возобновляя прерванную программу.

У AGC также было 20 непроизвольных счетчиков . Это были ячейки памяти, которые функционировали как счетчики вверх / вниз или регистры сдвига. Счетчики будут увеличиваться, уменьшаться или сдвигаться в ответ на внутренние входные данные. Приращение ( Pinc ), декремент ( Minc ) или сдвиг ( Shinc ) обрабатывались одной подпоследовательностью микрокоманд, вставленной между любыми двумя обычными инструкциями.

Прерывания могут срабатывать при переполнении счетчиков. Прерывания T3rupt и Dsrupt были созданы, когда их счетчики, управляемые аппаратными часами 100 Гц, переполнились после выполнения многих подпоследовательностей Pinc. Прерывание Uprupt было инициировано после того, как его счетчик, выполняющий подпоследовательность Shinc, сдвинул 16 бит данных восходящей линии связи в AGC.

Режим ожидания [ править ]

У АРУ был режим энергосбережения, управляемый переключателем режима ожидания . В этом режиме отключено питание АРУ, за исключением тактовой частоты 2,048 МГц и масштабатора. Сигнал F17 от скалера включал питание АРУ и АРУ с интервалом 1,28 секунды. В этом режиме АРУ выполняла основные функции, проверяла переключатель разрешения режима ожидания и, если он все еще включен, отключала питание и снова переходила в спящий режим до следующего сигнала F17.

В режиме ожидания большую часть времени АРУ спала; поэтому он не был активен для выполнения инструкции Pinc, необходимой для обновления часов реального времени AGC с интервалами 10 мс. Чтобы компенсировать это, одна из функций, выполняемых AGC каждый раз, когда она просыпается в режиме ожидания, заключалась в обновлении часов реального времени на 1,28 секунды.

Режим ожидания был разработан для снижения мощности на 5–10 Вт (с 70 Вт) во время полета на полпути, когда АРУ ​​не требовалось. Однако на практике AGC оставался включенным на всех этапах миссии, и эта функция никогда не использовалась.

Шины данных [ править ]

AGC имел 16-битную шину чтения и 16-битную шину записи. Данные из центральных регистров (A, Q, Z или LP) или других внутренних регистров могут быть стробированы на шину чтения с помощью управляющего сигнала. Шина чтения подключена к шине записи через неинвертирующий буфер, поэтому любые данные, появляющиеся на шине чтения, также появляются на шине записи. Другие управляющие сигналы могут копировать данные шины записи обратно в регистры.

Передача данных работала следующим образом: чтобы переместить адрес следующей инструкции из регистра B в регистр S, был выдан управляющий сигнал RB (чтение B); это привело к тому, что адрес переместился из регистра B на шину чтения, а затем на шину записи. Управляющий сигнал WS (запись S) переместил адрес с шины записи в регистр S.

На шину чтения можно было одновременно читать несколько регистров. Когда это происходило, данные из каждого регистра включались ИЛИ на шину. Это inclusive- ИЛИ особенность была использована для реализации инструкции маски, которая была логическим и операции. Поскольку АРУ не имели нативную способности делать логический И , но может сделать логическое или через шину и может дополнять данные (инвертировать) через регистр C, теорема Де Морган была использована для реализации эквивалента логических И . Это было достигнуто путем инвертирования обоих операндов, выполнения логического ИЛИ через шину и последующего инвертирования результата.

Программное обеспечение [ править ]

Маргарет Гамильтон стоит рядом со списками программного обеспечения, которое она и ее команда из Массачусетского технологического института создали для проекта Apollo . [14]

Программное обеспечение AGC было написано на языке ассемблера AGC и хранилось в тросовой памяти . Большая часть программного обеспечения находилась в постоянной тросовой памяти и, следовательно, не могла быть изменена во время работы [15], но некоторые ключевые части программного обеспечения хранились в стандартной памяти магнитного сердечника чтения-записи и могли быть перезаписаны астронавтами с использованием интерфейс DSKY, как это было сделано на Apollo 14 .

Принципы проектирования, разработанные для AGC приборной лабораторией Массачусетского технологического института под руководством Чарльза Дрейпера в конце 1960-х годов , стали основополагающими для разработки программного обеспечения - в частности, для проектирования более надежных систем, основанных на асинхронном программном обеспечении , планировании приоритетов , тестировании и вмешательстве человека. возможность принятия решения по петле . [16] Когда были определены требования к конструкции AGC, необходимого программного обеспечения и методов программирования не существовало, поэтому его пришлось разрабатывать с нуля.

Была простая в режиме реального время операционная система разработана Дии Холкомбами Ланинга , [17] , состоящий из Exec , пакетное задание-планирования с использованием кооперативной многозадачностью [18] и в прерывания управляемого общества упреждающего планировщика под названием лист ожидание , который может планировать несколько «задач», управляемых таймером. Задачи представляли собой короткие потоки выполнения, которые могли перепланировать себя для повторного выполнения в списке ожидания или могли запустить более длительную операцию, запустив «задание» с помощью Exec.

У AGC также был сложный программный интерпретатор, разработанный инструментальной лабораторией Массачусетского технологического института , который реализовал виртуальную машину с более сложными и способными псевдо-инструкциями, чем собственная AGC. Эти инструкции упростили навигационные программы. Интерпретируемый код с тригонометрической , скалярной и векторной арифметикой двойной точности (16 и 24 бит), дажеMXVКоманда (матрица × вектор) может быть смешана с собственным кодом AGC. Хотя время выполнения псевдо-инструкций было увеличено (из-за необходимости интерпретировать эти инструкции во время выполнения), интерпретатор предоставил гораздо больше инструкций, чем изначально поддерживается AGC, и требования к памяти были намного ниже, чем в случае добавления этих инструкций в Родной язык AGC, который потребовал дополнительной памяти, встроенной в компьютер (в то время объем памяти был очень дорогим). В среднем для выполнения псевдо-инструкции требовалось около 24 мсек. Ассемблер, названные ЮЛЫ для раннего прототипа Рождества Computer , [19] применяется соответствующие переходы между нативным и интерпретируемым кодом.

Набор управляемых прерываниями подпрограмм пользовательского интерфейса под названием Pinball предоставляет услуги клавиатуры и отображения для заданий и задач, выполняемых на AGC. Был предоставлен богатый набор доступных для пользователя процедур, позволяющих оператору (космонавту) отображать содержимое различных ячеек памяти в восьмеричной или десятичной системе счисления группами по 1, 2 или 3 регистра за раз. Были предусмотрены процедуры мониторинга , чтобы оператор мог инициировать задачу для периодического повторного отображения содержимого определенных участков памяти. Рабочие места можно было инициировать. Подпрограммы Pinball выполняли (очень грубый) эквивалент оболочки UNIX.

Многие из используемых алгоритмов траектории и наведения были основаны на более ранней работе Ричарда Баттина . [17] Первый полет командного модуля контролировался программным пакетом CORONA, разработкой которого руководил Алекс Космала. Программное обеспечение для лунных миссий состояло из COLOSSUS для командного модуля, разработкой которого руководил Фредерик Мартин, и LUMINARY для лунного модуля, возглавляемого Джорджем Черри. Детали этих программ были реализованы командой под руководством Маргарет Гамильтон . [20] Гамильтон очень интересовался тем, как астронавты будут взаимодействовать с программным обеспечением, и предсказал типы ошибок, которые могут произойти из-за человеческой ошибки. [18] [20]В общей сложности на разработку программного обеспечения по проекту ушло 1400 человеко-лет , а максимальная численность персонала составила 350 человек. [17] В 2016 году Гамильтон получила Президентскую медаль свободы за роль в создании программного обеспечения для полета.

Программное обеспечение Apollo Guidance Computer повлияло на конструкцию Skylab , Space Shuttle и первых систем летательного истребителя. [21] [22] В 2003 году Рон Бёрки предпринял попытку восстановить исходный код, который питал AGC, и создать эмулятор VirtualAGC, способный его запускать. [23] [24] Часть большого количества исходного кода, спасенного в результате этих усилий, была загружена бывшим стажером НАСА на GitHub 7 июля 2016 года, что привлекло значительное внимание средств массовой информации. [25] [26]

Блок II [ править ]

Версия блока II AGC была разработана в 1966 году. Она сохранила базовую архитектуру блока I, но увеличила количество стираемой памяти с 1 до 2 киловордов. Фиксированная память была расширена с 24 до 36 киловордов. Инструкции были расширены с 11 до 34, и были реализованы каналы ввода / вывода для замены регистров ввода / вывода в блоке I. Версия блока II - это та, которая действительно полетела на Луну. Блок I использовался во время беспилотных полетов Apollo 4 и 6 и находился на борту злополучного Apollo 1 .

Решение расширить память и набор инструкций для блока II, но сохранить ограничительную трехразрядную операцию блока I. код и 12-битный адрес имели интересные конструктивные последствия. Были использованы различные уловки, чтобы втиснуть дополнительные инструкции, такие как наличие специальных адресов памяти, которые при обращении к ним будут реализовывать определенную функцию. Например, INDEXобращение к адресу 25 запускало RESUMEинструкцию на возврат из прерывания. Точно так же INDEX17 выполнили INHINTинструкцию (запретить прерывания), а INDEX16 повторно разрешили их ( RELINT). Остальные инструкции были реализованы путем добавления им специальной версии TCвызываемогоEXTEND. Адресные пространства были расширены за счет использования регистров Bank (фиксированный) и Ebank (стираемый), поэтому единственной памятью любого типа, которая могла быть адресована в любой момент времени, был текущий банк, плюс небольшой объем фиксированной-фиксированной памяти и стираемая память. Кроме того, регистр банка мог адресовать максимум 32 киловорда, поэтому регистр Сбербанка (супербанк) требовался для доступа к последним 4 киллордам. Все межбанковские вызовы подпрограмм должны быть инициированы из фиксированной фиксированной памяти с помощью специальных функций для восстановления исходного банка во время возврата: по сути, это система дальних указателей .

Блок II AGC также имеет EDRUPTинструкцию (название - сокращение от Ed's Interrupt в честь Эда Смелли , программиста, который запросил ее). Эта инструкция не генерирует прерывание, а выполняет два действия, которые являются общими для обработки прерывания. Первое действие запрещает дальнейшие прерывания (и требует RESUMEинструкции для их повторного разрешения). Во втором действии в ZRUPTрегистр загружается текущее значение программного счетчика (Z). Он использовался только один раз в программном обеспечении Apollo для настройки последовательности завершения цикла DAP в цифровом автопилоте лунного модуля . [27] Считается, что он отвечает за проблемы с эмуляцией программного обеспечения LEM AGC Luminary..

1201 и 1202 программные аварийные сигналы [ править ]

DSKY и Базз Олдрин на лунном модуле " Орел" Аполлона-11, летящем на Луну

PGNCS генерировал непредвиденные предупреждения во время спуска Аполлона 11 на Луну , при этом AGC показывала тревогу 1202 («Исполнительное переполнение - НЕТ ОСНОВНЫХ НАБОРОВ»), [28], а затем тревогу 1201 («Исполнительное переполнение - НЕТ ОБЛАСТЕЙ VAC»). [29] [ необходима цитата ] ) Ответом АРУ на любой сигнал тревоги был мягкий перезапуск. Причиной был быстрый, устойчивый поток ложных циклов перехвата с радара сближения (отслеживание орбитального командного модуля), намеренно оставленных в режиме ожидания во время спуска на случай, если это необходимо для прерывания. [30] [31]

Во время этой части подхода процессор обычно загружен почти на 85%. Дополнительные 6400 перехватов циклов в секунду добавили нагрузки, эквивалентной 13%, оставив достаточно времени для выполнения всех запланированных задач до завершения. Через пять минут после начала спуска Базз Олдрин дал компьютеру команду 1668 , которая предписывала ему периодически вычислять и отображать ДЕЛЬТА (разницу между высотой, измеренной радаром, и вычисленной высотой). [NB 1] The 1668 добавил еще 10% рабочую нагрузку процессора, в результате чего исполнительного переполнения и 1202 сигнализации. Получив "GO" из Хьюстона, Олдрин снова вошел в 1668 год и еще на 1202 год.произошла тревога. Сообщая о втором сигнале тревоги, Олдрин добавил комментарий «Похоже, что он появляется, когда у нас есть 1668 up». Программное обеспечение AGC было разработано с планированием приоритетов и автоматически восстанавливалось, удаляя задачи с более низким приоритетом, включая задачу отображения 1668 , для выполнения своих важнейших задач управления и контроля. Контроллер наведения Стив Бейлс и его группа поддержки, в которую входил Джек Гарман, сделали несколько звонков "GO", и приземление прошло успешно. За свою роль Бейлз получил Президентскую медаль свободы США от имени всей команды центра управления и трех астронавтов Аполлона. [32]

Проблема заключалась не в ошибке программирования АРУ и не в ошибке пилота. Это была ошибка конструкции периферийного оборудования, которая уже была известна и задокументирована инженерами Apollo 5. [33] Однако, поскольку проблема возникла только один раз во время тестирования, они пришли к выводу, что безопаснее летать с существующим оборудованием, которое они уже тестировали, чем летать с новой, но в значительной степени непроверенной радиолокационной системой. В реальном оборудовании положение радара сближения кодировалось с помощью синхросигнала.возбуждается от другого источника переменного тока с частотой 800 Гц, чем тот, который используется компьютером в качестве опорного источника синхронизации. Два источника 800 Гц были синхронизированы по частоте, но не были синхронизированы по фазе, и небольшие случайные изменения фазы создавали впечатление, что антенна быстро "колеблется" в положении, даже если она была полностью неподвижной. Эти фантомные движения вызвали серию быстрых перехватов.

Программное обеспечение и компьютерный дизайн Дж. Холкомба Лэнинга спасли посадочную миссию Аполлона-11. Если бы не конструкция Лэнинга, посадка была бы прервана из-за отсутствия стабильного компьютера наведения. [34] [35]

Приложения за пределами Apollo [ править ]

Испытательный самолет Fly By Wire. AGC DSKY виден в отсеке авионики.

AGC легла в основу экспериментальной системы управления полетом по проводам (FBW) , установленной на F-8 Crusader, чтобы продемонстрировать практичность управляемой компьютером FBW. AGC, использовавшийся на первом этапе программы, был заменен другим устройством на втором этапе, и исследования, проведенные в рамках программы, привели к разработке систем управления полетом для космического корабля "Шаттл" . AGC также привел, хотя и косвенно, к разработке проводных систем для поколения истребителей, которые разрабатывались в то время. [36]

AGC был также использован для ВМС Соединенных Штатов «s Deep погруженности Rescue Vehicle . [37]

См. Также [ править ]

  • Apollo PGNCS - основная система наведения и навигации Apollo
  • Компьютеры AP-101 (производные от IBM S / 360), используемые в космическом корабле "Шаттл"
  • История компьютерной техники

Заметки [ править ]

  1. ^ В частности, глагол 16 указывает AGC печатать существительное (в данном случае 68, DELTAH) примерно два раза в секунду. Если бы Олдрин знал об этом, простой 0668 (вычислить и отобразить DELTAH один раз) добавил бы только приблизительно 5% нагрузки в систему, и сделал бы это только один раз, когда был нажат ENTER.

Ссылки [ править ]

  1. ^ Руководство программиста, блок 2 AGC Assembly Language , получено 27 августа 2018 г.
  2. ^ a b c Холл, Элдон С. (1996), Путешествие на Луну: История управляющего компьютера Аполлона , Рестон, Вирджиния, США: AIAA , стр. 196, ISBN 1-56347-185-X
  3. ^ https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20090016290_2009014409.pdf Обзор оборудования для управления, навигации и управления Apollo
  4. ^ https://history.nasa.gov/computers/Ch2-5.html
  5. ^ "Как полетные компьютеры Аполлона доставили людей на Луну и обратно?" .
  6. ^ Agle, DC (сентябрь 1998). «Полет на гасмобиле» . Воздух и космос . Проверено 15 декабря 2018 .
  7. ^ «Введение Рамона Алонсо» , AGC History Project (архив Калифорнийского технологического института, исходный сайт закрыт) , MIT, 27 июля 2001 г. , получено 30 августа 2009 г.
  8. ^ "Интервью Рамона Алонсо (испанский)" , Рамон Алонсо, el argentino que llevó a la Apollo 11 a la Luna , Diario La Nacion, 7 марта 2010 г.
  9. «Биография Хью Блэра-Смита» , AGC History Project (архив Калифорнийского технологического института, исходный сайт закрыт) , MIT, январь 2002 г. , получено 30 августа 2009 г.
  10. ^ «Введение в Herb Thaler» , AGC History Project (архив Калифорнийского технологического института, исходный сайт закрыт) , MIT, 14 сентября 2001 г. , получено 30 августа 2009 г.
  11. ^ Butrica, Andrew J. (2015). «Глава 3: Роль НАСА в производстве интегральных схем». В Дике, Стивен Дж. (Ред.). Исторические исследования воздействия космического полета на общество (PDF) . НАСА . С. 149–250. ISBN  978-1-62683-027-1.
  12. ^ "Компьютер управления Apollo и первые кремниевые чипы" . Национальный музей авиации и космонавтики . Смитсоновский институт . 14 октября 2015 . Проверено 1 сентября 2019 года .
  13. Peirce, CS (рукопись зима 1880–81), «Булевская алгебра с одной константой», опубликованная в 1933 году в Сборнике статей, т. 4, параграфы 12–20. Перепечатано в 1989 г. в Writings of Charles S. Peirce v. 4, pp. 218–21, Google [1] . См. Робертс, Дон Д. (2009), Экзистенциальные графы Чарльза С. Пирса , стр. 131.
  14. ^ Вайншток, Майя (2016-08-17). «Сцена в Массачусетском технологическом институте: код Аполлона Маргарет Гамильтон» . MIT News . Проверено 17 августа 2016 .
  15. ^ Минделл 2008 , стр. 154, 157.
  16. ^ НАСА Прессрелиз «NASA Почести Apollo Инженер» (3 сентября 2003)
  17. ^ a b c Хоуг, Дэвид (сентябрь 1976 г.). "История бортового наведения, навигации и управления Apollo" (PDF) . Лаборатория Чарльза Старка Дрейпера.
  18. ^ а б Минделл 2008 , стр. 149.
  19. ^ "Введение Хью Блэра-Смита" , AGC История проекта (архив Caltech, оригинальный сайт закрыт) , MIT, 30 ноября 2001 , извлекаться 2010-03-21
  20. ^ a b Харви IV, Гарри Гулд (13 октября 2015 г.). «Ее код получил людей на Луне - и сам изобрел программное обеспечение» . ПРОВОДНОЙ . Проверено 25 ноября 2018 .
  21. ^ NASA Управление Logic Design «О Маргарет Гамильтон» (последняя редакция: 03 февраля 2010 г.)
  22. ^ Автор AJS Rayl «Инженеры и ученые НАСА - превращают мечты в реальность»
  23. ^ Берки, Рон. «VirtualAGC» . iBiblio . Проверено 10 апреля 2021 года .
  24. ^ "Коллекция исходного кода AGC на Github, поддерживается iBiblio" . Архивировано из оригинального 10 апреля 2021 года .
  25. ^ Коллинз, Кейт. «Код, который отправил Америку на Луну, был только что опубликован на GitHub, и это похоже на капсулу времени 1960-х годов» . Кварц . Дата обращения 19 августа 2016 .
  26. ^ Гарри, Крис. «Оригинальный исходный код управляющего компьютера Apollo 11 (AGC) для командного и лунного модулей» . GitHub . Архивировано из оригинального 10 апреля 2021 года .
  27. О'Брайен, Фрэнк (25.06.2010). Компьютер управления Apollo: архитектура и работа . Springer Science & Business Media. ISBN 978-1-4419-0877-3.
  28. ^ Коллинз, Майкл; Олдрин, Эдвин (1975), Кортрайт, Эдгар М. (редактор), «Желтый предупреждающий свет» , НАСА SP-350, Экспедиции Аполлона на Луну , Вашингтон, округ Колумбия: НАСА, стр. Глава 11.4, ISBN 978-0486471754, получено 30.08.2009
  29. ^ "Крислгарри / Аполлон-11" . GitHub . Проверено 17 июля 2016 .
  30. Адлер, Питер (1998), Джонс, Эрик М. (редактор), «Сигнализация программы Apollo 11» , Apollo 11 Lunar Surface Journal , НАСА , получено 1 сентября 2009 г.
  31. ^ Мартин, Фред Х. (июль 1994), Джонс, Эрик М. (редактор), «Аполлон 11: 25 лет спустя» , Apollo 11 Lunar Surface Journal , НАСА , извлечено 01 сентября 2009 г.
  32. ^ Кортрайт, Эдгар М., изд. (1975), "Компьютер лунного модуля" , Apollo 11 Lunar Surface Journal , НАСА , извлечено 04 февраля 2010 г.
  33. ^ Эйлс, Дон (6 февраля 2004 г.), "Tales from the Lunar Module Guidance Computer" , 27-я ежегодная конференция по управлению и управлению , Брекенридж, Колорадо: Американское астронавтическое общество
  34. Сказки с компьютера наведения лунного модуля
  35. Витт, Стивен (24 июня 2019 г.). «Аполлон-11: Миссия вышла из-под контроля» . Проводной . Сан-Франциско: публикации Condé Nast . Проверено 18 сентября 2019 года .
  36. ^ Tomayko, Джеймс Е. (2000), "NASA SP-2000-4224 - Компьютеры Take Flight: История НАСА Новаторская Digital Fly-By-Wire Project" (PDF) , НАСА История серии , Вашингтон, округ Колумбия: NASA , получено 01.09.2009
  37. ^ Крейвен, Джон Пина (2002). Тихая война: холодная война, битва под морем . Нью-Йорк: Саймон и Шустер. п. 120 . ISBN 0-684-87213-7.

Источники [ править ]

  • Минделл, Дэвид А. (2008). Цифровой Аполлон: человек и машина в космическом полете . Кембридж, Массачусетс: MIT Press. ISBN 978-0-262-26668-0.

Внешние ссылки [ править ]

Документация по AGC и ее развитию
  • Памятка AGC4 № 9, Инструкции блока II - Печально известная памятка, которая фактически служила официальной документацией набора инструкций.
  • Компьютеры в космическом полете: опыт НАСА - Джеймс Томайко (Глава 2, Часть 5, Компьютер управления Apollo: Аппаратное обеспечение )
  • Компьютеры взлетают - Джеймс Томайко
  • Навигационный компьютер Apollo - вид для пользователей ( PDF ) - Дэвид Скотт, астронавт миссии Apollo
  • Обработка входных данных сборки контроллера ориентации лунного модуля ( PDF ) - Хосе Портильо Луго, History of Technology
  • Проект MIT AGC - с обширным архивом документов
    • Список исходного кода программного обеспечения Luminary для компьютера наведения лунного модуля. (nb. 622 Мб)
    • Список исходного кода программного обеспечения Colossus для управляющего компьютера командного модуля. (nb. 83 Мб)
  • AGC Block I и Dsky Национального музея авиации и космонавтики
  • Аннотации к путешествию Элдона Холла на Луну - системный программист AGC обсуждает некоторые неясные детали разработки AGC, включая особенности прерывания Эда.
Документация по конструкции оборудования AGC и, в частности, по использованию новых интегральных схем вместо транзисторов.
  • Интегральные схемы AGC
  • Интегральные схемы в управляющем компьютере Apollo
Документация по работе программного обеспечения AGC
  • Delco Electronics, Apollo 15 - Руководство по программному обеспечению CSM и LEM AGC, используемому в миссии Apollo 15, включая подробные процедуры пользовательского интерфейса, объяснение многих основных алгоритмов и ограниченную информацию об оборудовании. Обратите внимание, что в этом документе более 500 страниц и размер более 150 мегабайт.
  • Стенгель Р. Ручное управление ориентацией лунного модуля // Космические аппараты и ракеты. 7, № 8, август 1970 г., стр. 941–948.
  • Исходный код для кода командного модуля (Comanche054) и кода лунного модуля (Luminary099) в виде текста.
  • Полный исходный код GitHub Исходный исходный код управляющего компьютера Apollo 11 (AGC) для командного и лунного модулей.
Некоторые проекты и симуляторы на базе AGC
  • Реплика AGC - успешный проект Джона Пулторака по созданию аппаратной копии AGC Block I в его подвале. Зеркало сайта: AGC Replica .
  • Виртуальная домашняя страница AGC - симулятор AGC Рональда Берки, а также восстановление исходного и двоичного кода для ПО Colossus (CSM) и Luminary (LEM).
  • Moonjs - веб-симулятор AGC, основанный на Virtual AGC.
  • Eagle Lander 3D Условно-бесплатная Lunar Lander Simulator с работающими AGC и DSKY (только для Windows).
  • AGC перезапустили 45 лет спустя

Истории об особенностях

  • Путь к Луне (BBC News)
  • Реставраторы пытаются запустить компьютер наведения лунного модуля (Wall Street Journal)
  • Компьютер для видео Apollo