12.07.2015 Views

Kompendium i Datorteknik

Kompendium i Datorteknik

Kompendium i Datorteknik

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!