in English Other side in English

Tietokoneen toiminta, kurssikuulustelu 1.3.2007   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [6 p] Kokonaisluku -13 on muistissa tavuosoittessa 200. Anna sen bittitason esitysmuoto, kun talletusmuotona on
    1. 32-bittinen (4 tavua) Big Endian etumerkin kera
    2. 32-bittinen (4 tavua) Big Endian 2-komplementti (normaali ttk-91 esitysmuoto)
    3. 8-bittinen (1 tavu) Big Endian vakiolisäyksellä 127
    4. 32-bittinen (4 tavua) Little Endian etumerkin kera
    5. Kirjoita algoritmi (ttk-91 symbolisella konekielellä tai jollakin korkean tason algoritmin kuvauskielellä), joka muuttaa rekisterissä R1 olevan 32-bittisen Big Endian 2-komplementin esitysmuodossa olevan kokonaisluvun 32-bittiseen Big Endian etumerkin sisältävään esitysmuotoon. Voit olettaa luvun arvon olevan välillä [-1000000, 1000000].
      Huom
      : tee tämä tehtävän osa vasta lopussa, jos sinulla on aikaa!
    Tee hyvin selväksi kunkin bitin ja tavun sisältö muistissa.
     
  2. [6 p] Konekäskyjen esitysmuoto ja suoritus. Seuraavaksi suoritettava konekäsky "MUL R0, T(R1)" on muistipaikassa 200, operaation MUL operaatiokoodi on desimaaliluku 19, taulukon T alkuosoite muistissa on 500, rekisterin R0 arvo on 33 ja rekisterin R1 arvo on 55.
    1. Millainen on ttk-91 koneen käskyrakenne ja mitä tietoja mihinkin kenttään talletetaan? Anna konekäskyn "MUL R0, T(R1)" esitysmuoto muistissa. Anna kenttien pituudet ja kunkin kentän sisältö desimaalilukuna.
    2. Mitä suorittimella tapahtuu konekäskyä "MUL R0, T(R1) " suoritettaessa suoritussyklin eri vaiheissa? Montako muistiviitettä tapahtuu, milloin ne tapahtuvat, mihin muistiosoitteeseen ne kohdistuvat ja ovatko ne luku- vai kirjoitusoperaatioita?

    3.  
  3. [6 p] Keskeytykset ja prosessit. Prosessi P on suorituksesssa ja seuraavaksi suoritettava konekäsky on "MUL R0, T(R1)".
    1. Mikä on keskeytys ja miten keskeytykset toteutetaan konekäskyjen suoritussyklin tasolla?
    2. Mikä keskeytys voi aiheuttaa prosessin P siirtämiseen "poistettu tai tapettu" (exit, killed) tilaan tämän konekäskyn suorituksen jälkeen? Kuka aiheutti tämän keskeytyksen ja mitä järjestelmässä seuraavaksi tapahtuu?
    3. Mikä keskeytys voi aiheuttaa prosessin P siirtämiseen "valmis suoritukseen" (ready, ready-to-run) tilaan tämän konekäskyn suorituksen jälkeen? Kuka aiheutti tämän keskeytyksen ja mitä järjestelmässä seuraavaksi tapahtuu?

    4.  
  4. [6 p] Titokone, TitoTrainer ja ttk-91. Toteuta ttk-91 symbolisella konekielellä
    1. Kokonaislukuarvoinen funktio ffunny(x,y,z), joka palauttaa lausekkeen x*y+z/x arvon paluuarvonaan. Kaikki parametrit (x, y ja z) ovat viiteparametreja.
    2. Lausekkeen 5+ffunny(a, 8, b+c) arvon laskeva ja tulostava koodi. Funktio ffunny() on määritelty edellä ja lausekkeen (a*8 + (b+c)/a) arvo tulee laskea tätä funktiota kutsumalla. Muuttujat a, b ja c on määritelty pääohjelmatasolla.

    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