Tietokoneen toiminta, 4 op (2 ov)             Kurssikuulustelu 2.3.2006 

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

Kurssin tulokset ja arvosteluperusteet tulevat näkyville verkkoon kurssin aikataulusivulle linkitettynä heti arvostelun valmistuttua.

  1. [6 p] Tiedon esitys.
    1. [4 p] Luvun +24 8-bittinen esitysmuoto on 0001 1000 eli 0x18.
      Anna Big Endian 8-bittisen desimaaliluvun -24 esitys tietokoneessa, kun kokonaislukujen esitysmuoto on
      1. etumerkkibitti erikseen
      2. kahden komplementti
      3. yhden komplementti
      4. lisättynä 127:lla (Huomaa, että 127=27-1)
    2. [2 p] Mikä on desimaaliluvun -24.0 IEEE:n 32-bitin liukulukustandardin mukainen esitys?
  2. [6 p] Konekäskyjen suoritus, keskeytykset.
    1. [4 p] Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet? Piirrä kuva suoritussyklistä.
    2. [2 p] Määrittele käsite "keskeytys" ja kerro kuinka keskeytykset toteutetaan suoritussyklin tasolla.
  3. [6 p] Prosessi (process).
    1. [3 p] Piirrä prosessin suoritusaikaisista tiloista (process state) 5-tilainen tilakaavio. Kerro tilojen nimet ja piirrä niiden väliset tilasiirtymät.
    2. [1 p] Määrittele käsite "aikaviipalekeskeytys (time slice interrupt)".
    3. [2 p] Mitä järjestelmässä tapahtuu, kun prosessi P on suorituksessa ja tulee aikaviipalekeskeytys. Mainitse erityisesti, prosessin tilasiirtymät ja mitä tilasiirtymissä tapahtuu.

  4. [7 p] Muistiinkuvattu I/O. Esimerkissä driver.k91 (ks. Kuva 1 kääntöpuolella) on kuvattu laiteajuri suoraa I/O toteutusta käyttäen. 
    1. Miten laiteajuri tietää, että laite on tulostanut annetun luvun?
    2. Mitä laiteajuri tekee sillä aikaa kun laite on tulostamassa lukua?  Kauanko tähän voi kulua aikaa?
    3. Miten laite (laiteohjain) kertoo laiteajurille, että laitteelle annettu tehtävä on suoritettu?
    4. Miten varsinainen (laiteajuria kutsunut) sovellusohjelma saa tietää, että laitteelle annettu tehtävä on suoritettu? 
    5. [3 p] Kuinka k.o. laiteajuria tulisi muuttaa, jos tulostus tehtäisiinkin DMA'ta käyttäen? Tarkoitus ei ole antaa tarkkaa vastausta koodattuna, vaan kertoa pääpiirteissään, mitä kaikkea esimerkin ajurissa tulisi muuttaa, jos haluttaisiin käyttää DMA'ta. 
      Mitä etu/haittaa tästä olisi? Tuleeko tästä mitään muutoksia tulostinlaitteiston (laiteohjaimen) vaatimuksiin?

  5. [7 p]  Ttk-91 koneen symbolinen konekieli. Kokonaislukuarvoiset muuttuja K ja kokonaislukuarvoisen taulukot T[10] ja U[10] on määritelty pääohjelmatasolla. Taulukoissa T ja U on siis 10 alkiota (indeksit 0,...,9).
    1. [1 p] Anna muuttujan K sekä taulukkojen T ja U määrittelyt.
    2. [4 p] Toteuta funktio PisteT(A, B, N), joka palauttaa arvonaan parametrina annettujen N-alkioisten taulukkojen A ja B pistetulon eli arvon A[0]*B[0] + A[1]*B[1] + ... + A[N-1]*B[N-1]. Parametri N on arvoparametri ja parametrit A ja B viiteparametreja. Voit olettaa, että N≥1 ja että pistetulon laskemisessa ei tapahdu ylivuotoa.
    3. [1 p] Anna käskyt, joilla funktion PisteT() avulla lasketaan ja tulostetaan 10-alkioisten taulukoiden T ja U pistetulon arvo.
    4. [1 p] Anna käskyt, joilla funktion PisteT() avulla lasketaan ja tulostetaan K-alkioisten taulukoiden T ja U pistetulon arvo. Voit olettaa, että 0<K≤10.
    Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

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


 










; driver.k91

; output "port"
ptrCtr    DC  1048576 ; control register address
ptrStat   DC  1048577 ; status register address
ptrData   DC  1048578 ; data register address

; timeout = time to execute 3 000 000 instructions  
TimeOut   DC  600000 ; timeout loop count

; print (int parData): int retVal
;    print input value via output port 
;    return Failure (1) or Success (0)
;    invoked via SVC in priviledged mode
retVal   EQU –3  ; paluuarvo
parData  EQU -2  ; tulostettavan luvun arvo

Print PUSHR SP
      LOAD  R1, parData(FP)
      STORE R1, @ptrData ; set data to print
      LOAD  R1,=0
      STORE R1, @ptrStat ; init state register to 0
      LOAD  R1,=1
      STORE R1, @ptrCtr  ; give command to print

      LOAD  R2, TimeOut  ; init timeout 
Wait  LOAD  R1, @PtrStat ; check state register
      JNZER R1, Done
      SUB   R2, =1       ; check for timeout
      JZER  R2, Fail
      JUMP  Wait         ; loop until done or timeout
	
Done  LOAD  R1, =0 ; return Success
      JUMP  Retrn      

Fail  LOAD  R1, =1

Retrn STORE R1, retVal(FP)
      POPR  SP
      IRET  SP, =1   ; same syntax as EXIT (??)

Kuva 1. Laiteajuri driver.k91 (suora I/O)