CPU Otimizar

26
Unidade Central de Processamento 6 Otimização do desempenho

description

Ciencia da Comutação

Transcript of CPU Otimizar

Page 1: CPU Otimizar

Unidade Central de Processamento 6

Otimização do

desempenho

Page 2: CPU Otimizar

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

Page 3: CPU Otimizar

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:

Page 4: CPU Otimizar

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

Page 5: CPU Otimizar

Exemplo 2

� Lavanderia com processo otimizado

90 min

90 min

90 min

Total17:0016:30

Paulo

João

Maria

16:0015:3015:00Cliente

Page 6: CPU Otimizar

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.

Page 7: CPU Otimizar

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

Page 8: CPU Otimizar

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)

Page 9: CPU Otimizar

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

Page 10: CPU Otimizar

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

Page 11: CPU Otimizar

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

Page 12: CPU Otimizar

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

Page 13: CPU Otimizar

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

Page 14: CPU Otimizar

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.

Page 15: CPU Otimizar

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.

Page 16: CPU Otimizar

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.

Page 17: CPU Otimizar

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

Page 18: CPU Otimizar

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

Page 19: CPU Otimizar

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

Page 20: CPU Otimizar

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.

Page 21: CPU Otimizar

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

Page 22: CPU Otimizar

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

Page 23: CPU Otimizar

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

Page 24: CPU Otimizar

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

Page 25: CPU Otimizar

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

Page 26: CPU Otimizar

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