Fordította: Sipos Róbert
Forrás: http://history.nasa.gov/computers/Computing.html

Számítástechnika és űrhajózás

A számítógép ma már minden űrjármű elmaradhatatlan kelléke. Ezeket irányító és navigációs funkciókra használják: égitestekkel való találkozások, visszatérő és egyéb manőverek, pályamódosítások, rendszerkezelő funkciók, adatformázás és helyzetvezérlés céljára. Viszont az első (amerikai) ember vezette űrhajó, a Mercury még egyáltalán nem tartalmazott számítógépet! (Alan Shepard 1961. május 5.-n repült. A szovjetek alig egy hónappal előzték meg őket: Jurij Gagarin 1961. április 12-én repült először az űrbe.) 15 éven keresztül a földkörüli (orbitális) és mélyűri küldetések során nem használtak általános célú fedélzeti számítógépeket. Manapság viszont az ember vezette űrrepülő és az ember nélküli Galileo űrhajó már nem működne számítógépek nélkül. Ez eredményezte azt is, hogy a mai űrhajók többcélúak lehetnek. A szoftveren keresztül lehetőség van rá, hogy az azt futtató számítógép képességeit megváltoztassuk, így pedig sokoldalúbb legyen az általa vezérelt hardver is. Ahogyan a küldetések egyre összetettebbek lettek, sokkal olcsóbb lett a szoftver módosítása, mint a hardver lecserélése.

A Földön maradó és az űrhajók fedélzetén lévő számítógépek a számításokat ugyanolyan módon végzik, az adattárolásuk is megegyezik, azonban különböző módon kezelik a folyamatokat és a be- valamint kimeneti adatokat. Amikor a 60-as években először kerültek számítógépek a személyzetes űrhajókra, egy tipikus földi számítógép még egymás után hajtotta végre a programokat, egyszerre egyet. Ezt kötegelt feldolgozásnak nevezik. Később aztán a számítógépes rendszerek tovább fejlődtek, hogy sokkal hatékonyabban lehessen velük dolgozni. Ha ugyanis a kötegelt feldolgozás során a gép számítást végez, a be- és kimeneti egységek kihasználatlanok. Ha viszont a perifériák vannak használatban, a számítások állnak le. Több módszer létezik a kötegelt feldolgozás hatékonyságának növelésére. Fejleszthetnek olyan operációs rendszert egy megfelelő hardverhez, ami lehetővé teszi, hogy egy program olyan erőforrást használjon, amire másik programnak épp nincs szüksége. De azt is lehet csinálni, hogy minden programnak csak egy bizonyos ideig tesszük lehetővé a futást és a ciklikusan váltogatunk a programok között (amikor a programra kerül a sor, ott folytatja, ahol korábban abbahagyta). Ha ezt elég gyorsan tesszük, akkor ez az "időszeletes" megoldás lehetővé teszi, hogy több felhasználó is csatlakozzon a számítógéphez, vagy több folyamat fusson úgy, hogy közben egyiknek sem tűnik fel: osztozni kell a számítási kapacitáson. Ezek a módszerek feltételezik, hogy az adatok mindig rendelkezésre állnak a programok számára.

Az űrhajók számítógépei viszont radikálisan különböző feldolgozási környezetben, ún. "valós idejű" üzemben működnek. Alapvetően aszinkron be- és kimenetekkel és folyamatos feldolgozással működnek, mint a telefonkezelő, aki nem tudja, melyik vonalon fog jönni a következő hívás. Azok a gépek például, amelyek a leszálló űrsiklóit vezérlik, aligha tudnák az aerodinamikai egységek működtetését kötegelt módban ellátni. Ha az adatokat csak kis csomagokban lehetne feldolgozni, akkor az űrhajó legalábbis elveszítené előre meghatározott pályáját, de lehet, hogy teljesen irányíthatatlanná válna. A valós idejű feldolgozás vezetett el oda, hogy az űrhajók számítógépei mások, mint a földi rendszerek. Ezek szoftvere nem "dőlhet össze", nem lehet meghatározatlan a működésük. Ha a szoftver megállna, a gép irányíthatatlanná válna. De persze a hardvernek is nagyon megbízhatónak kell lennie. Ezt általában még redundanciával is megerősítik. Az sem árt, ha nem felejtő memóriát alkalmaznak, hogy ha az áramforrás megszűnik, akkor a memóriában lévő program ne törlődjön. Mivel a modern félvezetők és a véletlen elérésű memóriák (RAM) általában felejtőek, a régebbi technológiák, mint például a ferritgyűrűs memória tovább élnek az űrhajókban. Ezeken kívül pedig a súly, a méret és az erőforrásigény is olyan dolgok, amelyek fontos szempontot jelentenek itt is, mint az űrhajók más szerkezeti elemeinél.

Bár az automatikus és emberi vezérlésű űrjárműveknek is hasonló követelményeknek kell megfelelniük, nagyon sokáig mégsem tudták használni ugyanazokat a típusú számítógépeket. Ember nélküli űrjárművön nincs olyan számítógép, aminek elegendő kapacitása lenne ahhoz, hogy elvezéreljen egy űrrepülő repülést. Az űrrepülő számítógépei annyira nagyok és energiaigényesek, hogy túlterhelnék egy mélyűri szonda energiaforrását. A modern mikroprocesszorok ugyan már lehetővé teszik, hogy úrrá legyünk ezen a problémán, de az itt tárgyalt rendszerek megelőzik a legtöbb mikroprocesszor technológiát. Ráadásul az emberi irányítású űrjárműveken lévő számítógépeket rövid távú küldetésekre tervezték, amelyek legföljebb néhány hétig tartanak (ez persze változott, ahogy felépült a Nemzetközi Űrállomás és eljöttek a marsi küldetések). Az ember nélküli földkörüli orbitális küldetések és a mélyűri szondák éveken keresztüli megbízható működést igényelnek ráadásul nagyon alacsony fogyasztáson.

Nagy kihívás volt a NASA számára a 60-as, 70-es években, hogy olyan számítógépes rendszereket fejlesszen űrhajók számára, amelyek túlélik a rakétaindítás megterhelését, működni tudnak az űrben és az összetett küldetésekhez megfelelő számítási kapacitással rendelkeznek. A NASA mind új technológiák kifejlesztésében mind már bevált megoldások alkalmazásában élen járt. Az emberi irányítású űrhajókban azt használták, ami épp elérhető volt, az ember nélküli űrszondákban viszont az innovációnak nagyobb szerep jutott.

A földi számítógépes rendszerek nagy mennyiségű adatfeldolgozáshoz készültek, hasonlóan sok üzleti alkalmazáshoz, így a kereskedelemben elérhető számítógépek némi szoftveres módosítással (egyes valós idejű feladatok miatt) megfeleltek a legtöbb földi alkalmazáshoz. Indítás előtti ellenőrzés, küldetésvezérlés, szimulációk és képfeldolgozás: ezekhez mind standard mainframe és miniszámítógépet használtak. A NASA földi számításokhoz használt gépeinél ezért leginkább az operációs rendszerben és egyéb szoftveres téren kellett fejleszteni, nem pedig a hardveren. A legtöbb fedélzeti számítógépet viszont már az intézményen belül egyedileg kellett megépíteni. A földi rendszerekben elért innovációnak természetszerűen nagyobb hatása volt az egész számítógépiparra, mint a fedélzeti számítógépek kifejlesztésének. A szoftverfejlesztésben (repülési és ellátó rendszerek) létrehozott technikák magas színvonalú szoftvermérnökséget; irányítási és technikai alapelveket igényeltek.

Eleinte nehezen lehetett megfelelni a küldetések igényeinek, de később a fejlesztések már úgy készültek, hogy lehetővé tegyék a már bizonyított számítógépes rendszereknek, hogy több küldetést lássanak el, így csökkentve a költségeket. Emellett folyamatosan nőtt a bizalom több kisebb rendszer hálózatban történő üzemeltetése iránt a nagy monolitikus rendszerekkel szemben. Ez pedig lehetővé tette a feladat elosztását és gazdaságosabban biztosította a megbízhatóságot.

Számítógépek az ember nélküli űrhajókon

Az ember nélküli űrhajók rendszerei főként abban különböznek az embert szállító űrhajókétól, hogy sokkal hosszabb időre tervezik őket és ezek sokkal kevesebb erőforrást igényelnek. Egy tipikus emberi küldetés gyakran egy hétig vagy még addig sem tart, kivéve például a Skylab esetét, ahol a számítógépek egy huzamban 9 hónapig működtek. Az embert szállító űrjárművek általában nagy, kiegészítő üzemanyagcellákat is szállítanak, hiszen az ilyen küldetésekben a létfenntartás, a kísérletek és a számítógépek energiaigénye nagy. A Föld vagy más bolygók körüli ember nélküli küldetések viszont akár egy évtizednél is tovább tarthatnak. A Föld körüli űrhajókat általában napelemek táplálják, amelyek viszont elég kevés energiát szolgáltatnak. A bolygóközi szondák a napelemek helyett gyakran kis radioizotópos generátorokat használnak. Az eltérő körülmények eltérő igényeket jelentenek a számítógépekre nézve is.

Általában két típusú ember nélküli űreszközt különböztetünk meg: az egyik a Föld körüli küldetésekhez használt, a másikat pedig a Hold vagy más égitestek, esetleg mélyűri kutatások számára tervezik. A Föld körüli (orbitális) egységek a pályára állás után általában nem igényelnek további navigációt, az űrszondák azonban rendkívül függenek a megfelelő irányítástól. Az orbitális egységek a Földről szinte időeltolódás nélkül irányíthatók az alatt a nagyjából 10%-nyi idő alatt, amíg "láthatóak" a földi állomások számára. A bolygóközi szondáknak viszont függetleneknek kell lenniük, vagy legalábbis tudniuk kell rutinműveleteket végrehajtani a kommunikációban lévő időkülönbség (a fénysebesség korlátai) és az időszakonkénti földi kommunikáció nélküli nagyobb időszakokban. Az összetett küldetések és az egyszerű, korlátozott bolygóközi szondák akár közvetlen kapcsolatban is lehetnek a Deep Space Network (egy rádióteleszkópokból álló világméretű hálózat, ami a bolygóközi küldetéseket támogatja. Emellett a naprendszer rádiócsillagászati és radaros megfigyelésére is alkalmas.) állomásokkal. Az ilyen szondákon a hibakezelés a hiba detektálásából és kijavításából áll, a Föld körüli szondák esetén viszont az a lényeg, hogy biztonságba helyezzék az eszközt, míg a többi földi állomás segíteni nem tud. Ezért azok a számítógépek, amelyek olyan űrhajókra kerülnek, amik elhagyják a Föld gravitációs mezejét, sokkal összetettebbek.

A különböző számítógépek különböző helyről is származnak. Sok földközeli űrhajó a Goddard Space Flight Center által kifejlesztett gépek változatait használja, a régi NASA kivitelező vállalat, a Jet Propulsion Laboratory (JPL) pedig a mélyűri kutatásokhoz használt számítógépek tervezésével van megbízva.

Jet Propulsion Laboratory

A Jet Propulsion Laboratory a mélyűri kutatásokban mindenki másnál nagyobb szerepet vállal. Ők feleltek a Ranger és a Surveyor holdi felfedezőútjaiért, a Mariner és a Viking keringőegységek fejlesztéséért a Merkúr, Vénusz és Mars felderítése esetén és a Voyager valamint Galileo űrszondákért, amik a külső bolygókat vizsgálták. A mélyűri kutatásokban használt számítógépek fejlődése így tehát a JPL berkeiben történt. Az ember nélküli űrjárműveken való számítástechnika a bedrótozott szekvencerektől a programozható szekvencereken keresztül a digitális számítógépekig ível. A NASA Ames Research Centerben fejlesztett Pioneer és a holdi leszállóegységek, amelyek a Holdat térképezték fel a 60-as években, még nem tartalmaztak fedélzeti számítógépet. Mint Föld körüli testvéreik és az első JPL szondák, még csak egyszerű szekvencereket használtak ahhoz, hogy kísérleteket vezéreljenek. A Mariner később már több önállósággal és rugalmassággal rendelkezett, mert olyan gépeket használt, ami tárolt és módosítható programszekvenciákat használt. Ma pedig az összetett űrhajók speciális célú digitális számítógépeket használnak.

Amikor egy új projekt indul a JPL-nél, egy új hivatalt nyitnak a projektvezetőnek, a főmérnököknek és a személyzetnek. Ahogy a projektek jönnek és mennek, úgy jönnek és mennek a hivatalok is. A Ranger hivatala például már több, mint 40 éve zárva van, míg a Voyager hivatal még legalább 20 évig nyitva lesz. A legtöbb személyzet a különböző, speciális rendszerfunkcióért felelős részlegre van beosztva. 1984-ben például a "technikai részleg" az "irányítás és vezérlés" és "űrhajó adatkezelő rendszerek" részből állt. Amikor egy projektirodának egy specifikus szolgáltatásra vagy eszközre van szüksége, "alvállalkozóként" megbízza a megfelelő részleget. Így aztán a specialisták az évek során sok különböző projektben részt vesznek, tehát egyetlen projekttől sem függenek kizárólagosan. Persze a részlegek között van versengés is, például a Voyagernél a helyzetvezérlőért felelős fejlesztők saját számítógépes rendszert akartak a feladathoz, míg az adatkezelési rendszernél dolgozók úgy vélték, hogy minden számítógépes feladat hozzájuk kellene, hogy tartozzon.

Az embert szállító űrhajókon lévő számítógépeket főként már létező számítógépekből fejlesztették tovább (az Apollo-t a Polarisból, a repülésvezérlő 4 Pi-t a System 360-ból). Az ember nélküli űrszondákon lévő számítógépek viszont saját tervezésűek. Ezekben az esetekben a NASA nem csak megrendelő, hanem aktívan részt vesz a fejlesztésekben is. A Goddard Space Flight Center vezetésével készült NASA Standard Spacecraft Computer (általános űrhajóvezérlő számítógép) számos Föld körüli küldetést vezérelt. A 60-as évek végétől a 70-es évek végéig készült és arra tervezték, hogy különböző küldetésekben is lehessen használni. Ezt jó hatásfokkal sikerült is elérni, hiszen a Solar Maximum Mission (1980-ban indult, a Nap tanulmányozására) és a Hubble űrteleszkóp is ezt használja.

kep1
A NASA Standard Spacecraft Computer a dobozában

A JPL által épített gépeknek összetettebb történetük van. Bár itt is történt több újrafelhasználás, a JPL által épített számos űrszonda egyedi, kifejezetten a küldetéshez tervezett számítógépet használt. Ezek fejlesztése párhuzamosan folyt az embert szállító küldetésekre tervezett számítógépekével. Azoktól eltérően azonban a JPL alapvető kutatásokat is végzett az űrhajózás számítógépesítésében; ezeknek az eredményeit olyan alapelvekké változtatták, amiknek a segítségével repülésirányító rendszereket lehetett fejleszteni. Az eredmény egy sorozat innovatív és rugalmasan használható fedélzeti számítógép lett. A fejlesztések hőskorában készültek a Voyager 1 és 2 űrszondákra kerülő számítógépek is.

Szekvencerek

Mindegy, hogy a cél olyan közel van, mint a Hold vagy olyan távol, mint a Neptunusz, az űrszondák működése mindig ugyanazokat a lépéseket tartalmazza: kilövés, köztes manőver, utazás és találkozó. Az űrszondákat a hordozórakéta által meghatározott pozícióban indítják el. Bár a legtöbbjük a felszerelt napelem-celláknak, antennáknak, műszereknek köszönhetően repülés közben úgy néz ki, mint valami sokkarú hindu isten,indításkor össze kell őket hajtani úgy, hogy elférjenek a rakéta orrában. Az indítási folyamat során az űrszondát a cél elérésének megfelelő pályára kell állítani, a műszereit ki kell bontani és a megfelelő pozícióba kell állítani és be kell kapcsolni az iránymeghatározását. A JPL-nél korán felmerült az igény, hogy olyan űrszondát építsenek, ami repülés közben három tengely mentén pozícionálható. A Napot, a Földet és/vagy egy csillagot kell referenciának használni ahhoz, hogy meg lehessen határozni egy űrhajó irányát. Így ha az irányból kiesne bármikor, akkor a referenciát használva újra be lehet pozícionálni. A pontos iránytartásnak az a nagy előnye, hogy így egy irányított antennát lehet használni a földi kommunikációhoz, csökkentve ezzel az erőforrásigényt. Egy képalkotó berendezés is sokkal stabilabban használható egy forgás-stabilizált eszközön, mint amilyen például a Pioneer. A háromtengelyes stabilizáció hátránya, hogy az űrhajón egy elég összetett helyzetvezérlő rendszerre és szenzorrendszerre van szükség, amivel meg lehet találni a napot és az iránycsillagot. Az indítási fázisnak pedig az is része lesz, hogy átvizsgálja az égboltot a Capmus, Vega vagy bármely más csillagot keresve, aminek segítségével "egyenesbe lehet hozni" az űrhajót.

A köztes manőver fázisa gyakran csak az alap pályára állítás után egy vagy két nappal következik, hogy korrigálja a viszonylag nagy pályára állítási hibákat. Az űrhajó mindhárom iránybeli meghajtó rendszerének időzített használatával ez számos célt szolgál. A régi indításoknál még nem tudtak a hordozóra hagyatkozni, hogy megfelelő pályát biztosítson. Később, ahogy a hordozórakéták fejlődtek, szándékosan megpróbálták elhibázni a célt avégett, hogy elkerüljék, hogy a szondára került földi baktériumok esetleg megfertőzzék az atmoszférát akkor, ha az indítási fázis során a szonda meghibásodna és nem tudná megváltoztatni az útját, hogy ne haladjon neki a vizsgált bolygónak. Így aztán a köztes manőver során került sor arra, hogy a már biztosan működő űrhajó beállítsa a megfelelő utat. Számos célobjektumot tartalmazó hosszú távú küldetéseken (például a Voyager szondák Jupiter, Szaturnusz, Uránusz és Neptunusz vizsgálatai) ezt a manővert a bolygókkal való találkozások előtt és után is meg kellett tenni. A hajtóműveket a találkozó előtt arra használják, hogy növeljék a röppálya pontosságát annak érdekében, hogy a célbolygó gravitációját minél jobban kihasználhassák a hintamanőverhez és csökkentsék a találkozó után szükséges manőverek számát.

Egy űrhajón a legkevesebb tennivaló utazás közben van. Persze a mai nagy és összetett űrhajókon folyamatosan részecske- és sugárzásvizsgálatok folynak és a különböző kalibrációk is periodikus funkciókat igényelnek. Ha az irány elcsúszott, akkor pedig helyzetállítás szükséges. Az utazás akkor ér véget, amikor a találkozó megkezdődik, hiszen ekkor az űrszonda elérte célját. Bekapcsolni, kalibrálni és irányba állítani kell az eszközöket. A képalkotó berendezések helyzetvezérlését is programozhatóvá és vezérelhetővé kell tenni. Adatokat kell rögzíteni és továbbküldeni a Földre. Ezeket a többszörös találkozások során persze mind ismételni. Ezekhez a műveletekhez fedélzeti vezérlésre van szükség. Kezdetben a Ranger küldetéseknél ez szükségtelen volt. (A Ranger-program a holdutazás előkészítésére szolgált: ezek egyszerű, célzott repülések voltak, a Holdba csapódtak és fényképeket készítettek az égitest felszínéről. 1961 és 1965 között nyolc Ranger szondát indítottak, ezek közül az utolsó három volt sikeres.) A fénysebességgel utazó rádiójeleknek kevesebb mint egy percbe telik elérni ide a Hold közeléből, így gyakorlatilag megoldható volt a valós idejű vezérlés. A földi központ manuális be tudta indítani a motorokat, irányba tudta állítani az eszközöket és bekapcsolni a kamerákat. A kívánt utasításokat a JPL-nél hozták a gép által használható formába, ezt aztán telefonvonalon továbbították a Deep Space Network állomáshoz, ami kapcsolatban volt az űrszondával. Egy operátor egy Read-Write-Verify Console nevű panelen megadta az oktális (8-as számrendszerbeli) kódokat, amiket ellenőrzés után elküldtek a szondának. De ez a módszer nem mindig volt elég. A Ranger 3-on egy vezérlési hiba miatt a szonda 37000 kilométerrel elhibázta a Holdat. Bár a JPL repülésvezetői be tudták kapcsolni a fényképezőgépet a repülés során, egy dokumentációs probléma miatt a Ranger rossz irányba nézett és így nem a Holdról jöttek a képek, hanem a világűrről.

A Ranger egy "Central Computer and Sequencer" nevű eszközt tartalmazott a közvetlen irányítás támogatásához. Ezt a felemelkedés előtt aktiválták és az órákat, perceket másodperceket számolta vissza addig, amíg egy megadott küldetési esemény be nem következett, aztán pedig végrehajtotta a kívánt műveletet megadó utasításokat. Ha a szonda felé tartó rádióösszeköttetés megszakadna, így még mindig folytatódni tudna a küldetés a terveknek megfelelően. Így például bekapcsolja a kamerát függetlenül attól, hogy épp merre tart az űrszonda.

Amikor a rangereket megépítették, a JPL-nél már folyt az első marinerek tervezése és tesztelése. Az 1962-ben indított Mariner bevezető küldetése egy vénuszi utazás volt. Ennél és későbbi testvéreinél már a Central Computer and Sequencer volt a vezérlés fő forrása, legalábbis a küldetés utazási és találkozási fázisaiban. A vénuszi és marsi út során a távolság már olyan nagy volt, hogy a késleltetés miatt a közvetlen földi vezérlés lehetetlenné vált. A Mariner 2 esetén az indulás előtt 15 perccel egy órát (visszaszámlálót) beállítottak, ami elindította a találkozási folyamatot a Vénuszhoz való legközelebbi pont elérése előtt 12 órával. A szekvencer órája egy pontos oszcillátor volt, hasonló, mint amit a mai számítógépek használnak és az indítás előtt 3 perccel kezdett el működni. A közvetlen vezérlés persze még fenn volt tartva, mert amikor a csillagkereső összezavarodott és rossz csillagra állt, a földi irányítás újra tudta indítani a keresést. A közvetlen vezérlést még az utazás első szakaszában is fenntartották. Ennek kiegészítéseként "kvantitatív" parancsokat is lehetett a szekvencernek küldeni későbbi használat céljából. Például utánégetési időket, apró pályamódosítási manővereket lehetett betölteni a memóriába későbbi felhasználás céljából. A marinerek automatikusan át tudtak állni közvetlen vezérlésről automata vezérlésre, ha a rádióösszeköttetésben valami probléma adódott. Az 1964-es Mariner Mars szondán például a szekvencer tartalmazott egy periodikus parancsot, ami ilyen hiba detektálására szolgált és 66 2/3 órás intervallumokban futott. Ez automatikusan át tudta kapcsolni a vezérlést.

A vénuszi Mariner 2 (1962), a marsi Mariner 4 (1964) és a vénuszi Mariner 5 (1967) ugyanazt a Central Computer and Sequenncer eszközt tartalmazta. Méret- és súlybeli korlátozások miatt küldetésenként ebből csak egy volt a fedélzeten (bár a gép csak 5,2 kilót nyomott). Ahogy aztán a későbbi küldetéseknél növekedett a hely és nagyobb terhet tudtak szállítani, a JPL fixprogramos számlálóból egyre inkább számítógéppé változtatta a gépet.

Programozható szekvencerek: Marinerek a Marshoz, Vénuszhoz és a Merkúrhoz

Az 1969-es marsi Mariner már egy 11,7 kilogrammos, JPL által tervezett és a Motorola által épített programozható "Central Computer and Sequencer"-t tartalmazott. A rögzített programos szekvencerek és a programozható szekvencer közötti legnagyobb különbség az volt, hogy ennek volt egy 128 szóból álló memóriája, aminek a tartalmát repülés közben módosítani lehetett. Bár sokkal nagyobb rugalmasságot és képességeket biztosított, mint a rögzített programos, ez volt az egyik legrégebbi szekvencer, amit egy űrhajón biztonsági másolatként is használtak. Kritikus manőverek során a két szekvencer párhuzamosan működött és az eredményekben való bármilyen eltérés megszakította a manővert. A szekvencer vezérelte az összes többi rendszert.

Az 1969-es marsi Marinerhez eredetileg egy 20 szavas szekvencert igényeltek, így aztán a 128 szavas verzió elkészítése több volt, mint elegendő. Ennek ellenére ezt a memóriakapacitást is hamar sikerült megtölteni, ami mindenféle "kreatív" programozási technikák használatát igényelte a küldetés során. Szerencsére a szekvencert repülés közben újra lehetett programozni; a befejezett küldetési fázisok memóriaterületeit a későbbi fázisoknál fel lehetett használni. Edward Greenberg, a JPL munkatársa, aki a programozás legnagyobb részét végezte, lecserélte az indításkori és pályára állítási rutinokat új kóddal, miután azok lefutottak.

Programozható központi számítógép, szekvencer architektúra és szoftver

A Central Computer and Sequencer még nem tartalmazott a hagyományos számítógépben általánosnak számító akkumulátort vagy központi regisztereket. Itt minden memóriahelyet használni lehetett regiszterként; minden művelet elkezdődött egy címen, módosította a tartalmat egy másikon és továbbugrott egy harmadikra. A memória 22 bites szavakból álló ferritgyűrűs típus volt soros kiolvasással. Háromféle szót tudott tárolni:

Az 16 műveletből álló utasításkészlet főleg számláló típusú utasításokból állt: öt skálázott csökkentő utasítás (csökkentd az órát, percet, másodpercet vagy változó értékét), egy növelő utasítás (növelés és ugrás). Volt egy ADD és egy SUB (összeadás, kivonás) utasítás, mindkettő 27 ezredmásodpercnyi gépidőt igényelt, ezzel kiérdemelték a leglassabb utasítások címet. A programozók ezeket nagyon ritkán használták, mert a többi utasítás jobban megfelelt a számláláshoz. A kivonás egyes komplemenssel dolgozott.

A szekvencer minden órában végrehajtotta az első hét utasítást. Tulajdonképpen ezek az utasítások alkották az egész operációs rendszert! Ez elég kötegelt utasítást tartalmazott ahhoz, hogy ellenőrizze, az elkövetkező órában minden szükséges összetevő rendelkezésre áll-e a további repüléshez. Például tartalmazhatott egy számlálót is, ami figyeli, mikor jön el a képalkotás ideje. Ez így valahogy nézett ki:

  1. Számolj 123 órát az indulástól.
  2. Számolj 45 percet.
  3. Aktiváld a fényképezőgépet és kezdj el képkockákat számolni.
  4. A 29. kockánál kezdd el a képeket küldeni.
  5. A 32. kockánál forgasd el a szűrőt a kékre.
  6. A 93. kockánál állítsd le a megfigyelést és mozgasd helyre a platformot.
  7. Folytasd az utazási üzemmód számlálását.

Miután visszatért az utazási üzemmódba, az űrszonda aktiválhatta akár óránként újra a megfigyelő rendszert. A küldetésvezérlés persze megszakíthat egy megfigyelést vagy egy órák közötti üres időt is és egy megadott szubrutinra irányíthatja a vezérlést.

Egy memóriacímen lévő érték úgy változtatható meg, hogy a földi állomásról két egymást követő utasítást küldenek. A JPL-nél ezeket CC-1 és CC-2 utasításoknak nevezik. A CC-1 elküldte a címet és az új szó alsó 7 bitjét valamint egy megszakítást okozott a szekvencerben. A CC-2 elküldte a felső 15 bitet és engedte tovább folytatni a megszakított programokat. Egy ezekhez kapcsolódó utasítás, a CC-3 arra utasította a gépet, hogy kiolvassa egy megadott memóriacím tartalmát. Ennek a sebessége 1 bit/s, de a bevitel még lassabb volt, szavanként átlagosan 2 percbe telt, ami jóval lassabb, mint a földi betöltési sebesség, ez ugyanis a 128 szó értékét kevesebb, mint egy perc alatt be tudta tölteni.

Bővített memória, bővített funkcionalitás

A következő években a szekvencer egyre több és több memóriát kapott, de alapjaiban nem változott. Az a küldetés, ami a rendelkezésre álló lehetőségeket a maximálisan kihasználta, az 1973-as Mariner Vénusz Merkúr (más néven Mariner 10) volt. A küldetés abból állt, hogy már a Földön bekapcsolja a képalkotó berendezéseit, tanulmányozza a Holdat repülés közben, aztán kutassa a Vénusz területét a gravitációs hintamanőver közben, ami ellöki a Merkúr felé. Ott pedig a JPL tervei szerint három különböző találkozó is lezajlik a legbelső bolygóval. (Ez volt az első küldetés, ami a hintamanővert alkalmazta.)

A jóval összetettebb követelmények miatt a tervezőcsapat eredetileg egy nagyobb és jobb szekvencert akart, de a megszorítások lehetetlenné tették, hogy bármilyen új gépet építsenek. Az egyik projektvezető, Adrian Hooke úgy döntött, hogy rendszeres időközönként előre tervezett programfrissítéseket fognak betölteni. Emellett bevezetett egy új módszert is a megbízhatóság növelésére. A szekvencer nem csak a következő küldetési fázishoz tartalmazta a programot, hanem tartalmazott egy folyamatosan frissített alapprogramot is, ami akkor is befejezte volna a küldetést, ha a szonda elveszíti a kapcsolatot a Földdel. Ha a következő parancs nem érkezett meg meghatározott időn belül, akkor a szekvencer azokat a parancsokat követte volna, amiket a biztonsági program tartalmazott. Így a szoftver bakugrásokban haladt előre. A Föld-Hold fázisban a Vénuszi programot töltötték be, a Vénuszi találkozó során a Merkúr találkozó programja volt a memóriában és így tovább. A szoftverfejlesztést három programozóhoz rendelték. Ronald Spriestersbach (a JPL munkatársa) írta a földközeli és a Merkúr utáni részeket, George Elliot (Boeing) csinálta a Vénuszi találkozót és Larry Koga (JPL) írta Merkúr találkozókhoz tartozó programokat.

Az 1969-es küldetések során a legtöbb módosítás és szubrutin még kézzel készült és egyszer használatos volt. 1971-re a COMGEN nevű földi számítógépprogram, ami eredetileg a szekvencernek a memóriabetöltéseket készítette már tudott olyan parancscsoportokat összeállítani, amelyek hasonlóan működtek, mint a szubrutinok a hagyományos számítógépekben vagy a makrók egy assembly nyelvben. 1973-ban a COMGEN már egy IBM 360/75-ös gépen futott, ami legenerálta a parancsokat és elküldte a NASA kommunikációs hálózatán keresztül a megfelelő Deep Space Network állomásra a továbbításhoz. Ekkorra minden állomásnak volt parancsszámítógépe, így véget ért a manuális/hangvezérléses korszak. Egy másik fejlesztés az volt, hogy a mérnökök egyszerű memóriaellenőrzést tudtak végezni úgy, hogy az 512-es címen lévő összegzőszó tartalmát összehasonlították az első 511 helyen lévő érték összegével. Ha ezek nem egyeztek, akkor minden egyes címet egyenként le kellett ellenőrizni.

Azonban a szekvencerben történt fejlesztések és a földi programozási és vezérlési trükkök nem voltak elégségesek ahhoz, hogy elegendőek legyenek a Mariner sorozat utáni időkben. A Mariner 10 hosszú és bonyolult küldetésének sikere ellenére Hooke már panaszkodott amiatt, hogy a memóriaméret szűkössége már túl költségessé vált az optimalizálás folyamatos igénye és a szubrutinok folyamatos áthelyezése miatt. Emellett a szekvencerek - függetlenül hangzatos elnevezésüktől - nem voltak számítógépek. Az űrhajóknak már fedélzeti számításokra volt szükségük, ez több memóriaterületet igényelt a szoftver számára (és ezáltal megnövelt rugalmasságot), és szükség volt egy központi számítógépre is a többi funkcióhoz, mint például az űrhajó műszaki állapotának és biztonságának a monitorozásához.

A STAR számítógép; a megbízhatóság problémája

1961-ben a Kaliforniai Egyetem egyik litván származású számítógép-tudományi szakembere, Algirdas Avizienis elkezdett a hosszú távú küldetésekhez alkalmas nagy megbízhatóságú számítógépek terén kutatásokat végezni. A Central Computer and Sequencer nem programozható változata a Mariner Vénusz szondán 1962-ben indult el. A JPL már akkoriban úgy tervezte, hogy a 70-es évekre tervezett "Nagy utazás" űrhajóin szekvencerek helyett számítógépeket fog használni. A külső bolygók megfelelő együttállása lehetővé tenne egy küldetést a Jupiter, Szaturnusz, Uránusz és Neptunusz felé, így egyetlen lendülettel mindhárom gázóriáshoz lehetne találkozót szervezni. Egy ilyen küldetés évekbe telne, ezért olyan űrszondára lenne szükség, ami hosszú ideig tudna önállóan működni. A belső bolygóknál tapasztalt, a fénysebesség korlátaiból adódó kommunikációs eltolódás még inkább bénító lenne a külső bolygókhoz való küldetésben, ezért olyan számítógépre van szükség, ami az "agyat" magával viszi, mert a földi agyak egy vészhelyzet esetén órákra lennének.

Nagy utazás

A 60-as évek közepétől a NASA egy nagy terven kezdett dolgozni, amit Grand Tour-nak, Nagy Utazásnak kereszteltek el. Ennek során négy azonos űrszondát küldtek volna a külső bolygókhoz (a Jupitertől a Plútóig). Két Thermoelectric Outer Planets Spacecraft (TOPS, vagyis termoelektromos külső bolygós űrhajó) indult volna 1977-ben, két következő pedig 1979-ben (kihasználva a nagy gázóriásoknak csak 175 évenként tapasztalható megfelelő együttállását). Bár a NASA 1971 szeptemberében benyújtotta ehhez a tervhez az 1973-as költségvetési igényt, decemberben az akkori NASA ügyintéző, James Fletcher értesült róla, hogy Nixon elnök nem támogatja mindkét akkor beadott terv finanszírozását (az űrrepülő és a TOPS Nagy Utazás tervezetét). 1971 vége előtt Fletcher beleegyezett, hogy töröljék a TOPS tervet és lecseréljék egy kevésbé drága űrszonda-párral, amelyek csak a Jupiterig és a Szaturnuszig repülnének. Így aztán megszületett a Mariner-Jupiter-Szaturnusz 1977 (röviden MJS '77) program. 1977 márciusában, csak néhány hónappal a két űrszonda indítása előtt a küldetést Voyager-re nevezték át. Bár a Voyager csapat reménykedett egy Uránuszig és Neptunuszig kiterjesztett küldetésben, ez nem volt az eredeti terv része. Ed Stone, a program tudományos munkatársa egy interjúban elmondta, hogy még egy négy éves utazást is elég kockázatosnak tartottak úgyhogy ahelyett, hogy egy 12 éves bizonytalan kimenetelű Neptunuszhoz tartó utazás mellett döntött volna, a NASA bölcsen azt választotta, hogy elkezdenek egy négy éves küldetést a Jupiterig és a Szaturnuszig, aztán menet közben lépésenként kibővítik. A Voyager 1 elsődleges küldetését 1980 novemberében fejezte be, amikor elrepült a Szaturnusz Titán nevű holdja mellett és elhagyta a bolygó gyűrűit. Ezután elfordult, hogy a csillagközi térbe utazzon, letéve arról a lehetőségről, hogy a másik két gázóriást is megvizsgálja. Ha a Voyager 1 nem tudta volna befejezni a feladatát a Szaturnusznál, a NASA a Voyager 2-t el tudta volna irányítani úgy, hogy az befejezze az 1-es munkáját. A Voyager 2-t két héttel a Voyager 1 előtt indították, de hosszabb pályán haladt, hogy a Szaturnuszhoz 9 hónappal később érkezzen és aztán ha a Voyager 1 sikeresen befejezte a saját munkáját, tovább haladjon az Uránusz és a Neptunusz felé.

Avizienis fő érdeklődési területe a számítógépek megbízhatósága volt. Akkoriban a hibák sokkal gyakoribbak voltak, mint ma, az integrált áramkörök korában. Egy olyan számítógép, amire egy sikeres mélyűri küldetést bíznak, nem hibázhat a hosszú úton vagy a találkozó során. A JPL és Avizienis érdeklődése pont a megfelelő időben találkozott. Az 1961 és 1965 közötti időszakban a laboratórium szponzorálta a sokkal hibatűrőbb számítógép iránti kutatásait. 1965-ben elkészült a terv, úgyhogy elkezdődött a prototípus építése. A gép kapcsolótáblás prototípusa 2 éves szoftverfejlesztési periódus után, először 1969 márciusában futtatott programot. Avizienis a gépet STAR-nak nevezte el az öntesztelő és javító szavak kezdőbetűjéből (self testing and repair). A név később az egész architektúrára ráragadt. A JPL Flight Computers and Sequencers Section of the Guidance and Navigation nevű részlege finanszírozta a munkát. Avizienis volt felelős a koncepcióért, David A. Rennels a hardverért, John A. Rohr pedig a szoftverért. F. P. Mathur végezte a megbízhatósági számításokat, az MIT Instrumentation Laboratory pedig kifejlesztette hozzá a megfelelő ROM-ot, ami alapvetően egyfajta ferritgyűrűs memória volt (az angol eredetiben core-rope memory).

Avizienis a megbízhatóság elérése érdekében ún. szelektív redundanciát alkalmazott. Az űrrepülőn a fedélzeti számítógépek egymással teljesen megegyező redundáns változatok voltak és külön-külön egyéni számítógépnek számítottak, a STAR-ban viszont a számítógépet egyetlen entitásnak tekintették, amelyben az egyedi összetevők többszörözve vannak. Minden alrendszeréből tartalékként kettőzött verziókat tartalmazott. Ennek a legnagyobb előnye az volt, hogy a tartalék rendszerek kikapcsolt állapotban lehettek addig, amíg a fő komponens megfelelően működött. Akkor kapcsolt be a tartalék rendszer, amikor valami hiba következett be, ekkor a hibás példányt ki is lehetett kapcsolni. Emiatt a STAR teljes energiafogyasztása kiegyenlített volt és nem haladta meg egy hagyományos, vagyis tartalék rendszerek nélküli számítógép energiaigényét, ez pedig nagyon vonzóvá tette az energiatudatos űrhajó-fejlesztők szemében.

Avizienis úgy gondolta, hogy a hibákat vagy átmeneti problémák vagy pedig állandó szerkezeti hibák okozzák. Annak érdekében, hogy az átmeneti problémákat felderítse, a STAR újrafuttatta volna azt a programrészt, ahol a hibát először észrevették. Ha a hiba újra előjön, az érintett komponenst ki kell kapcsolni és a másolatát kell bekapcsolni, azon pedig a kérdéses programrészt újra lefuttatni. Minden hibaészlelő mechanizmus hardveres volt, a szoftver pedig hibajavító kódokat tartalmazott. A STAR így egy automatikus önjavító gép lenne az egész űrhajóra értve abban az esetben, ha annak minden rendszere ennek a koncepciónak a szellemében épülne.

kep2
A STAR számítógép felépítése

1969-ben a JPL elkezdte a TOPS projektet tervezni. A korábbi belső bolygókat vizsgáló szondák elég közel voltak a naphoz, hogy napelem cellákat használhassanak, de a külső bolygókat vizsgáló küldetéshez ez az energiaforrás már elégtelen lenne. A TOPS-nál ezért radioizotópos termoelektromos generátort használtak. A TOPS szondáin a STAR lett volna a fedélzeti számítógép. Központi vezérlőrendszere a STAR technológiát használta volna 32 bites szóhosszal és 4K ROM, 8K RAM memóriával. A STAR bárminemű űrhajón való használatának azonban gátja volt a méret. A kapcsolótáblás változat 2,8 m3 helyet foglalt! Avizienis azt szerette volna, ha ezt sikerül lecsökkenteni 0,05 m3-re 50 watt energiafogyasztással. 1971-re a követelményeket tovább csökkentették 0,28 m3-re, 18,1 kg-ra és 40 wattos energiafogyasztásra. De bármilyen fejlődést is sikerült elérni abban az időben, a STAR sajnos soha nem repült űrhajón. Ennek egyik oka a költségvetési megszorítás volt. De a kutatási program mégsem volt haszontalan, mert az eredményeit felhasználták az elkövetkező rendszereknél.

Elosztott rendszerek a Voyageren és a Galileón

A Voyager és a Galileo nagy számítási kapacitással rendelkező külső bolygókat vizsgáló űrszondák. A Jupiterrel és a Szaturnusszal való találkozások során a Voyager 1 és 2 olyan képeket és tudományos adatokat küldött vissza, amelyek messze meghaladták a korábbi bolygóközi repülések eredményeit. A Voyager 2 1986-os célja az Uránusz volt, közel 10 évvel az indítás után! A Galileót kifejezetten jupiteri szondának tervezték. Mindkét űrszonda több számítógépes rendszert is tartalmaz, amelyek a funkcionalitást elosztják egymás közt, ellentétben a Vikingen alkalmazott központi számítógéppel.

A nagy ember nélküli űrhajókon alkalmazott elosztott rendszereknek számos elődje van. Még 1967-ben a Marshall Space Flight Center megbízta a General Electric philadelphiai hadi és űrhajózási részlegét a nagy "Voyager" marsi leszállóegység felkészítésének keretében (ezt a 70-es évek elején egy Saturn V hordozórakétán indították volna), hogy hasonlítsa össze a központi, "monolitikus" és az elosztott rendszereket. A GE szigorú matematikai megközelítést alkalmazott a feladathoz: erőforrás, méret és súly összehasonlításokat végeztek a különböző céloknak való megfelelés és a megbízhatóság témakörében. A számítógép fizikai korlátait 45,36 kilogrammban és 300 wattban határozták meg az indítórakéta nagy méreteinek köszönhetően. Ez még olyan számítógépeket is lehetővé tett volna, mint az IBM 4 Pi sorozat, az Autonetics D26J vagy az IBM Saturn Launch Vehicle Digital Computer (LVDC). A tervezők megadták, hogy a tervezett gép képességei között lennie kell gyorsulásmérőnek, programozható szekvencernek (512 szavas memóriával), telemetriás regisztereknek. A GE végül arra a következtetésre jutott, hogy a központi rendszer gazdaságossága nem ellensúlyozza az elosztott rendszer nagyobb megbízhatóságát.

Edward Greenberg, a JPL mérnöke egy másik ötletet hozott fel. Ő programozta a Mariner 6 és 7 szekvencerét, valamint hozzájárult a Viking Command Computer (CCS) alrendszer tervezéséhez. Ő 1972 decemberében azt javasolta, hogy a Viking számítógépét általánosítani kellene úgy, hogy több küldetésben alkalmazni lehessen. Az volt az ötlete, hogy a hardver- és szoftverfejlesztői eszközöket (assemblereket, szimulátorokat) újra használják fel. Viszont mivel egy Vikingen használt számítógép nem lett volna képes ellátni azokat a feladatokat, amik a Voyager-en felmerültek, több különböző, eltérő feladatkörű számítógépre volt szükség.

A GE tanulmányán és Greenberg javaslatán kívül egy további érv is felmerült az elosztott számítás mellett. Edward H. Kopf szintén a JPL mérnöke a helyzetvezérlésre specializálódott és megjegyezte, hogy a laboratórium különböző részlegeinek szüksége van számítógépre, hogy elvégezze a Voyagerrel és a Gelileóval kapcsolatos feladatait. Viszont mindegyik csoport saját számítógépet akart, hogy ne kelljen folyamatosan versenyeznie a többi csoporttal az erőforrásokért. Egy elosztott rendszer segített volna megőrizni a békét.

Így aztán az elosztott számítás, a nagy megbízhatóság, a potenciális újrafelhasználhatóság és a feladatok elkülönítése mind valósággá vált a Voyager és a Galileo űrszondák fejlesztése során. Mindegyiknek funkcionálisan elkülönített számítógép-csoportjai vannak; a Voyager a Viking gépeiből kettőt is használ és emellett alkalmaz egy harmadik, saját építésű számítógépet is. Minden csoport különböző feladatokra koncentrál, mint például a helyzettartás, adatformázás és vezérlés. A Galileónak két processzora van a helyzettartáshoz és hat van hálózatba kötve a vezérléshez és az adatkezeléshez. Mindkét szondát hosszú távú, önálló repülésre tervezték, amit nehéz lett volna elérni elosztott rendszerek nélkül.

[ A Voyager és Viking űrszondákról gyakran olvasni, hogy RCA 1802-es processzorokat használnak, de ez nem igaz. Az általam fordított alapos áttekintésben és a NASA hivatalos oldalán sem szerepel. A Voyagerek egyedileg épített számítógépeket használnak. Az 1802 először a Galileo űrszondáknál jelent meg, a Voyagerek már csak azért sem használhatták volna, mert amikor ez megjelent, 1976-ban a Voyager projekt már több éve folyamatban volt. - A ford. ]

Voyager - a repülő számítógépes központ

A Voyager három kétszeresen redundáns számítógépet tartalmaz összesen 32 K memóriával:

Nincs hagyományos értelemben vett órajelchip, hanem egy számlálót használnak, amit egy stabil oszcillátor által generált frekvenciából állítanak elő. Ezt a számlálót aztán a szonda különböző eszközeihez szinkronizálásként, időzítőként, számlálóként használják. Emellett az értékét továbbítják a földre is, ahol egy szoftver átszámolja greenwich-i idővé.

A CCS majdnem azonos a Viking-en használttal és űrhajó karbantartási és vezérlési feladatokra szolgál. Az új feladatok tették szükségessé a másik két rendszer hozzáadását. A telemetriás adatok formázását és továbbítását a Flight Data System végezte, a helyzetvezérlésre és a vizsgálóplatform beállítására pedig a helyzetvezérlő számítógép szolgált. A STAR számítógép egyik újdonsága (amit a TOPS-hoz is terveztek) a Voyager-ben is megjelent; ez pedig az alvó mód. A JPL úgy gondolta, hogy az elektronikus eszközök élettartama megnő, ha nincsenek állandóan áram alatt. Ezért bár mindkét CCS folyamatosan áram alatt van, az adatkezelő rendszerek közül már csak ritkán kell mindkettőt használni (általában csak akkor, ha egy bolygóval van találkozó), a helyzetvezérlő számítógépeket pedig sosem kapcsolják be egyszerre. A kettős memóriákban nincs teljes bitről bitre való redundancia alkalmazva mert például az olyan algoritmusok, mint a beállító folyamat, amit röviddel az indítórakétáról való leválás után futtatnak, nem szükséges tovább megtartani. Rendszerenként egyetlen aktív processzor eléri mindkét memóriát. Az adatkezelő rendszer mindkét memóriában tárol az utasításokból másolatot, de a működés közbeni adatokat és változókat már csak az egyikben. A bolygókkal való találkozás esetén pedig mindkét CCS processzor működik tandem üzemmódban.

Mivel a Voyager-re már három rendszer került, a JPL-nél a repülési hardverért és szoftverért felelős szervezet felépítésén is módosítani kellett. A Vikinghez még egyetlen szoftvermérnök tartozott, de a Voyager fejlesztéséhez már hármat neveztek ki, a csapatot pedig az űrhajózási szoftvermérnök vezette. Ezt a pozíciót H. Kent Frewing 1974 elején kapta meg. (1976 elején aztán Christopher P. Jones vette át a posztot, aki a hibavédelmi algoritmusokat tervezte, de Frewing tervezte az alapokat.) Frewing az év első felében számos, a szervezeti felépítésre vonatkozó ötletet vetett fel. Február 20-i megjegyzésében leírta saját feladatkörét és a munka időbeosztását egészen az 1977 nyári indításig. A szoftverfejlesztők száma 1974-ben és 1977-ben volt a legkevesebb, 1 fő és 1975-ben a legnagyobb; ekkor 4 ember dolgozott teljes munkaidőben a szoftveren. A kis csoport azt is lehetővé tette, hogy a kommunikáció ne legyen túl hivatalos. Hogy azért legyen valami formális szervezeti felépítés, Frewing megalapította a Mariner-Jupiter-Szaturnusz 1977 Fedélzeti Szoftverfejlesztő Csapatot. Ebben ő, Donald R. Johnson (az adatkezelő mérnöke), Stanley Lingon (CCS mérnök) és egy helyzetvezérlő rendszer képviselő vett részt. Ők gondoskodtak ugyanarról a hatékony szoftverfejlesztési modellről, ami a Viking esetén is megvolt. Jó sok dokumentáció és hatékony szubrutin interfészek készültek. A programozás egyfajta assembly nyelven folyt. A kezdeti fejlesztések után elkészült egy tartalék számítógép és tudományos hardver is, amelyeknek az interfészei ugyanolyan módon kapcsolódtak egymáshoz, mint ahogyan majd a kész űrszondán is lesznek. Ennek a funkciója hasonló volt a Shuttle Avionics Integration (SAIL) laboratóriumban lévőhöz, amin a hardveres és a szoftveres módosításokat is le tudták tesztelni. Ezzel a menedzsmenttel a mérnökök érthetővé tették a tudományos oldal kéréseit a szoftverfejlesztőknek és mindhárom számítógép elkészült.

Voyager CCS: paraméterek és problémák

A NASA nagy költségvetési megszorítást szenvedett el a 70-es években. A megváltozott politikai légkör lezárta az Apollo időszakot is. A vezetés visszavett azokból a tervekből, hogy a naprendszert ember nélküli űrhajókkal fedezzék fel. Mivel a Voyager-nek is az új körülmények között kellett létrejönnie, itt is lényeges kérdéssé vált a költségcsökkentés. 1974-ben a JPL rendezett egy fórumot a CCS-el kapcsolatos kérdések megvitatására. Greenberg egy évvel korábban javasolta, hogy általánosítsák a Viking számítógépét, a megbeszélés eredménye pedig az lett, hogy a Viking CCS-ét adoptálják a Voyager-re. A végleges hardveres funkcionális követelményfüzet így aztán gyakorlatilag a vikingének a másolata lett, csak az új adatkezelő rendszer és a helyzetvezérlő számítógép miatt szükséges interfészek leírásában lett különbség. A parancsdekóder, bizonyos hibakezelő algoritmusok és egyéb dolgok gyakorlatilag ugyanazok, mint a Vikingen. Minden parancs és a többi számítógéphez kapcsolódó szoftverbetöltés a CCS-en megy keresztül. Emiatt került be egy új MEMLOAD szubrutin. Egy másik új szubrutin, az AACSIN arra szolgál, hogy kiértékelje a helyzetvezérlő számítógép által rendszeresen küldött ütemjelet (az angol terminológiában heartbeat), ami informálja a CCS-t az állapotáról. Az ütemezés frekvenciája nagyjából percenként 30, hogy túl ne terhelje a rendszert. A küldetésirányításnál úgy vélték, a CCS-nek az idő 3-4%-ában kell aktívnak lenni, hiszen a Viking keringőegysége már akkor bajban volt, ha több, mint 0,2%-ig volt aktív. Amint kiderült, ez az aggodalom fölösleges volt.

Hogyan lehetett a sokkal összetettebb Voyagert egy olyan számítógéppel vezérelni, aminek ugyanakkora memóriája volt, mint a Vikingnek? Nos részben azért, mert ez képes volt a szoftverének a kicserélésére. A küldetés közbeni átprogramozás akkor kezdődött el, amikor a programozható szekvencerek megjelentek a marinereken és a Mariner 10-en már igen jó hatékonyságot értek el. A Voyager 1977-es indulására ez már majdhogynem rutinfeladattá volt. Mind a CCS mind pedig az adatkezelő rendszerét nagymértékben újra lehetett programozni. A Voyager 1-nek 18 új betöltés lett elküldve a Jupiterrel való találkozás során. A hosszú utakon, mint amilyen a Szaturnusz és az Uránusz közötti, az új betöltéseket 3 havi időközzel ütemezték. Ahogyan a Mariner 10-nél már kitalálták, a Voyager 2 CCS memóriájában egy biztonsági másolat is tárolódott az Uránusszal és később a Neptunusszal való találkozáshoz. Ha bármi probléma történne a bejövő rádiókapcsolatban és nem tudnák elvégezni a további betöltéseket, ez a program (ami a 4K memória 20%-át foglalta el) még mindig le tudná vezérelni az alapvető kísérleti folyamatokat és továbbítani tudná azt a Földre. A CCS programozói tanulmányozták a lehetőségeket, hogyan tudnák felhasználni az adatkezelő rendszer apró hibájából eredő kihasználatlan memóriát. Abban ugyanis a kiolvasó regiszter egyik bitje hibás volt és ez azt eredményezte, hogy azon a pozícióban minden egyes bit 1-et tárol. Ezek a tulajdonképpen "jó" területek a CCS számára továbbra is használhatóak lennének.

Voyager helyzetvezérlő számítógép

A JPL, amióta csak 1959-ben elkezdett űrszondákat tervezni, a három tengelyes stabilizált űrhajók iránt kötelezte el magát. A helyzetvezérlő rendszerek eredetileg az volt a célja, hogy megtartsa a szonda pontos helyzetét, de később kibővítették azzal a feladatkörét, hogy a képkészítésért felelős vizsgálóplatformokat illetve az egyéb távolsági érzékelő berendezések iránytartását vezérelje. A korai Mariner küldetésekben ezek a vezérlőrendszerek még bedrótozott logikával készült analóg rendszereket tartalmaztak. A Mariner 8-ra azonban a digitális áramkörök felcserélték az analógokat és a Mariner 10-re és a Viking műholdra már ezek kerültek. A Viking leszállóegysége a Honeywell központi számítógépét használta, hogy saját független helyzetvezérlő programját futtassa. A meghajtott landoló járműnek sokkal jobb irányba állításra volt szüksége, mint egy szabadon repülő űrhajónak és a bedrótozott rendszer már nem volt elegendő, hogy ezt a vezérlést ellássa. A jövőbeli szondáknak az egyre összetettebb küldetések és szokatlan űrhajó-összeállítások miatt már szükségük volt számítógép-vezérelte iránytartási elektronikára. A NASA Office of Aeronautics and Space Technology készített egy tanulmányt a nagy élettartamú helyzetvezérlő rendszerekről, amikor a TOPS projekt 1972-ben leállt. Ennek az eredménye egy kombinált analóg-digitális programozható helyzetvezérlő rendszer (byte-soros processzor) lett, amit HYPACE-nek, Hybrid Programmable Attitude Control Electronics-nak neveztek el.

A Viking keringő szonda számítógépének 4K 18 bit széles ferritgyűrűs (az angol eredetiben: plated-wire) memóriáját alkalmazta, de ezeket a HYPACE már tranzisztor-tranzisztor logika (TTL) integrált áramkörökkel használta, hogy egy relatív gyors (28 mikroszekundumos ciklusidővel rendelkező) processzor jöjjön létre indexregiszterekkel a címzéshez. A byte-soros architektúra valószínűleg amiatt jött, mert a TTL áramkörök 4 bites párhuzamos működésre voltak tervezve, így a 18 bites szót öt ciklusidő alatt lehetett mozgatni, nem pedig 18 alatt, mint ahogyan ez egy soros gép esetén következett volna. Ezzel pedig nőtt a sebesség. Az indexregiszteres címzés pedig azt eredményezte, hogy ugyanazt a kódblokkot lehetett használni mindhárom tengely esetén, így csökkentve a memóriaigényt. Úgy tűnt, hogy a jövő űrhajóinak helyzetvezérlő rendszere sokat fog profitálni egy ilyen számítógépből.

Az új követelményeknek köszönhetően a Voyager volt az első, amely profitált is belőle. A Voyager és a korábbi Marinerek, Vikingek közötti egyik lényeges szerkezeti különbség, hogy a két utóbbi eléggé merev volt. A Voyager termoelektromos generátorai viszont egy külön tartóoszlopon voltak elhelyezve, hogy a radioaktív sugárzást távol tartsák a tudományos műszerektől. A magnetométer szintén egy külön oszlopon volt, hogy elkerülje az interferenciát a szonda motorjaival, működtető rendszereivel, kábelezésével és elektronikájával. A vizsgáló platform is külön oszlopot kapott, hogy nagyobb látómezőt adjon. Ezek miatt repülés közben a Voyager sokkal kevésbé volt merev és a manőverek, helyzetváltozások közben az oszlopok rudazata elhajlott, ez pedig nehezítette a helyzetvezérlést. Ráadásul a Titan III hordozórakétát használták a Voyagerhez, aminek szüksége volt egy "elrugaszkodó fázisra" (kick stage), hogy sikeresen elhelyezze a Voyagert a Jupiter felé tartó pályán. Mivel ezt a fázist egyszerűen kellett megvalósítani, már a kilövés közben használni kellett a helyzetvezérlést, ami megint csak nehezítette a helyzetet.

A JPL vezetése a voyager-ek esetén is a HYPACE használata mellett kardoskodott, de volt egy olyan igény is, hogy építsenek a múltra és használjanak már létező berendezéseket. Greenberg azt javasolta, hogy azokban a rendszerekben, ahol szükség van számítógépre, használják a Viking megfelelő rendszerét. A konkrét vizsgálatok azonban megmutatták, hogy a helyzetvezérlő rendszer ugyan tudta volna használni a Viking CCS számítógépét, de az adatkezelő rendszer a magas I/O adatátviteli követelmények miatt már nem. Wayne Kohl, a Viking számítógépének mérnöke úgy vélte, hogy a projekt akár 300000 dollárt is megspórolhatna, ha a Viking gépét használnák a helyzetvezérlő funkcióhoz. Az ő részlegének főnöke, John Scull valószínűleg az anyagi megszorítások miatt támogatta az ötletet. A végső döntésben a az ötlet gazdaságossága és megvalósíthatósága sokat számított. A létező rendszer használatával két esetben is pénzt tudtak spórolni: az új fejlesztési költségek elkerülésében és a személyek képzésében.

A Guidance and Control részleg végül kelletlenül elfogadta a CCS számítógépet, de azzal a feltétellel, hogy fel kell gyorsítani. Az aktív vezérlés igénye a hordozórakéta elrugaszkodó fázisában azt igényelte, hogy olyan valós idejű vezérlőprogramokat kellene íni, amik működni tudnak a 20 ezredmásodperces ciklusokban, ami durván háromszor volt gyorsabb, mint a vezérlő számítógép. A helyzetvezérlő számítógép vezérlőprogramja ("operációs rendszere") eléggé eltért azoktól, amiket a parancsvezérlőhöz vagy az adatkezelő rendszerhez használtak. A helyzetvezérlőnek különböző alprogramokat kellett futtatni. A részleg 1 MHz-es órajelet kért, de ennek a háromnegyedét kapták. A helyzetvezérlő mérnökei a rendszert kiegészítették a HYPACE kísérletben hatékonynak bizonyult index regiszterekkel. A General Electric építette a vezérlő számítógépet, de a helyzetvezérlő többi részét a Martin-Marietta Corporation építette Denverben.

A helyzetvezérlő mérnöke Teoguer A. Almaguer volt, a szoftverfejlesztő csapatot pedig H. Karl Bouvier vezette. Bouvier névleg egy elemzőcsoportban dolgozott a Guidance and Control részlegen belül, de a csapattagok óvakodtak nevükben a "szoftver" szó használatától, mert úgy a feladatukat valószínűleg elvették és kiosztották volna egy már létező szoftverágazathoz valamelyik másik részlegnél. A programozóknak kiemelkedő munkát kellett végezniük, figyelembe véve a lassú processzort és a korlátolt memóriakapacitást. Az indításra a 4K memóriából mindössze 2 üres szó maradt. A szűkös memória később is problémát jelentett, különösen mert a vizsgálóplatform vezérlőrendszerei annyira elhasználódtak, hogy a szoftvernek kellett kompenzálni ezt az Uránusz és a Neptunusz vizsgálatakor.

A Voyager HYPACE működése

A HYPACE-nek négy végrehajtási sebessége volt: a vizsgálóplatform léptetőmotorjainak és a hajtóműnek az indítószerkezete 10 milliszekundumos, a helyzetvezérlő és a hajtómű logika 20 milliszekundumos ciklusonként. A vizsgálóműszerek vezérlője és a forgás végrehajtás a 60 milliszekundumos csoportban voltak, a parancsfordító és ütemezés időzítő pedig 240 milliszekundumos rutinok voltak. Működés közben a normál 10 milliszekundumos megszakítás minden 10 milliszekundumos rutint végrehajtott. Emellett volt idő még az egyik 20- 60- vagy 240 milliszekundumos rutin számára is. Ha a számítógép nagyon elfoglalt volt, a 240 milliszekundumos ciklus elcsúszhatott 350 milliszekundumra is, de abban a ciklusban lévő rutinok kevésbé kritikusak voltak, mint például egy olyan rutin aminek ki kell kapcsolnia egy hajtóműt pont időben.

A Voyageren szükség volt egy olyan dologra is, ami a központi számítógéppel felszerelt ember nélküli űrhajókon nem létezett: a gépek közötti kommunikációs interfészekre. A parancsvezérlő akár közvetlen adatkérést is küldhetett bármelyik másik rendszernek. A parancsvezérlő fő feladata az volt, hogy rendszeresen ellenőrizze a többi gép megfelelő működését. A programozók eredetileg úgy tervezték, hogy a többi rendszer egy ütemjelzést (heartbeat) küld a vezérlőnek minden másodpercben. Ez később részben túlterhelési problémák miatt nagyjából 2 másodpercre növekedett. Ennek az átviteléhez 6 közvetlen bemeneti vonalat biztosítottak, ami a HYPACE-ből a vezérlő felé futott. Ezen egy ún. "power code"-ot küldtek. A power code 37 például egy egyszerű ütemjel volt, amit minden 8 240 ezredmásodperces ciklusban küldtek, a többi pedig arra szolgált, hogy információt, beállító parancsokat adjon át. A 66-os "az Ómen" kód azt mondta a számítógépnek, hogy mentse el a hibaállapot-paramétereket, mert egy hiba várható. A helyzetvezérlő időnként elvégezte az öntesztjeit, de ha ez nem sikerült, az ütemjel át lett ugorva. Nagyjából 10 másodperc ütemjel nélküli idő után a vezérlő elküld egy átkapcsoló parancsot a tartalék processzornak.

Ilyen tartalék helyzetvezérlő rendszerre való átkapcsolásra volt szükség a Voyager 2-n 16 másodperccel a szilárd hajtóműves rakétáról való leválás után. Ez ugyanis annyira pontatlanul sikerült, hogy a szonda lekerült a pályáról, a műszereket tartó rudakat pedig működésbe hozta a vezérlő számítógép. A saját hajtóműveket kellett átkonfigurálni, hogy kijavítsák a pálya hibáját. Mivel ez a művelet kritikus időszakaszában történt, amikor a számítógép dual módba kapcsol, a helyzetvezérlő számítógép két parancsot is kapott egyszerre, hogy alaphelyzetbe hozza a rendszert. A második parancs végrehajtása miatt a helyzetvezérlő helyreállítása még későbbre került. A számítógép hamarosan kimerítette a lehetőségeket és szándékosan leállította az ütemjelet. Mire a tartalék rendszer elérhetővé vált, nem voltak giroszkóp mérési adatok. Így aztán nem értesült róla, milyen problémák adódtak, ezért végrehajtott egy egyszerű pályamódosítást és leállította a forgást. Ez pont egy olyan eset volt, amikor egy bitről bitre egyező megosztott memória katasztrofális következményekkel járna, mert a tartalék rendszer végtelen ciklusba kerülhetett volna.

Az adatkezelő rendszer fejlesztése

Az adatkezelő rendszer végzi a tudományos és mérnöki eredmények gyűjtését, formázását és tárolását. Ha az adatokat közvetlenül lehet továbbítani, nagy sávszélességre van szükség, de ha az adatátvitel késleltetett, mert az űrhajó épp takarásban van, az adatkezelő rendszer az adatokat mágnesszalagos tárolóra küldi (Data Storage System, DSS). Ahogy a JPL a Rangertől a Marierig és a Vikingig haladt a fejlesztésben, az adatkezeléshez szükséges sávszélesség egyre csak növekedett. Egyre több mérőeszköz került a szondákra, növekedett a mérnöki rendszerek pontossága, a képalkotó eszközök felbontása is nőtt és a fejlettebb kommunikációs berendezések az adatok egyre gyorsabb leadását tették lehetővé. Meg kellett tehát szabadulni a bedrótozott működésű adatkezelő rendszerektől. A Viking egyik nagy előrelépése a digitális memória használata volt, amiben az adatkezelő programok (akkoriban még "szekvenciák") különböző változatait lehetett tárolni. Ez nagyon hasonló volt ahhoz, mint egy processzorban lévő mikroprogramok; és hasonló célokat is szolgált: hogy spóroljanak a hardveren. Innen már csak egy kis lépés hiányzott a teljesen önálló számítógépig.

A TOPS tanulmányai hivatkoznak egy mérési alrendszerre (Measurement Processor Subsystem), ez volt az első eset, hogy a repülési adatoknak különálló számítógépet szántak. Bár először a parancsvezérlőt tervezték adatkezelő rendszernek is, a JPL mérnökei hamar rájöttek, még ha a munka számítási részének meg is felelne, a gyenge I/O átvitel megakadályozza az alkalmazását. A JPL ezért Jack L. Wooddell-t megbízta egy új számítógép kifejlesztésével. Wooddell érdekes módját választotta a számítógépen végzett munkájának elmesélésére: tanulmányt írt a Dél-Karolinai Egyetemen dr. Melvin Breuer által tartott számítástudományi kurzus részére. Ez az 1974 környékén írt tanulmány tartalmazta, hogy milyen lenne az elképzelés élesben használt változata. Wooddell felsorolja azokat a feladatokat, amiket a tervezési periódusban kellett elvégeznie. Egy listát is írt a funkciókról, amiket a majdani adatkezelőnek el kell tudni végezni: vezérlőjeleket küldeni tudományos műszereknek, széles skálán kezelni adatátviteli sebességeket, különböző adatformátumokat a különböző műszerektől, lehetőséget kell nyújtania, hogy akár repülés közben újratervezzék a küldetést (ahogy mostanra meg is történt), monitorozza a mérnöki telemetriát és fenntartsa a megbízhatóságot, hogy az adatátvitelben egy kis hiba ne okozza azt, hogy egynél több tudományos műszer mérési eredményeiben vagy pedig a szenzorok több mint felénél veszteség keletkezzen.

kep3
Az adatkezelő rendszer hardvere a dobozában.

Miután az alapvető követelményeket meghatározta, megvizsgálta a szükséges hardver és szoftver kompromisszumokat. Egy részletes jegyzetében 1975-ben, amikor a repülési szoftvert elkezdték fejleszteni, John Morecroft bemutatta azt a koncepciót, hogy az ún. "soft logic" (a futtatott programok) legyen az adatkezelő rendszer "hard logic"-jának kiegészítője. Morecroft rámutatott, hogy a gép programja tulajdonképpen a korábban bedrótozott áramkörök logikai reprezentációja. Így tehát ez a jegyzet a firmware általános leírása. Munkájának második fázisában Wooddell meghatározta, milyen funkciókat kell a hardvernek kezelni és milyen funkciókat lehet a rugalmas szoftverre bízni. Ezek már előkészíthető volt egy kezdeti utasításkészlet és logikai felépítés. Rendhagyó módon Wooddell 1973-ban, amikor az utasítások már készen voltak, kezdett dolgozni egy programozóval. A JPL munkatársa, Richard J. Rice kezdte kifejleszteni a programot a gép kapcsolótábla-prototípusán. Ez eredetileg a szokványos 4 K memóriát tartalmazta, ami 18 bites szavakból állt és ugyanabból a TTL IC-ből tartalmazott 150-et, mint amiből a JPL többi számítógépe is felépült. Ennél a gépnél az utasítás-végrehajtási idő 12 és 24 ezredmásodperc között volt. Rice prototípus programja, amit a korábbi tapasztalatok és a Voyager akkor ismert műszerezettsége alapján készítettek megmutatta, hogy a processzor sebességét a használható működéshez meg kellene duplázni!

Két jelentős hardveres módosítás viszont megoldotta a problémát. Az egyik egy eredetileg minden utasítási ciklusban használt közvetlen memória elérési áramkör hozzáadása volt. Ez azt jelentette, hogy bizonyos adatokat közvetlenül a memóriába lehetett küldeni anélkül, hogy a központi processzoron keresztülmenjen. Más számítógépeknél a közvetlen memória-hozzáférés egyfajta megszakítás volt és gyakran "cikluslopásként" hivatkoztak rá, mert az utasítás-végrehajtástól vett el időt. Az adatkezelő rendszerben ez a fajta megoldás túl merész ötlet lett volna, mert az adatátviteli sebesség olyan magas volt, hogy az utasításoknak soha nem lett volna lehetőségük rá, hogy elég gyorsan végrehajtódjanak az időkritikus feldolgozás során. Wooddell ezt úgy oldotta meg, hogy csak azokhoz az utasításokhoz adta a közvetlen memória-hozzáférési ciklust, amelyeknek még nem volt olyan ciklusuk, amiben a memóriára lett volna hivatkozás. Miután ezt hozzáadták az összes ilyen utasításhoz, a végrehajtás minden esetben ugyanannyi ideig tartott, függetlenül attól, hogy a közvetlen memória-hozzáférés ténylegesen megtörtént-e. Ez pedig könnyebbé tette, hogy előre jelezzék a programok futási idejét és biztosítsák a memóriaelérési sebességet. Rice, aki tulajdonképpen ezt a módosítást javasolta azt mondta, hogy programozási munkája tulajdonképpen lehetetlen lett volna e nélkül.

Az második hardveres módosítás az űrhajózási számítástechnikában teljesen újdonság volt: felejtő memória. A prototípus programok készítésének első fázisa után egy átmeneti hardveres konstrukció alakult ki CMOS IC-ket használva. Ez a fajta áramkör nagyon alacsony energiát igényelt, gyors volt és elég sokféle feszültséget elviselt. Ez tökéletessé tette űrbéli felhasználásra. A 70-es évek elején a CMOS eléggé új volt úgyhogy a JPL némi rizikót vállalt, hogy ezeket az áramköröket használta. Hogy az új CMOS processzornál ne adják lejjebb, az adatszámítógép csapata a CMOS memóriák mellett kardoskodott. A gyors CMOS áramköröket lassú ferritgyűrűs (angol eredetiben plated-wire) memóriákkal párosítva semmivé vált volna a törekvés, hogy gyorsítsák a számítógépet. Viszont a CMOS memóriák felejtőek voltak, tehát ha az áram megszűnik, a memória tartalma is elvész. Az előző ember vezette és ember nélküli űrhajók tervezői elkerülték a felejtő memóriákat abbéli félelmükben, hogy az áramingadozás pont a küldetés kritikus időszakában törölné a memória tartalmát. A Voyager menedzsmentjét meggyőzték róla, hogy a rizikó elfogadható.

James T. Kinsey, a JPL managere fontos szerepet játszott abban, hogy elfogadják a félvezető memóriát, mert kitalálta a biztonsági áramellátást. A radioizotópos generátorok egyenáramot termeltek, amit aztán átkonvertálnak váltakozó árammá (a generátor nominálisan maximum 315 wattot tud előállítani, de manapság már csak 270 wattot termel a radioaktív erőforrás normális elhasználódása miatt). Mivel a generátorok által biztosított egyenáramú vonalról egy különálló vezetéken táplálták a CMOS memóriákat, az egyetlen módja annak, hogy az erőforrás megszűnjön az volt, ha valami nagy katasztrófa elpusztítaná a generátorokat. Ha ez megtörténne, az adatszámítógépre már egyébként sem lenne semmi szükség. Így már elegendő feszültséggel látták el a memóriát és a processzor regisztereit, amelyek az állapotvektort is tartalmazták. A CMOS memória sikere ahhoz vezetett, hogy a Galileo űrhajón mindkét számítógépes rendszer minden áramköre CMOS lett. Az új memóriákkal a tár mérete 8K-ra növekedett. Két "külső" címbittel bővítették a rendszert, hogy meg lehessen adni, a memória felső vagy alsó tartománya címződik-e. Az első bitet az adatok, a második bitet az utasítások címzésére használták.

Ahogy a végső tervet elfogadták, a prototípusok készítése és a Rice és Wooddell közötti együttműködés megszűnt. Wooddell szerint a kapcsolótábla-prototípusok használata a papíron való tervezés helyett jelentősen optimalizálta a folyamatot. Munkafolyamata bár nem szigorúan "a szoftver az első" megközelítést alkalmazta, határozottan szoftverközpontú volt. Az adatkezelő rendszeren végzett munka jó modellje annak, hogy egy teljes rendszert hogyan lehet jól megtervezni.

Az adatkezelő rendszer szoftvere

Az eredeti szoftverfejlesztés alapvetően két emberes vállalkozás lett 1975-től, miután Edgar M. Blizzard csatlakozott Richard Rice-hoz, a kód éles verziójának elkészítésében. A teszteléshez és a fejlesztéshez másokat is bevontak, de ez a két mérnök a küldetés kulcsfontosságú programozója éveken keresztül. Ugyanott ülnek, ahol a tesztlaboratórium is van: egy Interdata számítógép és a perifériái találhatóak még ott, ami tartalmazza az adatkezelő szoftveres szimulátorát, az assemblert és a flight load generátort. Ennek túloldalán van a labor a hardverek laza halmával, amelyek a valódi űrhajót reprezentálják. A kezdetektől a validáción át az kész kód kiadásáig az eszközeik látó- és hallótávolságon belül vannak, a szobában folyamatosan hallható a forgó lemezek, alkalmanként kattogó nyomtatók és számítógépek hangja. Rice az adatkezelő szoftver egyedi természetének bemutatásakor megjegyezte: "Nem foglalkoztunk vele, hogy top-down vagy strukturált-e..."

Voyager adatkezelő rendszer számítógép-architektúra

A Voyager adatkezelő rendszere sok tekintetben különbözik a legtöbb általános célú kisszámítógéptől. Speciális és nagyszámú regiszterei (128 van belőlük) a memóriában tárolódnak. Wooddell emellett nagyon hatékony léptető és bitforgató utasításokat is írt hozzájuk az adatkezelő igények miatt. Az I/O sávszélesség ellenére az aritmetikus teljesítmény eléggé gyenge, főként a bájtsoros működés miatt. Ez azt jelenti, hogy a 4 bites bájtok sorban dolgozódnak fel. Mivel a gép szómérete 16 bit, hat ciklusba telik, hogy például egy ADD műveletet elvégezzen, beleértve a járulékos ciklusokat is. Ha az összes aritmetikus, logikai és bitléptető művelet nem az általános regiszterekben menne végbe, a gép még lassabb lenne. A céljának megfelelően az általános gépekben megtalálható szokásos ADD, SUB, AND, OR, XOR műveletekhez az adatszámítógép még számos növelő, csökkentő és gépi utasítást is tartalmaz azon 36 között, amelyek kifejezetten a gép űrhajós verziójához tartoznak.

Az adatkezelő 14 watt áramot igényel és 16,3 kilogramm súlyú. Maga a számítógép csak egyharmad wattot és 10 voltot igényel, ami kevesebb, mint amit a hőmérsékleti szenzor használ! Eleinte a becsült átviteli sebesség 20000 16 bites szó volt másodpercenként, de a végleges változatban ez másodpercenként 80000 lett 115000 bit per másodperccel, ami sokkal nagyobb, mint a korábbi adatkezelő rendszerek esetén. A parancsvezérlő és a helyzetvezérlő számítógép kétprocesszoros/dual memóriás architektúrája itt is megtalálható, de itt nem foglalkoztak a hiba esetén fellépő automatikus átkapcsolással. Az újra konfiguráláshoz a földi irányító központból érkező és a parancsvezérlőn áthaladó külön utasításra van szükség. Megjegyzendő, hogy a helyzetvezérlő számítógépet a parancsvezérlő földi közreműködés nélkül is át tudja kapcsolni, mert ez sokkal kritikusabb a pontos irány megtartása miatt.

"...csak funkciókat írtunk." Egyik fontos funkció az alapvető időzítés nemcsak saját maga, hanem a teljes űrhajó számára. Arra is szükség van, hogy a három számítógép memóriája közül bármelyikből ki tudjon olvasni adatokat a parancsvezérlő utasítására. Don Johnson, az egyik mérnök határozta meg a többi követelményt és az illesztési felületeket (interface) a tudományos berendezésekkel. Rice "Mr. PDS"-nek hívta Johnsont, arra utalva, hogy ő gyakran többet tudott a tudományos műszerekről, mint maguk a tudósok. "Ha valaki elfelejtett valamit, Johnson tudta." Raymond L. Heacock, a Voyager Project Managere szerint Johnson igen nagy mértékben felelt a projekt sikeréért. Rice elmondta, hogy Johnson heves stílusa és hozzáértése nagyon jól működött abban a közvetlenséget előnyben részesítő környezetben és iteratív folyamatban, ahol az adatkezelő rendszer követelményeit kidolgozták. A küldetés során folyamatosan új szoftveres igények merültek fel, ez volt az egyik oka annak, hogy egy programozható gépet választottak. Néhány program kifejlesztését elhalasztották az indítás utánra, ilyen volt például a Szaturnusz találkozó programja, amikor a távközlési átviteli sebesség megfelelő volt és már speciális tudományos adatok is rendelkezésre álltak.

A folyamatos változtatás igénye miatt szükség volt némi korlátozásra az adatkezelő rendszer memóriáját illetően. 1976-ban Frewing 90%-os korlátot határozott meg rá, bár ezt később megszüntették, de ez a határ a szoftveres management nyugtalanságát mutatta a memóriatúlcsordulás lehetőségével kapcsolatban. Mivel a gép a memória alsó 4 K-ját tudta közvetlenül megcímezni, a programokat ott tartották, a felső 4 K-t pedig átmeneti adattárolónak használták. A későbbi fejlesztéseknek köszönhetően egy processzor már elérte mindkét memóriát. Így aztán a programok egy-egy másolata mindkét alsó címtartományban tárolódott és mindkét felső rész használhatóvá vált egy processzornak átmeneti tárolóként. Ha pedig dual módra volt szükség, akkor a memóriákat különválasztották. A folyamatos jó tapasztalatok miatt a memóriával kapcsolatban egyre nagyobb bizalom alakult ki. Először még teljes program-újrabetöltéseket elküldtek, amikor egy frissítés kész lett, de mostanában már megelégednek azzal, hogy a módosult programrészt küldik csak el. A memóriák közötti teljes redundancia sincs már automatikusan karbantartva.

Adatkezelő "operációs rendszer"

Mint a parancsvezérlőnek, az adatkezelőnek is van egy egyszerű operációs rendszere (az angol eredetiben: executive). Az idő huszonnégy 2,5 ezredmásodperces részletre van osztva, amit P periódusoknak neveznek. Mind a 24 P periódus egy képalkotó rendszer olvasási szakaszt reprezentál. 800 ilyen szakasz jelent egy adatkeretet. Minden P periódus kezdetén a szoftver automatikusan visszatér a 0000-ás címre, ahol egy olyan szubrutin hajtódik végre, ami meghatározza, hogy az adott P periódusban milyen funkciókat kell elvégezni. Nagy gondossággal ügyeltek rá, hogy a szoftver minden függő folyamatot befejezzen a 2,5 milliszekundumos periódusban, ezt is egyszerűbb volt elérni a végrehajtási idők szabványosításával (amikor a közvetlen memória-hozzáférési ciklust hozzáadták minden utasításhoz).

A Voyager jövője

A Voyager szoftverének fejlesztése a 80-as évek végéig folyt. Kohl, Wooddell, Greensburg, Deese, Johnson, Kopf és mások, akik nagyon szoros kapcsolatban álltak a Voyager számítógépének hardverével ekkor már más projekteken dolgoztak, de Rice és Blizzard kollégáikkal még folyamatosan programoztak parancsvezérlő és helyzetvezérlő gépekre; készítették a Voyager 2-t az Uránuszhoz, a Voyager 1-et pedig ahhoz, hogy felfedezze a napszél határait. Ahogy a szonda távolodott a Földtől, az adatátviteli sebességben egyre nagyobb problémák adódtak. Minél közelebb van a szonda a Földhöz, annál nagyobb átviteli sebességet lehet elérni. A betöltések, amik korábban percekig tartottak, most órákat vesznek igénybe, mert az újraadással működő hibaellenőrzés lelassult (a Voyager a kapott adatot visszasugározza a Földre). 1984 nyarán az adatkezelő szoftverének betöltése 4 órát vett igénybe és ezen nem lehetett javítani. A Voyager projekt tisztviselői úgy döntöttek, hogy az adatkezelőt kétprocesszoros módban használják elsőként az Uránusz találkozóra, hogy a képadatok tömörítését el tudja végezni. Így az információtartalom még magas maradt akkor is, amikor az átviteli sebesség már irtózatosan lelassult. A szonda a küldött üzeneteknek ma már egyébként csak nagyjából 20%-át fogja, de még ennél is nagyobb csoda, hogy az adói kb. 20 wattot fogyasztanak. Tehát a földi antennák már olyan érzékenyek, hogy egy olyan erőforrás jelét is fogni tudják mintegy 7 milliárd kilométerről, mint egy kis villanykörte!

A Voyager számítógépes rendszerét nem vitték át a következő JPL projektre. A Galileo egyesítette a CCS-t és az adatkezelő rendszert egyetlen "Command and Data System"-mé. Ez a JPL nézőpontjából véve logikus lépés volt, mert mindkét rendszer ugyanannak az információtechnológiai részlegnek a felelőssége alá tartozott. A helyzetvezérlést külön számítógépre bízták. A Voyager funkcionálisan elosztott rendszerével és redundanciájával ellentétben a Galileo már több számítógépet tartalmazott, amelyek ténylegesen elosztott módban működtek és a redundanciának is új elképzelését használták.