6. Futószalag (pipeline) elvű utasítás végrehajtás Flashcards
Mi a jó ég ez? (Futószalagos végrehajtás)
Az utasítás végrehajtásnak vannak részei. Nézzük például a klasszikus RISC futószalag által tartalmazott lépéseket (fokozatokat):
- Instruction fetch (IF)
- Instruction decode and register fetch (ID)
- Execute (E)
- Memory access (M)
- Register write back (W/B)
Futószalag nélkül, jön egy utasítás, ami végigmegy ezeken és csak ez után jöhet a következő utasítás. Ezzel az a gond, hogy amíg az utasítás pl. az ID fázisban van, addig a többi fázis áramköre kihasználatlan.
Futószalag elvet alkalmazva, az első utasítás ID-jénél már rögtön ráengedjük a IF-re a következő utasítást, így nem lesz kihasználatlan kapacitásunk. Folyamatosan így ellátva az áramköröket munkával egyszerre annyi utasítást tudunk végrehajtani, ahány lépésből áll a mi architektúránk utasítás feldolgozása.
Ennek fényében elvben annyiszor gyorsabb a feldolgozás, ahány fokozatos a futószalag. Gyakorlatban azért ez nem ilyen egyszerű a különböző függőségek miatt.
Két fokozatú (ideális) futószalag jellemzői
A CPU 2 darab egymástól független hardver egységgel kell rendelkezzen (1 egység – 1 fokozat végrehajtása)
Mindkét fokozat használata ugyanannyi időt vesz igénybe
Az egyik fokozat kimenete a másik fokozat bemenete
A fokozatok szinkronizáltan, órajelre működnek
Mindkét fokozat órajelre fogadja az inputot és egyetlen óraciklus alatt elvégzi a rá bízott
műveletet (időnkénti újrafeldolgozás)
Órajelenként 2 utasítást tud értelmezni összesen.
Célok:
fogyasztás csökkentése
magas frekvencia (futószalagszámnövelés)
Példák ilyen CPU-k ra: Intel 80486: 3 Intel P5 architektúra (Pentium): 5 Intel P6 architektúra (Pentium III): 11-17 Netburst architektúra: 20-31 Core 2: 14 Core i: 16-20
Újrafeldolgozás (operandus előlehívás)
Lényege, hogy megakadályozzuk azt, hogy bizonyos
műveleteknél (főként fixpontos szorzásnál és osztásnál)
mindig végigjátsszuk a 4 futószalag fokozatot. Ilyenkor ugyanis
minden részeredményt kiírunk a regiszterekbe. Ehelyett
visszavezetjük az E kimenetét az E bemenetére, és így
számolunk tovább. Pl: Egy ciklusban mindig hozzáadunk egy számhoz egy másikat » E-ben az összeadás van mint ALU művelet » az eredmény-t visszavezetjük az E bemenetére.
Csökken a teljesítmény az újrafeldolgozás alkalmazása miatt, de akkor is kell
FX, FP futószalagok használják
kép10
Futószalag fajták
- Overlapping (átfedés)
- Vektor CPU-kban
- Teljes futószalag elvű feldolgozás
Overlapping (átfedés)
Lényege, hogy az egyik utasítás WB-jét és a következő utasítás F-ét párhuzamosan csinálom, így megtakarítok egy órajel ciklust.
kép11
Vektor CPU-kban
Csak a végrehajtó fokozatok működnek futószalag szerűen, így ezek átfedésben tudnak dolgozni. Nagyobb számítási műveleteknél hasznos.
kép12
Teljes futószalag elvű feldolgozás
Minden órajelciklusban új utasítás futószalagra helyezése.
kép13
A futószalag logikai felépítése
Cél a funkcionális kialakítás:
univerzális futószalagok (FX, FP, L/S)
dedikált futószalagok: egyféle feladatra (egyszerű, összetett)
aritmetikai futószalagok (F| D/SO | E | W/B)
ugrási futószalagok (F | E)
Egy futószalagnak két szintje van:
1. Funkcionális kialakítás
2. Elemi műveletek specifikációja (ez szinttől függően különböző mélységig lehet részletezve)
Futószalag fizikai implementációk
A futószalag fokozatok tulajdonképpen egymástól független VE-k. Vannak elválasztó regiszterek, melyek rejtett regiszterek (a programozó által nem címezhetőek). Ezek választják el egymástól a VE- ket.
’60-as, ’80-as évek: kép15
II. generációs szuperskalár:
Cél:
a fokozatok végrehajtási idejének csökkentése.
több, dedikált, vagyis specializált, egymással párhuzamosan működő futószalag kialakítása.
Léteznek univerzális futószalagok is, melyekkel a specializált hardver mennyiségének minimalizálását próbálják elérni.
Futószalagos CPU-k utasításvégrehajtásának hatásai, következményei
További növelés:
o utasításon belüli párhuzamosítás (MMX, SSE)
o kibocsátási párhuzamosság
Feldolgozás következményei:
o a memóriák gyorsaságban nem tudták tartani az iramot a CPU-kkal:
Megoldás: Gyorsítótárak + Elágazáskezelés
Elágazáskezelés
feltétlen elágazás esetén ugrási buborék (n-1)
feltételes elágazás esetén +2 ciklus (kiértékelés, ugráscím kiszámitása)
o kezelés: RISC
késleltetett ugrás
korai CISC: dekódoló fokozatban +1 CMP egység, +1 címszámító egység
későbbi CISC: fix előrejelzés, 80%-ban ugrás fog bekövetkezni
- pl.: 1990 – Intel 80486, mindig ugrik elágazásnál („Branch Prediction = Big Latency”)