Hannu ja dinosaurus
Professori Esko Ukkonen
On kuuma kesäkuu vuonna 1972. Eletään esi-VAXiaanista dinosaurusten aikaa, Intelistä ja mikroprosessoreista emme ole kuulleet mitään. Yliopiston tietokonesalissa humisee uusi, upea Burroughs B6700. Istun tentissä Porthaniassa. Tarkoitus on korottaa B6700-tietojenkäsittelyjärjestelmä -kurssin arvosanaa.
Valmistautumiseni on niin ja näin - sinä kesänä sattui olemaan muutakin tekemistä. Tiedän varmuudella, että tässä kuulustelussa arvosanani ei tule paranemaan aukollisin tiedoin. Pian huomaan, että ei tule mitään. B6700:n aikaansa edellä oleva hienostunut pinoarkkitehtuuri ja taikurimaiseen bittiakrobatiaan pystyvät koneoperaattorit [1] eivät ole vieläkään kunnolla tarttuneet päähäni. Taidan olla väärällä alalla. Luovutan, piirrän paperiin tyhjän joukon merkin ja marssin ulos. Tentaattorini Hannu Erkiö - eräs tietojenkäsittelyopin laitosta pystyssä pitävistä nurkkamiehistä - on ottanut selkävoiton.
B6700 -kurssin tarina osaltani ei pääty tähän. Vielä on tehtävä harjoitustyö. Saan Hannulta aiheeksi tutkia Extended Algol -kielen tehokkuutta B6700:ssa: 'Tarkoituksena on saada tietoa eräiden Extended Algolin piirteiden tehokkuudesta verrattuna mahdollisiin vaihtoehtoisiin ohjelmaratkaisuihin. Eri ratkaisujen tilankäyttöön on myös syytä kiinnittää huomiota sopivissa kohdissa.'
Kokeilen kaikenlaista, mutta näköjään en aivan kaikkea, mitä 9-kohtaisessa tehtävänmäärittelyssä pyydettiin. Teen vertailut kahdella kellotaajuudella, 5 M ja 2.5 M. Huomaan, että kellotaajuuden ja seinäkelloajan suhde on venyvä käsite: tilanteesta riippuen ajoaika kasvaa pienimmillään 2% ja enimmillään 94%, kun kellotaajuus pudotetaan puoleen. Kaksinkertaiseen aikaan en pääse millään. Onkohan Turingin kone sittenkin hieman ylipelkistetty sopiakseen oikean tietokoneen malliksi? Edistyn muutenkin, sillä saan työstä arvolauseen, joka on hieman parempi kuin kurssista. Hannulta tulee myös seikkaperäistä palautetta:
-”Eräissä kohdin olisi pitänyt miettiä tutkimisen mielekkyyttä vähän tarkemmin.”
- ”Ohjelmat (ovatko vielä tallessa?).”
Seuraavaksi löydän itseni professori Martti Tienarin tutkimusavustajana tekemässä ”iterointiprosessin mantissan pituuden kontrolliin liittyviä numeerisia kokeita” [2]. Tekeillä on professorin artikkeli [3] kansainväliseen kongressiin. Tutkimme vaihtelevan tarkkuuden aritmetiikkaa, sellaista jossa laskentatarkkuus voidaan valita tilanteen vaatimusten mukaisesti. Käytettävissä on ainutlaatuinen, erittäin stabiiliksi osoittautuva työkalu, Hannun vastikään B6700:lle toteuttama 'REALV Algol' [4]. Tällä kielellä kirjoitetussa ohjelmassa saattoi dynaamisesti ohjelman toiminnan aikana vaihtaa reaalilukuesityksen ja aritmetiikan tarkkuutta.
Tarkastelun kohteena on Newtonin iteraatiomenetelmä funktion nollakohdan löytämiseksi. Mitä laskentatarkkuutta pitää eri iteraatiokierroksilla käyttää, jotta tietokoneen liukulukulaskennan pyöristysvirheet eivät pilaisi tulosta? Työtehtävänäni on kokeilla muunnelmia menetelmästä, jonka perusideana on ennustaa edellisten iteraatiokierrosten antamien tulosten avulla, kuinka lähelle nollakohtaa tullaan pääsemään seuraavalla kierroksella. Tämän perusteella määrätään sitten seuraavan kierroksen laskentatarkkuus niin, että tuloksen tarkkuus ei oleellisesti heikkene pyöristysvirheiden takia.
Newtonin iteraatio syöksyy kohti funktion nollakohtaa funktion kuvaajan tangenttia pitkin ja näin ollen konvergoi 'neliöllisesti'. Käytännössä tämä tarkoittaa, että laskentatarkkuus pitää suunnilleen kaksinkertaistaa jokaisella iteraatiolla, jotta tuloksen tarkkuus ei kärsi. Kokeissamme aloitettiin iteraatiot muutaman (oktaali)numeron tarkkuudesta ja viimeistään seitsemännellä tai kahdeksannella kierroksella piti jo käyttää noin 300 numeron mantissaa.
Hannu luennoi keväällä 1974 kurssin B6700-tietojenkäsittelyjärjestelmä, jonka pohjalta koottiin samanniminen luentomoniste helpottamaan luentojen seuraamista ja pitämistä jatkossa. Merkinnät kuvan monisteessa Timo Alangon.
Näitä menetelmiä ohjelmoin REALV Algolilla reikäkorteille, juoksutin korttipakkoja B6700:n ajojonoon tietokoneoperaattoreiden ankaraan valtakuntaan ja piirustelin saaduista tuloksista graafisia esityksiä millimetripaperille. Joskus käyrissäni oli odottamattomia mutkia, joita professori kutsui ”anomalioiksi”. Sanavarastoni laajeni.
REALV Algol teki osuutensa erinomaisen luotettavasti. En vielä silloin ymmärtänyt, kuinka harvinaista sellainen on näissä piireissä. Muistelen että systeemin toiminnassa ei ollut mitään huomautettavaa ja jos olikin, Hannu teki tarvittavat ylläpitotoimet sittemmin kaikille tutuksi tulleeseen tapaansa: nopeasti, tarkasti ja kaikki asiaan vaikuttavat seikat harkitusti huomioon ottaen.
Viitteet:
[1] A.J.W. Mayer: The architecture of the Burroughs B5000 - 20 years later and still ahead of the times? ACM SIGARCH Computer Architecture News 10,2 (1982), 3 - 10.
[2] E. Ukkonen: Iterointiprosessin mantissan pituuden kontrolliin liittyviä numeerisia kokeita. Laudaturtyö. Raportti C-1973/29. Tietojenkäsittelyopin laitos, Helsingin yliopisto.
[3] M. Tienari: On the control of floating-point mantissa length in iterative computations. Kongressijulkaisussa: Proc. International Computing Symposium 1973 (Davos), ss. 315 - 322. North-Holland 1973.
[4] H. Erkiö: An extension of Algol with variable precision floating-point arithmetic. Report A-1973/2. Department of Computer Science, University of Helsinki.