View
117
Download
5
Category
Preview:
Citation preview
1
SSC114 Arquitetura de Computadores
Pipeline - Predição de desviosAula 5
25/08/10 (Turmas 1 e 2)
Profa. Sarita
2
Conflitos ou Dependências em Pipelines (Hazards) Hazards: impedem que a próxima instrução do fluxo de
instruções seja executada durante seu ciclo de clock designado
Conflitos Estruturais Pode haver acessos simultâneos à memória feitos por 2 ou mais
estágios. Dependências de Dados
As instruções dependem de resultados de instruções anteriores, ainda não completadas.
Dependências de Controle A próxima instrução não está no endereço subseqüente ao da
instrução anterior.
3
Problemas com Pipelines Conflitos Estruturais Ocorre quando duas instruções tentam
acessar o mesmo dispositivo ao mesmo tempo
Soluções: Duplicar unidades funcionais Aumentar o número de portas de acesso à
memória principal Separar cache de dados e de instruções (L1)
4
Problemas com Pipelines Conflitos por dados Dependências verdadeiras ou diretas
RAW (Read After Write) Possíveis soluções:
Colocação de instruções nop ou escalonamento adequado pelo processador
Adiantamento (técnica forwarding ou bypassing)
5
Problemas com Pipelines Conflitos por dados Dependências falsas
Ocorrem quando é possível iniciar ou terminar a execução das instruções fora de ordem, ou seja, não é possível determinar o valor dos registradores em cada instante com base apenas na seqüência de instruções
Antidependência
WAR (Write After Read) Dependência de saída
WAW (Write After Write) Solução usual:
Renomeamento de registradores
6
Problemas com PipelinesConflitos de Controle Efeito dos desvios condicionais
Se o desvio ocorre, o pipeline precisa ser esvaziado
Não se sabe se o desvio ocorrerá ou não até o momento de sua execução
7
Problemas com PipelinesConflitos de Controle Maneiras de se tratar as conseqüências de uma
parada no pipeline por causa dos desvios: Predição Estática de Desvios
O compilador faz uma predição se o desvio vai ser tomado ou não Geração de “bolhas” quando a predição é errada, baixa taxa de
acertos Não permite adaptações com relação ao comportamento do
programa Predição Dinâmica de Desvios
Existem mecanismos em “hardware” que fazem a predição baseada no comportamento daquele desvio no passado
Alta taxa de acertos
8
Problemas com PipelinesConflitos de Controle Predição estática
Congelar o pipeline até que o resultado do desvio seja conhecido Insere “bolhas” no pipeline
Solução ruim quando o pipeline é muito longo
9
Problemas com PipelinesConflitos de Controle - Predição de Desvios Predição Estática (cont.)
Assumir que todos os desvios não são executados (predicted-untaken)
Assumir que todos os desvio são tomados (predicted-taken)
Assumir que todos os desvios com determinado operation code serão tomados
Os desvios para trás são assumidos como tomados (branch taken) e os desvios para frente são assumidos como não tomados (branch not taken) – Backward-taken, forward not-taken (BTFNT)
10
Problemas com PipelinesConflitos de Controle Predição Estática (cont.)
Utilização de Delayed Branch (desvio atrasado) para instruções de desvio Instrução após o desvio é sempre executada A próxima instrução é chamada de delay slot (posição
de atraso) Reordenamento das instruções (desvio atrasado
otimizado)
11
Problemas com PipelinesConflitos de ControleEndereço Normal Atrasado Otimizado
100 LOAD X,A LOAD X,A LOAD X,A
101 ADD I,A ADD I,A JUMP 105
102 JUMP 105 JUMP 106 ADD I,A
103 ADD A,B NOOP ADD A,B
104 SUB C,B ADD A,B SUB C,B
105 STORE A,Z SUB C,B STORE A,Z
106 STORE A,Z
12
Problemas com PipelinesConflitos de Controle Preenchimento do Delay Slot
Para facilitar o trabalho do compilador no preenchimento do delay slot muitas arquiteturas permitem o uso do delay slot com a opção de anulação automática dessa instrução se o desvio condicional não for tomado
Desse modo, uma instrução do endereço alvo pode ser movida para o delay slot, o que é muito útil no caso de loops. Nesse caso, está implícita uma predição de desvio estática que diz que o desvio será sempre tomado
13
Problemas com PipelinesConflitos de Controle Preenchimento do Delay Slot com reordenamento
das instruções
14
Problemas com PipelinesConflitos de Controle - Predição de Desvios Predição dinâmica
Preditor de 1 bit Mantém uma pequena memória indexada pela parte
menos significativa do endereço da instrução de desvio Buffer de predição de desvios (Branch-Prediction Buffer)
ou Tabela de histórico de desvios Contém 1 bit (preditor de 1 bit) que diz se o desvio foi
tomado recentemente ou não e que indica se o próximo desvio deve ou não ser considerado
Em caso de erros esse bit é alterado Não mantém histórico
15
Problemas com PipelinesConflitos de Controle - Predição de Desvios Predição Dinâmica
Preditor de 1 bit Um preditor de 1-bit prediz corretamente um desvio ao final de uma
iteração de um loop, enquanto o loop não termina. Em loops aninhados, um preditor de 1-bit irá causar duas predições
incorretas para o loop interno: Uma vez no final do loop, quando a iteração termina o loop ao invés de ir
para o começo do loop, e Uma vez quando a primeira iteração do loop for reiniciada, quando ele
prediz o término do loop ao invés do começo do loop. Este erro duplo em loops aninhados é evitado por um esquema de
predição de dois bits. Preditor de 2-bits: Uma predição deve errar duas vezes antes de ser
alterada quando um preditor de 2-bits é utilizado.
16
Problemas com PipelinesConflitos de Controle - Predição de Desvios Predição dinâmica
Preditor de 2 bits O preditor de dois bits (bimodal) é essencialmente um
contador de dois bits com valores entre 0 e 3 Quando o contador é maior ou igual ao valor 2, o desvio
é predito como tomado; em caso contrário é predito como não tomado
O contador é incrementado em um desvio tomado e decrementado em um desvio não tomado
17
Problemas com PipelinesConflitos de Controle - Predição de Desvios Dois bits para decisão
0001
11 10
18
Problemas com PipelinesConflitos de Controle - Predição de Desvios N-bits para decisão
Incrementa a cada acerto e decrementa em caso de erro
Se maior que valor estipulado, considera o desvio N >> 2 não apresenta melhoras significativas
19
Problemas com PipelinesConflitos de Controle - Predição de Desvios Localização do Buffer de Predição
Cache Especial A cache é acessada durante a Busca de Instrução e os
bits de predição usados durante a Decodificação da instrução (se a instrução for uma decisão)
Cache de Instrução Os bits de decisão são armazenados junto com as
instruções que estão na cache
20
Precisão da Predição Utilizando uma cache de 4Kbytes Dois bits de decisão Executando o SPEC89
Obtém-se de 1 a 18% de erro Predição estática – 30% de erro
Problemas com PipelinesConflitos de Controle - Predição de Desvios
21
Precisão da Predição Como melhorar:
Aumento do Cache – limitado! Aumento do número de bits – não melhora muito! Verificar correlação com desvios vizinhos
Problemas com PipelinesConflitos de Controle - Predição de Desvios
22
Previsores de Desvio com Relacionamento Considera a decisão do desvio anterior Previsor (1,1)
Utiliza o comportamento do último desvio para escolher entre dois previsores de desvios de 1 bit: Desvio Anterior - Desviou ou não?
Se desviou, considera o 1o bit senão considera o 2o bit T – Taken (desviou) NT – Not Taken (não desviou)
Problemas com PipelinesConflitos de Controle - Predição de Desvios
23
Problemas com PipelinesConflitos de Controle - Predição de Desvios Preditor de 1 bit
24
Problemas com PipelinesConflitos de Controle - Predição de Desvios Previsor (1,1)
25
Previsores de Desvio com Relacionamento Previsor (n,m)
Considera os n desvios anteriores Para cada combinação tem-se m bits de predição Número de bits:
2n * m *
número de entradas
de previsões selecionadas
pelo endereço de destino
Problemas com PipelinesConflitos de Controle - Predição de Desvios
26
Buffer de Destino de Desvio Branch Target Buffer (BTB) A instrução de desvio só é identificada quando for
decodificada Nesse ponto já perdeu-se um ciclo Utiliza-se uma cache de instruções de desvios Durante busca de instrução já se sabe se é
desvio
Problemas com PipelinesConflitos de Controle - Predição de Desvios
27
Buffer de Destino de Desvio
Problemas com PipelinesConflitos de Controle - Predição de Desvios
28
BTB timing
Recommended