MIPS avanado Escalao Dinmica MIPS 64 com instrues

  • Slides: 40
Download presentation
MIPS avançado Escalação Dinâmica

MIPS avançado Escalação Dinâmica

MIPS 64 com instruções de inteiros e de pontos flutuantes

MIPS 64 com instruções de inteiros e de pontos flutuantes

Instruções de ponto flutuante LS LD SS SD ADDD DIVD MULD SUBD F 5,

Instruções de ponto flutuante LS LD SS SD ADDD DIVD MULD SUBD F 5, 0(R 1) – load FP simples (32 bits) F 6, 0(R 1) - load FP duplo (64 bits) F 6, 0(R 1) – store FP simples F 6, 0(R 1) – store FP duplo F 6, F 10, F 8 – adição de F 10 e F 8 com resultado em F 6 F 0, F 2, F 4 - divisão de F 2 por F 4 com resultado em F 0 F 6, F 10, F 8 – multiplicação de F 10 com F 8 com resultado em F 6, F 10, F 8 – subtração de F 10 com F 8 com resultado em F 6 Registradores do MIPS 64 32 registradores de uso geral de 64 bits, R 0, . . . , R 31, registradores inteiros. 32 registradores de ponto flutuante, F 0, . . . , F 31, 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.

Situações de dependência que levam a: RAW – Read After Write – ler depois

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 F 0, F 2, F 4 ADDD F 6, F 0, F 8 SD F 6, 0(R 1) SUBD F 8, F 10, F 14 MULD F 6, F 10, F 8 RAW - Dependência entre DIVD e ADDD – no uso de F 0 WAR - Antidependência entre ADDD e SUBD - no uso de F 8 WAW - Dependência de saída entre ADDD e MULD ( ADDD pode terminar depois de MULD)

Escalaçao Dinâmica usando scoreboard (placar) semelhante ao usado no CDC 6600

Escalaçao Dinâmica usando scoreboard (placar) semelhante ao usado no CDC 6600

A função do scoreboard é controlar a execução de instruções, e todos os fluxos

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

Escalação Dinâmica: Estrutura do MIPS com Placar (scoreboard) Duas unidades de Multiplicação FP Uma

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

1. Estágio de Emissão • Se uma unidade funcional estiver livre e nenhuma instrução

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.

2. Leitura de operandos • O scoreboard monitora a disponibilidade dos operandos fonte. Um

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.

3. Execução • A unidade funcional inicia a execução ao receber os operandos. •

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.

4. Escrita do resultado (finalização) • Uma vez que o scoreboard é avisado de

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 F 0, F 2, F 4 ADDD F 10, F 8 SUBD F 8, F 14 onde ADDD depende de F 8, 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.

PARTES DO SCOREBOARD 1 - Status da Instrução Indica em qual dos quatro passos

PARTES DO SCOREBOARD 1 - Status da Instrução Indica em qual dos quatro passos a instrução se encontra. Instrução emissão LD F 6, 34(R 2) v LD F 2, 45(R 3) v MULD F 0, F 2, F 4 v SUBD F 8, F 6, F 2 v DIVD F 10, F 6 v ADDD F 6, F 8, F 2 v leitura v v Ex. completa v v Result. escrito v

Partes do Scoreboard 2. Status da unidade funcional Indica o estado da unidade funcional.

Partes do Scoreboard 2. 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.

Exemplo de Status da unidade funcional dest Unid. Func. Busy op Int Mult 1

Exemplo de Status da unidade funcional dest Unid. Func. Busy op Int Mult 1 Mult 2 Add Divide yes no yes fontes Fi Fj Fk load mult F 2 F 0 R 3 F 2 F 4 sub div F 8 F 10 F 6 F 0 F 2 F 6 un. func. Qj Flags de pronto Qk int Mult 1 Rj Rk No No yes no No yes

Partes do Scoreboard 3. Status dos registradores • Indica qual unidade funcional escreve em

Partes do Scoreboard 3. 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. F 0 F 2 Unid. Mult 1 int Func. F 4 F 6 F 8 Add F 10 Divide F 12 . . . F 30

Exemplo Tempo de execução LD – 1 ciclo SUBD – 2 ciclos MULTD -

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

ciclo 1

ciclo 1

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

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

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

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

ciclo 4

ciclo 4

ciclo 5

ciclo 5

ciclo 6

ciclo 6

ciclo 7 • Read multiply operands? (F 2 não disponível)

ciclo 7 • Read multiply operands? (F 2 não disponível)

ciclo 8

ciclo 8

ciclo 9 • • Read operands for MULT & SUBD? (sim) (não, unidade Add

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

ciclo 11

ciclo 11

 • ciclo 12 Read operands for DIVD? (F 0 não disponível)

• ciclo 12 Read operands for DIVD? (F 0 não disponível)

ciclo 13

ciclo 13

ciclo 14

ciclo 14

ciclo 15

ciclo 15

ciclo 16

ciclo 16

ciclo 17 • Write result of ADDD? (não, WAR de F 6 para read

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

ciclo 18

ciclo 18

ciclo 19

ciclo 19

ciclo 20

ciclo 20

ciclo 21

ciclo 21

ciclo 22

ciclo 22

ciclo 61

ciclo 61

ciclo 62

ciclo 62

Resumo • Idéias chaves do scoreboard – Estágio ID verifica o conflito estrutural –

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