581305-6 Tietokoneen toiminta, 2 ov, loppukoe 26.1.2001     (Other side in English in English)

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimesi, henkilötunnus, kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Keskeytykset (interrupt, trap, exception, ...)
    1. Anna neljä eri tyyppistä keskeytystä? Kerro, miten tyypit eroavat toisistaan.
    2. Miten keskeytys näkyy suoritusvuorossa olevalle ohjelmalle?
    3. Miten keskeytys näkyy suorittimelle (processor)?
    4. Miten keskeytys käsitellään?
    5. Miksi keskeytysten käsittely voidaan estää? Anna esimerkki.
    6. Miten keskeytysten ollessa estettynä tapahtuva keskeytys käsitellään?

  2. [15 p] Tiedon esitysmuodot
    1. [5 p] Miten laitteisto tietää, sisältääkö jokin muistipaikka kokonaisluvun, liukuluvun vai konekäskyn? Mitä tapahtuu, jos kokonaislukujen yhteenlaskukäskyä suoritettaessa argumenttirekisterissä onkin liukuluku kokonaisluvun asemesta?
    2. [5 p] Oletetaan, että suorittimella ei ole toteutettu totuusarvojen (boolean) tiedonesitystä, eli siinä ei siis ole totuusarvoja käyttäviä konekäskyjä. Java-kielessä on kuitenkin totuusarvoinen tietotyyppi boolean, jonka arvoalue on {true, false}, ja erityisesti pätee, että Javan boolean ei ole Javan kokonaisluku ja että Javan kokonaisluvut eivät ole Javan boolean. Voidaanko em. suorittimella suorittaa Java-ohjelmia? Jos voidaan, niin miten? Jos ei voida, niin miksi ei?
    3. [5 p] Oletetaan, että Hamming koodia (parillinen pariteetti) käytetään turvaamaan kahdeksan data-bitin sisäistä väylää. Montako pariteetti-bittiä tarvitaan (8 tietobitin lisäksi) virheenkorjaavaa Hamming koodia varten? Anna esimerkki pariteettibittien sijainnista ja niiden arvoista, kun siirrettävänä on 8-bittinen tavu 0111 0101 ('u'). Mitä kaikkea laitteistossa tapahtuu, jos em. tavussa 4. bitti vasemmalta on muuttunut matkalla ja tavu tulee perille muodossa 0110 0101 ('e')?

  3. [15 p] Muistihierarkia
    1. Minkä ongelman välimuisti ratkaisee? Millä tavoin ratkaisu on toteutettu? Miten sovelluksen ohjelmoija voi parhaiten vaikuttaa ratkaisun toimivuuteen? Mitä tarkoitavat termit "osuma" ja "huti" tässä yhteydessä ja mikä on hudin hinta?
    2. Minkä ongelman virtuaalimuisti ratkaisee? Millä tavoin ratkaisu on toteutettu? Miten sovelluksen ohjelmoija voi parhaiten vaikuttaa ratkaisun toimivuuteen? Mitä tarkoitavat termit "osuma" ja "huti" tässä yhteydessä ja mikä on hudin hinta?
    3. Minkä ongelman osoitteenmuunnostaulukko (Translation Lookaside Buffer, TLB) ratkaisee? Millä tavoin ratkaisu on toteutettu? Miten sovelluksen ohjelmoija voi parhaiten vaikuttaa ratkaisun toimivuuteen? Mitä tarkoitavat termit "osuma" ja "huti" tässä yhteydessä ja mikä on hudin hinta?

  4. [15 p] Konekielinen ohjelmointi
    Tarvitsemme kokonaislukuarvoisen funktion int FindMin (var int Arr, int N). Funktiolla FindMin on siis kaksi parametria: kokonaislukuarvoinen taulukko Arr ja kyseisen taulukon alkioiden lukumäärä N. Funktio palauttaa arvonaan taulukon Arr pienimmän alkion arvon. Parametri N on arvoparametri ja parametri Arr on viiteparametri. Funktio toteutetetaan käyttäen suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

    1. [6 p] Toteuta ttk-91 symbolisella konekielellä edellämainittu funktio FindMin.
    2. [5 p] Anna ttk-91 symbolisella konekielellä käskyt, joilla em. funtiota FindMin apuna käyttäen tulostetaan 35-alkioisen taulukon Speed pienimmän alkion arvo.
    3. [4 p] Miten funktiota FindMin tulisi muuttaa, jos se palauttasikin pienimmän alkion arvon asemesta pienimmän alkion osoitteen?


    TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, IR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC