Feito!! Ou quase...
Funcionamento Ideal
CPI = 1 !!
Mais detalhado...
Mesmo no funcionamento ideal...
• Instruções diferentes em cada estágio
– Solução: Armazene os resultados necessários para executar o
próximo ciclo de cada instrução
• Performance da memória...
– Solução: cache para poder manter a frequência alta
• Conflito entre leitura de dados e instruções
– Solução: um cache para dados outro para instruções
• PC para a leitura da próxima instrução
– Ok, resolvido. PC atualizado no primeiro estágio
• Leitura e Escrita de registradores no mesmo ciclo
– Não é um problema...
• E os devios?
Nova representação com
registradores de pipeline...
Performance da Implementação em Pipeline
• Latência
– Tempo de execução de uma instrução
– Ligeiramente maior que na implementação multiciclo devido ao
hardware de controle da pipeline.
– Entretanto, programas executam mais rapidamente..
• Limites para performance da pipeline
• Aumento da latência de instrução limita o número de
estágios da pipeline
• Dificuldades em dividir em estágios de igual duração
• Latência de registradores de pipeline e tempo de setup
• Desvio máximo das transições de relógio entre os
registradores de pipeline
Exemplo de Comparação
• Instruções executadas: ALU (40%), Desvios
(20%), Acesso à memória (40%)
• Implementação Multiciclo
– 5 ciclos para ALU e acessos a memória, 2 ciclos para
desvios
– Ciclo de relógio =1ns
tempo médio por instrução = 4,4 ns
• Implementação Pipeline
– Ciclo de relógio = 1,2 ns (clock skew & setup time)
•Branch slot
preenchido com uma instrução que possa ser executada
no caso de desvio satisfeito ou não-satisfeito.
Desvio Adiado
Desvio Adiado: encontrando a instrução
para executar depois do desvio
Ainda mais...
• Encontrar a instrução para preencher o slot é
complicado....
– Compiladores com otimização
– Previsão é imperfeita
• Mais um tipo de instrução
– “desvios com cancelamento” (canceling or
nullifying branch)
• Inclui a previsão na instrução de desvio
• Transforma a próxima instrução em no-op caso a
previsão esteja incorreta.
Performance da implementação Pipeline levando em
conta os hazards de controle (desvios)
Exemplo
• Pipeline com mais estágios
• Cálculo do endereço: estágio 3
• Avaliação da condição de desvio: estágio 4
Mesmo Exemplo...
Resposta parcial...
Para a próxima aula
• Ler a seção A.3 (implementação de pipeline
Implementação Multiciclo (IF e ID)
5 ciclos de instruções MIPS
1. IF
2.ID
Implementação Multiciclo: EX
3. EX
– Acesso à memória
– ALU
– Desvio Condicional
Implementação Multiciclo: WB
• 5. WB
– ALU
– Load
Implementação Multiciclo
Implementação Pipeline-1
Implementação Pipeline-2: desvios resolvidos ID
(Falta um multiplexador! Outros probemas?)
Funcionamento da Pipeline da MIPS
Hazard de dados
Antecipação de dados
Antecipação de operandos para a ALU
(no estágio EX)
Parada (stall) de um ciclo
• Latência
– número de ciclos entre a instrução que produz um resultado e
a instrução que utiliza este resultado
• Exemplo: A+B =C
– Maior número de instruções na arquitetura RISC,
separando o acesso à memória da operação
aritmética permite um melhor escalonamento da
pipeline
Pipelines com escalonamento dinâmico de instruções
• Pipelines simples:
– instruções são lidas e começam sua execução
– se houver dependências, são introduzidos “stalls”
e todo o fluxo de instruções é atrasado.
• Pipeline com escalonamento dinâmico
– instruções seguintes podem continuar se não
houver problema...
– objetivo: aumento donúmero de instruções
executadas por unidade de tempo
Escalonamento Dinâmico
• Pontos básicos
– Decodificação dividida em dois “estágios
• Iniciar a execução (issue, ativar, lançar)
– Somente quando há unidades funcionais disponíveis
• Ler operandos
– com base na análise de dependências
– Não existe antecipação, operandos são lidos diretamente do
arquivo de registradores
– Várias unidades funcionais do mesmo tipo
– Várias operações em execução paralelamente
Escalonamento Dinâmico com
Scoreboarding (CDC 6600)
• Problemas de dependências de dados:
– anti-dependências
– RAW, WAW
Processador MIPS com Scoreboard
Duas etapas substituem o estágio ID
• 1. Issue (IS, lançamento)
• Verifca se instruções ativas precisam escrever operando
destino ( hazard WAW)
• Verifica se há unidade funcional disponível
• Em ordem (Buffer entre IF e IS)
• 2. Ler operandos
• Verifica se instruções ativas precisam escrever
operando origem (hazard RAW)
• Pode decidir passar instruções para execução fora de
ordem
Estágios EX e WB
• EX (execução)
– Executa a operação e envia sinal ao scoreboard
– Pode levar um ou mais ciclos
– depende da operação
• WB (escrita de resultados)
– Verifica hazards WAR
Exemplo
Execução controlada por Scoreboard-1
Execução controlada por Scoreboard-2
Execução controlada por Scoreboard-3
Neste ponto...
• Pipeline
• Hazards
– estrutural
– dados (RAW, WAW, WAR)
– Controle
• Técnicas de previsão de desvios
– Stall: parando a pipeline
• Exceções
– Precisas (computadores atuais)
• Aritmética de ponto flutuante padrão IEEE
• Memória virtual (exceção de falta de página)
• Pipelines com operaçõe multiciclo (em pipeline ou não)
• Escalonamento dinâmico
• Técnica Scoreboard