Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Organização de Computadores I DCC006 Prof. Omar Paranaiba Vilela Neto Aula 11 – Pipelining 2 Pipelining: É Natural! Lavanderia 4 pessoas A, B, C e D possuem 4 sacolas de roupa para lavar, secar e dobrar Lavar leva 30 minutos Secar leva 40 minutos Dobrar leva 20 minutos A B C D 3 Lavanderia sequencial leva 6 horas para terminar Se eles conhecessem computação, quanto tempo levaria? A B C D 30 40 20 30 40 20 30 40 20 30 40 20 6 7 8 9 10 11 Meia-noite T a r e f a s s e q Tempo Lavanderia Sequencial 4 Lavanderia com pipelining leva 3.5 horas !!! A B C D 6 7 8 9 10 11 Meia-noite T a r e f a s s e q Tempo 30 40 40 40 40 20 Lavanderia com Pipelining 5 Pipelining não melhora a latência de uma única tarefa, mas melhora o throughput do trabalho todo Taxa de inserção de tarefas é limitada pela tarefa mais lenta Existem múltiplas tarefas sendo executadas em um dado instante SpeedUp potencial = número de estágios Tempo para encher o pipeline e tempo de dreno reduzem o speedup A B C D 6 7 8 9 T a r e f a s s e q Tempo 30 40 40 40 40 20 Lições Aprendidas 6 Múltiplas instruções podem ser executadas a cada instante Leva em consideração o paralelismo existente entre instruções Chave para implementação eficiente em qualquer processador moderno Pipelining 7 Implementação de Pipeline Instrução R E G R E G Comb. R E S U L T A D O Clock Comb.Comb. 1τ 2τ 3τ / 1 2 3 / 1 2 3max( , , ) s pipe c pipe t t τ τ τ τ τ τ = + + = 8 Equação do Pipeline t s/ pipe=∑ τ i t c / pipe=max τ i t c / pipe=∑ τ i /n 9 Pipelining • Melhoria do desempenho pelo aumento do throughput de instruções Speedup ideal é o número de estágios no pipeline. Instruction fetch Reg ALU Data access Reg 8 ns Instruction fetch Reg ALU Data access Reg 8 ns Instruction fetch 8 ns Time lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) 2 4 6 8 10 12 14 16 18 2 4 6 8 10 12 14 ... Program execution order (in instructions) Instruction fetch Reg ALU Data access Reg Time lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) 2 ns Instruction fetch Reg ALU Data access Reg 2 ns Instruction fetch Reg ALU Data access Reg 2 ns 2 ns 2 ns 2 ns 2 ns Program execution order (in instructions) 10 Representação esquemática do Pipelining Instrução 1 2 3 4 5 6 7 8 9 i IF ID EX MEM WB i+1 IF ID EX MEM WB i+2 IF ID EX MEM WB i+3 IF ID EX MEM WB i+4 IF ID EX MEM WB 11 Pipelining • Como facilitar a construção. – Todas as instruções tem o mesmo comprimento – Poucos formatos de instrução – Operandos em memória aparece somente em loads e stores • O que é difícil ? – Hazards estrutural: suponha que você tenha somente uma memória – Hazards controle: Instruções de desvio – Hazards data: Uma instrução depende de uma instrução antecessora 12 Idéia Básica Instruction memory Address 4 32 0 Add Addresult Shift left 2 Instruction M u x 0 1 Add PC 0Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read dataAddress Data memory 1 ALU result M u x ALU Zero IF: Instruction fetch ID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory access WB: Write back O que precisamos adicionar ao Datapath? 13 Pipelined Datapath Instruction memory Address 4 32 0 Add Addresult Shift left 2 In st ru ct io n IF/ID EX/MEM MEM/WB M u x 0 1 Add PC 0 Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data 1 ALU result M u x ALU Zero ID/EX Data memory Address Você pode identificar um problema mesmo se não existe dependência? Quais instruções manifestam este problema? 14 Datapath Corrigido Instruction memory Address 4 32 0 Add Addresult Shift left 2 In st ru ct io n IF/ID EX/MEM MEM/WB M u x 0 1 Add PC 0 Address Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data Data memory 1 ALU result M u x ALU Zero ID/EX 15 Representação Gráfica do Pipeline • Responda as seguintes questões: – Quantos ciclos são usados para executar este código? – O que a ALU esta fazendo durante o 4º ciclo? – Use esta representação para ajuda-lo a entender o datapaths IM Reg DM Reg IM Reg DM Reg CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 Time (in clock cycles) lw $10, 20($1) Program execution order (in instructions) sub $11, $2, $3 ALU ALU 16 Controle do Pipeline PC Instruction memory Address In st ru ct io n Instruction [20– 16] MemtoReg ALUOp Branch RegDst ALUSrc 4 16 32 Instruction [15– 0] 0 0 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend M u x 1 Write data Read data M u x 1 ALU control RegWrite MemRead Instruction [15– 11] 6 IF/ID ID/EX EX/MEM MEM/WB MemWrite Address Data memory PCSrc Zero Add Add result Shift left 2 ALU result ALU Zero Add 0 1 M u x 0 1 M u x 17 • Nós temos 5 estágios. O que necessita ser controlado em cada estágio? – Busca da Instrução e incrementa PC – Decodificação da Instrução / Leitura do Banco de Registradores – Execução ou cálculo de Endereço – Acesso à Memória de Dados – Escrita no Banco de Registradores Controle do Pipeline 18 • Controle Pipeline Instruction Branch R-format 1 1 0 0 0 0 0 1 0 lw 0 0 0 1 0 1 0 1 1 sw X 0 0 1 0 0 1 0 X beq X 0 1 0 1 0 0 0 X Execution/Address Calculation stage control lines Memory access stage control lines Write-back stage control lines Dst Op1 Op0 Src Read Write write Reg Control EX M WB M WB WB IF/ID ID/EX EX/MEM MEM/WB Instruction 19 Datapath com Controle PC Instruction memory In st ru ct io n Add Instruction [20– 16] M em to R eg ALUOp Branch RegDst ALUSrc 4 16 32Instruction[15– 0] 0 0 M u x 0 1 Add Addresult Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero Write data Read data M u x 1 ALU control Shift left 2 R eg W rit e MemRead Control ALU Instruction [15– 11] 6 EX M WB M WB WBIF/ID PCSrc ID/EX EX/MEM MEM/WB M u x 0 1 M em W rit e Address Data memory Address 20 Harzards Tudo que vimos até o momento faz parte do Maravilhoso Mundo dos Pipelinings Vamos conhecer os Harzards 21 Harzards Estruturais Ocorre quando duas instruções desejam usar a mesma estrutura ao mesmo tempo Não há problemas em nosso datapath 22 Harzards Estruturais Ocorre quando duas instruções desejam usar a mesma estrutura ao mesmo tempo Problemas se tivessemos apenas uma memória 23 • Problemas com o início da instrução seguinte antes que a instrução anterior tenha terminado– dependências que “retornam no tempo” são conflitos de Dados Harzard de Dados • Considere o programa sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) 24 • Problemas com o início da instrução seguinte antes que a instrução anterior tenha terminado – dependências que “retornam no tempo” são conflitos de Dados Harzard de Dados IM Reg IM Reg CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 Time (in clock cycles) sub $2, $1, $3 Program execution order (in instructions) and $12, $2, $5 IM Reg DM Reg IM DM Reg IM DM Reg CC 7 CC 8 CC 9 10 10 10 10 10/– 20 – 20 – 20 – 20 – 20 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Value of register $2: DM Reg Reg Reg Reg DM 25 • O compilador garante não existir dependência • Onde nós faremos a inserção de “nops” ? sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) • Problema: Isto é Lento! Solução por Software 26 • Usar resultados temporários, sem esperar que eles sejam escritos – adiantamento do banco de registradores antes de ler/escrever o registrador – Adiantamento da ALU Harzard de Dados - Adiantamento what if this $2 was $13? IM Reg IM Reg CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 Time (in clock cycles) sub $2, $1, $3 Program execution order (in instructions) and $12, $2, $5 IM Reg DM Reg IM DM Reg IM DM Reg CC 7 CC 8 CC 9 10 10 10 10 10/– 20 – 20 – 20 – 20 – 20 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Value of register $2 : DM Reg Reg Reg Reg X X X – 20 X X X X XValue of EX/MEM : X X X X – 20 X X X XValue of MEM/WB : DM 27 Harzard de Dados - Adiantamento PC Instructionmemory Registers M u x M u x Control ALU EX M WB M WB WB ID/EX EX/MEM MEM/WB Data memory M u x Forwarding unit IF/ID In st ru ct io n M u x Rd EX/MEM.RegisterRd MEM/WB.RegisterRd Rt Rt Rs IF/ID.RegisterRd IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRs 28 • Load pode ainda causar dependência: – Uma instrução tenta ler um registrador antes que uma instrução load que escreve no mesmo registrador seja completada. – – • Nós precisamos de uma unidade de detecção para parar (“stall”) a instrução load Harzard de Dados – Adiantamento failed Reg IM Reg Reg IM CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 Time (in clock cycles) lw $2, 20($1) Program execution order (in instructions) and $4, $2, $5 IM Reg DM Reg IM DM Reg IM DM Reg CC 7 CC 8 CC 9 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 DM Reg Reg Reg DM 29 Harzard de Dados – Parada • Nós paramos o pipeline deixando todos os sinais de controle de EX, MEM e ER em 0 lw $2, 20($1) Program execution order (in instructions) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Reg IM Reg Reg IM DM CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 Time (in clock cycles) IM Reg DM RegIM IM DM Reg IM DM Reg CC 7 CC 8 CC 9 CC 10 DM Reg RegReg Reg bubble 30 Unidade de detecção de conflito • Pára o avanço de instruções • Controla a escrita dos registradores PC BI/DI • Escolhe os valores reais do controle ou todos em 0 PC Instructionmemory Registers M u x M u x M u x Control ALU EX M WB M WB WB ID/EX EX/MEM MEM/WB Data memory M u x Hazard detection unit Forwarding unit 0 M u x IF/ID In st ru ct io n ID/EX.MemRead IF /ID W rit e P C W rit e ID/EX.RegisterRt IF/ID.RegisterRd IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRs Rt Rs Rd Rt EX/MEM.RegisterRd MEM/WB.RegisterRd Harzard de Dados – Detecção 31 • Quando decidimos desviar, outras instruções estão no pipeline! • Nós pressupomos o desvio “não-realizado” – Caso o desvio se realize precisamos descartar as instruções que estiverem sendo buscadas e decodificadas Harzard de Desvios Reg Reg CC 1 Time (in clock cycles) 40 beq $1, $3, 7 Program execution order (in instructions) IM Reg IM DM IM DM IM DM DM DM Reg Reg Reg Reg Reg RegIM 44 and $12, $2, $5 48 or $13, $6, $2 52 add $14, $2, $2 72 lw $4, 50($7) CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Reg 32 Descarte de Instruções PC Instructionmemory 4 Registers M u x M u x M u x ALU EX M WB M WB WB ID/EX 0 EX/MEM MEM/WB Data memory M u x Hazard detection unit Forwarding unit IF.Flush IF/ID Sign extend Control M u x = Shift left 2 M u x 33 Melhoria do Desempenho • Reordenar as instruções: lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) sw $t0, 4($t1) • “branch delay slot” • Superscalar: inicia mais de uma instrução no mesmo ciclo 34 Escalonamento dinâmico • O hardware faz o escalonamento – O hardware escolhe as instruções para executar – Execução fora de ordem é possível – Pressuposição dinâmica de desvio • Todos processadores modernos são complicados – DEC Alpha 21264: 9 estágios pipeline, 6 saídas de instruções – PowerPC e Pentium: branch history table – Importância da tecnologia de Compiladores Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34
Compartilhar