AGC: komputer z 4 KB RAM, który wysłał ludzi na Księżyc

W 1969 roku komputer prowadzący moduł księżycowy Apollo 11 miał mniej pamięci RAM niż najtańszy mikrokontroler dostępny dziś za 15 złotych. Mimo to wykonał zadanie bezbłędnie i zabrał ludzi na Księżyc. To historia maszyny, która zrewolucjonizowała informatykę – i uratowała misję w ostatnich sześciu minutach lądowania.

Wyścig kosmiczny i informatyczne wyzwanie NASA

Kiedy w 1961 roku prezydent John F. Kennedy ogłosił, że Stany Zjednoczone wyślą człowieka na Księżyc przed końcem dekady, inżynierowie NASA stanęli przed problemem, którego nikt wcześniej nie rozwiązał: jak sterować statkiem kosmicznym w czasie rzeczywistym, z dala od Ziemi?

Sygnał radiowy z Houston do Księżyca potrzebuje 1,3 sekundy w jedną stronę. W przypadku krytycznych manewrów – wejścia na orbitę księżycową czy finalnego lądowania – taka opóźniona pętla sterowania oznaczała katastrofę. Komputer musiał być na pokładzie. Musiał być lekki, energooszczędny, niezawodny i zdolny do obliczeń nawigacyjnych w ułamkach sekundy.

Problem w tym, że w 1961 roku komputery zajmowały całe piętra budynków i ważyły tony. MIT Instrumentation Laboratory (dziś Draper Laboratory) podjęło się zadania pozornie niemożliwego: zminiaturyzować maszynę obliczeniową do rozmiarów szafki, zdolną przetrwać start rakietowy, próżnię, promieniowanie i ekstremalne temperatury.

Specyfikacja, która dziś śmieszy – a wtedy robiła cuda

Apollo Guidance Computer (AGC) wszedł do użytku w 1966 roku i był prawdziwym cudem miniaturyzacji jak na tamte czasy. Jego dane techniczne zestawione ze współczesnymi urządzeniami wywołują uśmiech – i szacunek zarazem:

  • Pamięć RAM: zaledwie 4096 słów 16-bitowych, czyli około 4 KB
  • Pamięć stała (ROM): 73 728 słów, czyli ok. 72 KB – fizycznie wpleciona w rdzenie magnetyczne
  • Częstotliwość taktowania: ok. 2 MHz
  • Waga: 32 kg
  • Pobór mocy: 55 W
  • Awaryjność podczas misji Apollo: zero krytycznych zatrzymań systemu

AGC był jednym z pierwszych komputerów zbudowanych wyłącznie z układów scalonych (IC). NASA stała się tak ogromnym odbiorcą tych komponentów, że jej zamówienia dosłownie sfinansowały rozwój całej branży półprzewodnikowej. Koszt jednego układu IC spadł z 50 dolarów w 1962 roku do poniżej 2 dolarów w 1968 roku. Bez programu Apollo rewolucja PC mogłaby nadejść dekadę później.

Oprogramowanie zapisywano w pamięci ROM metodą core rope memory. Każdy bit był dosłownie ręcznie przeplatany przez lub obok rdzenia magnetycznego przez kobiety nazywane little old ladies, które tkały kod jak gobelin. Jeden błąd w splocie oznaczał błąd w programie lecącym na Księżyc.

Margaret Hamilton: kobieta, która wymyśliła software engineering

Za oprogramowaniem AGC stała Margaret Hamilton – matematyczka z MIT, która w wieku 32 lat kierowała całym zespołem programistycznym misji Apollo. To ona ukuła i spopularyzowała termin software engineering, chcąc podkreślić, że pisanie kodu wymaga równie rygorystycznego podejścia jak inżynieria mechaniczna czy elektryczna – i zasługuje na takie samo uznanie.

Hamilton była obsesyjna w kwestii niezawodności. Pamiętała zdarzenie z okresu przygotowań, gdy jej kilkuletnia córka Lauren bawiła się symulatorem misji i przypadkowo wybrała program P01 (inicjalizacja systemu przed startem) podczas symulowanego lotu księżycowego. Doprowadziło to do całkowitego krachu systemu nawigacji.

Hamilton natychmiast zaproponowała blokadę programową uniemożliwiającą wybór programów startowych w trakcie lotu. Spotkała się z odpowiedzią: wyszkoleni astronauci nie popełniają takich błędów, zabezpieczenie nie jest potrzebne. Nie dodano go. Podczas misji Apollo 8 astronauta James Lovell zrobił dokładnie to samo co mała Lauren – i dane nawigacyjne przepadły. Misja przeżyła, bo był to lot orbitalny, nie lądowanie.

Lekcja: nie istnieje kod odporny na człowieka. Hamilton wiedziała to przed erą UX i human-computer interaction. Jej podejście do obsługi błędów i priorytetyzacji zadań systemowych stało się fundamentem nowoczesnych systemów operacyjnych czasu rzeczywistego.

Alarm 1202 – sześć minut, które mogły zmienić historię

20 lipca 1969 roku. Moduł księżycowy Eagle zbliża się do powierzchni Księżyca. Neil Armstrong i Buzz Aldrin są w trakcie finalnego podejścia do lądowania, gdy w słuchawkach rozlega się sygnał alarmowy i komunikat, którego nikt w Houston nie chciał usłyszeć: ALARM 1202.

Komputer pokładowy zgłaszał przeciążenie. Radar spotkania z modułem dowodzenia był przypadkowo włączony i zaśmiecał procesor nadmiarem danych. AGC uruchamiał alarm co kilka sekund. Astronauci byli kilkaset metrów nad powierzchnią Księżyca z coraz mniej paliwa.

W centrum kontroli w Houston 26-letni Jack Garman – świeżo upieczony inżynier – siedział przy swoim stanowisku z odręcznie napisaną listą kodów alarmowych. Kilka tygodni wcześniej sam zażądał przetestowania dokładnie tego scenariusza. Wiedział, co oznacza 1202: komputer jest przeciążony, ale wszystkie krytyczne zadania działają poprawnie. AGC odrzuca zadania niskiego priorytetu, by chronić sterowanie lotem – dokładnie tak, jak zaprojektowała Hamilton.

Garman przekazał dyrektorowi lotu Gene Kranzowi jedną odpowiedź: GO. Kontynuować lądowanie. O godzinie 20:17 UTC moduł Eagle dotknął powierzchni Księżyca. Armstrong odczytał do mikrofonu: Houston, Tranquility Base here. The Eagle has landed.

Dziedzictwo AGC: jak księżycowy komputer ukształtował współczesne IT

Apollo Guidance Computer to nie tylko ciekawostka historyczna. To fundament, na którym stoi współczesna informatyka:

  • Układy scalone: masowe zamówienia NASA uruchomiły przemysłową produkcję IC i obniżyły koszty – otworzyło to drogę do rewolucji PC lat 70. i 80.
  • Systemy czasu rzeczywistego (RTOS): wielozadaniowość AGC z priorytetyzacją zadań była prototypem wszystkich współczesnych systemów wbudowanych – od sterowników ABS po systemy sterowania elektrowniami
  • Graceful degradation: strategia łagodnej degradacji pod obciążeniem, zastosowana przez Hamiltona, jest dziś podstawą projektowania infrastruktury chmurowej i systemów krytycznych
  • Software engineering jako dyscyplina: metodologia Hamiltoon udowodniła, że kod wymaga specyfikacji, testowania i dokumentacji – dziś oczywiste, wtedy rewolucyjne

Co ciekawe, pełny kod źródłowy AGC jest dziś dostępny publicznie na GitHubie. Programiści z całego świata przeglądają go z mieszaniną podziwu i rozbawienia – komentarze w kodzie zawierają żarty i westchnienia inżynierów pracujących pod ekstremalną presją czasu.

Jeden z komentarzy w module obsługi błędów brzmi: TEMPORARY, I HOPE HOPE HOPE. Fragment ten przetrwał do wersji produkcyjnej i poleciał na Księżyc. Każdy programista w duchu rozumie jego autora.

AGC vs. współczesne urządzenia – porównanie parametrów technicznych
ParametrAGC (1969)Arduino Uno (2010)Smartfon (2024)
Pamięć RAM4 KB2 KB8–16 GB
Pamięć stała72 KB32 KB256–512 GB
Taktowanie CPU~2 MHz16 MHz~3–4 GHz
Waga urządzenia32 kg25 g~200 g
Pobór mocy55 W~0,05 W~5 W
Użyty do misji krytycznejTak – lądowanie na KsiężycuZależy od projektuNie

Twoja infrastruktura IT jest tak niezawodna jak AGC?

Inżynierowie NASA nauczyli nas, że niezawodność systemów IT to kwestia projektu, nie szczęścia. NovaSys pomaga firmom MŚP we Wrocławiu budować bezpieczną i stabilną infrastrukturę – zanim pierwszy alarm 1202 zaskoczy Cię w krytycznym momencie.

Zamów audyt IT Bezpłatna konsultacja