CPU Otimizar

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

Embed Size (px)

description

Ciencia da Comutação

Transcript of CPU Otimizar

  • Unidade Central de Processamento 6

    Otimizao do desempenho

  • Pipeline

    Tcnica de implementao de processadores que permite a sobreposio temporal das diversas fases de execuo das instrues

    Constitudo por seqncia de estgios 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

    Joo

    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

    Joo

    Maria

    16:0015:3015:00Cliente

  • Caractersticas do Pipeline

    Aumenta o nmero de instrues executadas simultaneamente

    Aumenta taxa de instrues iniciadas e terminadas por unidade de tempo

    Melhora o desempenho do processo (throughput)

    No reduz o tempo gasto para completar cada instruo individualmente.

  • Ciclo de instruo

    Ciclo completoBusca da instruo

    Execuo da

    instruoInterpretao da instruo

    Calculo de

    endereo do

    operando

    Busca de operando

    Armazenamento do operando

    Clculo do endereo

    da instruo

    Calculo de

    endereo do

    operando

    Verifica ocorrncia

    de interrupo

    Interrupo

  • Pipeline do ciclo de instruo

    Suponha que o ciclo pudesse ser resumido dos seguintes estgios: Busca de Instruo (BI) Decodificao da Instruo (DI) Clculo de (endereo) Operandos (CO) Busca de Operandos (BO) Execuo da Instruo (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 TempoInstruo

  • Caractersticas do Pipeline

    Deve-se procurar dividir a execuo da instruo em estgios com o mesmo Tempo

    Contudo alguns estgios so mais lentos: O estagio execuo geralmente mais lento que o

    de busca Quando os estgios no tem o mesmo tempo:

    Algumas instrues podem ter o seu tempo aumentado

    Isso ocorre pois elas atravessam estgios em que no realizam nenhuma operao 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 TempoInstruo

  • Pipeline do ciclo

    Exemplo 5

    AOBOCOBI

    BODI

    EICOBI

    BO

    AO

    CO

    EIDI

    EIDI4

    987654321

    AOEI

    AO

    BO

    BI

    3

    DI2

    COBI1

    Instante de TempoInstruo

  • Conflitos

    Situaes que impedem a prxima instruo dentro de uma fila de ser executada no ciclo esperado

    Os Conflitos reduzem o tempo de ganho obtido pelo pipelining

    Existem trs classes de conflitos: Estrutural de Dados de Controle

  • Conflitos Estruturais

    Oriundos de um hardware que no suporta a sobreposio simultnea de todas as etapas de instrues

    No exemplo da lavanderia seria o equivalente a implementar um pipeline onde s existisse uma tomada para a mquina de lavar e para a mquina de secar.

  • Conflitos de Dados

    Ocorrem quando uma instruo para ser executada depende dos resultados gerados por alguma instruo anterior que ainda no 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 instruo de salto condicional (branch) entra no pipelineprovocando o cancelamento de instrues subsequentes que tambm entraram no pipeline.

  • Pipeline do ciclo c/ desvio

    Exemplo 6

    CODIBI5

    BO

    BO

    BI

    BO

    BI

    BI

    BI

    CODI4

    987654321

    AOEI

    AO

    CO

    EI

    DI

    CO

    3

    DI2 (salto p/ 5)

    CODI1

    Instante de TempoInstruo

  • Pipeline do ciclo c/ desvio

    Exemplo 6 (continuao)

    BO

    BO AOEI

    5 (salto p/3)

    EI

    AOEI4

    181716151413121110

    AO3

    2 (salto p/ 5)

    1

    Instante de TempoInstruo

  • Pipeline do ciclo c/ desvio

    Exemplo 7

    BO

    BO AOEI

    5 (salto p/3)

    EI

    EI AO4

    181716151413121110

    AO3

    2 (salto p/ 5)

    1

    Instante de TempoInstruo

  • 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 disponvel

    Chamamos este processo de stall.

  • Pipeline do ciclo c/ desvio

    Exemplo 8

    CODIBI5

    BO

    BO

    BI

    BO

    BI

    BI

    BI

    CODI4

    987654321

    AOEI

    AO

    CO

    EI

    DI

    CO

    3

    DI2 (salto p/ 5)

    CODI1

    Instante de TempoInstruo

    Stall

  • Medidas de desempenho

    O tempo gasto no processamento de N instrues em um pipeline com K estgios e ciclo de mquina igual a C dado por: T = [ K + (N 1 )] * C

    Sem pipeline: T = [ K * (N)] * C

  • Exemplo 9

    Se um programa tem 4 instrues. Quanto tempo leva para ser executado em um processador com pipeline de 6 estgios e relgio de 1 ut? T= (6 + (4 -1))*1 = 9 ut (unidades de tempo)

    Sem Pipeline ? T= (6 * (4 ))*1 = 24 ut

  • Exemplo 9

    Ilustrao do exemplo 9

    AOEIBOCODIBI4

    987654321

    AOEI

    AO

    BO

    EI

    AO

    CO

    BO

    EI

    DI

    CO

    BO

    BI3

    DIBI2

    CODIBI1

    Instante de TempoInstruo

  • Exemplo 10

    Se um programa tem 10.001 instrues. Quanto tempo leva para ser executado em um processador com pipeline de 5 estgios e relgio 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

    comparao a no 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