24
Unidade Central De Processamento: Processador Pipeline

Pipeline. Execução seqüencial das instruções Uma etapa do ciclo de instrução se inicia após a conclusão da anterior Uma máquina com este tipo de

Embed Size (px)

Citation preview

Page 1: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Unidade Central De Processamento: Processador

Pipeline

Page 2: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Execução seqüencial das instruções Uma etapa do ciclo de instrução se inicia

após a conclusão da anterior Uma máquina com este tipo de execução é

chamada de SISD (Single Instruction Single Data)

Arquitetura de Von Neumann

Page 3: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Arquitetura de Von Neumann Para aumentar a velocidade de execução de uma instrução, era necessário aumentar o clock do processador e melhorar a tecnologia dos semicondutores

As etapas do ciclo de instrução permaneciam sendo realizadas seqüencialmente

Page 4: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Sobreposição temporal das etapas da execução de instruções

As etapas de um ciclo de instrução vão ocorrer simultaneamente, porém sobre instruções diferentes

Pipeline

Page 5: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Cada uma das etapas do ciclo de instrução recebe o nome de estágio

Cada estágio é executado por uma unidade do processador:◦Unidade de Busca de Instrução (BI)◦Unidade de Decodificação (D)◦Unidade de Busca de Operandos (BO)◦Unidade de Execução da Instrução (E)◦Unidade de Escrita de Resultados (ER)

Pipeline

Page 6: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Pipeline

UnidadeDe BI

UnidadeDe D

UnidadeDe BO

UnidadeDe E

UnidadeDe ER

Processador

instrução

instrução

instrução instrução

Page 7: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de
Page 8: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Existem no pipeline situações em que a instrução seguinte não pode ser executada no próximo ciclo de clock: conflitos

Existem três tipos de conflitos:◦ Conflitos Estruturais◦ Conflitos de Controle◦ Conflitos de Dados

Pipeline

Page 9: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Ocorre quando duas instruções estão em etapas diferentes mas estão utilizando o mesmo hardware, por exemplo, a memória

No diagrama anterior ocorrem vários conflitos para acessar a memória, por exemplo:◦No instante de tempo 5, a instrução 5 está

sendo buscada na memória junto com os operandos da instrução 3

PipelineConflito Estrutural

Page 10: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Conflito

Page 11: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Se a memória for uma só, não é possível atender as duas requisições ao mesmo tempo◦ A memória principal (ou cache) possui somente

uma porta para atendimento de requisições Nas máquinas modernas existem duas

memórias cache: cache de dados e cache de instruções

PipelineConflito Estrutural

Page 12: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

O estágio de busca de instruções irá buscar a instrução 5 na cache de instruções e ao mesmo tempo o estágio de busca de operandos acessa a cache de dados

Problema resolvido (para casos em que temos cache separadas)

PipelineConflito Estrutural

Page 13: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Ocorre quando uma instrução que está no pipeline é um desvio condicional

Enquanto esta instrução não passar pelo estágio de execução, não se sabe qual é a próxima instrução a ser executada

Ocorrerá, então, uma parada no pipeline (bolha)◦Queda no desempenho do pipeline

PipelineConflito de Controle

Page 14: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Para entendermos o que acontece no pipeline quando uma instrução de desvio é executada, iremos analisar o trecho de código a seguir

Considere que o código está armazenado na memória na ordem ilustrada

PipelineConflito de Controle

Page 15: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

cin>>x>>valor;menor = 0;maior = 0;If (valor< x) { maior = menor; menor= valor; cout<< “qualquer coisa”; } else { menor = maior; maior = valor; }cin>> k;K++;

Instrução de

desvio condicional

Desvio

Fluxo de execução seqüencia

l

Instr. 1Instr. 2Instr. 3Instr. 4Instr. 5Instr. 6Instr. 7

Instr. 8Instr. 9

Instr. 10

Instr. 11

Page 16: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de
Page 17: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

A técnica mais utilizada para resolver o conflito de controle é a predição ou previsão de desvios◦A unidade de busca de instrução tenta

prever se o desvio será tomado ou não◦Esta previsão é baseada em uma tabela

de histórico de desvios A tabela de histórico é uma memória cache

pequena associada ao estágio de busca de instrução do pipeline e tem cerca de 90 % de precisão

PipelineConflito de Controle

Page 18: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

◦Esta tabela contém todas as instruções de desvio de um programa, informando se houve desvio ou não da última vez que a instrução foi executada

◦Se uma instrução de desvio condicional provocou um desvio da última vez que ela foi executada, da próxima vez que está instrução for executada, a unidade de busca irá considerar que haverá desvio novamente

PipelineConflito de Controle

Page 19: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

int F, N;F = 1;cin >> N;

If (N = = 0) cout << “Fatorial de 0 é 1”; else {

F = N;while (N !=1){

F = F * (N-1);N = N –1;

}cout << “Fatorial de N é”, F;

}

Desvi

o

Fluxo de execução seqüenci

al

Em caso de estruturas de repetição,

é considerado que sempreocorrerá desvio

Page 20: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Quando a previsão está correta, o pipeline prossegue na velocidade máxima

Quando a previsão falha, o pipeline é esvaziado e as instruções corretas são buscadas

PipelineConflito de Controle

Page 21: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

A execução de uma instrução depende do resultado de outra que ainda está no pipeline

Exemplo: suponha que tenhamos uma instrução de carga imediatamente seguida por uma instrução de subtração que utilize o resultado da carga

PipelineConflito de Dados

Page 22: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

PipelineConflito de Dados

LDA Op ACC (OP)

SUB Op ACC ACC - (OP)

A operação LDA só escreve o resultado no

ACC no 5o estágio do pipeline

A operação SUB precisa do conteúdo do ACC no 4o

estágio do pipeline

Page 23: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

Neste caso vai ocorrer uma bolha no pipeline

PipelineConflito de Dados

Bolha

Page 24: Pipeline.  Execução seqüencial das instruções  Uma etapa do ciclo de instrução se inicia após a conclusão da anterior  Uma máquina com este tipo de

A solução para resolver este conflito é a reordenação das instruções◦ As instruções que não estão conflitando são

adiantadas

PipelineConflito de Dados

LDA Op

SUB OpGET Op

LDA Op

SUB OpGET Op

Reordenação