5. Szekvenciális (soros) konzisztencia, elágazásbecslés Flashcards

1
Q

Utasításvégrehajtás soros konzisztenciája

A

Példa:
DIV r3 r2 r1
ADD r6 r4 r5
JZ címke
Párhuzamos feldolgozás esetén előfordulhat, hogy a div utasítás fejeződik be később, és annak eredménye alapján történhet az ugrás. Gondoskodni kell a program logikai integritásainak megőrzéséről. Megsérti a soros végrehajtás logikáját így pontatlan lesz a kivételkezelés is. Az ugrásutasításnak meg kell várnia, hogy a DIV és az ADD is befejeződjön.
Szekvenciális végrehajtás: először a DIV, aztán az ADD, hajtódik végre és a címkére ugrás pedig akkor következik be, ha az ADD eredménye 0.
Párhuzamos feldolgozás: a DIV utasítás fejeződik be később, tehát biztosítani kell, hogy a címkére ugrás csak akkor következzen be, ha az ADD eredménye 0.
Megoldás:
Konzisztencia fokozatokatok használatával, vagy az utasítások cimkézésével. Ekkor, ha párhuzamos végrehajtás történik, a magasabb sorszámú utasítás eredményét vizsgálja a JZ.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Kivételkezelés soros konzisztenciája

A

Példa:
MUL r3 r2 r1
ADD r6 r4 r5
JZ címke

Ha a megszakítást a CPU azonnal fogadja, előfordulhat, hogy a soros végrehajtástól eltérő sorrend alakulhat ki.
Pontatlan kivételkezelés:
Tegyük fel, hogy az ADD művelet túlcsordul, ez megszakítást eredményez. Az első utasítás definiálatlan állapotba kerül, ha a megszakítást rögtön elfogadja a CPU. Az add utasítás 16-bites integer formátumú, a 15000 + 25000 értékekkel megszakítás történik túlcsordulás miatt.
Gyenge konzisztencia! (korai szuperskalárok)
Pontos kivételkezelés:
A megszakítást kizárólag az utasítások eredeti sorrendjében fogadja el! Megvalósítása:
 Átrendező pufferrel:
o Intel: ROB (ReOrder Buffer)
o A processzor csak akkor fogadja el a megszakításkérést, amikor az adott utasítást kiírjuk az átrendező-pufferből
 Címkézéssel: sorszámot kapnak az utasítások.
Erős konzisztencia!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Elágazásbecslés

A

Feltételes ugró utasításoknál van róla szó. Itt a párhuzamos végrehajtás miatt nem biztosított, hogy az ugró utasítás végrehajtásakor már rendelkezésre áll minden adat, ami meghatározza az ugrás irányát. Így beszélhetünk ugrási irány becslésről, az ugrási cím elérésének gyorsításáról, illetve feloldatlan elágazások kezeléséről (spekulatív elágazásbecslés)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Statikus elágazásbecslés

A

A becslés a programkód alapján történik, a compiler által. Az első generációs szuperskalárok
alkalmazzák. A ciklusokat jól ismeri fel, ezáltal hatékony.
A fordító megvizsgálja az elágazásokat, és elágazásoknak egy valószínűségi százalékot ad, és úgy rendezi a kódot, hogy a legvalószínűbb kódrészlet fusson le, ha az elágazás eredménye mégsem a legvalószínűbb ágra mutat, akkor képesnek kell lennie a visszavonásra. A legvalószínűbb ág lefutására már biztos meg lesz az ugrás címe, ha ez megegyezik a tippelt ággal, akkor minden rendben, ha nem, akkor visszavonás és a helyes ág lefuttatása.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Dinamikus elágazásbecslés

A

A hardver feladata az elágazásbecslés megoldása. Ugrástörténet alapján történik a becslés extra
eszközök segítségével. Példa: Pentium I (egyszintű), Pentium Pro, Pentium MMX (kétszintűek).

Lényege, hogy az egyes elágazások történetét a CPU történetbitek formájában írja le:
 1 bites
1-es mélységben vizsgálja az utasításokat. 1 bit azt írja le, hogy az adott elágazás a legutolsó végrehajtáskor bekövetkezett-e vagy sem.
 1: ugrás
 0: folytatás
 2 bites
4 állapotú, véges automata. A CPU 4 állapotot tart számon az elágazásokhoz, mindegyikhez külön:
 00: határozott soros folytatás
 01: gyenge soros folytatás
 10: gyenge elágazás
 11: határozott elágazás (kezdőállapot)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Spekulatív elágazásbecslés

A

Feloldatlan (vagy függő) elágazás esetén használatos, tehát, ha a feltétel kiértékelése valamilyen
nagy késleltetésű művelet eredményétől függ.
Megbecsüljük a folytatási irányt, és annak megfelelően hívják le az utasításokat. Amikor kiértékelődik a feltétel, megtudjuk, hogy
a) a becslés helyes volt, folytatódik a feldolgozás.
b) a becslés hibás volt, ekkor a hibás irányba hívott utasításokat eldobják, és megkezdődik a
lehívás a helyes irányba.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly