Unidade Central de Processamento 6
Otimização do
desempenho
Pipeline
� Técnica de implementação de processadores que permite a sobreposição temporal das diversas fases
de execução das instruções
� Constituído por seqüência de estágios operando em
paralelo
� Funciona de modo semelhante a uma linha de montagem
� Seu uso visa a melhora no desempenho do processador
Exemplo
� Suponha que existe uma lavanderia, que
divide seu processo de trabalhos em 3 etapas:
– Colocar a roupa na maquina de lavar
– Depois de lavada colocar na secadora
– Depois de secada passar o ferro e dobrar
� Suponha que cada etapa possa ser realizada
em 30 minutos:
Exemplo 1
� Lavanderia
19:00 18:3018:00 17:3017:00 16:30 16:0015:30 15:00
Paulo
João
Maria
Tempo (marcando o inicio de cada etapa)Cliente
Exemplo 2
� Lavanderia com processo otimizado
90 min
90 min
90 min
Total17:0016:30
Paulo
João
Maria
16:0015:3015:00Cliente
Características do Pipeline
� Aumenta o número de instruções executadas simultaneamente
� Aumenta taxa de instruções iniciadas e terminadas por unidade de tempo
� Melhora o desempenho do processo (throughput)
� Não reduz o tempo gasto para completar cada instrução individualmente.
Ciclo de instrução
Ciclo completo
Busca da
instrução
Execução
da
instruçãoInterpretação
da instrução
Calculo
de
endereço
do
operando
Busca de
operando
Armazenamento
do operando
Cálculo do
endereço
da
instrução
Calculo
de
endereço
do
operando
Verifica
ocorrência
de
interrupção
Interrupção
Pipeline do ciclo de instrução
� Suponha que o ciclo pudesse ser resumido
dos seguintes estágios:
– Busca de Instrução (BI)
– Decodificação da Instrução (DI)
– Cálculo de (endereço) Operandos (CO)
– Busca de Operandos (BO)
– Execução da Instrução (EI)
– Armazenamento de Operandos (AO)
Pipeline do ciclo
� Exemplo 3
AOEIBOCODIBI4
987654321
AOEI
AO
BO
EI
AO
CO
BO
EI
DI
CO
BO
BI3
DIBI2
CODIBI1
Instante de TempoInstrução
Características do Pipeline
� Deve-se procurar dividir a execução da instrução em estágios com o mesmo Tempo
� Contudo alguns estágios são mais lentos:– O estagio execução é geralmente mais lento que o
de busca
� Quando os estágios não tem o mesmo tempo:– Algumas instruções podem ter o seu tempo
aumentado
– Isso ocorre pois elas atravessam estágios em que não realizam nenhuma operação útil
Pipeline do ciclo
� Exemplo 4
BO
BO
BI
BO
BO
BI
BI
BI
AOEICODI4
987654321
AOEI
AOEI
AO
CO
EI
DI
CO
3
DI2
CODI1
Instante de TempoInstrução
Pipeline do ciclo
� Exemplo 5
AOBO
COBI
BO
DI
EICOBI
BO
AO
CO
EIDI
EIDI4
987654321
AOEI
AO
BO
BI
3
DI2
COBI
1
Instante de TempoInstrução
Conflitos
� Situações que impedem a próxima instrução
dentro de uma fila de ser executada no ciclo
esperado
� Os Conflitos reduzem o tempo de ganho obtido
pelo pipelining
� Existem três classes de conflitos:
– Estrutural
– de Dados
– de Controle
Conflitos Estruturais
� Oriundos de um hardware que não suporta a
sobreposição simultânea de todas as etapas
de instruções
� No exemplo da lavanderia seria o equivalente
a implementar um pipeline onde só existisse
uma tomada para a máquina de lavar e para a
máquina de secar.
Conflitos de Dados
� Ocorrem quando uma instrução para ser
executada depende dos resultados gerados
por alguma instrução anterior que ainda não foi
completada
� No exemplo da lavanderia seria um caso em
que a secadora demorou demais para secar
uma roupa e já tem a roupa lavada de outro
cliente na fila para secar.
Conflito de Controle
� Ocorrem quando uma instrução de salto
condicional (branch) entra no pipeline
provocando o cancelamento de instruções
subsequentes que também entraram no
pipeline.
Pipeline do ciclo c/ desvio
� Exemplo 6
CODIBI
5
BO
BO
BI
BO
BI
BI
BI
CODI4
987654321
AOEI
AO
CO
EI
DI
CO
3
DI2 (salto
p/ 5)
CODI1
Instante de TempoInstrução
Pipeline do ciclo c/ desvio
� Exemplo 6 (continuação)
BO
BO
AOEI5 (salto
p/3)
EI
AOEI4
181716151413121110
AO3
2 (salto
p/ 5)
1
Instante de TempoInstrução
Pipeline do ciclo c/ desvio
� Exemplo 7
BO
BO
AOEI5 (salto
p/3)
EI
EI AO4
181716151413121110
AO3
2 (salto
p/ 5)
1
Instante de TempoInstrução
Solucionando conflitos
� Uma forma de solucionar os conlfitos é
inserindo no pipeline uma "bolha" que
simplesmente atrasa o processamento até que
o recurso que esteja causando o conflito esteja
disponível
� Chamamos este processo de stall.
Pipeline do ciclo c/ desvio
� Exemplo 8
CODIBI
5
BO
BO
BI
BO
BI
BI
BI
CODI4
987654321
AOEI
AO
CO
EI
DI
CO
3
DI2 (salto
p/ 5)
CODI1
Instante de TempoInstrução
Stall
Medidas de desempenho
� O tempo gasto no processamento de N instruções em um pipeline com K estágios e ciclo de máquina igual a C é dado por:
� T = [ K + (N –1 )] * C
� Sem pipeline:
� T = [ K * (N)] * C
Exemplo 9
� Se um programa tem 4 instruções. Quanto tempo leva para ser executado em um processador com pipeline de 6 estágios e relógio de 1 ut?
– T= (6 + (4 -1))*1 = 9 ut (unidades de tempo)
� Sem Pipeline ?
– T= (6 * (4 ))*1 = 24 ut
Exemplo 9
� Ilustração do exemplo 9
AOEIBOCODIBI4
987654321
AOEI
AO
BO
EI
AO
CO
BO
EI
DI
CO
BO
BI3
DIBI2
CODIBI1
Instante de TempoInstrução
Exemplo 10
� Se um programa tem 10.001 instruções. Quanto tempo leva para ser executado em um processador com pipeline de 5 estágios e relógio de 100 ns?
– T= (5 + (10.000))*100x10-9 =~ 1 ms =~ 1*10-3
� Sem Pipeline ?
– T= (5 * (10.001))*100x10-9 =~ 5 ms
Medidas de Desempenho
� Speadup
– Mede o ganho de velocidade ao se usar pipeline em
comparação a não usar
– Su = Ts/Tp = n*k*C/(k +(n-1))*C = (n*k)/k +(n-1)
– Exemplo:
� Utilizando os valores do exemplo 9
– Su = 24/9 = 2,6
Top Related