|
| ||||
| |
Į Mėnulį skridę kompiuteriai Taip pat skaitykite NASA gyvosios kaluliatorės Prieš 50 m. trys astronautai ir du kompiuteriai (vienas pagrindiniame laive ir kitas nusileidimo į Mėnulį modulyje) nuskrido link Mėnulio (skaitykite Žmonės Mėnulyje). Astronautai iškart tapo įžymybėmis, o kompiuteriai, padėję valdyti laivą ir valdyti juos, žinomi tik siaurame technofilų rate. Sunku įvertinti NASA drąsą panaudoti kompiuterį Apollo misijoje. Tuo metu kompiuteriai buvo gremėzdiški, nerangūs ir reiklūs energijai. Tuo tarpu Apollo valdymo kompiuteris (AGC) turėjo tilpti prietaisų skyriuje mažesniame už rankinį bagažą ir naudoti ne daugiau energijos nei elektros lemputė ir kartu būti visiškai patikimas, nes jo gedimas galėjo kainuoti astronautų gyvybes. Entuziastai iššifravo kelias AGC programinės įrangos versijas ir jas paskelbė Internete. Tiesa, nelengva skaityti kodą,
parašytą ezoterine ir pasenusia programavimo kalba. Norint suprasti ką kompiuteriai turėjo vykdyti, panagrinėkim Mėnulio
modulio darbinę apkrovą kritiniu momentu automatinio nusileidimo metu. Pirmąja užduotimi buvo navigacija: padėties,
greičio ir laivo orientacijos nustatymas, o tada trajektorijos į nusileidimą tašką sudarymas. Duomenys ateidavo iš
giroskopų, greičio daviklių, inercinės orientavimosi sistemos, vėliau papildytos radariniu aukštimačiu. Ją paskaičiavus,
pasukti variklio žiotis, kad kapsulė išlaikytų kursą. Tuo pat metu jis privalėjo reguliuoti traukos jėgą, kad palaikytų teisingą
žemėjimo greitį. Šios užduotys buvo ypač sudėtingos, nes naudojant kurą keitėsi modulio masė ir svorio centras, o
išmetamų dujų čiurkšlė buvo labai nestabili tad Mėnulio modulis buvo tarsi šluota, kurią reikia išlaikyti vertikaliai ant delno.
AGC buvo sukurtas MIT Ch.S Draperio įkurtoje prietaisų laboratorijoje, skirtoje elektronikai balistinėms raketoms ir jai jis buvo pirmasis pilnai programuojamas kompiuteris. Inžinieriai panaudojo naują technologiją: silicio integralinę schemą. Kiekvienas Mėnulio misijos kompiuteris turėjo apie 2800 mikroschemų ant silicio, po 6 tranzistorius mikroschemoje. Atminčiai buvo panaudoti feritiniai toroidai, įmagnetinami bet kuria kryptimi (perteikiant 0 arba 1). Daugelis jų buvo skirti tik skaitymui, atminties turinys užfiksuotas pagaminimo momentu. Visa tai buvo sutalpinta į metalinį korpusą, o astronautai su juo komunikavo per DSKY, atrodantį lyg mikrobangų krosnelės valdymo panelė su skaitmenine klaviatūra, keliais papildomais klavišais ir displėjumi, atvaizduojančiu 21 ryškiai žalius skaitmenis. Svarbiu sprendimu buvo žodį sudarančių bitų kiekis buvo pasirinkta 16 bitų, iš kurių 1 bitas rezervuotas klaidų tikrinimui, tad duomenims, adresavimui ir komandoms buvo naudojama tik 15 bitų, kas reiškė skaitines reikšmes iki 32K, tačiau buvo galima žodžius grupuoti užtikrinant didesnes reikšmes. Pradiniame variante pirmi 3 komandos žodžio bitai reiškė operacijos kodą, o likę 12 buvo adresas. 3 bitai reiškė, kad galimos tik 8 komandos, o 12 bitų leido adresuoti 4096 žodžius. Inžinieriai rado būdus apeiti tuos apribojimus atmintį suskirstydami į kelias rėvas ir į Mėnulį skridusi versija buvo su 36.864 pastovios atminties žodžiais ir 2948-iais leidžiančiais užrašymą taigi apie 70 KB. Kas dėl greičio, - AGC galėjo vykdyti apie 40 tūkst. instrukcijų į sekundę. Minimalistinis aparatūrinis dizainas reikalavo ypatingų priemonių programinei įrangai. Esminis elementas buvo asemblerio kalbos naudojimas. AGC asemblerį sukūrė Hugh Blair-Smithas, inžinierius su gerais programavimo įgūdžiais didelėms ESM. Asembliuojama buvo meinfreime, ne pačiame AGC (tai vadinama kros-asembleriu). Meinfreime vyko ir programų vykdymo simuliacijos. Kita priemone buvo aukštesnio lygio kalbos interpretatorius, - kalbą sukūrė J. Halcombe Laningas, o interpretatorių daugiausia realizavo Charles A. Muntzas. Jis numatė matematinių koncepcijų panaudojimą be aritmetinių veiksmų ir matricas bei trigonometrines funkcijas. Tiek asemblerio, tiek interpretatoriaus komandos galėjo būti naudojamos kartu, tačiau to kaina buvo vykdymo sulėtėjimas. Executive programa, irgi suprojektuota Laningo, buvo tarsi miniatiūrinė OS. Ji tvarkė vykdymo laukiančių programų sąrašą atsižvelgdama į jų prioritetus. Smulkios tačiau svarbios užduotys galėjo įsiterpti kitoms programoms to net nepastebint jos buvo naudojamos signalams iš orientavimosi sistemos ir radarų apdorojimui. Bendrai paėmus, programinės įrangos kūrimas jam neatitiko dabartinių normų
(dabartiniu jų supratimu), nes buvo sunkokai suprantamas ir palaikomas, tačiau kodas, parašytas pagal dabartinį
Komentarai, palydintys kodą, aiškūs ir netgi patrauklūs ar šmaikštūs (pvz., viena konstantų lentelė turi imperatyvią antraštę Noli Se Tangere, kas Biblijos įkvėpta lotynų kalba reiškia Neliesk!, o kita konstanta palydima su Numero mysterioso; atminties trūkumo atvejis palydimas su Viešbutyje neliko laisvų kambarių. Vienoje vietoje skatinama: Astronaute: paleisk tą kvailą dalyką, o tikrinant, ar astronautas laikėsi reikalavimų, priduriama: Pažiūrėk, ar jis nemeluoja). Užuominos į užgaidas sutinkamos ir paprogramių varduose bei žymėse (pvz., įjungianti variklius programa pavadinta BURNBABY, su aliuzija į Burn, baby, burn! šūkį, susijusį su 1965-ųjų juodaodžių maištu Los Andželo Wattso priemiestyje). Dauguma programuotojų buvo jauni ir aiškiai labai protingi, jie suformavo sutelktą grupę, kurioje aiškiai plito savi pokštai, nepriklausomai nuo to, kokia svarbi buvo užduotis. Be to, jie dirbo MIT, kuriame hakeriška kultūra turėjo ilgą kvailiojimo tradiciją. Vis tik projektą prižiūrėjo NASA ir kiekviena programinės įrangos iteracija buvo peržiūrima ir aprobuojama įvairiuose federalinės biurokratijos lygiose. Tad labiausiai stebina ne tai, kad šmaikštumai buvo įrašyti kode, o tai, kad jų nepanaikino koks nors humoro nesuprantantis funkcionierius
Nė vienas AGC skrydžio metu neišėjo iš rikiuotės, tačiau buvo jaudinimosi akimirkų. Kai leidosi nusileidimo modulis Erelis (Eagle), DSKY displėjus nelauktai pranešė apie programinį pavojaus signalą su 1202 kodu (apie nusileidimą Mėnulyje ir šio pavojaus gavimą skaitykite Aklas nusileidimas). Armstrongas su Oldrinu nežinojo, ar tęsti nusileidimą ar grįžti į pagrindinį laivą. Hjustono valdymo centre sprendimą priėmė Steve Bales, pasirinkdamas Tęsti! Tuo metu MITe buvo ieškoma, kas galėjo iššaukti tą signalą. Atitinkamoje programų sąrašo eilutėje paaiškinantis komentaras skelbė: Bazinių rinkinių daugiau nėra. Kaskart, kai Executive startuodavo naują užduotį, jis naujam procesui išskirdavo 11 žodžių. Tam buvo numatyta atmintis tik 8 iškvietimams. Jei Executive užprašydavo daugiau nei 8-is duomenų rinkinius, buvo užprogramuotas klaidos kodas 1202. Tačiau kaip tai galėjo būti, jei nusileidimo metu niekad nebuvo daugiau 8-ių galimų vykdymui užduočių? Viena tų užduočių buvo stambi: SERVICER vykdė visus navigacijos, valdymo ir kontrolės paskaičiavimus. Ji buvo numatyta vykdyti kas 2 sekundės ir turėjo per tą laiką baigtis. Dėl kažkokios priežasties skaičiavimai truko ilgiau nei reikėjo. Viena SERVICER kopija vis dar tebeveikė, kai buvo paleista nauja, sukurdama neužbaigtų užduočių sąrašą. Vis tik situacija nebuvo didele paslaptimi ir buvo pastebėta per testinius bandymus. Du išsisinchronizavę maitinimo šaltiniai vertė radarą siųsti netikrų signalų srautą, kurį AGC tvarkingai apdorodavo. Kiekvienas impulsas užimdavo vieną kompiuterio atminties ciklą, trunkantį apie 12 ms. Radaras gali siųsti iki 12800 impulsų į sekundę, kurie galėjo suryti iki 15% kompiuterio pajėgumo. Projektuotojai buvo numatę 10% atsargą. Apie šios anomalijos priežastis buvo daug rašyta, tačiau nuomonės išsiskyrė dėl to, kas dėl to buvo kaltas ir kaip to buvo galima išvengti. Daugelyje kompiuterinių sistemų kritinio resurso išnaudojimas iššaukia fatalią klaidą ir sistema liaunasi dirbusi. Vis tik AGC sureagavo kitaip jis visaip bandė susitvarkyti su kilusia padėtimi ir tebedirbo. Po kiekvieno avarinio signalo BAILOUT procedūra pašalindavo visas Executive vykdomas užduotis, o tada restartuodavo svarbiausias jų. Tai kažkas panašaus į kompiuterio restartą...
2003 m. Ronald Burkey stebėjo filmą apie Apollo 13 misiją, pasibaigusią sprogimu skrendant link Mėnulio. Jame kelis kartus šmėkštelėjo DSKY vaizdas ir R. Burkey, dirbęs su Įterptinėmis (embedded) kompiuterinėmis sistemomis, nusprendė išsiaiškinti AGC. Jis sutarė su MIT muziejumi, kad jam leis nuskenuoti kodą, o tada daugelis savanorių padėjo atgaminti kodą iš 3500 puslapių skanuotų vaizdų. Galiausiai jis ne tik sukūrė virtualų AGC, bet ir naują asemblerį (originalus vis tik būtų neveikęs šiuolaikiniuose kompiuteriuose). Vėliau gauti skenai ir kitoms Apollo misijoms. Jie prieinami virtualaus AGC svetainėje. *) Margarita Hamilton (Margaret Elaine Hamilton, 1936-2026) amerikiečių informatikė,
verslininkė. Vadovavo MIT matavimo sistemų laboratorijos programinės įrangos kūrimo skyriui, kuris rengė borto PĮ Apollo misijoms.
Nutraukus Apollo programą, Draperio laboratorija tapo nepriklausoma nuo MIT ir M. Hamilton
1976 m. įsteigė Higher Order Software (klaidų išvengimo ir darbo sutiko PĮ srityje; vienas produktų - USE.IT), o 1986 m. - Hamilton Technologies
(susijusi su USL kalba ir ja paremta automatizacijos aplinka).
1986 m. gavo Ada Lovelace premiją, įsteigtą Moterų kompiuterijoje asociacijos, 2003 m. gavo
Išskirtinę NASA premiją, o už darbą su NASA 2016 m. B. Obama jai įteikė Prezidentinį laisvės medalį. SAGE projektas jai uždėjo antspaudą klaidų paieškai ir jų vengimui. Vėliau ji prisiminė: Papildomi šaltiniai:
NSO.LT svetainė |