Wyprawa na Księżyc to jedno z największych osiągnięć ludzkości. Za sukcesem misji Apollo stało wiele czynników, ale jednym z najważniejszych był Apollo Guidance Computer (AGC) – komputer pokładowy, który umożliwił nawigację, kontrolę lotu i lądowanie na Srebrnym Globie. Ten niezwykły komputer, wyprzedzający swoje czasy o dekady i o mocy obliczeniowej porównywalnej z komputerami domowymi z późnych lat 70., takimi jak Apple II 1, odegrał kluczową rolę w historii eksploracji kosmosu i wpłynął na rozwój informatyki.
Rewolucja w miniaturyzacji
AGC był jednym z pierwszych komputerów zbudowanych w oparciu o układy scalone, co pozwoliło na znaczną miniaturyzację i uczyniło go pomostem między komputerami opartymi na lampach próżniowych a nowoczesnymi maszynami 2. Ważył zaledwie 32 kg i był na tyle kompaktowy, że zmieścił się na pokładzie statku kosmicznego. To rewolucyjne osiągnięcie w tamtych czasach, biorąc pod uwagę, że ówczesne komputery zajmowały całe pomieszczenia3.
Początkowo, AGC (w wersji Block I) zbudowany był z 4700 pojedynczych układów NOR z trzema wejściami. NASA naciskała jednak na producentów, aby ulepszyli technologię układów scalonych i zwiększyli ich niezawodność. Doprowadziło to do powstania pierwszych płaskich układów scalonych. Wersja Block II AGC wykorzystywała te płaskie układy, które zawierały dwa 3-wejściowe bramki NOR5. Przejście na płaskie układy scalone miało ogromny wpływ na miniaturyzację i niezawodność AGC, przyczyniając się do sukcesu misji Apollo.
Serce misji Apollo
AGC był głównym komputerem pokładowym misji Apollo, zainstalowanym zarówno w module dowodzenia (CM), jak i module księżycowym (LM)3. Pełnił on funkcję „mózgu” systemu naprowadzania, nawigacji i kontroli statku kosmicznego2. Warto zauważyć, że misje Apollo były pierwszymi, w których komputer odgrywał tak kluczową rolę. Wcześniejszy program Gemini polegał na ręcznym sterowaniu statkiem kosmicznym za pomocą drążków sterowych6. AGC umożliwił automatyzację wielu zadań, zwiększając precyzję i bezpieczeństwo misji.
Oprócz AGC, moduł księżycowy posiadał również zapasowy system komputerowy o nazwie Abort Guidance System (AGS)7. AGS był prostszym systemem, który w przypadku awarii AGC mógł przejąć kontrolę nad modułem księżycowym i umożliwić bezpieczny powrót na Ziemię.
Zadania AGC obejmowały:
- Nawigację: Obliczanie trajektorii lotu, pozycji statku kosmicznego i niezbędnych manewrów korekcyjnych.
- Kontrolę lotu: Sterowanie silnikami, stabilizację statku i utrzymywanie właściwej orientacji.
- Lądowanie na Księżycu: Prowadzenie modułu księżycowego podczas lądowania, monitorowanie parametrów lotu i zapewnienie bezpiecznego lądowania.
Współpraca człowieka z maszyną
AGC nie tylko asystował astronautom, ale aktywnie uczestniczył w misji. Jego niezawodność i precyzja obliczeń były kluczowe dla powodzenia misji3. Astronauci ufali mu tak samo jak sobie nawzajem, tworząc partnerski duet, w którym ludzka intuicja i osąd wspierały się na zaawansowanej technologii.
DSKY: Interfejs użytkownika
Komunikacja astronautów z AGC odbywała się za pomocą DSKY (skrót od „display and keyboard”)4. Był to prosty interfejs użytkownika, składający się z wyświetlacza numerycznego i klawiatury6. Choć dziś może wydawać się prymitywny, w tamtych czasach był to nowatorski sposób interakcji z komputerem. DSKY można uznać za jedną z pierwszych form interfejsu wiersza poleceń (CLI)3.
Oprogramowanie: Mistrzowska klasa
Oprogramowanie AGC zostało opracowane przez zespół z MIT pod kierownictwem Margaret Hamilton, pionierki inżynierii oprogramowania3. Napisane w języku asemblera, charakteryzowało się niezwykłą wydajnością i niezawodnością2. Programiści musieli stworzyć kod, który działałby bezbłędnie w trudnych warunkach kosmicznych, przy ograniczonych zasobach sprzętowych3. Wymagania misji wymusiły kompromis w postaci 15-bitowej długości słowa i zestawu zaledwie 33 instrukcji8. Ograniczenia te stanowiły poważne wyzwanie dla programistów, którzy musieli wykazać się kreatywnością i optymalizować kod, aby sprostać wymaganiom misji.
Pamięć: Rdzeń linowy i ferrytowy
AGC posiadał dwa rodzaje pamięci:
- Pamięć rdzeniowa ferrytowa (RAM): 2048 słów, kasowalna, o czasie cyklu 11,72 mikrosekundy. Służyła do przechowywania danych tymczasowych i wyników obliczeń4.
- Pamięć rdzeniowa linowa (ROM): 36 864 słów, niekasowalna, o czasie cyklu 11,72 mikrosekundy. Przechowywała ona oprogramowanie AGC2.
Technologia pamięci rdzeniowej linowej była niezwykle innowacyjna. Polegała na przewlekaniu drutów przez rdzenie magnetyczne, tworząc skomplikowaną sieć, która reprezentowała program1.
Specyfikacja techniczna
Specyfikacja techniczna komputera pokładowego Apollo Guidance Computer (AGC) prezentuje się następująco:
Parametr | Wartość |
---|---|
Procesor | Układy scalone (RTL) |
Częstotliwość taktowania | 2,048 MHz |
Długość słowa | 15 bitów danych + 1 bit parzystości |
Pamięć RAM | 2048 słów (pamięć rdzeniowa ferrytowa) |
Pamięć ROM | 36 864 słów (pamięć rdzeniowa linowa) |
Interfejsy | DSKY, IMU, kontroler ręczny, radar rendezvous (LM), radar lądowania (LM), odbiornik telemetrii, sterowanie silnikiem, system sterowania reakcyjnego |
Pobór mocy | 55 W |
Język programowania | Język asemblera AGC |
Waga | 32 kg |
Wymiary | 61 cm × 32 cm × 17 cm |
4
Awarie i błędy: „1202 program alarm”
Podczas misji Apollo 11, komputer AGC zgłosił błąd „1202 program alarm”. Błąd ten był spowodowany przeciążeniem komputera, który otrzymywał zbyt wiele danych z radaru rendezvous. Radar rendezvous służył do śledzenia pozycji modułu księżycowego względem modułu dowodzenia, co było kluczowe dla procedury dokowania po powrocie z Księżyca. 3 Na szczęście, AGC został zaprojektowany tak, aby w takiej sytuacji priorytetyzować zadania3. Zignorował mniej istotne operacje i kontynuował wykonywanie krytycznych funkcji, co pozwoliło na bezpieczne lądowanie na Księżycu.
Warto dodać, że ryzyko wystąpienia błędów w AGC wzrastało dramatycznie po opuszczeniu ziemskiej atmosfery. W przestrzeni kosmicznej komputer był narażony na duże dawki promieniowania, które mogły powodować zmiany bitów w pamięci9. Dlatego też, niezawodność AGC była absolutnie kluczowa dla bezpieczeństwa misji.
Dziedzictwo AGC
AGC wywarł ogromny wpływ na rozwój informatyki. Jego twórcy musieli stawić czoła wielu wyzwaniom, pracując z ograniczonymi zasobami i tworząc oprogramowanie o najwyższej niezawodności3. Ich innowacyjne rozwiązania, takie jak miniaturyzacja, przetwarzanie w czasie rzeczywistym i efektywne wykorzystanie pamięci, stały się inspiracją dla kolejnych pokoleń inżynierów. Co ciekawe, początki AGC sięgają programu Polaris, w ramach którego opracowywano pociski balistyczne wystrzeliwane z okrętów podwodnych10. Doświadczenia zdobyte przy projektowaniu systemu naprowadzania dla Polaris zostały wykorzystane przy tworzeniu AGC.
Rozwój AGC przyczynił się również do powstania inżynierii oprogramowania jako odrębnej dyscypliny3. Zespół Margaret Hamilton, tworząc oprogramowanie dla AGC, opracował wiele nowatorskich metod i narzędzi, które do dziś są stosowane w inżynierii oprogramowania. Ponadto, praca nad AGC upowszechniła „myślenie o robieniu więcej z mniejszymi środkami„, co jest szczególnie istotne w dzisiejszych czasach, w dziedzinach takich jak Internet Rzeczy (IoT) i systemy wbudowane3.
Wnioski
Apollo Guidance Computer to symbol triumfu ludzkiego umysłu i technologii. Ten niewielki komputer, zbudowany w oparciu o nowatorskie technologie i oprogramowanie o najwyższej niezawodności, odegrał kluczową rolę w podboju Księżyca. Jego dziedzictwo jest widoczne do dziś w wielu dziedzinach informatyki, od miniaturyzacji i efektywnego wykorzystania zasobów po rozwój inżynierii oprogramowania. AGC to dowód na to, że nawet przy ograniczonych możliwościach można osiągnąć niezwykłe rezultaty, jeśli połączy się kreatywność, determinację i współpracę. Historia AGC to fascynująca opowieść o innowacyjności, wytrwałości i ludzkim dążeniu do przekraczania granic.
Cytowane prace
1. A Brief Analysis of the Apollo Guidance Computer arXiv:2201.08230v1 [cs.OH] 6 Jan 2022, otwierano: grudnia 26, 2024, https://arxiv.org/pdf/2201.08230
2. The Apollo Guidance Computer (AGC): A Computer Engineering Breakthrough, otwierano: grudnia 26, 2024, https://wehackthemoon.com/tech/apollo-guidance-computer-agc-computer-engineering-breakthrough
3. Going Retro With AGC: Smart Computer That Powered Apollo …, otwierano: grudnia 26, 2024, https://itsfoss.com/apollo-guidance-computer/
4. Apollo Guidance Computer – Wikipedia, otwierano: grudnia 26, 2024, https://en.wikipedia.org/wiki/Apollo_Guidance_Computer
5. Apollo Guidance Computer | Details – Hackaday.io, otwierano: grudnia 26, 2024, https://hackaday.io/project/186246-apollo-guidance-computer/details
6. Apollo Guidance Computer | The Space Techie, otwierano: grudnia 26, 2024, https://www.thespacetechie.com/apollo-guidance-computer/
7. Moonjs: An Online Apollo Guidance Computer (AGC) Simulator, otwierano: grudnia 26, 2024, https://svtsim.com/moonjs/agc.html
8. A Glimpse into the Apollo Guidance Computer | by Borja Sotomayor – Medium, otwierano: grudnia 26, 2024, https://borja.medium.com/a-glimpse-into-the-apollo-guidance-computer-8ee06e5e1a5c
9. The Apollo Guidance Computer (AGC) – NLO, otwierano: grudnia 26, 2024, https://www.nlo.eu/en/news/apollo-guidance-computer-agc
10. The Apollo Guidance Computer, otwierano: grudnia 26, 2024, https://tcf.pages.tcnj.edu/files/2013/12/Apollo-Guidance-Computer.pdf