Você está na página 1de 22

Avaliao do Desempenho

Arquitectura de Computadores Lic. em Engenharia de Sistema e Informtica Lus Paulo Santos

Avaliao do Desempenho

7.1 Tempo de Execuo Contedos

C1 C1 C1 C1 C1

7.2 Ciclos por Instruo (CPI)


7.3 Ciclos por Elemento (CPE ) R7.1 Identificar e caracterizar as mtricas relativas ao desempenho da execuo de programas

Resultados de Aprendizagem

R7.2 Utilizar modelos quantitativos para prever/avaliar o desempenho da mquina

AC - Avaliao do Desempenho

Desempenho: o que ?
Quando escolhemos o melhor sistema (i.e., com melhor desempenho) necessrio especificar o melhor em qu!

Sistemas de Computao (hw + sw):


Tempo de execuo Dbito (throughput)

Aceitemos o desempenho de um sistema de computao X como estando relacionado com o tempo de execuo de X (X implica equipamento, hw, e aplicao, sw):
Desempenho X 1 Texec X

donde, se DesempenhoX > DesempenhoY, ento


Texec X < Texec Y
AC - Avaliao do Desempenho 3

Avaliao do Desempenho: para qu?


Desenho de sistemas de computao/processadores Optimizao de software

Seleco/aquisio de um sistema de computao

AC - Avaliao do Desempenho

Desempenho do CPU
Para prever o desempenho (TEXEC tempo de execuo) de um dado programa num determinado CPU necessrio um modelo que relacione o desempenho com as caractersticas do sistema de computao (hw+sw)
Um programa numa mquina executa num determinado nmero mdio de ciclos de relgio: # clock cycles

O perodo do relgio do CPU constante: Tcc

TEXEC = # clock cycles * Tcc

AC - Avaliao do Desempenho

Desempenho do CPU
De que depende o nmero mdio de ciclos necessrios para executar um programa?
Atravs de medies sucessivas possvel estimar o nmero mdio de ciclos necessrio para executar uma instruo: CPI A execuo de um programa consiste na execuo de um determinado nmero de instrues: #I

# clock cycles = CPI * #I

TEXEC = # clock cycles * Tcc = CPI * #I * Tcc = CPI * #I / f


AC - Avaliao do Desempenho 6

Desempenho do CPU
TEXEC CPI *# I f

O CPI um valor mdio, logo pode ser medido com diferentes precises.
A aproximao mais grosseira ser dizer que uma mquina apresenta um determinado CPI, independentemente do tipo de instrues. Diferentes tipos de instrues exibem valores de CPI diferentes: Divises exigem mais ciclos do que adies ou multiplicaes Acessos memria exigem mais ciclos do que acessos a registos Operaes em vrgula flutuante podem exigir mais ciclos do que operaes com inteiros

AC - Avaliao do Desempenho

Desempenho do CPU
Um programador quer escolher entre dois segmentos de cdigo diferentes para um mesmo algoritmo. Qual o mais rpido?
Tipo de Instruo A B C Cdigo A 1 2 2000 100 CPI 1 2 3 Nmero de Instrues B 1000 1000 C 100 1000

TEXEC1 (1* 2000 2 *1000 3 *100)


TEXEC2 (1*100 2 *1000 3 *1000)
AC - Avaliao do Desempenho

f
f

4300
5100

f
f
8

Desempenho do CPU
Calcule o tempo de execuo do programa abaixo numa mquina com um relgio de 2 GHz e CPI=1.5
movl 10, %eax movl 0, %ecx ciclo: addl %eax, %ecx decl %eax jnz ciclo

#I = 32 NOTA: O nmero de instrues a considerar o nmero de instrues executadas. Texec = 32 * 1.5 / 2E9 = 24E-9 s = 24 ns

AC - Avaliao do Desempenho

Relao entre as mtricas


TEXEC CPI *# I f
#I depende do algoritmo, do compilador e da arquitectura (ISA) CPI depende da arquitectura (ISA), da mistura de instrues efectivamente utilizadas, da organizao do processador e da organizao dos restantes componentes do sistema (ex., memria) f depende da organizao do processador e da tecnologia utilizada A nica mtrica completa e fivel para avaliar o desempenho de um computador o tempo de execuo As mtricas CPI, f e #I no podem ser avaliadas isoladamente, devendo ser sempre consideradas em conjunto, pois dependem umas das outras.
AC - Avaliao do Desempenho 10

Relao entre as mtricas


Exemplo 1 : Aumentar a frequncia do relgio (diminuir Tcc) implica frequentemente um aumento do CPI! Explicao: Entre outros factores, deve-se considerar o tempo de acesso memria (Tmem). Se Tcc diminui, mas Tmem se mantm, ento sero necessrios mais ciclos para aceder memria.

f1 1GHz Tcc1 1ns Tmem 40ns Ciclosmem1 40

f 2 2GHz Tcc2 0.5ns Tmem 40ns Ciclosmem2 80

Concluso: Apesar de Tcc diminuir para metade, Texec no diminui para metade, pois o nmero de ciclos de acesso memria aumenta.
AC - Avaliao do Desempenho 11

Relao entre as mtricas


Exemplo 2 : Diminuir o nmero de instrues (#I) recorrendo a instrues mais complexas resulta num aumento do CPI! Explicao: As instrues mais complexas realizam o trabalho de vrias instrues simples, mas podem necessitar de mais ciclos para o completar, resultando num aumento do CPI. Este um dos argumentos dos defensores de arquitecturas RISC.

Concluso: O nmero de instrues diminui, mas o ganho em tempo de execuo no diminui na mesma proporo, devido ao aumento do CPI.

AC - Avaliao do Desempenho

12

Desempenho do CPU - MIPS


MIPS (milhes de instrues por segundo) uma mtrica enganadora MIPS nativo

#I Texec *10 6

1. 2. 3.

MIPS especifica a taxa de execuo das instrues, mas no considera o trabalho feito por cada instruo. CPUs com diferentes instruction sets no podem ser comparados. MIPS varia entre diferentes programas no mesmo CPU MIPS pode variar inversamente com o desempenho

Esta mtrica pode ser usada para comparar o desempenho do mesmo programa em CPUs com o mesmo conjunto de instrues, mas micro-arquitecturas e/ou frequncias do relgio diferentes.

AC - Avaliao do Desempenho

13

Desempenho do CPU - MIPS


Considere os seguintes segmentos de cdigo executados numa mquina com f = 1 GHz. Qual o que exibe melhor desempenho de acordo com as mtricas Texec e MIPS?
Cdigo A (CPI=1) 1 2 5 10 Nmero de Instrues B (CPI=2) 1 1 C (CPI=3) 1 1

Texec1

5 23 10ns 9 10 7 MIPS1 700 9 6 10 *10 *10

Texec2

10 2 3 15ns 9 10 12 MIPS2 800 9 6 15 *10 *10

Esta mtrica favorece programas com muitas instrues simples e rpidas, pois no tem em considerao a quantidade de trabalho feita por cada uma.
AC - Avaliao do Desempenho 14

Desempenho do CPU - MIPS


MIPS de pico (ou peak MIPS) mxima taxa de execuo de instrues

a mtrica mais enganadora, pois corresponde a sequncias de cdigo que apenas tenham instrues com o CPI mais baixo possvel. Este tipo de sequncias de instrues no realizam, regra geral, trabalho til; consistem apenas em operaes elementares com operandos em registos. Pode ser visto como a velocidade da luz do CPU, e portanto, inatingvel. O principal problema que muitas vezes publicitada pelos fabricantes/vendedores como uma medida de desempenho das suas mquinas!

AC - Avaliao do Desempenho

15

Desempenho - CPE
As mtricas CPI e MIPS dependem do nmero de instrues mquina efectivamente executadas Para guiar um programador de uma linguagem de alto nvel so necessrias mtricas mais prximas do problema que se pretende resolver CPE Ciclos Por Elemento

nmero mdio de ciclos necessrios para processar um elemento de dados


Ajuda a perceber o desempenho do ciclo de um programa iterativo Apropriada para expressar o desempenho de um programa que realiza uma operao repetitiva sobre diferentes elementos de dados:
Processar pixels numa imagem Computar os elementos de uma matriz
AC - Avaliao do Desempenho 16

Desempenho - CPE
void metade1 (int *a, int n) { for (int i=0 ; i<n ; i++) a[i] = a[i] /2; } void metade2 (int *a, int n) { for (int i=0 ; i<n ; i++) a[i] >>= 1; }

800 600 ciclos 400 200

Declive = CPE = 4.0 ClockCycles = 20 + 4.0 * n

Declive = CPE = 3.5

ClockCycles = 20 + 3.5 * n

50

100 n

150

200

NOTA: valores fictcios!


17

AC - Avaliao do Desempenho

Desempenho - CPE
void metade1 (int *a, int n) { for (int i=0 ; i<n ; i++) a[i] = a[i] /2; } void metade3 (int *a, int n) { for (int i=0 ; i<n ; i+=2) { a[i] = a[i] /2; a[i+1] = a[i+1] /2; } } Para n = 1000 -> ciclos = 3820 Qual o CPE? Quantos ciclos por iterao?

Para n = 1000 -> ciclos = 4020 Qual o CPE? Quantos ciclos por iterao?

A utilizao de ciclos por elemento e no ciclos por iterao d uma indicao do tempo necessrio para processar um vector de tamanho n independentemente da implementao.
AC - Avaliao do Desempenho 18

Metodologia Medio de Desempenho


Princpios
Isolar o mais possvel factores externos
Considerar a sobrecarga (intruso) do prprio processo de medio Repetir vrias vezes a medio

Documentar a experincia para que seja reprodutvel por outros


Equipamento, verso do software, estado do sistema,

Ateno ao relgio usado


Preciso: diferena entre o tempo medido e o tempo real Resoluo: unidade de tempo entre dois ticks do relgio
Add (int) Acesso ao disco Refrescamento do ecr Presso de tecla

Mult (FP) Div (FP)

Interrupo do teclado

1 ns 10-9

1 us 10-6 AC - Avaliao do Desempenho

1 ms 10-3

1s 100 19

Metodologia Medio de Desempenho


Qual o tempo a medir?
Wall Time
Tempo decorrido desde o incio at ao fim do programa Depende da carga do sistema (E/S, outros processos,)

Tempo de CPU
Tempo efectivamente dedicado a este processo Menos sensvel carga do sistema

Comando time
time <comando> 0.820u 0.300s 0:01.32 0,82 seg em user time 0,30 seg em system time 1,32 seg de wall time
AC - Avaliao do Desempenho 20

Metodologia Medio de Desempenho


Combinar o resultado de vrias medies:

Mdia das vrias medies


Valores muito alto/baixos influenciam a mdia Analisar tambm o desvio padro (e.g., variaes entre medies)

Melhor medio
Valor obtido nas condies ideais

Mdia das K-melhores medies


Mdia das k melhores execues vezes

Mediana
Mais robusto a variaes nas medies

AC - Avaliao do Desempenho

21

Metodologia Medio de Desempenho


Opes para medio do tempo gettimeofday()
Retorna o nmero de segundos desde 1-Jan-1970 Usa Timerou o contador dos ciclos (depende da plataforma) Resoluo no melhor caso de 1us

Contador de ciclos
Usa o time stamp counter do prprio processador, contando ciclos do relgio Mede o wall time Preciso muito elevada Utilizar para medies <<1s

Time (linha de comando)


Apenas usvel para medies >>1seg
AC - Avaliao do Desempenho 22