Desempenho
Desempenho do processador
1
Desempenho

Desempenho do processador

Tempo de execução de um programa:
Texecução = Nciclos  Trelógio
= Ninstruções  CPI  Trelógio
= Ninstruções  CPI / frelógio
Ninstruções – número de instruções do programa
CPI – número de ciclos por instrução
frelógio – frequência do sinal de relógio
2
Desempenho
Compilador

Sintetizando:
Texecução 
Conjunto de instruções
Ninstruções  CPI
frelógio
Organização do sistema
Hardware
Conjunto de instruções
Organização do sistema
3
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á )
A frequência do relógio apenas está ligada aos dois primeiros factores...
4
Desempenho

Algumas medidas de desempenho populares

MIPS Million of Instructions Per Second
MIPS 
Ninstruções
Tempode execução 10
6

frelógio
CPI  106
Depende apenas de CPI e da frequência de relógio...

MFLOPS million floating-point operations per second
MFLOPS
Noperações
sobre nº s reais
Tempode execução 106
Muitos programas efectuam essencialmente operações sobre inteiros,
pelo que esta medida não é adequada nesses casos
5
Lei de Amdahl

Lei de Amdahl
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) com sendo
Ganho 
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
6
Lei de Amdahl

O ganho global do sistema depende essencialmente de
dois factores:

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 em que se tira partido do novo
componente
7
Lei de Amdahl

Colocando em equação, tem-se:
Tnew  Told  1  rc   Told
rc

Gc
Sabendo que o ganho é igual a Told / Tnew obtém-se:
Ganho global

rc

  1  rc  
Gc




1
8
Lei de Amdahl

Exemplo
Está-se a ponderar sobre qual dos seguintes
upgrades se irá efectuar num processador:
Hipótese 1
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.
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.
9
Lei de Amdahl

Exemplo (cont.)
Hipótese 1:
Hipótese 2:
rc = 0.1
rc = 0.4
Gc = 20
Gc = 5
Ganho 1 
1
0. 1
0 .9 
20
 1.105
Ganho 2 
1
0. 6 
0 .4
5
 1.47
Conclusão: a segunda hipótese é a mais vantajosa.
10
Lei de Amdahl

Conclusão

O esforço para aumentar o desempenho de um
sistema devem ser orientados para melhorar as
situações mais frequentes


Uma grande melhoria num componente que é pouco utilizado
tem pouco peso no desempenho global do sistema
A lei de Amdahl pode ajudar a quantificar de forma
objectiva as opções que podem ser tomadas
11
Aritmética
Representação de números
12
Representação de inteiros

Números inteiros com sinal


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 formas de representar:

Magnitude

Complemento para 1

Excesso m
13
Representação de inteiros

Magnitude

1 bit de sinal seguido do valor absoluto do número

Exemplos (em 8 bits)
0 0000 0000
-0 1000 0000
1 0000 0001
-1 1000 0001
41 0010 1001
-41 1010 1001
78 0100 1110
-78 1100 1110
OBS:
A notação não tem boas propriedades para a adição:
se fizer N + (-N) o resultado não dá 0...
O ‘0’ pode ter duas representações diferentes...
14
Representação de inteiros

Complemento para 1

O simétrico é a negação bit a bit

Exemplos (em 8 bits)
0 0000 0000
-0 1111 1111
1 0000 0001
-1 1111 1110
41 0010 1001
-41 1101 0110
78 0100 1110
-78 1011 0001
OBS:
Boas propriedades para adição,
mas o ‘0’ pode ter duas representações diferentes...
15
Representação de inteiros

Excesso m

Representa-se o valor do número acrescido de m

O menor número vale –m e é representado por 0’s

Exemplo: excesso 128 (8 bits)
0 1000 0000
-0 1000 0000
1 1000 0001
-1 0111 1111
41 1010 1001
-41 0101 0111
78 1100 1110
-78 0011 0010
OBS:
Quando m=2n-1 fica semelhante ao complemento para 2,
mas com o bit de sinal trocado
16
Representação de inteiros


Apesar de muito utilizada, a notação em complemento
para 2 também tem um defeito:

Existe mais um número negativo do que o número de positivos

No caso da notação excesso-m, esse desequilíbrio pode ainda
ser maior
No entanto, não existe nenhuma notação “ideal”:

o zero ter um única representação

existirem tantos números negativos como positivos

ter boas propriedades para adição/subtracção
17
Representação de números reais

Norma IEEE 754 (versão mais recente: Ago/2008)

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)

…
18
Representação de números reais

Formato de um número real (virgula flutuante)

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
19
Representação de números reais

Exemplo:
Qual será o valor do número real C160 0000(hex)?
1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
expoente
mantissa
sinal
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 = 0.5 + 0.25 = 0.75
O valor do número será então:
–1.75  23 = –14.0
20
Representação de números reais

Significados especiais
Expoente
Mantissa
Valor
Obs.
–127
== 0
0
128
== 0
 infinito
Depende do sinal
128
!= 0
NaN (not a number)
Valores não reais
–127
!= 0
0.mantissa  2-126
Forma desnormalizada
Exemplos:
0000 0000(hex) = 0.0
7F80 0000(hex) = +
FFFF FFFF(hex) = NaN
0040 0000(hex) = 0.5 * 2-126
21
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


  1.2  10-38 a 3.4  1038
Precisão dupla

  2.2  10-308 a 1.8  10308
22
Aritmética
Multiplicação binária
23
Multiplicação binária

Multiplicação (sem sinal)
1101
multiplicando (A)
× 1010
multiplicador (B)
0000
1101
0000
1101
10000010
produto (P)
Quando se multiplicam dois números
de n bits (sem sinal), o resultado
terá, no máximo, 2n bits.
1101 (13) × 1010 (10) = 10000010 (130)
24
Multiplicação binária

Multiplicação (sem sinal)
A3
A2
A1
A0
B3
B2
B1
B0
B0A3
B0A2
B0A1
B0A0
B1A3
B1A2
B1A1
B1A0
B2A3
B2A2
B2A1
B2A0
B3A3
B3A2
B3A1
B3A0
P6
P5
P4
P3
×
P7
P2
ANDs entre os
bits de A e os
bits de B
P1
P0
25
Multiplicação binária

Utilizando vários adicionadores...
A3
A2
A1
A0
×
B3
B2
B1
B0
0
B0A3
B0A2
B0A1
B0A0
+
B1A3
B1A2
B1A1
B1A0
cout1
S13
S12
S11
S10
+
B2A3
B2A2
B2A1
B2A0
cout2
S23
S22
S21
S20
+
B3A3
B3A2
B3A1
B3A0
cout3
S33
S32
S31
S30
P7
P6
P5
P4
P3
Somadores
P2
P1
P0
26
Multiplicação binária
A3 A2 A1 A0
B0
Pode-se seguir
esta estrutura
A3 A2 A1 A0
B1
X
A3 A2 A1 A0
Cout
B2
Cout
B3
ADD
Y
S
X
A3 A2 A1 A0
0
ADD
Y
S
X
Cout
ADD
Y
S
P7 P6 P5 P4 P3 P2 P1 P0
27
Multiplicação binária

Utilização de vários adicionadores

Se os números a multiplicar são compostos por n bits
então são necessários n – 1 adicionadores de n bits
cada um

Eventuais problemas:

Excesso de material


por exemplo, para multiplicar dois números de 32 bits seriam
necessários 31 somadores de 32 bits
Demasiado consumo de tempo durante um ciclo

Num processador, ter um multiplicador deste género pode
aumentar de forma significativa a duração de cada ciclo, devido
aos tempos de propagação dos somadores
28
Multiplicação binária

Alternativa: usar um único somador e registos

O adicionador efectua todas as adições necessárias
em n ciclos

É necessário:

Um registo para acumular as somas – RP

Um registo de deslocamento para a esquerda e outro para a
direita – RA e RB

RP e RA são registos de 2n bits

para RB, um registo de n bits é suficiente
29
Multiplicação binária

Algoritmo básico (para inteiros sem sinal)

Inicialização:
RP ← 0, RA ← A, RB ← B

Ciclo (n iterações)
se ( RB0 == 1 )
// bit menos significativo em RB
RP ← RP + RA
RA ← RA << 1, RB ← RB >> 1

No final, o resultado da multiplicação está em RP
30
Multiplicação binária

Hardware para o algoritmo básico
B
A
Shift right
Shift left
RB
RA
RB0
ADD
Load
RP
31
Multiplicação binária

Exemplo – multiplicar 1010 por 1001 (i.e. 109)
Inicialização:
RP: 0000 0000
RA: 0000 1010
RB: 1001
Ciclo 3 (RB0 = 0)
RP: 0000 1010
RA: 0101 0000
RB: 0001
Ciclo 1 (RB0 = 1)
RP: 0000 1010
RA: 0001 0100
RB: 0100
Ciclo 4 (RB0 = 1)
RP: 0101 1010
RA: 1010 0000
RB: 0000
Ciclo 2 (RB0 = 0)
RP: 0000 1010
RA: 0010 1000
RB: 0010
O resultado será então:
RP: 01011010 = 21+23+24+26 = 2+8+16+64 = 90
32
Download

acetatos da aula teórica 8