Tietokoneen toiminta, 2 ov, kurssikuulustelu 11.5.2004

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus), kurssin nimi, nimikirjoitus ja sivunumero.

Kokeesta voi saada 46 pistettä. (Laskuharjoituksista oli saatavilla 12 ja ennakkoon palautetuista tehtävistä 5 pistettä.)

Pyri vastaamaan kaikkiin kysymyksiin lyhyesti, mutta kokonaisilla lauseilla.

  1. [12p] Konekäskyjen suoritus ja koneen rakenne.
    1. [4 p] Mitä vaiheita konekäskyn suorittamisessa on?
    2. [1 p] Miten suoritin tietää, mikä konekäsky on kulloinkin suoritusvuorossa?
    3. [3 p] Määrittele käsite keskeytys (exception, interrupt). Minkä tyyppisiä keskeytyksiä on olemassa? Miten suoritin käsittelee keskeytykset?
    4. [4 p] Mitä kaikkea järjestelmässä tapahtuu siitä hetkestä alkaen kun suorituksessa oleva ohjelma P haluaa tallettaa dataa levylle, siihen hetkeen asti kun P jatkaa suoritustaan I/O:n jälkeen? Kerro mitä I/O-mallia kuvauksessasi käytit.

     
  2. [12p] Tiedon sijainti
    Kuvaa kaikki ne tiedon sijaintipaikat, joista konekäsky voi ladata tarvitsemansa tiedon. Anna jokaisesta sijaintipaikasta ttk-91 symbolista konekieltä käyttäen konekäsky, joka viittaa juuri siinä sijaintipaikassa olevaan tietoon. Kerro erityisesti, missä käskyn suorituksen vaiheessa kyseinen viittaus tapahtuu ja miten viitattu tieto löytyy järjestelmästä konekäskyssä olevien tietojen perusteella. Millaisia nopeuseroja tiedon haussa eri paikoista on (karkealla tasolla).

    (HUOM: välimuistia ei oteta huomioon tässä tapauksessa, vaikka data usein sijaitseekin siellä. )
     

  3. [10 p] Hamming-koodi.
    Oletetaan, että muistiin halutaan tallentaa 4-bittinen data (0xB eli 1011), joka suojataan Hamming-koodin avulla. Oletetaan, että bitit numeroidaan oikealta vasemmalle (kuten luennoilla ja harjoituksissa). Käytössä on parillinen pariteetti.
    1. [2 p] Montako pariteettibittiä tarvitaan suojaamaan näitä neljää databittiä?
    2. [4 p] Anna Hamming-koodilla suojattu kyseisen datan esitysmuoto (pariteettibitteineen).
    3. [2 p] Oletetaan nyt, että Hamming-koodatun datan kolmas bitti oikealta on muuttunut. Havaitaanko virhe Hamming-koodin avulla? Voidaanko se korjata? Miten tai miksi ei? Näytä yksityiskohtaisesti.
    4. [2 p] Oletetaan nyt, että Hamming-koodatussa datassa toinen ja kolmas bitti oikealta ovat molemmat muuttuneet. Havaitaanko virhe Hamming-koodin avulla? Voidaanko se korjata? Miten tai miksi ei? Näytä yksityiskohtaisesti.

     
  4. [12p] Aliohjelmien/funktioiden toteutus.
    1. [2 p] Miten aliohjelmat toteutetaan konekielitasolla? Mitkä asiat ovat tärkeitä aliohjelmien toteutuksessa?
    2. [2 p] Miten arvo- ja viiteparametrien välittäminen ja käyttö eroavat toisistaan konekielitasolla?
    3. [4 p] Funktio Apua(A, B, C) palauttaa arvonaan lausekkeen A*B+C arvon. Parametrit ovat kaikki arvoparametreja. Toteuta ttk-91 symbolisella konekielellä ohjelma, joka (i) lukee kolme kokonaislukua, (ii) funktiota Apua käyttäen laskee salaisen Apua-arvon ja (iii) lopulta tulostaa sen.
    4. [4 p] Toteuta ttk-91 symbolisella konekielellä edellisessä kohdassa mainittu funktio Apua(A, B, C).

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