• Nenhum resultado encontrado

SSC0611 Arquitetura de Computadores

N/A
N/A
Protected

Academic year: 2021

Share "SSC0611 Arquitetura de Computadores"

Copied!
25
0
0

Texto

(1)

SSC0611

Arquitetura de Computadores

10ª Aula – Pipeline

Profa. Sarita Mazzini Bruschi

(2)

Pipeline

• Dependências ou Conflitos (Hazards)

• 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

(3)

Pipeline

Dependência de Dados

• Como detectar as paradas?

• Nem sempre é possível

resolver as dependências com

(4)

Pipeline

Dependência de Dados

• Definição de uma unidade de detecção de dependência (Hazard

Detection Unit)

• Caso a dependência seja detectada, deve ser inserida uma operação nop (no

operation)

if (ID/EX.MemRead and // leitura da memória

((ID/EX.RegisterRt = IF/ID.RegisterRs) or // Destino (EX) == Origem 1 (IF) (ID/EX.RegisterRt = IF/ID.RegisterRt))) // Destino (EX) == Origem 2 (IF) stall the pipeline

(5)

Pipeline

(6)

Pipeline

Dependência de Dados

• Como tratar a parada, caso ela seja detectada, no estágio ID?

• Instruções nos estágios ID e IF devem parar

• Basta impedir que o registrador PC e os registradores de pipeline IF/ID sejam alterados, preservando os seus conteúdos no próximo ciclo

• Como a instrução está num pipeline, ela caminha para o estágio EX, que

precisa executar algo, mas não pode ser a instrução pois não tem os dados

necessários

• Executa uma instrução que não tem efeito: nop

• Para inserir essa bolha no pipeline basta desativar todos os sinais de controle dos estágio EX, MEM e WB

(7)
(8)

Pipeline

• Dependências ou Conflitos (Hazards)

• 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

(9)

9

• Efeito dos desvios condicionais

• Se o desvio ocorre,

pipeline precisa ser esvaziado

• Não se sabe se o desvio

ocorrerá ou não até o

momento de sua execução

Pipeline

(10)

10

• Maneiras de se tratar as conseqüências de uma parada no pipeline por causa dos

desvios:

• Previsão Estática de Desvios

• O compilador faz uma previsão se o desvio vai ser tomado ou não • Geração de “bolhas” quando a previsão é errada, baixa taxa de acertos • Não permite adaptações com relação ao comportamento do programa • Outra opção é um hardware para inserir uma bolha

• Previsão Dinâmica de Desvios

• Existem mecanismos em “hardware” que fazem a previsão baseada no comportamento daquele desvio no passado

• Alta taxa de acertos

Pipeline

(11)

11

• Previsã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

Pipeline

(12)

Pipeline

Conflitos de Controle

• Congelar o pipeline pode ser muito lento

• Outra opção é considerar que o desvio não será tomado e portanto,

vai continuar no fluxo sequencial

• Se o desvio for tomado, as instruções buscadas e decodificadas

precisam ser descartadas

• Para descartar, basta alterar os valores de controle para 0, como foi feito no

tratamento da dependência de dados

• Como a decisão do desvio é feita somente no estágio MEM, é necessário

alterar as instruções nos estágios IF, ID e EX -> dar flush nas instruções

(13)

13

• Previsã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)

Pipeline

(14)

Pipeline

Conflitos de Controle

• Reduzindo o atraso dos desvios

• Mover a execução do desvio para um estágio anterior a MEM

• Calcular o endereço de destino • Avaliar a decisão de desvio

(15)

15

• Previsã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)

Pipeline

(16)

16

• 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 previsão de desvio estática que diz que o desvio será sempre tomado

Pipeline

(17)

17

• Preenchimento do Delay Slot com reordenamento das instruções

Pipeline

(18)

18

• Previsão dinâmica

• Previsor de 1 bit

• Mantém uma pequena memória indexada pela parte menos significativa do endereço da instrução de desvio

• Buffer de previsão de desvios (Branch-Prediction Buffer) ou Tabela de histórico de desvios • Contém 1 bit (previsor 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

Pipeline

(19)

19

• Previsão Dinâmica

• Previsor de 1 bit

• Um previsor 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 previsor 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 previsão de dois bits.

• Previsor de bits: Uma previsão deve errar duas vezes antes de ser alterada quando um previsor de 2-bits é utilizado.

Pipeline

(20)

20

• Previsão dinâmica

• Previsor de 2 bits

• O previsor de 2-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

Pipeline

(21)

21

• Dois bits para decisão

Pipeline

(22)

22

• Localização do Buffer de Previsão

• Cache Especial

• A cache é acessada durante a Busca de Instrução e os bits de previsã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

Pipeline

(23)

23

• Previsores de Desvio com Relacionamento

• Considera a decisão do desvio anterior

• Previsor (1,1)

• Possui 2 bits:

• Desvio Anterior - Desviou ou não

• Se desviou, considera bit 1 senão considera bit 2

Pipeline

(24)

24

• 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

Pipeline

(25)

25

• Buffer de Destino de Desvio

Pipeline

Referências

Documentos relacionados

O Instrumental Articulado Não Cortante para Artroscopia foi desenvolvido e projetado exclusivamente para ser utilizado em conjunto com os sistemas de implantes, para que

“Considero bem importante esse serviço prestado pela cooperativa e sempre busco orientação antes de realizar um negócio, escolher a melhor aplicação, fazer empréstimos

d) A Administração não se responsabilizará pela eventual indisponibilidade dos meios eletrônicos hábeis de informações, no momento da verificação a que se refere

1 — Os apoios são concedidos pela Câmara Municipal da Guarda às IPSS legalmente cons- tituídas de acordo com o estipulado no n.º 3, do artigo 2.º do presente Regulamento... 2 —

Os operandos de dados requeridos para executar a instrução são carregados da memória e colocados em registradores;. A unidade lógica aritmética executa a instrução e coloca

A resposta passa por preços maiores para quem estiver disposto a pagar por melhores serviços, e com essa margem adicional financiando o mercado de preços baixos para mais

Para reduzir o déficit de conhecimento a respeito da atividade de instrução especial e dar maior visibilidade ao assunto, o presente trabalho busca elucidar como é desenvolvida a

Ficou demonstrado, por análises em relação aos grupos de natureza de despesa e em relação ao Produto Interno Bruto, que as aplicações de recursos em despesas de