581365-8 Tietokoneen rakenne, erilliskoe 4.4.2003

Kirjoita jokaiseen vastauspaperiin: oma nimi, henkilötunnus, kurssin nimi, nimikirjoitus ja sivunumero.

  1. [15 p] Perus S-R kiikku (latch, flip-flop) on esitetty allaolevassa kuvassa.
    1. [4 p] Mitä perus S-R kiikku tekee? Minkä ongelman se ratkaisee? Mikä puute perus S-R kiikussa on (verrattuna esimerkiksi D-kiikkuun tai J-K -kiikkuun)?
    2. [4 p] Todista, että se säilyttää tilansa.
    3. [4 p] Miten sen tila muuttuu? Todista, että tilanmuutos on pysyvä.
    4. [3 p] Samoilla NOR-porteilla voi myös rakentaa yhden bitin NOT-, OR- ja AND-piirit. Näytä miten ne tehdään.

                                                  
  2. [15 p] Välimuisti. Oletetaan, että (epärealistisen pienessä välimuistiratkaisussa) 4-tavuisen sanan 8-bittinen tavuosoite on 0xA2. Välimuistin rivin pituus (cache line size) on 32 tavua. Tee (kuvallinen) esimerkki ja näytä miten viitattu muistipaikka löytyy välimuistista, kun käytössä on
    1. [5 p] Suoraa kuvausta (direct mapping) käyttävä kuvausfunktio (mapping function)?
    2. [5 p] Täysin assosiatiivista (associative or fully associative) kuvausta käyttävä kuvausfunktio.
    3. [5 p] Joukkoassosiatiivista kuvausta joukon koolla 4 (4-way set associative mapping) käyttävä kuvausfunktio?
    Voit olettaa esimerkissäsi, että viitattu muistipaikka löytyy välimuistista.
    Montako tavua välimuistiin mahtuu? Mitkä ovat eri osoitekenttien nimet/pituudet kunkin kuvaustyypin yhteydessä?

  3. [15 p] Riippuvuudet (dependencies, hazards). Oletetaan, että RISC-arkkitehtuurin konekielen ALU-käskyissä on kolme rekisterioperandia ja että tulos menee aina ensiksi mainittuun (vasemmanpuoliseen) rekisteriin. Arkkitehtuuri on toteutettu (tavanomaisesti, ei superskalaarina) liukuhihnoitettuna siten, että parhaimmassa tapauksessa joka syklillä (cycle) saadaan yksi konekäsky valmiiksi.

    Tarkastellaan seuraavaa kääntäjän generoimaa käskysarjaa:

    	Load    R2, VarX        ; Regs(R2) <- Mem(VarX)
    	Add     R5, R5, R2      ; Regs(R5) <- Regs (R5) + Regs(R2)  
    	Move    R2, R6          ; Regs(R2) <- Regs (R6)
    	Add     R3, R3, R2
    	Mul     R3, R2, R5 
    	Jnzer   R2, Loop
    	Add     R3, R2, R5 

    Useat seikat edellämainitussa koodisegmentissä voivat hidastaa suorittimen toimintaa maksiminopeudesta.

    1. [7 p] Kuvaile täsmällisesti allamainitut ongelmatyypit ja merkitse selkeällä tavalla kaikki (ihan jokainen) kyseisen ongelmatyypin esiintymät em. käskysarjassa:
      • data-riippuvuudet (data dependencies)
      • rakenteelliset riippuvuudet (structural dependencies)
      • kontrolliriippuvuudet (control dependencies)
      Miten kustakin ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?
       
    2. [4 p] Oletetaan nyt, että arkkitehtuuri toteutetaankin superskalaarina (superscalar). Kuvaile täsmällisesti allamainitut uudet ongelmatyypit ja merkitse selkeällä tavalla kaikki kyseisen ongelmatyypin esiintymät em. käskysarjassa.
      • kirjoitusriippuvuus (output dependencies)
      • antiriippuvuus (antidependencies)
      Miten kustakin uudesta ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?
       
    3. [4 p] Oletetaan nyt, että kyseiselle arkkitehtuurille on toteutettu funktionaalisesti oikein toimiva emulaattori. Emulaattori on toteutettu tavanomaisen von Neumann -arkkitehtuurin mukaisesti, joten siinä suoritetaan annettua konekielistä koodia yksi konekäsky kerrallaan. Mitkä kohtien (a) ja (b) käskyjen välisistä riippuvuuksista tulee emuloinnissa ottaa huomioon ja millä tavoin? Perustele vastauksesi.

    Tee tarvittavat lisäoletukset ja kirjaa ne näkyviin.

  4. [15 p] Langoitettu kontrolli (hardwired control)   (max 2 sivua)