6. Tietokoneet ja tietojenkäsittely



Samankaltaiset tiedostot
6. Tietokoneet ja tietojenkäsittely

6. Tietokoneet ja tietojenkäsittely

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Ongelma(t): Mihin perustuu tietokoneiden suorituskyky ja sen jatkuva kasvu? Mitkä tekijät rajoittavat suorituskyvyn parantamista ja mitkä niistä ovat

Ongelma(t): Mihin perustuu tietokoneiden suorituskyky ja sen jatkuva kasvu? Mitkä tekijät rajoittavat suorituskyvyn parantamista ja mitkä niistä ovat

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut.

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

ELEC-C7110 Informaatioteknologian perusteet

Kombinatorisen logiikan laitteet

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

Ohjelmoijan binaarialgebra ja heksaluvut

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Työasema- ja palvelinarkkitehtuurit (IC130301) Apumuistit. Kiintolevyt. 5 opintopistettä. Petri Nuutinen

811120P Diskreetit rakenteet

13. Loogiset operaatiot 13.1

LIITE. asiakirjaan. komission delegoitu asetus

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

13. Loogiset operaatiot 13.1

LAUSEKKEET JA NIIDEN MUUNTAMINEN

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa

Tietojenkäsittelyn historiaa

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

Ohjelmoinnin perusteet Y Python

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

Merkitse kertolasku potenssin avulla ja laske sen arvo.

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

CUDA. Moniydinohjelmointi Mikko Honkonen

etunimi, sukunimi ja opiskelijanumero ja näillä

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

4. Lausekielinen ohjelmointi 4.1

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

SISÄLLYS - DIGITAALITEKNIIKKA

ELEC-C5070 Elektroniikkapaja (5 op)


Tietotyypit ja operaattorit

Johdatus Ohjelmointiin

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

2 Konekieli, aliohjelmat, keskeytykset

Java-kielen perusteet

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Signaalien datamuunnokset. Näytteenotto ja pito -piirit

Kappale 20: Kantaluvut

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Julkaiseminen sallittu vain koulun suljetussa verkossa.

Ratkaisu. Ensimmäinen kuten P Q, toinen kuten P Q. Kolmas kuten P (Q R):

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Käyttöjärjestelmän rakenne

Virtuoosi POS-järjestelmien joukossa

MUISTIPIIRIT H. Honkanen

Ehto- ja toistolauseet

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

90 ryhmän 1 huomautuksen f alakohdan nojalla. Näin ollen tavara luokitellaan CN-koodiin muuksi titaanista valmistetuksi tavaraksi.

Datatähti alkukilpailu

Digitaalilaitteen signaalit

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Onnistunut ohjelmistoprojekti

Ohjelmoinnin peruskurssi Y1

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

Luento 2: Tiedostot ja tiedon varastointi

Varhaiset brittiläiset tietokoneet

Murtolukujen peruslaskutoimitukset Cuisenairen lukusauvoilla

} {{ } kertaa jotain

Java-kielen perusteet

1. Keskusyksikön rakenne

Ohjelmoinnin perusteet Y Python

BL40A1711 Johdanto digitaalielektroniikkaan - Johdanto integroituihin digitaalipiireihin

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Ohjelmoinnin perusteet Y Python

11. Javan toistorakenteet 11.1

Matematiikan tukikurssi

11/20: Konepelti auki

Koostaneet Juulia Lahdenperä ja Rami Luisto. Enigma. Kuvaus: Johdanto salakirjoituskone Enigman saloihin sekä välineet oman Enigman valmistamiseen.

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

811312A Tietorakenteet ja algoritmit I Johdanto

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Python-ohjelmointi Harjoitus 2

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

12. Javan toistorakenteet 12.1

Luento 1 Tietokonejärjestelmän rakenne

finnish BOI 2015, päivä 1. Muistiraja: 256 MB

Java-kielen perusteita

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

12. Javan toistorakenteet 12.1

Transkriptio:

K. Kilkki (2015) Informaatioteknologian perusteet 162 6. Tietokoneet ja tietojenkäsittely Tietotekniikan sanoista ja historiasta Kun sanan tietojenkäsittely laittaa hakukoneeseen, 211 yksitoista ensimmäistä tulosta viittaa tavalla tai toisella ammattikorkeakouluihin, kahdestoista on Wiktionaryn sivu koskien termiä tietojenkäsittely. 212 Sen sijaan sana tietotekniikka antaa erilaisen listan: Wikipedian tietotekniikkaa käsittelevä artikkeli on ensimmäisenä ja Aalto-yliopiston tietotekniikan koulutusohjelma on kolmantenatoista. Tietojenkäsittely on siis ilmeisesti jotain käytännöllistä kun taas tietotekniikka on hieman akateemisempi ja ehkä laaja-alaisempi termi. Suurta epäselvyyttä oli aikanaan nykyisin tietokoneeksi kutsuttujen laitteiden nimeämisessä. Vielä 1950-luvulla nimeämiskäytäntö vaihteli suuresti. Suomen Akatemian kielilautakunnan kokouksessa joulukuussa 1959 esitettiin, että käyttöön otetaan nimenomaan sana tietokone, eikä esimerkiksi tiedin, jota myös oli ehdotettu. 213 Käytännössä tietokone vakiintui terminä 1960-luvun aikana. Ensimmäinen Teknillisen korkeakoulun diplomityö, jossa käytettiin sanaa tietokone, on vuodelta 1961. 214 Samaan aikaan Reikäkortti-lehti muutti nimensä Tietokone-lehdeksi ja Reikäkorttiyhdistys Tietokoneyhdistykseksi. Toisaalta yleinen tietämys tietokoneista tuli paljon myöhemmin. Esimerkkinä, 8-osainen Suuri Tietokirjan viides osa, jonka kolmas tarkistettu painos on vuodelta 1966, sisältää kolmen sivun artikkelin hakusanalla Matematiikkakone - laskeva robotti. Artikkelissa ei esiinny sanaa tietokone vaan termit sähköaivot ja numerokone synonyymeinä matematiikkakoneelle. Ohjelmoinnista ei mainita sanaakaan. Kun monet ohjelmointikielet, kuten Fortran ja Cobol, oli kehitetty jo lähes kymmenen vuotta aiemmin, niin nykyisenä internetaikana tuollainen jälkeenjääneisyys tuntuu lähes käsittämättömältä. Entä tietotekniikka? Tietotekniikka on terminä vielä myöhäisempää perua: se on otettu laajempaan käyttöön vasta 1980-luvun aikana. Teknillisessä Korkeakoulussa perustettiin tietotekniikan koulutusohjelma vuonna 1985. Tekniikkana tietokone on kuitenkin paljon 211 Tässä tapauksessa hakukone on www.bing.com, mutta tulos on olennaisesti sama muillakin hakukoneilla. 212 http://en.wiktionary.org/wiki/tietojenk%c3%a4sittely. J. Korpela on kerännyt datatekniikan sanastoja osoitteessa: http://www.cs.tut.fi/~jkorpela/dt.html8 213 J. Suominen, Sähköaivo sinuiksi, tietokone tutuksi. Tietotekniikan kulttuurihistoriaa, Jyväskylä 2000. Osa löytyy netistä osoitteessa http://www.tuug.fi/~jaakko/tutkimus/suominen_tietokonesana.html. Tekstistä ilmenee myös että ensimmäisenä sanaa tietokone käytti Volter Kilpi vuonna 1944. 214 Tenttu-tietokanta, http://www.otalib.fi/tkk/inssi/

K. Kilkki (2015) Informaatioteknologian perusteet 163 vanhempi, mutta kuinka vanha? Seuraava lyhyt katsaus tietotekniikan alkuvaiheisiin ja kehitykseen perustuu pääosin Walter Isaacsonin näkemykseen. 215 Ensimmäisen tietokoneen (computer) arvonimi on kiistanalainen kysymys, johon voidaan vastata täsmällisesti vain määrittelemällä tietokone riittävän tarkasti. Voidaan vaatia, että tietokoneen on oltava digitaalinen, toiminnaltaan täysin sähköinen, ohjelmoitava, yleiskäyttöinen ja toimiva. Näillä kriteereillä ensimmäisen tietokoneen arvon saa ENIAC (Electronic Numerical Integrator And Computer), kuvassa 6.1. ENIAC:n kehityksen rahoitti USA:n armeija alkuperäisenä tavoitteena laskea ballistisia liikeratoja. Laskutoimitukset olivat erittäin hankalia suorittaa mekaanisilla laskimilla ja ihmistyövoimalla. Kuva 6.1. ENIAC. 216 Parhaimmillaan ballistisia laskutoimituksia teki yli 170 henkeä, pääosin naisia, mutta tarvittavia taulukoita ei pystytty silti laskemaan riittävän nopeasti. Tällä puutteella oli jopa sotilaallista merkitystä. ENIAC valmistui kuitenkin vasta toisen maailmansodan loputtua, joten se ei ehtinyt vaikuttaa sodan kulkuun toisin kuin eräät muut laskentakoneet. Valmistuessaan marraskuussa 1945 ENIAC oli yli sata kertaan nopeampi kuin mikään aikaisempi laskukone. Lisäksi se oli suunniteltu siten, että sillä voitiin tehdä periaatteessa minkälaisia 215 Walter Isaacson: The Innovators, How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution, Simon & Schuster, 2014. Suositeltava kirja kaikille tietotekniikan historiasta kiinnostuneille. 216 http://en.wikipedia.org/wiki/eniac#mediaviewer/file:eniac.jpg.

K. Kilkki (2015) Informaatioteknologian perusteet 164 laskutoimituksia tahansa. Ensimmäiseksi, jo ennen koneen julkistamista, sillä tehtiin vetypommin 217 toimintaan liittyviä laskelmia. Laskukoneita siis oli jo kauan ennen ENIAC:ia, eikä ENIAC syntynyt tyhjiössä vaikka se sisälsikin 17 468 tyhjiöputkea. Mekaanisia laskukoneita kehitettiin erityistarkoituksia varten kuten Yhdysvalloissa vuoden 1890 väestölaskennan tarpeisiin kehitetty reikäkorttikone. Käytännössä pitää kuitenkin siirtyä 1930-luvun lopulle ennen kuin mitään todella merkittävää tapahtuu laskentakoneiden alalla. Alan pioneereihin kuului saksalainen Konrad Zuse, joka rakensi mekaanisen laskentakoneen vuonna 1938. Laitteen toiminta ei kuitenkaan ollut kovin luotettavaa, eivätkä sähkömekaaniset versiot laitteesta koskaan valmistuneet. 218 Samaan aikaan AT&T:n tutkimuslaboratoriossa (Bell Labs) saatiin vuonna 1939 valmiiksi sähkömekaaninen laskin. John Atanasoff (USA, Iowan osavaltio) rakensi tietokoneen prototyypin vuosina 1939-42. Vaikka hän käyttikin laskentaan tyhjiöputkia, muisti perustui mekaanisesti pyörivään rumpuun, joka olennaisesti hidasti laitteen toimintaa. 219 Atanasoff ei saanut laitettaan koskaan toimintakuntoon eikä se ollut ohjelmoitava, sillä se kykeni vain tietyntyyppisten yhtälöryhmien ratkaisemiseen. IBM rakensi Howard Aikenin johdolla 1940-luvun alussa laskentakoneen, nimeltään Mark I, mutta siinä käytettiin mekaanisia kytkimiä, joita ohjattiin sähkömoottoreilla, joten kaikkia edellä esitettyjä tietokoneen kriteerejä sekään ei täyttänyt. 220 Lisäksi Iso-Britanniassa rakennettiin toisen maailmansodan aikana digitaalinen laskentakone, nimeltään Colossus, murtamaan Saksan edistyksellisimmät salakirjoitukset. 221 Aikaisemmin esitettyä tietokoneen määritelmää Colossus ei täysin täytä, sillä se pystyi vain yhden ennalta määritellyn ongelman ratkaisuun. Miksi kaikki tämä tapahtui juuri 1930-luvun lopulla ja 1940-luvun alussa? Mekaanisia ja jopa sähkömekaanisia koneita olisi voitu rakentaa jo aikaisemmin. Ehkä riittävän suurta tarvetta ei aikaisemmin ollut, jotta toimivan laskentakoneen kehittämiseen vaadittu monipuolinen osaaminen olisi saatu koottua yhteen paikkaan. Näyttää siltä, että vasta armeijan laskentatarpeet toivat riittävän kimmokkeen tietokoneiden järjestelmälliseen kehittämiseen. Tämä yhdistettynä muutamaan nerokkaaseen ajattelijaan, erityisesti on mainittava Alan Turing ja John von Neumann, johti muutamassa vuodessa merkittävään kehitykseen, 217 Tämä siis tapahtui maailmansodan jo päätyttyä. 218 Zuse rakensi uusia versioita laskentakoneestaan toisen maailmansodan aikana, mutta Saksan armeija ei missään vaiheessa kiinnostunut projektista. http://waste.informatik.hu-berlin.de/diplom/ww2/zuse_e.html 219 Tyhjiöputket olivat vielä tällöin kalliita. 220 Aiken oli hyvin perillä Charles Babbagen laskentakoneesta. 221 Salakirjoitusten onnistuneella purkamisella oli ilmeisesti merkittävä vaikutus sodan kulkuun.

K. Kilkki (2015) Informaatioteknologian perusteet 165 voisi sanoa jopa harppaukseen. Toisaalta tarvittiin lukuisia insinöörejä ja teknikkoja toteuttamaan hienot ajatukset käytännössä (ENIAC painoi 27 tonnia ja siinä oli noin 5 miljoonaa juotosta, joten yksinäinen nero ei olisi sitä koskaan pystynyt kokoamaan). Tarvittiin siis todellinen pakottava tarve, syvällinen ymmärrys tehtävän luonteesta, riittävä yleinen tekniikan taso ja paikka johon kaikki kertynyt taito ja tietämys saatiin koottua yhteen. Nämä kaikki vaatimukset täyttyivät vasta USA:ssa toisen maailmansodan aikana. Iso-Britannia oli myös sangen lähellä läpimurtoa, mutta tehtävän luonteesta johtuen projekti oli ehkä liian salainen, jotta sen kehitys olisi voinut luontevasti jatkua yleiskäyttöisen tietokoneen suuntaan. Entä patentit, miksi Bellin puhelimelle myönnettiin aikanaan patentti, mutta kenellekään ei myönnetty patenttia koskien yleiskäyttöisen tietokoneen toimintaperiaatetta ja rakennetta? Monimutkaista todellisuutta hieman oikoen voidaan sanoa, että John von Neumann halusi tietokoneen toimintaperiaatteen vapaaseen käyttöön ja teki tämän julkaisemalla laajan artikkelin ennen kuin kukaan ehti jättää asiaa koskevia patenttihakemuksia. 222 Kuten kuvitella saattaa, tietokoneen patenteista seurasikin melkoisia kiistoja, kun useat henkilöt, erityisesti John Atanasoff sekä ENIAC:n keskeisimmät kehittäjät Presper Eckert ja John Mauchly, katsoivat, että heidän olisi pitänyt voida patentoida tekemänsä keksinnöt. ENIAC:iin liittyvistä patenteista käytiin kiistaa vuoteen 1973 asti, jolloin yhden oikeusasteen päätöksen jälkeen silloiset kiistan osapuolet, Sperry ja Honeywell, sopivat asian keskenään. 223 Tietojenkäsittelyn alkuvaiheet Mikään olennainen osa tietotekniikkaa ei siis alun perin syntynyt yliopistoissa. Muutenkaan ennen 1930-luvun loppua ei juuri ollut monialaisia tutkimuslaitoksia, joissa olisi yhdistynyt teoreettinen osaaminen, käytännöllinen insinööritaito ja tehokas tutkimuksen tavoitteellinen johtaminen. Sen sijaan, monet merkittävät keksinnöt ovat syntyneet paljolti sattumalta; penisillini on tästä tyypillisimmin mainittu esimerkki. Tosin penisilliinikin vaikutus havaittiin ensimmäisen kerran jo 1897, sitten unohdettiin ja havaittiin taas uudelleen vuonna 1928. Massatuotantoon penisilliini saatiin pitkällisen ja systemaattisen tuotekehityksen jälkeen toisen maailmansodan aikana. 224 Sama kaava toistuu monissa teknisissä 222 Von Neumann, John. "First Draft of a Report on the EDVAC.", Moore School of Electrical Engineering, Univ. Of Pennsylvania, June 30, 1945, http://www.virtualtravelog.net/wp/wp-content/media/2003-08-thefirstdraft.pdf. Projektin hallinnoimisesta vastannut Herman Goldstine levitti julkaisun paperikopiota useille eri tahoille. Paperi johti useisiin muihin tietokoneiden kehitysprojekteihin, joita ei mitä ilmeisimmin muuten olisi yhtä nopeasti syntynyt. 223 Huomatkaa, että patentit ovat arvokas kauppatavara, joka voi vaihtaa moneen kertaan omistajaa patentin voimassaoloaikana (tyypillisesti ns. patenttisalkun mukana). Alkuperäiset keksijät saavat yleensä kertakorvauksen keksinnöstään ja parhaassa mutta harvinaisessa tapauksessa jonkun osuuden patentin laskennallisesta tuotosta. 224 http://en.wikipedia.org/wiki/penicillin

K. Kilkki (2015) Informaatioteknologian perusteet 166 keksinnöissä. Perusidea esitetään varhain: ohjelmoinnin perusteet vuonna 1843 (Lovelace) ja puhelimen periaate vuonna 1854 (Boursel). Transistorin tapauksessa ensimmäinen keksijä lienee Julius Lilienfield, joka jätti jo 1920-luvun lopulla transistorin periaatetta koskevia patentteja, mutta minkäänlaista prototyyppiä hän ei silloisella teknologialla pystynyt rakentamaan. Transistorin kehittämiseen johtanut prosessi onkin esimerkki perusteellisesti valmistellusta ja rahoitetusta tuotekehitysprojektista. Projekti aloitettiin jo vuonna 1936 ja sen tarkoituksena oli kehittää luotettavampi, halvempi ja kooltaan pienempi vaihtoehto tyhjiöputkelle, johon siis ENIAC ja muutama muu ensimmäisistä tietokoneista perustui. Transistorin tapauksessa toinen maailmansota viivytti kehitystyötä, sillä avainhenkilöt olivat sodan aikana muissa tehtävissä. Transistorin kehitti lopulta ryhmä, jonka muodostivat John Bardeen, Walter Brattain and William Shockley. Heissä yhdistyi teoreettinen ymmärrys ja tekninen taito sekä Bardeenin ja Brattainin tapauksessa myös kyky kommunikoida tehokkaasti muiden tutkijoiden kanssa. 225 Lisäksi ehdottomana edellytyksenä projektin onnistumiselle oli korkeatasoinen ja monipuolinen tutkimusympäristö, jonka Bell Labs tarjosi. Bell Labs oli silloisen USA:n puhelinmonopolin AT&T:n tutkimusorganisaatio, jolla oli resursseja tukea jopa perustutkimusta. 226 Bell Labs käy siten hyvästä esimerkistä ainakin kolmeen ilmiöön: 1) Yksityisellä monopolilla (vaikka säädellyllä) on kyky luoda sekä aineellista että henkistä pääomaa, jota voidaan sitten käyttää tarkoituksiin jotka eivät palvele lyhyen ajan liiketoiminnallisia tarpeita. 227 2) Monopolit eivät yleensä ole kovin hyviä tuotteistamaan luomiaan keksintöjä. Lista keksinnöistä, joita Bell Labs:ssa on tehty, on hämmästyttävä mukaan lukien transistori, laser ja avaruuden taustasäteily. 228 Tutkimusten tuloksien kaupallinen hyödyntäminen on jäänyt useimmiten muille yhtiöille. 3) Se syntyykö johonkin monopolin kaltaiseen yritykseen luovaa toimintaa, riippuu myös siitä sattuuko sopivaan asemaan nousemaan henkilö, jolla on riittävä näkemys, kyky ja innostus luoda ja ylläpitää riittävän suuri ja monipuolinen ryhmä. Joskus nousee, useimmiten ei. 225 Shockley sen sijaan oli äärimmäisen hankala persoona, jolla oli tapana riitautua kaikkien kanssa. Tutkimusryhmä hajosi välittömästi transistorin keksimisen jälkeen. 226 Huomatkaa kuvan 2.3 puheluiden reaalihintojen kehitys USA:ssa vuosien 1920 ja 1940 välillä. Puhelinpalvelut olivat tuolloin mitä ilmeisimmin erittäin kannattavaa liiketoimintaa. 227 Säädellyn monopolin liiketaloudellinen tulos riippuu ensisijaisesti säätelyn tiukkuudesta. Yleishyödyllisiksi katsotut tulokset voivat siten olla arvokkaita myös yrityksen tuloksen kannalta pidemmällä tähtäimellä. 228 Bell Labs:n tehdyn tutkimuksen perusteella on myönnetty kahdeksan kertaa Nobelin palkinto, joita on ollut jakamassa yhteensä neljätoista tutkijaa. http://www.alcatel-lucent.com/bell-labs

K. Kilkki (2015) Informaatioteknologian perusteet 167 Innokas ja kykenevä ryhmä saattaa lopulta luoda käänteentekeviä keksintöjä tai tuotteita, kuten transistorin, ENIACin tai iphonen. Olivatko nämä keksinnöt yhden (tai muutaman) henkilön nerokkuuden vain suuren tutkimus- ja kehitysryhmän yhteistyön tulos? Paras vastaus lienee sekä-että. Puolijohdeteknologian kehitys & Mooren laki Transistori, ja puolijohdeteknologia ylipäätään, osoittautui erittäin keskeiseksi tietotekniikan kehittymisen kannalta. Tämän havaitsi yksi puolijohteiden kehittämisen avainhenkilöistä, Gordon Moore. Hän julkaisi keväällä 1965 artikkelin, jossa hän esitti ennusteen transistorien määrän kasvusta mikropiirillä. 229 Myöhemmin ennusteesta alettiin käyttää nimitystä Mooren laki (Moore s law). Mooren laki kuvaa erään teknologian kehittymisen lainalaisuutta. Mooren laissa (kuten se on alkuperäisessä paperissa esitetty) kyseessä ei kuitenkaan ollut suurin mahdollinen integraatioaste vaan se määrä transistoreja, jolla kustannus transistoria kohden on alhaisin. Aina on siis kysymys myös siitä, mikä on järkevää toteuttaa taloudellisesti, ei pelkästään siitä, mikä on teknisesti mahdollista. Helpointa ennustaminen on silloin kun kyseessä on jokin mitattavissa oleva suure, kuten siirtokapasiteetti tai tietokoneiden laskentanopeus. Alkuperäisessä artikkelissaan Moore esitti, että yhdelle piirille integroitavien transistorien määrä tulee kasvamaan 10-kertaiseksi vuoteen 1970 mennessä, eli siis viiden vuoden aikana. Tämä vastaa transistorien määrän kaksinkertaistumista 18 kuukauden välein. Myöhemmin kaksinkertaistumisen ajaksi on vakiintunut 2 vuotta, kuten kuvasta 6.2 voidaan havaita (kaksinkertaistuminen kahdessa vuodessa tarkoittaa tuhatkertaistumista kahdessakymmenessä vuodessa). Mooren laki on toiminut hämmästyttävän hyvin viisikymmentä vuotta ja joidenkin arvioiden mukaan se toimii ainakin tämän vuosikymmenen loppuun saakka. 230 Siinä vaiheessa pienimpien transistorien koko on viiden nanometrin luokkaa. Kvanttimekaaniset ilmiöt saattavat estää tätä pienempien transistorien toiminnan; toisaalta teknologia voi kehittyä johonkin muuhun suuntaan, esimerkiksi monikerroksisiin puolijohderakenteisiin. 229 Gordon E. Moore, Cramming More Components onto Integrated Circuits, Electronics, pp. 114 117, April 19, 1965. 230 Tim Bradshaw, Intel chief raises doubts over Moore s Law, Financial Times, July 16, 2015. Artikkelissa esitetyn arvion mukaan kehitys olisi nyt hidastumassa siitä mitä Mooren laki ennustaa, mutta ei kuitenkaan pysähtymässä.

K. Kilkki (2015) Informaatioteknologian perusteet 168 2 600 000 000 1 000 000 000 16-Core Sparc T3 Dual Core Itanium 2 Power6 10-Core Xeon 100 000 000 10 000 000 1 000 000 80486 Core 2 Duo AMD K8 Pentium 4 AMD K7 Pentium 3 AMD K5 Pentium 100 000 10 000 2 300 80386 80286 68000 8086 6800 Z80 4004 1971 1980 1990 2000 2011 Kuva 6.2. Transistorien määrän kehitys mikroprosessoreissa, sininen: Intelin prosessorit, punainen: muut valmistajat. 231 Tarkastelu voidaan viedä vielä astetta tai paria pidemmälle. Transistorien määrä sinänsä ei ole niinkään olennaista kuin se kuinka monta laskutoimitusta voidaan suorittaa aikayksikössä. Lisäksi yleensä rajoittavana tekijänä ei ole se kuinka paljon jotain saadaan tungettua yhteen prosessoriin tai vaikkapa tilavuusyksikköön, vaan se kuinka paljon jokin maksaa. 232 Kuvassa 6.3 on esitetty miten laskentakapasiteetin määrä 1000 US dollaria kohti on noussut jopa nopeammin kuin eksponentiaalisesti 1900-luvun alun jälkeen. Vuotuinen kasvuprosentti näyttäisi siis olevan kasvussa. 1900-luvun alkupuolella samalla hinnalla sai keskimäärin 20 prosenttia enemmän laskutoimituksia sekunnissa kuin edellisenä vuonna. Vuoden 1970 jälkeen vastaava luku on ollut noin 50 prosenttia. Kehitys on ollut lähes käsittämättömän nopeaa. Jos nyt kapasiteetin 10 miljardia laskutoimitusta sekunnissa saa muutamalla dollarilla, niin vastaava kapasiteetti olisi maksanut 50-luvun lopulla luokkaa 1000 miljardia dollaria. Vielä 1980-luvun puolivälissäkin hinta olisi ollut noin 10 miljoonaa dollaria. 231 Data: http://en.wikipedia.org/wiki/file:transistor_count_and_moore%27s_law_-_2011.svg 232 Älypuhelimissa myös tilavuudella on toki olennainen merkitys.

K. Kilkki (2015) Informaatioteknologian perusteet 169 10 10 Laskutoimituksia/s $1000 10 8 10 6 10 4 10 2 1 10-2 10-4 10-6 Sähkömekaaninen Rele Tyhjiöputki Transistori Integroitu piiri 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 Kuva 6.3. Laskentakapasiteetin hinnan kehittyminen 1900-luvulla. 233 Voidaan myös kysyä mikä on valmistettujen transistoreja kokonaismäärä maailmassa? Tarkkaa lukua ei tietenkään kukaan voi antaa. Eräs, ei erityisen tieteellinen, arvio on 2 913 276 327 576 980 000 000. 234 Mitä tällainen luku sitten tarkoittaa? Se on noin 400 miljardia transistoria jokaista maapallon asukasta kohti. Aivoissa on hermosoluja noin 100 miljardia (tosin hermosolu on toiminnaltaan huomattavasti monimutkaisempi kuin yksi transistori). Jos transistorit levitettäisiin tasaisesti koko maapallon maapinta-alalle, 235 niin transistoreja riittäisi lähes 20 kappaletta jokaiselle neliömillimetrille. Siitä saakka kun ensimmäinen transistori rakennettiin, transistorien määrä on keskimäärin yli kaksinkertaistunut vuodessa. Kaikesta tästä on seurauksena ollut se, että älypuhelimessa oli vuonna 2012 enemmän tietojenkäsittelykapasiteettia kuin tehokkaimmassa supertietokoneessa (Gray XMP) vuonna 1982. 236 233 Perustuu kuvaan http://en.wikipedia.org/wiki/file:pptmooreslawai.jpg. 234 J. Hardy, How Many Transistors Have Ever Shipped? Forbes, 26.5.2014, http://www.forbes.com/sites/jimhandy/2014/05/26/how-many-transistors-have-ever-shipped/ 235 148 940 000 km 2 236 Lähteet: http://www.walkingrandomly.com/?p=3079 ja http://www.computerhistory.org/timeline/?category=cmptr

K. Kilkki (2015) Informaatioteknologian perusteet 170 Tietokoneen toimintaperiaate ja rakenne Informaation esitystapa Tietokone käsittelee pelkkää dataa ilman informaatiota tai tulkintaa sen sisällöstä. 237 Ihminen voi toki tulkita ja joskus jopa ymmärtää sen mihin tietokone on laskelmissaan päätynyt. Sen sijaan mikään nykyinen tietokone eivät varsinaisesti ymmärrä datan sisältöä, sitä mitä se on tekemässä tai mitä tulostaa tarkoittaa. 238 Käytännössä data esitetään aina bitteinä, eli siis sarjana nollia ja ykkösiä, eli binäärilukuina (binary number). 239 Tietty bittikuvio voi yhtä hyvin merkitä numeroa, kirjainta kuin vaikka äänen voimakkuutta. Erityisen tärkeää nykyisissä tietokoneissa on, että data voi yhtä hyvin merkitä myös tietokoneohjelman käskyä. Binäärinumerot esitetään yleensä kahdeksan bitin ryhmissä, eli tavuissa. Yhdellä tavulla voidaan siten esittää kokonaisluvut 0:sta 255:een tai -128:sta +127:ään. Suurempien numeroiden esittämiseen käytetään useita tavuja, yleensä kaksi, neljä tai kahdeksan. Toisaalta ihminen on tottunut käsittelemään lukuja kymmenjärjestelmässä. Tästä johtuen binäärilukuja esitetään usein ns. BCD (Binary Coded Decimal) muodossa, jossa 10-järjestelmässä esitetyn luvun jokainen kymmenjärjestelmän numero 240 esitetään digitaalisessa muodossa neljällä bitillä. Lisäksi käytetään ns. heksadesimaalista esitystapaa jossa kokonaisluvuilla 0-15 on oma merkki, kuten taulukossa 6.1 on esitetty. Kyseessä on siis lukujärjestelmä jossa kantalukuna on 16. Etuna kymmenjärjestelmään verrattuna on helppo muunnettavuus binäärijärjestelmään ja toisaalta verrattuna binäärijärjestelmään 4 kertaa tiiviimpi esitystapa. Numerot on sinänsä selkeä asia: käytännössä yleismaailmallisesti 1 tarkoittaa ykköstä ja 2 kakkosta, ja niin edelleen. Muunnokset eri kantalukujärjestelmien välillä, joskin käsin vähän työläitä, ovat sinänsä hyvin suoraviivaisia. Lisäksi on tietysti pystyttävä esittämään negatiivisia lukuja, kuten -7. Binäärisessä luvussa esiintyy siis vain nollia ja ykkösiä, ei etumerkkiä (-), joten negatiivisuuskin täytyy esittää jollain tavoin bittinä. Yksi bitti voidaan varata etumerkin esittämiseen, mutta tämä ei ole laskutoimitusten toteuttamisen kannalta paras ratkaisu. Yleensä laskutoimitusten sisäisenä esitysmuotona käytetään ns. kahden 237 Mutta tästäkin väitteestä voi olla eri mieltä, katso esimerkiksi Robert Kurzweilin kirja, How to create a mind: The secret of human thought revealed. Penguin, 2012. 238 Tilanne saattaa vielä joskus muuttua: https://twitter.com/newscientist/status/629619029695680512. Katso myös hahmontunnistusta käsittelevä osuus myöhemmin tässä luvussa. 239 Binäärilukuja on käytetty jo kauan ennen tietokoneita. Nykyisen binäärijärjestelmän alkuna pidetään Gottfried Leibnizin vuonna 1703 julkaisemaa artikkelia: Explanation of the Binary Arithmetic, which uses only the characters 1 and 0, with some remarks on its usefulness, and on the light it throws on the ancient Chinese figures of Fu Xi. https://en.wikipedia.org/wiki/binary_number 240 Suomen kieli on tässä yhteydessä hankala: voidaan ajatella että luku (esimerkiksi 437) koostuu numeroista (4, 3 ja 7), mutta käytännössä numero-sanaa käytetään laajemmassa merkityksessä. Englannin kieli on tässä suhteessa selkeämpi: 437 on number ja 4, 3 ja 7 ovat kukin digit.

K. Kilkki (2015) Informaatioteknologian perusteet 171 komplementtia, jossa vastaluku saadaan kääntämällä luvun kaikki bitit (0 fi1, 1 fi0) ja lisäämällä tulokseen yksi. Esimerkiksi kolmen bitin järjestelmässä 2 = 010 joten -2 =101 + 1 =110. Taulukko 6.1. Lukujen esitysmuotoja. Desimaaliluku Binääriluku Heksa-desimaali BCDkoodi 0 0000 0 0000 1 0001 1 0001 2 0010 2 0010 3 0011 3 0011 4 0100 4 0100 5 0101 5 0101 6 0110 6 0110 7 0111 7 0111 8 1000 8 1000 9 1001 9 1001 10 1010 A 0001 0000 11 1011 B 0001 0001 12 1100 C 0001 0010 13 1101 D 0001 0011 14 1110 E 0001 0100 15 1111 F 0001 0101 16 10000 10 0001 0110 255 11111111 FF 0010 0101 0101 1024 10000000000 400 0001 0000 0010 0100 Käytännön elämässä olemme useimmiten kiinnostuneita jostain muusta kuin numeroista. Vaikka tämäkin teksti on tietokoneesi muistissa bitteinä, tuskin kukaan pystyy tätä lukemaan ruudulta pelkkinä bitteinä. Näytölläsi näkyy, mitä ilmeisimmin, koska luet tätä lausetta, kirjaimia. Koska muistiin tallennus ja tiedon siirto tapahtuu bitteinä, on välttämätöntä, että bittien ja kirjainten välillä on yksiselitteinen suhde. Ratkaisuksi tähän tarpeeseen kehitettiin 1960-luvulla ASCII (American Standard Code for Information Interchange) merkistö. Kyseessä on 7-bittinen merkistö joka sisältää amerikanenglannissa tarvittavat kirjaimet (A-Z, a-z), numerot (0-9), yleisesti käytetyt välimerkit ja joitakin erikoismerkkejä kuten # ja $. Lisäksi merkistö sisältää 33 ohjauskoodia kuten rivinsiirto ja tekstin loppu. 241 Ongelmana on, että monissa kielessä käytetään erilaisia kirjainmerkkejä, kuten ä ja ö, joita ASCII-merkistö ei sisällä. Tästä on seurannut erilaisia paikallisesti käytettyjä ASCII- 241 Lisäksi on muistettava, että kun asiasta kirjoitetaan, niin bitit 0 ja 1 esitetään ASCII-merkkeinä, jotka vievät muistista tilaa vähintään 7 bittiä. Samoin on miinusmerkin (-) laita. Toisaalta bitti vie siis vain yhden bitin tilaa muistissa

K. Kilkki (2015) Informaatioteknologian perusteet 172 muunnelmia. Suomalainen versio korvasi merkit [\]^ merkeillä ÄÖÅÜ ja merkit { }~ merkeillä äöåü. Tästä seurasi myös ongelmia, koska monissa yhteyksissä, esimerkiksi ohjelmoinnissa, tarvittiin myös hakasulkuja. Yhteensopivuusongelmia ilmenee edelleen. Nyt voidaan tietysti ihmetellä, miksi tyydyttiin 7 bittiin, kun 8 bittiä olisi ollut monessa suhteessa järkevämpi valinta. Olisi ollut mahdollista myös määritellä vaihtokoodi (shift), jolla olisi voinut laajentaa merkistöä tehokkaasti. 242 Suoraviivaista 7-bitin (eli 128 merkin) ratkaisua pidettiin kuitenkin tiedonsiirron kannalta tehokkaampana ja vaihtokoodin luotettavuutta ongelmallisena. Yleensä 7-bittisen ASCII-koodin esittämiseen käytetään yhtä kahdeksan bitin tavua, jolloin ylimääräistä bittiä voidaan käyttää pariteettibittinä. Laajemmissa merkistöissä ensimmäiset 128 merkkiä ovat edelleen ASCII-koodin mukaisia. Laajemmista merkistöstandardeista tärkein on Unicode, joka määrittelee koodiarvon yli sadalle tuhannelle kirjoitusmerkille. 243 Sen yleisin esitystapa, UTF-8, on yhteensopiva 7- bittisen ASCIIn kanssa. Tietokoneen perusrakenne Nyt pidämme tietokonetta itsestäänselvyytenä jopa hyvin henkilökohtaisessa käytössä, parhaimmillaan mukana kulkevana ja jatkuvasti toimintavalmiina. Toisin asiat olivat 1940- luvulla. Ensimmäiset tietokoneet olivat jättimäisiä rakennelmia, joiden käyttämiseen tarvittiin suuri joukko erikoistunutta henkilökuntaa (kuten kuvasta 6.1 voidaan nähdä). Tähän nähden voidaan pitää varsin hämmästyttävänä sitä miten Vannevar Bush kuvasti tietokoneiden tulevaisuutta vuonna 1945: 244 Memex on laite, mihin henkilö tallentaa kaikki kirjansa, äänitteet ja viestintänsä, ja joka on mekanisoitu siten, että sitä voidaan hyödyntää äärimmäisen nopeasti ja joustavasti. Se on laajennettu läheinen [intimate] muistin jatke. Memex ei saanut suosiota terminä, mutta ajatus on oiva kuvaus siitä mitä tietokoneesta on tullut vuosikymmeniä myöhemmin. Tietokoneet olivat aikanaan aivan liian kalliita ja kömpelöitä käyttää, jotta niistä olisi ollut henkilökohtaiseen käyttöön. Tämä tilanne jatkui aina pitkälle 1970-luvulle. Esimerkiksi DEC:n pääjohtaja Ken Olson ei vielä vuonna 1974 nähnyt mitään syytä miksi kukaan haluaisi oman tietokoneen. 245 Mikropiirien kehittyminen muutti sitten tilanteen nopeasti, mutta henkilökohtaisten tietokoneiden alkuvaiheen kehittäminen jäi pienempien yrittäjien pelikentäksi. 242 Siis samaan tapaan kuin näppäimistössä voidaan vaihtaa pienistä isoon kirjaimiin ja takaisin, jolloin ei tarvita erillisiä näppäimiä pienille ja isoille kirjaimille. 243 Katso esimerkiksi https://fi.wikipedia.org/wiki/unicode 244 V. Bush, As We May Think, Atlantic, June 1945 (myös kirjassa W. Isaacson, The Innovators, s. 263). 245 DEC oli siihen aikaan, IBM:n jälkeen, suurimpia tietokonevalmistajia maailmassa.

K. Kilkki (2015) Informaatioteknologian perusteet 173 Kuva 6.4. Yksi alkuvaiheen suosituista henkilökohtaisista tietokoneista, TRS-80, noin vuodelta 1981. 246 Miten sitten nykyaikainen tietokone varsinaisesti toimii? John von Neumann jaotteli vuonna 1945 tietokoneen rakenteen kuuteen osaan: aritmeettinen laskenta, ohjausosa, muisti, syöttö, tulostus ja ulkoinen muisti. 247 Eräs merkittävä oivallus oli se, että data ja ohjelmat voivat käyttää samaa muistia eli jakaa saman osoiteavaruuden. Vaihtoehtoinen tapa on käyttää eri osoiteavaruuksia ja väyliä toisaalta datalle ja toisaalta ohjelmistokäskyille. Näistä kahdesta toimintaperiaatteesta käytetään nimityksiä von Neumannin arkkitehtuuri (von Neumann architecture) ja Harvard-arkkitehtuuri (Harvard architecture). Koska von Neumannin jaettu väylä muodostuu jossain tapauksissa suorituskykyä rajoittavaksi tekijäksi, esimerkiksi suorittimen välimuistissa käytetään usein Harvardarkkitehtuuria vaikka tietokone muilta osin soveltaisi von Neumannin arkkitehtuuria. Yleiskäyttöinen tietokone koostuu siten seuraavista pääkomponenteista kuten kuvassa 6.5 on esitetty: aritmeettis-looginen yksikkö (arithmetic logic unit, ALU), ohjainyksikkö (control unit), muisti (memory) ja siirräntälaitteet (I/O devices). 248 Nämä komponentit on yhdistetty väylällä, joka tyypillisesti koostuu rinnakkaisista johdoista. Lisäksi voidaan erottaa rekisterit joihin väylä on liitetty. Aritmeettis-looginen yksikkö, ohjainyksikkö ja rekisterit (register) muodostavat yhdessä suorittimen (prosessori, processor). Aikaisemmin käytettiin paljon myös termiä keskusyksikkö (Central Processor Unit, CPU), joka käytännössä on lähes sama asia kuin suoritin. 249 Se mistä toiminnoista 246 Kirjoitin itse tällaisella koneella diplomityöni vuosina 1982-83. Tosin kone ei ollut varsinaisesti henkilökohtainen vaan laboratorion kaikkien tutkijoiden, assistenttien ja muun henkilökunnan käytössä. 247 Jos haluat perehtyä yhden tietokoneen rakenteeseen ja toimintaperiaatteisiin yksityiskohtaisesti, voit esimerkiksi lukea DEC10/20 yksityiskohtaisen käsikirjan vuodelta 1982, 514 sivua, http://pdp10.nocrew.org/docs/ad-h391a-t1.pdf 248 Sanastokeskuksen termipankin (http://www.tsk.fi/tepa/netmot.exe?ui=figr&height=161) mukainen termi on syöttötulostus, mutta myös siirräntää on käytetty lyhenteen I/O suomennoksena mm. Ornanet, http://ornanet.dy.fi/itsanastoij.htm 249 Toisaalta keskusyksikön voidaan ajatella sisältävän suorittimen (tai suorittimien) lisäksi väylän. Ja jotta rakenteet eivät olisi liian yksinkertaisia, suorittimen sisällä on myös väylä.

K. Kilkki (2015) Informaatioteknologian perusteet 174 suoritin vastaa, on jossain määrin muuttunut ajan myötä integrointiasteen kasvaessa. Nykyisin yhdelle mikropiirille voidaan integroida monta laskentaa tekevää ydintä (core), välimuistia (cache) ja erilaisia ohjaintoimintoja, jotka kaikki olisi aikaisemmin toteutettu erillisillä piireillä. Kuvassa 6.6 on käytännön esimerkki pienikokoisesta tietokoneesta ilman oheislaitteita. Näyttö Suoritin Näppäimistö Keskusmuisti Aritmeettislooginen yksikkö Ohjainyksikkö Rekisterit Väylä Massamuisti Kuva 6.5. Tietokoneen keskeisimmät rakenneosat. Kuva 6.6. Esimerkki tietokoneesta käytännössä (Raspberry Pi 2). Tietokoneen osat koostuvat elektronisista komponenteista eli mikropiireistä (integrated circuit). Yhdelle mikropiirille voidaan integroida suuri määrä, jopa miljardeja, aktiivisia (transistoreita ja diodeja) ja passiivisia (vastuksia ja kondensaattoreita) komponentteja. Suoritinosassa piirit on järjestetty siten, että ne muodostavat loogisia kokonaisuuksia, jossa

K. Kilkki (2015) Informaatioteknologian perusteet 175 piirit ohjaavat toisten piirien toimintaa, Boolen algebran (Boolean algebra) periaatteiden mukaisesti. Ohjainyksikkö hallitsee tietokoneen eri osia, lukee ja tulkitsee ohjelman käskyjä ja muuntaa ne muotoon, jolla voidaan ohjata muita tietokoneen osia. Ohjainyksikkö voi jopa muuttaa käskyjen suoritusjärjestystä suorituskyvyn lisäämiseksi. Tärkeä osa ohjausyksikön toimintaa on ohjelmalaskuri (program counter), joka pitää kirjaa siitä mistä muistipaikasta seuraava käsky pitää lukea. Ohjainyksikkö Ohjainyksikön keskeisimmät tehtävät ovat (tehtävien suoritusjärjestys saattaa vaihdella ja niitä voidaan suorittaa rinnakkain): Lukee seuraavan käskyn ohjelmalaskurin ilmoittamasta paikasta. Muuntaa numeerisen koodin joukoksi käskyjä tai signaaleja järjestelmän muille osille. Kasvattaa ohjelmalaskurin arvoa siten että se osoittaa seuraava käskyä. Lukee tarvittavan datan muistista tai mahdollisesti oheislaitteesta. Lähettää tarvittavan datan aritmeettis-loogiseen yksikköön tai rekisteriin. Jos suoritettava käsky niin vaatii, ohjaa muita yksiköitä suorittamaan vaaditut operaatiot. Kirjoittaa aritmeettis-loogisesta yksiköstä saamansa tuloksen muistiin, rekisteriin tai mahdollisesti tulostuslaitteeseen. Palaa takaisin ensimmäiseen kohtaan. Koska ohjelmalaskuri on periaatteessa samanlainen kuin mikä tahansa muistipaikka, sen arvoa voidaan muuttaa ALU:n laskelmien mukaisesti. Tällä tavoin voidaan tehdä ohjelmallisesti hyppyjä tai silmukoita. Edellä luetellut operaatiot ovat siinä määrin monimutkaisia, että ne muodostavat itsessään lyhyen tietokoneohjelman. Usein tätä tehtävää hoitaa yksi tai useampi erillinen ohjausyksikkö, joissa ajetaan mikrokoodia (mikro-ohjelma, microcode). Aritmeettis-looginen yksikkö Aritmeettis-loogisessa yksikössä suoritetaan, nimensä mukaisesti kahden, tyyppisiä toimintoja: aritmeettisia ja loogisia. Aritmeettiset operaatiot voivat rajoittua jopa yhteen- ja vähennyslaskuun, tai operaatiot voivat kattaa monimutkaisempia toimintoja kuten kertoja jakolaskuja, trigonometriset funktiot, logaritmit, neliöjuuret, jne. Laskutoimitukset

K. Kilkki (2015) Informaatioteknologian perusteet 176 voidaan joko tehdä ainoastaan kokonaisluvuille tai sitten numerot voidaan esittää liukulukuina. Yksinkertaisten operaatioiden avulla voidaan kuitenkin toteuttaa mielivaltaisen monimutkaisia laskuja jakamalla tehtävä riittävän pieniin palasiin. Loogiset operaatiot sisältävät Boolen logiikan toiminnot JA (, AND), TAI (, OR) ja EI (, NOT). Lisäksi voidaan määritellä poissulkeva tai (, XOR) 250. Taulukossa 6.2 on esitetty totuusarvot kommutatiivisille (commutative) operaatioille (operation, op), eli siis operaatioille joille pätee aina: a op b = b op a. Näistä voidaan koostaa mielivaltaisen monimutkaisia ehdollisia lausekkeita. Taulukko 6.2. Totuusarvotaulukko kommutatiivisille binäärisille operaatioille. Epätosi JA TAI Tosi FALSE AND XOR OR NOR XNOR NAND TRUE a b tai 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 Boolen algebran peruslait ovat: a a = 1 a a = 0 a b = b a a b = b a a (a b) = a a (a b) = a a (b c) = (a b) c a (b c) = (a b) c a (b c) = (a b) (a c) a (b c) = (a b) (a c) Näiden lausekkeiden avulla voidaan lausekkeita muuntaa muodosta toiseen ilman, että lausekkeen totuusarvo muuttuu. Lisäksi DeMorganin lait ovat usein käyttökelpoisia. Tässä lait esitettynä kolmelle muuttujalle (a, b ja c), mutta sama periaate voidaan yleistää rajattomalle määrälle muuttujia: (a b c) = a b c (a b c) = a b c 250 Poissulkeva tai voidaan esittää monessa muodossa, esimerkiksi: a b = (a b) ( a b)

K. Kilkki (2015) Informaatioteknologian perusteet 177 Esimerkki: Boolen algebra Tehtävä 6.1. Oletetaan, että käytettävissäsi on vain NOR-operaatio. Voidaanko tällä operaatiolla toteuttaa JA eli -operaatio, ja jos voidaan, niin miten? Ratkaisu Ensiksikin voidaan havaita, että negaatio voidaan toteuttaa NOR-operaatiolla koska: a NOR a = a Tämän jälkeen voidaan vertailla taulukon 6.2 sarakkeita ja NOR. Voidaan havaita, että ja NOR voidaan vaihtaa toisikseen, jos taulukon 6.2 a ja b sarakkeiden ensimmäinen (0, 0) ja viimeinen (1, 1) rivit vaihtavat paikkaa. Tämä voidaan tehdä korvaamalla sekä a että b negaatioillaan eli a a ja b b (tällöin myös rivit 2 ja 3 vaihtavat paikkaa, mutta tämä vaihto ei vaikuta ja NOR operaatioiden lopputulokseen). Eli tämän perusteella saadaan: a b = (a NOR a) NOR (b NOR b) Lopputulos kannattaa tarkistaa totuusarvojen avulla (tämä tehtävä jätetään lukijalle). Samalla periaatteella myös pelkkä NAND operaatio riittää kaikkien muiden operaatioiden toteuttamiseen. Loogisten operaatioiden tekninen toteutus Tietokone perustuu siis loogisten operaatioiden tehokkaaseen eli nopeaan ja luotettavaan suorittamiseen. Miten kaikki miljardit operaatiot sitten tapahtuvat fyysisellä tasolla? Tietokoneet perustuvat siis puolijohdeteknologiaan, jolla voidaan toteuttaa loogisia portteja (logic gate). Loogiset portit vastaavat kuvan 6.7 mukaisesti Boolen algebran operaatioita. AND a b F NAND a b F OR a b F NOR a b F (viive) a F NOT a F XOR a b F XNOR a b F Kuva 6.7. Boolen algebran operaatioita vastaavien loogisten porttien esitystavat. Portti F = a aiheuttaa vain viiveen ilman mitään varsinaista operaatiota.

K. Kilkki (2015) Informaatioteknologian perusteet 178 Looginen portti toimii jännitevahvistimena, jonka vahvistus on erittäin suuri. Sisääntulo ottaa hyvin pienen sähkövirran ja tuottaa ulostuloon jännitteen. Virta ei siten kulje sisääntulosta ulostuloon vaan ulostulon jännite ja virta tuotetaan erillisen sisääntulon kautta. Yhden portin ulostuloa voidaan suoraan yhdistää seuraavan portin sisääntuloksi, jolloin periaatteessa voidaan toteuttaa hyvin monimutkaisia loogisia piirejä ilman, että suunnittelijan tarvitsee miettiä loogisen portin sisäistä toteutusta. Toki käytännön toteutuksissa on omat rajoituksensa esimerkiksi sen suhteen kuinka monta sisääntulo yhdellä loogisella portilla voi olla (fan-in) ja kuinka moneen porttiin yksi ulostulo voidaan kytkeä (fan-out). Esimerkiksi kuvassa 6.9 (kolme sivua eteenpäin) vasemmanpuoleisessa kuvassa yhdessä portissa (oikealla ylhäällä) on neljä sisääntuloa, ja toisaalta sisääntulo a on yhdistetty viiteen porttiin, joten sitä syöttävän porttipiirin fan-out täytyy olla vähintään 5. Yleensä sekä sisääntulojen että ulostulojen määrän lisääminen kasvattaa viivettä, joten niitä ei kannata yleensä kasvattaa kovin suureksi ilman pakottavaa tarvetta. Vaikka viive on erittäin pieni, äärimmäisen suurilla nopeuksilla tai kellotaajuuksilla viive voi muodostua suorituskykyä rajoittavaksi tekijäksi. Olennaista on siis huomata, että se mikä näyttäytyy abstraktilla tasolla loogisina operaatioina jotka käsittelevät muuttujia (jotka voivat saada joko arvon 0 tai 1), ovat mikropiirien tasolla jännitteitä. Yleensä arvoa 0 vastaa alempi jännite (käytännössä maa) ja arvoa 1 vastaa joku maahan verrattuna positiivinen jännite. Jännite pyritään pitämään mahdollisimman alhaisena jotta piirin tehonkulutus ja lämmöntuotto pysyisivät siedettävinä. Lisäksi pienempi jännite mahdollistaa korkeamman kellotaajuuden käytön koska jännite ehtii nousta tarvittavaan arvoon nopeammin (jännitteen muutokset tapahtuvat aina rajallisessa ajassa, vaikka ovatkin erittäin nopeita). Nykyisissä tehokkaissa prosessoreissa käytetty jännite on tyypillisesti hieman yli 1 V. Integrointiaste (komponenttien määrä piirillä) riippuu olennaisesti käytetystä viivanleveydestä. Nykyisillä tiheimmin pakatuilla integroiduilla piireillä viivanleveys on 14 nm. 251 Pienemmillä viivanleveyksillä kvanttimekaaniset ilmiöt alkavat olennaisesti vaikuttaa elektronien käyttäytymiseen. Vastaavasti, kellotaajuuksia on hyvin vaikea enää nostaa kovin paljon yli 5 GHz:n, koska tehokulutus nousee suunnilleen suorassa suhteessa kellotaajuuteen. 252 Kehitys ei olekaan enää kellotaajuuden kasvattamisessa vaan rinnakkaisuuden lisäämisessä. Jotta tehonkulutus pysyisi jotenkin aisoissa kun rinnakkaisuutta lisätään, kellotaajuutta ei kannata maksimoida, vaan pitää se kohtuullisella 2-3 GHz:n tasolla. 253 251 Tämä 14 nm on noin viidestuhannesosa tyypillisen hiuksen paksuudesta. Pii-atomeja 14 nm leveyksiselle väylälle mahtuu rinnakkain noin 100 kappaletta. 252 Vertailun vuoksi huomattakoon, että IBM PCn kellotaajuus vuonna 1981 oli 4,77 MHz eli tuhannesosa nykyisistä. 253 Huomaa, että 3 GHz:lla yhteen sekuntiin mahtuu suunnilleen yhtä monta kellojaksoa kuin 100 vuoteen mahtuu sekunteja.

K. Kilkki (2015) Informaatioteknologian perusteet 179 Periaatteessa tietokoneen ja sen prosessorin toiminta perustuu siis sähkömagneettisiin ja kvanttimekaanisiin ilmiöihin ja kaikki muu sen yläpuolella on vain abstraktia kuvausta, transistorista alkaen, kuten kuvassa 6.8 on hahmoteltu. Tyypillisen tietotekniikan insinöörin kannalta atomifysiikan ilmiöt ovat kuitenkin toissijaisia, kunhan lopputulos sopivalla abstraktiotasolla on juuri se mitä halutaan toteuttaa. Ohjelmoinnin kannalta olennaista on, että integroidulla piirillä toteutetut loogiset laskutoimitukset ovat äärimmäisen luotettavia. Esimerkiksi jos NAND-portin sisääntuloissa a = 0 ja b = 1, voimme olla äärimmäisen varmoja, että ulostulon arvo on 1. Toisaalta tämä varmuus vaatii, että toimintaympäristö on piirille sopiva (ei esimerkiksi liian kuuma) ja kellotaajuus on sopiva (jos kellotaajuus on liian suuri, niin ulostulo ei välttämättä ehdi vaihtua oikeaksi). Erittäin suurta luotettavuutta vaativissa tehtävissä voi silti olla perusteltua tehdä 2 tai 3 rinnakkaista laskentaa ja verrata niiden tuloksia. Yhteenvetona voidaan todeta, että integroiduilla piireillä on neljä merkittävää etua mihin tahansa muuhun tietojenkäsittelyn menetelmään: a) laskennan nopeus, b) pieni fyysinen koko c) pieni tehonkulutus verrattuna laskentatehoon ja d) lähes virheetön toiminta. Kuva 6.8. NAND-operaatio eri abstraktio- tai esitystasoilla. Huomaa erityisesti että mikropiireissä sisään- ja ulostulos ovat jännitteitä, ei totuusarvoja.

K. Kilkki (2015) Informaatioteknologian perusteet 180 Esimerkki: Yhteenlasku loogisilla porteilla Tehtävä 6.2 Suunnittele loogisten porttien avulla piiri, joka toteuttaa binäärilukujen yhteenlaskun. Ratkaisu Otetaan esimerkiksi desimaaliluvut 55 ja 114 ja mietitään mitä niiden yhteenlaskussa tapahtuu. Lasku binäärimuodossa on tällainen: Yhteenlasku tapahtuu siten täysin samoin kuin 10-järjestelmässä. Aloitetaan oikealta ja havaitaan, että ensin pitää laskea yhteen 0 ja 1 ja tulokseksi saadaan 1 (tulosrivillä S, sanasta sum). Seuraavassa sarakkeessa lasketaan yhteen1 ja1, jolloin tulokseksi saadaan binääriluku10. Tulosriville tulee siis0 ja seuraavaan yhteenlaskuun jää1 (seuraavan sarakkeen riville C, sanasta carry, jolla tarkoitetaan siirtoa seuraavaan sarakkeeseen). Kolmannessa sarakkeessa yhteenlaskettavia onkin siten kolme, eli 1, 1 ja0. Lopputulos on jälleen C = 1 ja S =0. Näin jatketaan eteenpäin kunnes laskutoimitus on saatu suoritettua loppuun saakka. Havaitaan, että koko laskutoimitus koostuu aina rakenteesta, joissa kolme bittiä lasketaan yhteen siten, että tulos voidaan esittää kahdella bitillä (S ja C). Yhteenlaskua varten tarvitsee siten suunnitella looginen piiri, joka toteuttaa taulukon 6.3 mukaiset totuusarvot. Taulukko 6.3. Kolmen bitin (a, b ja z) yhteenlasku totuusarvotaulukkona. a b z C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 S saa arvon1, jos joko yhdellä kolmesta muuttujasta tai kaikilla kolmella muuttujalla on arvo1, muissa tapauksissa S =0, eli: S = (a b z) ( a b z) ( a b z) (a b z) Vastaavasti C saa arvon1, jos vähintään kahdella muuttujalla on arvo1, eli: C = (a b) (a z) (b z) Huomatkaa että tässä tapausta a = b = z = 1 ei tarvitse käsitellä erikseen, koska muut tekijät jo kattavat tämän tapauksen.

K. Kilkki (2015) Informaatioteknologian perusteet 181 Suoraviivainen toteutus perustuen edellä esitettyihin kaavoihin loogisilla porteilla JA, TAI, ja EI on esitetty kuvassa 6.9. Kuvan toteutus on kaukana optimaalisesta, esimerkiksi sen suhteen kuinka monta loogista porttia tarvitaan. Täsmälleen sama totuusarvotaulukko voidaan toteuttaa viidellä loogisella portilla: kaksi XOR-, kaksi AND- ja yksi OR -portti, joissa kussakin on vain kaksi sisääntuloa 254. Koko laskutoimitus, esimerkiksi 8 bitin tavujen yhteenlasku, saadaan toteutettua siten, että tietyn sarakkeen ulostulo C yhdistetään seuraavan sarakkeen sisäänmenoon z (ensimmäisessä sarakkeessa z on aina0). a b z S a b z S C C Kuva 6.9. Kolmen bitin yhteenlasku, vasemmalla suoraviivainen toteutus, oikealla täsmälleen samaan lopputulokseen johtava yksinkertaisempi toteutus. Suurempien binäärilukujen yhteenlasku voidaan toteuttaa yhdistämällä riittävä määrä näitä perusrakenteita. Muisti Muisti on ollut laskenta- ja tietokoneiden ongelma alusta saakka. Haasteena on ollut sekä muistista haun nopeus että muistin koko. Erityisesti siinä vaiheessa kun laskenta suoritettiin tyhjiöputkilla, muistista muodostui yleensä suorituskykyä eniten rajoittava tekijä. Laskentakoneiden alkuvaiheessa oli monenlaisia muistivirityksiä, joista mielenkiintoisimpia oli mm. ENIAC:n seuranneessa EDVAC:ssa 255 käytetty akustinen viivelinja. Muisti perustui akustiseen signaaliin, joka kulki elohopealla täytetyssä putkessa. Vaikka tällainen muisti oli aikaisempia parempi monessa suhteessa, niiden avulla ei voitu tehdä kovin suuria muisteja. Viivelinja aiheutti myös huomattavan viiveen, varsinkin jos muisti oli suuri. 1950- luvun puolivälistä alkaen tietokoneissa siirryttiin ferriittirengasmuistin (magnetic core memory) käyttöön (kuva 6.10). Se perustuu pieniin keraamisiin renkaisiin, joihin tieto tallennetaan magneettikentän polariteetin avulla siten että sisällön säilyttämiseen ei tarvita 254 Katso esimerkiksi M. Mano & C. Kime: Logic and Computer Design Fundamentals, s. 125-127. 255 EDVAC (Electronic Discrete Variable Automatic Computer) valmistui 1949 ja se sisälsi mm. 6000 tyhjiöputkea. Yhteenlaskuun käytetty keskimääräinen aika oli noin 0,8 ms. https://en.wikipedia.org/wiki/edvac

K. Kilkki (2015) Informaatioteknologian perusteet 182 sähköenergiaa. Ferriittirengasmuistit hakuajoissa päästiin 1970-luvulla jo 600 nanosekunnin luokkaan. 256 Tämän jälkeen siirryttiin integroituihin puolijohdemuisteihin. Esimerkiksi kuvassa 6.7 esitetyn pienen tietokoneen keskusmuisti on 1 gigatavun kokoinen. 257 Muistikapasiteetti painoyksikköä kohti on kaksinkertaistunut keskimäärin kahden vuoden välein 1950-luvun lopulta nykypäivään. Kuva 6.10. IBM:n viiden megatavun muistiyksikkö vuodelta 1956, paino yli 1000 kiloa. 258 Suoritin sisältää myös erityisen nopeaa muistia, eli rekistereitä, jotka tehostavat olennaisesti laskentaa verrattuna siihen kaikki data pitäisi hakea keskusmuistista. Rekistereitä käytetään tallentamaan useimmin käytettyä data. Muistia on periaatteessa kahta tyyppiä: luku- ja kirjoitusmuisti (Random Access Memory, RAM) ja lukumuisti (Read Only Memory, ROM). Tietokoneen keskusmuisti on aina RAM-tyyppistä. RAM voi olla joko dynaaminen (dynamic RAM, DRAM) tai staattinen (static RAM, SRAM). Dynaamista muistia täytyy virkistää jatkuvasti, sillä se perustuu kondensaattorien käyttöön, joiden varaus osittain purkautuu niitä luettaessa. Oheisessa kuvassa DRAM:n yhden bitin säilyttämiseen tarvittava muistielementti, joka siis koostuu yhdestä transistorista ja yhdestä kondensaattorista (capacitor). Kuva 6.11. Dynaamisen RAM:n yhden bitin muistiyksikkö. Transistori Kondensaattori ROM-muistia käytetään tyypillisesti tietokoneen alustukseen käynnistettäessä tietokonetta. Käynnistystä varten ROM-muistissa on BIOS (Basic Input/Output System) ohjelma, jonka avulla massamuistista ladataan tietokoneen 256 http://fi.wikipedia.org/wiki/ferriittirengasmuisti 257 Koska kyseessä on keskusmuisti, 1 GB luultavasti tarkoittaa 2 30 = 1 073 741 824 bittiä kuten jo 3. luvussa mainittiin. 258 http://www.retronaut.com/2011/12/5mb-hard-disk-drive-1956/

K. Kilkki (2015) Informaatioteknologian perusteet 183 käyttöjärjestelmä keskusmuistiin. Lisäksi suoritin voi käyttää välimuistia (cache), joka on hitaampi kuin rekisteri mutta nopeampi kuin keskusmuisti. Tietokone voi siirtää dataa eri muistiyksiköiden välillä ilman, että sovellusten ohjelmoijien tarvitsee puuttua asiaan. Tämän asian hoitaa muistinhallintayksikkö (Memory Management Unit, MMU). Myös suorittimen sisällä tarvitaan muistia. Pieniä muisteja voidaan toteuttaa myös loogisten porttien avulla. Kuvassa 6.12 on esitetty yhden bitin muisti jonka toteuttamiseen on käytetty 8 NAND-porttia ja 2 NOT-porttia. Olennaisin ero esimerkiksi kuvassa 6.9 esitettyihin loogisiin piireihin on takaisinkytkennät, joiden avulla piiri muistaa aikaisemman tilansa. Kuvan rakennetta kutsutaan kiikuksi (flip-flop). Kiikun tehtävänä on siis säilyttää sille asetettu looginen tila, eli se muistaa yhden bitin. Säilytettävän bitin arvo riippuu kiikun tyypistä, tulojen tilasta ja lähtöjen edellisestä tilasta. Kuvassa 6.11 kellosisääntulon (C) muutos nollasta ykköseksi laukaisee prosessin jonka lopputuloksena ulostulo (Q) saa datasisääntulon (D) arvon ja pitää sen, kunnes kellosisääntulo muuttuu seuraavan kerran nollasta ykköseen. Piirin yksityiskohtaista toimintaa on varsin vaikea hahmottaa, eikä siihen tämän kurssin puitteissa pyritäkään. Entä miksi tarvitaan näin monta loogista porttia yhtä bittiä varten, eikö jokin yksinkertaisempi rakenne riittäisi? Periaatteessa kyllä, jos komponentit toimisivat äärettömän nopeasti ja täsmällisesti. Suhteellisen monimutkainen rakenne tarvitaan sen takaamiseksi, että piiri toimii kaikissa tilanteissa täysin ennustettavalla tavalla. D Q C Q (= Q) Kuva 6.12. Yhden bitin muisti toteutettuna NAND- ja NOT-porteilla. 259 Pääsyntä (Input/output) Pääsynnällä tarkoitetaan niitä keinoja, joilla tietokone vaihtaa informaatiota ulkomaailman kanssa. Laitteita, joita käytetään tähän tarkoitukseen, kutsutaan oheislaitteiksi (peripherals). Oheislaitteita on periaatteessa neljää eri tyyppiä: 1) syöttölaitteet (input devices), 2) tulostuslaitteet (output devices), 3) muistilaitteet (storage devices) ja 4) yhdistetyt syöttö- ja tulostuslaitteet (input/output). Henkilökohtaisessa tietokoneessa tyypillisiä 259 Kuva https://fi.wikipedia.org/wiki/kiikku_%28digitaalitekniikka%29, kiikkujen toimintaa on selostettu tarkemmin esimerkiksi Wikipedian englanninkielisillä sivulla https://en.wikipedia.org/wiki/flip-flop_%28electronics%29 ja alan oppikirjoissa, esim. M. Mano & C. Kime: Logic and Computer Design Fundamentals, s. 191-201.

K. Kilkki (2015) Informaatioteknologian perusteet 184 oheislaitteita ovat näyttö, näppäimistö, hiiri, kaiuttimet, mikrofoni ja tulostin. Lisäksi muita tallennuslaitteet paitsi keskusmuisti luokitellaan oheislaitteeksi, samoin verkkoyhteydet. Esimerkkejä tiedonsiirtoon käytettyjen liitäntöjen nopeuksista: 260 USB 1.1: 12 Mbit/s: (v. 1996) USB 2.0: 480 Mbit/s (2000) USB 3.0: 5 Gbit/s (2010) HDMI 1.0: 4.95 Gbit/s 261 HDMI 2.0: 18 Gbit/s Tietokoneen sisäisten väylien nopeus on parhaimmillaan useita satoja gigabittejä sekunnissa. Sen sijaan pyörivältä kiintolevyiltä voidaan lukea dataa huomattavasti hitaammin ja lisäksi nopeus riippuu huomattavasti siitä miten data sijaitsee levyllä. Useat oheislaitteet ovat monimutkaisia laitteita ja voidaan hyvin luokitella tietokoneiksi. Esimerkiksi aikanaan tulostimissa saattoi olla niin tehokas prosessori että sillä saattoi ratkaista tietyntyyppisiä laskennallisia tehtäviä nopeammin kuin tavallisella tietokoneella. Nykyisinkin näytönohjaimissa on enemmän tietojenkäsittelykapasiteettia kuin useimmissa yleiskäyttöön suunnitelluissa suorittimissa, tosin tietojenkäsittely suoritetaan kymmenissä erillisissä rinnakkaista prosessointia tekevissä suorittimissa, jotka suorittavat saman operaation suurelle datamäärälle. Moniajo ja rinnakkaislaskenta Tietokoneen ajattelee usein toimivan yhtenä valtavana keskusmuistiin tallennettuna ohjelmana. Useimmissa järjestelmissä on kuitenkin välttämätöntä ajaa lukuisia ohjelmistoja siten että näyttää siltä kuin niitä ajettaisiin samanaikaisesti. Käytännössä tämä tapahtuu moniajona, jossa tietokone vaihtaa hyvin nopeasti ajettavaa ohjelmaa. Perinteisesti moniajo (multitasking) mikrotietokoneissa on tarkoittanut yhden suorittimen käyttöä. Ensimmäinen moniajotapa oli yhteistyömoniajo, missä ohjelmat vapaaehtoisesti jakoivat suoritinaikaa toisille ohjelmille. 262 Ongelmana tällaisessa järjestelyssä on, että yksi huonosti käyttäytyvä ohjelma voi varastaa koko koneen laskentatehon. Nykyaikaisissa tietokoneissa käyttöjärjestelmän osa, vuorontaja (scheduler) hoitaa vuorojen jaon. Koska 260 http://en.wikipedia.org/wiki/list_of_device_bit_rates 261 HDMI (High-Definition Multimedia Interface) on kuvan ja monikanavaäänen siirtämiseen suunniteltu liitäntästandardi. 262 http://fi.wikipedia.org/wiki/moniajo