Aula 9 – Sumário
Desempenho
Factores e medidas de desempenho
Noção de CPI (Clock Pulses per Instruction)
Lei de Amdahl
Avaliação do desempenho
Aritmética
Representação de inteiros e reais
2
1
Desempenho
Desempenho
Como avaliar o desempenho de um CPU ?
Tipicamente pensa-se na frequência do sinal de
relógio...
Exemplo: considere dois CPUs com uma unidade de
controlo multi-ciclo:
CPU A
Por exemplo,
O CPU A funciona a 2GHz, logo é mais rápido
que o CPU B, que funciona a 1.8GHZ
demora 2 ciclos de relógio a executar uma instrução (em média)
funciona a 1.0 GHz (T=1 ns)
CPU B
... mas será que a frequência do sinal de relógio
é uma boa medida !??
demora 3 ciclos de relógio a executar uma instrução (em média)
funciona a 1.33 GHz (T=0.75 ns)
Qual será o mais rápido?
Podemos calcular o tempo médio por instrução:
A frequência do sinal de relógio (apesar de importante) é apenas um de
vários factores que contribuem para o desempenho de um processador...
TA = 1.00 ns × 2 = 2.00 ns
TB = 0.75 ns × 3 = 2.25 ns
Tendo em conta apenas estes dados,
a escolha iria para o processador A,
pois em média demora menos tempo
a executar cada instrução
3
Desempenho
Desempenho
O que será então uma boa medida para o
desempenho?
4
Exemplo (tempos de execução, em segundos)
Programa
A medida objectiva mais precisa é o tempo de
execução dos programas
Computador A
Computador B
Computador C
P1
2
10
20
P2
60
30
10
Mas…
se um programa P1 corre mais depressa no computador A do
que no computador B, nada nos diz que outro programa P2
verifique o mesmo.
Para além do CPU, o tempo de execução dos programas
também depende de outros factores
por exemplo, das memórias utilizadas.
Pode-se afirmar que:
A é 5 vezes mais rápido do que B a correr o programa P1
B é 2 vezes mais rápido do que C a correr o programa P1
C é 6 vezes mais rápido do que A a correr o programa P2
...
Estas afirmações são válidas quanto ao desempenho
mostrado a correr os programas P1 e P2 individualmente ...
5
6
1
Desempenho
Desempenho
Tendo em conta o peso de cada um dos programas no sistema
obtém-se uma medida mais consistente
Exemplo: vamos supor que P1 corre 20% das vezes e que P2 corre
80% das vezes
Programa
Computador A
Computador B
Computador C
2
10
20
P1
P2
Tempo médio (seg.)
60
30
10
48.4
26.0
12.0
Pode-se afirmar que:
Conclusão:
Só se conseguiria avaliar objectivamente o desempenho de um
sistema caso se soubesse os tempos de execução de todos os
programas, bem como a sua carga relativa...
Impossível...,
… mas conseguem-se aproximações válidas para os casos típicos
Existem programas desenvolvidos com a finalidade de avaliar o
desempenho – benchmarks – que visam estabelecer aproximações
realistas
Alguns exemplos
B
é 1.86 vezes mais rápido que A para os programas P1 e P2
SPECs (Standard Performance Evaluation Corporation)
C
é 4.03 vezes mais rápido que A para os programas P1 e P2
SYSMark (BapCo – Business Applications Performance Corporation)
C
é 2.17 vezes mais rápido que B para os programas P1 e P2
PCMark e 3DMark (FutureMark)
7
Desempenho
8
Desempenho
Compilador
Desempenho do processador
Sintetizando:
Conjunto de instruções
Tempo de execução de um programa:
Texecução = Nciclos × Trelógio
Texecução =
= Ninstruções × CPImédio × Trelógio
Ninstruções × CPI
frelógio
= Ninstruções × CPImédio / frelógio
Organização do sistema
Hardware
Ninstruções – número de instruções do programa
CPImédio – número médio de ciclos por instrução
Conjunto de instruções
frelógio – frequência do sinal de relógio
Organização do sistema
9
Desempenho
Desempenho
Conclusão
O desempenho do processador depende de
vários factores:
Hardware (circuitos, tecnologia de fabrico)
Organização (datapaths, unidade de controlo, etc.)
Conjunto de instruções
Compilador (e programador, claro está ☺)
10
Outras medidas populares
MIPS Million of Instructions Per Second
MIPS =
Ninstruções
Tempo de execução × 10 6
=
frelógio
CPI × 10 6
Depende apenas do CPI e da frequência de relógio...
MFLOPS million floating-point operations per second
MFLOPS =
A frequência do relógio apenas está ligada aos dois primeiros factores...
Noperações sobre nº s reais
Tempo de execução × 10 6
Grande parte dos programas efectua operações sobre inteiros,
pelo que esta medida pode não ser adequada
11
12
2
Lei de Amdahl
Lei de Amdahl
Lei de Amdahl
O ganho global do sistema depende essencialmente de
dois factores:
Visa quantificar o ganho no desempenho de um sistema
que resulta após a introdução (ou actualização) de um
novo componente na arquitectura.
Define-se o Ganho (ou speedup) como
Ganho =
Gc – ganho do componente
Ganho trazido pelo novo componente para as situações em que é
utilizado
rc – rácio de utilização do componente
fracção do tempo de execução (Told) durante o qual se irá tirar
partido do novo componente
Told
Tnew
Told – tempo de execução antes da introdução do novo componente
Tnew – tempo de execução após a introdução do novo componente
13
Lei de Amdahl
14
Lei de Amdahl
Colocando em equação, tem-se:
Tnew = Told × (1 − rc ) + Told
Exemplo
Está-se a ponderar sobre qual dos seguintes
upgrades se irá efectuar num processador:
r
× c
Gc
Hipótese 1
Sabendo que o Ganhoglobal é igual a Told / Tnew obtém-se:

r
Ganho global =  (1 − rc ) + c
G
c




Acelerar o cálculo das multiplicações por um factor de 20. Sabe-se o
cálculo de multiplicações consome 10% do tempo de execução.
−1
Hipótese 2
Melhorar todas as operações sobre números reais por um factor de
aceleração de 5. As operações que envolvem números reais
correspondem a 40% do tempo de execução.
15
Lei de Amdahl
Lei de Amdahl
Exemplo (cont.)
rc = 0.1
rc = 0.4
Gc = 20
Gc = 5
1
0. 9 +
0. 1
20
= 1.105
Ganho 2 =
Conclusão
Hipótese 2:
Hipótese 1:
Ganho 1 =
16
O esforço para aumentar o desempenho de um
sistema devem ser orientados para melhorar as
situações mais frequentes
1
0.6 +
0.4
5
Uma grande melhoria num componente que é pouco utilizado
tem pouco peso no desempenho global do sistema
= 1.47
A lei de Amdahl pode ajudar a quantificar de forma
objectiva as opções que podem ser tomadas
Conclusão: a segunda hipótese é a mais vantajosa.
17
18
3
Representação de inteiros
Números inteiros com sinal
Aritmética
Representação de números
inteiros e reais
A representação mais comum é a representação em
complemento para 2
Boas propriedades para adição e subtracção
Como já viram em AC I...
No entanto, existem outras representações:
Magnitude
Complemento para 1
Excesso m
19
20
Representação de inteiros
Representação de inteiros
Magnitude
Complemento para 1
1 bit de sinal seguido do valor absoluto do número
O simétrico é a negação bit-a-bit
Exemplos (em 8 bits)
Exemplos (em 8 bits)
0 0000 0000
-0 1000 0000
0 0000 0000
1 0000 0001
-1 1000 0001
1 0000 0001
-1 1111 1110
41 0010 1001
-41 1010 1001
41 0010 1001
-41 1101 0110
78 0100 1110
-78 1100 1110
78 0100 1110
-78 1011 0001
Observações:
-0 1111 1111
Observações:
A notação não tem boas propriedades para a adição:
se fizer N + (-N) o resultado não dá 0...
Boas propriedades para adição,
mas o ‘0’ pode ter duas representações diferentes...
O ‘0’ pode ter duas representações diferentes...
21
Representação de inteiros
22
Representação de inteiros
Excesso m
Apesar de muito utilizada, a notação em complemento
para 2 também tem um defeito:
Representa-se o valor do número acrescido de m
O menor número vale –m e é representado por 0’s
Existe mais um número negativo do que o número de positivos
Exemplo: excesso 128 (8 bits)
O mesmo acontece com a notação excesso-m, onde esse
desequilíbrio pode ainda ser maior
0 1000 0000
-0 1000 0000
1 1000 0001
-1 0111 1111
41 1010 1001
-41 0101 0111
78 1100 1110
-78 0011 0010
Observações:
No entanto, não existe nenhuma notação “ideal”, i.e.:
o zero ter um única representação
existirem tantos números negativos como positivos
ter boas propriedades para adição/subtracção
Se m=2n-1, onde n é o número de bits, a notação é idêntica
ao complemento para 2, mas com o bit de sinal trocado
23
24
4
Representação de números reais
Representação de números reais
Norma IEEE 754 (versão mais recente: Ago/2008)
Formato de um número real (virgula flutuante)
Até meados dos anos 80, a representação de números reais não
estava normalizada...
Cada fabricante usava a sua representação
Para ultrapassar problemas de compatibilidade, surgiu em 1985
a primeira versão da norma IEEE 754
A norma define:
Os formatos de representação dos números reais
Como devem ser feitos os arredondamentos
Como devem ser feitas as operações
Tratamento de excepções (ex: divisão por zero, underflow, overflow)
…
Precisão simples – 32 bits – float
1 bit que define o sinal (0 – positivo; 1 – negativo)
8 bits para o expoente (representado em excesso 127)
23 bits para a mantissa, representada em magnitude
1
Bit de
sinal
8 bits
23 bits
Expoente
Mantissa
32 bits
Valor do número:
(-1)sinal
× 1.mantissa × 2expoente
25
Representação de números reais
26
Representação de números reais
Exemplo:
Qual será o valor do número real C160 0000(hex)?
Significados especiais
Expoente
Mantissa
Valor
–127
== 0
0
128
== 0
± infinito
128
!= 0
NaN (not a number)
–127
!= 0
0.mantissa ×
Obs.
Depende do sinal
2-126
Valores não reais
Forma desnormalizada
Sinal = 1 ⇒ número negativo
Expoente = 1000 0010 = 130
⇒ o expoente vale 3 (não esquecer que está em excesso 127)
Mantissa = 0.1100 0000 … =
2-1
+
2-2
Exemplos:
0000 0000(hex) = 0.0
7F80 0000(hex) = +∞
FFFF FFFF(hex) = NaN
0040 0000(hex) = 0.5 * 2-126
= 0.5 + 0.25 = 0.75
O valor do número será então:
–1.75 × 23 = –14.0
27
28
Representação de números reais
Precisão dupla – double
Obtêm-se os valores de forma idêntica, mas
os números são representados em 64 bits
com 11 bits para o expoente (em excesso 1023)
e 52 bits para a mantissa
Gamas de representação (na forma normal)
Precisão simples
Precisão dupla
≈ ± 1.2 × 10-38 a 3.4 × 1038
≈ ± 2.2 × 10-308 a 1.8 × 10308
29
5
Download

Aula 9 – Sumário Avaliação do desempenho Desempenho