Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:[email protected].
Transcript of Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:[email protected].
![Page 2: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/2.jpg)
Agenda
• Introdução• Pipeline• Caminho de dados• Controle• Problemas no projeto de pipeline• Forwarding• Introdução de Stalls• Descartando instruções.
![Page 3: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/3.jpg)
Introdução
• Em uma linha de produção de carros costumam dividir o trabalho de fabricação em etapas.– Estas etapas visam possibilitar a realização de
operações em paralelo.– Diminui o tempo para montagem de vários carros.
![Page 4: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/4.jpg)
Introdução
• Lavando roupas– Etapas: lavar, secar, passar e guardar
![Page 5: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/5.jpg)
Introdução
• Lavando roupas– Etapas: lavar, secar, passar e guardar
![Page 6: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/6.jpg)
Pipeline
• Técnica de implementação em que várias instruções são sobrepostas na execução.
• Sob condições ideais, o ganho de velocidade com a técnica de pipeline é igual ao número de estágios do pipeline.
![Page 7: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/7.jpg)
Pipeline
• Etapas de uma instrução MIPS:– Buscar instrução da memória– Ler registradores enquanto a instrução é
decodificada. – Executar a operação ou calcular um endereço.– Acessar um operando na memória de dados.– Escrever o resultado em um registrador.
![Page 8: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/8.jpg)
Pipeline
• Vamos fazer de conta que:Classe de instrução
Busca de instrução
Leitura de registradores
Operação da ALU
Acesso a dados
Escrita de registradores
Tempo Total
lw 200 ps 100 ps 200 ps 200 ps 100 ps 800 ps
sw 200 ps 100 ps 200 ps 200 ps 700 ps
form – R 200 ps 100 ps 200 ps 100 ps 600 ps
branch 200 ps 100 ps 200 ps 500 ps
![Page 9: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/9.jpg)
Pipeline Projeto Ciclo Único
Em nosso estudo, padronizamos que a leitura ao banco de registradores leva metade do tempo do ciclo de clock e é sempre realizada na segunda metade.
Escritas ao banco de registradores também leva metade do tempo do ciclo de clock e é sempre realizada na primeira metade.
Projeto com pipeline
![Page 10: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/10.jpg)
Pipeline
• Observem que :
rápida. mais vezes4 seja,ou ,ps. 200
ps. 80000,4
ps. 0200.000.70
ps. 0800.000.00
:a tendepipeline com aarquitetur a Logo
Quantidade de instruções
Arquitetura sem pipeline Arquitetura com pipeline
1 800 ps 900 ps
2 1600 ps 1100 ps
3 2400 ps 1300 ps
4
…
1.000.000 800.000.000 ps. 200.000.700 ps.
![Page 11: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/11.jpg)
Pipeline
• A introdução de pipeline pode ser facilitada caso o conjunto de instruções de suporte a algumas características:– Todas as instruções possuem mesmo tamanho.– Apenas alguns formatos de instruções.– Operandos de memória aparecem apenas em
loads e stores.
![Page 12: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/12.jpg)
Pipeline
• Dificuldades na implementação de pipeline– E se:• Tivermos apenas uma memória?
– Risco estrutural• Necessidade de nos preocuparmos com instruções
ramificadas (decisões)?– Risco de controle
• Uma instrução depende de uma instrução anterior?– Risco de dados
– Construiremos um pipeline simples e veremos esses problemas.
![Page 13: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/13.jpg)
O que precisamos adicionar para realmente dividir o caminho de dados em estágios?
Como fica o caminho de dados?
![Page 14: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/14.jpg)
Registradores. São adicionados quatro registradores IF/ID, ID/EX, EX/MEM, MEM/WB
Este projeto apresenta alguma falha?Que instruções podemos executar para manifestar o problema?
![Page 15: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/15.jpg)
add $s1, $s2, $s4beq $t1, $t2, offset #O que acontece?…
Teremos o endereço $s1 em IF/ID quando precisarmos armazenar o resultado da soma?
![Page 16: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/16.jpg)
Caminho de dados corrigidoO endereço do registrador de escrita é passado para os demais registradores
No estágio de escrita, o mesmo é repassado para o banco de registradores
![Page 17: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/17.jpg)
Representando Pipelines
Auxilia a responder questões do tipo:•Quantos ciclos é necessário para execução deste código?•Qual ALU está sendo usada no ciclo 5?
![Page 18: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/18.jpg)
E como fica a Unidade de Controle?
![Page 19: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/19.jpg)
Controle do pipeline
• Lembrem-se, temos 5 estágios:– Busca da instrução e incremento do PC– Decodificação da instrução / Busca do registrador– Execução– Estágio da memória– Escrita adiada
• Cada um destes estágios possui elementos que precisam ser configurados pela unidade de controle.
![Page 20: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/20.jpg)
Transferir os sinais de controle exatamente como os dados.
![Page 21: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/21.jpg)
Resolvendo problemas do Pipeline
• Como citado inicialmente, podemos ter três problemas principais no projeto de pipeline:– Risco estrutural• Criando um novo projeto.
– Risco de dados– Risco de controle
![Page 22: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/22.jpg)
Risco de Dados
• Problemas com o início da próxima instrução antes do término da primeira.
• Seja o seguinte trecho de código:sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
O que acontece neste trecho?
![Page 23: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/23.jpg)
Risco de Dados
O risco de dados correspondem às dependências que voltam no tempo
Na execução desta instrução teremos algum problema?
![Page 24: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/24.jpg)
Risco de Dados
• Soluções de software– Fazer o compilador garantir a inexistência do risco
de dados.– Isto é possível através da inserção de operações
nop entre as instruções.– Uma instrução nop significa no operation, ou seja,
não realiza nenhuma operação.– Ela apenas atrasa o início da instrução
subseqüente.
![Page 25: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/25.jpg)
Risco de Dados
sub $2, $1, $3and $12, $2, $5or $13, $6, $2add $14, $2, $2sw $15, 100($2)
sub $2, $1, $3nopnopand $12, $2, $5or $13, $6, $2add $14, $2, $2sw $15, 100($2)
Qual o problema desta opção?
![Page 26: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/26.jpg)
Dado é repassado de MEM/WB para operando 2 da ALU
Outra solução é utilizando ForwardingUse resultados temporários, não espere que eles
sejam escritos.Dado é repassado
de EX/MEM para operando 1 da ALU
![Page 27: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/27.jpg)
Forwarding
Unidade de forwarding compara registradores
Se o registrador rd da primeira instrução for igual a um dos operandos da instrução anterior, é realizado forwarding
![Page 28: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/28.jpg)
Forwarding
• No entanto, forwarding nem sempre é possível– O que aconteceria se tivéssemos uma instrução
de load seguida por uma outra instrução que lê do mesmo registrador?lw $2, 20($1)and $4, $2, $5or $8, $2, $6add $9, $4, $2slt $1, $6, $7
![Page 29: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/29.jpg)
Falha usando forwarding
Momento que dispomos do dado é
posterior ao momento que precisamos dele.
![Page 30: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/30.jpg)
Podemos inserir stalls (parar) no pipeline mantendo uma instrução no mesmo estágio.
Ao inserir stalls, conseguimos alinhar
estes momentos
![Page 31: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/31.jpg)
Unidade de detecção de riscos (hazard) Unidade de
detecção de riscos
Fios relativo a rs e rt da instrução que antecede lw
Fio relativo a rt de lw
Comparação
Se houver dependência, o valor passado é 0.
![Page 32: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/32.jpg)
Risco de Controle
• Seja a seguinte seqüência40 beq $1,$3,28
44 and $12,$2,$5
48 or $13,$6,$2
52 add $14,$2,$2
…
72 lw $4,50($7)
Conseguem ver algum problema?
No pipeline, qual caminho devo optar?
![Page 33: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/33.jpg)
Risco de Controle
• Optar por um dos caminhos
E o que acontece se optarmos pelo caminho errado?
Descartamos as instruções.
![Page 34: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/34.jpg)
Hardware para descartar instruções.É inserido um novo somador para calcular o desvio durante a etapa de decodificação.
É inserido um novo somador para calcular o desvio durante a etapa de decodificação.
Uma outra instrução é selecionada
Se a escolha de desvio foi errada, é desencadeado um stall
Zera IF/IDZera IF/ID
![Page 35: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/35.jpg)
Desvios
• Se o desvio for tomado, temos uma penalidade de um ciclo.
• Para nosso projeto simples, isso é razoável.• Com pipelines mais profundos, a penalidade
aumenta e a previsão de desvio estático diminui drasticamente o desempenho.– Solução: previsão de desvio dinâmico.
![Page 36: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/36.jpg)
Desvios
![Page 38: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/38.jpg)
Agenda
• Tratamento de Exceções.• Técnicas sofisticadas de previsão de desvio.• Pipeling Avançado
![Page 39: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/39.jpg)
Exceções
• Seja a seguinte instrução:– add $1, $2, $1
• O que acontece com o pipeline caso esta instrução gere um overflow aritmético?
![Page 40: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/40.jpg)
Tratamento de Exceções.IF.Flush
ID.Flush
EX.Flush
Zera a memória IF/ID provocando um flush na instrução anterior a atual que foi buscada
Zera a memória IF/ID provocando um flush na instrução anterior a atual que foi buscada
Zera a memória EX/MEM provocando um flush na instrução que está em execução
Zera a memória EX/MEM provocando um flush na instrução que está em execução
Zera a memória ID/EX provocando um flush na instrução anterior a atual que foi decodificada
Zera a memória ID/EX provocando um flush na instrução anterior a atual que foi decodificada
Após flush das instruções anteriores, a memória de instrução carrega o valor 0x80000180: o endereço da rotina de tratamento de exceção
Após flush das instruções anteriores, a memória de instrução carrega o valor 0x80000180: o endereço da rotina de tratamento de exceção
![Page 41: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/41.jpg)
Pipelining Avançado
• Faz uso de técnicas para prover o aumento do ILP (paralelismo em nível de instrução).
• Podemos adotar duas abordagens:– Aumento do número de estágios do pipeline.– Aumento do número de componentes internos do
processador. Esta abordagem é conhecida como despacho múltiplo, pois permite o início de mais de uma instrução em cada estágio de pipeline.
![Page 42: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/42.jpg)
Despacho múltiplo
• Despacho múltiplo estático– Maior parte das decisões de despacho, são
tomadas pelo compilador.– Mais propenso a erros, e menos portável.
• Despacho múltiplo dinâmico– Maior parte das decisões de despacho, são
tomadas pelo processador em tempo de execução.
– Menos propenso a erro e mais portável.
![Page 43: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/43.jpg)
Despacho Múltiplo
• Independente da técnica de despacho, é empregado o conceito de especulação.
• A especulação é uma técnica pela qual o compilador ou processador advinha o resultado de uma instrução com o objetivo de procurar por instruções independentes (que possam ser executadas em paralelo).
![Page 44: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/44.jpg)
Despacho Múltiplo Estático
• Também conhecido como VLIW (palavra de instrução muito longa).
• Eles recebem este nome porque o pacote de instruções fornecidos pelo compilador em um dado ciclo, pode ser visto como uma única instrução grande.
• Utilizado na arquitetura IA-64.
![Page 45: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/45.jpg)
Despacho Múltiplo EstáticoAo invés de 32, são buscados 64 bits da memória de instruções
Ao invés de 32, são buscados 64 bits da memória de instruções
O compilador gera código que pode ser colocado em paralelo.
O compilador gera código que pode ser colocado em paralelo.
Caso não exista nenhum conjunto de duas instruções passíveis de ser colocadas em paralelo, é inserido uma instrução NOP.
Caso não exista nenhum conjunto de duas instruções passíveis de ser colocadas em paralelo, é inserido uma instrução NOP.
![Page 46: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/46.jpg)
Despacho Múltiplo EstáticoAlguns elementos do hardware são duplicados para permitir execução em paralelo.
Alguns elementos do hardware são duplicados para permitir execução em paralelo.
Memória de instruções apresenta duas saídas.Memória de instruções apresenta duas saídas.
Banco de Registradores apresenta saídas e entradas duplicadas
Banco de Registradores apresenta saídas e entradas duplicadas
Duas ALUSDuas ALUSDois estensores de sinalDois estensores de sinal
![Page 47: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/47.jpg)
Despacho Múltiplo Estático
• Como este loop seria escalonado em um pipeline com despacho duplo estático?
Loop: lw $t0, 0($s1) addu $t0, $t0, $s2 sw $t0, 0($s1) addi $s1, $s1, -4 bne $s1, $zero, Loop
![Page 48: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/48.jpg)
Despacho Múltiplo EstáticoInstrução da ALU ou desvio Instrução de transferência de
dadosCiclo de Clock
Loop: nop lw $t0, 0($s1) 1
addi $s1, $s1, -4 nop 2
addu $t0, $t0, $s2 nop 3
bne $s1, $zero, Loop sw $t0, 4($s1) 4
![Page 49: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/49.jpg)
Despacho Múltiplo Dinâmico
• Processadores com despacho múltiplo dinâmico também são conhecidos como processadores superescalares.
• Nestes processadores, instruções são despachadas em ordem e, em tempo de execução, o processador realiza especulação.
• O código escalonado é garantido pelo hardware.
![Page 50: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/50.jpg)
Despacho Múltiplo Dinâmico
Busca e decodificação de instruções
Busca e decodificação de instruções
Estação de
Reserva
Estação de
Reserva
InteiroInteiro Ponto Flutuante
Ponto Flutuante Load/StoreLoad/Store
Unidade de CommitUnidade de Commit
InteiroInteiro
Estação de
Reserva
Estação de
Reserva
Estação de
Reserva
Estação de
Reserva
Estação de
Reserva
Estação de
Reserva
Realiza a busca e decodificações de instruções, delegando a instrução para sua respectiva unidade funcional
Realiza a busca e decodificações de instruções, delegando a instrução para sua respectiva unidade funcional
Buffers que armazenam operandos e a operação. Aguarda disponibilidade da unidade funcional
Buffers que armazenam operandos e a operação. Aguarda disponibilidade da unidade funcional
Executam a operação desejada. Resultado é armazenado na estação de reserva ou na unidade de commit. Execução fora de ordem
Executam a operação desejada. Resultado é armazenado na estação de reserva ou na unidade de commit. Execução fora de ordem
Unidade de commit reordena as ações e libera, quando julgar seguro, os resultados para a memória ou para os registradores.
Unidade de commit reordena as ações e libera, quando julgar seguro, os resultados para a memória ou para os registradores.
![Page 51: Melhorando o desempenho com pipeline Prof. André Luis M. Silva e/msn:andreLuis.ms@gmail.com.](https://reader036.fdocuments.net/reader036/viewer/2022062512/552fc119497959413d8c9088/html5/thumbnails/51.jpg)
Referências
• Hennessy e Patterson– Seções 6.1 a 6.10