Você está na página 1de 28

Arquitetura de Computadores I

Avaliao de desempenho
Introduo

Edson Moreno

edson.moreno@pucrs.br
http://www.inf.pucrs.br/~emoreno

Adaptado do material de aula de Hennessy e Patterson


Desempenho
Mea, informe e resuma
Faa escolhas inteligentes
Vital para entender a motivao organizacional subjacente

Por que alguns hardwares so melhores do que outros para diferentes programas?
Que fatores do desempenho de sistema so relacionados ao hardware? (por exemplo,
precisamos de uma nova mquina ou de um novo sistema operacional?)
Como o conjunto de instrues da mquina afeta o desempenho?

Tendo somente o manual do conjunto de instrues e uma


aplicao/sistema a ser executado, impossvel de determinar o
desempenho deste sistema.
Diferentes tipos de mtricas de desempenho podem ser aplicadas para
diferentes tipos de aplicaes, assim como diferentes aspectos podem ser
avaliados para determinar o desempenho
Requisitos de memria, preciso, tempo de resposta,
Desempenho
Qual destes avies possui melhor desempenho?

Mas o que considerado como desempenho para um avio?


Capacidade?
Velocidade?
Autonomia?
Vazo?
Desempenho
Suponha a execuo de um programa em 2 estaes de trabalho diferentes
A estao mais rpida aquela que termina a execuo primeiro

Suponha a execuo de programas em 2 estaes de trabalho compartilhadas


A estao mais rpida aquela que completa a execuo de mais programas durante um mesmo
intervalor de tempo

Usurio tradicional: reduzir o tempo de resposta


Tempo entre o incio e o fim de uma tarefa, tambm chamado tempo de execuo

Usurio tradicional: aumentar a vazo (throughput)


Quantidade de trabalho realizado em um dado intervalo de tempo
Desempenho do computador
TEMPO, TEMPO, TEMPO!!!!

Tempo de resposta (latncia)


Quanto tempo leva para meu trabalho ser realizado?
Quanto tempo leva para realizar um trabalho especfico?
Quanto tempo preciso esperar para finalizar minha simulao?

Vazo (throughput)
Quantos trabalhos a mquina pode realizar em um intervalo de tempo?
Qual a velocidade mdia de execuo ?
Quanto trabalho est sendo feito?

Tempo de reposta vs Vazo


Se atualizarmos uma mquina com um novo processador, em que melhoramos?
Se acrescentarmos uma mquina ao laboratrio, em que melhoramos?
-
Tempo de execuo
Tempo decorrido (real time)
- Conta tudo (acessos a disco e a memria, E/S etc.)
- Um nmero til, mas normalmente no ideal para fins de
comparao

Tempo de CPU (user time + system time)


- No conta E/S ou tempo gasto executando outros programas
pode ser dividido em tempo de sistema e tempo de usurio

Nosso foco: tempo de CPU do usurio (user time)


- Tempo gasto executando as linhas de cdigo que esto em
nosso programa desconsiderando chamadas de sistema e
tratamento por parte do SO

Exemplo: Comando time do linux


Ciclos de relgio (clock)
Em vez de informar o tempo de execuo em segundos, normalmente usamos
ciclos

segundos = ciclos segundos


programa programa ciclos

Os tiques de clock indicam quando iniciar as atividades (uma abstrao):

tempo

Tempo de ciclo = tempo entre os tiques = (frao de) segundos por ciclo
Velocidade de clock (freqncia) = nmero de ciclos por segundo

Um clock de 4Ghz possui um perodo de ciclo de .......(ps)


Ciclos de relgio (clock)
Em vez de informar o tempo de execuo em segundos, normalmente usamos
ciclos

segundos = ciclos segundos


programa programa ciclos

Os tiques de clock indicam quando iniciar as atividades (uma abstrao):

tempo
Tempo de ciclo = tempo entre os tiques = segundos por ciclo
Velocidade de clock (freqncia) = ciclos por segundo

Um clock de 4Ghz possui um perodo de ciclo de

1 Kilo = 103; 1 Mega = 106; Giga = 109; Tera = 1012


1 seg. = 103 ms = 106 us = 109 ns = 1012 ps
Como melhorar o desempenho
Tempo de Exec. = Nmero de ciclos Tempo de um
programa programa ciclo

Portanto, para melhorar a quantidade de segundos para a execuo de um programa


(tudo mais sendo igual), voc pode (aumentar ou diminuir?)

________ o nmero de ciclos necessrios para um programa, ou


________ o perodo de durao de um ciclo de clock ou, dito de outra maneira,
________ a velocidade de clock.

Desta forma tem-se:


Tempo de execuo = nro de ciclos de clock * perodo do clock ou
nro de ciclos de clock / freqncia do clock
Ciclos necessrios por programa
Poderamos considerar que o nmero de ciclos igual ao nmero
de instrues ?

3. Instruo
2. Instruo
1. Instruo

4.

5.
6.
Tempo
Ciclos necessrios por programa
Poderamos considerar que o nmero de ciclos igual ao nmero
de instrues !

3. Instruo
2. Instruo
1. Instruo

4.

5.
6.
Tempo

Essa suposio incorreta, pois:


Diferentes instrues levam a diferentes perodos em
diferentes mquinas
Diversidade arquitetural
Por exemplo:
Multiplicao vs adio
Operaes de ponto flutuante vs operaes de inteiros
Acessar a memria vs acesso a registradores
Exemplo
Nosso programa favorito executado em 10 segundos no computador A, que
possui uma freqncia de relgio de 4MHz.
Estamos tentando ajudar um projetista de computador a construir uma nova mquina
B, que execute esse programa em 6 segundos.
O projetista determinou que um aumento substancial na velocidade de clock
possvel, mas esse aumento afetar o restante do projeto da CPU, fazendo com que o
computador B exija 1,2 vez mais ciclos de relgio do que o computador A para esse
programa.
Que freqncia de relgio/velocidade de clock devemos pedir para que o projetista
almeje?

Lembrando:
Tempo de execuo = nro de ciclos de clock / freqncia do clock
1 seg. = 103 ms = 106 us = 109 ns = 1012 ps
1 Hz = 1 ciclo/seg., 1KHz = 103 ciclo/seg., 1MHz = 106 ciclo/seg.
Exemplo - Soluo
TexecA = 10seg; NroCiclosA=?; FreqA=4*106
TexecB = 6seg; NroCiclosB=1,2* NroCiclosA; FreqA=?

TExecA=NroCiclosA / FreqA
10 = NroCiclosA / 4 * 106
NroCiclosA = 40 * 106

TExecB=NroCiclosB / FreqB
6 = (1,2 * NroCiclosA) / FreqB
FreqB = 8* 106 ou seja 8MHz

Lembrando:
Tempo de execuo = nro de ciclos de clock / freqncia do clock
1 seg. = 103 ms = 106 us = 109 ns = 1012 ps
1 Hz = 1 ciclo/seg., 1KHz = 103 ciclo/seg., 1MHz = 106 ciclo/seg.
Tendo sido entendido os ciclos
Um dado programa vai exigir
Um dado nmero de instrues
Um dado nmero de ciclos
Um dado nmero de segundos

Tem-se agora um vocabulrio que relaciona estas quantidades


Perodo de ciclo (segundos por ciclo)
Frequncia de relgio (ciclos por segundo)
CPI (ciclos por instruo)
Aplicaes com intensas operaes de pto flutuante acarretam em um maior CPI
MIPS (milhes de instrues por segundo)
Pode ser grande para programas que usam instrues simples
Desempenho
Deteminado pelo tempo de execuo

Alguma das variveis pode ser utilizada para determinar desempenho?


# de ciclos de execuo de um programa?
# de instrues em um programa?
# de ciclos por segundo?
# mdio de ciclos por instruo?
# mdio de instrues por segundo?
Desempenho
Para um programa sendo executado na mquina X,
DesempenhoX = 1 / Tempo_execuoX

X n vezes mais rpido do que Y


DesempenhoX / DesempenhoY = n

Problema:
- se a mquina A executa um programa em 20 segundos
- e a mquina B executa o mesmo programa em 25 segundos
- defina quantas vez a mquina A mais rpida que a mquina B.
CPI
Nmero de ciclos de clock por instruo
Especfico para cada instruo em um dada arquitetura
Pode-se contabilizar o nmero de ciclos mdio por instruo como medida de
desempenho

Considerando o nmero de instrues no clculo de desempenho:

Nro de ciclos de relgio = nro de instrues de um dado programa * CPI

Como diferentes instrues executam em um nmero de ciclos de relgio


diferentes, a CPI dada por uma mdia ponderada das instrues executadas
pelo programa.
Exemplo de CPI
Suponha que tenhamos duas implementaes da mesma arquitetura do conjunto de
instrues (ISA)

Para um determinado programa,


A mquina A tem tempo de ciclo de clock de 250 ps e CPI de 2,0
A mquina B tem tempo de ciclo de clock de 500 ps e CPI de 1,2

Que mquina mais rpida para esse programa e o quanto?

Lembrando:
Nro de ciclos de clock = nro de instrues * CPI
Tempo de execuo = nro de ciclos de clock * perodo de um clock
Desempenho = 1 / Tempo de execuo
Exemplo de CPI
Suponha que tenhamos duas implementaes da mesma arquitetura do conjunto de
instrues (ISA)
Para um determinado programa,
A mquina A tem tempo de ciclo de clock de 250 ps e CPI de 2,0
A mquina B tem tempo de ciclo de clock de 500 ps e CPI de 1,2
Que mquina mais rpida para esse programa e o quanto?
Programa tem nroInstrucoesX
NroCiclosA = nroInstrucoesX * 2; NroCiclosB = nroInstrucoesX * 1,2

TExecA = NroCiclosA * PeriodoClockA = nroInstrucoesX * 2 * 250 = 500* nroInstrucoesX


TExecB = NroCiclosB * PeriodoClockB = nroInstrucoesX * 1,2 * 500 = 600*nroInstrucoesX

DesempenhoA / DesempenhoB=TExecB/TExecA= 600*nroInstrucoesX/500*nroInstrucoesX

Logo a mquina A 1,2X mais rpida do que a mquina B


Equao de desempenho
A partir do exemplo anterior, podemos escrever a equao bsica de
desempenho:

Tempo de execuo =
nro de instrues * CPI * perodo de clock ou
(nro de instrues * CPI) / frequncia
Equao de desempenho
A partir do conhecimento dos funcionamento das diferentes
instrues que compem uma dada arquitetura e que empregado
em um dado programa, o nmero de ciclos de clock pode ser
calculado a partir da seguinte equao
Exemplo de CPI
O projetista de um compilador deseja decidir entre duas possveis seqncias de
cdigo para a resoluo de um problema. Dado os tipos de instruo o
nmero de ciclos por instruo (CPI) de cada tipo defina:
1) Qual o cdigo mais rpida?
2) Qual a CPI de cada um dos programas?
Exemplo de CPI
O projetista de um compilador deseja decidir entre duas possveis seqncias de
cdigo para a resoluo de um problema. Dado os tipos de instruo o
nmero de ciclos por instruo de cada tipo, qual seqncia mais rpida?

O cdigo 1 executa 2+1+2=5 Instrues.


O cdigo 2 executa 4+1+1=6 Instrues.
O nmero de ciclos de clock para o codigo 1 =(2x1)+(1x2)+(2x3)= 10 ciclos.
O nmero de ciclos de clock para o codigo 2 =(4x1)+(1x2)+(1x3)= 9 ciclos.

CPI cdigo 1= 10/5 =2,0


CPI cdigo 2 = 9/6=1,5
O cdigo 2 mais rpido, mesmo que execute uma instruo a mais pois tem CPI mais baixo.
Lei de Amdahl
O ganho de desempenho que pode ser obtido melhorando uma determinada parte do
sistema limitado pela frao de tempo que essa parte utilizada pelo sistema durante a
sua operao.

Tempo de execuo aps melhoria =


Tempo de execuo no afetado +
(Tempo de execuo afetado / Quantidade de melhoria)

Exemplo:

Suponha que um programa seja executado em 100 segundos em uma mquina,


com multiplicao responsvel por 80 segundos desse tempo. O quanto
precisamos melhorar a velocidade da multiplicao se queremos que o
programa seja executado 4 vezes mais rpido?
Lei de Amdahl
Exemplo:
Suponha que um programa seja executado em 100 segundos em uma mquina,
com multiplicao responsvel por 80 segundos desse tempo. O quanto
precisamos melhorar a velocidade da multiplicao se queremos que o
programa seja executado 4 vezes mais rpido?

Tempo de execuo aps melhoria =


Tempo de execuo no afetado +
(Tempo de execuo afetado / Quantidade de melhoria)

100/4 = (100-80) + (80 / n)

(25 20)*n = 80

n = 16 Quantidade de melhoria a ser aplicada sobre a parte melhorvel


Lei de Amdahl
O ganho de desempenho que pode ser obtido melhorando uma determinada parte do
sistema limitado pela frao de tempo que essa parte utilizada pelo sistema durante a
sua operao.

Tempo de execuo aps melhoria =


Tempo de execuo no afetado +
(Tempo de execuo afetado / Quantidade de melhoria)

Exemplo:

Suponha que um programa seja executado em 100 segundos em uma mquina,


com multiplicao responsvel por 80 segundos desse tempo. O quanto
precisamos melhorar a velocidade da multiplicao se queremos que o
programa seja executado 4 vezes mais rpido?

Que tal torn-lo 5 vezes mais rpido?


Bibliografia
Hennessy, J. e Patterson, D. Organizao e Projeto de
Computadores: A interface Hardware/Software. 3 Edio,
Captulo 4.

Você também pode gostar