581365-8 Tietokoneen rakenne, kurssikuulustelu 5.11.2003  

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

  1. [14 p] Välimuisti (cache) ja TLB (translation lookaside buffer)
    1. [2 p] Minkä ongelman välimuisti ratkaisee?
    2. [2 p] Minkä ongelman TLB ratkaisee?
    3. [2 p] Mitä yhteistä on välimuistilla ja TLB:llä? Mitkä ovat suurimmat erot?
    4. [2 p] Mitä hyötyä on siitä, että välimuistin lohkon (rivin) pituus on iso? Anna esimerkki.
    5. [2 p] Miksi suoraa kuvausta (direct mapped) ei kannata kayttää data-välimuistin yhteydessä? Anna esimerkki.
    6. [2 p] Mitä haittaa on joukkoassosiatiivisen (set associative) data-välimuistin liian pienestä joukon koosta? Anna esimerkki.
    7. [2 p] Mitä haittaa on täysin assosiatiivinen (fully associative) välimuistista? Miksi sitä ei yleensä käytetä data-välimuistin yhteydessä? Anna esimerkki.
       
  2. [12 p] IA-64 ja Itanium.
    1. Selitä käsite "predikoitu suoritus (predicated execution)". Anna esimerkki.
    2. Selitä käsite "spekulatiivinen lataus tai kontrollispekulointi (speculative loading or control speculation)". Anna esimerkki.
    3. Selitä käsite "data spekulointi (data speculation)". Anna esimerkki.
    4. Selitä käsite "ohjelmisto liukuhihnoitus (software pipelining)". Anna esimerkki.
    5. Selitä käsite "haarautumisrekisteri (branch register)". Anna esimerkki.

     
  3. [20 p] Riippuvuudet. 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. Liukuhihnassa on viisi vaihetta (käskyn nouto, käskyn purku, rekistereiden luku, ALU, write-back).

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

    	Load	R2, VarX	    ; Regs(2) <- Mem(VarX)
    	Add	R5, R5, R2   ; Regs(5) <- Regs(5) + Regs(2)  
    Loop	Move	R2, R6	    ; Regs(2) <- Regs(6)
    	Add	R3, R3, R2
    	Add	R2, R3, R5 
    	Jnzer	R3, Loop
     	Move	R1, R2
    Useat seikat edellämainitussa koodisegmentissä voivat hidastaa suorittimen toimintaa maksiminopeudesta.
    1. Kuvaile täsmällisesti allamainitut ongelmatyypit ja merkitse selkeällä tavalla kaikki kyseisen ongelmatyypin esiintymät em. käskysarjassa (jos niitä siellä on):
      • [4 p] data-riippuvuudet (data dependencies)
      • [2 p] kontrolliriippuvuudet (control dependencies)
    2. [6 p] Miten kohdan (a) kustakin ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?
    3. Oletetaan nyt, että arkkitehtuuri on laajennettu superskalaariksi (superscalar) arkkitehtuuriksi (noutopoliikka: nouda ja pura 3 käskyä kerrallaan, issue-politiikka: out-of-order issue, out-of-order completion). Kuvaile täsmällisesti allamainitut uudet ongelmatyypit ja merkitse selkeällä tavalla kaikki kyseisen ongelmatyypin esiintymät em. käskysarjassa (jos niitä siellä on):
      • [2 p] kirjoitusriippuvuus (output dependencies)
      • [2 p] antiriippuvuus (antidependencies)
    4. [4 p] Miten kohdan (c) kustakin uudesta ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?
       

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