Tiede
15.01.2015

Bittien viemää

Teksti:
Aleksi Malinen
Kuvat:
Anja Karppinen

Joulukuun alussa Youtube-videopalvelulla oli ongelma. Yhden videon, joka sattui olemaan Etelä-Korealaisen Psyn musiikkivideo kappaleelle Gangnam Style, katsomiskertalaskuri oli lähestymässä suurinta mahdollista lukua, jonka se pystyi esittämään. Kiireessä, ennen kuin mitään ehti tapahtua, Youtuben ohjelmoijat korjasivat laskurin. Vaikka oikeastaan mikään ei ollut rikki.

0001, 0010, 0011, 0100, 0101, 0110, 0111. Edellä näette seitsemän neljän merkin jonoa. Yksittäisellä merkillä on arvona joko 1 tai 0. Kyse on binäärikoodista, jolla tietokone käsittelee informaatiota ja jolla voidaan esittää esimerkiksi lukuja tai kirjaimia.

Binäärikoodin yhtä merkkiä eli yhtä nollaa tai ykköstä kutsutaan bitiksi. Kahdeksan bitin jonoa sanotaan tavuksi, joka on tietokoneen suorittimien käyttämä perusyksikkö. Neljän bitin yksikkö on puolestaan nibble.

Jokainen yllä oleva rivi kuvaa yhtä numeroa, jotka ovat tässä tapauksessa 1, 2, 3, 4, 5, 6, ja 7. Neljällä bitillä on mahdollista esittää kuuttatoista eri lukua -8:sta +7:ään. Youtuben laskuri käytti 32:ta bittiä, joilla voidaan esittää yhteensä yli neljä miljardia lukua, joista noin puolet on positiivisia. Ja koska Youtuben videoilla ei voi olla negatiivisia katselukertoja, vain positiiviset luvut olivat käytössä.

Gangnam Style -musiikkivideo oli lähestymässä 2147483647:ttä katsomiskertaansa, kun Youtuben ohjelmoijat havahtuivat 32-bittisen esitystavan rajallisuuteen. Ennen kuin laskuri ehti ajautua niin sanotusti määrittämättömään tilaan, sen käyttämä bittimäärä nostettiin 32:ta 64:ään. Nyt yksittäistä Youtube-videota voi katsoa yhteensä 9223372036854775808 kertaa ilman, että ongelmia esiintyy.

Luvut 2147483647 ja 9223372036854775808 vaikuttavat omituisilta valinnoilta laskurien päätepisteiksi. Arkilogiikan mukaan voisi esimerkiksi kuvitella, että viimeinen mahdollinen luku olisi erinäinen määrä yhdeksikköjä, kuten vaikkapa autojen trippimittareissa. Kyse on kuitenkin siitä, miten lukuja kuvataan binäärimuodossa, ja mitkä luvut kolmellakymmenelläkahdella tai kuudellakymmenelläneljällä bitillä on mahdollista esittää.

Täten toivotan teidät tervetulleiksi bittien ihmeelliseen maailmaan.
 

Sen takana, miksi juuri 32 bittiä on valittu esittämään laskurin lukuja, on tietojenkäsittelytieteen dosentti Jouni Smedin mukaan luultavasti vain se, että Youtuben ohjelmoijat kuvittelivat, ettei isompia lukuja tarvita. Kun palvelu vuonna 2005 perustettiin, oli oletus perusteltu ja järkevä. Ei kukaan tule katsomaan yhtä videota yli kaksi miljardia kertaa. Miksi siis käyttää enempää tilaa luvuille, jos se ei ole välttämätöntä?

Toinen syy 32 bitin taustalla on aiemmin mainittu suorittimien perusyksikkö, tavu. Suorittimien käsittelemät tietomäärät ovat siis jaollisia kahdeksalla, ja jos suoritin käsittelee tietoa esimerkiksi 32 bittiä kerrallaan, silloin myös ohjelmointi kannattaa toteuttaa sen mukaan.

On olemassa myös niin sanottuja liukulukuja hyödyntäviä ohjelmia, jotka käyttävät vaikkapa 33:a bittiä, mutta tällöin ohjelma on raskaampi pyörittää. ”Kun näitä systeemejä tehdään, lukuarvoille valitaan tietty tila. Se on sitten ennakointia, että riittääkö varattu tila tiedon esittämiseen”, Smed kertoo.

Smed havainnollistaa tilankäyttöä näin: kun olet vuokraamassa asuntoa, ajattelet, että kyllä tämä kaksio riittää eikä ole mielekästä vuokrata isompaa. Kun sitten tilanne muuttuu ja perustat vaikkapa perheen, kaksio jääkin nopeasti pieneksi. Kyse on tulevaisuuden ennakoinnista ja optimoinnista.

Ja vaikka yhden laskurin kohdalla kapasiteetin tuplaaminen ei välttämättä vielä rohmua suunnattomasti tilaa, kaikkien laskureiden kohdalla tilanne onkin toinen. Pienistä puroista kasvaa niin sanotusti iso joki.

”Tilankäyttöä voi kuvata klassisella esimerkillä shakkipelin keksijästä, joka toivoi palkkioksi yhden riisinjyvän ensimmäiselle ruudulle ja aina kaksinkertaisen määrän seuraavalle. Kuudennenkymmenennenneljännen ruudun kohdalla jyvien määrä oli jo niin suuri, etteivät maailman viljavarannot taida vieläkään riittää palkkion maksamiseksi”, Smed sanoo.

Toinen esimerkki 32 bitin rajallisuudesta lukujen esittämisessä on Unix-pohjaisten käyttöjärjestelmien tapa näyttää aikaa. Järjestelmissä kellon nollapisteeksi eli epochiksi on valittu tammikuun ensimmäinen vuonna 1970, josta laskuri sitten rullaa eteenpäin. 32-bittisellä laskurilla on tilaa edetä 2147483647 sekuntia, jonka jälkeen kello kierähtää ympäri. Tämä hetki koittaa, kun kello lyö 03:14:07 tammikuun 19. vuonna 2038.

”Kun Unix-käyttöjärjestelmä on 70-luvulla tehty, ajateltiin, ettei tämä [laskurin loppuminen] ole meidän ongelmamme.”

Kolmas esimerkki samasta ongelmasta on internetin IP-osoitteiden määrä. IP-osoitteet kun loppuivat neljä vuotta sitten.

Myös IP-osoite koostuu 32 bitistä. Koska negatiiviset luvut eivät tässä aiheuta hallaa, osoitteita on yhteensä yli neljä miljardia erilaista. Osoitteiden loppumista ei kuitenkaan ole aiheuttanut pelkästään osoitteiden rajattu määrä.

”IP-osoitteiden jakelupolitiikka oli aika erikoinen. Toimijat jaettiin ryhmiin. Puhuttiin luokka A:sta, B:stä ja C:stä. A-luokan toimijat, kuten Apple, Ford ja Yhdysvaltain puolustushallinto, saivat käyttöönsä isoimman lohkon osoiteavaruutta,” Smed kertoo.

Turun yliopisto kuuluu B-luokkaan. Sillä on käytössään noin 65 000 IP-osoitetta. Luokka A:n toimijoilla on käytössään miljoonia osoitteita.

Kahdeksankymmentäluvulla ei myöskään voitu ennakoida esimerkiksi kännyköitä tai muita laitteita, jotka ovat kytkettyinä verkkoon ja tarvitsevat siten kukin oman IP-osoitteensa.

”On olemassa uudempikin protokolla, mutta se on aika nihkeästi käytössä. Siinä tilaa on 128 bittiä, joten silloin osoitteet riittäisivät, vaikka maailman jokaiselle eliölle annettaisiin oma osoitteensa.”

Uudempaan protokollaan siirtyminen on ollut hidasta. Niin kauan kuin jokin toimii, ei protokollan vaatimia laitehankintoja haluta tehdä.

Kun IP-osoitteet ovat muuttuneet rajalliseksi resurssiksi, niistä käydään myös kauppaa. Ne joilla on hallussaan isompi osa osoiteavaruutta kaupittelevat sitä eteenpäin niille, jotka osoitteita tarvitsevat.

Mutta miksi tietokoneet ylipäänsä käsittelevät tietoa nollina ja ykkösinä? Miksi binäärinen esitystapa on vakiintunut normiksi? Voisiko biteistä päästä eroon?

Binääriin perustuvaa laitetta kutsutaan digitaaliseksi, sillä se käyttää hyväkseen vain kahta arvoa. Jos tietokone laskisi vaikkapa numeroilla yhdestä yhdeksään, sitä sanottaisiin analogiseksi. Myös analogisia tietokoneita on kokeiltu, mutta digitaalisuus vakiintui ohjelmoitavien tietokoneiden standardiksi hyvin nopeasti. Se on yksinkertainen ja tehokas tapa käsitellä tietoa.

Mitään suoranaista estettä sille, miksei joku voisi kehitellä analogisesta tietokoneesta vaihtoehtoa digitaaliselle, ei Jouni Smedin mukaan oikeastaan ole. Kyse on siis pikemminkin perinteestä ja siitä, että digitaalisuudella on saatu riittävän hyviä tuloksia.

Ensimmäisenä binääristä esitystapaa käytti 1600-luvulla elänyt itävaltalainen matemaatikko Gottfried Leibniz. Hän kehitti metodin, jolla lukuja on mahdollista esittää vain kahta merkkiä, nollaa ja ykköstä, käyttämällä. Myöhemmin 1800-luvun puolessa välissä englantilainen George Boole jatkoi Leibnizin pohdintoja ja kehitti menetelmän aritmeettisten yhtälöiden laskemiseksi binäärisessä muodossa.
Boole pohti asiaa puhtaasti teoreettisesti, mutta amerikkalainen Claude Shannon esitteli Massachusets Institute of Technology -yliopistossa tarkastetussa gradussaan, miten Boolen pohdinnat voitiin tuoda käytäntöön. Hän yhdisti Boolen algebran sähköisiin releisiin ja esitteli näin mallin digitaaliselle tietokoneelle.

”Mitä tahansa, mitä matematiikassa voi tehdä, voitiin laittaa mekaanisten laskukoneiden laskettavaksi”, Jouni Smed selventää.

Sähköiset releet sopivat Shannonin käyttöön hyvin, koska niillä oli tasan kaksi tilaa: päällä ja pois. Ja kun Boole tosiaan käytti algebrassaan vain kahta merkkiä, oli teorian muuttaminen käytännöksi kohtuullisen yksinkertaista.

Releitä seurasivat tyhjiöputket, joita seurasivat transistorit, joita seurasivat mikroprosessorit. Vähä vähältä tietokone saatiin huoneen kokoisesta, äärettömän kalliista virtasyöpöstä taskuun mahtuvaksi, jokaisen saavutettavaksi virtasyöpöksi.

Tietokoneiden toimintalogiikka on kuitenkin pysynyt samana. Nollat ja ykköset rullaavat yhä kaikkien digitaalisten laitteiden taustalla.

 

Vaikka tässä artikkelissa on käsitelty lähinnä numeroita ja sittemmin myös yhtälöitä, käytetään binääristä esitystapaa toki muuhunkin. Esimerkiksi kirjaimet, kuvat, äänet ja videot muuttuvat kaikki digitaalisessa ympäristössä ykkösiksi ja nolliksi.

Samoin kuin Youtuben laskurissa, käyttöön varattu bittimäärä rajoittaa myös kirjaimien, kuvien ja äänten esittämistä. Esimerkiksi internet-osoitteet olivat pitkään ilman ä- ja ö-kirjaimia, koska alun perin ne käyttivät 7-bittistä ASCII-standardia, joka laadittiin englannin kielen aakkoston perusteella.

Nykyään verkko-osoitteissa toimivat myös ääkköset, mikä johtuu siitä, että osoitteiden esittämiseen käytettävää standardia on muutettu ja merkkien esittämiseen käytettävää bittimäärää kasvatettu.

Kirjaimien kohdalla jokaista merkkiä esittää tietty binäärisarja. Seitsemällä bitillä mahdollisten kirjainten määrä oli 128, kun nykyisellä Unicode-standardilla, joka sisältää pohjoismaisten merkkien lisäksi esimerkiksi kiinalaiset merkit, voidaan esittää yhteensä yli 100 000 erilaista merkkiä.

Valokuvien kohdalla bittimäärä rajoittaa lähinnä sitä, miten autenttisena kuva tietokoneen ruudulla toistuu.

Kuvan jokaisessa pikselissä on jokin määrä kolmea tietokoneen käyttämää pääväriä: punaista, vihreää ja sinistä. Näiden variaatioilla pyritään toistamaan kuvassa esiintyvät sävyt, mutta bittimäärä säännöstelee sen, miten paljon erilaisia variaatioita on käytettävissä. Kuudellatoista bitillä saadaan aikaiseksi paljon vähemmän sävyjä kuin kolmellakymmenelläkahdella.

Aina kuvien digitointi ei kuitenkaan onnistu ongelmitta. Jos esimerkiksi käytettävä tarkkuus on liian pieni, ja kuvan pikselit siten liian isoja, kuva näyttää rakeiselta. Jos taas kvantisointi, eli kuvaa digitoidessa tehtävä arvojen pyöristys, tehdään liian suurpiirteisesti, kuvan dynamiikka kärsii.

Myös kirjainten esittämisen taustalla pyörivät bitit ponnahtavat välillä ilmoille, kun vaikkapa sähköpostiohjelma tai verkko-osoite ei tunnistakaan ä- ja ö-kirjaimia. Usein näiden merkkien tilalle ilmaantuu epämääräistä merkkimössöä.

Tai välillä laskurit uhkaavat saapua pääteasemalleen, kuten Gangnam Stylen tapauksessa uhkasi käydä. Aina nollat ja ykköset eivät pysy näkymättömissä.

”Nämä asiat kuuluisivat sinne konepellin alle, mutta aina välillä ne purskahtavat esille”, Jouni Smed sanoo.

Edellä kuvattujen tilanteiden aiheuttamia seurauksia on vaikea arvioida. Näkyvimpiä ovat vaikkapa juuri kirjainten esittämisongelmat tai Youtube-laskurin tilan loppuminen. Määräämättömässä tilassa laskurit saattavat esimerkiksi pyörähtää suurimmasta positiivisesta pienimpään negatiiviseen lukuun.

Unix-käyttöjärjestelmien kellot aiheuttavat joillekin ohjelmille pulmia jo nyt. Esimerkiksi jotkut tähtitieteelliseen laskentaan pohjautuvat sovellukset laskevat helposti yli vuoden 2038, jolloin ohjelma ei toimi kuten pitäisi.

Myös Android-laitteet ovat Unix-pohjaisia. Tosin Smed epäilee, että mobiililaitteet vaihtuvat niin usein, ettei kellon päättymisestä luultavasti koidu todellista haittaa. Todennäköisesti laitteet on ennätetty päivittää vuoteen 2038 mennessä niin, että niiden kellot käyvät pitkälle tulevaisuuteen.

Ongelmia aiheuttavista systeemeistä pois siirtyminen ei ole suoraviivaista. Vanhoista ohjelmista ja ohjelmointikielistä jää pyörimään haamuja, kun jotkut ohjelmat tai laitteet yhä käyttävät niitä. Esimerkiksi Turun keskustan vanhimmat liikennevalot on huhun mukaan koodattu vanhalla 70-luvun ohjelmointikielellä, joka aiheuttaa sen, että ongelman sattuessa korjaajan löytäminen on hankalaa.

Sitä, mikä ei suoranaisesti ole rikki, ei aina koeta tarpeelliseksi uudistaa. Välillä laitetaan ilmastointiteippiä päälle ja toivotaan, että homma pysyy kasassa.

Kaikkien onneksi Youtuben laskuri on nyt päivitetty. Gangnam Style voi jatkaa katsomiskertojen keräämistä, joita tämän artikkelin kirjoitushetkellä on yli 2,2 miljardia.

Tulevaisuus näyttää, miten pitkälle bitit tällä kertaa riittävät.