Diit.cz - Novinky a informace o hardware, software a internetu

Inovace AGC verze Block II, chyby 1201 a 1202

Apollo 11, otisk boty
Z pohledu lidské historie tomu bylo před malým okamžikem právě 40 let od momentu, kdy testovací pilot a astronaut Neil Alden Armstrong jako první příslušník lidského rodu vstoupil na povrch cizího kosmického tělesa, (ne)odvěkého souputníka planety Země, Měsíc. Byl to malý krůček pro člověka, ale obrovský skok pro lidstvo a toto je náš skromný pokus vzdát hold všem vědcům, inženýrům, technikům, politikům i dalším lidem, kteří psali dějiny ve snaze dostát výzvě presidenta Kennedyho a splnit si nejúžasnější dobrodružství, jaké může člověk podstoupit…

Block II

Krátce se zmiňme i o tom, co jsme dosud nazývali „novější verzí AGC“, tedy variantě Block II. Ta byla navržena v roce 1966 a zachovávala základní prvky původní Block I architektury. K nim přidávala zvětšenou mazací paměť z 1 na 2 kibislova. Pevná paměť byla rozšířena z 24 na 36 kibislov, instrukce rozšířeny z 11 na 34 a namísto původních I/O registrů byly implementovány elegantnější I/O kanály. Block I byl nasazen v prvotních misích jako Apollo 4 a 6 (bez lidské posádky), na Měsíc se podívala již varianta Block II.

Rozhodnutí rozšířit paměť a instrukční sadu pro Block II, ale zachovat restriktivní 3bitový operační kód a 12bitové adresování přineslo některé zajímavé důsledky z hlediska designu. Pro volání dodatečných funkcí se například používala finta se speciálními adresami paměti, které, když byly odkazovány, implementovaly danou funkci. Například INDEX na adresu 23 spouštěl RESUME instrukci pro návrat z přerušení. Podobně INDEX 17 prováděl instrukci INHINT (inhibit interrupts - zabránění přerušení), zatímco INDEX 16 je znovu spouštěl (RELINT - re-enable interrupts).

Jiné instrukce byly implementovány tak, že jim předcházela speciální varianta INDEXu zvaná EXTEND, která aritmeticky modifikovala 3bitový operační kód přidáním bitu přetečení, který instrukci rozšiřoval. Adresní prostory byly rozšířeny zapojením Bank (fixní) a Ebank (mazatelný) registrů, pouze paměť jednoho typu, který byl adresován v daném čase, byla skutečně použitou bankou (plus malá část fixní-fixní a mazatelné paměti). Z důvodu rozšíření bankového registru na 36kibislov byla implementována již zmíněná část Sbank (super-bank), která zpřístupňovala 4 horní kibislova nad původní architekturou adresovatelnými 32. Všechna subrutinní volání nad bankami musela být inicializována z fixní-fixní paměti speciálními funkcemi.

A zajímavost na závěr: Block II AGC má tajemné a velmi slabě dokumentované přerušení EDRUPT, které snad má znamenat Edův Interrupt a odkazovat na Eda Smallyho, programátora, který si toto rozšíření vyžádal.

PGNCS problém

Vraťme se krátce k chybovým hláškám při přistání Apolla 11, 1201 a 1202. Za ty zodpovídal Primary Guidance, Navigation and Control System alias PGNCS. První alarm 1201 značil "executive owerflow - no vacant areas", 1202 pak "executive overflow - no core sets". V obou případech šlo o chyby vyvolané falešnými údaji z přibližovacího radaru, který byl během sestupu zanechán svému osudu. Jakmile samostatný přistávací radar zachytil povrch měsíce, AGC začal zpracovávat i data z přibližovacího radaru, došlo k několika těmto přetečením, protože do systému prostě proudilo více údajů, než byl schopen v reálném čase zpracovávat. Přetečení automaticky přerušovala běh aktuální úlohy, ale i tak dostával AGC stále příliš mnoho dat z obou radarů.

Naštěstí pro Apollo 11 spouštěl software v AGC ochrannou rutinu a zbavoval se úloh s nízkou prioritou. Kriticky důležité naváděcí úlohy tak běžely dále, úroveň přetížení počítače totiž nebyla závratná. Posádka, jak již zaznělo, dostala instrukce tyto chyby ignorovat, což se projevilo jako správné rozhodnutí, ale v náporu několika málo vteřin se museli operátoři Bílého týmu rozhodovat pod velkým tlakem.

Problém nebyl přitom způsoben ani programovou chybou v AGC, ani astronauty. Byla to procedurální a simulační chyba. V simulátoru byli astronauti cvičení přepnout přibližovací radar (zajišťující spojení Eagla s Columbií) na automatiku. Nicméně v simulátoru nebylo žádné propojení AGC s běžícím radarem (na Zemi při testech logicky žádný přistávací radar neběžel, pouze se AGC předávaly simulované hodnoty), takže během testů na Zemi nebylo možné toto zjistit ani simulovat.

David "David Ježek" Ježek

Bývalý zdejší redaktor (2005-2017), nyní diskusní rejpal.

více článků, blogů a informací o autorovi

Diskuse ke článku Lidská noha vkročila na měsíc před 40 lety

Pátek, 7 Srpen 2009 - 23:29 | Anonym | paulie z malého města no tym teoriam vseliakym sa...
Čtvrtek, 30 Červenec 2009 - 09:16 | Anonym | Jen taková poznámka/osobní zkušenost, jednou jsem...
Středa, 29 Červenec 2009 - 11:43 | Anonym | pepst co sa urazas ved je to len diskusia nic...
Středa, 29 Červenec 2009 - 10:41 | pepst | Urobil som chybu, že som sa do tejto diskusie...
Úterý, 28 Červenec 2009 - 21:54 | Anonym | pepst tak nemal zabrdat do tej temy nemoze z...
Úterý, 28 Červenec 2009 - 09:04 | pepst | Porovnávať .týždeň a Blesk je extrémne, ale fakt...
Pondělí, 27 Červenec 2009 - 22:19 | Anonym | pepst ty vole ako ze fajn clanok ale to snad...
Pondělí, 27 Červenec 2009 - 15:02 | pepst | Také množstvo bláznov som v diskusii na cdr.cz...
Pondělí, 27 Červenec 2009 - 14:57 | Anonym | Uhodili jste hrebicek na hlavicku panove, lidsto...
Pondělí, 27 Červenec 2009 - 14:07 | Anonym | Tomcat2: Za 40 let je to docela málo, uvážime-li...

Zobrazit diskusi