kategória | ||||||||||
| ||||||||||
| ||
|
||||||||||
Vezérlésfüggöségek és teljesítmény korlátozó hatásuk csökkentése (vezérlésfüggöségek fogalma, teljesítmény korlátozó hatása és annak csökkentése, a feltétlen vezérlésátadás, a statikus és dinamikus elágazásbecslés, valamint a spekul 232h73c atív elágazás-kezelés elve)
Vezérlöfüggöség fogalma:
Elágazáskor a processzor (ugrás esetén) nem az elágazás utasítás utáni utasítást olvassa be, dekódolja, stb. hanem az ugrás címén találhatót. Ehhez feltétlen ugrásnál is címet kell számítani, feltételes ugrás esetén pedig feltétel vizsgálatot is kell végezni. Mindez idöbe telik és addig az egységek nem tudnak dolgozni (úgynevezett buborék keletkezik). Tehát itt is függ a feldolgozás az elözö (elágazás) utasítástól.
Feltétlen elágazás - késleltetett ugrás:
Probléma:
MUL
JMP címke
ADD
címke SHL
Mivel a JMP hatására feltétlen ugrás következik be, az ADD utasítás nem hajtódik végre.
Nem az ADD hanem az SHL a következö (a JMP utáni) utasítás:
feleslegesen hívjuk le az ADD utasítást, söt
veszélyeztetjük a regiszter-tartalmakat
Kezelése:
utasításrés (buborék) segítségével
Kétfokozatú futószalag: 1 utasításrés
Négyfokozatú futószalag: 3 utasításrés.
n fokozatú futószalag: n-1 utasításrés (a futószalag miatt kell az n-1-edik eredmény a végeredményhez)
Statikusan történik, a compiler által
o Egyszerü compiler: minden feltétlen ugrás után beszúr egy NOP-ot (kétfokozatú futószalag esetén)
Értékelés: bár felesleges müveletet végzünk (egy ciklus), de már nem veszélyeztetjük a regiszter-tartalmat
o Optimalizáló compiler:
A compiler a JMP utasítás elött adatmanipuláló utasításokkal kísérli meg feltölteni az utasításrést
Pl.:
JMP címke
MUL
ADD
címke SHL
Amennyiben az utasításrés mérete 1 akkor a feltöltés valószínüsége 85%, ha nagyobb, akkor az esély csökken
Ezt a megoldást korai RISC processzorok alkalmazták
Ezzel megszünt a ciklus-veszteség is!
Elágazások gyakorisága általános célú programokban 20-30%, tudományosoknál 5-10%.
Feltételes elágazások gyakorisága általános célú programoknál 20%, tudományosnál 5-10%.
Általános célú programok esetén a legtöbb vizsgálat meglepöen alacsony gyorsítási lehetöséget mutat, 1.2 - 3.0 értékek között, 2 körüli átlagértékkel. Tudományos programoknál a párhuzamos végrehajtásával elérhetö gyorsítás mértéke valamivel nagyobb, 1.2 - 17 közötti tartományokba esik, 2-4 közötti átlagértékkel. Ezeknek az eredményeknek az az oka, hogy a vezérlésfüggöségek eröteljesen behatárolták az utasítások párhuzamos végrehajtását. A feltételes elágazások alapblokkokra tagolják a programot, és a párhuzamosítás alapblokkonként külön-külön történik (alapblokk-ütemezés). Mivel az alapblokkok viszonylag rövidek (az ütemezéshez csak kisszámú utasítás áll rendelkezésre), az adódó gyorsítás mértéke is alacsony marad.
Többirányú elágazás: egy feltételes elágazás esetén mindkét lehetséges útvonalat egyidejüleg követik a feltétel kiértékeléséig, majd a feltétel kiértékelése után a helytelennek bizonyult útvonalat elvetik, és a helyes útvonalon folytatják a program végrehajtását.
Spekulatív elágazáskezeléssel: A processzor minden függö feltételes elágazás esetén becslést végez a feltétel kimenetéröl és az utasítások feldolgozását e becslésnek megfelelöen vagy a soros vagy az elágazási ágon folytatja. A feltétel kiértékelése után a processzor ellenörzi a becslést. Ha a becslés helyes volt érvényesíti a feltételes elágazást követöen végrehajtott utasításokat és folytatja a feldolgozást. Ha a becslés hibás volt a feltételesen végrehajtott utasításokat törli és a végrehajtást a helyes ágon folytatja.
A statikus módszer: a becslést a processzor a tárgykód valamely jellemzöjéböl származtatja pl. müveleti kódból az elágazás irányából, vagy a fordító program által adott ajánlásból.
A dinamikus módszer: az elágazás történetén alapul
1 bites eljárás: a processzor elágazásonként 1 bittel írja le az elágazás történetét. Ez jelzi hogy az elágazás a legutolsó végrehajtáskor bekövetkezet -e vagy sem. 80/20-as szabály Ha az elözö ugrás teljesült, akkor a következö is fog.
2 bites eljárás: ha az egyes elágazások leírásához több bit áll rendelkezésre hosszabb lesz az elágazás-történet és így a becslés várhatóan pontosabb lesz.
A processzor 2 biten (telített számláló) 4 állapotú véges automata ként tartja nyilván a múltat:
1. 00: határozott soros folytatás (ugrás esetén 01, nem ugráskor 00 az új állapot)
2. 01: gyenge soros folytatás (ugrás esetén 10, nem ugráskor 00 az új állapot)
3. 10: gyenge elágazás (ugrás esetén 11, nem ugráskor 01 az új állapot)
4. 11: határozott elágazás (ugrás esetén 11, nem ugráskor 10 az új állapot)
5. Alapállapot az 11.
Találat: 490