A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MC542 4.1 2007 Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.

Apresentações semelhantes


Apresentação em tema: "MC542 4.1 2007 Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática."— Transcrição da apresentação:

1 MC Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática

2 MC MC542 Arquitetura de Computadores Micro-Arquitetura Pipeline DDCA - (Capítulo 7) COD - (Capítulo )

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

4 MC Pipelining - Conceito Exemplo: Lavanderia 4 trouxas para serem lavadas –Lavar: 30 minutos –Secar: 40 minutos –Passar: 20 minutos ABCD

5 MC Lavanderia Seqüencial Lavanderia seqüencial: 6 horas para lavar 4 trouxas Se for usado pipelining, quanto tempo? ABCD Horas OrdemTarefasOrdemTarefas Tempo

6 MC Lavanderia Pipelined Lavanderia Pipelined: 3.5 horas para 4 trouxas ABCD Horas Tempo OrdemTarefasOrdemTarefas

7 MC Pipelining O Pipelining não ajuda na latência de uma tarefa, ajuda no throughput de toda a carga de trabalho 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 ABCD TaskOrderTaskOrder Time

8 MC 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)?

9 MC 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 (R0 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 PowerPC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3

10 MC Exemplo: MIPS (Localização dos regs) Op Rs1Rd immediate Op Op Rs1Rs2 target RdOpx Register-Register Register-Immediate Op Rs1Rs2 immediate Branch Jump / Call

11 MC 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

12 MC Processador MIPS Pipelined

13 MC Processador MIPS Pipelined SignImm CLK ARD Instruction Memory + 4 A1 A3 WD3 RD2 RD1 WE3 A2 CLK Sign Extend Register File ARD Data Memory WD WE 0 1 PC 0 1 PC'Instr 25:21 20:16 15:0 5:0 SrcB 20:16 15:11 <<2 + ALUResultReadData WriteData SrcA PCPlus4 PCBranch WriteReg 4:0 Result 31:26 RegDst Branch MemWrite MemtoReg ALUSrc RegWrite Op Funct Control Unit Zero PCSrc CLK ALUControl 2:0 ALU :0 <<2 27:031:28 PCJump Jump MIPS single-cycle

14 MC Processador MIPS Pipelined Memory Access Write Back Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc LMDLMD ALU MUX Memory Reg File MUX Data Memory MUX Sign Extend 4 Adder Zero? Next SEQ PC Address Next PC WB Data Inst RD RS1 RS2 Imm

15 MC Processador MIPS Pipelined Abstração da execução Pipeline Time (cycles) lw $s2, 40($0) RF 40 $0 RF $s2 + DM RF $t2 $t1 RF $s3 + DM RF $s5 $s1 RF $s4 - DM RF $t6 $t5 RF $s5 & DM RF 20 $s1 RF $s6 + DM RF $t4 $t3 RF $s7 | DM add $s3, $t1, $t2 sub $s4, $s1, $s5 and $s5, $t5, $t6 sw $s6, 20($s1) or $s7, $t3, $t add IM lw sub and sw or

16 MC Processador MIPS Pipelined DataPath Single-Cycle e Pipelining

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

18 MC Processador MIPS Pipelined SignImmE CLK ARD Instruction Memory + 4 A1 A3 WD3 RD2 RD1 WE3 A2 CLK Sign Extend Register File ARD Data Memory WD WE 0 1 PCF 0 1 PC'InstrD 25:21 20:16 15:0 SrcBE 20:16 15:11 RtE RdE <<2 + ALUOutM ALUOutW ReadDataW WriteDataE WriteDataM SrcAE PCPlus4D PCBranchM WriteRegM 4:0 ResultW PCPlus4EPCPlus4F ZeroM CLK WriteRegW 4:0 ALU WriteRegE 4:0 CLK FetchDecodeExecuteMemoryWriteback

19 MC Processador MIPS Pipelined Controle do Pepiline SignImmE CLK ARD Instruction Memory + 4 A1 A3 WD3 RD2 RD1 WE3 A2 CLK Sign Extend Register File ARD Data Memory WD WE 0 1 PCF 0 1 PC'InstrD 25:21 20:16 15:0 5:0 SrcBE 20:16 15:11 RtE RdE <<2 + ALUOutM ALUOutW ReadDataW WriteDataE WriteDataM SrcAE PCPlus4D PCBranchM WriteRegM 4:0 ResultW PCPlus4EPCPlus4F 31:26 RegDstD BranchD MemWriteD MemtoRegD ALUControlD ALUSrcD RegWriteD Op Funct Control Unit ZeroM PCSrcM CLK WriteRegW 4:0 ALUControlE 2:0 ALU RegWriteERegWriteMRegWriteW MemtoRegEMemtoRegMMemtoRegW MemWriteEMemWriteM BranchEBranchM RegDstE ALUSrcE WriteRegE 4:0

20 MC 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).

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

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

23 MC Read After Write (RAW) Instr J lê o operando antes da Instr I escreve-lo –Causada por uma Dependência (nomenclatura de compiladores). Data Hazards I: add r1,r2,r3 J: sub r4,r1,r3

24 MC I n s t r. O r d e r add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg Data Hazard em R1 Time (clock cycles) IFID/RF EX MEM WB

25 MC Write After Read (WAR) Instr J escreve o operando antes que a Instr I o leia Chamada anti-dependência (nomenclatura de compiladores). Devido ao reuso do nome r1. 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 I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 Data Hazards

26 MC Data Hazards Write After Write (WAW) Instr J escreve o operando antes que a Instr I o escreva. Chamada dependência de saída (nomenclatura de compiladores). Devido ao reuso do nome r1. 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) I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7

27 MC 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

28 MC 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: subR2, R1, R3; reg R2 escrito por sub nop; no operation nop andR12, R2, R5; resultado do sub disponível orR13, R6, R2 addR14, R2, R2 sw100 (R2), R15

29 MC 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

30 MC Processador MIPS Pipelined Data Forwarding

31 MC Processador MIPS Pipelined Data Forwarding

32 MC Processador MIPS Pipelined HW para forwarding MEM/WR ID/EX EX/MEM Data Memory ALU mux Registers NextPC Immediate mux

33 MC Processador MIPS Pipelined HW para forwarding

34 MC Processador MIPS Pipelined Forward para o estágio Execute a partir de: –Memory stage ou –Writeback stage Lógica de Forwarding para ForwardAE: if ((rsE != 0) AND (rsE == WriteRegM) AND RegWriteM) then ForwardAE = 10 else if ((rsE != 0) AND (rsE == WriteRegW) AND RegWriteW) then ForwardAE = 01 else ForwardAE = 00 Lógica de Forwarding para ForwardBE similar, trocando rsE com rtE, e ForwardAE com ForwardBE

35 MC Processador MIPS Pipelined Data Hazard com Forwarding Time (clock cycles) I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 or r8,r1,r9 Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg

36 MC Processador MIPS Pipelined Data Hazard com Forwarding Time (clock cycles) or r8,r1,r9 I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 Reg ALU DMemIfetch Reg Ifetch ALU DMem Reg Bubble Ifetch ALU DMem Reg Bubble Reg Ifetch ALU DMem Bubble Reg

37 MC Processador MIPS Pipelined Hardware para Stall

38 MC Processador MIPS Pipelined Lógica para Stall: lwstall = ((rsD == rtE) OR (rtD == rtE)) AND MemtoRegE StallF = StallD = FlushE = lwstall

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

40 MC 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

41 MC Processador MIPS Pipelined 10: beq r1,r3,36 14: and r2,r3,r5 18: or r6,r1,r7 22: add r8,r1,r9 36: xor r10,r1,r11 Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg ALU DMemIfetch Reg

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

43 MC 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

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

45 MC Processador MIPS Pipelined

46 MC Processador MIPS Pipelined

47 MC 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

48 MC 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 sequential successor n branch target if taken –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 Branch delay de tamanho n (n delay slots)

49 MC 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)

50 MC Processador MIPS Pipelined

51 MC 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

52 MC Processador MIPS Pipelined Tratando data e control hazards

53 MC Processador MIPS Pipelined Control Forwarding e Stalling Hardware Lógica de Forwarding: ForwardAD = (rsD !=0) AND (rsD == WriteRegM) AND RegWriteM ForwardBD = (rtD !=0) AND (rtD == WriteRegM) AND RegWriteM Lógica de Stalling: branchstall = BranchD AND RegWriteE AND (WriteRegE == rsD OR WriteRegE == rtD) OR BranchD AND MemtoRegM AND (WriteRegM == rsD OR WriteRegM == rtD) StallF = StallD = FlushE = lwstall OR branchstall

54 MC Processador MIPS Pipelined Desempenho do MIPS Pipelined Ideal: CPI = 1, IPC = 1 Porém devido aos stall (causados por loads e branches) SPECINT2000 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 CPI médio? Average CPI = (0.25)(1.4) + (0.1)(1) + (0.11)(1.25) + (0.02)(2) + (0.52)(1) = 1.15

55 MC Processador MIPS Pipelined Desempenho do MIPS Pipelined Pipelined processor critical path: T c = max { t pcq + t mem + t setup 2(t RFread + t mux + t eq + t AND + t mux + t setup ) t pcq + t mux + t mux + t ALU + t setup t pcq + t memwrite + t setup 2(t pcq + t mux + t RFwrite ) }

56 MC Processador MIPS Pipelined Exemplo de Desempenho ElementParameterDelay (ps) Register clock-to-Qt pcq_PC 30 Register setupt setup 20 Multiplexert mux 25 ALUt ALU 200 Memory readt mem 250 Register file readt RFread 150 Register file setupt RFsetup 20 Equality comparatort eq 40 AND gatet AND 15 Memory writeT memwrite 220 Register file writet RFwrite 100 ps T c = 2(t RFread + t mux + t eq + t AND + t mux + t setup ) = 2[ ] ps = 550 ps

57 MC 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 T c = 550 ps Execution Time = (# instructions) × CPI × T c = (100 × 10 9 )(1.15)(550 × ) = 63 seconds

58 MC Processador MIPS Pipelined Exemplo de Desempenho Processor Execution Time (seconds) Speedup (single-cycle is baseline) Single-cycle951 Multicycle Pipelined631.51


Carregar ppt "MC542 4.1 2007 Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática."

Apresentações semelhantes


Anúncios Google