maanantai 28. marraskuuta 2016

Tietokone, osa 4: Mitä tietokoneeseen kuuluu?

(NASA:n insinöörejä IBM 7094 -tietokoneen ääressä vuonna 1966.)

Viime viikolla kävimme läpi matemaattisia perusteita, joiden päälle tietokone rakentuu. Tällä viikolla on aika pistää ne hyötykäyttöön. Tässä osassa käymme (pintapuolisesti) läpi tietokoneen historian ja perusosat, jonka jälkeen siirrymme ohjelmoimaan koneen omalla kielellä. Viikon lopuksi siirrymme ihmisen luettavaksi kelpaaviin kieliin. Jatketaan!

Elektroniaivoista älypuhelimiin

Aloitetaan historian oppitunnilla. Yksinkertaisia mekaanisia laskimia on ollut olemassa 1600-luvun puolestavälin alkaen; ranskalaismatemaatikko Blaise Pascalia pidetään ensimmäisen tällaisen rakentajana. 1800-luvun alkupuolella brittiläinen Charles Babbage suunnitteli differenssikoneen, joka olisi pystynyt valmistuessaan taulukoimaan polynomien arvoja. Projekti muistutti Olkiluoto kolmosta budjetin ja aikataulun kannalta, eikä se valmistunut ennen 1900-luvun loppupuolella aloitettua replikaprojektia. Suunnitelma osoittautui toimivaksi.

Babbage kuitenkin käänsi katseensa johonkin suurempaan, nimittäin laskimeen, jota voitaisiin ohjata suorittamaan erilaisia tehtäviä reikäkorteille tallennetuilla ohjelmilla. Reikäkortteja, siis sopivasti rei'itettyjä kartonginpaloja, käytettiin jo siihen aikaan kuvioiden määräämiseen mekaanisissa kangaspuissa. Babbagen koneesta ei valmistunut kuin pieni osa, mutta suunnitelmassa oli kaikki nykyaikaisen tietokoneen osat. Sille jopa kehiteltiin ohjelmia — maailman ensimmäisenä tietokoneohjelmana pidetään menetelmää Bernoullin lukujen löytämiseen, ja kunnia siitä annetaan Ada Lovelacelle.[1]

Seuraava suuri askel otettiin toisen maailmansodan aikana. Liittoutuneet käyttivät saksalaisten koodien murtamiseen sähkömekaanisia Bombe-laitteita. Näiden parissa brittien koodinmurtokeskuksessa Bletchley Parkissa työskenteli Alan Turing, joka oli ennen sotaa tehnyt tutkimusta ratkaistavista ja mahdottomista ongelmista. Tämän tuloksena syntyi teoreettinen kone, joka pystyy ratkaisemaan kaikki ratkaistavat tehtävät, kunhan aikaa ja muistitilaa on tarpeeksi. Näitä kutsutaan Turingin koneiksi, ja jokainen tietokone on (fyysisen todellisuuden rajoittama) esimerkki sellaisesta.

Sodan jälkeen rakennettiin ensimmäiset yleiset sähköiset tietokoneet. Kilpailevia projekteja oli paljon, ja sotilaallisista syistä niitä pidettiin salassa, joten en nimeä yhtään tämän kilpailun voittajaksi. Alkuun koneet pohjautuivat elektroniputkiin ja sittemmin paljon luotettavampiin transistoreihin, ja niiden kanssa kommunikointi tapahtui usein reikäkorteilla ja -nauhalla. Näistä edistyttiin kirjoituskonetta muistuttavaan näppäimistö-tulostin-yhdistelmään, ja edelleen lopulta näyttöpäätteeseen.

Tietokoneet olivat pitkään kalliita ja suuria, vaikka niiden koko pienenikin huoneesta jopa jääkaappiin. Ne olivat jaettuja usean käyttäjän kesken; jokainen otti yhteyttä keskuskoneeseen näppäimistö-näyttö-terminaaleillaan. Tähän tuli muutos 80-luvulle tultaessa, kun henkilökohtaiset tietokoneet tekivät läpimurtonsa Applen, Commodoren ja IBM PC:n muodossa. Alkuun näille surkean tehottomille koneille naurettiin isojen koneiden rinnalla, mutta niiden teho kasvoi räjähdysmäisesti ja lopulta ne syrjäyttivät isot koneet. Hiiri, internet, kosketusnäyttö — ja olemmekin nykyajassa.

Raa'an laskentatehon kehitys on hidastunut. Nyt laskentateho kasvaa rinnakkaisprosessoinnin, älykkäämmän käskynsuorituksen ja tiettyihin tehtäviin erikoistuvien komponenttien muodossa. Tulevaisuudessa kvanttiteknologia saattaa mullistaa laskennan. Emme kuitenkaan syvenny näihin, vaan keskitymme siihen, mikä yhdistää kaikkea tähänastista.

Prosessori ja sen käskeminen

Tässä sarjassa rajaudutaan tietokoneen ytimeen, prosessoriin. Prosessori on laite, joka suorittaa yksinkertaisia käskyjä. Käskyt ovat esimerkiksi muotoa "laske nämä kaksi lukua yhteen", "vertaa tulosta tähän lukuun" ja "jos tulos on nolla, hyppää vaiheeseen 1597". (IKEA-ohjeet ovat nynnyille.) Prosessori on kuin ihminen, jolla on laskin ja vähän suttupaperia. Tälle suttupaperille mahtuu vain muutama luku kerrallaan, ja niiden paikkoja kutsutaan rekistereiksi. Yleisimmissä malleissa on pari-kolmekymmentä rekisteriä, joihin mahtuu yleensä 64-bittisiä lukuja.

Rekisterien lisäksi prosessorilla on käytössään pitkäkestoisempaa muistia. Kuvitellaan laskijallemme vielä iso muistivihko, jonka jokainen sivu ja rivi on numeroitu. Nyt näille riveille voidaan tallettaa lukuja ja toimintaohjeita. Laskija siirtelee lukuja vihon ja suttupaperin välillä sekä lukee laskuohjeita vihosta. Nykytietokoneissa tätä muistia on vähintään parin miljardin tavun verran, ja monasti muutaman kertaa enemmän.

Tutustumme ensi kerralla paremmin käskyihin kuvitteellisen prosessorin kautta. Erilaisia prosessorityyppejä on nykyään käytössä kourallinen. Yleisimmät ovat tietokoneissa käytetty x86 ja puhelimista tuttu ARM; vaikka ne toimivat samoilla periaatteilla, ne eivät ole keskenään yhteensopivia eivätkä siksi voi suoraan käyttää samoja ohjelmia.

Muita lisälaitteita

Ohimennen voi olla hyvä mainita kolmas muistityyppi, kovalevynäkin tunnettu. Nämä alkujaan pyörivällä metallilevyllä ja sittemmin muistipiireillä toteutetut laitteet ovat kuin arkisto: sisältävät paljon tietoa mutta ovat reippaasti hitaampia käyttää kuin käden ulottuvilla oleva muistivihko. Hyvänä puolena niihin talletettu tieto säilyy vaikka koneen sammuttaisikin, mikä on iso plussa.

Prosessorin lisäksi tietokoneessa on paljon muutakin kivaa elektroniikkaa, kuten CD-asemia ja muistikortinlukijoita ja äänipiirejä ja häkkyrä jolla päästään nettiin ja aivan järkyttävän monimutkainen häkkyrä jolla voidaan piirtää kuvia näytölle. Nämä ovat prosessorin näkökulmasta kuitenkin kaikki samanlaisia lisälaitteita.

Keskiviikkona siirrymme ohjelmoimaan prosessoriamme ja katsomaan, mitä sillä saadaan aikaiseksi!


Kokeiltavaksi ja pohdittavaksi

[1] Minun on ihan pakko korostaa vielä tätä: todella suuri osa ohjelmoinnin pioneereista oli naisia. Esimerkiksi kunnia ensimmäisestä ohjelmointikielen kääntäjästä menee kontra-amiraali Grace Hopperille. Alasta tuli valitettavan miesvaltainen vasta myöhemmin.

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.