Kompendium i Datorteknik
Kompendium i Datorteknik
Kompendium i Datorteknik
- No tags were found...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
30 KAPITEL 5. PIPELININGInstruktion 1HämtaLäsUtförSparaInstruktion 2HämtaLäsUtförSpara(a) Datakonflikt löst med stallInstruktion 1Hämta Läs Utför SparaDataframmatningInstruktion 2Hämta Läs Utför Spara(b) Datakonflikt löst med frammatningFigur 5.6: Strukturell konflikt med STORE/LOADflyttar hoppinstruktionen bakåt i programmet så att ett antal instruktioner efter hoppinstruktionenockså utförs innan hoppet görs.Exempel: I orginalprogrammet nedan körs först instruktionerna I0-I3 följt avhoppinstruktionen. Beroende på villkoret för hoppet ska antingen I5 eller Ix utförassedan. Här måste hela hoppinstruktionen utföras innan nästa instruktion (d.v.s I5 ellerIx) kan hämtas. Om fördröjt hopp används så kan flödet fortsätta ohejdat då processornhar flera mellanliggande instruktioner för att beräkna hoppadressen. Dock kan detbli struligt om man vill nyttja resultatet från I3 för att bestämma villkoret.OrginalprogramI0: ADDI1: ASRI2: SUBI3: ADDI4: BREQ IxI5: ADD...Ix: SWAPFördröjt hoppI0: ADDI4: BREQ IxI1: ASRI2: SUBI3: ADDI5: ADD...Ix: SWAPDenna metod illustreras i figur 5.7. I figur 5.7(a) försöker processorn att utföra etthopp som fjärde instruktion. I och med att det tar några klockcykler att räkna framnästa instruktions adress så kommer processorn att bli tvungen att stalla (i tre klockcykler)för att lösa konflikten. Om processorn i stället nyttjar ett fördröjt hopp på treinstruktioner så kommer de tre instruktionerna närmast efter hoppinstruktionen att ut-