Mikä on tietokone?
Mitä tietokone tekee?
Se käsittelee tietoa.
Siksi tietokoneessa pitää olla tiedonkäsittely-yksikkö.
Se sijaitsee mikroprosessorissa, CPU, Central Prosessing Unit.
Mistä käsiteltävä tieto tulee?
Se tulee tietoja sisältävästä muistista, datamuistista.
Mistä se sinne on tullut?
Näppäimistöltä, ohjelmasta, ulkoisesta muistista (USB-muisti, CD, kiintolevy), antureilta, oheislaitteilta, internetistä...
Miten tietoa tulee käsitellä?
Jossain on oltava ohjeet tiedonkäsittelyyn.
Ohjeet, käskyt, ovat ohjelmassa, jonka ohjelmoija on kirjoittanut.
Ohjelma määrää miten tietoa käsitellään oli se sitten tekstiä, kuvaa, ääntä tai muuta.
Siksi tietokoneessa pitää olla käskyn käsittely-yksikkö.
Se sijaitsee mikroprosessorissa, CPU, Central Prosessing Unit.
Missä ohjelman käskyt sijaitsevat?
Niitä varten tietokoneessa on oltava käskyjä eli ohjelmaa varten haihtumaton muisti
(käskyt eivät saa hävitä vaikka sähköt katkeavat).
Se on esim kiintolevy (tallennus magneettisessa muodossa) tai SD-flash-muisti tai SDD-flash-muisti.
Jotta CPU voi hakea käskyt nopeasti, ne on tuotava ensin nopeaan RAM-muistiin.
Samoin on datan kanssa.
Siksi CPU:ssa tulee olla osoitteiden käsittely-yksikkö.
CPU osoittaa osoiteväylän (nippu rinnakkaisia johtoja) avulla ohjelmamuistia kun sieltä haetaan
ko. osoitteesta käsky CPU:n käskynkäsittely-yksikköön.
Osoitetta tarvitaan myös, kun haetaan työstettävä tieto datamuistista tai ulkoisesta laitteesta
(kiintolevyltä, tai antureilta, tai näppäimistöltä, tai netistä...), tai
kun käsitelty tieto tallennetaan jonnekin tai viedään ohjaamaan ulkoista laitetta.
Tietokoneen periaatekuva. (JMansikkaviita)
Tietokone ei tiedä yhtään mitään.
Se osaa vain laskea.
Ja kun se ei tunne muita numeroita kuin 1 ja 0, ei sen laskentataitokaan kovin kaksinen ole.
Mitä CPU sisältää?
Mikroprosessori on tietokoneen keskusyksikkö, joka suorittaa sille ohjelmakoodina annettua tehtävää.
CPU koostuu kolmesta toimintalohkosta.
* Datan käsittely-yksikkö
* Käskyn käsittely-yksikkö
* Osoitteen käsittely-yksikkö
1. Datan eli tiedon käsittely-yksikkö jossa tiedon työstäminen tapahtuu.
Tiedon käsittely hoituu ACCU-rekisterin ja ALUn, Aritmeettis-Looginen yksikkö, yhteistyönä.
Tiedon käsittely voi olla:
- tietobittien siirtoa jostain rekisteristä toiseen tai varsinaiseen muistiin, tai päinvastoin,
- jonkin rekisterin alustus (arvon asettaminen)
(rekisterissä tallennetaan on 8/16/32/64 rinnakkaista bittiä)
- parhaimmillaan se on varsinaista tiedon manipulointia,
kuten yhteenlaskua, vähennyslaskua, inkrementointia, dekrementointia, vertailua, AND-operaation tekoa, jne.
2. Käskyn käsittely-yksikkö
Tiedonkäsittelyn ohjeet ovat ohjelmassa, jonka ohjelmoija on kirjoittanut.
Siis prosessorissa on oltava osa joka hakee, tunnistaa ja toimii noiden ohjeiden mukaan.
Ohjeiden tulee olla yksinkertaisia, joten niitä tarvitaan paljon.
Ohjeet ovat pieniä, peräkkäisiä käskyjä esitettynä bittikuvioina,
joita tietokone käsittelee hirmuisella nopeudella.
Ohjelman eli koodin tulkinta ja toteutus tapahtuu käskyn käsittely-yksikkössä, Instruction Decoder.
Sen kaverina toimii ohjaus- ja valvontaosa, Control Unit,
joka tahdittaa CPU:n sisäisiä toimintoja ja
valitsee liitäntäpiirit ja ohjaa niiden kautta kytkettyjen toimilaitteiden työskentelyä.
3. Osoitteen käsittely-yksikkö
CPU osoittaa osoiteväylän (nippu rinnakkaisia johtoja) avulla ohjelmamuistia
kun sieltä haetaan ko. osoitteesta käsky käskyrekisteriin.
Osoitetta tarvitaan myös, kun haetaan käsiteltävä tieto muistista tai ulkoisesta piiristä,
tai kun käsitelty tieto tallennetaan tai viedään ohjaamaan ulkoista laitetta.
Tämän hoitaa Ohjelmalaskuri, Program Counter.
Ohjelmalaskuri pitää kirjaa ohjelmasta ja osoittaa seuraavaksi noudettavan käskyn osoitteeseen,
tai manipuloitavan tietoaihion, tavun, osoitteeseen.
Ohjelmalaskuri nollautuu, resetoituu, tietokoneen käynnistyessä,
joten osoitteessa 0x0000 tulee olla (tietokoneen käynnistys-) ohjelman ensimmäinen käsky.
Toinen tärkeä osoiterekisteri on pinomuistin osoitusrekisteri, Stack Pointer.
Pinomuisti on data-muistista varattu muistialue,
johon keskeytyksen tullessa pääohjelman paluuosoite ja muuttujat tallennetaan.
Kun keskeytysohjelma on suoritettu, pääohjelman paluuosoite palautetaan pinosta
CPU:n ohjelmalaskurin arvoksi ja pääohjelma jatkuu siitä mihin jäätiin.
Ja mikä parasta, kaikki prosessorit toimivat samalla periaatteella
pienimmästä AVR Tinysta suurimpaan PC:n Pentiumiin, ARMista puhumattakaan.
Idea on sama, vain tehokkuus vaihtelee.
RasPin mikro-ohjain on ARM
ARMin historia alkaa vuodesta 1980.
Se on eniten käytetty 32/64-bittinen prosessori, ARM löytyy mm. (melkein) kaikista kännyköistä.
Englantilainen ARM Holding suunnittelee prosessorit, mutta se ei itse niitä valmista,
vaan tekee tiliä myymällä lisenssejä.
Suuret puolijohdevalmistajat suunnittelevat ARM-ytimen oheen mieleisiään (asiakkaiden toivomia) oheispiirejä.
Silloin puhutaan SoC-piireistä.
SoC, System on Chip,
on IC-piiri joka sisältää CPU:n lisäksi kaikki mahdolliset sulautetuissa tarvittavat oheistoiminnot.
Raspberry Pi:issä on ARM.
Siellä se on osana SoC-piiriä, jonka valmistaja on Broadcom ja tyyppi on BCM2835.
Varsinainen ARM-ydin on ARM1176JZFS ja sen kaverina samalla chipillä on Broadcomin Videocore IV GPU.
GPU, Graphics Processing Unit, pystyy BluRay-laatuun videon toistossa.
Tutkitaan vielä muistien rakenne, jotta meillä on riittävästi ymmärrystä aloittaa ohjelmoinnnin opiskelu.
Puolijohdemuistit
Valmis tietokoneohjelma pitää tallentaa johonkin,
josta se on saatavissa käyttöön aina, kun sitä tarvitaan.
Myös käsiteltävä, tai käsitelty, tieto pitää tallentaa johonkin.
Koodin ja datan tallennukseen käytetään puolijohdemuisteja.
Puolijohdemuisti on elektroninen piiri, joka tallentaa numeroita sähköisessä muodossa.
Muistiin tallennetaan binäärilukuja, jotka ovat joko käskyjä tai tietoa (dataa).
Jokaisella muistipaikalla on oma osoite ja kussakin muistipaikassa on tallessa yksi binääriluku, tavu,
joka puolestaan koostuu kahdeksasta bitistä.
Bitit tallennetaan muistikennoihin.
Muistien toiminta ja käyttö eroaa tuon tallennustavan perusteella.
Datamuisti, Data Memory
Datamuisti on käyttömuistia jota pitää voida lukea ja kirjoittaa tavu kerrallaan.
Yksittäinen bitti talletetaan SRAM-muistikennoon (Static Random Access Memory),
se koostuu MOSFET-transistoreista rakennetuista kiikuista (flip-flop).
Kahdeksan kiikkua rinnakkain ja voimme tallettaa yhden tavun (tavu, byte, on 8 bittiä), jne.
Tieto häviää käyttösähkön katkettua.
SRAM on hyvin nopea.
RAM-muisti. (J Mansikkaviita)
Ohjelmamuisti Program Memory
Flash-muistipiirejä käytetään kaikkialla missä on tarvetta tallentaa käyttöjärjestelmä,
konfigurointi-tietoja, dataa, ohjelmia, kuvia, jne.
Flash-muistit ovat luotettavia ja säilövät paljon dataa pieneen tilaan.
Flash on haihtumatonta ROM-tyyppistä muistia (Read Only Memory), eli se säilyttää tietonsa sähkökatkoksen yli.
Niitä on kahta sorttia, NOR- ja halvempi NAND-flash.
Muistien nimet tulevat muistisolujen rakenteesta jotka muistuttavat vastaavannimisten logiikkaporttien rakennetta.
Ohjelmointi, bittien tallentaminen muistikennoon, tapahtuu ennen muistin käyttöönottoa.
Ohjelmamuisti. (JMansikkaviita)
RasPin SD-muistikortti
RasPin NAND SD-muistikortille (SD eli Secure Digital) tallennetaan käyttöjärjestelmä ja tallennettava data.
NAND-flashmuistin kommuniointi ulkoisen systeemin kanssa eli datan lukemisen ja kirjoittamisen
hoitaa kortilla oleva kontrolleri tavu kerrallaan.
Koodi on käynnistyksen yhteydessä kopioitava systeemin RAM:miin ja ajettava sieltä.
Sitä ei voida ajaa NAND-flashistä, koska CPU ei "näe suoraan" sen muistipaikkoja.
SD formaattiin kuuluu 4 korttiperhettä
- SDSC, original Standard Capacity, suosituin
- SDHC, High Capacity, max 32 GB
- SDXC, eXtended-Capacity
- SDIO, input-output
SD-muisteja on kolme eri kokoa.
- original, normaali
- mini
- micro, suoraan tai adapterin kautta
RasPi 2 ja 3 käyttävät micro-kokoa.
Muistikortti asetetaan erityiseen korttiliittimeen.
Ohjelmoitaessa micro-kokoa on käytettävä adapteria.
Paljonko bittejä mahtuu muistiin?
Kuvan SDHC-kortti sisältää 8 miljardia 8'000'000'000 muistipaikkaa.
Sen alla on vielä 1970-luvulla käytetty ferriittirengasmuisti johon mahtuu 8 tavua = 64 bittiä dataa.
Mikrotietokone on laite,
- joka suorittaa ohjelmamuistiin tallennettujen käskyjen (ohjelma) avulla mikroprosessorin (CPU)
ohjauksessa tiedonsiirtoa työmuistin (RAM) ja syöttö/tulostuslaitteiden (input/output) välillä
- ja ennenkaikkea tiedonkäsittelyä.
Mikroprosessori, suoritin, CPU on komponentti,
- jonka toiminta on ohjattavissa muistiin tallennetuilla käskyillä (ohjelma)
se voi käskyjen mukaan:
- siirrellä tietoa
- suorittaa aritmetiikka (+, -, inkrementointi, dekrementointi...)
ja loogisia operaatioita (AND, OR...)
- tehdä päätöksiä (if-else)
Mikro-ohjain, mikrokontrolleri on komponentti, jossa samaan piiriin on integroitu
* mikroprosessori
* ohjelma- ja työmuistit
* ja Input/Output-piirit
Se on siis yhdelle piirille (=chip) integroitu tietokone.
Raspberry Pi, RasPi, korttitietokone
Pankkikortin kokoinen ohjelmoinnin opiskeluun tehty tietokone, RaspberryPi. hinta 35 $.
Käyttöjärjestelmä ja muut ohjelmat on asennettu SD-muistikortille.
RaspberryPi-3:ssa on 64-bittinen ARM-ohjain.
Ero tehokkuudessa on valtava:
AVR käsittelee dataa 8-bitin paketeissa yhdessä ytimessä,
ARM 64-bitin paketeissa neljässä ytimessä samanaikaisesti.