Pochopení předběžného načtení slotu prodlevy větve a předpovědi větve v pipelinování instrukcí

Dovolte mi definovat:

  • Slot pro zpoždění větve: Typicky asemblery přeuspořádají pokyny tak, aby přesunuly některé instrukce bezprostředně po instrukci větve, takže přesunutá instrukce bude provedena vždy, bez ohledu na to, zda větev je přijato nebo ne, aniž by byl systém ponechán v nekonzistentním stavu.

  • Předběžné načtení predikce větve: předpovídání, jaký bude výsledek stavu větvení, a poté předběžné načtení pokynů z výsledného umístění, aby byly okamžitě provedeny po pokynu větvení.

Nyní , pojďme zvážit následující sekvenci provádění (níže, F: instrukce Fetch, D: instrukce Decode, X: eXecute, M: Přístup do paměti, W: Zpětný zápis):

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

Obvykle se vyhodnotí a provede podmínka větve ve fázi X. V této fázi jsou INSTR1 a INSTR2 již spuštěny a jedná se o pokyny, které mohou být ovlivněny volbou, zda použít zpoždění větve předběžné načítání slotů nebo větve nebo obojí. Nenašel jsem žádný text, který by to jasně rozebíral. Takže jsem se to pokusil uhádnout níže:

  • Když použijeme obojí, pak by instrukční sekvence byla:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Když použijeme pouze predikci větve, pak by sekvence instrukcí byla:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Když používáme pouze sloty pro zpoždění větví, pak by pořadí instrukcí bylo:

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

Mám s tím pravdu? Je to tak, jak se to vlastně stalo v různých případech? Nebo jsou nějaké další podrobnosti?

Komentáře

  • Nechci ' nezkoumat " Když použijeme pouze větev " sekvence: jak to může mít brach-delay-sloty? Také by bylo vyjasnění ukázat, jaký kus assembleru máte v hlavičce.
  • (1) " Nemám ' Říkáme " Když použijeme pouze větev " sekvence: jak to může mít brach-delay-sloty? " – opravil jsem větu, omylem jsem ji nechal neúplnou. Doufám, že to teď dává smysl. (2) Nedostali jste toto: " Také by bylo vyjasnění ukázat část assembleru, kterou máte v záhlaví. " Provést chcete říct, že bych měl specifikovat assembler, se kterým pracuji? Pokud ano: Čtu kapitolu pipeliningu z knihy " Computer Organisation and Design " od Pattersona. Takže řešení čisté teorie a řešení problémů s cvičením.

Odpověď

Ano, mohlo by se to stát, i když si nepamatuji žádnou architekturu, která kombinovala sloty pro predikci a zpoždění: pokud máte predikci, může běžet (vyhledávání v malé paměti) paralelně s krokem provádění, takže by nebyly potřeba žádné sloty pro zpoždění.

Komentáře

  • díky potvrdit, protože tyto scénáře jsou obsaženy v cvičebních problémech knihy Computer Architecture od Pattersona. Poskytuje přímá řešení bez bližšího vysvětlení. Ani kapitola obsah o tom diskutuje.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *