Aula 15: Ciclo de Execução e Introdução ao Pipeline

Propaganda
Aula 15: Ciclo de Execução e Introdução ao Pipeline
Diego Passos
Universidade Federal Fluminense
Fundamentos de Arquiteturas de Computadores
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
1 / 42
.
Revisão
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
2 / 42
.
Na Última Aula. . .
Começamos a falar sobre as instruções de máquina.
▶
Operações simples que o hardware é capaz de executar.
Programas executados por um computador são armazenados como sequências de
instruções na memória.
▶
▶
▶
Há um registrador especial chamado PC.
Ele armazena o endereço da próxima instrução a ser executada.
A cada nova instrução executada, PC é incrementado.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
3 / 42
.
Na Última Aula. . . (II)
Discutimos tipos de instrução.
▶
▶
▶
▶
▶
Instruções
Instruções
Instruções
Instruções
...
aritméticas.
lógicas.
de desvio condicional.
de desvio incondicional.
Vimos exemplos destes tipos de instrução na arquitetura MIPS.
▶
▶
▶
▶
add.
beq.
and.
...
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
4 / 42
.
Na Última Aula. . . (III)
Também vimos que instruções têm formatos específicos.
▶
▶
Esquema de representação.
Define quais e como informações são guardadas na instrução.
Finalmente, discutimos os operandos de uma instrução.
▶
▶
“Parâmetros” da operação a ser executada.
Podem ser, por exemplo, imediatos (constantes numéricas) ou registradores.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
5 / 42
.
Ciclo de Execução de uma Instrução
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
6 / 42
.
Ciclo de Execução de uma Instrução
Um processador funciona em ciclos.
▶
▶
▶
De tempos em tempos, ele executa a mesma sequência de passos.
Potencialmente, com entradas diferentes.
Manipulando as entradas, obtemos os resultados desejados.
Estes ciclos consistem na execução de instruções.
▶
▶
As entradas são os dados.
Mas também as instruções em si.
⋆
Mudando o programa, também mudamos a saída.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
7 / 42
.
Composição (Básica) do Ciclo de Execução de uma Instrução
Vista na aula passada:
Interpretar Instrução
Buscar Instrução
Executar Instrução
Próxima instrução é buscada na memória.
Instrução é interpretada.
▶
i.e., reconhecem-se o tipo, os operandos, etc.
Operação indicada é executada.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
8 / 42
.
Ciclo de Execução: Mais Detalhadamente
Partes do ciclo mostrado no slide anterior são “complexas”.
▶
▶
Interpretar instrução.
Executar instrução.
Há vários detalhes que ocorrem dentro de cada uma.
Usualmente, definimos o ciclo de execução de uma instrução de forma mais detalhada.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
9 / 42
.
Ciclo de Execução: Mais Detalhadamente (II)
Buscar Instrução
na Memória
Início
Decodificar a
Operação a
Ser Realizada
Buscar
Operandos
(Se Houver)
Armazenar
Resultado
(Se Houver)
Executar a
Operação
Término
Há fases de Busca de Operandos e Armazenamento de Resultado.
▶
No esquema anterior, faziam parte de Interpretar Instrução e Executar Instrução.
Nos próximos slides, discutiremos cada uma destas fases.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
10 / 42
.
Buscar Instrução
Primeiro passo na execução da instrução:
▶
Descobrir qual ela é.
Instruções são armazenadas na MP.
Processador só consegue manipular informações em seus registradores.
▶
▶
Logo, antes de mais nada, processador precisa trazer instrução da MP para algum registrador.
Não um registrador qualquer: o IR.
⋆
Instruction Register.
Em algumas arquiteturas, as instruções têm comprimento fixo.
▶
e.g., MIPS, com instruções de 32 bits.
Em outras, comprimento pode ser variável.
▶
▶
e.g., x86, com instruções de até 15 bytes.
Neste caso, busca da instrução pode não ser tão simples.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
11 / 42
.
Buscar Instrução (II)
A busca de uma instrução, portanto, é basicamente uma leitura da memória.
Como o processador sabe o endereço a ser lido?
▶
▶
▶
Já discutido anteriormente.
Há um outro registrador especial que o armazena.
O Program Counter, ou PC.
⋆
Outros nomes: IC (Instruction Counter ), IP (Instruction Pointer ).
PC tem que ser constantemente atualizado.
▶
▶
▶
Para apontar para a próxima instrução a ser executada.
Normalmente, instruções são executadas na ordem em que aparecem em memória.
Logo, após a leitura da instrução atual, PC já é incrementado.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
12 / 42
.
Decodificar a Instrução
Objetivo geral: entender a instrução.
▶
i.e., entender o que a sequência de bits representa.
Envolve uma série de sub-tarefas:
▶
▶
▶
Qual é a operação a ser realizada?
Qual é o formato da instrução?
Onde estão os operandos?
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
13 / 42
.
Decodificar a Instrução (II)
0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Opcode:
000000(2) = 0(10)
Operando 1:
10001(2)=17(10)
Operando 2:
10010(2)=18(10)
Resultado:
01000(2)=8(10)
Significado:
Operação Lógica
ou
Aritmética
Significado:
Primeiro
Operando está
no Reg. 17
Significado:
Segundo
Operando está
no Reg. 18
Significado:
Armazenar
Resultado
no Reg. 8
Campo não
Utilizado
Nesta
Instrução
(deve sempre
ser 0)
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
Função:
100000(2)=32(10)
Significado:
Operação de
Soma
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
14 / 42
.
Decodificar a Instrução (III)
Primeiro passo, normalmente, é reconhecer o opcode.
▶
▶
▶
Dado o opcode, geralmente, o restante do formato da instrução é conhecido pelo processador.
i.e., processador sabe como tratar os demais bits da instrução.
Adicionalmente, opcode define o tipo de operação a ser realizada.
0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Opcode:
000000(2) = 0(10)
Operando 1:
Registrador
Operando 2:
Registrador
Resultado:
Registrador
Deslocamento
Função
Significado:
Operação Lógica
ou
Aritmética
Formato: R
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
15 / 42
.
Decodificar a Instrução (IV)
Uma vez reconhecido o formato da instrução, pode-se descobrir a localização dos
operandos.
▶
▶
▶
Podem estar já em registradores.
Podem ser constantes numéricas especificadas na própria instrução.
Podem ser endereços de memória.
O opcode da instrução determina a semântica dos bits dos operandos.
▶
▶
i.e., o que fazer com eles para encontrar os operandos.
e.g., usar como identificador de um registrador, somar com uma constante para obter um
endereço de memória.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
16 / 42
.
Busca de Operandos
Note que nem toda instrução possui operandos.
Exemplo: instrução nop no x86.
▶
▶
No Operation.
Instrução que não faz “nada”.
⋆
Embora cause efeitos colaterais, como incrementar o PC.
Mas na enorme maioria dos casos, instruções possuirão ao menos um operando.
▶
Sempre verdade no MIPS, por exemplo.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
17 / 42
.
Busca de Operandos (II)
A busca de operandos consiste na tarefa de encontrar os valores sob os quais será
realizada a operação.
Os respectivos bits são passados como entrada de componentes internos do processador.
▶
Como somadores, deslocadores, multiplexadores, . . .
Um caso comum ocorre quando operando está na MP.
▶
▶
Endereço é dado por alguma combinação de valores em registradores e constantes específicas
na própria instrução.
Processador requisita leitura à MP.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
18 / 42
.
Busca de Operandos (III)
Registrador 0
1
Seletor
0
0
Registrador 1
1
0
0
Mux
Outro
Dado
0
1
1
1
Note que mesmo para operandos em
registradores, há algo a se fazer nesta
etapa.
▶
Bits do registrador especificado devem
ser “conectados” ao(s) componente(s)
adequado(s).
Somador
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
19 / 42
.
Busca de Operandos (IV)
Registrador 0
1
0
0
1
0
Seletor
Registrador 1
0
Mux
Imediato
(Instrução)
0
1
1
1
Note ainda que certos casos de busca de
operandos requerem a execução de algum
tipo de processamento.
▶
▶
Comumente, somas.
Algumas vezes deslocamentos
(multiplicações por potências de 2).
Exemplo: instrução load word no MIPS.
Somador
▶
Endereço: valor de registrador +
imediato.
Endereço do
Operando
na MP
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
20 / 42
.
Execução da Operação
Uma vez que os bits dos operandos estejam “conectados” aos componentes corretos do
processador, a instrução é executada.
Esta execução geralmente consiste em algum tipo de operação lógica-aritmética.
▶
▶
▶
Somar dois números.
Calcular um xor bit a bit.
...
Em alguns casos particulares, a operação pode ser simplesmente não fazer nada com o
dado.
▶
▶
e.g., deixar o dado passar.
Exemplo: operações de leitura ou escrita na memória.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
21 / 42
.
Execução da Operação (II)
Esta fase também consiste em “configurar” alguns componentes da CPU.
Determinados componentes precisam de informações adicionais.
▶
▶
Linhas de controle.
Especificam como o componente deve agir sobre os dados.
Exemplos clássicos:
▶
▶
Um multiplexador: sinal na linha de controle seleciona entre primeira e segunda entrada.
Unidade lógica-aritmética: sinal nas linhas de controle selecionam operação lógica aritmética
a ser realizada.
Os sinais destas linhas de controle são geralmente determinados a partir de campos da
instrução.
▶
Como opcode e função, no caso do MIPS.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
22 / 42
.
Armazenamento dos Resultados
Etapa similar à de busca de operandos.
▶
▶
Mas no sentido inverso.
i.e., ao invés de ler valores, estes são armazenados em local apropriado.
Este “local” pode ser um registrador ou algum endereço da MP.
▶
Assim como ocorre na busca de operandos, opcode e formato da instrução determinam o
local.
Também de forma similar, pode ser necessário realizar “processamento” para determinar
exatamente este local.
▶
▶
i.e., algum tipo de conta.
Exemplo clássico: instruções de transferência para a MP do MIPS.
⋆
Soma de registrador com imediato.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
23 / 42
.
Armazenamento dos Resultados
Note ainda que certas instruções não geram dados a serem armazenados.
▶
Ao menos não na MP ou em registradores de propósito geral.
▶
e.g., instruções de desvio.
Única (possível) escrita é no PC.
▶
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
24 / 42
.
Introdução ao Conceito de Pipeline
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
25 / 42
.
Ciclos de CPU vs. Instruções
Processadores operam em ciclos.
Duração de um ciclo do processador é determinada pela frequência do seu clock.
▶
Clock de 1 GHz rightarrow 1 bilhão de ciclos por segundo.
Pergunta: quantas instruções um processador operando a 1 GHz de clock executa
por segundo?
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
26 / 42
.
Ciclos de CPU vs. Instruções
Processadores operam em ciclos.
Duração de um ciclo do processador é determinada pela frequência do seu clock.
▶
Clock de 1 GHz rightarrow 1 bilhão de ciclos por segundo.
Pergunta: quantas instruções um processador operando a 1 GHz de clock executa
por segundo?
▶
▶
▶
▶
Resposta: depende!
Pode ser exatamente 1 bilhão.
Pode ser menos.
Pode ser mais.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
26 / 42
.
Ciclos de CPU vs. Instruções
Por que depende?
▶
É possível projetar um processador que execute exatamente uma instrução a cada ciclo.
⋆
▶
O que veremos nas próximas aulas.
Mas há vantagens em quebrar a execução de uma instrução em vários ciclos de clock.
⋆
⋆
⋆
Reutilização de componentes.
Permitir que instruções mais simples levem menos tempo.
Permitir paralelismo.
Voltaremos a este ponto em aulas posteriores.
▶
Mas por hora, o foco será no último ponto.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
27 / 42
.
Pipeline: Uma Analogia
Vamos usar uma analogia1 para entender o conceito de Pipeline (Patterson):
▶
▶
▶
Suponha uma república de estudantes com 4 pessoas: Ann, Brian, Cathy, Dave.
Toda segunda-feira à noite, eles lavam roupa.
Cada um possui um conjunto de roupas sujas.
⋆
▶
1
Aproximadamente a mesma quantidade de roupas.
Processo composto por 4 etapas:
⋆
Máquina de lavar: 30 minutos.
⋆
Secador/passar roupas: 30 minutos.
⋆
Dobrar roupas: 30 minutos.
⋆
Guardar roupas: 30 minutos.
.
.
.
. . . .
. . . .
. . . .
Adaptado de http://www.cs.berkeley.edu/˜pattrsn/61CS99/lectures/lec25-pipeline.pdf
. .
.
. . . . . . . . . . . . .
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
FAC
.
.
.
.
.
.
.
.
28 / 42
.
Pipeline: Uma Analogia (II)
Solução sequencial:
▶
Cada pessoa aguarda a conclusão da anterior.
6 PM 7
A
Ordem
das
Tarefas
8
9
10
11
12
2 AM
1
3 0 3 0 30 3 0 3 0 3 0 3 0 30 30 30 30 3 0 3 03 0 3 0 3 0
Time
B
C
D
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
29 / 42
.
Pipeline: Uma Analogia (III)
Solução alternativa:
▶
A medida que uma pessoa termina uma fase, a seguinte inicia aquela fase do seu conjunto de
roupas.
6 PM 7
8
9
303 0 30 30 30 30 30
10
11
12
2 AM
1
Time
A
Ordem
das
Tarefas
B
C
D
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
30 / 42
.
Pipeline: Uma Analogia (IV)
Na solução original, cada pessoa demora 4 × 30 = 120 minutos para lavar sua roupa.
Na solução alternativa também.
Mas o tempo total na solução alternativa é muito menor:
▶
210 minutos, contra 480 minutos.
Em outras palavras:
▶
▶
O tempo de resposta para uma única tarefa (pessoa) não mudou.
Mas a vazão do sistema (pessoas atendidas por unidade de tempo) aumentou 118%.
Maior eficiência vem do uso de pipeline.
▶
▶
i.e., executar etapas de tarefas diferentes em paralelo.
Evita que recursos fiquem ociosos.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
31 / 42
.
Ciclo de Execução de Instrução e Pipeline
Podemos aplicar a mesma técnica para a execução de instruções em uma CPU?
▶
Sim, desde que possamos quebrar a tarefa de execução das instruções em
sub-tarefas independentes.
Podemos, por exemplo, considerar as subtarefas como as etapas do ciclo de execução de
uma instrução.
▶
▶
▶
▶
▶
Busca da instrução.
Decodificação.
Busca dos operandos.
Execução.
Armazenamento do Resultado.
Assumindo, é claro, que não haja dependência entre as etapas de instruções
subsequentes.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
32 / 42
.
Ciclo de Execução de Instrução e Pipeline: Eficiência
No jargão de arquitetura de computadores, cada “subtarefa” é chamada de estágio do
pipeline.
Considerando um pipeline com 5 estágios, o estado do pipeline ao longo do tempo:
S1: 1
S2:
S3:
S4:
S5:
1
2
1
3
2
1
4
3
2
1
2
3
4
5
4
3
2
1
5
6 7
5 6
4 5
3 4
2 3
6 7
8
7
6 ...
5
4
8
Tempo
Quantas instruções são executadas por ciclo de clock?
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
33 / 42
.
Ciclo de Execução de Instrução e Pipeline: Eficiência (II)
Com 5 estágios, primeira instrução demora 5 ciclos de clock.
Após este tempo, a cada 1 ciclo, temos mais uma instrução sendo concluída.
Para executar n instruções, precisamos de t = 5 + n − 1 = n + 4 ciclos.
▶
▶
n
Logo, processador executa n+4
instruções por ciclo de clock.
Para n grande, isso é praticamente 1.
Eficiência não é perfeita porque os k primeiros ciclos são gastos enchendo o pipeline.
▶
Onde k é o número de estágios.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
34 / 42
.
Pipeline vs. Monociclo
Na conta anterior, verificamos que com o pipeline quase conseguimos atingir uma
instrução por ciclo.
▶
Então qual é a vantagem de usar um pipeline com vários estágios ao invés de uma solução
que faz tudo em um ciclo só?
A vantagem está na duração do ciclo.
▶
▶
Como, individualmente, cada estágio do pipeline faz algo “simples”, a duração de um ciclo
pode ser curta.
Na implementação monociclo, cada ciclo é mais complexo, longo.
Exemplo: o que é melhor?
▶
▶
Quase uma tarefa por ciclo, com ciclo de 1 ns.
Exatamente uma tarefa por ciclo, com ciclo de 5 ns.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
35 / 42
.
Pipeline e Desvios
A técnica de pipeline é efetiva, desde que mantenhamos o pipeline cheio.
▶
i.e., quando uma instrução está no estágio i, a próxima está no estágio i + 1.
Mas como o processador sabe qual é a próxima instrução?
▶
▶
A princípio, uma tarefa fácil.
Programas são sequências de instruções armazenadas em memória.
⋆
Também de forma sequencial.
Mas há um caso especial: as instruções de desvio.
▶
Próxima instrução pode estar em alguma posição diferente.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
36 / 42
.
Pipeline e Desvios (II)
Suponha que uma instrução de desvio chegue ao último estágio do pipeline.
Neste ponto, a CPU descobre que será realizado um desvio (ao invés da execução
sequencial).
O que fazer?
▶
▶
▶
Outras instruções já estão no pipeline.
Elas não deveriam ser executadas.
Solução: flush do pipeline.
⋆
⋆
Esvaziamos o pipeline, não permitindo a conclusão das demais instruções.
Recomeçamos com o pipeline vazio a partir do endereço do desvio.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
37 / 42
.
Pipeline e Desvios (III)
S1: 1
S2:
S3:
S4:
S5:
1
2
1
3
2
1
4
3
2
1
2
3
4
5
4
3
2
1
5
6 11 12
5
11
...
4
3
2
6 7 8
Tempo
Flush
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
38 / 42
.
Pipeline e Desvios (IV)
O flush em um pipeline impede que executemos instruções erradas.
▶
▶
Mas desempenho é prejudicado.
Enfrentamos novamente o custo inicial de encher o pipeline.
Lembre-se: há dois tipos de desvios diferentes.
▶
▶
Desvios condicionais.
Desvios incondicionais.
No caso de desvios incondicionais, podemos amenizar o problema:
▶
▶
Se conseguirmos detectar o desvio cedo, precisamos descartar apenas um subconjunto das
instruções já executadas.
O pipeline ainda ficará “meio cheio”.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
39 / 42
.
Pipeline e Desvios (V)
Mas e para desvios condicionais?
▶
▶
Se soubéssemos cedo o resultado da condição, poderíamos usar a mesma estratégia dos
desvios incondicionais.
Mas isso geralmente não é possível.
⋆
⋆
Desvios condicionais são mais complexos.
Precisam chegar a estágios finais do pipeline para sabermos seu resultado.
Não há solução, então?
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
40 / 42
.
Predição de Desvios
Processadores modernos geralmente possuem um branch predictor.
▶
▶
▶
Preditor de desvios.
Tenta “advinhar” o resultado de uma instrução de desvio condicional.
Baseado em histórico.
Quando CPU decta (cedo) a execução de uma instrução de desvio condicional:
▶
▶
▶
Preditor prevê se desvio ocorrerá ou não.
Se preditor diz que desvio não ocorrerá, próxima instrução é colocada no pipeline.
Caso contrário, instrução do endereço de destino é utilizada.
Se o preditor acerta, pipeline continua cheio.
Se o preditor erra, temos que fazer um flush.
▶
E pagar a penalidade de desempenho.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
41 / 42
.
Exercício
Suponha um processador com pipeline de 5 estágios.
▶
▶
▶
▶
Em instruções de desvio condicional, o preditor sempre prevê que o salto não ocorrerá.
Assuma que ao final do quarto estágio a CPU é capaz de determinar o resultado de
instruções de desvio condicional.
Caso o desvio seja tomado, é preciso dar um flush nas três instruções nos estágios anteriores.
Caso contrário, o pipeline continua cheio.
Determine o número médio de instruções executadas por ciclo de clock considerando:
▶
▶
▶
20% das instruções são de desvio condicional.
30% destes desvios ocorrem.
Não há nenhuma outra fonte de ineficiência do pipeline.
.
Diego Passos (UFF)
Ciclo de Execução; Intro. ao Pipeline
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
FAC
.
.
.
.
.
.
.
42 / 42
.
Download