kategória | ||||||||||
| ||||||||||
| ||
|
||||||||||
Utasítás kiküldés II. (a kiküldött utasítások multiplicitása, forrás operanduszok meglétének vizsgálati elvei, üres várakoztató pufferek kezelése)
Kiküldési ráta:
A várakozó puffereknek minden ciklusban el kell tudni látnia minden hozzárendelt EU-t utas 242h75c ítással. Ennek megfelelöen:
Egyedi várakoztató állomás: csak 1 utasítás kiküldésére képes ciklusonként, csak saját EU-ját kell ellátnia
Csoport várakoztató állomás: több utasítás kiküldésére is alkalmasnak kell lennie, de a kiküldendö utasítás típusától is függ a kiküldési ráta. Egyszerü utasítás (R10000, load/store): esetén 2, bonyolultabb utasítás (R10000 FX, FP, div, mul) azonban csak 1.
Központi várakozató állomás: ciklusonként több (P6-nál 5) utasítást is kell tudnia küldeni, de ezek megvalósítása összetettebb
Forrás operandoszok meglétének vizsgálati elvei:
Közvetlen ellenörzés (kiküldéshez kötött): nincsenek konkrét állapotbitek, melyek jeleznék az operandusok jelenlétét, így külön meg kell vizsgálni azokat. Az RS-ben csak az opcode-t és a hivatkozott forrás és célregiszterek számát tárolják. A regiszter elérhetöségét egy a register file-ban lévö scoreboard jelzi. Minden regiszternél még egy validity bit. Ha egy regisztert valamelyik utasítás használja V bitje 0. Ha eredmény megérkezett és beíródott, akkor V=1 lesz. A regiszterek hozzáférhetöségét ezzel a bittel ellenörzik. Komplex logika, több ezer komparátor.
Állapotbitek vizsgálata (kibocsátáshoz kötött): az operandusok meglétét külön erre a célra definiált állapotbitek jelzik Az RS-ben az opcode mellett a hivatkozott forrásregiszterek értéke és a hozzáférhetöségüket jelzö státusz bitek mellett a célregiszter számát tárolják. V=1 esetén a regiszter tartalma, V=0 esetén csak a hivatkozott regiszter száma van az RS-ben.
Üres várakozó pufferek kezelése:
Egyszerü kezelés (straightforward): ha egy utasítás egy üres pufferhez ér, akkor az adott ciklusban beíródik a pufferbe, és csak a következö ciklusban lesz kiküldve, így egy egész ciklust fölöslegesen várakozik a pufferben (Pl.: Nx586).
Hatékonyabb megoldás a kikerülés (bypassing): ha az utasítás üres pufferhez érkezik, akkor "kikerüli" azt és még az adott ciklusban kiküldésre kerül, így nincs fölösleges várakoztatás (Pl.: Power PC604).
Találat: 375