MC 542 Organizao de Computadores Teoria e Prtica

  • Slides: 58
Download presentation
MC 542 Organização de Computadores Teoria e Prática 2007 Prof. Paulo Cesar Centoducatte@ic. unicamp.

MC 542 Organização de Computadores Teoria e Prática 2007 Prof. Paulo Cesar Centoducatte@ic. unicamp. br www. ic. unicamp. br/~ducatte MC 542 4. 1

MC 542 Arquitetura de Computadores Micro-Arquitetura Pipeline “DDCA” - (Capítulo 7) “COD” - (Capítulo

MC 542 Arquitetura de Computadores Micro-Arquitetura Pipeline “DDCA” - (Capítulo 7) “COD” - (Capítulo ) MC 542 4. 2

Micro-Arquitetura Pipeline Sumário • Introdução • MIPS Pepilinig • • – Execução Pepiline –

Micro-Arquitetura Pipeline Sumário • Introdução • MIPS Pepilinig • • – Execução Pepiline – – – 5 estágios MIPS Pipelined Execução de Instruções no MIPS Pipeline Data. Path Single-Cycle e Pipelining Controle do Pepiline Limites de Pipelining – Hazards » Estrutura » Dado » Controle Como Tratar os Hazards de Dados MC 542 4. 3

Pipelining - Conceito • Exemplo: Lavanderia • 4 trouxas para serem lavadas A B

Pipelining - Conceito • Exemplo: Lavanderia • 4 trouxas para serem lavadas A B C D – Lavar: 30 minutos – Secar: 40 minutos – Passar: 20 minutos MC 542 4. 4

Lavanderia Seqüencial 6 O r d e m T a r e f a

Lavanderia Seqüencial 6 O r d e m T a r e f a s 7 8 9 10 11 Horas Tempo 30 40 20 A B C D • Lavanderia seqüencial: 6 horas para lavar 4 trouxas • Se for usado pipelining, quanto tempo? MC 542 4. 5

Lavanderia Pipelined 6 O r d e m T a r e f a

Lavanderia Pipelined 6 O r d e m T a r e f a s 7 8 9 10 11 Horas Tempo 30 40 40 20 A B C D • Lavanderia Pipelined: 3. 5 horas para 4 trouxas MC 542 4. 6

Pipelining 6 T a s k O r d e r 7 8 30

Pipelining 6 T a s k O r d e r 7 8 30 40 40 40 A B C D • O Pipelining não ajuda na latência de uma tarefa, ajuda no throughput de toda a carga Time de trabalho 40 20 • O período do Pipeline é limitado pelo estágio mais lento • Múltiplas tarefas simultâneas • Speedup potencial = Número de estágios • Estágios não balanceados reduzem o speedup • O Tempo de “preenchimento” e de “esvaziamento“ reduzem o speedup 9 MC 542 4. 7

CPU Pipeline • Executam bilhões de instruções: throughput • Características desejáveis em um conjunto

CPU Pipeline • Executam bilhões de instruções: throughput • Características desejáveis em um conjunto de instruções (ISA) para pipelining? – Instruções de tamanho variável vs. Todas instruções do mesmo tamanho? – Operandos em memória em qq operação vs. operandos em memória somente para loads e stores? – Formato das instruções irregular vs. formato regular das instruções (ié. Operandos nos mesmos lugares)? MC 542 4. 8

Um RISC Típico • Formato de instruções de 32 -bit (3 formatos) • Acesso

Um RISC Típico • Formato de instruções de 32 -bit (3 formatos) • Acesso à memória somente via instruções load/store • 32 GPR de 32 -bits (R 0 contém zero) • Instruções aritméticas: 3 -address, reg-reg, registradores no mesmo lugar • Modo de endereçamento simples para load/store (base + displacement) – Sem indireção • Condições simples para o branch • Delayed branch SPARC, MIPS, HP PA-Risc, DEC Alpha, IBM Power. PC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3 MC 542 4. 9

Exemplo: MIPS (Localização dos regs) Register-Register 31 26 25 Op 21 20 Rs 1

Exemplo: MIPS (Localização dos regs) Register-Register 31 26 25 Op 21 20 Rs 1 16 15 Rs 2 11 10 6 5 Rd 0 Opx Register-Immediate 31 26 25 Op 21 20 Rs 1 16 15 Rd immediate 0 Branch 31 26 25 Op Rs 1 21 20 16 15 Rs 2 immediate 0 Jump / Call 31 26 25 Op target 0 MC 542 4. 10

Processador MIPS Pipelined • Paralelismo Temporal • Divide o processador single-cycle em 5 estágios:

Processador MIPS Pipelined • Paralelismo Temporal • Divide o processador single-cycle em 5 estágios: – – – Fetch Decode Execute Memory Writeback • Adicinar registradores de pipeline entre os estágios MC 542 4. 11

Processador MIPS Pipelined Single-Cycle 0 100 200 300 400 500 600 700 800 900

Processador MIPS Pipelined Single-Cycle 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Instr 1 Fetch Instruction Decode Read Reg Execute ALU Time (ps) Memory Write Read / Write Reg Fetch Instruction 2 Decode Read Reg Execute ALU Memory Write Read / Write Reg Pipelined Instr 1 2 3 Fetch Instruction Decode Read Reg Fetch Instruction Execute ALU Decode Read Reg Fetch Instruction Memory Read/Write Execute ALU Decode Read Reg Write Reg Memory Read/Write Execute ALU Write Reg Memory Read/Write Reg MC 542 4. 12

Processador MIPS Pipelined Jump 31: 26 5: 0 Memto. Reg Control Mem. Write Unit

Processador MIPS Pipelined Jump 31: 26 5: 0 Memto. Reg Control Mem. Write Unit Branch ALUControl 2: 0 PCSrc Op ALUSrc Funct Reg. Dst Reg. Write CLK 1 0 PC' PC 1 A RD Instruction Memory 25: 21 20: 16 A 1 A 2 A 3 WD 3 WE 3 RD 2 0 Src. B 1 Register File 20: 16 PCJump + 27: 0 Write. Reg 4: 0 PCPlus 4 Write. Data A RD Data Memory Read. Data 0 Result 1 WD 1 Sign. Imm 15: 0 ALUResult WE 0 15: 11 4 Zero Src. A RD 1 ALU 0 CLK Sign Extend <<2 + CLK PCBranch 31: 28 25: 0 <<2 MIPS single-cycle MC 542 4. 13

Processador MIPS Pipelined Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Next SEQ

Processador MIPS Pipelined Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Next SEQ PC Adder 4 Zero? RS 1 L M D MUX Data Memory ALU Imm MUX RD Reg File Inst Memory Address RS 2 Write Back MUX Next PC Memory Access Sign Extend WB Data MC 542 4. 14

Processador MIPS Pipelined • Abstração da execução Pipeline 1 2 3 4 5 6

Processador MIPS Pipelined • Abstração da execução Pipeline 1 2 3 4 5 6 7 8 9 10 Time (cycles) lw $s 2, 40($0) IM add $s 3, $t 1, $t 2 sub $s 4, $s 1, $s 5 and $s 5, $t 6 sw $s 6, 20($s 1) or $s 7, $t 3, $t 4 lw $0 RF 40 IM add DM + $t 1 RF $t 2 IM sub RF DM + $s 1 RF $s 5 IM $s 2 and RF DM - $t 5 RF $t 6 IM $s 3 sw RF DM & $s 1 RF 20 IM $s 4 or + $t 3 RF $t 4 $s 5 RF DM | $s 6 RF DM $s 7 RF MC 542 4. 15

Processador MIPS Pipelined • Data. Path Single-Cycle e Pipelining CLK PC' PC 1 A

Processador MIPS Pipelined • Data. Path Single-Cycle e Pipelining CLK PC' PC 1 A Instr RD Instruction Memory 25: 21 20: 16 A 1 A 2 WD 3 + Src. A RD 1 RD 2 A 3 Zero 0 Src. B 1 Register File 20: 16 0 15: 11 1 WE ALUResult Write. Data A Read. Data RD 0 1 Data Memory WD Write. Reg 4: 0 PCPlus 4 Sign. Imm 4 15: 0 <<2 Sign Extend + 0 CLK WE 3 ALU CLK PCBranch Result CLK CLK PC' PCF 1 A RD Instruction Memory Instr. D 25: 21 20: 16 WE 3 A 1 A 2 CLK WD 3 Register File 20: 16 0 1 Write. Data. E Rt. E Rd. E 0 ALUOut. M Write. Data. M A RD Read. Data. W 0 1 Data Memory WD Write. Reg. E 4: 0 1 + 15: 11 Src. BE WE Zero. M Src. AE RD 1 RD 2 A 3 ALUOut. W CLK 4 PCPlus 4 F Sign. Imm. E 15: 0 Sign Extend PCPlus 4 D <<2 PCBranch. M + 0 CLK ALU CLK PCPlus 4 E Result. W Fetch Decode Execute Memory Writeback MC 542 4. 16

Processador MIPS Pipelined Execute Addr. Calc Instr. Decode Reg. Fetch Next SEQ PC Adder

Processador MIPS Pipelined Execute Addr. Calc Instr. Decode Reg. Fetch Next SEQ PC Adder 4 Zero? RS 1 MUX MEM/WB Data Memory EX/MEM ALU MUX ID/EX Imm Reg File IF/ID Memory Address RS 2 Write Back MUX Next PC Memory Access WB Data Instruction Fetch Sign Extend RD RD RD MC 542 4. 17

Processador MIPS Pipelined CLK PC' PCF 1 A RD Instruction Memory Instr. D 25:

Processador MIPS Pipelined CLK PC' PCF 1 A RD Instruction Memory Instr. D 25: 21 20: 16 A 1 CLK WE 3 A 2 A 3 WD 3 RD 2 Register File Rt. E 0 + Write. Data. M Write. Reg. E 4: 0 Write. Reg. M 4: 0 RD 0 1 Data Memory WD Write. Reg. W 4: 0 <<2 Sign Extend PCPlus 4 D Write. Data. E A Read. Data. W 1 Sign. Imm. E 15: 0 ALUOut. M Src. BE 1 Rd. E 15: 11 PCPlus 4 F 0 WE Zero. M Src. AE RD 1 20: 16 4 CLK + 0 CLK ALUOut. W PCBranch. M PCPlus 4 E Result. W Fetch Decode Execute Memory Writeback MC 542 4. 18

Processador MIPS Pipelined • Controle do Pepiline CLK Reg. Write. D Control Memto. Reg.

Processador MIPS Pipelined • Controle do Pepiline CLK Reg. Write. D Control Memto. Reg. D Unit 31: 26 5: 0 0 PC' PCF 1 A RD Instruction Memory Reg. Write. E Reg. Write. M Reg. Write. W Memto. Reg. M Memto. Reg. W Mem. Write. D Mem. Write. E Mem. Write. M Branch. D Branch. E Op ALUControl. D ALUControl. E 2: 0 Funct ALUSrc. D ALUSrc. E Reg. Dst. D Reg. Dst. E ALUOut. W CLK Instr. D 25: 21 20: 16 CLK WE 3 A 1 A 2 A 3 Register File 0 Src. BE 1 15: 11 Rd. E 0 15: 0 PCPlus 4 F Sign Extend PCPlus 4 D ALUOut. M Write. Data. E Write. Data. M Write. Reg. E 4: 0 Write. Reg. M 4: 0 A RD Data Memory Read. Data. W 0 1 WD Write. Reg. W 4: 0 1 + 20: 16 Rt. E WE Zero. M Src. AE RD 1 RD 2 WD 3 4 PCSrc. M ALU CLK Memto. Reg. E Sign. Imm. E <<2 + CLK PCBranch. M PCPlus 4 E Result. W MC 542 4. 19

Limites de Pipelining • Hazards: impedem que a próxima instrução seja executada no ciclo

Limites de Pipelining • Hazards: impedem que a próxima instrução seja executada no ciclo de clock “previsto” para ela – Structural hazards: O HW não suporta uma dada combinação de instruções – Data hazards: Uma Instrução depende do resultado da instrução anterior que ainda está no pipeline – Control hazards: Causado pelo delay entre o fetching de uma instrução e a decisão sobre a mudança do fluxo de execução (branches e jumps). MC 542 4. 20

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 2 Instr 3 Instr

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 2 Instr 3 Instr 4 Ifetch DMem Reg ALU Instr 1 Reg ALU Ifetch ALU O r d e r Load ALU I n s t r. ALU Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Ifetch Reg Reg DMem Reg MC 542 4. 21

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 1 Instr 2 Stall

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 1 Instr 2 Stall Instr 3 Reg Ifetch DMem Reg ALU Ifetch Bubble Reg DMem Bubble Ifetch Reg Bubble ALU O r d e r Load ALU I n s t r. ALU Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Bubble DMem Reg MC 542 4. 22

Data Hazards • Read After Write (RAW) Instr. J lê o operando antes da

Data Hazards • Read After Write (RAW) Instr. J lê o operando antes da Instr. I escreve-lo I: add r 1, r 2, r 3 J: sub r 4, r 1, r 3 – Causada por uma “Dependência” (nomenclatura de compiladores). MC 542 4. 23

Data Hazard em R 1 Time (clock cycles) and r 6, r 1, r

Data Hazard em R 1 Time (clock cycles) and r 6, r 1, r 7 or r 8, r 1, r 9 xor r 10, r 11 Ifetch DMem Reg DMem Ifetch Reg ALU sub r 4, r 1, r 3 Reg ALU Ifetch ALU O r d e r add r 1, r 2, r 3 WB ALU I n s t r. MEM ALU IF ID/RF EX Reg Reg DMem MC 542 4. 24 Reg

Data Hazards • Write After Read (WAR) Instr. J escreve o operando antes que

Data Hazards • Write After Read (WAR) Instr. J escreve o operando antes que a Instr. I o leia I: sub r 4, r 1, r 3 J: add r 1, r 2, r 3 K: mul r 6, r 1, r 7 • Chamada “anti-dependência” (nomenclatura de compiladores). Devido ao reuso do nome “r 1”. • Não ocorre no pipeline do MIPS: – Todas instruções usam 5 estágios, e – Leituras são no estágio 2, e – Escritas são no estágio 5 MC 542 4. 25

Data Hazards • Write After Write (WAW) Instr. J escreve o operando antes que

Data Hazards • Write After Write (WAW) Instr. J escreve o operando antes que a Instr. I o escreva. I: sub r 1, r 4, r 3 J: add r 1, r 2, r 3 K: mul r 6, r 1, r 7 • Chamada “dependência de saída” (nomenclatura de compiladores). Devido ao reuso do nome “r 1”. • Não ocorre no pipeline do MIPS: – Todas Instruções são de 5 estágios, e – Escritas são sempre no 5 estágio – (WAR e WAW ocorrem em pipelines mais sofisticados) MC 542 4. 26

Como Tratar os Data Hazards • Inserir instruções nops no código • Rearranjar o

Como Tratar os Data Hazards • Inserir instruções nops no código • Rearranjar o código em tempo de compilação • Stall o processador em tempo de execução (run-time) • Forward data MC 542 4. 27

Data Hazards – Solução por SW • Compilador reconhece o data hazard e troca

Data Hazards – Solução por SW • Compilador reconhece o data hazard e troca a ordem das instruções (quando possível) • Compilador reconhece o data hazard e adiciona nops Exemplo: sub R 2, R 1, R 3 ; reg R 2 escrito por sub nop ; no operation nop and R 12, R 5 or ; resultado do sub disponível R 13, R 6, R 2 add R 14, R 2 sw 100 (R 2), R 15 MC 542 4. 28

Data Hazard Control: Stalls • Hazard ocorre quando a instr. Lê (no estágio ID)

Data Hazard Control: Stalls • Hazard ocorre quando a instr. Lê (no estágio ID) um reg que será escrito, por uma instr. anterior (no estágio EX, MEM, WB) • Solução: Detectar o hazard e parar a instrução no pipeline até o hazard ser resolvido • Detectar o hazard pela comparação do campo read no IF/ID pipeline register com o campo write dos outros pipeline registers (ID/EX, EX/MEM, MEM/WB) • Adicionar bubble no pipeline – Preservar o PC e o IF/ID pipeline register MC 542 4. 29

Processador MIPS Pipelined • Data Forwarding MC 542 4. 30

Processador MIPS Pipelined • Data Forwarding MC 542 4. 30

Processador MIPS Pipelined • Data Forwarding MC 542 4. 31

Processador MIPS Pipelined • Data Forwarding MC 542 4. 31

Processador MIPS Pipelined • HW para forwarding Next. PC mux MEM/WR EX/MEM ALU mux

Processador MIPS Pipelined • HW para forwarding Next. PC mux MEM/WR EX/MEM ALU mux ID/EX Registers mux Immediate Data Memory MC 542 4. 32

Processador MIPS Pipelined • HW para forwarding MC 542 4. 33

Processador MIPS Pipelined • HW para forwarding MC 542 4. 33

Processador MIPS Pipelined • Forward para o estágio Execute a partir de: – Memory

Processador MIPS Pipelined • Forward para o estágio Execute a partir de: – Memory stage ou – Writeback stage • Lógica de Forwarding para Forward. AE: if ((rs. E != 0) AND (rs. E == Write. Reg. M) AND Reg. Write. M) then Forward. AE = 10 else if ((rs. E != 0) AND (rs. E == Write. Reg. W) AND Reg. Write. W) then Forward. AE = 01 else Forward. AE = 00 • Lógica de Forwarding para Forward. BE similar, trocando rs. E com rt. E, e Forward. AE com Forward. BE MC 542 4. 34

Processador MIPS Pipelined • Data Hazard com Forwarding and r 6, r 1, r

Processador MIPS Pipelined • Data Hazard com Forwarding and r 6, r 1, r 7 or r 8, r 1, r 9 DMem Ifetch Reg DMem Reg Ifetch Reg Reg DMem ALU O r d e r sub r 4, r 1, r 6 Reg ALU lw r 1, 0(r 2) Ifetch ALU I n s t r. ALU Time (clock cycles) Reg DMem MC 542 4. 35

Processador MIPS Pipelined • Data Hazard com Forwarding and r 6, r 1, r

Processador MIPS Pipelined • Data Hazard com Forwarding and r 6, r 1, r 7 or r 8, r 1, r 9 Reg DMem Ifetch Reg Bubble Ifetch Bubble Reg Bubble Ifetch Reg DMem ALU sub r 4, r 1, r 6 Ifetch ALU O r d e r lw r 1, 0(r 2) ALU I n s t r. ALU Time (clock cycles) Reg DMem MC 542 4. 36

Processador MIPS Pipelined • Hardware para Stall MC 542 4. 37

Processador MIPS Pipelined • Hardware para Stall MC 542 4. 37

Processador MIPS Pipelined • Lógica para Stall: lwstall = ((rs. D == rt. E)

Processador MIPS Pipelined • Lógica para Stall: lwstall = ((rs. D == rt. E) OR (rt. D == rt. E)) AND Memto. Reg. E Stall. F = Stall. D = Flush. E = lwstall MC 542 4. 38

Processador MIPS Pipelined • Load Hazards - Software Scheduling Código para (a, b, a

Processador MIPS Pipelined • Load Hazards - Software Scheduling Código para (a, b, a = b + c; d = e – f; Slow_code: LW LW ADD SW LW LW SUB SW c, d , e, f na memória). Rb, b Rc, c Ra, Rb, Rc a, Ra Re, e Rf, f Rd, Re, Rf d, Rd Fast_code: LW LW LW ADD LW SW SUB SW Rb, b Rc, c Re, e Ra, Rb, Rc Rf, f a, Ra Rd, Re, Rf d, Rd MC 542 4. 39

Processador MIPS Pipelined Control Hazard • beq: o branch não é determinado até o

Processador MIPS Pipelined Control Hazard • beq: o branch não é determinado até o 4 estágio do pipeline • Definições: – Branch delay slot(s): Instruções buscadas antes do branch ser determinado – Misprediction penalty: número de instruções flushed quando o branch é taken • Várias estratégias são usadas para lidar com control hazards: – Stall o pipeline – Rearranjar o código e por instruções “úteis” no(s) branch delay slot(s) – Reduzir o misprediction penalty (determinar o branch mais cedo no pipeline) – Flush pipeline quando o branch é taken MC 542 4. 40

r 6, r 1, r 7 22: add r 8, r 1, r 9

r 6, r 1, r 7 22: add r 8, r 1, r 9 36: xor r 10, r 11 Reg DMem Ifetch Reg ALU 18: or Ifetch DMem ALU 14: and r 2, r 3, r 5 Reg ALU Ifetch ALU 10: beq r 1, r 3, 36 ALU Processador MIPS Pipelined Reg Reg DMem MC 542 4. 41 Reg

Processador MIPS Pipelined Execute Addr. Calc Instr. Decode Reg. Fetch Next SEQ PC Adder

Processador MIPS Pipelined Execute Addr. Calc Instr. Decode Reg. Fetch Next SEQ PC Adder 4 Zero? RS 1 RD RD RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Imm Reg File IF/ID Memory Address RS 2 Write Back MUX Next PC Memory Access WB Data Instruction Fetch MC 542 4. 42

Processador MIPS Pipelined Exemplo: Impacto do Branch Stall no Desempenho • Se CPI =

Processador MIPS Pipelined Exemplo: Impacto do Branch Stall no Desempenho • Se CPI = 1, 30% branches, 3 -cycle stall CPI = 1. 9! • Solução para minimizar os efeitos: – Determinar branch taken ou não o mais cedo, e – Calcular o endereço alvo do branch logo • MIPS branch: testa se regs = ou • Solução MIPS: – Zero test no estágio ID/RF – Adder para calcular o novo PC no estágio ID/RF – 1 clock cycle penalty por branch versus 3 MC 542 4. 43

Processador MIPS Pipelined Instruction Fetch Memory Access Write Back Adder MUX Next SEQ PC

Processador MIPS Pipelined Instruction Fetch Memory Access Write Back Adder MUX Next SEQ PC Next PC = RS 1 RD RD RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Imm Reg File IF/ID Memory Address RS 2 WB Data 4 Execute Addr. Calc Instr. Decode Reg. Fetch MC 542 4. 44

Processador MIPS Pipelined MC 542 4. 45

Processador MIPS Pipelined MC 542 4. 45

Processador MIPS Pipelined MC 542 4. 46

Processador MIPS Pipelined MC 542 4. 46

Processador MIPS Pipelined Alternativas para Branch Hazard #1: Stall até a decisão se o

Processador MIPS Pipelined Alternativas para Branch Hazard #1: Stall até a decisão se o branch será tomado ou não #2: Predict Branch Not Taken – – – Executar a próxima instrução “Invalidar” as instruções no pipeline se branch é tamado Vantagem: retarda a atualização do pipeline 47% dos branches no MIPS não são tomados, em média PC+4 já está computado, use-o para pegar a próxima instrução #3: Predict Branch Taken – 53% dos branches do MIPS são tomados, em média – “branch target address” no MIPS ainda não foi calculado » 1 cycle branch penalty » Em outras máquinas esse penalty pode não ocorrer MC 542 4. 47

Processador MIPS Pipelined Alternativas para Branch Hazard #4: Delayed Branch – Define-se que o

Processador MIPS Pipelined Alternativas para Branch Hazard #4: Delayed Branch – Define-se que o branch será tamado APÓS a uma dada quantidade de instruções branch instruction sequential successor 1 sequential successor 2. . . . sequential successorn branch target if taken Branch delay de tamanho n (n delay slots) – 1 slot delay permite a decisão e o calculo do “branch target address” no pipeline de 5 estágios – MIPS usa está solução MC 542 4. 48

Processador MIPS Pipelined Delayed Branch • Qual instrução usar para preencher o branch delay

Processador MIPS Pipelined Delayed Branch • Qual instrução usar para preencher o branch delay slot? – Antes do branch – Do target address ( avaliada somente se branch taken) – Após ao branch (somente avaliada se branch not taken) MC 542 4. 49

Processador MIPS Pipelined MC 542 4. 50

Processador MIPS Pipelined MC 542 4. 50

Processador MIPS Pipelined • Compilador: single branch delay slot: – Preenche +/- 60% dos

Processador MIPS Pipelined • Compilador: single branch delay slot: – Preenche +/- 60% dos branch delay slots – +/- 80% das instruções executadas no branch delay slots são utéis à computação – +/- 50% (60% x 80%) dos slots preenchidos são utéis MC 542 4. 51

Processador MIPS Pipelined Tratando data e control hazards MC 542 4. 52

Processador MIPS Pipelined Tratando data e control hazards MC 542 4. 52

Processador MIPS Pipelined Control Forwarding e Stalling Hardware • Lógica de Forwarding: Forward. AD

Processador MIPS Pipelined Control Forwarding e Stalling Hardware • Lógica de Forwarding: Forward. AD = (rs. D !=0) AND (rs. D == Write. Reg. M) AND Reg. Write. M Forward. BD = (rt. D !=0) AND (rt. D == Write. Reg. M) AND Reg. Write. M • Lógica de Stalling: branchstall = Branch. D AND Reg. Write. E AND (Write. Reg. E == rs. D OR Write. Reg. E == rt. D) OR Branch. D AND Memto. Reg. M AND (Write. Reg. M == rs. D OR Write. Reg. M == rt. D) Stall. F = Stall. D = Flush. E = lwstall OR branchstall MC 542 4. 53

Processador MIPS Pipelined Desempenho do MIPS Pipelined Ideal: CPI = 1, IPC = 1

Processador MIPS Pipelined Desempenho do MIPS Pipelined Ideal: CPI = 1, IPC = 1 Porém devido aos stall (causados por loads e branches) SPECINT 2000 benchmark: 25% loads 10% stores 11% branches 2% jumps 52% R-type Suponha que: 40% dos loads são usados pela próxima instrução 25% dos branches são mispredicted Qual o médio CPI? Average CPI = (0. 25)(1. 4) + (0. 1)(1) + (0. 11)(1. 25) + (0. 02)(2) + (0. 52)(1) = 1. 15 MC 542 4. 54

Processador MIPS Pipelined Desempenho do MIPS Pipelined • Pipelined processor critical path: Tc =

Processador MIPS Pipelined Desempenho do MIPS Pipelined • Pipelined processor critical path: Tc = max { tpcq + tmem + tsetup 2(t. RFread + tmux + teq + t. AND + tmux + tsetup ) tpcq + tmux + t. ALU + tsetup tpcq + tmemwrite + tsetup 2(tpcq + tmux + t. RFwrite) } MC 542 4. 55

Processador MIPS Pipelined Exemplo de Desempenho Element Parameter Delay (ps) Register clock-to-Q tpcq_PC 30

Processador MIPS Pipelined Exemplo de Desempenho Element Parameter Delay (ps) Register clock-to-Q tpcq_PC 30 Register setup tsetup 20 Multiplexer tmux 25 ALU t. ALU 200 Memory read tmem 250 Register file read t. RFread 150 Register file setup t. RFsetup 20 Equality comparator teq 40 AND gate t. AND 15 Memory write Tmemwrite 220 Register file write t. RFwrite 100 ps Tc = 2(t. RFread + tmux + teq + t. AND + tmux + tsetup ) = 2[150 + 25 + 40 + 15 + 20] ps = 550 ps MC 542 4. 56

Processador MIPS Pipelined Exemplo de Desempenho • Para um programa que executa 100 bilhões

Processador MIPS Pipelined Exemplo de Desempenho • Para um programa que executa 100 bilhões de instruções em um processaddor MIPs pipelined, • CPI = 1. 15 • Tc = 550 ps Execution Time = (# instructions) × CPI × Tc = (100 × 109)(1. 15)(550 × 10 -12) = 63 seconds MC 542 4. 57

Processador MIPS Pipelined Exemplo de Desempenho Processor Single-cycle Multicycle Pipelined Execution Time (seconds) 95

Processador MIPS Pipelined Exemplo de Desempenho Processor Single-cycle Multicycle Pipelined Execution Time (seconds) 95 Speedup (single-cycle is baseline) 1 133 0. 71 63 1. 51 MC 542 4. 58