581365-8 Tietokoneen rakenne, luentokurssin koe 1.11.2000

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimikirjoitus ja nimi, henkilötunnus, kurssin nimi ja sivunumero.

Yksinkertaisen laskimen käyttö on sallittua. Vastauksen saa kirjoittaa myös englanniksi, jos näin haluaa.

  1. [12 p] Hudit. Yhden konekäskyn suorituksen aikana voidaan viitata muistiin yksi tai useampi kertaa. Muistiin viittaamiseen liittyy ainakin kolme erilaista "hutia": viitattu keskusmuistin sana ei ole välimuistissa, viitattu virtuaalimuistin sivu ei ole keskusmuistissa tai virtuaalimuistijärjestelmän osoitteenmuunnos ei löydy TLB:stä. Oletetetaan aluksi, että haluamme lukea muistipaikan sisällön.
    1. Miten kukin "huti" käsitellään, eli mitä niiden yhteydessä tapahtuu?
    2. Miten nämä eri "hudit" eroavat toisistaan ja mitä yhteistä niillä on?
    3. Miten tilanne muuttuu, jos kyseessä onkin muistiin kirjoittaminen muistista lukemisen asemesta?

  2. [12 p] Riippuvuudet. Oletetaan, että RISC-arkkitehtuurin konekielen ALU-käskyissä on kaksi operandia ja että tulos menee aina ensiksi mainittuun (vasemmanpuoliseen) rekisteriin. Arkkitehtuuri on toteutettu 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
    	Add	R5, R2
    	Load	R2, VarY
    	Add	R3, R2
    	Mul	R3, R5
    	Jnzer	R2, Loop
    	Add	R4, 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.
      • 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. 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 ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?

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

  3. [12 p] RISC vs CISC.
    1. [6 p] Mitkä ovat pääasialliset eroavaisuudet?
    2. Sopiiko toinen paremmin liukuhihnoitetuksi (pipelined)? Perustele.
    3. Sopiiko toinen paremmin supeskalaariin (superscalar) toteutukseen? Perustele.
    4. Sopiiko toinen paremmin langoitettuun (hardwired) toteutukseen? Perustele.
    5. Sopiiko toinen paremmin mikro-ohjelmoituun (micro programmed) toteutukseen? Perustele.

  4. [6 p] Amdahlin laki (Amdahl's Law).
    1. Kuvaile lyhyesti, mikä on Amdahlin laki.
    2. Mitä tarkoitusta varten vektorisuorittimien kehittäjänä tunnettu Gene Amdahl lakinsa kehitti?
    3. Anna valaiseva esimerkki Amdahlin lain käytöstä.

  5. [6 p] Karnaugh kartat (Karnaugh Maps).
    1. Minkä ongelman ne ratkaisevat?
    2. Miten ne ratkaisevat kyseisen ongelman? Selitä sanoin.
    3. Anna valaiseva esimerkki Karnaugh karttojen käytöstä.