pipeline. execução seqüencial das instruções uma etapa do ciclo de instrução se inicia...
TRANSCRIPT
![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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/7.jpg)
![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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/16.jpg)
![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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/18.jpg)
◦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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081518/552fc168497959413d8eb519/html5/thumbnails/24.jpg)
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