Skip to end of metadata
Go to start of metadata

Arkkitehtuuri ja organisaatio

Tietokoneen arkkitehtuuri viittaa tietokoneen niihin toimintoihin jotka ovat ohjelmoijalle näkyviä. Organisaatio taas viittaa siihen miten nämä toiminnot on tietokoneen sisällä toteutettu. Esim. arkkitehtoninen kysymys on osaako tietokone laskea liukuluvuilla, organisatorinen kysymys on miten liukuluvut on tietokoneessa sisäisesti toteutettu.

Tietokoneiden sukupolvet

  1. Elektroniputkista rakennetut tietokoneet
  2. Transistoreista rakennetut tietokoneet (tietokoneet rakennettiin useista transistoreista)
  3. Mikropiireistä rakennetut tietokoneet (useita transistoreita samassa mikropiirissä, tietokoneet rakennettiin useista mikropiireistä)
  4. Integroidut prosessorit (kaikki prosessorin toiminnot yhdessä mikropiirissä)

Joidenkin mielestä sukupolvia on vielä neljännestä sukupolvesta eteenpäin, mutta näiden sukupolvien olemassaolosta tai määritelmistä ei ole yksimielisyyttä.

Valmistustekniikoiden kehittyessä mikropiirille mahtuvien transistorien määrä kaksinkertaistuu noin 1,5 vuoden välein. Tämä ilmiö on nimeltään Mooren laki, ja siitä johtuen tietokoneiden suorituskyky ja muistien koko kaksinkertaistuu suunnilleen 1,5 vuoden välein.

Tietotekniikan lukuyksiköitä

  • 2 10 = 1024 = 1 k (kilo)
  • 2 20 = 1024 k = 1 M (mega)
  • 2 30 = 1024 M = 1 G (giga)
  • 2 40 = 1024 G = 1 T (tera)
  • 2 50 = 1024 T = 1 E (eksa)
  • 2 60 = 1024 E = 1 P (peta)

Tietotekniikan yhteyksissä etuliite 'kilo' ei merkitse 1000, vaan se merkitsee 1024. Tämä siksi että tietotekniikassa on yleisesti käytössä binäärilukujärjestelmä, jossa tärkeät luvut ovat kahden potensseja. 1000 ei ole kahden potenssi, mutta 1024 on, ja koska se on lähellä 1000:a, käytetään siitä nimitystä 'kilo'. Samoin esim. etuliite 'mega' ei merkitse 1000 000, vaan se merkitsee 1024 kiloa, eli 1024*1024, mikä on 1048576. Samoin muiden yksiköiden kohdalla.

Tietokoneen rakenne

Tietokoneessa on yksinkertaisimmillaan suoritin (prosessori), muisti sekä liitäntäyksikkö (syöttö/tulostus -yksikkö, I/O). Suoritin, muisti sekä liitäntäyksikkö ovat yhteydessä toisiinsa väylän välityksellä.

Suorittimen sisällä on

  • ALU (aritmeettis-looginen yksikkö), joka vastaa logiikka- ja laskutoimituksista
  • Rekistereitä, eli sisäistä muistia, joihin talletetaan laskutoimitusten tuloksia
  • Ohjausyksikkö joka ohjaa koko tietokoneen toimintaa

Harvard-arkkitehtuuri

Harvard-arkkitehtuurin mukaisessa tietokoneessa on kaksi muistia. Toisessa muistissa säilytetään suoritettava ohjelma (ohjelmamuisti), toisessa käsiteltävät tiedot (datamuisti). Molemmat muistit liittyvät suorittimeen omalla erillisellä väylällään (käskyväylä, dataväylä). Tällöin muistin käyttö on tehokkaampaa koska molempia muisteja voidaan käyttää samanaikaisesti. Harvard-arkkitehtuuria käytetään signaaliprosessoreissa, joissa tiedonsiirron nopeus on tärkeää.

Von Neumann-arkkitehtuuri

Von Neumann-arkkitehtuurin mukaisessa tietokoneessa on yksi muisti jota käytetään sekä suoritettavan ohjelman että datan säilömiseen. Von Neumann-arkkitehtuurin vahvuus on toteutuksen yksinkertaisuus. Von Neumann-arkkitehtuuri on yleinen yleistietokoneissa.

CISC ja RISC

  • CISC - Complex Instruction Set Computer
    • Prosessori jonka käskykannassa on paljon erilaisia käskyjä
      • Käskyt voivat olla vaihtelevan pituisia
      • Monimutkaisia toimintoja voidaan suorittaa vain yhdellä käskyllä
  • RISC - Reduced Instruction Set Computer
    • Prosessori jonka käskykannassa on pieni kokoelma erilaisia yksinkertaisia käskyjä
      • Käskyt ovat yhden sanan pituisia
      • Prosessoria voidaan ajaa nopeammilla kellotaajuuksilla
      • Lyhyeen käskyyn ei mahdu muistiosoitteita - muistioperandeja ei voi käyttää
        • Operandeina käytetään prosessorin sisäisiä rekistereitä - rekistereitä täytyy olla paljon
        • Erikseen haku- ja talletuskäskyt joilla siirretään tietoa muistin ja rekistereiden välillä

Tietokoneen toiminta

Tietokoneen ymmärtämät käskyt muodostavat käskykannan (instruction set). Yhden käskyn suoritus on käskyjakso (instruction cycle).
Käskyjakson vaiheet:

  1. Haetaan käsky muistista
  2. Tulkitaan käsky
  3. Haetaan operandit muistista rekistereihin
  4. Suoritetaan laskutoimitus tai muu operaatio
  5. Talletetaan saatu tulos
  6. Selvitetään seuraavan käskyn sijainti

Käskylajit

  • Siirtokäskyt
    • Siirtävät tietoa muistin ja rekisterien välillä
  • Aritmeettiset käskyt
    • Suorittavat laskutoimituksia ja vertailuja
  • Loogiset käskyt
    • Tiedon käsittelyyn yksittäisten bittien tasolla
    • AND, OR, NOT, XOR, SET, RESET
      • Yksittäisten bittien muuttaminen bittimaskien avulla
        • AND nollaa bitit jotka ovat maskissa 0
        • OR asettaa bitit jotka ovat maskissa 1
        • XOR kääntää bitit jotka ovat maskissa 1
  • Sivuttaissiirrot, eli rotaatiot
    • Aritmeettinen
    • Looginen
    • C-lipun kautta
  • Hyppykäskyt
  • Aliohjelmakutsut
  • Syöttö- ja tulostuskäskyt
    • Käyttävät S/T-osoiteavaruutta
  • Ohjauskäskyt
    • Esim. keskeytysten salliminen

Osoitusmuodot

Tietokoneelle voidaan osoittaa käsiteltäväksi tietoa eri tavoilla.

  • Suora osoitus
    • Käsiteltävä tieto annetaan suoraan käskyn operandikentässä
  • Rekisteriosoitus
    • Käskyn operandikentässä annetaan rekisterin numero, josta käsiteltävä tieto löytyy
  • Absoluuttinen osoitus
    • Käskyn operandikentässä annetaan absoluuttinen muistiosoite, josta käsiteltävä tieto löytyy
  • Epäsuora rekisteriosoitus
    • Käskyn operandikentässä annetaan rekisterin numero, josta löytyy osoite käsiteltävään tietoon
  • Indeksiosoitus
    • Osoite säilytetään erillisessä indeksirekisterissä
    • Indeksirekisteriä voidaan lisätä aina tietyllä määrällä, jolloin saadaan periaatteessa laitteistotuki esim. C-kielen taulukoiden käsittelylle
  • Kantaosoitus
    • Osoite säilytetään erillisessä kantarekisterissä
  • Indeksi- ja kantaosoitus
    • Indeksi- ja kantaosoitusta voidaan käyttää yhtäaikaa
    • Kantarekisteri ilmoittaa mitä taulukkoa ollaan lukemassa
    • Indeksirekisteri ilmoittaa mitä kyseisen taulukon solua ollaan lukemassa
  • Suhteellinen osoitus
    • Osoite annetaan suhteessa ohjelmalaskurin nykyiseen osoitteeseen
    • Käytetään hyppykäskyissä

Liukuhihna eli pipe-line

Liukuhihna wikipediassa (en.)

Liukuhihnaperiaatteella prosessorin eri osat käsittelevät eri käskyjen eri vaiheita yhtäaikaisesti. Esim. liukuhuhna alkupää hakee uutta käskyä samalla kun loppuosa suorittaa edellistä käskyä.

  • Hasardit

Monitasomalli ja abstraktiotasot

Tietokoneiden ohjelmoinnissa käytetään virtuaalikoneen käsitettä. Virtuaalikone on näennäinen tietokone jolle voidaan laatia ohjelmia. Virtuaalikoneelle laadittu ohjelma käännetään varsinaisen tietokoneen ymmärtämään muotoon ennen suoritusta. Ohjelmien laatiminen virtuaalikoneelle on yleensä yksinkertaisempaa kuin ohjelmien laatiminen suoraan konekielellä tietokoneen ymmärtämään muotoon.

Tietokoneen laitteiston yhteydessä käytetään abstraktiotason käsitettä. Abstraktiotasojen avulla monimutkaisia kokonaisuuksia voidaan pelkistää yksinkertaisemmiksi ja helpommin hallittaviksi.

Ohjelmiston abstraktiotasot (virtuaalikone-tasot)

  • Korkean tason kieli (esim. C)
  • Assemblykieli
  • Käyttöjärjestelmä
  • Konekieli

Laitteiston abstraktiotasot

  • Tietokone
  • Tietokoneen osat (prosessori, muisti, emolevy, ym. - tietokone rakentuu näistä)
  • Toiminnalliset yksiköt (prosessorin eri yksiköt ym. - tietokoneen osat rakentuvat näistä)
  • Loogiset piirit (kertolasku, yhteenlasku, ym. - toiminnalliset yksiköt rakentuvat näistä)
  • Loogiset komponentit (AND, OR, NOT, D-kiikku, ym. - loogiset piirit rakentuvat näistä)
  • Elektroniset komponentit (transistorit, diodit, ym. - loogiset komponentit rakentuvat näistä)
  • Rakenteet puolijohdemateriaalilla (N- ja P-seostetut puolijohderakenteet ym. - elektroniset komponentit rakentuvat näistä)

Tiedon talletus ja käsittely

Tietokone voi kerrallaan käsitellä vain bittimäärältään rajattua kokonaisuutta. Tästä kokonaisuudesta käytetään nimitystä sana. Sananpituus on useimmiten 8, 16, 32 tai 64 bittiä.

Esitysmuodot

  • Kokonaisluvut
    • Etumerkitön (unsigned integer - ei negatiivinen)
    • Kahden komplementti (two's complement - myös negatiiviset luvut)
  • Liukuluvut (floating point number)
  • Yksittäiset bitit

Pino, Big-Endian ja Little-Endian

Pino-osoitin osoittaa pinon päällimmäiseen elementtiin. Pop-käsky palauttaa päällimmäisen elementin ja vähentää pino-osoitinta. Push-käsky lisää pino-osoitinta ja tallettaa elementin tähän osoitteeseen.
Little-Endian tarkoittaa että numerot kirjoitetaan muistiin vähiten merkitsevä numero ensin (vähiten merkitsevä "pieni pää", eli "little end", ensin).
Big-Endian tarkoittaa että numerot kirjoitetaan muistiin eniten merkitsevä numero ensin (eniten merkitsevä "suuri pää", eli "big end", ensin).
Wikipedia - eng. Wikipedia - suom.
Kun sanotaan että Little-Endian järjestyksessä kirjoitetaan vähiten merkitsevä numero 'ensin', tarkoitetaan että vähiten merkitsevä kirjoitetaan pienimpään muistiosoitteeseen. Kun kirjoitetaan pinoon, pitää huomioida että pino voi kasvaa muistissa alaspäin tai ylöspäin, jolloin alaspäin kasvavaan pinoon vähiten merkitsevä numero kirjoitetaankin itseasiassa viimeisenä, sillä alaspäin kasvavan pinon viimeisin muistiosoite on osoitteeltaan pienin.

Lippurekisteri

Yleisimmät tilaliput

  • C - carry - yhteen- tai vähennyslaskun muistinumerobitti
  • AC - aux. carry - BCD-koodattujen lukujen muistinumerobitti
  • Z - zero - jos operaation tulos on nolla
  • V - overflow - komplementtilukujen laskun ylivuoto
  • P - parity - jos tuloksessa pariton määrä ykkösiä
  • S - sign - jos tulos negatiivinen, eli miinus-etumerkkinen

Väylä ja tiedonsiirto tietokoneen eri osien välillä

Synkroninen ja asynkroninen tiedonsiirto väylällä prosessorin ja muistin välillä

  • Synkroninen - prosessori määrää tiedonsiirron kulun. Kaikki liikenne tapahtuu prosessorin tahdissa.
  • Asynkroninen - prosessori ja muisti sopivat tahdin kättelymenettelyillä.

Tietokoneen nollaus ja vahtikoira

Tietokoneen täytyy aloittaa toimintansa johdonmukaisesti samasta tilasta. Siksi tietokone aluksi nollataan.

Vahtikoira on ajastinpiiri joka nollaa tietokoneen, jos tietokone ei tietyn väliajan välein anna vahtikoiralle signaalia. Jos tietokoneen ohjelma jää ikuisesti jumiin, vahtikoira nollaa tietokoneen jolloin se pääsee aloittamaan toimintansa alusta.

Muisti

Muistista Wikipediassa (eng.)

  • Muistihierarkia
    • Nopea muisti on kallista ja kookasta
    • Halpa ja vähän tilaa vievä muisti on hidasta
    • Tehdään muistista monitasoinen -> vähän nopeaa muistia ja paljon hidasta muistia
      • Usein käytetty tieto nopeassa muistissa
      • Harvemmin käytetty hitaassa muistissa
  • Staattinen muisti
    • Tieto tallennetaan kiikkupiirin tilana - yksinkertainen rakenne
    • Jokainen muistisolu vaatii kokonaisen kiikkupiirin verran komponentteja - piipalalle mahtuu vähemmän kapasiteettia
    • Säilyttää tiedon niin kauan kun piiriin syötetään virtaa
  • Dynaaminen muisti
    • Tieto tallennetaan kondensaattorin varauksena
    • Kondensaattori vuotaa pikkuhiljaa tyhjiin - täytyy säännöllisesti virkistää
    • Virkistystoiminto monimutkaisempi toteuttaa
    • Muistisolu vaatii vähemmän komponentteja - piipalalle mahtuu enemmän kapasiteettia

Välimuisti

Usein käytetyt tiedot kopioidaan päämuistista nopeammin toimivaan välimuistiin, jolloin siirto-operaatiot nopeutuvat. Jos tieto ylikirjoitetaan sen ollessa välimuistissa, täytyy tieto ylikirjoittaa myös päämuistiin. Läpikirjoitus-toteutuksessa (write through) tieto kirjoitetaan yhtäaikaa välimuistiin ja päämuistiin. Takaisinkirjoitus-toteutuksessa (write-back) tieto kirjoitetaan päämuistiin vasta kun välimuistissa oleva tieto korvataan uudella. Takaisinkirjoitus vähentää muistiinkirjoituksia, mutta välimuistiin lukeminen hidastuu. Läpikirjoitus nopeuttaa välimuistiin lukemista, mutta saattaa aiheuttaa ylimääräisiä muistiinkirjoituksia, jotka hidastavat toimintaa.

Välimuistien toimintaperiaatteet:

  • Suoraan kuvattu
    • Päämuisti on jaettu välimuistin kokoisiin paloihin
    • Jokainen päämuistin sana voi sijaita vain yhdessä välimuistin osoitteessa
    • Jos kaksi samaan välimuistiosoitteeseen tulevaa sanaa luetaan, toinen ylikirjoitetaan
  • Joukko-assosiatiivinen
    • Päämuistin sanoilla on vaihtoehtoisia sijainteja välimuistissa
    • Jos kaksi samaan välimuistiosoitteeseen tulevaa sanaa luetaan, toinen menee vaihtoehtoiseen osoitteeseen
  • Täys-assosiatiivinen
    • Mikä tahansa päämuistin sana voi sijaita missä tahansa välimuistin osoitteessa
    • Toteutus monimutkainen - ei käytetä

Korvausalgoritmit:

  • FIFO (First-In-First-Out)
    • Ensimmäisenä tullut sana ylikirjoitetaan ensimmäisenä
    • Yksinkertainen toteutus
  • LRU (Least Recently Used)
    • Sana jonka viime käytöstä on kulunut kauimmin ylikirjoitetaan ensimmäisenä
    • Suorituskyvyltään tehokkain - yleisesti käytetty
  • Satunnaiskorvaus
    • Sanat sijoitetaan välimuistiin satunnaisesti
    • Helpoin toteuttaa, mutta huonoin suorituskyky

Virtuaalimuisti

http://en.wikipedia.org/wiki/Virtual_memory

Labels
  • None