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

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

Unidade Central De Processamento: Processador

Apresentações semelhantes


Apresentação em tema: "Unidade Central De Processamento: Processador"— Transcrição da apresentação:

1 Unidade Central De Processamento: Processador
Pipeline

2 Arquitetura de Von Neumann
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)

3 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

4 Pipeline 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

5 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)

6 Pipeline Processador Unidade De BI instrução Unidade De D instrução
De BO Unidade De E Unidade De ER instrução instrução

7

8 Pipeline 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

9 Pipeline Conflito Estrutural
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

10 Conflito

11 Pipeline Conflito Estrutural
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

12 Pipeline Conflito 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)

13 Pipeline Conflito de Controle
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

14 Pipeline Conflito 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

15 Fluxo de execução seqüencial
Instr. 1 Instr. 2 Instr. 3 Instr. 4 Instr. 5 Instr. 6 Instr. 7 Instr. 8 Instr. 9 Instr. 10 Instr. 11 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üencial

16

17 Pipeline Conflito de Controle
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

18 Pipeline Conflito 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

19 Fluxo de execução seqüencial
Em caso de estruturas de repetição, é considerado que sempre ocorrerá desvio 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; Desvio Fluxo de execução seqüencial

20 Pipeline Conflito de Controle
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

21 Pipeline Conflito de Dados
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

22 Pipeline Conflito de Dados
A operação LDA só escreve o resultado no ACC no 5o estágio do pipeline LDA Op ACC (OP) SUB Op ACC ACC - (OP) A operação SUB precisa do conteúdo do ACC no 4o estágio do pipeline

23 Pipeline Conflito de Dados
Neste caso vai ocorrer uma bolha no pipeline Bolha

24 Pipeline Conflito de Dados
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 Reordenação LDA Op LDA Op SUB Op GET Op GET Op SUB Op


Carregar ppt "Unidade Central De Processamento: Processador"

Apresentações semelhantes


Anúncios Google