01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
ARQUITETURA DE
COMPUTADORES
Desempenho
Prof Daves Martins
Msc Computação de Alto Desempenho
Email: daves.martins@ifsudestemg.edu.br
Fundamentos de Organização de Computadores
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Introdução
Tempo de relógio real necessário para execução de um programa:
– acessos a disco
– atividades de I/O
– overhead do sistema operacional, da rede, ...
• no entanto, seguidamente um sistema executa diversos programas
simultaneamente
• throughput é uma medida do número de tarefas executada por unidade de
tempo
O que otimizar?
– tempo de resposta de um programa isolado?
– throughput do sistema?
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Introdução
Distinção entre tempo de:
– relógio real gasto em um programa, e
– CPU efetivamente gasto com tarefas específicas do programa
• não inclui tempo de execução de outros programas, tempo de espera por
I/O, ...
O tempo de CPU está dividido em tempo de:
– usuário: tempo gasto executando instruções do programa do usuário
– sistema: tempo gasto com tarefas do S.O. necessárias para a execução
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Introdução
O desempenho é conseqüência de otimizações feitas em 3
dimensões do hardware:
• arquitetura: processadores e instruções otimizadas
• organização: paralelismo e memória cache
• tecnologia: velocidade de chaveamento das portas lógicas e
tempo de acesso à memória
O desempenho também depende no entanto do compilador
– geração de código otimizada
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básica
•
ciclos de clock
= intervalos básicos de tempo nos quais são
executadas as operações elementares de uma instrução
– transferências de valores entre registradores
– operações aritméticas na ULA
•
período do clock T
= tempo de duração de um ciclo de clock. Por
exemplo: 1 ns
•
frequência de operação f
= número de ciclos de clock por unidade
de tempo
f = 1 / T
se T = 1 ns
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básicas
tempo de CPU = nº de ciclos de clock X período do clock
de um programa do programa
por exemplo:
– programa gasta 10.10
6
ciclos
– período do clock é 1 ns ( 1.10
-9
)
tempo de CPU do programa = 10.10
6
x 1.10
-9
= 10.10
-3
= 10 ms
alternativamente:
tempo de CPU de um programa = nº de ciclos de clock do programa
freqüência do clock
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básicas
Múltiplo Equivalente decimal
Nome
Símbolo
10
−3
0,001
milissegundo
ms
10
−6
0,000001
microssegundo
µs
10
−9
0,000000001
nanossegundo
ns
10
−12
0,000000000001
picossegundo
ps
10
−15
0,000000000000001
fentossegundo
fs
10
−18
0,000000000000000001
atossegundo
as
10
−21
0,000000000000000000001
zeptossegundo
zs
10
−24
0,000000000000000000000001
yoctossegundo
ys
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básicas
Formas de aumento do desempenho:
– diminuir o período do clock (tecnologia, organização)
– diminuir nº de ciclos necessários para execução do
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básicas
nº de ciclos de = nº médio de ciclos de X nº instruções instrução
clock do programa clock por instrução do programa
O nº médio de ciclos de clock por instrução (CPI) é uma média sobre
todas as instruções executadas no programa.
Exercício:
– duas máquinas implementam o mesmo conjunto de instruções
– um mesmo programa é rodado em ambas as máquinas
– máquina A tem período de clock de 1 ns e CPI = 2.0 para este
programa
– máquina B tem período de clock de 2 ns e CPI = 1.2 para o mesmo
programa
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Resolvendo o exemplo
Exercício:
– duas máquinas implementam o mesmo conjunto de instruções
– um mesmo programa é rodado em ambas as máquinas
– máquina A tem período de clock de 1 ns e CPI = 2.0 para este programa
– máquina B tem período de clock de 2 ns e CPI = 1.2 para o mesmo programa
Sabemos que:
nº de ciclos de
= nº médio de ciclos de X nº instruções instrução
clock do programa
clock por instrução do programa
tempo de CPU =
nº de ciclos de clock
X período do clock
de um programa
do programa
Portanto:
tempo de CPU = nº médio de ciclos de X nº instruções instrução X período do clock
de um programa clock por instrução do programa
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Resolvendo o exemplo
Exercício:
– um mesmo programa é rodado em ambas as máquinas (
mesmo número de instruções - I
)
– máquina A tem período de clock de 1 ns e CPI = 2.0 para este programa
– máquina B tem período de clock de 2 ns e CPI = 1.2 para o mesmo programa
tempo de CPU = nº médio de ciclos de X nº instruções instrução X período do clock
de um programa clock por instrução do programa
Máquina A:
tempo de CPU = 2.0 X
I (nro. instruções)
X 1 ns
de um programa
tempo de CPU =
2.0xI ns
de um programa
Máquina B:
tempo de CPU = 1.2 X
I (nro. instruções)
X 2 ns
de um programa
tempo de CPU =
2.4xI ns
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Métricas Básicas
tempo de CPU = nº de instruções X CPI X período do clock
tempo de CPU = nº de instruções X CPI
freqüência do clock
Como obter estes valores?
– tempo de CPU é medido executando-se o programa
– período (ou frequência) do clock é divulgado pelo fabricante
– nº de instruções e CPI são mais difíceis de obter
• nº de instruções depende da arquitetura e do compilador
• CPI depende da organização e do programa
– conhecendo-se nº de instruções ou CPI, pode-se determinar o outro
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Para entendermos performance, ou qual máquina tem a melhor, primeiro
precisamos definir o que o mesmo significa.
Resumidamente, a performance de uma máquina é responsável pela
eficácia de todo o sistema, composto pelo hardware e pelo software.
Vamos então descrever em detalhes os principais fatores que influenciam
positivamente e negativamente a performance de uma máquina, já que é um
dos fatores mais importantes, tanto para quem irá comprar quanto pra que
irá projetar o mesmo.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
DEFININDO PERFORMANCE
No computador a performance pode ser definida de várias maneiras
diferentes.
Se você rodar o mesmo programa em duas estações de trabalho
diferentes, é lícito afirmar que a mais rápida será a que terminar primeiro.
Se
você
estiver
analisando
as
instalações
de
um
centro
de
processamento com dois computadores que funcionam em regime de tempo
compartilhado rodando tarefas por diversos usuários, podemos afirmar que
a máquina mais rápida é a que consegue executar o maior número de
programas por dia.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Se você se colocar no papel de usuário de um computador, seu
principal interesse será reduzir o tempo de resposta – definido como
tempo decorrido entre o início e o fim do seu programa -, tempo esse
conhecido como tempo de execução.
Porém, se você estiver desempenhando o papel de gerente do centro
de computação, seu principal interesse será a quantidade total de trabalho
executado em um determinado intervalo de tempo, incluindo aí as
maneiras de maximizá-lo, que é o
throughput
.
DEFININDO PERFORMANCE
Resumindo, performance de um computador
esta ligado à atuação e desempenho.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Alguns dos fatores que influenciam a
performance do computador, são
por exemplo, velocidade do CPU,
RAM disponível, velocidade e
capacidade do disco rígido.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
MEDIDAS DE
PERFORMANCE
Em computação, nos interessa o tempo de resposta,
expressões que definem o tempo total para se completar
uma determinada tarefa computacional, incluindo os
acessos a disco e à memória, as atividades de I/O, o
overhead introduzido pela ação do sistema operacional, e
tudo o mais.
O tempo em um computador é compartilhado e o
processador pode trabalhar em mais de um programa
simultaneamente.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
O tempo de processador é o tempo gasto por ele na
execução das instruções dedicadas a um programa e não
inclui o tempo gasto com I/O, nem o tempo gasto para
executar
outros
programas
diferentes,
no
caso
dos
sistemas que compartilham o tempo do processador.
O conceito de tempo de processador reconhece a distinção
entre o tempo gasto por ele para executar instruções de
determinado programa, e o tempo total gasto na execução
desse programa – que inclui o tempo de I/O, o tempo de
acesso a disco e a memória, e o tempo dedicado ao SO e a
outros programas.
MEDIDAS DE
PERFORMANCE
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Escolha de Programa para
Avaliar a Performance
Uma
alternativa
para
avaliar
a
performance
da
máquina é a utilização de
benchmarks
, que são
programas desenvolvidos especialmente para trabalhar
na medida da performance.
Na verdade, formam um wordload(carga de trabalho)
cujo objetivo é estimar a performance do wordload real,
utilizado por grupos de usuários.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Escolha de Programa para
Avaliar a Performance
O uso de benchmarks cuja performance dependa de
segmentos de código muito pequenos estimula a
realizações de otimização tanto na arquitetura quanto
no compilador, fazendo com que o sistema tenha uma
ótima performance quando executa o pequeno trecho
do benchmarck.
O conjunto de benchmarks para processador mais
conhecido
atualmente
é
o
o
SPEC
(System
Performance Evaluation Cooperative).
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
SPEC ‘89
Gráfico de “melhoramento” do compilador
e desempenho
0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
to m ca tv
fp p p p
m a trix3 0 0
e q n t o tt
li
n a sa 7
d o d u c
s p ic e
e sp re s s o
g c c
B e n c h m a rk
C o m p ile r
E n h a n c e d c o m p ile r
S
P
E
C
p
e
rf
o
rm
a
n
c
e
r
a
ti
o
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Tarefa
Descrição
Gerenciar os programas de
inicialização
Alguns programas são iniciados automaticamente quando você
inicia o Windows. Muitos desses programas abrindo ao mesmo
tempo podem tornar o computador lento.
Para desabilitar esses programas da inicialização e melhorar o
desempenho, use o Windows Defender.
Ajustar efeitos visuais
Você pode otimizar o desempenho alterando o modo de
exibição dos menus e janelas.
Ajustar opções de
indexação
As opções de indexação podem ajudá-lo a localizar o que você
está procurando de forma rápida e fácil no computador.
Ajustar as configurações de
energia
Altere as configurações relacionadas à energia, de forma que o
computador retorne às configurações de economia de energia
com
mais
eficiência,
e
ajuste
o
uso
da
bateria
para
computadores portáteis.
Limpeza de Disco
Esta ferramenta exclui arquivos desnecessários ou temporários
no disco rígido, para que você possa aumentar a quantidade de
espaço de armazenamento que possui.
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Desempenho – exemplo
Computador A executa um programa em 10
segundos e tem um clock de 4 GHz
Computador B execute esse programa em 6
segundos e B exija 1,2 vez mais ciclos de
clock do que o computador A
Qual a velocidade de clock de B?
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Desempenho – exemplo
28
GHz
de clock
velocidade
x
x
,
de clock
velocidade
x
s
de clock
velocidade
clock
xciclos de
xecução
tempo de e
x
clock
ciclos de
x
clock
ciclos de
de clock
velocidade
clock
ciclos de
xecução
tempo de e
B
B
B
A
B
A
A
A
A
A
8
10
40
2
1
6
2
,
1
ciclos
10
40
10
4
s
10
9
9
9
=
=
=
=
=
=
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011
Considerar que temos duas implementações da mesma
arquitetura do conjunto de instruções (ISA).
Para certo programa:
Máquina A tem um tempo de ciclo de clock de 250 ps e um
CPI de 2.0
Machine B tem um tempo de ciclo de clock de 500 ps e um
CPI de 1.2
Qual máquina é mais rápida para esse programa, e por
quanto?
01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100 01101111 01110010 01100101 01110011