A számítógép-architektúrában az utasítás-előletöltés egy olyan technológia , amelyet a mikroprocesszorok használnak a programvégrehajtás sebességének növelésére hogy csökkentik a processzor tétlenségének idejét a végrehajtandó utasítások hiánya miatt.
A modern mikroprocesszorok sokkal gyorsabbak, mint a memória , aminek következtében a végrehajtható program utasításai nem olvashatók elég gyorsan ahhoz, hogy biztosítsák a processzor folytonosságát [1] . A gyorsítótár hozzáadása gyorsabb hozzáférést biztosít a szükséges utasításokhoz.
A kód előzetes lehívása azt jelenti, hogy a processzor kéri a RAM -ot , hogy előzetesen olvassa el az utasításokat, mielőtt ezeket az utasításokat végre kellene hajtani. E kérések eredményeként az utasítások a memóriából betöltődnek a gyorsítótárba. Amikor utasításokat kell végrehajtani, a hozzáférés sokkal gyorsabb lesz, mivel a gyorsítótár elérésekor a késleltetés nagyságrendekkel kisebb, mint a RAM elérésekor.
Minél konzisztensebb a program, annál nagyobb a kód előzetes lehívásának hatása. A kód előzetes letöltése azonban része lehet egy összetett elágazás - előrejelzési algoritmusnak , amely megpróbálja megjósolni, hogy mely utasításokat kell végrehajtani a jövőben, és betölti azokat a memóriából. Dedikált hardverben (például GPU -ban) az előzetes letöltési algoritmus kihasználhatja az adatok térbeli koherenciáját, amely általában megfigyelhető a textúra -leképezés során . Ebben az esetben nem az utasítások vannak előre lehívva, hanem a textúraelemek ( texel ) a sokszögleképezés jelöltjei .
Az első sorozatgyártású mikroprocesszorok, amelyek kód-előhívást alkalmaztak, az Intel 8086 (6 bájt) és a Motorola 68000 (4 bájt) voltak.
Léteznek hardver, szoftver és kombinált módszerek a kód-előhívás megvalósítására [2] [3] . A módszerek osztályozásának fő kritériuma a kódelemzés megvalósításának jellege, amely meghatározza, hogy a kód mely részeit töltsék le előzetesen [4] . Például, ha a kód-előzetes letöltést fordítóoptimalizálásként valósítják meg, amely az előzetes letöltési utasításokat a megfelelő helyekre helyezi, akkor a módszer szoftveres.
A módszert 1978-ban javasolták [5] , és ahogy a neve is sugallja, ez abból áll, hogy a következő vagy több következő sort be kell cserélni az utasítás-gyorsítótárba. Ebben az esetben az aktuális utasítás-gyorsítótár sor alatt azt a gyorsítótár-sort értjük, amely az éppen végrehajtott utasítást tartalmazza. Ennek a módszernek a megvalósítása során az optimális lapozási távolság megválasztása [6] – az aktuális sor végétől az utolsó betöltött sorig terjedő távolság – a legnagyobb jelentőséggel bír . Ha a lapozási távolságot túl kicsire választjuk, akkor a kódnak nem lesz ideje betölteni az utasítás-gyorsítótárba, és a processzor kódhiány miatt várakozási állapotba kerül. Ha túl nagy távolságot választ, akkor a gyorsítótár-szennyezés negatív hatása (vagyis a túl sok hasznos adat kiszorítása a gyorsítótárból) felülmúlhatja az előzetes letöltés pozitív hatását.
A metódus hatékonyságát a kód egymást követő szakaszaiban mutatja meg, de nem kínál semmit annak a kódnak az előzetes lekérésére, amelynek végrehajtása az ugrásutasítás vagy eljáráshívás után induljon el. A módszer nyilvánvaló hiányosságai ellenére könnyen megvalósítható, minimális mennyiségű további hardvert igényel a processzorban [6] és 20-50%-kal csökkenti a kódhiány miatti blokkolások számát [2] [7] .
Adott karakterlánc előhívásaA technológiát 1992-ben javasolták [7] . Ezt a módszert, ellentétben a következő sor előzetes lekérésével, úgy tervezték, hogy biztosítsa annak a kódnak a lapozását, amelyre a programvezérlés az átállási művelet eredményeként átkerül. Ehhez hozzáadunk egy hardvertáblát, amelyben minden már végrehajtott átmeneti művelet az eredményével (az átmenet címével) bekerül. A módszer azon a feltételezésen alapul, hogy ha egyszer, bármely irányítás átadási műveletnél egy bizonyos átmeneti címet számítottak ki, akkor nagy valószínűséggel ugyanaz a cím kerül kiszámításra ugyanazon művelet megismétlésekor.
Ez a megközelítés nem képes megakadályozni a hidegindítási gyorsítótár kihagyását , mivel ahhoz, hogy a táblázatot bármilyen átmeneti művelet feldolgozásakor használni lehessen, először legalább egyszer végre kell hajtani ezt a műveletet. Ezenkívül a módszer jelentős mennyiségű további hardvert igényel a processzorban [6] .
Failed Transition Prefetch [6] Előzetes letöltés Markov-előrejelzővel [8]A Markov-prediktor segítségével előre lekérheti a kódot.
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |