1 / 40

MIPS avançado Escalação Dinâmica

MIPS avançado Escalação Dinâmica. MIPS64 com instruções de inteiros e de pontos flutuantes. Instruções de ponto flutuante. LS F5, 0(R1) – load FP simples (32 bits) LD F6, 0(R1) - load FP duplo (64 bits) SS F6, 0(R1) – store FP simples

mya
Download Presentation

MIPS avançado Escalação Dinâmica

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. MIPS avançadoEscalação Dinâmica

  2. MIPS64 com instruções de inteiros e de pontos flutuantes

  3. Instruções de ponto flutuante LS F5, 0(R1) – load FP simples (32 bits) LD F6, 0(R1) - load FP duplo (64 bits) SS F6, 0(R1) – store FP simples SD F6, 0(R1) – store FP duplo ADDD F6, F10, F8 – adição de F10 e F8 com resultado em F6 DIVD F0, F2, F4 - divisão de F2 por F4 com resultado em F0 MULD F6, F10, F8 – multiplicação de F10 com F8 com resultado em F6 SUBD F6, F10, F8 – subtração de F10 com F8 com resultado em F6 Registradores do MIPS64 32 registradores de uso geral de 64 bits, R0,...,R31, registradores inteiros. 32 registradores de ponto flutuante, F0, ..., F31, que podem ter dados de precisão simples (32 bits) e dados de precisão dupla (64 bits). Observação: no livro, LS = L.S, LD= L.D, ADDD = ADD.D, etc.

  4. Situações de dependência que levam a: RAW – Read After Write – ler depois de escrever WAR – Write After Read – escrever depois de ler WAW – Write After Write – escrever depois de escrever quando se pensa em execução fora de ordem. Exemplos: DIVD F0, F2, F4 ADDD F6, F0, F8 SD F6, 0(R1) SUBD F8,F10, F14 MULD F6, F10, F8 RAW - Dependência entre DIVD e ADDD – no uso de F0 WAR - Antidependência entre ADDD e SUBD - no uso de F8 WAW - Dependência de saída entre ADDD e MULD ( ADDD pode terminar depois de MULD)

  5. Escalaçao Dinâmicausando scoreboard (placar) semelhante aousado no CDC6600

  6. A função do scoreboard é controlar a execução de instruções, e todos os fluxos de dados entre os registradores e as unidades funcionais scoreboard

  7. Escalação Dinâmica: Estrutura do MIPS com Placar (scoreboard) Duas unidades de Multiplicação FP Uma unidade de Divisão FP Uma unidade de Adição FP Uma unidade de inteiros

  8. 1 .Estágio de Emissão • Se uma unidade funcional estiver livre e nenhuma instrução ativa tem o mesmo registrador destino, o scoreboard emite a instrução para a unidade funcional e atualiza a estrutura de dados interna. Esse passo substitui uma porção do passo ID(Instruction Decode) no MIPS pipeline. • Assegurando que nenhuma instrução ativa tem o mesmo registrador destino, garante-se que WAW seja resolvido. • Se um conflito estrutural ou WAW existe, então, a emissão da instrução pára e nenhuma instrução posterior é emitida até que o conflito seja resolvido. • Quando o estágio de emissão pára, causa o preenchimento do buffer entre IF(Instruction Fetch) e o estágio de emissão. Se o buffer é de única entrada, IF pára imediatamente. Se o buffer é uma fila com múltiplas instruções, IF pára após a fila ficar cheia.

  9. 2. Leitura de operandos • O scoreboard monitora a disponibilidade dos operandos fonte. Um operando fonte é disponível se nenhuma instrução anterior ativa irá sobrescrevê-lo. • Quando os operandos fonte são disponíveis, o scoreboard diz à unidade funcional para realizar a leitura dos operandos nos registradores e iniciar a execução. • O scoreboard resolve assim RAW dinamicamente nesse passo, e instruções podem ser enviados para execução fora de ordem. • Este passo junto com o anterior (emissão) completa a função do passo ID no pipeline MIPS simples.

  10. 3. Execução • A unidade funcional inicia a execução ao receber os operandos. • Quando o resultado estiver pronto, a unidade notifica o scoreboard que a execução foi realizada. • Este passo substitui o EX no pipeline MIPS e toma vários ciclos no caso da unidade de ponto flutuante.

  11. 4. Escrita do resultado (finalização) • Uma vez que o scoreboard é avisado de que a execução foi realizada, o scoreboard verifica se existe violação de WAR e pára a finalização da instrução caso necessário. • O perigo de violação de WAR existe num caso como: DIVD F0, F2, F4 ADDD F10, F0, F8 SUBD F8, F8, F14 onde ADDD depende de F8, que será alterado por SUBD. • Nesse caso, o scoreboard irá parar SUBD no seu estágio de finalização até que ADDD faça a leitura dos seus operandos. • Se o perigo de violação de WAR não existe, ou for eliminado, o scoreboard diz à unidade funcional para escrever o resultado no registrador de destino. • Esse passo substitui o WB no pipeline MIPS.

  12. PARTES DO SCOREBOARD1- Status da Instrução Indica em qual dos quatro passos a instrução se encontra. Instrução emissão leitura Ex.completa Result.escrito LD F6,34(R2) v v v v LD F2,45(R3) v v v MULD F0,F2,F4 v SUBD F8,F6,F2 v DIVD F10,F0,F6 v ADDD F6,F8,F2 v

  13. Partes do Scoreboard2. Status da unidade funcional Indica o estado da unidade funcional. Existem nove campos para cada unidade funcional: • Busy – indica se a unidade está ocupada • Op – operação a realizar na unidade (P.ex: add, sub) • Fi – registrador de destino • Fj, Fk – número dos registradores fonte • Qj, Qk – unidades funcionais produzindo os valores para fontes Fj, Fk. • Rj, Rk – flags indicando que Fj, Fk estão prontos.

  14. Exemplo de Status da unidade funcional Unid. Busy op Fi Fj Fk Qj Qk Rj Rk Func. Int yes load F2 R3 No Mult1 yes mult F0 F2 F4 int No yes Mult2 no Add yes sub F8 F6 F2 int yes no Divide yes div F10 F0 F6 Mult1 No yes dest fontes un.func. Flags de pronto

  15. Partes do Scoreboard3. Status dos registradores • Indica qual unidade funcional escreve em cada registrador, se uma instrução ativa tem o registrador como destino. • O campo fica em branco quando não existe nenhuma instrução pendente que escreva no registrador. Regs. F0 F2 F4 F6 F8 F10 F12 ..... F30 Mult1 int Add Divide Unid. Func.

  16. Tempo de execução LD – 1 ciclo SUBD – 2 ciclos MULTD - 10 ciclos DIVD – 40 ciclos ADDD – 2 ciclos Exemplo

  17. ciclo 1

  18. ciclo 2 (não, conflito estrutural) • Issue 2nd LD?

  19. ciclo 3 • Issue MULT? (não, emissão fora de ordem)

  20. ciclo 4

  21. ciclo 5

  22. ciclo 6

  23. ciclo 7 • Read multiply operands? (F2 não disponível)

  24. ciclo 8

  25. ciclo 9 • Read operands for MULT & SUBD? • Issue ADDD? (sim) (não, unidade Add ocupada)

  26. ciclo 11

  27. ciclo 12 • Read operands for DIVD? (F0 não disponível)

  28. ciclo 13

  29. ciclo 14

  30. ciclo 15

  31. ciclo 16

  32. ciclo 17 • Write result of ADDD? (não, WAR de F6 para read em DIVD)

  33. ciclo 18

  34. ciclo 19

  35. ciclo 20

  36. ciclo 21

  37. ciclo 22

  38. ciclo 61

  39. ciclo 62

  40. Resumo • Idéias chaves do scoreboard • Estágio ID verifica o conflito estrutural • Emissão em ordem, respeitando WAW • Espera dos operandos fora de ordem, respeitando RAW • Execução e término fora de ordem • Escrita do resultado fora de ordem, respeitando WAR

More Related