MIPS avanado Escalao Dinmica MIPS 64 com instrues
- Slides: 40
MIPS avançado Escalação Dinâmica
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, 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 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
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 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 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 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. • 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 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 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. 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 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 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 - 10 ciclos DIVD – 40 ciclos ADDD – 2 ciclos
ciclo 1
ciclo 2 • Issue 2 nd LD? (não, conflito estrutural)
ciclo 3 • Issue MULT? (não, emissão fora de ordem)
ciclo 4
ciclo 5
ciclo 6
ciclo 7 • Read multiply operands? (F 2 não disponível)
ciclo 8
ciclo 9 • • Read operands for MULT & SUBD? (sim) (não, unidade Add ocupada) Issue ADDD?
ciclo 11
• ciclo 12 Read operands for DIVD? (F 0 não disponível)
ciclo 13
ciclo 14
ciclo 15
ciclo 16
ciclo 17 • Write result of ADDD? (não, WAR de F 6 para read em DIVD)
ciclo 18
ciclo 19
ciclo 20
ciclo 21
ciclo 22
ciclo 61
ciclo 62
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
- Opowiadanie fantastyczne o gradzie
- Dậy thổi cơm mua thịt cá
- Cơm
- Objetivo de una dinamica
- Dinmica
- Dinmica
- Dinmica
- Compiler
- Mips pipeline simulator in c
- Matrix multiplication mips
- Mips selection sort
- Mips pipeline datapath
- Arquitectura mips
- Qcomments
- Hoon programming language
- Mips implementation overview
- Mips overflow detection
- Mips instruction encoding
- Arquitectura mips
- Mips code
- Mips
- L 0
- Addi computer architecture
- Slti mips
- Mips leaf procedure example
- Spim tutorial
- Language
- Assembly language statement format
- Hello world mips
- Pcsrc mips
- Mips
- Mips code examples
- Recursion in assembly
- Mips instruction format
- Mips simulator
- Mips 430
- Seven jumps tutorial
- Eforwarding
- Mips beqz
- Mips nested functions
- Bubble sort in mips