Kysymys kuulostaa nykyään lähes vitsiltä: taskussasi oleva puhelin on tuhansia kertoja tehokkaampi kuin tietokone, joka vei ihmisen Kuuhun vuonna 1969. Silti vastaus siihen, toimisiko iPhone tai Android-puhelin tarpeeksi luotettavasti avaruusaluksen ohjaimena, ei ole aivan yksinkertainen. Tässä artikkelissa käydään läpi, millainen Apollo 11:n ohjaustietokone oikeasti oli, miten se toimi, mistä sen kuuluisa lähdekoodi tuli julkisuuteen ja miksi raaka laskentateho ei yksin ratkaise, kun kyse on ihmishengistä.
Mikä oli Apollo 11:n tietokone?
Kun puhutaan Apollo 11:n tietokoneesta, tarkoitetaan yleensä Apollo Guidance Computeria eli AGC:tä. Se oli Massachusetts Institute of Technologyn (MIT) suunnittelema ja Raytheonin valmistama ohjaustietokone, joka laski avaruusaluksen asennon, nopeuden ja lennon vaiheet. Jokaisella Apollo-lennolla oli kaksi AGC:tä: toinen komentomoduulissa (Command Module) ja toinen kuumoduulissa (Lunar Module), joka laskeutui Kuun pinnalle.
AGC:tä käytettiin DSKY-nimisellä ohjainyksiköllä (lyhenne sanoista display and keyboard, näyttö ja näppäimistö). Astronautit syöttivät sillä komentoja numeroina: käyttäjä valitsi ”verbin” (mitä tehdään) ja ”substantiivin” (mihin kohteeseen), esimerkiksi näyttääkseen aluksen nopeuden. Kyseessä ei siis ollut graafinen käyttöliittymä, vaan tarkkaan määritelty numerokoodisto.
Kuumoduulissa oli lisäksi täysin erillinen varajärjestelmä, Abort Guidance System (AGS), jonka valmisti TRW. Se oli suunniteltu itsenäisesti pääjärjestelmästä, jotta yksittäinen ohjelmointi- tai laitevirhe ei kaataisi molempia yhtä aikaa. AGS:ää ei koskaan tarvittu keskeyttämään kuulaskeutumista, mutta toisin kuin usein väitetään, se ei jäänyt kokonaan käyttämättä: Apollo 13:n hätätilanteessa vuonna 1970 juuri AGS:ää käytettiin aluksen ohjaamiseen suurelta osin paluumatkan ajan. Näiden lisäksi Saturn V -kantoraketissa oli oma ohjaustietokoneensa (LVDC), joten koko järjestelmä nojasi useaan rinnakkaiseen tietokoneeseen.
Pikafaktat
| Laite | Apollo Guidance Computer (AGC) |
| Suunnittelija | MIT Instrumentation Laboratory |
| Valmistaja | Raytheon |
| Käyttöönotto | Apollo-lennot 1960-luvun lopulta alkaen |
| Kellotaajuus | noin 2 MHz |
| Sananpituus | 16 bittiä (15 databittiä + 1 pariteettibitti) |
| Työmuisti (RAM) | 2 048 sanaa (magneettinen ydinmuisti) |
| Kiinteä muisti (ROM) | noin 36 864 sanaa (köysimuisti) |
| Paino | noin 32 kg |
| Tehonkulutus | noin 55 wattia |
| Käyttökohde | Avaruusaluksen navigointi ja lennonohjaus |
Miten AGC toimi?
AGC oli aikanaan edelläkävijä: se oli yksi ensimmäisistä tietokoneista, jotka rakennettiin kokonaan piipohjaisista integroiduista piireistä (mikropiireistä). Sen kellotaajuus oli noin 2 megahertsiä (MHz) ja sanapituus 16 bittiä, joista 15 oli varsinaista dataa ja yksi niin sanottu pariteettibitti virheiden havaitsemiseen. Työmuistia (RAM) oli vain 2 048 sanaa ja pysyvää ohjelmamuistia (ROM) noin 36 864 sanaa – yhteensä murto-osa yhdenkään nykylaitteen muistista. Vertailun vuoksi kannattaa vilkaista vanhoja tietokonemainoksia kilotavuineen, jotta 60-luvun mittakaava avautuu.
Ohjelmisto ei ollut ladattavissa tavalliseen tapaan, vaan se oli kirjaimellisesti kudottu laitteeseen. Kiinteä muisti toteutettiin niin sanottuna köysimuistina (core rope memory): Raytheonin tehtaalla työntekijät pujottivat käsin kuparilankaa pienten magneettirenkaiden läpi tai ohi. Langan kulku renkaan läpi tarkoitti ykköstä ja renkaan ohi nollaa. Ohjelmaa ei siis voinut päivittää lennon aikana lainkaan.
Lentoon lähetetyn ohjelmiston kehitti MIT:n Instrumentation Laboratoryn ryhmä, jota johti matemaatikko Margaret Hamilton. Hänen tiiminsä kehittämä tehtävien priorisointijärjestelmä osoittautui ratkaisevaksi juuri laskeutumishetkellä. Laskeutuessa AGC antoi toistuvia 1201- ja 1202-hälytyksiä, koska se ylikuormittui datalla. Sen sijaan että kone olisi kaatunut, se hylkäsi vähemmän tärkeät tehtävät ja jatkoi kaikkein kriittisimpiä laskelmia – ja laskeutuminen onnistui. Tämä varmatoimisuus oli koko suunnittelun ydin, ei laskentateho.
Apollo-koodi GitHubissa – mistä lähdekoodi tuli?
Apollo-tietokoneiden lähdekoodi tuli laajaan jakoon vaiheittain. Ensin harrastajaprojekti Virtual AGC alkoi 2000-luvun alussa kirjoittaa koodia uudelleen MIT:n museon säilyttämistä paperitulosteista, jotka oli skannattu kuviksi. Tämä työ teki koodista ensi kertaa laajasti tutkittavaa.
Kesällä 2016 entinen Nasan harjoittelija Chris Garry kokosi tämän alkuperäisen koodin julkiseen GitHub-palveluun, jossa se levisi nopeasti ohjelmoijien keskuudessa. Koodi keräsi runsaasti huomiota etenkin humorististen kommenttiensa vuoksi: tiedostoista löytyi muun muassa nimi ”BURN_BABY_BURN–MASTER_IGNITION_ROUTINE” ja viittauksia 1960-luvun populaarikulttuuriin ja jopa Shakespeareen. Komentomoduulin ohjelma tunnetaan nimellä Comanche055 ja kuumoduulin ohjelma nimellä Luminary099.
Koodin ikä ja tyyli tekivät siitä eräänlaisen aikakapselin. Jos vanhat ohjelmointitavat kiinnostavat, myös listamme painajaismaisen hankalista ohjelmointikielistä tarjoaa perspektiiviä siihen, miten eri tavoin koodia on vuosikymmenten aikana kirjoitettu.
iPhone vs. Apollo: kumpi on tehokkaampi?
Pelkkinä numeroina vertailu ei ole edes tasaväkinen. Nykyaikaisen älypuhelimen kellotaajuus on kymmeniä tuhansia kertoja AGC:tä korkeampi, ja käskyjen suoritusnopeudella mitattuna ero venyy arvioiden mukaan jopa yli sadan miljoonan kertaiseksi. Myös muistin määrässä puhutaan yli miljoonakertaisesta erosta. Toisin sanoen mikä tahansa nykypuhelin – tai edes halpa älykello – jättää Apollon ohjaustietokoneen tehossa kauas taakseen.
Tämä ero havainnollistaa hienosti, miten nopeasti laskentateho on kasvanut. Sama kehityskaari näkyy myös Applen laitteiden historiassa Apple I:stä ensimmäiseen iPhoneen: muutamassa vuosikymmenessä siirryttiin harrastajakoneista koko maailman taskuun mahtuviin tietokoneisiin. Konkreettinen ominaisuuksien vertailu löytyy alta.
Vertailu
| Ominaisuus | Apollo Guidance Computer (1969) | Nykyaikainen älypuhelin |
|---|---|---|
| Kellotaajuus | noin 2 MHz | useita gigahertsejä (tuhansia kertoja enemmän) |
| Työmuisti (RAM) | 2 048 sanaa | useita gigatavuja (yli miljoonakertainen) |
| Ohjelmamuisti / tallennustila | noin 36 864 sanaa köysimuistia | satoja gigatavuja |
| Paino | noin 32 kg | noin 150–250 grammaa |
| Tehonkulutus | noin 55 W | muutamia watteja |
| Käyttöjärjestelmä | Reaaliaikainen, tehtävät tärkeysjärjestyksessä | Yleiskäyttöinen (iOS / Android) |
| Suunnittelun painopiste | Vikasietoisuus ja varmatoimisuus | Monikäyttöisyys ja suorituskyky |
Toimisiko älypuhelin oikeasti kuulennon ohjaimena?
Tässä kohtaa raa’an tehon ihannointi kohtaa todellisuuden. Älypuhelimessa on kyllä enemmän kuin tarpeeksi laskentatehoa Apollon navigointilaskuihin, mutta luotettavuus tarkoittaa avaruudessa aivan muuta kuin nopeutta. AGC oli suunniteltu ääriolosuhteisiin tavalla, johon kuluttajapuhelin ei sellaisenaan pysty:
- Reaaliaikaisuus: AGC suoritti tehtävänsä ennalta määrätyssä, tiukassa aikataulussa. iOS ja Android ovat yleiskäyttöisiä järjestelmiä, jotka jakavat resursseja sovelluksille joustavasti – hyvä arjessa, mutta huono, kun jokainen millisekunti on kriittinen.
- Vikasietoisuus: AGC voitiin sammuttaa, käynnistää tai nollata milloin tahansa, ja se jatkoi siitä mihin jäi, koska kaikki tilannetieto oli tallessa. Jos älypuhelin kaatuu tai jäätyy, se ei automaattisesti palaudu tehtävänsä keskelle samalla tavalla.
- Säteilynkestävyys: avaruudessa kosminen säteily voi kääntää muistibittejä ja sekoittaa tavallisen elektroniikan. Apollon laitteisto ja köysimuisti kestivät tätä huomattavasti paremmin kuin nykyinen tiheä puolijohdemuisti.
- Itsenäisyys: laskeutumisen oli onnistuttava Maan komentokeskuksesta riippumatta, sillä radiosignaalin viive Kuuhun on yhteen suuntaan noin 1,3 sekuntia eli edestakaisin reilut 2,5 sekuntia. Se on liian pitkä aika reaaliaikaiseen ohjaukseen.
Toisin sanoen: älypuhelimessa on tehoa yllin kyllin, mutta ei sitä sisäänrakennettua varmuutta, jolla ihmishengistä vastaava ohjaustietokone on rakennettava. Ilman merkittäviä muutoksia – reaaliaikakäyttöjärjestelmää, säteilysuojausta ja varajärjestelmiä – tavallinen kuluttajapuhelin ei olisi ”tarpeeksi luotettava” oikean kuulennon ohjaimeksi.
Miksi vanha tekniikka oli niin luotettavaa?
Apollon tietokoneiden vahvuus ei ollut tehossa vaan yksinkertaisuudessa, testaamisessa ja tarkoituksenmukaisuudessa. Kone teki vain sen mitä sen piti tehdä, mutta teki sen käytännössä aina. Ohjelmisto kehitettiin ja testattiin vuosien ajan, ja laitteisto rakennettiin kestämään kolhut, lämpötilavaihtelut ja säteilyn. Sama ajattelu näkyy myös monissa aikakauden opetus- ja demonstraatiolaitteissa, kuten 60-luvun logiikkatietokoneissa, joissa toimintaperiaate oli tarkoituksella läpinäkyvä ja ennustettava.
Koko Apollo-ohjelma oli poikkeuksellinen saavutus matematiikassa, fysiikassa, tietojenkäsittelyssä ja insinööritaidossa. Presidentti John F. Kennedyn sanoin Kuuhun ei lähdetty siksi, että se olisi helppoa, vaan siksi, että se oli vaikeaa. Kuuhun on sittemmin palattu suunnitelmissa uudelleen, ja Apollo-ohjelman perintö näkyy yhä muun muassa Kuun kraatterien nimissä.
Lähteet
- Chris Garry: Apollo-11 -lähdekoodi (GitHub)
- Quartz: The code that took America to the moon was just published to GitHub
- Virtual AGC – Apollo Guidance Computer -emulaatio ja lähteet (ibiblio.org)
- Ken Shirriff: Architecture of the Apollo Guidance Computer
- RealClearScience: Your Mobile Phone vs. Apollo 11’s Guidance Computer
- Smithsonian Magazine: Margaret Hamilton Led the NASA Software Team That Landed Astronauts on the Moon
- Popular Mechanics: NASA computer vs. iPhone -vertailu
- Curious Droid: Could you fly to the Moon using only the Apollo Guidance Computer? (YouTube)
- NASA: John F. Kennedy Moon Speech – Rice Stadium, September 12, 1962
Usein kysytyt kysymykset (UKK)
Kuinka tehokas Apollo 11:n tietokone oli?
Apollo Guidance Computerin kellotaajuus oli noin 2 MHz, työmuistia oli 2 048 sanaa ja kiinteää ohjelmamuistia noin 36 864 sanaa. Nykymittapuulla teho oli hyvin vaatimaton, mutta se riitti tarkasti laskettuihin navigointitehtäviin.
Kuka kirjoitti Apollo 11:n ohjelmiston?
Ohjelmiston kehitti MIT:n Instrumentation Laboratoryn ryhmä, jota johti matemaatikko Margaret Hamilton. Hänen kehittämänsä tehtävien priorisointi auttoi konetta selviytymään ylikuormituksesta juuri laskeutumishetkellä.
Mistä Apollo 11:n lähdekoodin voi nähdä?
Alkuperäinen lähdekoodi on julkisesti saatavilla GitHub-palvelussa, jonne entinen Nasan harjoittelija kokosi sen vuonna 2016. Koodi pohjautuu MIT:n museon paperitulosteista uudelleen kirjoitettuun versioon.
Toimisiko iPhone oikeasti kuulennon ohjaustietokoneena?
Laskentatehoa nykypuhelimessa olisi enemmän kuin tarpeeksi. Luotettavuus on kuitenkin eri asia: kuluttajapuhelimesta puuttuvat reaaliaikakäyttöjärjestelmä, säteilysuojaus ja vikasietoisuus, joita oikea ohjaustietokone vaatii. Ilman näitä muutoksia se ei olisi riittävän luotettava.
Mikä oli 1202-hälytys kuuhun laskeutumisessa?
1201- ja 1202-hälytykset olivat merkkejä siitä, että AGC oli ylikuormittunut. Ohjelmiston priorisointijärjestelmä hylkäsi tällöin vähemmän tärkeät tehtävät ja jatkoi kriittisiä laskelmia, joten laskeutuminen saatiin vietyä turvallisesti loppuun.

