Inzicht in vertragingsslot voor vertakkingen en prefetch voor vertakkingen in instructie-pipelining

Laat me definiëren:

  • Vertragingsslot voor vertakking: De volgorde van de assembleurs is gebruikelijk om instructies direct na de aftakinstructie te verplaatsen, zodat de verplaatste instructie altijd wordt uitgevoerd, wordt gebruikt of niet, zonder het systeem in een inconsistente staat te laten.

  • Branch voorspelling prefetch: voorspellen wat de uitkomst zal zijn van de vertakkingsconditie en vervolgens instructies vooraf ophalen van de resulterende locatie, zodat ze onmiddellijk na de vertakkingsinstructie zullen worden uitgevoerd.

Nu , laten we de onderstaande uitvoeringsvolgorde eens bekijken (hieronder, F: instructie ophalen, D: instructie decoderen, X: eXecute, M: geheugentoegang, W: terugschrijven):

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

Gewoonlijk wordt de vertakkingsvoorwaarde geëvalueerd en uitgevoerd in X-fase. In deze fase zijn INSTR1 en INSTR2 al gestart en dit zijn de instructies die kunnen worden beïnvloed door onze keuze om vertakkingsvertraging te gebruiken slots of branch voorspelling prefetch of beide. Ik heb geen tekst gevonden om dit duidelijk te bespreken. DUS probeerde ik het als volgt te raden:

  • Als we beide gebruiken, zou de instructievolgorde zijn:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Als we alleen vertakkingsvoorspelling gebruiken, zou de instructiereeks zijn:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Als we alleen vertragingsslots voor vertakkingen gebruiken, zou de instructiereeks zijn:

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

Klopt dit? Is het hoe dit eigenlijk gebeurt voor verschillende gevallen? Of zijn er nog meer details?

Reacties

  • Ik ' niet de " Als we alleen branch gebruiken " sequentie: hoe kan het brach-delay-slots hebben? Ook zou het verduidelijken van het stukje assembler dat je in je header lijkt te hebben.
  • (1) " Ik don ' t grok de " Wanneer we alleen branch gebruiken " sequentie: hoe kan het brach-delay-slots hebben? " – ik heb de zin gerepareerd, ik heb hem per ongeluk onvolledig gelaten. Ik hoop dat het nu logisch is. (2) Ik heb dit niet begrepen: " Ook zou het tonen van het stukje assembler dat je in je header lijkt te hebben verduidelijkt zijn. " Do je bedoelt te zeggen dat ik de assembler moet specificeren waarmee ik werk? Zo ja: ik lees het hoofdstuk over pipelining uit het boek " Computerorganisatie en -ontwerp " door Patterson. Dus omgaan met pure theorie en oefeningsproblemen oplossen.

Antwoord

Ja, dat zou kunnen gebeuren, hoewel ik me geen enkele architectuur kan herinneren die voorspellings- en vertragingssleuven combineert: als je voorspelling hebt, kan deze worden uitgevoerd (opzoeken in een klein geheugen) parallel met de uitvoeringsstap, dus er zijn geen vertragingssleuven nodig.

Opmerkingen

  • bedankt om te bevestigen, want dergelijke scenarios worden behandeld in de oefeningsproblemen van het Computer Architecture-boek van Patterson. Het geeft directe oplossingen zonder enige uitleg te geven. Noch het hoofdstuk inhoud bespreekt dit.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *