MIPS Pipeline

2,733 views

Published on

empty

Published in: Technology

MIPS Pipeline

  1. 1. 1 Arquitetura de Computadores “A” Aula 7 Pipeline
  2. 2. 2 Em relação a performance... • O que é vantajoso no processador Monociclo? • CPI = 1 • O que é desvantajoso no processador Monociclo? • Frequência baixa (Regrada pela instrução mais lenta) • O que se ganhou na implementação Multiciclo? • Aumento na Frequência (Regrada pelo passo mais lento) • O que se perdeu na implementação Multiciclo? • CPI > 1 Como agregar as vantagens das duas implementações? CPI baixo e Frequência alta
  3. 3. 3 No multiciclo..o que se pode melhorar? PC 0 M u x 1 Instruction [25– 21] Address Memory MemData Write data Instruction [20– 16] Read Read register 2 data 1 Registers Write Read register data 2 0 M u x 1 Read register 1 Instruction [15– 0] Instruction register Instruction [15– 0] Memory data register 0 M Instruction u x [15– 11] 1 A B 4 Write data 0 M u x 1 16 Sign extend 32 Zero ALU ALU result ALUOut 0 1 M u 2 x 3 Shift left 2 • Hardware dividido para executar os 5 passos • Somente uma parte do hardware está sendo utilizada por ciclo (sempre UMA instrução dentro do processador) • Solução?
  4. 4. 4 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  5. 5. 5 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  6. 6. Multiciclo • Analogia com o processo de lavagem de roupas • Dividido em 4 passos: • Lavar • Secar • Dobrar • Guardar • Assumindo que cada passo dure 30 minutos • Cada processo dura 2 horas • Três processos duram 6 horas • Recursos ociosos na maior parte do tempo!
  7. 7. Pipeline • Eliminação da ociosidade dos recursos • Inicia-se um processo a cada passo • Um processo continua durando 2 horas • Três processos duram 3 horas e 30 minutos
  8. 8. Monociclo Assuma: • • 2ns para acessos à memória e operação na ULA. 1ns para acesso ao banco de registradores. Program execution Time order (in instructions) lw $1, 100($0) lw $2, 200($0) 2 Instruction Reg fetch 4 6 ALU Data access 8 ns 8 10 12 14 ALU Data access 16 18 Reg Instruction Reg fetch lw $3, 300($0) 8 ns Reg Instruction fetch ... 8 ns • Período do monociclo é 8 ns • CPI = 1 • Tempo de execução de um load = 8ns • Tempo de execução de três loads = 24ns
  9. 9. Multiciclo Assuma: • • 2ns para acessos à memória e operação na ULA. 1ns para acesso ao banco de registradores. Program execution Time order (in instructions) lw $1, 100($0) lw $2, 200($0) 2 Instruction fetch 4 Reg 6 ALU 8 Data access 10 12 14 16 18 Reg 2 ns lw $3, 300($0) Instruction fetch 2 ns Reg ALU Data access Reg Instruction fetch . 2 ns • Período do multiciclo é 2 ns • CPI > 1 • Tempo de execução de um load = 10ns • Tempo de execução de três loads = 30ns
  10. 10. Pipeline Assuma: • • 2ns para acessos à memória e operação na ULA. 1ns para acesso ao banco de registradores. Program 2 execution Time order (in instructions) Instruction lw $1, 100($0) fetch lw $2, 200($0) lw $3, 300($0) 2 ns 4 Reg Instruction fetch 2 ns 6 ALU Reg Instruction fetch 2 ns 8 Data access ALU Reg 2 ns 10 14 12 Reg Data access Reg ALU Data access 2 ns 2 ns • Período do pipeline é 2 ns • CPI ~= 1 • Tempo de execução de um load = 10ns • Tempo de execução de três loads = 14ns Reg 2 ns
  11. 11. 11 Pipeline: preste atenção • Pipelining não reduz a latência de uma instrução, mas aumenta o throughput (vazão) de todo workload • Executar bilhões de instruções, então throughput é o que interessa; • Questões: • O período do pipeline é limitado pelo estágio mais longo • Ganho em potencial = número de estágios • Períodos desbalanceados dos estágio reduzem o aumento de desempenho em relação a frequência • Há um tempo gasto para encher o pipeline e para esvaziá-lo • Múltiplas instruções estão no pipeline concomitantemente • Uma em cada estágio do pipeline • Mas somente uma instrução pode terminar (write back) por ciclo
  12. 12. 12 O MIPS facilita para o pipelining? • Todas instruções tem o mesmo comprimento • Busca e decodificação são similares para todas instruções • Poucos formatos de instruções • Simplifica a decodificação, que pode ser feita em um estágio • Operandos de memória parecem apenas em loads/stores • Acessos à memória podem ser realizados em um estágio específico
  13. 13. 13 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  14. 14. 14 Caminho de dados • Vamos construir o bloco operativo • Primeiro, lembre-se dos cinco passos • Busca de Instruções e incremento do PC (IF) • Decodificação da instrução e busca dos registradores (ID) • Execução e cálculo do Endereço (EX) • Acesso à Memória (MEM) • Gravação do resultado no banco de registradores (WB)
  15. 15. 15 Caminho de dados • No monociclo • Todos os passos feitos em apenas um ciclo • Hardware dedicado para cada passo • No multiciclo • Passos são realizados em ciclos diferentes • Alguns componentes de hardware são compartilhados • Memórias, somadores,etc. • No pipeline • Devemos implementá-lo a partir do caminho de dados do monociclo ou multiciclo? • Monociclo • Temos instruções diferentes em cada passo que necessitam de HW dedicado
  16. 16. Revisão dos “passos” ADD ADD 4 PC ADDR RD Instruction Memory <<2 Instruction I 32 16 32 5 5 RN1 RN2 5 WN RD1 Register File ALU Zero WD RD2 16 E X T N D M U X 32 ADDR Data MemoryRD WD M U X (IF) (ID) (EX) (MEM) (WB) Instruction Fetch Instruction Decode Execute Memory Write Back
  17. 17. 17 Pipeline • Como iremos isolar os resultados de cada instrução em cada estágio do pipeline? • Precisamos de registradores extras para guardar os dados entre os ciclos • Registradores do pipeline
  18. 18. Bloco operativo com pipeline Largos o suficiente para manter os dados Registradores do Pipeline ADD ADD 4 64 bits PC ADDR RD 128 bits <<2 Instruction I 32 16 32 5 5 RN1 Instruction Memory RN2 97 bits 64 bits 5 WN RD1 Register File ALU Zero WD RD2 16 IF/ID E X T N D M U X ADDR Data MemoryRD 32 ID/EX WD EX/MEM MEM/WB M U X
  19. 19. Exemplo no Pipeline • Considere a seguinte sequência de instruções lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10
  20. 20. Diagrama de ciclo: Ciclo 1 LW
  21. 21. Diagrama de ciclo: Ciclo 2 SW LW
  22. 22. Diagrama de ciclo: Ciclo 3 ADD SW LW
  23. 23. Diagrama de ciclo: Ciclo 4 SUB ADD SW LW
  24. 24. Diagrama de ciclo: Ciclo 5 SUB ADD SW LW
  25. 25. Diagrama de ciclo: Ciclo 6 SUB ADD SW
  26. 26. Diagrama de ciclo: Ciclo 7 SUB ADD
  27. 27. Diagrama de ciclo: Ciclo 8 SUB
  28. 28. Exemplo no Pipeline • Considere a seguinte sequência de instruções lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10 Algo novo na execução?
  29. 29. Diagrama de ciclo: Ciclo 1 LW
  30. 30. Diagrama de ciclo: Ciclo 2 SW LW
  31. 31. Diagrama de ciclo: Ciclo 3 ADD SW LW
  32. 32. Diagrama de ciclo: Ciclo 4 SUB ADD SW LW
  33. 33. Diagrama de ciclo: Ciclo 5 SUB ADD IF/ID SW ID/EX EX/MEM LW MEM/WB ADD ADD 4 <<2 PC ADDR RD Instruction Memory 32 5 RN1 5 RN2 5 WN RD1 Register File RD2 WD 16 E X 32 T N D ALU M U X Zero ADDR Data Memory RD WD M U X
  34. 34. Bloco operativo com pipeline (2) ADD ADD 4 64 bits PC ADDR RD 128 bits <<2 Instruction I 32 16 32 5 5 RN1 Instruction Memory RN2 97 bits 64 bits 5 WN RD1 Register File ALU Zero WD RD2 16 IF/ID E X T N D M U X ADDR Data MemoryRD 32 ID/EX WD EX/MEM M U X MEM/WB Endereço do registrador de escrita vem de OUTRA instrução, que está após no pi
  35. 35. Bloco operativo com pipeline (3) ADD ADD 4 133 bits <<2 64 bits PC ADDR RD Instruction Memory Instruction I 32 16 102 bits 69 bits 32 5 5 RN1 RN2 5 WN RD1 Register File ALU Zero WD RD2 16 E X T N D 32 M U X ADDR Data MemoryRD WD M U X IF/ID ID/EX EX/MEM MEM/WB O número do registrador de destino também é passado através dos registradores ID EX/MEM e MEM/WB, que agora tem de ter 5 bits a mais
  36. 36. Bloco operativo com pipeline (4) • Branches e escrita no último passo ADD ADD 4 64 bits PC ADDR 128 bits <<2 Instruction I RD 32 Instruction Memory 16 32 5 5 RN1 RN2 97 bits 64 bits 5 WN RD1 Register File ALU Zero WD RD2 16 E X T N D 32 M U X ADDR Data MemoryRD WD M U X IF/ID ID/EX EX/MEM MEM/WB Dados sendo movidos da direita para a esquerda podem causar hazard de dados
  37. 37. Visão alternativa – Diagramas com vários Ciclos de relógio CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 Tempo lw $t0, 10($t1) IM sw $t3, 20($t4) add $t5, $t6, $t7 sub$t8, $t9, $t10 REG ALU DM REG IM REG ALU DM IM REG ALU DM IM REG ALU REG REG DM REG
  38. 38. Pipeline Completo Busca Decodificação Execução Memória Escr. Reg. 0 M u x 1 IF/ID EX/MEM ID/EX MEM/WB Add 4 Add Add result PC Ins truction Shift left 2 Address Read register 1 Read data 1 Read register 2 Read data 2 Write register Imem Write data 0 M u x 1 Regs Zero ALU ALU result Address Write data 16 Sign extend 32 Read data 1 M u x 0 Dmem 5 64 bits 133 bits 102 bits 69 bits
  39. 39. 39 Notas • Uma diferença significativa na execução do tipo-R entre multiciclo e pipeline • Escrita no banco de registradores é feito no 5º estágio do pipeline • No Multiciclo, é no 4º passo. Por quê? • A grande diferença entre o pipeline e o multiciclo é o desacoplamento dos passos • O CPI do pipeline ideal é de 1. Por quê?
  40. 40. 40 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  41. 41. 41 Controle do Pipeline • Design inicial motivado pelo monociclo • Mesmos sinais de controle • Observe que • Não há sinal separado para gravação no PC • Não há sinais separados para registradores que são escritos em todo o ciclo • Não há sinal de leitura para a memória de instruções • Não há sinal de leitura para o banco de registradores • É necessário configurar os bits para cada estágio do pipeline • Necessidade de agrupar os sinais de controle para cada estágio
  42. 42. Bloco Operativo com Controle I 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 RegDst ALUOp MemRead Read data 1 M u x 0
  43. 43. Sinais de controle I • 5 estágios • Busca de Instruções e incremento do PC • • • • (IF) Decodificação da instrução e busca dos registradores (ID) Execução e cálculo do Endereço (EX) Acesso à Memória Gravação do resultado no banco de registradores (WB) Instruction R-format lw sw beq Execution/Address Calculation stage control lines Reg ALU ALU ALU Dst Op1 Op0 Src 1 1 0 0 0 0 0 1 X 0 0 1 X 0 1 0 Nada para controlar porque a leitura na memória de instruções e a escrita no PC estão sempre habilitadas Memory access stage control lines Branc Mem Mem h Read Write 0 0 0 0 1 0 0 0 1 1 0 0
  44. 44. Controle através dos Estágios • Controle é propagado junto com os dados – cada registrador de pipeline é estendido para guardar os bits de controle para dos estágio seguintes WB Instruction IF/ID M WB EX Control M WB ID/EX EX/MEM MEM/WB • Os 6 bits do campo FUNCT (tipo R) são recuperados no EX pelo campo de imediato que propaga nos registradores de dados do pipeline
  45. 45. Bloco Operativo com Controle II PCSrc ID/EX 0 M u x 1 WB Control EX/MEM M EX IF/ID WB M MEM/WB WB Add Add Add result Instruction memory 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 Address Branch Shift left 2 MemWrite PC Instruction 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 Campo FUNCT RegDst MemRead 1 M u x 0
  46. 46. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “before<i>” significa a i-nésima Instrução antes de lw Ciclo 1 Ci
  47. 47. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “before<i>” significa a i-nésima Instrução antes de lw Ciclo 2
  48. 48. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “before<i>” significa a i-nésima Instrução antes de lw Ciclo 3
  49. 49. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “before<i>” significa a i-nésima Instrução antes de lw Ciclo 4
  50. 50. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 Ciclo 5
  51. 51. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “after <i>” significa a i-nésima Instrução depois de add Ciclo 6
  52. 52. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “after <i>” significa a i-nésima Instrução depois de add Ciclo 7
  53. 53. Execução com controle • Sequência de instruções: lw sub and or add $10, $11, $12, $13, $14, 20($1) $2, $3 $4, $7 $6, $7 $8, $9 “after <i>” significa a i-nésima Instrução depois de add Ciclo 8
  54. 54. Execução com controle IF: after<4> • Sequência ID: after<3> 0 M u x 1 de instruções: EX: after<2> IF/ID ID/EX 00 Control WB M WB: add $14, . . . EX/MEM MEM/WB 00 000 WB 0 00 EX 0 M 00 0 0 0 1 WB 0 Add Add Add result 4 Address Instruction memory ALUSrc Read register 1 14 Read data 1 Read register 2 Registers Read Write data 2 register Zero ALU ALU result 0 M u x 1 Write data MemtoReg PC Branch Shift left 2 MemWrite 20($1) $2, $3 $4, $7 $6, $7 $8, $9 RegWrite $10, $11, $12, $13, $14, 000 0000 Instruction lw sub and or add MEM: after<1> Address Data memory Read data 1 M u x 0 Write data Instruction [15– 0] Instruction [20– 16] Instruction [15– 11] Clock 9 “after <i>” significa a i-nésima Instrução depois de add Sign extend ALU control 0 M u x 1 ALUOp 14 RegDst Ciclo 9 MemRead
  55. 55. 55 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  56. 56. 56 Pipelines de Instruções • Evolução no número de estágios: – 2 estágios • fetch/decodificação, execução – 3 estágios • fetch, decodificação/busca de operandos, execução – 4 estágios • fetch, decodificação/busca de operandos, execução, store – 5 estágios • fetch, decodificação/cálculo de endereço de operandos, busca de operandos, execução, store – 6 estágios • fetch, decodificação, cálculo de endereço de operandos, busca de operandos, execução, store • • Estágio só de decodificação é usual em processadores CISC. Por que? Porque a tendência da evolução é quebrar o pipeline em mais estágios?
  57. 57. 57 Exemplos Atuais – Pentium III e IV
  58. 58. 58 Exemplos Atuais - ARM
  59. 59. 59 Exemplos Atuais - Atom
  60. 60. 60 Exemplos Atuais – Core i7
  61. 61. 61 Mudança no Cenário • 2000 – Pentium 4 – 20 estágios de pipeline • 1.3 – 2 GHz • 2008 – Pentium D – Dual Core – 31 estágios de pipeline • 2.66 - 3.73 GHz • 2012 – Corei 7 – 6 Cores – 14 estágios de pipeline • ~ 2GHz Porque a frequência baixou?
  62. 62. 62 Pipeline Aritmético • O pipeline pode ser empregado também em outros lugares. • • • • • • Ex.: pipeline aritmético O pipeline aritmético é empregado para acelerar as funções lógicas e aritméticas das ULAs. É a divisão das operações aritméticas em suboperações. Todos microprocessadores modernos possuem pipeline aritmético. Pipeline de Somador de Ponto Flutuante com 5 estágios Os cinco estágios: • • • • • • Comparação dos operandos A e B, Ajuste da mantissa, Soma dos operandos A e B Verificação dos zeros da soma Ajuste do expoente final Resulta no final um expoente e uma mantissa
  63. 63. 63 Pipeline Aritmético
  64. 64. 64 Sumário • Princípios Básicos • MIPS Pipeline: Caminho de Dados • MIPS Pipeline: Controle • Outros exemplos • Exercícios
  65. 65. Exercícios • Dado um processador com 5 estágios de pipeline (F,DR,E,M,W), Tciclo = 2ns, pede-se: • quanto tempo será tomado para executar 1B de instruções, supondo CPI = 1? • qual a aceleração em relação a: • uma máquina monociclo com Período = 8ns; • uma máquina multiciclo com Período = 2ns, CPI = 4; • Graças a melhora na tecnologia, passa-se o pipeline a 8 estágios (F1,F2,DR,E1,E2,M1,M2,W), com Tciclo = 1ns. • Quanto tempo será tomado para executar 1B de instruções, supondo CPI = 1? • Qual a aceleração em relação a: • uma máquina single-cycle com Tcycle = 8ns; • uma máquina multi-cycle com Tcycle = 1ns, CPI = 5;
  66. 66. 66 Para Ler • Patterson, 2ª Edição e 3ª Edição • 6.1 – 6.3
  67. 67. Exercícios • Dicas • Tempo de execução = Nº instruções x CPI x Tciclo • Pipeline => Cuidado => Tencher + Tesvaziar

×