kategória | ||||||||||
| ||||||||||
| ||
|
||||||||||
Utasítás kiküldés I. (tervezési tere, kiküldési szabály (dispatch rule) értelmezése, kiküldési sorrend alternatívái, trendje, példák)
Tervezése tere:
Kiküldési politika: milyen módon válasszuk ki az utasítást a végrehajtáshoz, és hogyan kezelje a kiküldési blokkolást.
Kiküldési ráta: definiálja az egy ciklusban a várakozó pufferekböl kiküldhetö utasítások számát
Operandusok rendelkezésre állásának megállapítási módja: az utasítások kiküldhetök-e járulékos késés nélkül vagy sem.
Üres várakoztató puffer kezelése: el kell döntenünk, hogy egy üres várakozó állomás elkerülhetö-e
Kiküldési szabályok értelmezése:
Kiválasztási szabály. Ez határozza meg, hogy a várakoztató pufferekben tárolt utasítások mikor minösülnek végrehajthatónak. Amennyiben a processzor fejlett utasítás-kibocsátást alkalmaz (regiszterátnevezés + spekulatív elágazás-kezelés) ennek eldöntése arra a vizsgálatra korlátozódik, hogy az utasítás forrásoperandusai rendelkezésre állnak-e.
Döntési szabályra akkor van szükség, ha a továbbíthatónál több alkalmas utasítás áll rendelkezésre. Általánosságban elmondhatjuk, hogy ahány szabad vezérlöegységhez kapcsolódik egy várakoztató puffer, annyi végrehajtható utasítás elöállítása jelent optimális müködést ciklusonként, hiszen ekkor biztosítható az, hogy minden ciklusban, minden vezérlöegység valamilyen hasznos munkát végezzen. Ha ennél több végrehajtható utasítás szerepel a pufferben, akkor dönt a döntési szabály. A legtöbb processzor ilyenkor egy nagyon egyszerü döntést hoz: a "legidösebb" utasítást küldi ki.
Kiküldési sorrend alternatívái:
A kiküldési sorrend szabja meg azt, hogy egy nem végrehajtható utasítás megakadályozza-e a sorban következö végrehajtható utasítás vagy utasítások kiküldését.
Ha sorrendben (in-order) küldi ki az utasításokat, egy nem végrehajtható utasítás a pufferben meggátolja a soron következö utasítást vagy utasításokat a kiküldésben, vagyis blokkolódás jön létre. Ez nyilván csökkenti a teljesítményt, ugyanakkor csökkenti a komplexitást is, mivel elegendö csupán a várakoztató puffer utolsó elemét leellenörizni.
Ha részben sorrenden kívül (partially out-of-order) küldi ki az utasítást, akkor kismértékü teljesítménynövekedés érhetö el. Ez jelentheti azt is, hogy a sorrenden kívüli kiküldést csak bizonyos típusú vezérlöegységeknél alkalmazza, de azt is jelentheti, hogy csak egy nem kiküldhetö utasítást tud átlépni. Például a Power2 csak a lebegöpontos utasításokat várakoztatja, és kiküldéskor csak egyetlen nem végrehajtható lebegöpontos utasítást tud átlépni.
Ha sorrenden kívül (out-of-order) küldi ki az utasításokat, mely a leghatékonyabb eljárás egyike a három közül. Itt egy nem végrehajtható utasítás nem blokkolja a várakoztató pufferben sorban következö végrehajtható utasítások kiküldését. A legkorszerübb processzorok ezt a kiküldési módot alkalmazzák, bár az IBM360/91 is implementálta már. Ennek oka egyszerü: a mai architektúrák többnyire csoportos vagy központi várakoztató puffereket alkalmaznak, melyeknél több vezérlöegységhez egy várakoztató puffer kapcsolódik. Ilyenkor, ha a blokkoló sorrendben kiküldést alkalmazná a processzor, az jelentös teljesítménycsökkenéshez vezetne.
Trendek és példák:
Egyértelmüen a sorrenden kívüli kiküldés felé mutat. A csoportos vagy központi várakoztató állomást használó processzoroknál ez szinte követelmény, különben rendkívüli teljesítménycsökkenés következne be.
Sorrendi kiküldés: IBM Power1, PowerPC 603.
Részben sorrendi kiküldés: IBM Power2, PowerPC 604.
Sorrenden kívüli kiküldés: Pentium Pro, R10000.
Találat: 396