[18 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 (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.
- Kuvaile täsmällisesti allamainitut ongelmatyypit ja anna selkeällä tavalla yksi kyseisen ongelmatyypin esiintymä em. käskysarjassa (jos niitä siellä on):
- data-riippuvuus (data dependency)
- kontrolliriippuvuus (control dependency)
- rakenteellinen riippuvuus (structural dependency)
- Miten data-, kontrolli- ja datariippuvuuksista aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää? Anna kuhunkin riippuvuustyyppiin yksi ratkaisumalli ja kuvaa lyhyesti, miten se toimii.
- Oletetaan nyt, että arkkitehtuuri on laajennettu superskalaariksi (superscalar) arkkitehtuuriksi noutopoliikalla nouda ja pura 3 käskyä kerrallaan ja issue-politiikalla out-of-order issue, out-of-order completion. Kuvaile täsmällisesti allamainitut uudet ongelmatyypit ja selkeällä tavalla yksi kyseisen ongelmatyypin esiintymä em. käskysarjassa (jos niitä siellä on):
- kirjoitusriippuvuus (output dependencies)
- antiriippuvuus (antidependencies)
- Miten kohdan (c) kustakin uudesta ongelmatyypistä aiheutuvaa ongelmia voidaan välttää tai niiden aiheuttamia suorituskykyä heikentäviä vaikutuksia vähentää?
Anna kuhunkin uuteen riippuvuustyyppiin yksi ratkaisumalli ja kuvaa lyhyesti, miten se toimii.
Tee tarvittavat lisäoletukset ja kirjaa ne näkyviin.