Infra-estrutura de Hardware Melhorando o desempenho da CPU Infra-estrutura de Hardware Roteiro da Aula • Melhorando desempenho – Mais recursos – Lavanderia • Técnica de Pipeline – Comparando desempenho • Entendendo o funcionamento do pipeline • Resolvendo conflitos no pipeline – Conflito dado – Conflito controle • Resolvendo situações de exceção • Resumo Infra-estrutura de Hardware Como um documento é processado? 1- Busca documento 2 - Identifica tipo de transação 3 - Verifica se saldo é positivo 4 - Efetiva transação e atualiza saldo Infra-estrutura de Hardware Ciclo de Instrução Busca instrução Incrementa PC Decodifica instrução Busca operando Executa instrução Armazena resultado Infra-estrutura de Hardware O hardware está sendo bem utilizado? • Numa implementação serial de instruções partes do hardware ficam ociosas durante a execução de uma instrução • Se várias instruções fossem processadas ao mesmo tempo com cada parte do hardware atuando numa instrução distinta teríamos melhor utilização do hardware. • Pipeline Infra-estrutura de Hardware Melhorando a eficiência Busca documento Identifica tipo de transação Verifica se saldo é positivo Infra-estrutura de Hardware Efetiva transação e atualiza saldo Outro Exemplo • Exemplo: Lavanderia – Lavagem: 30 min – Secagem: 30 min – Passar a ferro: 30 min – guardar : 30 min Infra-estrutura de Hardware Lavanderia 6 PM 7 8 9 10 11 T im e Task o rd e r A B C D • Lavagem sequencial • Duração: 8 horas Infra-estrutura de Hardware 12 1 2 AM Lavanderia 6 PM 7 8 9 10 11 12 1 2 AM T im e Task o rd e r A B Lavagem em pipeline Duração: 3.5 horas C D Infra-estrutura de Hardware Lavanderia pipeline Pipelining não diminui o tempo de execução de uma tarefa, ele melhora a taxa de execução de um conjunto de tarefas Tarefas múltiplas simultâneas usando diferentes recursos Aumento no desempenho= Número de estágios Taxa é limitada pelo estágio mais lento Tempo para “encher” e “esvaziar” o pipeline reduz o desempenho Espera quando houver Infra-estrutura de Hardware dependências 6 PM T im e Ta sk o rd e r A B C D 7 8 9 10 Os 5 estágios de uma instrução LOAD Load Cycle 1 Cycle 2 Cycle 3 Ifetch Reg/Dec Exec Cycle 4 Ifetch: Mem Cycle 5 Wr Busca de instrução da memória de instrução Reg/Dec: Carregamento de registradores e decodificação da instrução Exec: Cálculo do endereço de memória Mem: Leitura da memória de dados Wr: Escrita no banco de registradores Infra-estrutura de Hardware Pipeline vs. Mono-ciclo Program execution Time order (in instructions) lw $1, 100($0) 2 Instruction Reg fetch lw $2, 200($0) 4 6 8 ALU Data access 10 12 14 ALU Data access 16 18 Reg Instruction Reg fetch 8 ns lw $3, 300($0) Reg Instruction fetch 8 ns ... 8 ns Program execution Time order (in instructions) 2 lw $1, 100($0) Instruction fetch lw $2, 200($0) 2 ns lw $3, 300($0) 4 Reg Instruction fetch 2 ns 6 ALU Reg Instruction fetch 8 Data access ALU Reg 10 14 12 Reg Data access ALU Reg Data access Reg Infra-estrutura de Hardware 2 ns 2 ns 2 ns 2 ns 2 ns Mono, multi-ciclo e Pipeline Cycle 1 Cycle 2 Clk Single Cycle Implementation: Load Store Waste Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 Clk Multiple Cycle Implementation: Load Ifetch Store Reg Exec Mem Wr Exec Mem Wr Reg Exec Mem Ifetch R-type Reg Pipeline Implementation: Load Ifetch Reg Store Ifetch R-type Ifetch Wr Infra-estrutura de Hardware Reg Exec Mem Wr Exec Mem Ifetch Implementando o pipeline IF: Instruction fetch ID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory access WB: Write back 0 M u x 1 Add Add Add result 4 Shift left 2 PC Read register 1 Address Instruction Instruction memory Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result Address Data memory Write data 16 Sign extend 32 Infra-estrutura de Hardware Read data 1 M u x 0 Implementando o pipeline Registradores do Pipeline 0 M u x 1 IF/ID ID/EX EX/MEM MEM/WB Add Add Add result 4 PC Address Instruction memory Instruction Shift left 2 Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result Address Data memory Write data 16 Sign extend 32 Infra-estrutura de Hardware Read data 1 M u x 0 Operação de um pipeline: lw (1) lw Instruction fetch 0 M u x 1 IF/ID ID/EX EX/MEM MEM/WB 80000004 PC Address Instruction memory Add Add result Shift left 2 Instruction 4 8D28 04B0 80000008 Add Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result Address Data memory Write data 16 Sign extend 32 Infra-estrutura de Hardware Read data 1 M u x 0 Operação de um pipeline : lw (2) lw 0 M u x 1 Instruction decode ID/EX PC Address Instruction memory Instruction 4 8D28 04B0 80000008 Add 9 8 Read register 1 Read data 1 Read register 2 Registers Read 00000002 Write data 2 80000004 register Write data 16 Sign extend 32 00000008 80000004 80000008 IF/ID EX/MEM MEM/WB Add Add result Shift left 2 0 M u x 1 Zero ALU ALU result Infra-estrutura de Hardware Address Data memory Write data Read data 1 M u x 0 Operação de um pipeline : lw (3) lw 0 M u x 1 Execution Add PC Address Instruction memory Instruction 4 Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 16 Sign extend 32 00000008 80000004 80000008 ID/EX EX/MEM Add MEM/WB Add result Shift left 2 0 M u x 1 Zero ALU ALU result Infra-estrutura de Hardware 8000000C IF/ID Address Data memory Write data Read data 1 M u x 0 Operação de um pipeline : lw (4) lw 0 M u x 1 Memory IF/ID ID/EX EX/MEM MEM/WB Add Add Add result 4 Instruction memory Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 16 Sign extend 0 M u x 1 32 Infra-estrutura de Hardware Zero ALU ALU result Address Data memory Read data Write data00000005 00000005 Address 8000000C PC Instruction Shift left 2 1 M u x 0 Operação de um pipeline : lw (5) lw 01000 0 M u x 1 Write back IF/ID ID/EX EX/MEM MEM/WB Add Add Add result 4 Address Instruction memory Read register 1 Instruction PC ? Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result Address Data memory Write data 16 Sign extend 32 Infra-estrutura de Hardware 00000005 Read data 00000005 Shift left 2 1 M u x 0 Operação de um pipeline : lw (5) 0 M u x 1 IF/ID ID/EX EX/MEM MEM/WB Add 4 Add Add result 0 M u x 1 Write data Zero ALU ALU result Address Data memory Read data 00000005 Read data 1 Read register 2 00000005 Registers Read Write80000004 data 2 register Write data 16 Sign extend 32 Infra-estrutura de Hardware 01000 Instruction memory Read register 1 01000 Address 01000 PC Instruction Shift left 2 1 M u x 0 Operação de um Pipeline: sw (3) sw 0 M u x 1 Execution PC Address Instruction memory Read register 1 Read data 1 Read register 2 00000002 Registers Read Write data 2 80000004 register Write data 16 Sign extend 32 Add Add result Shift left 2 0 M u x 1 Zero ALU ALU result Infra-estrutura de Hardware MEM/WB 00000002 Instruction 4 00000008 80000004 Add EX/MEM 8000000C ID/EX 00000002 IF/ID Address Data memory Write data Read data 1 M u x 0 Operação de um Pipeline: sw (4) sw 0 M u x 1 Memory ID/EX EX/MEM Add Add Add result 4 Address Instruction memory Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result i 16 Sign extend 32 Infra-estrutura de Hardware 8000000C PC Instruction Shift left 2 MEM/WB 00000002 IF/ID Read data Address Data memory 00000002 Write data 1 M u x 0 Operação de um Pipeline: sw (5) sw 0 M u x 1 Write back IF/ID ID/EX EX/MEM MEM/WB Add Add Add result 4 PC Address Instruct on memory Instruction Shift left 2 Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data 0 M u x 1 Zero ALU ALU result i 16 Sign extend Address Data memory Write data 32 Infra-estrutura de Hardware Read data 1 M u x 0 Representação de um pipeline Time (in clock cycles) Program execution order (in instructions) lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) CC 1 CC 2 IM Reg IM CC 3 ALU Reg IM CC 4 CC 5 DM Reg ALU Reg Infra-estrutura de Hardware DM ALU CC 6 CC 7 Reg DM Reg Representando o pipeline Time (in clock cycles) Program execution order (in instructions) lw $10, 20($1) sub $11, $2, $3 CC 1 CC 2 CC 3 IM Reg ALU IM Reg Infra-estrutura de Hardware CC 4 CC 5 DM Reg ALU DM CC 6 Reg Representando o pipeline Program execution order (in instructions) lw $10, $20($1) sub $11, $2, $3 Time ( in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 Instruction fetch Instruction decode Execution Data access Write back Instruction fetch Instruction decode Execution Data access Infra-estrutura de Hardware CC 6 Write back Implementando o Pipeline: processamento PCSrc 0 M u x 1 IF/ID ID/EX EX/MEM MEM/WB Add Add result Add 4 Branch Shift left 2 PC Address Instruction memory Instruction RegWrite Read register 1 MemWrite Read data 1 Read register 2 Registers Read Write data 2 register Write data ALUSrc Zero Zero ALU ALU result 0 M u x 1 MemtoReg Address Data memory Write data Instruction 16 [15– 0] Sign extend 32 6 ALU control Instruction [20– 16] Instruction [15– 11] 0 M u x 1 ALUOp Infra-estrutura de Hardware RegDst MemRead Read data 1 M u x 0 Implementando o Pipeline:controle WB Instruction IF/ID Control M WB EX M WB ID/EX EX/MEM MEM/WB Infra-estrutura de Hardware Implementando o Pipeline:controle PCSrc ID/EX 0 M u x 1 WB Control IF/ID EX/MEM M WB EX M MEM/WB WB Add ALUSrc Read register 1 Read data 1 Read register 2 Registers Read Write data 2 register Write data Zero ALU ALU result 0 M u x 1 MemtoReg Instruction memory Branch Shift left 2 MemWrite Address Instruction PC Add Add result RegWrite 4 Address Data memory Read data Write data Instruction 16 [15– 0] Instruction [20– 16] Instruction [15– 11] Sign extend 32 6 ALU control 0 M u x 1 ALUOp Infra-estrutura de Hardware RegDst MemRead 1 M u x 0 O pipeline é sempre eficiente??? • Eficiência do pipeline: – estágios com a mesma duração – instruções independentes de resultados calculados em instrução anterior – execução sequencial das instruções ... mas as características acima quase sempre não são satisfeitas: •dependência de dados •instruções de desvio Infra-estrutura de Hardware Conflitos • Impedem a execução da próxima instrução no ciclo previsto • Tipos: – estrutural • conflito no uso dos recursos – controle • alteração do fluxo do programa por instruções de desvio e chamada de funções – dado • dependência de dados Infra-estrutura de Hardware Conflito Estrutural -Algum recurso não suficientemente replicado -Mesma memória (cache) para dados e instruções O conflito estrutural pode ser eliminado replicando-se o recurso Infra-estrutura de Hardware Conflito estrutural: memória única Time (clock cycles) Instr 4 Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg ALU Instr 3 Reg ALU Instr 2 Mem Mem ALU Instr 1 Reg ALU O r d e r Load Mem ALU I n s t r. Mem Infra-estrutura de Hardware Reg r1: Problema Time (clock cycles) IF Im Reg Im Reg Im Reg ALU Dm Im Reg ALU or r8,r1,r9 Dm ALU and r6,r1,r7 Reg ALU O r d e r sub r4,r1,r3 Im MEM WB ALU I n s t r. add r1,r2,r3 ID/RF EX xor r10,r1,r11 Infra-estrutura de Hardware Reg Dm Reg Dm Reg Reg Dm Reg Conflito de Dado em R1: Funcionamento Correto Time (clock cycles) ME M Dm W B Reg Im Reg Dm Im Reg ALU Dm Im Reg ALU O and r6,r1,r7 r d e or r8,r1,r9 r E X ALU sub r4,r1,r3 ID/R FReg ALU I n s t r. I add r1,r2,r3 F Im Im Reg Infra-estrutura de Hardware Reg Dm ALU xor r10,r1,r11 Reg Reg Dm Reg Resolvendo o conflito de dado - Software : inserir NOP’s Infra-estrutura de Hardware Inserindo NOP´s Im Reg Reg Dm Reg Dm Im Reg Dm Im Reg ALU Dm ALU Im Reg Infra-estrutura de Hardware Reg Reg Reg Dm ALU xor r10,r1,r11 Reg Im W B Reg ALU or r8,r1,r9 ME M Dm ALU O sub r4,r1,r3 r d e and r6,r1,r7 r Im E X ALU I n nop s t nop r. ID/R FReg ALU • Inserir NOP’s I add r1,r2,r3 F Im Reg Dm Reg Resolvendo o conflito de dado - Software : inserir NOP’s degradação do desempenho trocar a ordem das instruções. Infra-estrutura de Hardware Rearrumando código Im Reg Reg Dm Reg Dm Im Reg Dm Im Reg ALU Dm ALU Im Reg Infra-estrutura de Hardware Reg Reg Reg Dm ALU xor r10,r1,r11 Reg Im W B Reg ALU or r8,r1,r9 ME M Dm ALU O sub r4,r1,r3 r d e and r6,r1,r7 r Im E X ALU I n and r12, r12, r13 s t or r14, r14, r15 r. ID/R FReg ALU • Inserir NOP’s I add r1,r2,r3 F Im Reg Dm Reg Resolvendo o Conflito de Dados - Software : inserir NOP’s degradação do desempenho trocar a ordem das instruções compilador “inteligente” - Hardware : método do curto circuito Infra-estrutura de Hardware Método do Curto Circuito P ro g ra m e x e c u tio n o rd e r 2 4 6 8 10 T im e (in in s tru c tio n s ) a d d $ s 0 , $ t0 , $ t1 s ub $ t2, $ s 0 , $ t3 IF ID EX IF ID Infra-estrutura de Hardware M EM EX WB M EM WB Curto Circuito - Forwarding Dm Reg Reg Im Reg Dm Im Reg Dm Im Reg Dm Im Reg ALU or r8,r1,r9 W B ALU and r6,r1,r7 ME M ALU O r d e r sub r4,r1,r3 Im E X ALU I n s t r. add r1,r2,r3 ID/R F ALU Time (clock cycles) I F xor r10,r1,r11 Infra-estrutura de Hardware Reg Reg Reg Dm Reg ID/EX EX/MEM Registers MEM/WB ALU Data memory Curto Circuito M u x a. No forwarding ID/EX EX/MEM MEM/WB M u x Registers ForwardA ALU M u x Rs Rt Rt Rd Data memory ForwardB M u x EX/MEM.RegisterRd Forwarding unit Infra-estrutura de Hardware b. With forwarding MEM/WB.RegisterRd M u x Resolvendo o Conflito de Dados - Software : inserir NOP’s degradação do desempenho trocar a ordem das instruções compilador “inteligente” - Hardware : método do curto circuito operações entre registradores inserir retardo (reg/mem) Infra-estrutura de Hardware Inserindo retardos lw r1,0(r2) Im ID/R F Reg E X ALU Time (clock cycles) I F bubble W B Dm Reg bubble Im Reg Infra-estrutura de Hardware bubble ALU sub r4,r1,r3 ME M Dm bubble Reg Inserindo retardos Program Time (in clock cycles) execution CC 1 CC 2 order (in instructions) lw $2, 20($1) and $4, $2, $5 or $8, $2, $6 IM CC 3 Reg IM Reg IM CC 4 CC 5 DM Reg Reg IM CC 6 CC 7 DM Reg Reg DM CC 8 CC 9 CC 10 Reg bubble add $9, $4, $2 slt $1, $6, $7 IM DM Reg IM Infra-estrutura de Hardware Reg Reg DM Reg Detectando e Resolvendo Conflitos ID/EX.MemRead IF/IDWrite Hazard detection unit ID/EX WB M u x Control 0 PC Instruction memory Instruction PCWrite IF/ID EX/MEM M WB EX M MEM/WB WB M u x Registers ALU Data memory M u x IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRt Rt IF/ID.RegisterRd Rd ID/EX.RegisterRt Rs Rt M u x Infra-estrutura de Hardware EX/MEM.RegisterRd Forwarding unit MEM/WB.RegisterRd M u x Conflito de Controle • Necessidade da alteração no fluxo: – desvios condicionais e incondicionais – chamadas e retornos de subrotinas – interrupções • Como resolver o conflito minimizando a perda de desempenho? Infra-estrutura de Hardware Conflito de Controle Time (in clock cycles) Program execution CC 1 CC 2 order (in instructions) 40 beq $1, $3, 7 44 and $12, $2, $5 48 or $13, $6, $2 52 add $14, $2, $2 72 lw $4, 50($7) IM CC 3 Reg IM CC 4 CC 5 DM Reg Reg IM DM Reg IM CC 6 CC 8 CC 9 Reg DM Reg Infra-estrutura de Hardware IM CC 7 Reg DM Reg Reg DM Reg Conflito de Controle • Reduzindo o retardo devido a desvios.... Infra-estrutura de Hardware Antecipando desvio IF.Flush Hazard detection unit ID/EX M u x WB Control 0 M u x IF/ID 4 M WB EX M MEM/WB WB Shift left 2 Registers PC EX/MEM = M u x Instruction memory ALU M u x Sign extend M u x Forwarding unit Infra-estrutura de Hardware Data memory M u x Resolvendo o Conflito de Controle – Esperar para buscar próxima instrução até que o desvio seja executado Congelamento do pipeline Infra-estrutura de Hardware Congelamento do pipeline • Descoberta de instrução de desvio no pipeline • Suspensão da busca de instruções + Simplicidade – Degradação do desempenho do pipeline Infra-estrutura de Hardware Resolvendo o Conflito de Controle – Esperar para buscar próxima instrução até que o desvio seja executado Congelamento do pipeline – Predizer o comportamento do desvio Execução especulativa Infra-estrutura de Hardware Execução especulativa • O estado da máquina antes do desvio deve ser guardado • Perda de desempenho – técnicas de compilação p/ aumento dos acertos – capacidade de recuperação do estado rapidamente Infra-estrutura de Hardware Execução especulativa • Previsão do desvio: – a ocorrência de todos/nenhum desvio • 68020, VAX 11/780 – com base no opcode – análise da direção do desvio – dinâmica: • Chave desvio/ não desvio Infra-estrutura de Hardware Estratégias de Previsão de Desvio • Estáticas – As previsões não mudam – Exemplos: • Always-Not Taken • Always-Taken • Backwards Taken, Forward Not Taken (BTFNT) • Dinâmicas – Previsão pode mudar durante a execução do programa 59 Previsão de Desvio Dinâmica • Porque previsão dinâmica funciona? – Algoritmos possuem regularidades – Dados tem regularidades Arquitetura Não Convencional de 60 Previsão de Desvio Dinâmica • Tabela da História de Branch (BHT): – bits menos significativos do PC endereça tabela com entradas de dois bits – Cada entrada informa a previsão do desvio branch PC BHT 01 Arquitetura Não Convencional de 61 Tabela da História dos Desvios • Solução: esquema de 2-bits onde a previsão é mudada somente em caso de erro, (2 vezes) T NT 11 Predict Taken T NT T Predict Not Taken 10 01 T 00 Predict Taken NT Predict Not Taken NT • Red: stop, not taken • Blue: go, taken 62 Tabela da História dos Desvios • Tem tamanho limitado • 2 bits por N (por exemplo N = 4K entradas) • Usa bits menos significativos do PC para endereçar tabela branch PC T BHT 01 NT Predict Taken 11 T NT T Predict Not Taken 10 01 NT 00 T Predict Taken Predict Not Taken NT 63 Nov. 9, 2004 Branch History Table: Exemplo 1 • Loop simples com 1 desvio, 4 iterações • BHT inicialmente 00 • Primeira iteração: branch PC BHT – previsão NT, corrente T – Atualiza BHT : 00 para 01 01 00 T NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T NT 64 Branch History Table: Exemplo 1 • Loop simples com 1 desvio, 4 iterações • BHT inicialmente 00 • Primeira iteração: branch PC BHT – previsão NT, corrente T – Atualiza BHT : 00 para 01 11 01 • Segunda iteração: – previsão NT, corrente T – Atualiza BHT : 01 11 T NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T NT 65 Branch History Table: Exemplo 1 • Loop simples com 1 desvio, 4 iterações • BHT inicialmente 00 • – – • branch PC Primeira iteração: previsão NT, corrente T Atualiza BHT : 00 para 01 11 01 Segunda iteração: – – BHT previsão NT, corrente T Atualiza BHT : 01 11 • Terceira iteração: – previsão T, corrente T – Sem mudança na BHT T NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T NT 66 Branch History Table: Exemplo 1 • Loop simples com 1 desvio, 4 iterações • BHT inicialmente 00 • – – • previsão NT, corrente T 11 10 Segunda iteração: – previsão NT, corrente T Atualiza BHT : 01 11 Terceira iteração: – – • BHT Atualiza BHT : 00 para 01 – • branch PC Primeira iteração: previsão T, corrente T Sem mudança na BHT Quarta iteração: previsão T, corrente NT – Atualiza BHT : 11 10 T NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T 67 NT BHT: Exemplo 1 • • • • • Parece sem eficácia 4 instancias de desvio executadas e 3 previsões erradas. branch PC E se o loop fosse executado mais vezes? BHT igual a 10 Primeira iteração: – previsão T, corrente T BHT 11 10 – Atualiza BHT: 10 para 11 T NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T NT 68 BHT: Exemplo 1 • • • • • Parece sem eficácia 4 instancias de desvio executadas e 3 previsões erradas. branch PC E se o loop fosse executado mais vezes? BHT igual a 10 Primeira iteração: – previsão T, corrente T BHT 11 – Não atualiza BHT • Segunda iteração: – previsão T, corrente T – Não atualiza BHT T • Terceira iteração: – previsão T, corrente T – Não atualiza BHT NT 11 Predict Taken T NT T Predict Not Taken 10 01 Predict Taken NT Predict Not Taken 00 T NT 69 BHT: Exemplo 1 • • • • Parece sem eficácia 4 instancias de desvio executadas e 3 previsões erradas. branch PC E se o loop fosse executado mais vezes? BHT igual a 10 • Primeira iteração: – – • 11 10 previsão T, corrente T Não atualiza BHT Segunda iteração: – – • BHT previsão T, corrente T Não atualiza BHT Terceira iteração: – T previsão T, corrente T execuções: 11 Predict Taken de previsão • Quarta somente iteração: 1 erro – Não atualiza BHT Próximas T – previsão T, corrente NT – Atualiza BHT • Predict Not Taken NT 10 T NT 01 Predict Taken NT Predict Not Taken 00 T 11 para 10 NT 70 Execução especulativa • branch target buffer (BTB) • Profiling • Pentium e Power-PC Infra-estrutura de Hardware Resolvendo o Conflito de Controle – Esperar para buscar próxima instrução até que o desvio seja executado Congelamento do pipeline – Predizer o comportamento do desvio Execução especulativa – Buscar sempre a instrução seguinte ao desvio Desvio com efeito retardado Infra-estrutura de Hardware Desvio com efeito retardado • Instruções seguintes ao desvio devem ser independentes do desvio Ling. alto nível If a=b then a:= a+1 else a: a-1 end if; Linguagem máquina lw $1,a lw $2,b beq $1,$2, end addi $1,$1, -1 j end2 end1: addi $1, $1, 1 end2: sw $1,a Infra-estrutura de Hardware Desvio com efeito retardado Linguagem máquina lw $1,a lw $2,b beq $1,$2, end1 Linguagem máquina lw $1,a lw $2,b beq $1,$2, end1 addi $1, $1, -1 j end2 end1: addi $1,$1, 1 end2: sw $1, a addi $6, $6,$7 lw $8, z lw $9,w addi $1,$1, -1 j end2 Slots de retardo end1: addi $1, $1, 1 end2: sw $1,a Infra-estrutura de Hardware Desvios condicionais • Comparação e desvios – Comparação • flags são alterados – Desvios condicionais: • análise de um ou mais flags • desvio caso condição seja verdade • Suporte da arquitetura: • Alteração dos flags deve ser feita explicitamente – Sparc, RS/6000 e Power: Indicado no opcode Infra-estrutura de Hardware Anulação de instrução • instrução do slot de retardo é anulada quando previsão não se confirma Endereço L1 .... Instrução Add $1 $1,, $2 Sub $3, $3, $4 Lw $5, x ..... Beq $4,$5, L1 Add $1,$1, $5 Endereço L1 L2 ... Se desvio não ocorrer, instruções são anuladas Infra-estrutura de Hardware Instrução Add $1, $1, $2 Sub $3, $3, $4 lw $5, x lw $3,y ..... Beq $4, $5, L2 Add $1,$1, $2 Sub $3, $3, $4 Lw $5,x Add $1,$1, $5 E se ocorrer uma exceção??? Qual o comportamento do pipeline??? Infra-estrutura de Hardware Exceções • Sequência de execução é alterada devido a eventos não esperados: – internos: • opcode inexistente • overflow • divisão por zero – externos: • dispositivo de entrada/saída Infra-estrutura de Hardware Exceções • Execução do programa é interrompida e uma rotina de tratamento é executada – Valor do PC deve ser guardado – O endereço da rotina de tratamento deve ser carregado em PC Infra-estrutura de Hardware Exceções • Onde guardar o endereço do PC? – Registrador • MIPS: EPC – Pilha • Onde o endereço da sua subrotina deve ser guardado? – Valor fixo • precisa-se saber a causa da exceção – Vetor de endereços na memória Infra-estrutura de Hardware Exceções - MIPS • Tipos de Exceções: – Instrução Indefinida • endereço: C0 00 00 00 – Overflow aritmético • endereço: C0 00 00 20 • Registrador EPC – guarda endereço da instrução afetada • Registrador de Causa – identifica o tipo de evento que causou a exceção Infra-estrutura de Hardware Exceções • Comportamento do pipeline: – Instruções antes da que causou exceção devem ser terminadas – Instruções após a que causou exceção devem ser anuladas Infra-estrutura de Hardware Exceções Exemplo Exceções Exemplo Tipos de Exceções • • • • • Opcode não válido Overflow Mal funcionamento do hardware Chamada do S.O Requisição de Dispositivo de E/S • Como salvar o endereço correto em EPC? Infra-estrutura de Hardware Tipos de Exceções • Duas formas de tratamento – Exceção precisa: • O endereço correto é salvo em EPC – Exceção imprecisa: • O valor corrente do PC (não da instrução que causou a exceção) é salvo em EPC Infra-estrutura de Hardware Resumo • Melhor utilização do hardware durante execução das instruções – Pipeline • Conflitos: estrutural, de dado e de controle • Estrutural: duplicação de recurso • Dado: – hardware: curto-circuito – software: rearrumação Infra-estrutura de Hardware Resumo • Controle: – Congelamento – Execução especulativa: • estática • dinâmica – Desvio com efeito retardado • Rearrumação do código Infra-estrutura de Hardware Resumo – Exceções: • Hardware para anular instruções subsequentes a que causou a exceção • Que valor salvar em EPC? – Tipos de exceções • Exceção precisa: – Salva em PC endereço da instrução que causou exceção • Exceção imprecisa: – Salva em EPC valor corrente do PC Infra-estrutura de Hardware