Presentation laddar. Vänta.

Presentation laddar. Vänta.

Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —

Liknande presentationer


En presentation över ämnet: "Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —"— Presentationens avskrift:

1 Pipelining Föreläsning 4

2 T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c — Klockcykeltid T exe = I × CPI × T c Exekveringstidsformeln

3 Att bygga en dataväg Utgå från instruktionscykeln: 1. Hämta instruktionen från minnet och uppdatera programräknaren 2. Exekvera instruktionen Observera Steg 1 är gemensamt för alla instruktioner Steg 2 beror på typ av instruktion

4 PC + 4 Instruction Address Instruction Memory Enheter för instruktionsuthämtning

5 Read R1 Read R2 Write Data Write Reg Data R2 Data R1 Registers Write ALU ALU operation Enheter för instruktionsexekvering

6 Instruction Read R1 Read R2 Write Data Write Reg Data R2 Data R1 Registers Write ALU ALU operation Dataväg för ALU-instruktioner med tre operander

7 Sign extend Address Write Data Data Memory Read Data Instruction Read R1 Read R2 Write Data Write Reg Data R2 Data R1 Registers Write ALU ALU operation WriteRead Dataväg för LOAD, STORE

8 + Shift left 2 Instruction Read R1 Read R2 Write Data Write Reg Data R2 Data R1 Registers Write ALU ALU operation PC+4 from instruction datapath Branch target To branch control logic Sign extend Dataväg för hoppinstruktioner

9 PC MUX + 4 Instruction Address Instruction Memory Sign extend Read R1 Read R2 Write Data Write Reg Data R2 Data R1 Registers ALU MUX + Shift left 2 Address Write Data Data Memory Read Data MUX Förenklad MIPS-modell

10 Uppdelning av instruktioner i klockcykler Balansera arbetet som utförs i varje klockcykel MIPS-instruktioner kan delas upp i fem steg: 1.Instruktionsuthämtning (IF) 2.Registerläsning och instruktionsavkodning (spekulativ hoppadressberäkning)(ID) 3.ALU-operation (exekvering, operandadressberäkning) (EX) 4.Minnesreferens (MEM) 5.Registerskrivning (WB)

11 Pipelinetekniken Exekvera instruktioner på löpande band Innan en instruktion är färdigexekverad kan nästa instruktion påbörja exekvering Jämför: –Löpande bandstillverkning av bilar –Tvättstugeanvändning

12 Uppdelning av MIPS-instruktioner i steg Balansera arbetet i varje steg Minne, register och ALU tar längst tid Låt varje steg utföras i en klockcykel Klockcykeltiden bestäms av det steg som tar längst tid MIPS instruktioner kan delas upp i fem steg: –IFInstruktionsuthämtning –IDInstruktionsavkodning/Registerläsning –EX ALU-operation –MEMMinneaccess –WBRegisterskrivning

13 beq $1,$0,L1 sub $4,$6,$2 add $5,$6,$7 lw $3,8($4) add $1,$0,$2 PC MUX + 4 Instruction Address Instruction Sign extend Read R1 Read R2 Write Data Write Reg Data R2 Data R1 ALU MUX + Shift left 2 Registers Address Write Data Data Memory Read Data MUX Memory 5 instruktioner samtidigt

14 Instruktionsklassernas användning av maskinvara i pipeline ALU- och store-instruktioner använder 4 steg branch-instruktioner använder endast 3 steg Enbart load-instruktionen använder alla 5 stegen

15 Konflikter i pipelinen — Hazards Data hazards — Databeroende i instruktionsströmmen Branch hazards — Konflikt i instruktionsuthämtningen för instruktioner som ändrar programräknaren (PC) Strukturella konflikter — När en funktionell enhet används i två eller fler steg samtidigt

16 Exempel på datakonflikt Resultatet av sub-instruktionen behövs innan det är tillbakaskrivet i registerbanken sub $2,$1,$3 and $12,$2,$5 sw $15,100($2) or $13,$6,$2 add $14,$2,$2 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM

17 Lösning av datakonflikter Inför återkoppling mellan stegen i pipelinen (bypassing eller forwarding) sub $2,$1,$3 and $12,$2,$5 sw $15,100($2) or $13,$6,$2 add $14,$2,$2 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM

18 Minnesoperationen är inte klar när operanden behövs lw $2,100($1) and $12,$2,$5 sw $15,100($2) or $13,$6,$2 add $14,$2,$2 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM Datakonflikt vid loadinstruktioner

19 lw $2,100($1) and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM Lösning av datakonflikt vid loadinstruktioner nop Använd nop-instruktionen. Forwarding behövs också!

20 Med denna konstruktion hinner tre extra instruktioner exekveras innan hoppet verkligen sker 40 beq $1,$3,7 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM Hoppkonflikter (branch hazards) 44 and $12,$2,$5 48 or $13,$6,$2 52 add $14,$2,$2 72 lw $4,50($7)

21 + Lösning av hoppkonflikter 1 En enkel jämförare sätts in direkt på registerutgångarna. Den gör lite av vad ALU:n förmår. PC + 4 Instruction Address Instruction Sign extend Read R1 Read R2 Write Data Write Reg Data R2 Data R1 ALU MUX Shift left 2 Registers Address Write Data Data Memory Read Data MUX Memory =? MUX

22 Med denna konstruktion räcker det med en nop. Detta förklarar varför alla branch-instruktioner bara kan göra enkla tester: ==, !=, 0, >=0. 40 beq $1,$3,7 Reg IMDM Reg IMDM Reg IMDM Lösning av hoppkonflikter 2 44 nop 72 lw $4,50($7)

23 Reg IMDM Reg IMDM Reg IMDM Reg IMDM Reg IMDM


Ladda ner ppt "Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —"

Liknande presentationer


Google-annonser