581305-6 Tietokoneen toiminta, 2 ov, koe 12.5.2000          (Other side in English in English)

  1. [12 p] Prosessi ja suoritin
    1. [8 p] Mikä on prosessi ja mikä on prosessin esitysmuoto järjestelmässä? Mitkä ovat prosessin suoritusaikaiset tilat? Miten ja milloin prosessin tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen.
    2. [4 p] Mitkä ovat suorittimen suoritusaikaiset tilat? Miten ja milloin suorittimen tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen.

  2. [12 p] Muistihierarkia
    1. [6 p] Mainitse 4 eri nopeuksista muistihierarkian tasoa (fyysistä laitetta tai laitteistoa), joissa konekäskyssä viitattava tieto voi sijaita. Mitkä ovat eri tasojen nopeudet (karkealla tasolla)? Anna jokaiselle tasolle esimerkki, jossa sille tasolle sijaitsevaan tietoon viitataan.
    2. [3 p] Mitkä ensimmäisen kohdan (a) tasoista liittyvät virtuaalimuistiin? Millä tavoin virtuaalimuisti on toteutettu näiden tasojen avulla?
    3. [3 p] Vertaile virtuaalimuistin osoitteenmuunnospuskuria (TLB) kohdan (a) muistihierarkian tasoihin. Mille tasolle TLB kuuluu ja miksi?

  3. [12 p] Tiedon esitysmuodot.
    1. [4 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. [4 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. [4 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')?

  4. [12 p] Toteuta ttk-91 symbolisella konekielellä funktio MaxInd(Arr, N), joka palauttaa arvonaan N-alkioisen taulukon Arr suurimman alkion indeksin. Esimerkiksi, jos taulukolla T[0..4] on arvot {7, 3, 24, 5, 9}, niin funktion kutsu MaxInd(T, 5) palauttaa arvonaan indeksin 2. Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

  5. [12 p] Oletetaan, että olemme havainneet ttk-91 koneen aliohjelmasta paluukäskyn (EXIT) menneen "rikki", eli sitä ei voi enää käyttää. (Esimerkiksi, käskyn toteuttavissa mikropiirien logiikassa on havaittu jokin vika, joka aiheuttaa silloin tällöin pahoja virheitä laitteistossa.)

    Haluamme kuitenkin käyttää aliohjelmia edelleen. Tarvitsemme ttk-91 koneen symbolisella konekielellä käskysarjan, joka toimii suoritusaikana samalla tavalla kuin symbolisen konekielen konekäsky "EXIT SP, =2".

    1. [4 p] Kuvaile sanallisesti, mitä kaikkea tuon käskysarjan tulee tehdä.
    2. [4 p] Helpompi toteutus: anna em. käskysarja ja käytä epäsuoraa tiedon osoitusta hypätessäsi aktivointitietuepinosta löytyvään paluuosoitteeseen.
    3. [4 p] Vähän (vain vähän) vaikeampi toteutus: anna em. käskysarja ja käytä itseään muuttavaa koodia muodostaaksesi hyppykäskyn aktivointitietuepinosta löytyvään paluuosoitteeseen.


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, LEGU, JGRE, LNLES, LNEQU, NGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC