Keskusyksikkö, keskusmuisti ja tiedon sisäinen esittäminen

 

Johdanto.. 2

Keskusmuisti 3

Muistikäsitteet - Osoitteenmuodostus. 3

Muistilaitteet- elektroniputkista integroituihin piireihin.. 5

Keskusmuistityyppejä.. 5

RAM-muisti 5

ROM-muisti 6

Keskusyksikkö.. 6

Ohjainyksikkö.. 7

Laskentaosa (ALU) 7

Rekisteri 8

Käskyjen käsittely.. 9

Konekierrosaika.. 9

Käskyt ja käskyjakso.. 10

Merkkikoodit.. 11

BCD (Binary Coded Decimal) – Binäärikoodattu desimaaliluku.. 11

EBCDIC.. 12

ASCII 12

Lukujärjestelmät.. 13

Kymmenlukujärjestelmä.. 13

Kaksikantajärjestelmä - binäärijärjestelmä.. 14

2-kantajärjestelmän johdannaiset: oktaali (8-kanta) ja heksadesimaali (16-kanta) 15

Muunnokset.. 16

Pariteettivarmistus.. 17

 

 


Johdanto

Edellisissä oppijaksoissa olemme tarkastelleet lyhyesti nykyaikaisen tietokonejärjestelmän osia. Nyt tarkastelemme näitä osia eli laitteistoa ykstyiskohtaisemmin. Tässä osassa tutustumme niihin tekniikoihin, joita käytetään sen tiedon varastointiin, jota keskusyksikkö (CPU) parhaillaan käsittelee. Tässä myös kuvataan logiikka- ja ohjaustoiminnot sekä kuinka eri toiminnaliset komponentit toimivat keskenään. On tärkeää korostaa, että vaikka näiden komponenttien laitetoteutus on dramaattisesti muuttunut muutaman viime vuosikymmenen aikana ja varmasti muuttuu ja paranee myös jatkossa, ovat tässä käsiteltävät toimintojen perusperiaatteet pysyneet ja tulevat pysymään hyvin samanlaisina.

Tiedonkäsittelyjärjestelmän tehokkuutta mitataan sen ongelmanratkaisukyvyillä. CPU valvoo ja ohjaa aritmeettisia, loogisia ja siirtotoimintoja. Keskusmuisti (tai primäärimuisti) tarjoaa väliaikaiset paikat tietokoneessa tiedon ja käskyjen varastointia varten niiden käsittelyn ajaksi. Tiedonkaäsittelyn menetelmien ja kunkin yksikön toiminnan ymmärtäminen auttaa saamaan selvän kuvan tiedonkäsitelyn ympäristöstä.

Tässä osassa käsittelemme ainoastaan digitaalisia, binäärijärjestelmään perustuvia tietokoneita. Binääri- eli kaksikantalukujärjestelmällä tarkoitetan järjestelmää, johon lähes kaikkien tietokoneiden toiminta nykyään perustuu. Termillä digitaalinen ne erotellaan analogisista tietokoneista, jotka käsittelevät jatkuvia lukuja ja joiden käyttö on varsin rajoittunutta, esimerkiksi joissakin ohjausjärjestelmissä. Tutkimme ensin kuinka tietoa varastoidaan ja haetaan keskusmuistista. Käytetyt tekniikat ovat hyvin samantapaisia kuin se, miten posti jaetaan kotiin osoitejärjestelmän perusteella. Tarkastelemme myös muutamia tiedon varastointiin käytettävistä tekniikoista.

Seuraavaksi käymme läpi keskusyksikön, joka on kaikkien tietokonejärjestelmien sydän. Näemme kuinka sen kaksi pääkomponenttia, ohjainyksikkö ja laskentaosa, toimivat yhdessä tuottaen tietokoneen toiminnot.

Sen jälkeen käymme yksityiskohtaisesti läpi sen kuinka käskyjä käsitellään ja kuinka ne haetaan, tulkataan ja toteutetaan tietokoneessa. Käytämme yksinkertaistettua mallia, mutta periaatteet ovat samat  monimutkaisemmissakin tietokoneissa.

 

Tämän päivän kehittyneessä tietokone- ja tietoliikennemaailman hahmottamista helpottaa kun ymmärtää minkälaisista rakenneosista se rakentuu. Edellisissä oppijaksoissa tarkastelimme useita peruskäsitteitä ja opimme kuinka tietokone varastoi osoitteita ja käskyjä bittijonoina. Kuva ei kuitenkaan vielä ole täydellinen. Samanlaista koodausjärjestelmää käytetään kuvaamaan sekä numeerista että merkkitietoa. Käymme läpi useampia standarditapoja, joita on kehitetty esittämään merkkitietoa.  Tarkastelemme myös tiedon esittämistä ja kuinka sitä voidaan manipuloida. Viimeisessä osassa käsittelemme tiedon eheyden varmistamista.

Keskusmuisti

Ohjelman käskyille ja niiden käsittelemälle tiedolle tarvitaan varasto. Tietokoeen keskusmuistin tallennuskykyä käytetään usein mittatikkuna tietokoneen tiedonkäsittelyteholle. Suurempi tallennuskyky merkitsee, että enemmän ohjelmia ja tietoa saadaan mahtumaan. Joskus jokin sovellusohjelma joudutaan kirjoittamaan uudelleen koska se ei sovi keskusmuistiin. Muistien koot ovat kasvaneet dramaattisesti, mutta niin ovat kasvaneet ohjelmatkin ja tietomäärät. Tarkastelemme tässä ensin kuinka muisti on organisoitu ja sitten varsinaisia laitteita.

Kaikki tietokoneen käsiteltäväksi tuleva tietoa ja käskyt on ensin sijoitettava keskusmuistiin. On syytä huomata, ettei koko ohjelman ja kaiken tiedon tarvitse olla muistissa koko aikaa, ainoastaan niiden osien, joita kulloinkin käsitellään. Olettakaamme tässä, että tieto on jo sijoitettu muistiin. Tätä varastoa voisi verrata suunnattomaan elektroniseen arkistokaappiin, joka on täydellisesti luetteloitu ja ja josta tiedon saa nopeasti. Arkistokaapin sisältönä voivat olla tiedot tai käskyt. Näiden kahden kokonaisuuden elektroninen varasto on sama ja ne erotellaan vain käsittelyn yhteydessä.

Muistikäsitteet - Osoitteenmuodostus

Varasto on järjestetty systemaattisesti. Kussakin varastopaikassa voi olla vain yksi yksikkö kerrallaan. Myöhemmin katsomme kuinka nämä paikat voidaan yhdistellä esittämään merkityksellistä tietoa. Aivan kuten postinkantaja pystyy tuomaan postin tietylle henkilölle tietäessään tämän osoitteen, on kullakin muistipaikalla oma tunnisteensa tai osoitteensa.

Koska meillä on puhe digitaalisista, binäärijärjestelmään perustuvista tietokoneista, eivät osoitteet ole aivan sellaisia mihin olemme tottuneet, kuten katu, kaupunki jne, vaan sarjoja binäärilukuja. Jonkin muistipaikan osoite voisi esimerkiksi olla 0001001000001111 ja jonkin toisen 00100000111110000. Tietokoneosoitteiden kaksi tärkeää ominaisuutta on, ettei kahdella paikalla voi olla samaa osoitetta ja että kaikissa osoitteissa on sama määrä numeroita aina tietyssä tietokonemallissa.

Binäärinumeroiden – tai bittien – määrä osoitteessa määrittää kuinka yksilöllisesti eri muistipaikat voidaan spesifioida. Jos meillä on esimerkiksi kaksi bittiä, ovat eri osoitteet 00, 01, 10, 11, mikä ei tosiaankaan ole kovin suuri muisti. Hyvin tavallisia osoitekokoja ovat kuusitoista, kaksikymmentä ja kaksikymmentäneljä bittiä. Osaatko laskea montako eri osoitetta kullakin niistä voidaan muodostaa?

On ilmeistä, että suurempi määrä bittejä osoitteessa merkitsee suurempaa osoitetilaa ja suurempaa muistia. Koska muistin koko on koneen tehon yksi mittari merkitsee suurempi muisti tehokkaampaa konetta. Kun uutta tietokonetta suunnitellaan, on yksi ratkaistavista asioista sen muistin koko. Tämä ratkaisu määrittää bittien määrän osoitteessa.

Sanan koolla siis mitataan tietokoneen kokoa. Muista, että sanan koko on yhtä kuin kunkin muistipaikan sisältämien bittien lukumäärä. Kuten tulemme huomaamaan tuonnempana, myös osoitteet voidaan tallentaa muistiin. Jotta tämä toimisi tehokkaasti tulee osoitteiden sopia mukavasti määrättyyn muistipaikkasettiin. Monissa suosituissa mikrotietokoneissa sanan koko on kahdeksan bittiä ja osoite kuusitoista bittiä. Toisin sanoen yhden osoitteen talletamisen tarvitaan kaksi sanaa.

Toinen keskusmuistin tärkeä ominaispiirre on, että kukin paikka tai sana voidaan hakea samassa ajassa riippumatta siitä onko se ensimmäisessä, keskimmäisessä tai viimeisessä paikassa. Tätä kutsutaan yleensä hajasaanniksi (random access) ja hakuun menevää aikaa saantiajaksi (memory access time). Termi käyttömuisti tai työmuisti (RAM), jota käytetään usein mikrotietokoneiden yhteydessä, tarkoittaa samaa kuin keskusmuisti. Saantiajasta puhumme seuraavassa osassa, hajasaannista kun se viittaa levymuistiin puhumme viimeisessä osassa.

Muistilaitteet- elektroniputkista integroituihin piireihin

Varhaisissa tietokoneissa kuten UNIVAC I käytettiin elektroniputkia tiedon varastointiin keskusmuistiin. 1950-luvulla putket korvattiin ferriittirenkailla. Renkaiden läpi johdettiin magneettikentän synnyttävä sähkövirta, jolloin myös rengas magnetoitui. Tähän perustui tiedon varastointikyky. Kolmannen sukupolven tietokoneissa vuoden 1970 jälkeen magneettisen muistin korvasi puolijohdetekniikka. Tärkeä tietokoneen tehoa määrittävä tekijä on nopeus, jolla tieto voidaan muuttaa tai hakea keskusmuistista. Puolijohdelaitteet olivat yli tuhat kertaa nopeampia kuin magneetiset muistit, mikä paransi dramaattisesti suorituskykyä.

Integroituihin piireihin perustuvat muistilaitteet ovat nykyään valta-asemassa. Nykyisen teknologian ansiosta kynnen kokoiselle piisirulle voidaan varastoida miljardi bittiä.

Toisin kuin edeltäjänsä voivat integroidut piirit hävittää tiedon mikäli niitä ei aika ajoin päivitetä tai virkistetä. Sen vuoksi tarvitaan piirejä, jotka automaattisesti “kirjoittavat uudelleen” tiedon. Tästäkin huolimatta integroidut piirit ovat halvempia, nopeampia ja luotettavampia kuin vanhat magneettiset muistit. Moniin koneisiin on kehitetty logiikkapiirit, jotka automaattisesti havaitsevat ja korjaavat virheet.

Keskusmuistityyppejä

Keskusmuistityyppejä on useita. Kuten todettiin aiemmin, kaikkiin muistissa oleviin tietoihin päästään käsiksi samassa ajassa.

RAM-muisti

Tällaista muistia kutsutaan suomeksi hajasaantimuistiksi (tai työmuistiksi, käyttömuistiksi). Nykyaikaisissa tietokoneissa tämä tarkoittaa muistia, jonka sisältöä käyttäjä voi muuttaa; niinpä tietoa voidaan joko tallentaa (kirjoittaa) muistiin tai hakea (lukea) muistista.  On tärkeää muistaa, ettei lukuprosessi tuhoa tietoa kun taas kirjoittaminen tuhoaa. Tämä tarkoittaa sitä, ettei luettaessa muistin sisältö tuhoudu vaan se voidaan lukea uudelleen. Toisaalta siis kirjoitettaessa johonkin tiettyyn muistipaikkaa korvautuu siellä ollut tieto uudella. Vanha sisältö häviää.

ROM-muisti

Monissa tietokoneissa osa keskusmuistista on varattu toisenlaiselle muistille, jota kutsutaan lukumuistiksi ROM (read only memory). ROM on valmistajan ennalta ohjelmoima ja sitä voidaan ainoastaan lukea. Sen tieto on pysyvää, eikä käyttäjä voi sitä muuttaa. ROMille sijoitettava tieto voi olla tiettyjä alkeellisia käyttöjärjestelmän toimintoja, joita tarvitaan tietokoneen käynnistämiseen. Tietokonekielten (esim BASIC) tulkit sijoitetaan yleisesti ROMeille. ROMille tallennettua tietoa kutsutaan usein mikrokoodiksi, ehkä siksi, että se on tallennettu pysyvästi mikroskooppisessa muodossa.

PROM- ja EPROM-muisti

Tehdasasennetun ROMin aiheuttamien hankaluuksien välttämiseksi löytyy toisentyyppisiä muisteja. Sitä kutsutaan ohjelmoitavaksi lukumuistiksi, PROMiksi. Nämä piirit tulevat valmistajalta tyhjinä. Käyttäjä voi ohjelmoida niille oman sovelluksensa. Kuitenkin ne voidaan ohjelmoida vain kerran, minkä jälkeen ne toimivat kuten ROMit.

Neljäs muistityyppi on pyyhittävä ja uudelleenohjelmoitava lukumuisti, EPROM. Tämä muisti on pysyvä kuten ROM tai PROM sikäli, että kun virta katkaistaan ei sille tallennettu tieto katoa. Se on PROMin kaltainen sikäli, että käyttäjä voi määrittää sille oman sovelluksensa. Tärkeä ero on, että erikoislaitteilla se voidaan pyyhkiä ja ohjelmoida uudelleen.

Muistia kuvaamaan löytyy vielä kaksi termiä, haihtuva ja haihtumaton.  Kun virta katkaistaan, häviää haihtuvasta muistista siihen tallennettu tieto kun taas haihtumattomassa muistissa se säilyy. RAM on haihtuva muisti. Erilaiset ROMit ovat haihtumattomia. Yksi tapa ratkaista ROMin haihtuvuus on järjestää paristovarmennus, joka ylläpitää tiedon kun virta koneesta katkaistaan.

Keskusyksikkö

Aiemmin mainittiin, että keskusyksikkö (CPU) muodostuu kahdesta pääkomponentista, ohjainyksiköstä ja laskentaosasta, ALUsta. Tässä keskusmuistia on tarkasteltu erillisenä komponenttina, vaikka jotkut sijoittaisivatkin sen keskusyksikköön. Keskusyksikkö on avainkomponentti tietokoneessa. Siinä ovat logiikkapiirit, jotka käyttävät tietokonetta. Tietokonejärjestelmistä voi tulla äärimmäisen monimutkaisia miljoonine logiikkapiireineen. Tarkastelemme hyvin yksinkertaista mallia. Monimutkaisemmat järjestelmät toimivat keskeisiltä osiltaan samojen periaatteiden mukaan.

Ohjainyksikkö

Ohjainyksikkö toimii tietokoneen liikenteenohjaajana. Tähän toimintaan kuuluu syöttö/tulostuslaitteiden ohjaaminen sekä tiedonsiirto keskusmuistiin ja keskusmuistista. Ohjainta itseään ohjaavat keskusmuistissa olevissa ohjelmissa olevat käskyt. Käskyt haetaan muistista yksi kerrallaan. Käskyt tulkitaan. Joukko erityisiä “elektronisia portteja” avautuu ja sulkeutuu. Tämän ansiosta sarja elektronisia signaaleja siirtyy asianmukaisille komponenteille, jotka suorittavat käskyn.  Nämä käskyt on tallennettu datana keskusmuistiin ja ne siirretään ohjainyksikköön yksi kerrallaan.

Laskentaosa (ALU)

Laskentaosaan eli aritmeettisloogiseen yksikköön (Arithmetical and Logical Unit, ALU) sisältyvät logiikkapiirit, jotka suorittavat aritmeettisia operaatioita kuten yhteen-, vähennys-, kerto- ja jakolaskua. ALU voi myös loogisesti verrata kahta tietoa ja ryhtyä erilaisiin toimenpiteisiin vertailun tulosten perusteella. Esimerkiksi palkanlaskennassa tehtyjä työtunteja voidaan verrata lukuun neljäkymmentä, jotta nähdään pitääkö laskea ylitöitä.

ALUn piirien mutkikkuus riippuu siitä käskyjen määrästä, jotka tietty tietokonemalli ymmärtää. Varhaisten tietokoneiden käskykannat olivat hyvin rajalliset. Monimutkaiset tehtävät oli ohjelmoitava sarjoina näitä käskyjä. Tekniikan parantuessa yhä enemmän näitä tehtäviä saatiin sijoitettua ALUun. Mitä monipuolisempi käskykanta, sitä monimutkaisempia ovat ohjelmat, jotka suoritetaan suoraan ALUn piireissä. Tietokone toimii nopeammin ja on siten tehokkaampi. Hyvin yksinkertaiset tietokoneet kykenevät toimimaan vain yhdellä bitillä kerrallaan. Tätä kutsutaan  sarjakäsittelyksi. Useimmat nykyaikaiset koneet, jotka toimivat monella bitillä kerrallaan, suorittavat rinnakkaiskäsittelyä ja ovat tehokkaampia.

Toinen ero on se, kuinka tietty kone toimii kokonaisluvuilla ja liukuvan pilkun luvuilla. Yksinkertaiset tietokoneet, kuten useimmat henkilökohtaiset tietokoneet, käyttävät liukuvan pilkun menetelmälle kirjoitettuja ohjelmistoja, kun taas suurissa ja tehokkaammissa mini- ja suurtietokoneissa on monimutkaiset piirit ja käskyt, jotka suorittavat nämä laskennat suoraan. Tietokoneen käskykanta on päätettävä jo suunnittelun alkuvaiheessa sen perusteella mitä tehtäviä kone tulee useimmiten suorittamaan.

Viime aikoina on kohdistunut runsaasti mielenkiintoa ja tutkimusta ns. rajoitetun käskykannan tietokoneisiin (RISC). Ne perustuvat siihen periaatteeseen, että suurin osa tietokoneen suorittamista operaatioista on yksinkertaisia. Rajoitettu operaatiokanta on toteutettu suoraan laitteistossa. Tämä tekniikka mahdollistaa erittäin nopeat ja tehokkaat tietokoneet tiettyihin tarkoituksiin.

Käsitellessämme muistiosoitteita, osoitimme kuinka osoitteet itse sopivat mukavasti muistin sanoihin. Sama pitää paikkansa käskyistä. Jos käskyt olisivat vain kaksi bittiä pitkiä, voisi olla vain neljä erilaista käskyä. Tavallisia käskykokoja ovat kahdeksan, kuusitoista ja kaksikymmentäkaksi bittiä, mikä antaa suuren määrän erilaisia käskyjä, jotka mahtuvat tavallisiin sanakokoihin.

Rekisteri

Kuva siitä kuinka tietokoneen osat toimivat yhdessä alkaa muodostua. Valitun sanakoon tulee sopia yhteen sekä  osoitteen että käskyjen bittimäärän kanssa. Tätä yleissuunnitelmaa kutsutaan yleensä tietokoneen arkkitehtuuriksi. Toinen avainkomponentti tietokoneen suunnittelussa ja toiminnassa ovat rekistereiksi kutsutut pienikokoiset ja nopeat tietovarastot, jotka ovat osa ohjainyksikköä. Tämän päivän tietokoneissa on monia rekistereitä, jotka suorittavat erilaisia erikoistoimintoja. Rekisterin koon määrittelee sen toiminto. Esimerkiksi osoiterekisterissä, jossa pidetään seuraavan haettavan muistipaikan osoite, tulee olla sama määrä bittejä kuin muistiosoitteessa. Toisessa rekisterissä on seuraava suoritettava käsky, ja sillä on siksi sama bittimäärä kuin käskyllä.  Tärkeä rekisteri on akku. Se sisältää ALUsta tulevat tulokset ja sen tulee olla yhtenevä käsiteltävien tietoalkioiden koon kanssa.  Havaitsemme, että sen koko valitaan myös sanan koon mukaan.

Tärkeä huomioitava seikka tietokoneen arkkitehtuurin suunnittelussa on datan polku muistin ja CPU:n välillä. Dataa siirretään yleensä sana kerrallaan (vaikka joissakin järjestelmissä voidaan siirtää puoli sanaa tai kaksi sanaa kerrallaan), joten datapolussa tulee olla yksi kytkentä sanan kutakin bittiä kohti; esimerkiksi, kuusitoistabittisen tietokoneen datapolun tulee olla kuusitoista bittiä leveä. Tätä polkua kutsutaan väyläksi ( bus). Tavallisia väyläleveyksiä ovat kahdeksan, kuusitoista, kolmekymmentäkaksi ja  kuusikymmentäneljä bittiä. Yleisesti ottaen voi sanoa, että mitä leveämpi väylä sitä nopeampi tietokone. Väylä tulisi suunnitella riittävän leveäksi, jotta voidaan välttää pullonkaulat CPUn ja muistin välillä. Jos esimerkiksi tehdään suuri määrä muistiviittauksia ja väylän leveys on vain puoli sanaa, pitäisi kutakin hakua varten olla kaksi viittausta. Vaikka ALU olisikin erittäin nopea, hidastaisi tämä pahasti prosessointia.

Käskyjen käsittely

Olemme nyt kuvanneet CPUn ja keskusmuistin muodostavat komponentit. Seuraavaksi tarkastelemme kuinka käskyt käsitellään.

Konekierrosaika

Tietokoneen nopeutta mitataan yhtenäisillä aikajaksoilla, mitä kutsutaan konekierrosajaksi (machine cycle time).  Yleensä menee useampia kierroksia tiedon hakemiseen keskusmuistista tai käskyn suorittamiseen. Kierrosaikaa ohjaa erikoiskomponentti, jota kutsutaan  järjestelmäkelloksi. Tietokoneen toiminnan kannalta on oleellista, että kaikki sen osat toimivat synkronoidusti.  Olisi katastrofaalista, jos ALU odottaessaan tietoa muistista suorittaisi laskutoimituksen ennenkuin oikea tieto olisi saapunut. Varhaisten tietokoneiden kierrosajat olivat millisekunttien luokkaa (sekunnin tuhannesosa). Nykyään ne ovat nanosekunttien luokkaa (sekunnin miljardisosa). Tulevaisuudessa pitäisi olla mahdollista suunnitella pikosekunttiluokan koneita (sekunnin triljoonasosa).  Sähköinen signaali etenee noin 30 cm nanosekunnissa, näin ollen alamme tulla fyysisille äärirajoille sen suhteen, mitä tietokoneen komponenttien edelleen pienentämisellä saavutetaan. Jatkossa onkin etsittävä muunlaisia teknisiä ratkaisuja, jotta saavutettaisiin tietokoneiden ensimmäisten neljän vuosikymmenen kehitysvauhti.

Toinen usein käytetty tietokoneen nopeutta osoittava mittari on sekunnissa suoritettujen käskyjen määrä. Tavallisia termejä ovat MIPS (million instructions per second) ja BIPS (billion instructions per second).

Käskyt ja käskyjakso

Jokaisessa käskyssä on yleisesti ottaen kaksi osaa: operaattori ja operandi. Operaattori ilmaisee toiminnon, jonka koneen tulee suorittaa, kuten laske yhteen, vähennä, jaa, vertaa tai kirjoita. Operandi on sen tiedon paikka tai osoite, jota käskyn tulisi käsitellä. Operaattori on "mitä tehdään" ja operandi on "kuka sen tekee."

CPUn toimintavaiheet sen käsitellessä käskyä muodostavat käskyjakson. Se muodostuu kahdesta osasta: käskyn hakemisesta ja käskyn suorittamisesta.

Käskyn hakemisvaiheessa seuraava käsiteltävä käsky haetaan keskusmuistista. Se muodostuu useammista vaiheista, jotka voivat vaihdella koneesta toiseen, mutta jotka yleensä noudattavat seuraavia perusoperaatioita.:

  1. Ohjelmalaskuri-nimisessä rekisterissä oleva osoite lähetetään osoiterekisteriin. Ohjelmalaskuri sisältää seuraavan suoritettavan käskyn osoitteen.
  2. Ohjelmalaskurin arvo kasvaa yhdellä niin, että seuraavan käskyjakson aikana seuraava käsky haetaan.
  3. Osoiterekisterissä oleva osoite lähetetään keskusmuistiin.
  4. Määritellyn paikan sisältö (seuraava käsky) lähetetään takaisin ohjainyksikköön.
  5. Tämä käsky sijoitetaan kahteen rekisteriin: yksi operaattorille ja yksi operandille.

CPU on nyt valmis aloittamaan suoritusvaiheen. Se myös muodostuu useasta osasta:

  1. Operaattori tulkataan ja asianmukaiset piirit ALUssa aktivoituvat.
  2. Operandi lähetetään osoiterekisteriin ja määritetty tieto-osoite lähetetään muistiin.
  3. Tieto lähetetään takaisin CPUhun ja sijoitetaan ALUun.
  4. Operaatio suoritetaan ja tulos sijoitetaan akkuun.

Tietokone on nyt valmis aloittamaan seuraavan käskyjakson. Huomaa, että ohjelmalaskurin arvo muuttui yhdellä niin, että seuraava suoritettava käsky on seuraavassa muistipaikassa. Hyppykäskyn avulla ohjelman suoritusjärjestystä voidaan muuttaa muuksi käskyjen tallennusjärjestyksestä. Haarautumiskäskyjen avulla ohjelma voi tehdä päätöksiä käskyjen suoritusjärjestyksestään käyttäen hyväksi ALUn kykyä suorittaa loogisia päätelmiä.

Merkkikoodit

On kehitetty erilaisia tapoja tiedon tallentamiseksi tietokoneelle ja siirtämiseksi kätevästi eri järjestelmien välillä. On tarvetta tallentaa sekä numeerista että aakkosellista tietoa. On myös tarvetta tallentaa erikoismerkkejä ja ohjausmerkkejä. Monilla näppäimistöillä painettaessa control-näppäintä samanaikaisesti toisen näppäimen kanssa saadaan toinen merkki kuin mikä on kyseisen näppäimen päällä. Allaolevat kolme koodia pystyvät tallentamaan kaikentyyppisiä merkkejä. Puhumme tässä yhteydessä aakkosnumeerisesta tiedosta.

BCD (Binary Coded Decimal) – Binäärikoodattu desimaaliluku

Ensimmäistä laajasti hyväksyttyä koodausjärjestelmää kutsutaan BCD-koodiksi. Se oli vallitseva koodi toisen sukupolven tietokoneissa. Merkkien esittämiseen käytetään kuutta bittiä.

Neljää oikeanpuoleista kutsutaan numeerisiksi biteiksi, kahta vasemmapuoleista vyöhykebiteiksi. Vyöhykebittejä merkitään A ja B. Myöhemmin lukujärjestelmien yhteydessä näemme, kuinka numeeriset biti saavat desimaaliarvot. Varmistusbitti eli pariteetti selitetään pariteettivarmistusta käsittelevässä osassa. Kun vyöhykebiti ovat 00, numeeriset biti tulkitaan numeroiksi, ts. 0 ... 9. Lukujärjestelmiä käsitellessämme havaitsemme, että koodissa käytetään suoraan hyväksi binäärilukujärjestelmää. Kun vyöhykebitit ovat 01, 10 tai 11 tulkitaan ne kirjaimiksi tai erikoismerkeiksi.

Kuusibittisyys rajoitti mahdollisten merkkien lukumäärän kuutenkymmeneenneljään. Tietokoneiden tulessa tehokkaammiksi tarvittiin lisää merkkejä, mm. pienaakkoset ja erikoissymboleja. Tämä johti kahteen uuteen koodiin, EBCDIC ja ASCII.

EBCDIC

EBCDIC (Extended binary coded decimal interchange code) käyttää kahdeksaa bittiä merkkien koodaukseen, jolloin voidaan esittää 256 merkkiä. Lisämerkkikapasiteettia käytetään pienaakkosiin, tulostumattomiin merkkeihin, joilla  annetaan ohjaustietoja sekä tulostuviin erikoismerkkeihin. Tulevaisuutta varten on vielä käyttämättömiä koodeja. Se käyttää myös neljää numeerista bittiä, mutta siinä on kaksi vyöhykebittiä enemmän. Jotta se olisi pysynyt yhteensopivana vanhan BCD-koodin kanssa, merkitsivät numeeriset bitit edelleen numeroita ja kirjaimia. Monet sen ominaisuudet ovat kiintoisia tiedon prosessoinnin kannalta. Huomaa, että ainoa ero suurten ja pienten aakkosten välillä on toinen vyöhykebitti, niinpä muunnos niiden välillä tapahtuu yksinkertaisesti pyöräyttämällä yksi bitti. Huomaa myös, että vyöhykkebittejä voidaan käyttää erikoismerkkien, kirjaimien tai numeroiden testaukseen. Tämä ominaisuus on tärkeä kun testataan syöttötiedon kelpoisuutta. On suhteellisen helppo varmistua syöttikö käyttäjä prosentiksi 0.05 vai 5 riippuen siitä mitä tietokone odottaa.

Tärkeä ominaisuus on myös se, että jos käytetyt kahdeksan bittiä tulkitaan binäärinumeroiksi, kirjaimet asettuvat järjestykseen, jossa pienin arvo A:lla ja suurin Z:lla. Tämä ominaisuus on kriittinen kun tietoa lajitellaan aakkosjärjestyksessä. Tietokone tulkitsee merkit numeroiksi, suorittaa lajittelun ja tulkitsee tuloksen uudelleen merkeiksi.

ASCII

ASCII (American standard code for information interchange) kehitettiin tietokone- ja tietoliikenneteollisuuden yhteistyönä yrityksenä yksinkertaistaa ja standardoida tiedonsiirtoa koneelta koneelle ja järjestelmästä järjestelmään. ASCII muodostuu kirjaimista, numeroista, erikoismerkeistä, ohjausmerkeistä ja graafisista merkeistä.

ASCII-koodilla on monia EBCDIC:n ominaisuuksia, mutta on myös lukuisia tärkeitä eroja. ASCII käyttää vain seitsemää bittiä. Myöhemmin havaitsemme, että kun lisäämme yhden bitin tiedon eheyden varmistamiseksi, mahtuvat kaikki  ASCII-merkit mukavasti yhteen tavuun. Tiedonsiirron kannalta tällä on useita etuja. Toinen tärkeä ero on merkkien järjestys. Huomaa, ettei koodien numeerisissa arvoissa ole aukkoja; kaikki arvot välillä 0000000 (0) -  1111111 (127)  ovat käytössä. Tämän ansiosta on helppo tarkistaa tiedon kelpoisuus.

ASCII-koodista on tullut de facto standardi mikro- ja minijärjestelmissä ja standardi tietoliikenteessä. EBCDIC-koodia käytetään edelleen suurissa tietokonejärjestelmissä. Suurten tietomäärien konvertointi olisi tavattoman kallista. Suurimmassa osassa pieniä ja suuria järjestelmiä on tulkkausapuohjelmat, jotka konvertoivat järjestelmästä toiseen.

Lukujärjestelmät

Aiemmin tässä osassa tarkastelimme kuinka bittiketjuja voidaan tulkita osoitteiksi ja käskyiksi; sen jälkeen tarkastelimme kuinka bittiketjut voidaan tulkita merkeiksi. Tässä osassa vielä täydennämme kuvaa ja katsomme kuinka numeerista tietoa voidaan tallentaa. Edetessämme käy selväksi, että lukuja vastaavat merkit ovat aivan toinen asia kuin niiden numeerinen arvo. Vaikkei binäärijärjestelmän aritmetiikka ole sen monimutkaisempaa kuin desimaalijärjestelmässäkään, jätämme tilanpuutteen vuoksi binääriaritmetiikan käsittelyn toiseen yhteyteen.

Kreivitär Lovelace esitti ensimmäisenä binäärijärjestelmää käytettäväksi tietokoneessa olevan tiedon esittämiseen.  Tämä idea hukkui melkein sadaksi vuodeksi ennen kuin se tuli uudelleen esille varhaisten tietokoneiden yhteydessä. Ymmärtääksemme tietojenkäsittelyn perusteena olevia lukujärjestelmiä, käymme ensin läpi eräitä peruskäsitteitä tutumman kymmenlukujärjestelmän avulla.

Kymmenlukujärjestelmä

Parhaiten tuntemamme lukujärjestelmä kymmenlukujärjestelmä tai 10-kantajärjestelmä. Sitä kutsutaan 10-kantajärjestelmäksi, koska luvussa jokainen kohta on kymmenen kertaa suurempi kuin sen oikealla puolella oleva ja erilaisia numeroita on kymmenen 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Esimerkiksi luvussa 354 edustaa 4 neljää ykköstä, 5 edustaa viittä kymmentä ja 3 edustaa kolmea sataa. Huomaamme että kullakin numerolla on kaksi merkitystä: yksi on sen oma numeerinen arvo ja toinen sen paikka. Kun laskiessamme pääsemme yhdeksään, tiedämme, että seuraava luku alkaa ykkösellä, joka on sen vasemmalla puolella. Jos käsittelemme reaalilukuja, joissa on desimaalipilkku, pitää sama periaate paikkansa paitsi että nyt siirtyessämme desimaalipilkusta oikealle jaamme aina seuraavan paikan kymmenellä.

Selventääksemme tätä otamme seuraavan esimerkin. Luku 354.286 voidaan esittää

3 X 100 + 5 X 10 + 4 X 1 + 2 / 10 + 8 / 100 + 6 / 1 000

Eksponenttimerkintää käyttäen tämä voidaan esittää

3 X 102 + 5 X 101 + 4 X 100 + 2 X 10-1 + 8 X 10-2 + 6 X 10-3

Kuten tulemme havaitsemaan auttaa jälkimmäinen esitystapa meitä ymmärtämään muiden kantalukujen järjestelmiä.

Kaksikantajärjestelmä - binäärijärjestelmä

Kuten jo totesimme käyttävät nykyiset tietokoneet binäärilukujärjestelmää eivätkä kymmenlukujärjestelmää. Tässä järjestelmässä ainoat numerot ovat 0 ja 1. Näitä kahta numeroa kutsutaan usein biteiksi tai binäärinumeroiksi. Kymmenlukujärjestemän käsitteitä käyttäen voimme laskea myös binäärisjärjestelmässä: nolla = 0, yksi = 1. Kun pääsemme kahteen ja kun meillä on vain kaksi numeroa, siirrymme seuraavaan paikkaan ja saamme kaksi bittiä, 10. Tämä ei ole kymmenlukujärjestelmän luku kymmenen, vaan binäärijärjestelmän luku kaksi. Varsin usein selvyyden vuoksi merkitään alaindeksillä 102.

Asiaa selventääksemme tarkastelemme seuraavaa lukua binäärijärjestelmässä:

1011012

Samoinkuin kymmenlukujärjestelmässä siirtyminen vasemmalle seuraavaan paikkaan kasvattaa kunkin numeron arvoa kantaluvun kerrannaisella

1 X 25 + 0 X 24 + 1 X 23 + 1 X 22 + 0 X 21 + 1 X 20

Tämä voidaan myös kirjoittaa muotoon

1 X 32 + 0 X 16 + 1 X 8 + 1 X 4 + 0 X 2 + 1

Joten näemme, että 1011012 = 4510.

Binäärijärjestelmän tärkeä ominaisuus on sen yksinkertaisuus, koska meillä on vain kaksi numeroa, 0 ja 1, paikka joko tuottaa kahden potenssin tai ei mitään koska se kerrotaan joka ykkösellä tai nollalla. Tämä ominaisuus yksinkertaistaa aritmeettisia elektronisia piirejä ja tekee ne luotettavimmiksi.

Reaalilukujen esittämiseksi binäärijärjestelmässä otamme desimaalipilkun kaltaisen käsitteen, mutta kutsumme sitä binääripisteeksi. Luku 101.012 tulkitaan

1 X 22 + 0 X 21 + 1 X 20 + 0 X 2-1 + 1 X 2-2

eli

4 + 0 + 1 + 0 + 1 /4 = 5.2510

Tietokonejärjestelmät voivat käyttää erilaisia tapoja negatiivisten lukujen tai reaalilukujen tallennukseen mutta periaatteet ovat samanlaiset.

2-kantajärjestelmän johdannaiset: oktaali (8-kanta) ja heksadesimaali (16-kanta)

Nämä kaksi muuta järjestelmää ovat tärkeitä johtuen niiden suhteesta 2-kantaan. Ne ovat 8-kanta- eli oktaali- ja 16-kanta- eli heksadesimaalijärjestelmät. Heksadesimaalissa tarvitsemme 16 numeroa joten käytämme kymmentä tavallista numeroa sekä aakkosten kuutta ensimmäistä kirjainta (ts. 10 =A, 11 = B jne). Niiden merkitys perustuu siihen ominaisuuteen, että voivat toimia binäärilukujen kätevinä lyhenteinä.  Kukin oktaalinumero voi edustaa kolmea binäärinumeroa ja kukin heksadesimaalinumero voi edustaa neljää binäärinumeroa.

Aiemmat tietokoneet, jotka käyttivät kuusibittistä BCD-koodia kykenivät lyhentämään jokaisen merkin käyttäen kahta oktaalinumeroa. Nykyisissä tavuperustaisissa koneissa kukin kahdeksanbittinen tavu voidaan lyhentää käyttäen kahta heksadesimaalinumeroa. Tämä on varsin kätevää, koska merkkitieto ja käskyt ovat kaikki tavupohjaisia. Kahdeksan bitin asemesta tulemme toimeen kahdella heksadesimaalinumerolla. Kun näin tehdään puhutaan muistivedoksesta.

Muunnokset

Esittelemissämme neljässä lukujärjestelmässä on suuri joukko erilaisia muunnoksia. Rajoitumme tässä kuitenkin kokonaislukuihin ja tärkeimpiin järjestelmiin: binääristä kymmenlukujärjestelmään, binääristä heksadesimaaliin ja heksadesimaalista binääriin.

Toisinaan on järjestelmäonglemien yhteydessä syytä tutkia muistin sisältö. Käyttöjärjestelmässä on yleensä apuohjelma, joka vedostaa muistin sisällön tulostimelle. Tätä kutsutaan muistivedokseksi. Tuloste tulee yleensä heksadesimaalina tilan säästämiseksi. Tämän tulosteen tulkitsemiseksi täytyy usein muuntaa heksadesimaalista binääriksi tai kymmenlukujärjestelmään tai suorittaa päinvastainen operaatio.

Kun muunnamme binäärijärjestelmästä kymmenlukujärjestelmään on syytä muistaa, että kukin paikka edustaa kahden tietty potenssia. Katsotaanpa seuraavaa 2-kantajärjestelmän lukua: 10011011. Tämä voidaan esittää seuraavasti

1 X 27 + 0 X 26 + 0 X 25 + 1 X 24 + 1 X 23 + 0 X 22 + 1 X 21 + 1 X 20

Kahden potensseja käyttämällä saamme

128 + 16 + 8 + 2 + 1 = 155

Muunnos binääristä heksadesimaaliin on varsin yksinkertainen. Ensin tarkistetaan onko bittien lukumäärä jaollinen neljällä. Ellei, lisätään tarvittava määrä nollia eteen. Nollat eivät muuta arvoa. Esimerkiksi luvusta 0101011111  tulee 00101011111. Nyt binääriluku jaetaan neljän bitin ryhmiin 0001 0101 1111.

0001(116) 0101(516) 1111(F16)

Muunnos heksadesimaalista binääriin on yhtä yksinkertainen. Tarkastelemme heksadesimaalilukua E19C. Tietojamme käyttäen saamme tästä

(E16)1110 (116)0001 (916)1001 (C16)1100 eli

1110000110011100.

Muunnokset eivät ole vaikeita, mutta kuten asia on useimpien matemaattisten operaatioiden kohdalla, tarvitaan harjoitusta, että ne voi tehdä nopeasti. Useimpien tietotekniikan ammattilaisten ei useinkaan tarvitse käyttää näitä tekniikoita. Taas niitä harvoja tapauksia varten, jolloin se on välttämätöntä, kannattaa tekniikat tuntea.

Pariteettivarmistus

Tiedon eheyden varmistamiseen käytetään useita erilaisia tekniikoita. Eräs tiedonsiirrossa käytetty tekniikka on nimeltään pariteettivarmistus.

Pariteetti, tai varmistusbitti, lisätään kuhunkin siirrettävään tietoalkioon. Tämä bitti valitaan siten, että aina siirretään joko parillinen määrä 1-bittejä (parillinen pariteetti) tai pariton määrä 1-bittejä (pariton pariteetti). Siirron jälkeen 1-bittien määrä tarkistetaan. Jos pariteetti on muuttunut, järjestelmä tietää, että ainakin yksi bitti on muuttunut ja voi antaa virheilmoituksen tai suorittaa korjaavan toimenpiteen. Yleensä pyyntö uudelleensiirrosta lähtee automaattisesti ja vasta useiden virheiden jälkeen tulee virheilmoitus.

Nähdäksemme kuinka pariteettibitti muodostetaan tarkastelemme c-kirjaimen seitsenbittistä  ASCII esitystä, 1000011. Siinä on kolme ykköstä, 1000011. Pariton pariteetti edellyttää paritonta määrää ykkösiä, joten periteettibitti on nolla antaen kahdeksanbittisen 10000110. Toisaalta parillinen pariteetti edellyttää parillista määrää ykkösiä, joten pariteettibitti on ykkönen: 10000111.