Processo de Pipelining (exemplo da lavanderia)
• Ana, Bruno, Carla, Luiz
têm roupas sujas a serem lavadas,
secadas, dobradas e guardadas
• Lavadora leva 30 minutos
• Secadora leva 30 minutos
• “Dobrar” leva 30 minutos
• “Guardar” leva 30 minutos
A B C D
Pipelining (exemplo da lavanderia)
6 PM
O
r
d
e
m
T
a
r
e
f
a
s
8
7
30
30
30
30
30
30
30
30
12
11
10
9
30
30
30
30
2 AM
1
30
30
30
30
Tempo
A
B
C
D
• Processo seqüencial de lavagem leva oito horas para os quatro (2 para cada)
• Quanto tempo levaria, utilizando-se pipelining
?
Pipelining (exemplo da lavanderia)
6 PM
8
7
30
30
30
30
10
9
30
11
12
1
2 AM
Tempo
30
30
A
B
C
D
• Utilizando-se a técnica de pipeline consome-se 3,5
horas no processo de lavagem !
Observações sobre Pipelining
6 PM
8
7
30
30
30
30
9
30
A
30
30
• Pipelining não ajuda a melhorar a latência
10
de uma atividade, mas aumenta o
throughput (total)
• Várias tarefas operando em paralelo
utilizam recursos diversos
• Aceleração potencial = Número de
estágios de pipe (ex: 4)
• Taxa de pipeline limitada pelo estágio mais
lento (ex: se lavar demora mais que as
outras tarefas)
B
C
D
• Desequilíbrios na duração dos estágios
reduz a aceleração
Pipe cheio
• Tempo para “encher” o pipeline e para
“esvaziá-lo”reduz a aceleração
• Pode parar por dependências entre as
tarefas
BI: Busca da
instrução
DI: Decodificação/
Leitura do banco de
registradores
BI
EX: Execução/
Cálculo do endereço
DI
MEM: Acesso à
memória
EX
ER: Escrita no banco
de registradores
MEM
ER
M
U
X
1
Somador
UAL
Reg a ser
lido # 1
P
C
Endereço de
leitura
Instrução
M
U
X
Memória de
Instruções
3
Reg a ser
lido #2
Dado
lido #1
Reg a ser
escrito
Dado
lido #2
Dado de
escrita
EscReg
16
Extensão
de sinal
32
EscMen
M
U
X
UAL
Endereço
Dado
lido
Dado a ser
escrito
LerMem
M
U
X
Os Cinco Estágios da Instrução de Carga
• Busca: Busca da instrução na memória de instruções
• Reg/Dec: Decodificação da Instrução e Leitura do(s)
registrador(es) e
• UAL: Calcula o endereço da memória de dados
• Mem: Lê dado da memória de dados
• Reg: Escreve o dado no banco de registradores
Ciclo 1 Ciclo 2
Carga
Busca Reg/Dec
Ciclo 3 Ciclo 4 Ciclo 5
UAL
Mem
Reg
Pipelining
Tempo
2
Busca
Reg
4
6
8
UAL
Acesso
Dados
Reg
Busca
8ns
Reg
Busca
2
4
Reg
Busca
6
UAL
Reg
10
8
Acesso
Dados
UAL
Busca
Tempo para executar 3 instruções = 13ns
Acesso
Dados
8ns
Tempo para executar 3 instruções = 24ns
Tempo
UAL
Reg
12
Reg
Acesso
Dados
UAL
Reg
Acesso
Dados
Reg
14
Reg
Monociclos vs. Pipeline
Implementação Monociclo: cada instrução em um ciclo
Ciclo 1
Ciclo2
Clk
Load
Store
Waste
Implementação Pipeline:
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Ciclo 10
Clk
Load
Busca
Reg
Exec
Mem
Escr
Store
Busca
Reg
Exec
Mem
Reg
Exec
Tipo R Busca
Mem
Escr
Por que utilizar Pipeline?
• Suponha que vão ser executadas 100 instruções
• Máquina monociclo
–1 ciclo de relógio tem duração de 45 ns
–Cada instrução demora 1 ciclo (ciclo grande para
possibilitar executar qualquer instrução)
–Tempo total: 1 ciclo x 100 inst = 45ns x 100 = 4500 ns
• Máquina ideal pipelined
– 1 ciclo de relógio tem duração de 10 ns (ciclo tem
tempo igual ao tempo do elemento mais lento)
– cada estágio de pipeline utiliza um ciclo de relógio
(são 5 estágios no total)
–Tempo total: 5  1 ciclo + (1 ciclo  (100 inst -1)) =
10 ns x 99 + 50 ns = 1040 ns
Monociclos vs. Pipeline
Implementação Pipeline:
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Ciclo 10
Clk
Busca
Reg
Exec
Mem
Escr
Busca
Reg
Exec
Mem
Escr
Busca
Reg
Exec
Mem
5 ciclos
+
Escr
1 ciclo por instrução
(descontando a primeira instrução que
dura 5 ciclos)
Representação Gráfica de Pipeline
Tempo em ciclos de clock
Ordem de
execução
das
instruções
lw
lw
lw
C1
C2
MI
Reg
MI
C3
C4
C5
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
MI
Reg
C6
C7
Reg
Lendo
Escrevendo
Pipeline – Recursos Disponíveis
Tempo em ciclos de clock
C1
C2
MI
Reg
MI
C3
C4
C5
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
MI
Reg
MI
A partir da instrução 5,
temos ocupação máxima do
processador
Reg
MI
C6
Reg
C7
C8
C9
Reg
Conflitos do Pipeline: Conflito Estrutural
Conflitos estruturais:
• Tentativa de utilizar o mesmo recurso de modos
diferentes e ao mesmo tempo
Ex da lavadora:
–Lavar e secar utilizando a mesma máquina
–Pessoa que dobra roupa já está ocupada
guardando roupa
–Sem duas memórias, não poderia ter acesso à
instrução simultaneamente com dados
Conflitos do Pipeline: Conflito Estrutural
Tempo em ciclos de clock
C1
C2
MI
Reg
MI
C3
C4
C5
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
Reg
MI
Reg
MI
Reg
MI
Detecção fácil neste caso!
C6
Reg
C7
C8
C9
Reg
Conflitos do Pipeline: Conflito de Controle
Conflitos de controle:
• Tentativa de tomar uma decisão antes que a condição
seja avaliada
Ex da lavanderia:
–Para lavar uniformes precisa saber quantidade de
sabão;
–Precisa esperar a secadora ficar disponível para
colocar próximo uniforme
–Instruções de desvio
Soluções para Conflito de Controle
Tempo em ciclos de clock
C1
C2
MI
Reg
C3
C4
C5
UAL
MD
Reg
UAL
MD
C6
C7
C8
C9
Add
Beq
MI
Reg
Load
Parada: espera até a decisão estar clara
MI
Reg
Reg
UAL
MD
Reg
Soluções para Conflito de Controle
Tempo em ciclos de clock
C1
C2
MI
Reg
C3
C4
C5
C6
UAL
MD
Reg
UAL
MD
Reg
UAL
MD
C7
Add
Beq
Load
MI
Reg
MI
Reg
Predição: Escolhe uma direção e
retorna se não for a direção correta.
50% mais rápido se der certo
Reg
C8
C9
Conflitos do Pipeline: Conflito de Dados
Conflitos de dados:
• Tentativa de utilizar um item antes de estar pronto
Ex da lavanderia:
–Uma meia na secadora outra na lavadora; não
pode dobrar
–Instrução depende de resultado da instrução
anterior ainda no pipeline
Ex: add r2 r3 r1
addi r1 r4 100
Solução para Conflito por Dados
Tempo em ciclos de clock
Add r2 r3 r1
Addi r1 r4 100
C1
C2
MI
Reg
MI
C3
C4
C5
UAL
MD
Reg
UAL
MD
Reg
C6
Reg
C7
Conflitos do Pipeline: Conflito Estrutural
Tempo em ciclos de clock
Add r2 r3 r1
Addi r1 r4 100
C1
C2
MI
Reg
MI
C3
C4
C5
UAL
MD
Reg
UAL
MD
Reg
Adiantamento: Adianta o resultado de um estágio
para o outro
C6
Reg
C7
Download

Pipeline