581305-6 Tietokoneen toiminta, 4 op, erilliskoe 23.1.2009   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi. Kuhunkin tehtävään riittää noin yhden sivun vastaus.

  1. [9 p] Tiedon esitys
    1. Nimeä neljä erilaista kokonaislukujen esitysmuotoa ja anna kussakin lukujen +6 ja -6   32-bittiset esitysmuodot.
    2. Mikä on IEEE liukulukustandardi? Mikä on luvun +6.0 esitys 32-bittisessä IEEE liukulukustandardissa?
    3. Mitä tarkoittavat tiedon talletusmuodot "Little Endian" ja "Big Endian"? Anna konkreettinen 32-bittinen esimerkki lukua 0x56789ABC (hexadesimaali) käyttäen.
       
  2. [9 p] Ohjelman suoritus.
    1. Oletetaan, että ollaan suorittamassa käskyä muistiosoitteesta 3456. Miten suoritin tietää, missä muistiosoitteessa seuraavaksi suoritettava konekäsky sijaitsee? Millä eri tavoin tämä muistisoite voi määräytyä? Anna kustakin tavasta (ttk-91) konekielitason esimerkki.
    2. Mitä ovat keskeytykset ja miten ne on toteutettu suoritussyklissä? Mihin niitä tarvitaan?
    3. Mikä on etuoikeutettu (privileged) suoritustila ja miten se on toteutettu suoritussyklissä? Mihin sitä tarvitaan?

  3. [9 p] Prosessi.
    1. Mitä tarkoittaa käsite prosessin vaihto? Miten prosessin vaihto toteutetaan konekielitasolla?
    2. Anna esimerkki tilanteesta, jossa prosessi siirtyy suorituksessa (running) tilasta odotus (waiting) tilaan. Mikä prosessi ja tapahtuma aiheuttaa tämän siirtymän ja mitä järjestelmässä kyseisen tapahtuman seurauksena tapahtuu? Mitä tietoja siirretään ja minne? Mikä prosessi on suoritusvuorossa seuraavaksi?
    3. Anna esimerkki tilanteesta, jossa prosessi siirtyy odotus (waiting) tilasta valmiina suoritukseen (ready) tilaan. Mikä prosessi ja tapahtuma aiheuttaa tämän siirtymän ja mitä järjestelmässä kyseisen tapahtuman seurauksena tapahtuu? Mitä tietoja siirretään ja minne? Mikä prosessi on suoritusvuorossa seuraavaksi?

  4. [9 p] Funktio g( x, y, z) palauttaa arvonaan lausekkeen x+y+z+i arvon, missä i luetaan syötteenä. Parametrit x, y ja z ovat kokonaislukuarvoisia viiteparametreja. Kokonaislukuarvoinen muuttuja i on paikallinen muuttuja funktiossa g. Kokonaislukuarvoiset muuttujat res, a, b ja c on määritelty pääohjelmatasolla.
    1. Toteuta ttk-91 symbolisella konekielellä sijoituslauseke res = g (a, b, c), jossa muuttujan res arvoksi tulee (funktion g avulla) lausekkeen a+b+c+i arvo (missä i:n arvo luetaan syötteenä funktion g sisällä).
    2. Toteuta ttk-91 symbolisella konekielellä sijoituslauseke res = g (a, 20, b+2345678), jossa muuttujan res arvoksi tulee (funktion g avulla) lausekkeen a+20+(b+2345678)+i arvo (missä i:n arvo luetaan syötteenä funktion g sisällä).
    3. Toteuta ttk-91 symbolisella konekielellä funktio g(). Voit toteuttaa muuttujan i joko rekisteriä tai muistia käyttäen.

    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