Az elágazás késleltetési helyének és az elõrejelzés elõretöltésének megértése az utasítások elrendezésében

Engedje meg, hogy meghatározzam:

  • Elágazás késleltetési helye: Az összeszerelők általában átrendezik az utasításokat, hogy néhány utasítást közvetlenül az elágazási utasítás után áthelyezzenek, így az áthelyezett utasítás mindig végrehajtásra kerül, függetlenül attól, hogy az elágazás vagy sem, anélkül, hogy a rendszert inkonzisztens állapotban hagyná.

  • A fiókjóslás előhívása: megjósolja, mi lesz az elágazás feltételének kimenetele, majd előhívja az utasításokat a kapott helyről, hogy azok azonnal végrehajtódjanak az elágazás utasítása után.

Most , vegye figyelembe az alábbi végrehajtási sorrendet (alább, F: Fetch utasítás, D: utasítás dekódolása, X: eXecute, M: Memória hozzáférés, W: Visszaírás):

BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W 

Általában az elágazás állapotát értékelik és hajtják végre X szakaszban. Ebben a szakaszban INSTR1 és INSTR2 már elkezdődött, és ezeket az utasításokat befolyásolhatja az elágazási késleltetés használata rések vagy elágazási előrejelzés előhívása vagy mindkettő. Nem találtam olyan szöveget, amely ezt egyértelműen megvitatta volna. Tehát megpróbáltam kitalálni az alábbiak szerint:

  • Ha mindkettőt használjuk, akkor az utasítássor a következő lenne:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Ha csak elágazási predikciót használunk, akkor az utasítássor a következő lenne:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Ha csak elágazási késleltetési réseket használunk, akkor az utasítássor a következő lenne:

    BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2 

Helyes vagyok ezzel? Vajon hogyan történik ez valójában különböző esetekben? Vagy van még néhány részlet?

Megjegyzések

  • Nem ' nem grok a " Ha csak a " elágazási szekvenciát használjuk: hogyan lehetnek benne brach-delay-slotok? Ez azt is egyértelművé tenné, ha az összeszerelő darabjának a fejlécében látszana lenni.
  • (1) " Nem ' t grok a " Ha csak az " elágazási sorrendet használjuk: hogyan lehetnek benne brach-delay-slotok? " – kijavítottam a mondatot, véletlenül hiányosan hagytam. Remélem, most van értelme. (2) Nem értettem ezt: " Továbbá egyértelművé válna az a fejlécben lévő assembler darabja, amely látszólag szerepel. " Do azt akarja mondani, hogy meg kellene határoznom az összeszerelőt, akivel dolgozom? Ha igen: Patterson " Számítógépszervezés és tervezés " könyvének pipelining fejezetét olvasom. Tehát a tiszta elmélet kezelése és az edzésproblémák megoldása.

Válasz

Igen, ez történhet, bár nem emlékszem olyan architektúrára, amely kombinálta a predikciót és a késleltetési réseket: ha van predikciója, akkor a végrehajtási lépéssel párhuzamosan futtatható (kis memóriában történő keresés), ezért nincs szükség késleltetési résekre.

Megjegyzések

  • köszönöm a megerősítést, mert az ilyen szcenáriókat Patterson számítógépes építészeti könyvének gyakorlati problémái fedik le. Ez közvetlen megoldásokat ad magyarázat nélkül. Sem a fejezet tartalma ezt vitatja meg.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük