Suomen Automaatioseura ry TIE 1/1 Björn Wahlström VTT TIETOKONEEN KEHITYKSESTÄ Johdanto Tämän päivän automaatioratkaisuissa tietokoneella on keskeinen rooli. Tietokone siinä muodossa, kuin se tänä päivänä käsitetään, perustuu pitkään kehityshistoriaan, johon monen ihmisen kekseliäisyys on ollut myötävaikuttamassa. Vaikka tietokone nykyisessä muodossaan on ollut olemassa vain muutaman vuosikymmenen, siitä on jo tullut nykyaikaisen yhteiskunnan tärkeä työväline. Tulevaisuutta ajatellen on ilmeistä, että olemme vasta tietokoneiden kehityskaaren alussa ja monta mullistavaa sovellusta tultaneen vielä näkemään. Seuraavassa tarkastellaan lyhyesti tämän päivän tietokoneisiin johtanutta kehitystä. Esihistoria Laskeminen ja lukujärjestelmät Se, milloin ihminen alkoi käyttää lukuja ja tarvita laskutaitoa jää historian peittoon, mutta tiedämme, että ainakin jo 5000 vuotta sitten ihmiset kirjoittivat lukuja ja laskivat niillä. Kehityksen historiasta voidaan erottaa kaksi erilaista lukujärjestelmää. Ensimmäistä kutsutaan yhteenlaskuperiaatteeksi ja toista positioperiaatteeksi. Yhteenlaskuperiaatteessa lukujärjestelmässä esitetään lukuja siten, että merkkien lukumäärä ilmaisee, kuinka suuri kyseinen lukuosa on. Tällaista tapaa käyttivät esimerkiksi roomalaiset. Nykyisin yleisesti käytössä oleva tapa ilmaista lukuja numeroilla on positioperiaate, jossa numeron paikka numerojonossa ilmaisee sen arvon. Positioperiaate eroaa yhteenlaskuperiaatteesta myös siinä, että siihen sisältyy luku 0. Kukin paikka lukujonossa edustaa kyseisen lukujärjestelmän eksponentin arvoa. Jokapäiväisessä laskennassa käytetyssä desimaalijärjestelmässä eksponentin kantaluku on 10. Desimaalijärjestelmästä tunnemme numerot 0, 1, 2, 3, 8 ja 9, joiden paikka lukujonossa kertoo, kuinka monta ykköseuroa, kymmentä euroa, sataa euroa jne. esimerkiksi kauppalaskuumme sisältyy. Vähiten merkitsevät ykköset ovat lukujonossa oikealla. Desimaalijärjestelmän laskusäännöt opetettiin meille jo ensimmäisinä kouluvuosina. Laskemisen helpottamiseksi on eri puolilla maailmaa käytetty helmitaulua tai ns. abakusta. Logaritmit Lukuja ja laskentaa käytettiin ilmeisesti ensimmäiseksi kaupanteossa ja maanomistuksen rekisteröimisessä. Silloin yhteen- ja vähennyslasku sekä vähemmässä määrin kerto- ja jakolasku riittivät pitkälle. Paineet tehokkaampaan laskentaan lisääntyivät kuitenkin huomattavasti Amerikan mantereen löydyttyä, sillä sitä tarvittiin erityisesti navigoinnissa. Pallogeometrian hallitseminen ja laskennan riittävä tarkkuus saattoivat olla äärimmäisen tärkeitä, kun oli löydettävä kaukainen saari, josta saataisiin Suomen Automaatioseura ry, Asemapäällikönkatu 12 B, 00520 HELSINKI puh: 0201 981 220, fax: 0201 981 227, sähköposti: office@atu.fi, www.automaatioseura.fi
Suomen Automaatioseura ry TIE 2/2 tuoretta vettä ja ruokaa. Varsinainen läpimurto oli logaritmit, joiden keskeisiä kehittäjiä olivat englantilaiset Napier ja Briggs 1600-luvun alkupuolella. Sen jälkeen logaritmitaulukoista tuli navigaattoreiden tärkeimpiä apuvälineitä. Logaritmeja käytettiin myös laskutikuissa, joita pidettiin pitkään insinöörien tunnusmerkkinä. Mekaaniset laskukoneet Mekaanisia laskukoneita alettiin rakentaa 1600-luvulla. Ne perustuivat pyöriin, joihin oli kaiverrettu numerot. Rinnakkaisten pyörien asennoilla saatiin haluttuja lukuja aikaan, ja laskeminen tapahtui siten, että pyörän pyörähtäessä yhden kierroksen ympäri se samalla siirsi seuraavan pyörän yhden pykälän eteen tai taakse siitä riippuen, suoritettiinko yhteen- vai vähennyslaskua. Laskukoneita parannettiin ja kehitettiin monessa vaiheessa, ja niistä kehitettiin eri tarkoituksiin soveltuvia malleja. Kauppojen kassakoneet olivat 1900-luvun loppupuolelle asti tällaisia. Toinen yleisesti käytetty laskukoneen malli soveltui varsin hyvin kerto- ja jakolaskuun. Looginen päättely Looginen päättely on myös tärkeä toiminto tämän päivän tietokoneissa. Jo muinaisessa Kreikassa oli pohdittu, miten evidenssiä voidaan käyttää päättelyssä, mutta vasta 1800- luvulla logiikka sai nykyisen muotonsa. Keskeisiä hahmoja tässä työssä olivat de Morgan Englannissa ja Boole Irlannissa. Kun sitten 1900-luvun alussa voitiin todistaa, että aritmetiikan säännöt voidaan johtaa logiikan säännöistä, oli tietokoneiden teoreettiset perusasiat luotu. Tietokoneiden kehityskaari Reikäkorttikoneet Sähkön keksiminen antoi erityisesti mekaanisille laskukoneille kehityssysäyksen. Ensinnäkin sähkömoottoreita ja releitä voitiin käyttää apuenergiana ja toiminnan varmistamisessa. Toiseksi sähkön käyttö mahdollisti uudet tuotantoteknologiat, joiden avulla koneiden osia voitiin tehdä huomattavasti tarkemmin ja halvemmin kuin aikaisemmin. Teollistumisen myötä myös laskentaa alettiin tarvita uudenlaisissa yhteyksissä, kuten väestönlaskennassa. Ensimmäinen väestönlaskenta Yhdysvalloissa suoritettiin v. 1790 ja sen jälkeen joka kymmenes vuosi. Jo v. 1850 tämä työ oli kasvanut niin laajaksi, että kerätyn aineiston käsittelyä pyrittiin eri tavoilla mekanisoimaan. Tämä johti siihen, että Hollerith v. 1890 sai tämän tehtävän keksimällään reikäkorttilaitteella. Nykyäänkin varsin tunnettu yritys IBM juontaa juurensa hänen perustamastaan yrityksestä. Analogiakoneet Sotatekniikan tarpeet johtivat toiseen kehityshaaraan. 1900-luvun alussa sotalaivat ja tykit olivat kehittyneet niin pitkälle, että tarvittiin uudentyyppisiä tähystys- ja
Suomen Automaatioseura ry TIE 3/3 laskentalaitteita, joilla voitiin luotettavasti laskea tykkien suuntausarvoja. Suuntauksessa oli myös tärkeätä pystyä kompensoimaan laivan liikkeitä meressä. Ensimmäiseksi otettiin käyttöön erilaisia taulukoita sekä laskutikkuja muistuttavia laskentavälineitä. Taulukoiden tuotanto muodostui kuitenkin omaksi ongelmaksi, koska niitä piti tuottaa kaikkia tykkejä ja ammuksia varten. Tähän tarkoitukseen kehitettiin mekaanisia laskentavälineitä, joilla voitiin analogiaperiaatteella integroida mielivaltaisia funktioita. Näitä laitteita vietiin myös jossain määrin laivojen komentokeskuksiin. Analogiaperiaatetta käytettiin myös niissä servojärjestelmissä, joissa tykkien alustojen liikkeet otettiin suuntauksessa huomioon. Lentokoneiden ja tutkien kehitys johti myöhemmin siihen, ettei mekaanisia analogiakoneita enää voitu käyttää niiden hitauden vuoksi. Tämän ongelman ratkaisemiseksi kehitettiin erilaisia sähköisiä analogiakoneita. Ne siirtyivät sotien jälkeen siviilikäyttöön, jossa niitä hyödynnettiin erityisesti simuloinnissa ja differentiaaliyhtälöiden ratkaisussa. Aikaiset tietokoneet Vasta 1930-luvun puolivälistä lähtien alettiin vakavasti pohtia mahdollisuutta käyttää nopeita elektronisia piirejä laskennassa. Joitakin konstruktioita releillä oli tosin saatu aikaan jo ennen toista maailmansotaa, mutta releet olivat huomattavasti radioputkia hitaampia. Ensimmäinen varsinainen tietokone oli ENIAC, joka valmistui vuonna 1945. Se kehitettiin ammuntataulukoiden laskemiseen ja sisälsi noin 18000 radioputkea. Tehontarve oli 150 kw ja kellotaajuus 100 khz. Ohjelmointi tehtiin kytkentäkaapeleilla ja käyttöaika oli tyypillisesti n. 20 tuntia ennen kuin joku putki vikaantui ja piti vaihtaa. ENIAC käynnisti monta muuta samantapaista tietokoneprojektia, mutta putkikoneet olivat kuitenkin liian isoja ja epäluotettavia varsinaisen tietokoneiden kehityskaaren käynnistämiseksi. Uudet keksinnöt Mullistavin uudistus oli transistorin keksiminen vuonna 1948. Transistorissa elektroniikka saatiin kertaheitolla pienempään tilaan, ja siinä tarvittiin vähemmän tehoa. Myös komponentit olivat luotettavampia. Kesti tosin muutamia vuosia ennen kuin transistorien tuotantotekniikka oli kehitetty siihen pisteeseen, että pystyttiin tekemään nopeisiin kytkentätehtäviin soveltuvia transistoreita. Tietokoneiden kehitystä tuki myös moni muu keksintö, kuten ferriittirengasmuisti ja levymuisti. Syöttö- ja tulostuslaitteita kehitettiin myös voimakkaasti 1950-luvulla. Tietokoneiden nopea kehitys alkaa Tietokoneiden nopea kehitys alkoi kuitenkin vasta 1960-luvulla. Moni muistaakin vielä silloiset tietokoneet, jotka oli toteutettu diskreeteillä elektroniikkakomponenteilla. Sen ajan tietokoneista mainittakoon IBM1620-tietokone, joka oli siinä mielessä erikoinen, että se laski desimaalijärjestelmää käyttäen. Myöhemmät koneet käyttivät binäärijärjestelmää. Tietokoneita otettiin käyttöön mitä erilaisimmilla alueilla, ja IBM360-tietokonesarjaa käytettiin erittäin paljon hallinnollisessa laskennassa. Siihen aikaan rakennettiin tieteellistä laskentaa varten myös nk. supertietokoneita, joista Cray-
Suomen Automaatioseura ry TIE 4/4 1-kone oli ensimmäisiä. Prosessien säätö- ja ohjaustehtävissä alettiin myös käyttää tietokoneita ja digitaalista säätöä. 1970-luvulla käyttöönotetut PDP-8- ja PDP-16- tietokoneet olivat vielä 1990-luvullakin monessa tehtaassa kovassa käytössä. Nämä koneet poistettiin vasta sitten, kun niiden varaosien hankinta tuli kalliimmaksi kuin kokonaan uuden tietokoneen ostaminen. Nopeaa kehitystä tarkasteltaessa on todettava, että 1960-luvun alkupuolella arvioitiin, että 3 5 silloista supertietokonetta riittäisi koko maailman laskentatarpeeseen. Tietokoneiden lukujärjestelmä Nykyisten tietokoneiden käyttämässä ns. binäärijärjestelmässä eksponentin kantaluku on 2. Binäärijärjestelmässä luvut voidaan ilmaista lukujonona, jossa on vain numerot 0 tai 1. Tällaiset tilat on helposti saatavissa aikaan elektronisesti. Näillä merkeillä voidaan kertoa tietokoneelle, onko lukujonon kyseiselle paikalle sijoittuva kahden eksponentti mukana luvussa vai ei. Jos se on, niin kyseisessä kohdassa lukujonossa on 1, ja jos se ei ole, niin sillä kohdalla on 0. Siten esimerkiksi desimaaliluku 83 kirjoitetaan binäärijärjestelmässä oikealta vasemmalle luettaessa tietokoneiden käyttämässä 8- paikkaisessa lukujonossa 01010011. Ensimmäinen paikka oikealta on varattu kantaluvun 2 eksponentille 0, toinen paikka eksponentille 1, seuraava eksponentille 2, seuraava eksponentille 3 jne., eli oikealta vasemmalle lukujonon arvo on 1+2+0+0+16+0+64+0, siis yhteensä 83 desimaalisella järjestelmällämme ilmaistuna. Tällaisella 8-paikkaisella tavulla voidaan esittää luvut 0 255. Luvusta 0 on kyse, kun kaikissa paikoissa on 0, ja luvusta 255, kun kaikissa paikoissa on 1. Näillä luvuilla voidaan tietokoneessa kuvata kaikki aakkoset, erikoismerkit ja numerot eli kaikki se, minkä tietokoneen kuvaruudulta voimme nähdä. Esimerkiksi kirjaimelle A on tietokoneen kooditaulukossa valittu luku 65 eli binäärisellä konekielellä oikealta vasemmalle luettuna 01000001. Käytännössä tämä ei vielä riitä, koska pitää pystyä käsittelemään monenlaista tietoa, joten tietokoneen ohjelmistoissa joutuu aina määrittelemään, miten nämä tavut pitää tulkita. Ohjelmistot Ohjelmisto on tärkeä osa tietokonetta. Ensimmäiset tietokoneet ohjelmoitiin konekielellä, mikä tarkoitti, että yksittäisiä laskuoperaatioita syötettiin tietokoneen muistiin kytkinpaneelilta, reikäkorteilta tai reikänauhalta. Konekieli oli vaikea hallita, koska oli hankalaa muistaa käskyt ja lukea kirjoitettua ohjelmaa. Tämän ongelman helpottamiseksi otettiin ensimmäiseksi käyttöön nk. assemblerkielet. Varsinainen läpimurto ohjelmoinnissa kuitenkin tehtiin, kun ns. korkean tason kielet määriteltiin ja niille rakennettiin kääntäjiä, joilla voitiin automaattisesti generoida tarvittava konekielinen ohjelma. Seuraava merkittävä kehitysaskel olivat ns. käyttöjärjestelmät, jotka mahdollistivat tietokoneen kaikkien resurssien, kuten reaaliaikakellon, syöttö- ja tulostuslaitteiden, levymuistien jne., hallinnan. Nykyään käytetään yleisesti myös erilaisia tietokantaohjelmistoja suurien tietomäärien hallintaan.
Suomen Automaatioseura ry TIE 5/5 Viimeiset parikymmentä vuotta Mikropiirit Mikropiirien keksiminen v. 1959 oli tärkeä askel edellä kuvatussa kehityksessä. Idea on yksinkertainen: integroimalla yhdelle piipalalle transistorit, johdot ja muut elektroniikkakomponentit voitiin monta toimintoa sijoittaa pieneen tilaan. Lyhyemmät johdot piipalan sisällä mahdollistivat suurempien kellotaajuuksien käytön. Tätä kehitystä on usein kuvattu sen mukaisesti, kuinka monta transistoria on integroitu yhteen mikropiiriin, jolloin voidaan nähdä, että kasvu on pitkään ollut eksponentiaalista. Tänään esim. Pentium 4 -prosessorissa on jo 40 miljoonaa transistoria yhdellä piipalalla. Toinen luku, jolla kehitystä on kuvattu, on mikropiirien johdotuksessa käytettyjen johtojen leveys piipalalla. Ensimmäisissä mikropiireissä se oli millimetrin luokkaa ja nykyisissä alle sata nanometriä. Pienempi, tehokkaampi, halvempi ja luotettavampi Tietokoneiden kehitystä viimeisten 20 vuoden aikana voidaan kuvata sanoilla pienempi, tehokkaampi, halvempi ja luotettavampi. Tämä johtuu monesta mikropiirien tuotantotekniikan alueella syntyneestä innovaatiosta. Tietokoneet ovat myös olleet tärkeitä uusien tietokoneiden kehittämisessä, koska uusia mikropiirejä on suunniteltu ja niiden tuotantoprosesseja ohjattu tietokoneilla. Voidaan todeta, että kehittyessään minitietokoneet saivat vähitellen suurtietokoneiden ja mikrotietokoneet minitietokoneiden ominaisuuksia jne. Nyt on siirrytty suurista kaappitietokoneista sylimikroihin ja jopa kämmentietokoneet ovat vanhoihin tietokoneisiin verrattuina erittäin tehokkaita. Tietokoneita on tämän lisäksi usein upotettu erilaisiin laitteisiin. Tiedonsiirto Eräs tärkeä 1970-luvun innovaatio olivat tietokoneverkot. Ensin suurkoneita varustettiin aikajaolla siten, että useat käyttäjät pystyivät käyttämään niitä samanaikaisesti. Käytännössä tämä toteutettiin liittämällä käyttöterminaalit tietokoneen portteihin parikaapeleilla ja myöhemmin myös koaksiaalikaapeleilla ja valokuiduilla. Seuraavaksi tietokoneita kytkettiin verkkoihin, jotta tietoja voitaisiin helposti siirtää niiden välillä. 1980-luvulla otettiin käyttöön ohjelmistoja, joista myöhemmin kehittyi sekä Internet että World Wide Web -sovellukset. Nyt Internet mahdollistaa sähköpostin lähettämisen minne vain maailmassa ja tietojen imuroimisen miljoonista tietokoneista ympäri maapalloa. Tiedonsiirtoa varten on langallisten ratkaisujen ohella kehitetty myös langattomat ratkaisut. Uudet menetelmät ja ohjelmistot Tietokonetekniikan kehitys on monessa suhteessa käynyt käsi kädessä monien uusien laskentamenetelmien kanssa. Nykyään voidaan ratkaista differentiaaliyhtälöitä ja optimointitehtäviä, jotka ovat niin suuria, että ne käsittävät tuhansia määrittelyyhtälöitä, sekä hallita erittäin suuria tietomääriä jne. Kryptologiassa on keksitty uusia
Suomen Automaatioseura ry TIE 6/6 menetelmiä salata sanoman sisältö tavalla, jota käytännössä voidaan pitää mahdottomana murtaa. Tämän nopean kehityksen varjopuolena ovat nk. tietokonevirukset, joita vastuuttomat henkilöt levittävät tahallaan koko maailman tietokonekäyttäjien riesaksi. Tulevaisuus Kehitystä rajoittavat tekijät Tulevaisuutta ajatellen on ensimmäiseksi todettava, että vastassa on muutama fysikaalinen kehitystä rajoittava tekijä. Eräs niistä liittyy elektroniikan pienentämiseen. Mikropiirillä olevia johtoja ei voida pienentää mielivaltaisesti, vaikkakaan lopulliseen fysikaaliseen rajaan ei olla vielä törmätty. Myöskään niiden elektronien lukumäärää, josta bittiä muodostetaan, ei voida pienentää mielivaltaisesti. Mikropiirin tehonkulutus tulee myös olemaan rajoittava tekijä yksinkertaisesti siitä syystä, että piirin generoima lämpö pitää saada johdettua pois siitä. Tuotantotekniikan rajoitukset tulevat myös yksinkertaisesti vastaan, sillä koneet, joita tarvitaan piirien suunnitteluun ja tuotantoon, ovat erittäin kalliita. Myös menetelmien ja ohjelmistojen käytössä ilmenee monia rajoittavia tekijöitä. Uudet tietokoneet Edellä kuvatut rajoitukset ovat saaneet tutkijat ympäri maailmaa etsimään uusia ratkaisuja, joiden avulla näiltä voitaisiin välttyä. Eräs ehdotetuista konsepteista on nk. molekyylitietokoneet, joissa laskentaa suoritetaan isoissa molekyyleissä eikä enää mikropiireissä. Voidaan kuitenkin olettaa, että kestää jopa vuosikymmeniä ennen kuin tällaisia alkaa ilmestyä työpöydille ja koteihin. Vielä pidemmällä tulevaisuudessa ovat nk. kvanttitietokoneet, jotka toimivat kvanttiteorian mukaisesti siten, että bitin voidaan katsoa olevan samanaikaisesti sekä tosi että epätosi. Riippumatta näistä pitkälle tulevaisuuteen menevistä visioista on kuitenkin selvää, että tietokoneiden soveltamisessa ollaan vasta alussa ja monta uutta mielenkiintoista sovellusta on vielä keksimättä. Tekoäly Eräs tietokoneiden sovellus, joka esiteltiin 1980-luvulla, oli ns. tekoäly. Tosin ensimmäisiä tekoälysovelluksia oli rakennettu jo huomattavasti aikaisemmin, mutta vasta 1980-luvulla otettiin käyttöön sekä erillisiä tekoälysovelluksiin tarkoitettuja tietokoneita että ohjelmistoja. Ensimmäiset tekoälysovellukset olivat kuitenkin melko kömpelöitä suuren joukon jos niin-lauseita ratkaisemiseksi. Nykyään on olemassa sovelluksia, jotka matkivat ihmisen kykyä ratkaista matemaattisia tehtäviä. Onkin syytä pohtia, onko älykästä konetta mahdollista rakentaa. Tutkijat ovat tämän kysymyksen ratkaisusta monta mieltä, mutta nk. Turingin koe voisi toimia jonkinlaisena koetinkivenä. Turingin kokeessa testataan, voiko koehenkilö erottaa ihmistä koneesta kommunikoidessaan piilossa olevan koneen tai ihmisen kanssa. Entä onko mahdollista, että tietokone joskus voisi kehittää tietoisuutta? Kysymys on vieläkin vaikeampi, koska
Suomen Automaatioseura ry TIE 7/7 ei tiedetä edes, mistä ihminen saa tietoisuutensa. Riippumatta siitä, saadaanko näihin kysymyksiin koskaan vastauksia, on kuitenkin selvää, että tietokoneet ovat jo toimineet malleina, kun ihmisen aivotoimintaa on yritetty ymmärtää. Lähteitä: Aspray, Bromley, Cambell-Kelly, Ceruzzi, Williams (1990). Computing before computers, Iowa State University Press, Ames, USA (saatavilla osoitteesta http://edthelen.org/comp-hist/cbc.html).