1 / 53

AULA 06 - MIPS PIPELINE

AULA 06 - MIPS PIPELINE. IMPLEMENTAÇÃO DO MIPS MONOCICLO. RegDst. Branch. Control. MemRead. MemtoReg. Zero. RegWrite. ALUSrc. MemWrite. ALUControl. ALUOp. A. PC. R I. B. ALUOut. M D R. PASSOS relativos ao MIPS Multiciclo. Aritmética reg-reg. Branch Step 3.

felcia
Download Presentation

AULA 06 - MIPS PIPELINE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AULA 06 - MIPSPIPELINE

  2. IMPLEMENTAÇÃO DO MIPS MONOCICLO RegDst Branch Control MemRead MemtoReg Zero RegWrite ALUSrc MemWrite ALUControl ALUOp

  3. A PC R I B ALUOut M D R

  4. PASSOS relativos ao MIPS Multiciclo Aritmética reg-reg Branch Step 3

  5. PASSOS (CICLOS) Passo 1: Busca da instrução (Instruction Fetch) Passo 2: Decod. da Instrução e Busca de Registradores Passo 3 (dependente da instrução) Referência à memória: ALUOut = A + sign-extend(IR[15-0]); Aritmética Reg-Reg: ALUOut = A op B; Aritmética Reg-Imm: ALUOut = A op Imm; Branch: se (A==B) PC = ALUOut; Passo 4 (Aritmética ou acesso à memória) Acesso à memória através de loads e stores MDR = Memory[ALUOut]; ou Memory[ALUOut] = B;Fim das instruções R-type: Reg[IR[15-11]] = ALUOut; Passo 5 (Write-back, para instrução load) Reg[IR[20-16]]= MDR;

  6. MULTICICLO x PIPELINE • Multiciclo: a instrução é executada em vários estágios (S) sequenciais. Latch Latch Latch S1 S2 Sk Estágio ATIVO no ciclo 2 Apenas uma instrução por vez. • Pipeline: vários estágios funcionam juntos para instruções diferentes. Latch Latch Latch Sk S1 S2 instrução i instrução i - 1 instrução i – (k -1) k instruções por vez.

  7. A B C D Pipeline: é natural! • Exemplo de Lavanderia • Tem-se os volumes A, B, C e D de roupas para lavar, secar e passar • A lavadora leva 30 minutos • A secadora leva 40 minutos • “Passadeira” leva 20 minutos

  8. A B C D Lavanderia Sequencial 6 Meia noite 7 8 9 11 10 Tempo 30 40 20 30 40 20 30 40 20 30 40 20 T a s k O r d e r • A lavanderia sequencial leva 6 horas para 4 volumes • Se usarem o “pipeline”, quanto tempo levaria?

  9. 30 40 40 40 40 20 A B C D Lavanderia em Pipeline 6 Meia noite 7 8 9 11 10 Tempo o r d e m • Lavanderia em Pipeline leva 3.5 horas

  10. 30 40 40 40 40 20 A B C D Lições sobre o Pipeline • O Pipeline ajuda melhorar o throughput de um trabalho por completo • A taxa do Pipeline é limitada pelo estágio mais lento • Speedup ideal = Número de estágios • Comprimentos desbalanceados dos estágios do pipeline reduzem o speedup • O tempo para “preencher” o pipeline e o tempo para “limpar” o pipeline reduzem o speedup 6 7 8 9 Tempo o r d e m

  11. Pipelines em Computadores • Executa bilhões de instruções, tal que o importante seja o throughput • Fatores desejados: • todas as instruções tenham o mesmo comprimento, • os campos de registradores sejam localizados numa mesma posição no formato de instrução, • referências à memória somente através de instruções loads ou stores • Speedup: para um programa de n instruções, num computador pipeline de k estágios, • relativo a um computador multiciclo de k ciclos, considerando mesmo tempo de ciclo. Tempo do multiciclo = n . k .tempociclo Tempo do pipeline = (k + n-1).tempociclo Speedup = tempo do multiciclo/tempo do pipeline = n.k/ (k + n - 1) Para n grande, speedup ~ k

  12. Pipeline no MIPS multiciclo pipeline

  13. Implementação do Pipeline • O que facilita: • Todas as instruções com mesmo comprimento • Somente poucos formatos de instruções • Os operandos de memória aparecem somente em loads e stores • O que difículta: • conflitos estruturais: supor que temos somente uma memória • conflitos de controle: preocupar com instruções de branch • conflitos de dados: uma instrução depende de uma instrução prévia • Manipulação de exceções • Melhorar o desempenho com execução fora-de-ordem, etc.

  14. Idéia Básica SOMADOR REGS. SOMADOR MEM. INSTR. ALU MEM. DADOS

  15. Fluxo de dados com latch’s entre os estágios EX/MEM MEM/WB IF/ID ID/EX somador somador Regist. PC ALU Mem. Instr. Mem. dados

  16. Pipelines representados graficamente

  17. CONTROLE DO PIPELINE PCSrc Branch RegWrite Mem Read Regs. Mem toReg ALUSrc PC ALU Mem. Inst. Mem. dados Mem Write ALUOp RegDst

  18. Controle do Pipeline • O que necessita ser controlado em cada estágio? • Busca de Instrução e Incremento do PC • Decodificação da Instrução / Busca de Registradores • Execução • Estágio de Memória • Write Back • Cada estágio deve funcionar para uma determinada instrução, simultaneamente a outros estágios.

  19. Os sinais são repassados pelos estágios como os dados Controle do Pipeline MEM/WB EX/MEM IF/ID ID/EX

  20. Fluxo de dados e controle PCSrc RegWrite Branch MemRead MemtoReg ALUOp MemWrite RegDst

  21. Dependências de dados • Pode ocorrer iniciando uma instrução antes de terminar a anterior • dependências que “vão retroceder no tempo” são conflitos de dados

  22. what if this $2 was $13? Solução por Antecipação – usar os resultados temporários, sem esperar que eles sejam escritos - Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador - Antecipação da ALU

  23. Solução por Antecipação Unidade de antecipação

  24. Antecipação do estágio EX/MEM

  25. Antecipação do estágio MEM/WB

  26. CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)

  27. Nem sempre é possível solucionar por antecipação (Fazer o Load de uma palavra pode causar um conflito) - Se uma instrução tenta ler um registrador seguindo uma instrução de load word que escreve no mesmo registrador. • Portanto, necessitamos que a unidade de detecção de conflitos paralize, em um ciclo, as instruções seguintes ao load word

  28. Parada (Stall) manter instruções nos mesmos estágios

  29. Parada com inserção de nop a partir do estágio EX

  30. Unidade de detecção de conflitos • A parada faz com que uma instrução que não faz nada (nop) prossiga

  31. Exemplo de inserção de parada sinais 0

  32. Conflitos de Desvio (Branch) • Quando é decidido pelo branch, outras instruções estão em pipeline! • O pipeline equivale a previsão de “não ocorrer branch” • Solução: hardware para desprezar as instruções posteriores caso haja branch

  33. Controle para limpar as instruções posteriores além de antecipar o cálculo da condição IFFlush

  34. Exemplo de beq e atualização do PC 44 40 endereço 72 lw $4, 50($7) Resulta em NOP

  35. RESULTADO DO CONTROLE DE DESVIO Necessidade de limpar apenas uma instrução

  36. Melhorando o desempenho • Tentar evitar paradas! P.ex., reordenar essas instruções: lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) sw $t0, 4($t1) • Adicionar um “branch delay slot” • permitindo que a próxima instrução seguida do branch seja sempre executada • Confiar no compilador para preencher o slot com algo útil • Processador Superescalar: iniciar mais que uma instrução no mesmo ciclo

  37. MIPS superescalar

  38. MIPS superescalar

  39. EXEMPLO O código: loop: lw $t0, 0 ($s1) # t0 = elemento de array add $t0, $t0,$s2 # soma o elemento do array a um valor escalar em $s2 sw $t0, 0($s1) # armazena o resultado addi $s1, $s1, -4 # decrementa o ponteiro bne $s1, $zero, loop # desvia para loop se $s1 diferente de 0 pode ser escalonado para o MIPS superescalar da seguinte forma: 5 instruções em 4 ciclos

  40. Desdobramento de laço (loop unrolling) 14 instruções em 8 ciclos

  41. Escalação Dinâmica • O hardware realiza a “escalação” • O hardware tenta encontrar instruções para executar • É possível execução fora de ordem • Execução especulativa e previsão dinâmica de desvio (branch) • DEC Alpha 21264: tem 9 estágios pipeline, 6 instruções simultâneas • PowerPC e Pentium: tabela de história de desvio • É importante a tecnologia do compilador

  42. Escalação Dinâmica Despacho em ordem Unidades funcionais Execução fora de ordem Unidade de Comprometimento: escrita final do resultado em ordem

  43. A microarquitetura do Pentium 4

  44. Multiprocessadores • criar computadores potentes conectando muitos computadores pequenos Multiprocessador de memória distribuída Multiprocessador de memória compartilhada centralizada

  45. CPU de um único thread • Thread é uma seqüência de instruções de um programa RAM - Diferentes cores = quatro diferentes programas em execução na memória Front end – busca até 4 instruções 7 Pipelines, sendo apenas o programa de cor vermelha em execução Nota-se os espaços em branco dos estágios pipeline ociosos

  46. Single Threaded SMP (Symmetric Multiprocessor) Os diferentes programas são executados em CPUs distintos para não deixar muitos programas em espera. Programa vermelho numa CPU amarelo em outra

  47. Superthreading ou multithreading • CPU com capacidade para executar mais de um thread simultaneamente, porém, cada estágio do pipeline deve conter instruções de apenas um thread • Não se pode emitir instruções de threads distintos num mesmo instante

  48. Hyper-threading (HT)Simultaneous multithreading (SMT) • Não existe restrição de emissão de instruções para threads diferentes em cada clock. • Compara-se ao single-threaded SMP Single-threaded SMP

  49. Empty Thread 1 Clock cycles Thread 2 Thread 3 Thread 4 Issue slots Formas de Execução dos Threads Superscalar Simultaneous Multithreading Multithreading

More Related