581305-6 Tietokoneen toiminta, 2 ov, loppukoe 27.3.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] Tiedon esitys.
    1. Anna erikseen Big Endian ja Little Endian 16-bittisten desimaalilukujen +23 ja -75 esitys koneessa, kun kokonaislukujen esitysmuoto on
      1. etumerkkibitti erikseen
      2. kahden komplementti
      3. yhden komplementti
      4. lisättynä 32767:lla (32767=215-1)
    2. Oletetaan, että käytössä on yleisin Big Endian tavujärjestys. Mitä liukulukua 32-bittinen IEEE standardin (8 bitin exponentti) mukainen arvo 0x41300000 esittää?
      (Etuliite "0x" tarkoittaa, että perässä tuleva luku on heksadesimaalimuotoinen)
    3. Tkk-91 koneessa ei ole liukulukuja käyttäviä konekäskyjä. Voiko ttk-91:n avulla suorittaa liukulukulaskentaa? Jos voi, niin miten? Jos ei voi, niin miksi ei?
    4. Ttk-91 koneen kokonaislukukäskyt on tarkoitettu kokonaislukuarvoilla laskemista varten. Mitä tapahtuu, jos niiden avulla yritetään laskea yhteen konekäsky ja kokonaisluku, esimerkiksi seuraavien konekäskyjen avulla:
                LOOP    LOAD   R1, LOOP
                        ADD    R1, =1
                        STORE  R1, LOOP
      
      Jos tämä johtaa virhetilanteeseen, niin kerro minkälaiseen. Jos tämä ei johda virhetilanteeseen, niin kerro mitä tapahtuu.

  2. [15 p] Virtuaalimuisti
    1. Miksi virtuaalimuistijärjestelmiä on olemassa? Minkä ongelman virtuaalimuisti ratkaisee? Miten sivuttava virtuaalimuisti pääpiirteissään toimii?
    2. Mitä tarkoittaa käsite "sivunpuutos" ja mitä järjestelmässä tapahtuu sivunpuutoksen yhteydessä?
    3. Mikä on TLB ja mihin sitä tarvitaan? Mitä tarkoittaa käsite "TLB huti" ja mitä järjestelmässä tapahtuu TLB hudin yhteydessä?
    4. Anna konekäskytason esimerkki tilanteesta, jossa tapahtuu TLB huti, mutta ei sivunpuutosta. Kerro täsmällisesti, missä kohtaa käskyn suoritusta TLB huti tapahtuu, ja perustelut sille, miksi sivunpuutosta ei tapahdu.
    5. Anna konekäskytason esimerkki tilanteesta, jossa tapahtuu sivunpuutos, mutta ei TLB hutia. Kerro täsmällisesti, missä kohtaa käskyn suoritusta sivunpuutos tapahtuu, ja perustelut sille, miksi TLB hutia ei tapahdu.

  3. [15 p] Ohjelmien suoritus
    1. Miten suoritin suorittaa konekielisiä ohjelmia?
    2. Minkä tyyppiset tapahtumat aiheuttavat poikkeuksia käskyjen normaaliin suoritusjärjestykseen?
    3. Miten nämä poikkeustilanteet käsitellään?
    4. Miten poikkeustilanteiden käsittely suhtautuu aliohjelmakutsuun ja aliohjelmasta paluuseen? Erot/samankaltaisuudet?

  4. [15 p] Ttk-91 koneen konekieli
    Meillä on 2-ulotteinen pääohjelmatasolla määritelty kokonaislukuarvoinen taulukko T[4,6]. Taulukossa on siis 4 riviä (rivit 0,...,3) ja 6 saraketta (sarakkeet 0,...,5). Kokonaislukumuuttujat i ja j on määritelty pääohjelmatasolla.
    1. Anna konekäskyt, joilla tulostetaan alkion T[i,j] arvo.
    2. Anna konekäskyt, joilla tulostetaan rivin i alkioiden summa
    3. Tee kokonaislukuarvoinen funktio RowSum(Tbl, iRow), joka palauttaa arvonaan taulukon Tbl rivin iRow alkioiden summan. Taulukko Tbl on samaa tyyppiä kuin taulukko T ja se välitetään viiteparametrina. Parametri iRow välitetään arvoparametrina.


    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