Altifigence Academy

18 / 24 · Conceito

Dependências, riscos de recursos e encaminhamento

Compare pausas e encaminhamento quando uma operação precisa de um resultado anterior.

A sobreposição exige mais do que preservar a ordem

Cálculos independentes em fluxo não leem resultados anteriores, portanto as transações podem se sobrepor com segurança. Já um operador com banco de registradores pode precisar do resultado de uma operação precedente. Ler um registrador antes de uma escrita anterior ficar disponível cria um risco de dependência de dados de leitura após escrita. A aritmética pode estar correta enquanto seu operando foi amostrado cedo demais.

Comece com R1=4. Considere I0 executando R1←R1+3 e I1 executando R2←R1×2. Neste exemplo, I0 captura o operando 4 na borda 0, calcula 7 durante o ciclo seguinte e escreve R1 na borda 1. I1 amostrando R1 na borda 1 pode ver o valor anterior 4, produzindo R2=8. A execução sequencial exige R2=14. Especifique explicitamente o comportamento de leitura/escrita do banco de registradores na mesma borda.

SoluçãoOperando visto por I1Exigência
Ler o R1 anterior4Incorreto aqui
Pausar até a borda 27Preservar a operação e os campos acompanhantes
Encaminhar o resultado da execução7 imediatamente antes da borda 1Resultado disponível e caminho atendendo à temporização

O encaminhamento seleciona um resultado calculado antes que ele chegue ao armazenamento arquitetural. Correspondência entre números de destino não é suficiente: o produtor deve ser válido, realmente escrever o registrador e ter um resultado pronto. Com vários produtores correspondentes, escolha a operação anterior mais recente. Nunca encaminhe uma bolha ou operação descartada.

Uma leitura de memória cuja resposta não chegou não pode ser resolvida pelo encaminhamento de dados indisponíveis. Pause o consumidor preservando o opcode, os identificadores de origem e a etiqueta. Decida se outros estágios independentes podem continuar.

Riscos estruturais surgem quando dois estágios precisam de uma única porta de memória ao mesmo tempo. Arbitragem ou recursos extras são necessários mesmo sem dependência de dados. Desvios introduzem riscos de controle que exigem cancelar trabalho do caminho incorreto. Analise pelo que cada operação espera e qual estado deve ser mantido. Nosso projeto final permanece um fluxo independente; sua aprovação não comprova tratamento de dependências de CPU.

Experimente

Com R1=4, I0 soma três e I1 dobra o resultado. Compare o resultado de I1 usando armazenamento antigo e encaminhamento correto. E se I0 for uma leitura de memória cujos dados ainda não estão disponíveis?

Ler a explicação

Ler o valor antigo 4 dá 8; encaminhar 7 dá 14. Um resultado de leitura indisponível exige pausar o consumidor preservando sua operação e etiqueta. Uma correspondência de destino não justifica encaminhar dados ainda incompletos.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.