Upload
internet
View
103
Download
0
Embed Size (px)
Citation preview
Unidade Central De Processamento: Processador
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 é
chamada de SISD (Single Instruction Single Data)
Arquitetura de Von Neumann
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
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
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
Pipeline
UnidadeDe BI
UnidadeDe D
UnidadeDe BO
UnidadeDe E
UnidadeDe ER
Processador
instrução
instrução
instrução instrução
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
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
Conflito
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
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
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
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
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
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
◦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
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
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
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
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
Neste caso vai ocorrer uma bolha no pipeline
PipelineConflito de Dados
Bolha
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