online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

Adatfüggöségek (fogalma, föbb fajtai, teljesítmény-korlatozó hatasa)





felso sarok

egyéb tételek

jobb felso sarok
 
 
bal also sarok   jobb also sarok

Adatfüggöségek (fogalma, föbb fajtái, teljesítmény-korlátozó hatása)


Az adatfüggöségek fogalma:

Ha egy program két egymást követö utasítása ugyanazt a regiszter-, vagy memória operandust használja, kivéve, ha a közös operandus mindkét uta 727e46h sításban forrás operandus. Az adatfüggöség nyilvánvaló esete az, hogy a soron következö utasítás az elözö utasítás eredményt használja forrás operandusként. Amíg egy processzor az utasításokat sorosan hajtja végre, az adatfüggöségek nem okoznak gondot. Más a helyzet, ha az utasításokat a processzor párhuzamosan dolgozza fel, mint ILP végrehajtásnál. Ilyenkor az adatfüggöségek észrevétele és megfelelö kezelése a processzor elsödleges feladatává válik.




Az adatfüggöségek föbb fajtái:

Adatfüggöség

Jellege szerint Helye szerint

Soros utasítás- Ciklusban Regiszter Memória

Szekvenciákon

Valós függöség Álfüggöség

(RAW)

WAR WAW


RAW-függöség (írást követö olvasási függöség, true dependence).

Valamely utasítás forrásoperandusza felhasználja a másik utasítás eredményét

i1: load r1, a // r1 <=(a)

i2: add r2,r1,r1 // r2 <=(r1)+(r1)

Az i2 utasítás az r1 regisztert, mint forrást használja. Így az i2 utasítás mindaddig nem hajtható végre helyesen, míg az i1 utasítás nem hajtódik végre és eredménye nem áll rendelkezésre. Ezért i2 utasítás RAW-függöségben van az i1 utasítástól.


A RAW függöségek fajtái

Behívási függöség: a kívánt operandust elöbb be kell olvasni (r1-be) ahhoz, hogy i2 végrehatható legyen.

i1: load r1, a // r1<=(a)

i2: add r2,r1,r1 // r2<=(r1)+(r1)

Müveleti függöség: ha a keresett operandust a megelözö utasítás aritmetikai, logikai stb. müveletek eredményeként állítja elö.

i1: mul r1, r4, r5 // r1<=(r4)*(r5)

i2: add r2, r1, r1 // r2<=(r1)+(r1)


WAR-függöség (olvasást követö írásfüggöség, anti dependence)

Valamely utasítás célregisztere megegyezik az elözö utasítás forrásregiszterével

i1: mul r1, r2, r3 //r1<=(r2)*(r3)

i2: add r2, r4, r5 //r2<=(r4)+(r5)

Ebben az esetben, az i2 utasítás az r2 regiszterbe ír, míg az i1 utasítás r2 tartalmát forrásoperandusként használja. Ha bármely okból i2 elöbb hajtódik végre, mint i1, akkor r2 tartalmát i2 korábban írná át, mint ahogy azt i1 olvasná, és ez nyilvánvalóan hibát eredményezne.


WAW-függöség (írást követö írásfüggöség, output dependence)

Valamely utasítás célregisztere megegyezik az elözö utasítás célregiszterével

i1: mul r1,r2,r3 // r1<=(r2)*(r3)

i2: add r1,r4,r5 // r1<=(r4)+(r5)


A ciklusbeli adatfüggöség:

Ciklusokban megjelenö függöségek. Akkor van, ha a ciklusmag valamely utasítása olyan értékre hivatkoznak, amely valamely elözö ciklus eredménye. Fontos probléma, mivel a futásidöt döntöen a ciklusok összideje adja ki. (80/20-as szabály). Kezelésük a compiler feladata.

Pl. do i=2, n x(i)=a(i)*x(i-1)+b enddo


Elsörendü ciklusok

Ha a ciklus az öt közvetlenül megelözö ciklus eredményét használja fel.

Általános formája: X(i) = a(i) * X(i-1) + b(i)


Teljesítmény-korlátozó hatása

- valódi adatfüggöség (RAW): ki kell várni, amíg a szükséges adat elkészül. Nem lehet kiküszöbölni.

- hamis adatfüggöség (WAR, WAW): csak az ugyanarra a tároló helyre hivatkozás miatti függöség, regiszter átnevezéssel megszüntethetö.


Valódi adatfüggöség esetén,a teljesítménycsökkenés nem kiküszöbölhetö, de csökkenthetö, részlegesen feloldható utasítás várakoztatással és eredmény elöreküldéssel.


Találat: 404







Felhasználási feltételek