Predição de saltos

Penalidades de controlo, decisão antecipada, BHT e dois modelos de preditor de dois bits.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Um beq ainda está em ID e a pipeline precisa de escolher a próxima instrução. O salto decide entre PC+4 e o destino. Enquanto a condição não está resolvida, o processador pode esperar ou seguir um caminho previsto. Se errar, descarta as instruções mais novas desse caminho.

Onde se resolve o salto

Fixa a fase em que o PC pode mudar, não apenas a que calcula a condição; a tabela usa cinco fases e conta apenas a penalidade de uma previsão errada, sem conflitos de operandos:

ModeloRedirecionar emPenalidade
Decisão básicaMEM3 ciclos
Decisão antecipadaID1 ciclo

No modelo MEM, um branch em IF 1, ID 2, EX 3, MEM 4 deixa três instruções mais novas em EX, ID, IF no ciclo 4. Se a previsão falha, a primeira instrução correta só é obtida no ciclo 5. Se se espera sempre pelo branch, paga-se essa espera em todos os branches; se se prevê, paga-se só nos erros.

Calcular o CPI de controlo

Com fração de branches bb, probabilidade de erro ee e penalidade pp:

CPI=CPIsem erros+bep.CPI=CPI_{\rm sem\ erros}+bep.

Se 20% das instruções são branches, 60% são tomados e a previsão é sempre não tomado, e=0,60e=0,60. Para base 1 e resolução MEM: CPI=1+0,20×0,60×3=1,36CPI=1+0,20\times0,60\times3=1,36. Se esperasse sem predição, seria 1+0,20×3=1,601+0,20\times3=1,60.

Um preditor com 90% de acertos dá e=0,10e=0,10, não 0,90. Os casos devem contar também saltos incondicionais se o modelo lhes atribuir uma penalidade; não mistures as suas frequências com a dos condicionais sem indicação.

Decisão em ID e dependências

Antecipar a comparação exige comparar registos e calcular o alvo em ID. Pode reduzir a penalidade de controlo e aumentar paragens de dados.

add t0,t1,t2
beq t0,zero,L

O add calcula em EX 3. O branch está em ID 3 e precisa do valor antes de terminar esse ciclo. Com um atalho de EX/MEM para o comparador ID, espera um ciclo e compara em ID 4. Um atalho apenas para EX não resolve esse uso.

Se a primeira instrução for lw, o dado chega no fim de MEM 4. Com o caminho adequado de MEM/WB para ID e a regra WB-primeiro/ID-depois, o branch compara em ID 5: duas paragens. A penalidade de erro de 1 ciclo acrescenta-se à dependência, se ambas ocorrerem.

Um bit de história

Uma BHT guarda estado associado ao endereço de cada branch, normalmente indexado por bits baixos do PC, excluindo os bits de alinhamento. Endereços diferentes podem partilhar uma entrada e interferir. A BHT prevê a direção; obter rapidamente o endereço do alvo pode exigir uma estrutura distinta, como uma BTB.

O preditor de 1 bit prevê o último resultado: T para tomado, N para não tomado. Depois do branch, substitui o bit pelo resultado real.

Para dois percursos do mesmo ciclo, resultados T T T N T T T N, e estado inicial T: erra na saída do primeiro ciclo, na reentrada do segundo e na segunda saída. São 3 erros em 8 branches. Em regime repetido são 2 erros por percurso, por isso o arranque escolhido pode mudar a primeira contagem.

Dois bits com histerese

A máquina da apresentação e o contador saturante têm quatro estados, mas transições diferentes. Neste primeiro modelo, 01 + T leva a 11 e 10 + N leva a 00. A previsão usa o estado anterior; só depois do resultado se atualiza o estado.

Usa dois estados que preveem T e dois que preveem N. 00 e 11 são previsões fortes; 01 e 10 são fracas. Um resultado contrário a uma previsão forte muda-a para fraca, mas conserva a direção prevista para a próxima ocorrência. Se o resultado contrário se repetir no estado fraco, muda a direção:

EstadoPrevêSe NSe T
00N0001
01N0011
10T0011
11T1011

Para T T T N T T T N, partindo de 11, os estados após cada branch são 11 11 11 10 11 11 11 10. Só as duas saídas são mal previstas: 2 erros em 8.

O contador saturante é outro modelo

Um contador de 0 a 3 prevê N abaixo de 2 e T a partir de 2; incrementa por T e decrementa por N, sem passar os extremos. Difere da tabela anterior em 01+T→10 e 10+N→01. Esta é a forma do preditor de 2 bits mais comum nos manuais; a máquina anterior, com outra transição nesses dois casos, é a da apresentação. Nunca substituas uma máquina de estados pela outra só porque ambas têm 2 bits. Nunca substituas uma máquina de estados pela outra só porque ambas têm 2 bits.

Para resultados alternados e alguns estados iniciais, as contagens podem divergir. Nunca substituas uma máquina de estados pela outra só porque ambas têm 2 bits.

Partindo de 01, compara a sequência alternada T N T N T N. Em cada célula, aparece estado anterior, previsão e estado seguinte.

Resultado realHistereseSaturante
T01, N, erro, 1101, N, erro, 10
N11, T, erro, 1010, T, erro, 01
T10, T, acerto, 1101, N, erro, 10
N11, T, erro, 1010, T, erro, 01
T10, T, acerto, 1101, N, erro, 10
N11, T, erro, 1010, T, erro, 01

A histerese erra 4 das 6 previsões, incluindo os dois erros iniciais. Depois do arranque, erra metade neste padrão. O saturante oscila entre 01 e 10 e erra as seis previsões. Uma taxa de regime não substitui a contagem da janela finita.

Ao resolver um traço, escreve estado anterior, previsão, resultado, erro e estado seguinte em colunas. Só depois calcula a taxa de erro e o CPI; isso evita atualizar o estado antes de prever.

Exercícios

Aplicar o erro à frequência de branches

Base CPI 1; 20% branches; 90% acertos; penalidade MEM 3 ciclos. Calcula CPI.

Pista
O erro é 10%.
Solução

CPI=1,06, porque não se paga erro nos 90% de previsões certas.

Erros frequentes

Usar a taxa de acerto como taxa de erro ou cobrar a penalidade a todas as instruções.

Voltar à explicação
Antecipar a decisão com um load

lw t0, 0(a0); beq t0, zero, L. Decisão em ID, atalho MEM/WB→ID e escrita WB-primeiro/ID-depois. Quantas paragens de dados, sem contar erro de predição?

Pista
O load produz o dado no fim de MEM 4.
Solução

Duas paragens: ID 3, ID 4, ID 5. A eventual penalidade de caminho errado é outra parcela.

Erros frequentes

Dizer uma paragem porque esse é o caso load-use para EX.

Voltar à explicação
Fixar o intervalo observado

Preditor 1 bit, estado inicial T. Resultados T T T N T T T N. Quantas previsões erradas?

Pista
Prevê antes de atualizar.
Solução

3 erros: posições 4,5 e 8. São dois percursos observados, não um regime infinito com estado inicial implícito.

Erros frequentes

Contar sempre 2 por percurso e ignorar o estado inicial.

Voltar à explicação
Distinguir máquinas de dois bits

Partindo de 01, segue os resultados T N T N T N em histerese e contador saturante. Quantos erros em cada um?

Pista
A transição 01+T difere.
Solução

Histerese: 01→11→10→11→10→11→10; só o primeiro T e os três N falham, total 4. Saturante: 01→10→01→10→01→10→01; todas as previsões falham, total 6.

Confere a tua resposta:

  • Comecei no estado 01.
  • Separei previsão anterior de atualização.
  • Indiquei transições e contagens diferentes.

Erros frequentes

Usar incrementos saturantes para a máquina de histerese ou atualizar antes de prever.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.