A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SSC114 Arquitetura de Computadores Pipeline - Predição de desvios

Apresentações semelhantes


Apresentação em tema: "SSC114 Arquitetura de Computadores Pipeline - Predição de desvios"— Transcrição da apresentação:

1 SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
Aula 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 Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos de Controle
Endereç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 STORE A,Z

12 Problemas com Pipelines Conflitos 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 Pipelines Conflitos de Controle
Preenchimento do Delay Slot com reordenamento das instruções

14 Problemas com Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos 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 Pipelines Conflitos de Controle - Predição de Desvios
Dois bits para decisão 11 10 01 00

18 Problemas com Pipelines Conflitos 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 Pipelines Conflitos 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 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
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

21 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
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

22 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
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)

23 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
Preditor de 1 bit

24 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
Previsor (1,1)

25 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
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

26 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
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

27 Problemas com Pipelines Conflitos de Controle - Predição de Desvios
Buffer de Destino de Desvio

28 BTB timing


Carregar ppt "SSC114 Arquitetura de Computadores Pipeline - Predição de desvios"

Apresentações semelhantes


Anúncios Google