Tietokoneen rakenne, koe 19.11.2013                       suomeksi Other side in English

Kirjoita jokaiseen vastauspaperiin: nimi, nimikirjoitus, opiskelijanumero, kurssin nimi ja sivunumero.
Kirjoita vastauspaperiin kaikki tekemäsi olettamukset. Kuhunkin tehtävään riittää 1-2 sivun vastaus.
Mainitse vastauspaperissasi, jos haluat että koe arvioidaan myös uusintakuulusteluna.

  1. [9 p] Välimuisti (cache) ja TLB
    1. [3 p] Minkä ongelman välimuisti yrittää ratkaista? Minkälaiseen paikallisuuteen välimuistiratkaisu perustuu ja miksi? Mitä täsmälleen tapahtuu välimuistihudin (cache miss) yhteydessä ja mikä on sen suorituskykykustannus?
    2. [3 p] Minkä ongelman TLB yrittää ratkaista? Minkälaiseen paikallisuuteen TLB-ratkaisu perustuu ja miksi? Mitä täsmälleen tapahtuu TLB-hudin (TLB miss) yhteydessä ja mikä on sen suorituskykykustannus?
    3. Selitä käsite "joukkoassosiatiivinen välimuisti" (set associative cache).
    4. Selitä käsitteet "yhdistetty välimuisti" (unified cache) ja "jaettu välimuisti" (split cache).
    5. Missä suhteessa välimuisti ja TLB ovat toisiinsa?
  2.  
  3. [18 p] Riippuvuudet. Oletetaan, että RISC-arkkitehtuurin konekielen ALU-käskyissä on kolme rekisterioperandia ja että tulos menee aina ensiksi mainittuun (vasemmanpuoleiseen) rekisteriin. Arkkitehtuuri on toteutettu (tavanomaisesti, ei superskalaarina) liukuhihnoitettuna siten, että parhaimmassa tapauksessa joka syklillä (cycle) saadaan yksi konekäsky valmiiksi. Liukuhihnassa on viisi vaihetta (käskyn nouto, käskyn purku, rekistereiden luku, ALU, write-back).

    Tarkastellaan seuraavaa kääntäjän generoimaa käskysarjaa (käskyn numero vasemmalla):

    1         Load  R2, VarX     ; Regs(2) <- Mem(VarX)
    2         Add   R5, R5, R2   ; Regs(5) <- Regs(5) + Regs(2)  
    3 Loop    Move  R2, R6       ; Regs(2) <- Regs(6)
    4         Add   R3, R3, R2
    5         Add   R2, R3, R5 
    6         Jnzer R3, Loop
    7         Move  R1, R2
    Useat seikat edellämainitussa koodisegmentissä voivat hidastaa suorittimen toimintaa maksiminopeudesta.
    1. [6 p] Kuvaile täsmällisesti ongelmatyypit datariippuvuus (raw), kontrolliriippuvuus ja rakenteellinen riippuvuus. Anna selkeällä tavalla kyseisen ongelmatyypin yksi esiintymä em. käskysarjassa (jos niitä siellä on).
    2. [6 p] Miten data-, kontrolli- ja rakenteellisista riippuvuuksista aiheutuvaa suorituskykyongelmia voidaan välttää tai vähentää? Anna yhteensä kuusi ratkaisumallia (kuhunkin riippuvuustyyppiin vähintään yksi ja kontrolliriippuvuuteen vähintään kaksi) ja kuvaa lyhyesti, miten ne toimivat. Ratkaisumallien tulee olla sellaisia, että ne eivät vaadi liukuhihnan pysäyttämistä ("kupla").
    3. [4 p] Oletetaan nyt, että arkkitehtuuri on laajennettu superskalaariksi (superscalar) noutopoliikalla nouda ja pura 3 käskyä kerrallaan ja issue-politiikalla out-of-order issue, out-of-order completion. Kuvaile täsmällisesti uudet ongelmatyypit (kirjoitusriippuvuus (waw) ja antiriippuvuus (war)) sekä selkeällä tavalla kyseisen ongelmatyypin yksi esiintymä em. käskysarjassa (jos niitä siellä on).
    4. [2 p] Miten kohdan (c) kummastakin uudesta ongelmatyypistä aiheutuvia suorituskykyä heikentäviä ongelmia voidaan välttää tai vähentää? Anna kumpaankin uuteen riippuvuustyyppiin yksi ratkaisumalli ja kuvaa lyhyesti, miten se toimii. Ratkaisumallien tulee olla sellaisia, että ne eivät vaadi liukuhihnan pysäyttämistä ("kupla").
  4.  
  5. [9 p] Mikro-ohjelmoitu (microprogrammed) kontrolli
    1. [1 p] Minkä ongelman suorittimen kontrolli ratkaisee?
    2. [2 p] Miten mikro-ohjelmoitu kontrolli toteutetaan?
    3. [2 p] Vertaile mikrokoodin käskyjä konekielen konekäskyihin. Erot? Samankaltaisuudet?
    4. [2 p] Miten horisontaalinen mikrokoodi eroaa vertikaalisesta mikrokoodista. Anna esimerkki.
    5. [2 p] Mitkä etuja/haittoja mikro-ohjelmoidulla kontrollilla on langoitettuun kontrolliin verrattuna?