581305-6 Tietokoneen toiminta, 5 op, koe 3.2.2015  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi.
Kuhunkin tehtävään riittää noin 1-2 sivun vastaus.
Tämä koe on erilliskoe ja sen koealueena on koko kurssi.
Koe toimii halutessasi myös uusintakuulusteluna kurssikuulustelulle 12.12.2014. Mainitse tästä koepaperissasi.
  1. [9 p] IEEE standardin mukaiset 32 bitin liukuluvut.
    1. [2 p] Miten liukuluvut eroavat reaaliluvuista? Anna konkreettinen esimerkki.
    2. [3 p] Mikä on IEEE standardin mukainen 32-bittinen liukulukujen esitystapa?
      Mitä tarkoittaa esitysmuodon normalisointi? Mitä hyötyä siitä on ja milloin sitä käytetään?
    3. [2 p] Mitkä ovat lukujen -1.0 ja +4.0 IEEE standardin (32 bittiä) mukaiset esitysmuodot?
    4. [2 p] 32-bittinen liukuluku voidaan tallettaa Little-Endian tai Big-Endian talletusmuodossa. Selitä, miten nämä eroavat toisistaan. Anna joku konkreettinen esimerkki (esimerkiksi luvulla -1.0).
     
  2. [9 p] Konekäskyjen suoritus.
    1. [3 p] Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu? Käytä esimerkkinä konekäskyn "add r1, salary(r2)" suoritusta.
    2. [3 p] Oletetaan, että käskyn suoritusaikana tapahtuu jokin virhetilanne. Kuinka tämä havaitaan? Kuinka käyttöjärjestelmä saa kontrollin ja käsittelee virhetilanteen? Mitä sitten tapahtuu? Käytä esimerkkinä konekäskyn "add r1, salary(r2)" suoritusta.
    3. [3 p] Mitä tarkoittaa käsite "suorittimen etuoikeutettu suoritustila" (privileged state, supervisor state, kernel state)? Mitä nämä etuoikeudet ovat? Kuinka etuoikeutettu suoritustila on toteutettu käskyjen suoritussyklissä? Kuinka tilaan päästää ja kuinka siitä palataan takaisin käyttäjätilaan (user state)?
       
  3. [9 p] I/O:n toteutus. Laiteajuri haluaa siirtää 2 KB dataa muistista kovalevylle.
    1. [3 p] Miten tiedonsiirto tapahtuu suoraa I/O:ta (direct I/O, Programmed I/O) käyttäen karkealla tasolla?
    2. [3 p] Miten tiedonsiirto tapahtuu epäsuoraa I/O:ta (indirect I/O, Interrupt-Driven I/O) käyttäen karkealla tasolla? Mitä etua tällä on edelliseen tapaukseen?
    3. [3 p] Miten tiedonsiirto tapahtuu DMA I/O:ta käyttäen karkealla tasolla? Mitä etua tällä on edellisiin tapauksiin?
     
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Funktio F(a, b, c, d) palauttaa arvonaan lausekkeen a-3b+4c-d arvon. Esimerkiksi lausekkeen x = F(1,1,1,1) suorituksen jälkeen muuttujan x arvo on 1. Parametrit a ja b ovat arvoparametreja. Parametrit c ja d ovat viiteparametreja. Muuttujat x ja y on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x, 3, x, y,).
       
    2. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x+123, x-y, x-y, 3).
       
    3. [3 p] Toteuta ttk-91 symbolisella konekielellä funktio F.

      Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.

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