1. Arquitetura de Computadores
ACH2055
Aula 02 – Medindo Desempenho
Norton Trevisan Roman
(norton@usp.br)
30 de agosto de 2019
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 1 / 46
2. M´aquina de Von Neumann
Componentes Cl´assicos
Entrada
Sa´ıda
Mem´oria
Processador
Datapath e
controle
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 2 / 46
3. M´aquina de Von Neumann
Definindo Desempenho
Depende muito de seu
uso
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 3 / 46
4. M´aquina de Von Neumann
Definindo Desempenho
Depende muito de seu
uso
Centros de Dados:
Importa a vaz˜ao
(throughput)
A quantidade total de
trabalho feito em um dado
tempo
Desempenho = Vaz˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 3 / 46
5. M´aquina de Von Neumann
Definindo Desempenho
Usu´ario individual:
Importa o tempo de
resposta (ou de execu¸c˜ao)
O tempo entre o in´ıcio e
finaliza¸c˜ao de uma tarefa
Desempenho =
1
Tempo de Execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 4 / 46
6. Desempenho – Medindo Tempo
Qual tempo medir?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 5 / 46
7. Desempenho – Medindo Tempo
Qual tempo medir?
Tempo de resposta (ou
tempo transcorrido)
Tempo total para
completar uma tarefa
Inclui acessos a disco,
mem´oria, E/S etc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 5 / 46
8. Desempenho – Medindo Tempo
Qual tempo medir?
Tempo de CPU
Tempo que a CPU gasta
trabalhando na tarefa
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 6 / 46
9. Desempenho – Medindo Tempo
Qual tempo medir?
Tempo de CPU
Tempo que a CPU gasta
trabalhando na tarefa
Subdivide-se em:
Tempo de CPU do
usu´ario: tempo de CPU
gasto no programa
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 6 / 46
10. Desempenho – Medindo Tempo
Qual tempo medir?
Subdivide-se em
(cont.):
Tempo de CPU do
sistema: tempo de CPU
gasto no SO executando
tarefas por conta do
programa
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 7 / 46
11. Desempenho – Medindo Tempo
Qual tempo medir?
Aqui focaremos no
Tempo de CPU do
usu´ario
Sem levar em conta
acesso a disco etc
Essa ser´a nossa medida de
desempenho da CPU
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 8 / 46
13. Medindo Tempo
Comparando computadores
DesempenhoX
DesempenhoY
= r
“X ´e r vezes mais r´apido que Y ”
DesempenhoX
DesempenhoY
=
Tempo de Execu¸c˜aoY
Tempo de Execu¸c˜aoX
= r
“O tempo gasto em Y ´e r vezes maior que o gasto
em X”
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 9 / 46
14. Desempenho da CPU
Projeto e Desempenho
Como determinar os efeitos de uma mudan¸ca de
projeto no desempenho (da CPU) experimentado
pelo usu´ario?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 10 / 46
15. Desempenho da CPU
Projeto e Desempenho
Como determinar os efeitos de uma mudan¸ca de
projeto no desempenho (da CPU) experimentado
pelo usu´ario?
tP = CP × tc, onde
tP ´e o tempo de execu¸c˜ao de um programa P na CPU
CP ´e o n´umero de ciclos de clock gastos no programa P
tc ´e o tempo de um ciclo de clock (seu per´ıodo)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 10 / 46
16. Desempenho da CPU
Projeto e Desempenho
Lembre que a frequˆencia do clock fc ´e dada por
fc =
1
tc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 11 / 46
17. Desempenho da CPU
Projeto e Desempenho
Lembre que a frequˆencia do clock fc ´e dada por
fc =
1
tc
Podemos ent˜ao reescrever tP = CP × tc:
tP =
CP
fc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 11 / 46
18. Desempenho da CPU
Projeto e Desempenho
Lembre que a frequˆencia do clock fc ´e dada por
fc =
1
tc
Podemos ent˜ao reescrever tP = CP × tc:
tP =
CP
fc
Melhoramos o desempenho reduzindo o n´umero de ciclos de
clock necess´arios para o programa, ou aumentando a
frequˆencia do clock
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 11 / 46
19. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
tP = CP × tc
Como podemos medir o total de ciclos CP?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 12 / 46
20. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
tP = CP × tc
Como podemos medir o total de ciclos CP?
Dif´ıcil. Contudo, sabemos o n´umero de instru¸c˜oes do
programa
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 12 / 46
21. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
tP = CP × tc
Como podemos medir o total de ciclos CP?
Dif´ıcil. Contudo, sabemos o n´umero de instru¸c˜oes do
programa
E sabemos quantos ciclos s˜ao necess´arios para cada
instru¸c˜ao do circuito (a partir de seu projeto)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 12 / 46
22. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
tP = CP × tc
Como podemos medir o total de ciclos CP?
Dif´ıcil. Contudo, sabemos o n´umero de instru¸c˜oes do
programa
E sabemos quantos ciclos s˜ao necess´arios para cada
instru¸c˜ao do circuito (a partir de seu projeto)
Logo, sabemos o n´umero m´edio de ciclos por instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 12 / 46
23. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
Ent˜ao CP = nP × CPIP, onde
CPIP ´e o n´umero m´edio de ciclos de clock que cada
instru¸c˜ao de P leva para executar
nP o n´umero de instru¸c˜oes do programa P
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 13 / 46
24. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
Ent˜ao CP = nP × CPIP, onde
CPIP ´e o n´umero m´edio de ciclos de clock que cada
instru¸c˜ao de P leva para executar
nP o n´umero de instru¸c˜oes do programa P
E tP = CP × tc
= nP × CPIP × tc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 13 / 46
25. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
Ent˜ao CP = nP × CPIP, onde
CPIP ´e o n´umero m´edio de ciclos de clock que cada
instru¸c˜ao de P leva para executar
nP o n´umero de instru¸c˜oes do programa P
E tP = CP × tc
= nP × CPIP × tc
O tempo de execu¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 13 / 46
26. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
Ent˜ao CP = nP × CPIP, onde
CPIP ´e o n´umero m´edio de ciclos de clock que cada
instru¸c˜ao de P leva para executar
nP o n´umero de instru¸c˜oes do programa P
E tP = CP × tc
= nP × CPIP × tc
O tempo de execu¸c˜ao ´e o n´umero de instru¸c˜oes executadas
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 13 / 46
27. Desempenho da CPU
Tempo de Execu¸c˜ao do Programa
Ent˜ao CP = nP × CPIP, onde
CPIP ´e o n´umero m´edio de ciclos de clock que cada
instru¸c˜ao de P leva para executar
nP o n´umero de instru¸c˜oes do programa P
E tP = CP × tc
= nP × CPIP × tc
O tempo de execu¸c˜ao ´e o n´umero de instru¸c˜oes executadas
multiplicado pelo tempo m´edio de cada instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 13 / 46
28. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 14 / 46
29. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Segundos
Programa
=
Instru¸c˜oes
Programa
×
Ciclos de clock
Instru¸c˜ao
×
Segundos
Ciclo de clock
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 14 / 46
30. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Segundos
Programa
=
Instru¸c˜oes
Programa
×
Ciclos de clock
Instru¸c˜ao
×
Segundos
Ciclo de clock
Unimos, assim, os 3 fatores-chave que afetam o desempenho
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 14 / 46
31. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Segundos
Programa
=
Instru¸c˜oes
Programa
×
Ciclos de clock
Instru¸c˜ao
×
Segundos
Ciclo de clock
Unimos, assim, os 3 fatores-chave que afetam o desempenho
Alternativamente
tP =
nP × CPIP
fc
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 14 / 46
32. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Segundos
Programa
=
Instru¸c˜oes
Programa
×
Ciclos de clock
Instru¸c˜ao
×
Segundos
Ciclo de clock
Unimos, assim, os 3 fatores-chave que afetam o desempenho
Alternativamente
tP =
nP × CPIP
fc
Podemos ent˜ao usar essas express˜oes para comparar
diferentes arquiteturas
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 14 / 46
33. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
´E preciso ter em mente que a ´unica medida
completa e confi´avel de desempenho ´e o tempo
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 15 / 46
34. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
´E preciso ter em mente que a ´unica medida
completa e confi´avel de desempenho ´e o tempo
Mudar o conjunto de instru¸c˜oes (nP) para reduzir o n´umero
de instru¸c˜oes pode levar a uma organiza¸c˜ao com um ciclo de
clock (tc) mais lento ou alto CPI, anulando assim a melhoria
na contagem de instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 15 / 46
35. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
´E preciso ter em mente que a ´unica medida
completa e confi´avel de desempenho ´e o tempo
Da mesma forma, uma vez que o CPI depende do tipo de
instru¸c˜ao, um c´odigo que execute menos instru¸c˜oes pode
n˜ao ser o mais r´apido
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 16 / 46
36. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
´E preciso ter em mente que a ´unica medida
completa e confi´avel de desempenho ´e o tempo
Da mesma forma, uma vez que o CPI depende do tipo de
instru¸c˜ao, um c´odigo que execute menos instru¸c˜oes pode
n˜ao ser o mais r´apido
Quando comparamos 2 computadores, devemos olhar os 3
componentes da equa¸c˜ao em conjunto
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 16 / 46
37. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
E como medimos os termos da equa¸c˜ao?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 17 / 46
38. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
E como medimos os termos da equa¸c˜ao?
Podemos medir o tempo de execu¸c˜ao diretamente,
rodando o programa
De fato, rodando m´ultiplas vezes e ent˜ao tomando o tempo
m´edio
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 17 / 46
39. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
O per´ıodo do clock, por sua vez, ´e dado pelo
fabricante
Sua frequˆencia, na verdade
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 18 / 46
40. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
O per´ıodo do clock, por sua vez, ´e dado pelo
fabricante
Sua frequˆencia, na verdade
O n´umero de instru¸c˜oes pode ser medido usando-se
ferramentas (profilers) que perfilam a execu¸c˜ao
Que fazem a an´alise dinˆamica do software
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 18 / 46
41. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Dados tP, tc e nP, CPIP ´e obtido
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 19 / 46
42. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
Dados tP, tc e nP, CPIP ´e obtido
Outra alternativa ´e usar, quando dispon´ıveis no
processador, contadores dedicados a medir
estat´ısticas de execu¸c˜ao
N´umero de instru¸c˜oes executadas, CPI m´edio etc
Bastante ´uteis para alguns algoritmos do SO
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 19 / 46
43. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
tP = nP × CPIP × tc
E se n˜ao pudermos rodar o software para obter tP,
pelo hardware estar em projeto?
Nesse caso, os demais elementos precisam ser identificados
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 20 / 46
44. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Mas, se j´a medimos tP, por que nos preocuparmos
com os demais componentes?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 21 / 46
45. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Mas, se j´a medimos tP, por que nos preocuparmos
com os demais componentes?
Considere o seguinte problema
Um determinado programa leva 15s para rodar em um
computador
Um novo compilador ´e lan¸cado, compilando esse programa
com 60% do n´umero de instru¸c˜oes de antes, por´em
aumentando a CPI em 10%
Quanto tempo podemos esperar que essa nova vers˜ao do
programa rode no mesmo computador?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 21 / 46
46. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Temos ent˜ao que:
tP1 = 15
ninstr2 = 0, 6ninstr1
CPI2 = 1, 1CPI1
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 22 / 46
47. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Temos ent˜ao que:
tP1 = 15
ninstr2 = 0, 6ninstr1
CPI2 = 1, 1CPI1
E
tP2 = ninstr2 × CPI2 × tc
= 0, 6ninstr1 × 1, 1CPI1 × tc
= 0, 6 × 1, 1 × ninstr1 × CPI1 × tc
= 0, 66 × tP1 = 9, 9s
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 22 / 46
48. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Assim a equa¸c˜ao se mostra ´util tamb´em para
estimativa de mudan¸cas
Seja em hardware, seja em software, via recompila¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 23 / 46
49. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Assim a equa¸c˜ao se mostra ´util tamb´em para
estimativa de mudan¸cas
Seja em hardware, seja em software, via recompila¸c˜ao
Considere esse outro problema:
Um determinado processador possui o seguinte CPI para
cada classe de suas instru¸c˜oes:
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 23 / 46
50. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Um projetista de compilador est´a tentando decidir qual
sequˆencia de instru¸c˜oes usar para representar um
determinado comando. Suas op¸c˜oes s˜ao:
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 24 / 46
51. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Um projetista de compilador est´a tentando decidir qual
sequˆencia de instru¸c˜oes usar para representar um
determinado comando. Suas op¸c˜oes s˜ao:
Fonte: [1]
Qual sequˆencia executa o maior n´umero de instru¸c˜oes? Qual
ser´a mais r´apida? Qual o CPI de cada sequˆencia?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 24 / 46
52. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual sequˆencia executa o maior n´umero de
instru¸c˜oes?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 25 / 46
53. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual sequˆencia executa o maior n´umero de
instru¸c˜oes?
Fonte: [1]
nS1 = 2 + 1 + 2 = 5
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 25 / 46
54. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual sequˆencia executa o maior n´umero de
instru¸c˜oes?
Fonte: [1]
nS1 = 2 + 1 + 2 = 5 nS2 = 4 + 1 + 1 = 6
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 25 / 46
55. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual sequˆencia executa o maior n´umero de
instru¸c˜oes?
Fonte: [1]
nS1 = 2 + 1 + 2 = 5 nS2 = 4 + 1 + 1 = 6
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 25 / 46
56. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual ´e a mais r´apida?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 26 / 46
57. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual ´e a mais r´apida?
Fonte: [1]
N˜ao sabemos. Precisamos calcular quantos ciclos de clock
cada sequˆencia gasta (lembre que tP = CP × tc)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 26 / 46
58. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Para isso, usamos que CSj =
Ncl
i=1
(CPIi × ni ), onde
CSj ´e o n´umero de ciclos de clock da sequˆencia Sj
CPIi ´e o CPI da classe de instru¸c˜oes i
ni ´e o n´umero de instru¸c˜oes da classe i nessa sequˆencia
Ncl ´e o total de diferentes classes de instru¸c˜oes
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 27 / 46
59. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Ent˜ao...
Fonte: [1]
CS1 = 1 · 2 + 2 · 1 + 3 · 2
= 10
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 28 / 46
60. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Ent˜ao...
Fonte: [1]
CS1 = 1 · 2 + 2 · 1 + 3 · 2
= 10
CS2 = 1 · 4 + 2 · 1 + 3 · 1
= 9
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 28 / 46
61. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual ´e a mais r´apida?
Fonte: [1]
Uma vez que tP = CP × tc, e tc ´e idˆentico por estarem na
mesma m´aquina, S2 (com o menor CS ) ´e a mais r´apida
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 29 / 46
62. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual ´e a mais r´apida?
Fonte: [1]
Note que, embora seja a mais r´apida, S2 n˜ao ´e a menor
sequˆencia, possuindo mais instru¸c˜oes que S1
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 30 / 46
63. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual o CPI de cada sequˆencia?
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 31 / 46
64. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
Qual o CPI de cada sequˆencia?
Fonte: [1]
Uma vez que S2 usa menos ciclos de clock e executa 1
instru¸c˜ao a mais, seu CPI deve ser menor que o de S1
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 31 / 46
65. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
E como calculamos o CPI de cada sequˆencia?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 32 / 46
66. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
E como calculamos o CPI de cada sequˆencia?
De posse do total de ciclos CSj de uma sequˆencia Sj, bem
como de seu n´umero de instru¸c˜oes nSj , seu CPI pode ser
calculado como CPISj =
CSj
nSj
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 32 / 46
67. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
E como calculamos o CPI de cada sequˆencia?
De posse do total de ciclos CSj de uma sequˆencia Sj, bem
como de seu n´umero de instru¸c˜oes nSj , seu CPI pode ser
calculado como CPISj =
CSj
nSj
E
CPIS1 =
10
5
= 2
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 32 / 46
68. Desempenho da CPU
Equa¸c˜ao Cl´assica de Desempenho da CPU
E como calculamos o CPI de cada sequˆencia?
De posse do total de ciclos CSj de uma sequˆencia Sj, bem
como de seu n´umero de instru¸c˜oes nSj , seu CPI pode ser
calculado como CPISj =
CSj
nSj
E
CPIS1 =
10
5
= 2 CPIS2 =
9
6
= 1, 5
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 32 / 46
69. Desempenho da CPU
Comparando Arquiteturas
Vimos como comparar o desempenho de sequˆencias
de c´odigo ou programas inteiros
Em diferentes m´aquinas (medindo seu tP)
Na mesma m´aquina (via varia¸c˜oes no nP, CPIP ou tc)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 33 / 46
70. Desempenho da CPU
Comparando Arquiteturas
Vimos como comparar o desempenho de sequˆencias
de c´odigo ou programas inteiros
Em diferentes m´aquinas (medindo seu tP)
Na mesma m´aquina (via varia¸c˜oes no nP, CPIP ou tc)
Mas isso realmente compara a arquitetura de forma
ampla?
Ou cont´em um vi´es em dire¸c˜ao ao programa (ou segmento)
usado no teste?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 33 / 46
71. Desempenho da CPU
Comparando Arquiteturas
Para compararmos 2 arquiteturas precisamos de um
conjunto de programas que represente o
comportamento de um usu´ario
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 34 / 46
72. Desempenho da CPU
Comparando Arquiteturas
Para compararmos 2 arquiteturas precisamos de um
conjunto de programas que represente o
comportamento de um usu´ario
Precisamos de um conjunto de trabalho
Um conjunto de programas que, ou correspondem ao
conjunto rodado pelo usu´ario, ou s˜ao constru´ıdos de modo a
aproximar esse conjunto
Um conjunto de trabalho t´ıpico especifica tanto os
programas quanto suas frequˆencias relativas
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 34 / 46
73. Desempenho da CPU
Comparando Arquiteturas
Assim, basta medir o tempo de execu¸c˜ao do
conjunto de trabalho em outra m´aquina para decidir
qual ´e a melhor
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 35 / 46
74. Desempenho da CPU
Comparando Arquiteturas
Assim, basta medir o tempo de execu¸c˜ao do
conjunto de trabalho em outra m´aquina para decidir
qual ´e a melhor
Isso, naturalmente, pressup˜oe o acesso a essa
m´aquina
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 35 / 46
75. Desempenho da CPU
Comparando Arquiteturas
Assim, basta medir o tempo de execu¸c˜ao do
conjunto de trabalho em outra m´aquina para decidir
qual ´e a melhor
Isso, naturalmente, pressup˜oe o acesso a essa
m´aquina
O que fazer quando n˜ao h´a realmente como testar o
conjunto de trabalho em outra m´aquina?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 35 / 46
76. Desempenho da CPU
Comparando Arquiteturas
Assim, basta medir o tempo de execu¸c˜ao do
conjunto de trabalho em outra m´aquina para decidir
qual ´e a melhor
Isso, naturalmente, pressup˜oe o acesso a essa
m´aquina
O que fazer quando n˜ao h´a realmente como testar o
conjunto de trabalho em outra m´aquina?
Como tomar uma decis˜ao baseada em desempenho?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 35 / 46
77. Desempenho da CPU
Comparando Arquiteturas
Deve-se usar algum conjunto padr˜ao, na esperan¸ca
que reflita o desempenho do conjunto de trabalho
do usu´ario
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 36 / 46
78. Desempenho da CPU
Comparando Arquiteturas
Deve-se usar algum conjunto padr˜ao, na esperan¸ca
que reflita o desempenho do conjunto de trabalho
do usu´ario
Precisamos ent˜ao de benchmarks
Programas escolhidos especificamente para medir o
desempenho
Formam um conjunto de trabalho que espera-se possam
prever o desempenho do conjunto de trabalho do usu´ario
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 36 / 46
79. Desempenho da CPU
Comparando Arquiteturas
Benchmarks tˆem um papel cr´ıtico na defini¸c˜ao de
estruturas de computadores
A ponto de merecerem um esfor¸co, por parte de v´arios
fabricantes, para criar padr˜oes de benchmarks – SPEC
(System Performance Evaluation Cooperative)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 37 / 46
80. Desempenho da CPU
Comparando Arquiteturas
Benchmarks tˆem um papel cr´ıtico na defini¸c˜ao de
estruturas de computadores
A ponto de merecerem um esfor¸co, por parte de v´arios
fabricantes, para criar padr˜oes de benchmarks – SPEC
(System Performance Evaluation Cooperative)
Em geral, os fabricantes informam o desempenho de
suas m´aquinas de acordo com algum desses
benchmarks padr˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 37 / 46
81. Desempenho da CPU
Outras Medidas
Uma alternativa ao tempo de execu¸c˜ao ´e MIPS
Milh˜oes de Instru¸c˜oes Por Segundo
MIPS =
nP
tP × 106
Quanto maior, mais r´apido o processador
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 38 / 46
82. Desempenho da CPU
Outras Medidas
Uma alternativa ao tempo de execu¸c˜ao ´e MIPS
Milh˜oes de Instru¸c˜oes Por Segundo
MIPS =
nP
tP × 106
Quanto maior, mais r´apido o processador
Problemas:
N˜ao temos como comparar computadores com conjuntos
distintos de instru¸c˜oes, pois nP certamente ser´a diferente
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 38 / 46
83. Desempenho da CPU
Outras Medidas
Problemas:
MIPS varia entre programas no mesmo computador
MIPS =
nP
tP × 106
=
nP
nP × CPIP × tc × 106
=
1
CPIP × tc × 106
=
fc
CPIP × 106
Ao usarem instru¸c˜oes distintas, o CPI pode variar entre 2 programas
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 39 / 46
84. Desempenho da CPU
Outras Medidas
Problemas:
MIPS varia entre programas no mesmo computador
MIPS =
nP
tP × 106
=
nP
nP × CPIP × tc × 106
=
1
CPIP × tc × 106
=
fc
CPIP × 106
Ao usarem instru¸c˜oes distintas, o CPI pode variar entre 2 programas
Se um novo programa executa mais instru¸c˜oes, sendo que
cada instru¸c˜ao ´e mais r´apida, MIPS pode variar
independentemente do desempenho
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 39 / 46
85. Desempenho da CPU – Armadilhas
Lei de Amdahl
Uma armadilha comum ´e esperar que a melhoria de
um aspecto do computador melhore o desempenho
geral pelo mesmo tanto
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 40 / 46
86. Desempenho da CPU – Armadilhas
Lei de Amdahl
Uma armadilha comum ´e esperar que a melhoria de
um aspecto do computador melhore o desempenho
geral pelo mesmo tanto
Considere o seguinte exemplo
Um programa roda em 100s (tP = 100), com opera¸c˜oes de
multiplica¸c˜ao sendo respons´aveis por 80s deste tempo
Quanto teremos que aumentar a velocidade de cada
multiplica¸c˜ao para que o programa rode 5× mais r´apido?
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 40 / 46
87. Desempenho da CPU – Armadilhas
Lei de Amdahl
O tempo de execu¸c˜ao do programa ap´os a melhoria
´e dado pela Lei de Amdahl:
tP =
tA
r
+ tNA, onde
tP ´e o tempo de execu¸c˜ao do programa P ap´os a melhoria
tA ´e o tempo de execu¸c˜ao afetado pela melhoria
r ´e a taxa de melhoria feita
tNA ´e o tempo de execu¸c˜ao n˜ao afetado pela melhoria
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 41 / 46
88. Desempenho da CPU – Armadilhas
Lei de Amdahl
O tempo de execu¸c˜ao do programa ap´os a melhoria
´e dado pela Lei de Amdahl:
tP =
tA
r
+ tNA, onde
tP ´e o tempo de execu¸c˜ao do programa P ap´os a melhoria
tA ´e o tempo de execu¸c˜ao afetado pela melhoria
r ´e a taxa de melhoria feita
tNA ´e o tempo de execu¸c˜ao n˜ao afetado pela melhoria
Ou seja, a melhoria no desempenho com uma melhoria est´a
limitada ao tanto que o fator melhorado ´e usado
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 41 / 46
89. Desempenho da CPU – Armadilhas
Lei de Amdahl
Outra forma de ver ´e:
Qualquer redu¸c˜ao de tempo ´e limitada pela contribui¸c˜ao da
parte afetada para o tempo total
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 42 / 46
90. Desempenho da CPU – Armadilhas
Lei de Amdahl
Outra forma de ver ´e:
Qualquer redu¸c˜ao de tempo ´e limitada pela contribui¸c˜ao da
parte afetada para o tempo total
O tempo total ´e
tP =
N
i=1
ti
onde ti ´e a contribui¸c˜ao para tP da i-´esima parte do
programa
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 42 / 46
91. Desempenho da CPU – Armadilhas
Lei de Amdahl
Ent˜ao, se modificamos o tempo da parte j para
k × j, sua contribui¸c˜ao a tP ser´a
tP = k × tj +
N
i=1,i=j
ti
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 43 / 46
92. Desempenho da CPU – Armadilhas
Lei de Amdahl
Ent˜ao, se modificamos o tempo da parte j para
k × j, sua contribui¸c˜ao a tP ser´a
tP = k × tj +
N
i=1,i=j
ti
Ou seja, o tempo de execu¸c˜ao da parte afetada + o tempo
da parte n˜ao afetada pela modifica¸c˜ao
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 43 / 46
93. Desempenho da CPU – Armadilhas
Lei de Amdahl
Voltando ao nosso problema
tP =
tA
r
+ tNA =
80
r
+ (100 − 80)
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 44 / 46
94. Desempenho da CPU – Armadilhas
Lei de Amdahl
Voltando ao nosso problema
tP =
tA
r
+ tNA =
80
r
+ (100 − 80)
Como queremos que fique 5× mais r´apido, ent˜ao
tP = tP/5 = 20, e
20 =
80
r
+ 20 ⇒ 0 =
80
r
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 44 / 46
95. Desempenho da CPU – Armadilhas
Lei de Amdahl
Voltando ao nosso problema
tP =
tA
r
+ tNA =
80
r
+ (100 − 80)
Como queremos que fique 5× mais r´apido, ent˜ao
tP = tP/5 = 20, e
20 =
80
r
+ 20 ⇒ 0 =
80
r
E n˜ao h´a como obter tal melhoria
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 44 / 46
96. Desempenho da CPU: Influˆencias
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 45 / 46
97. Referˆencias
1 Patterson, D.A.; Hennessy, J.L. (2013): Computer
Organization and Design: The Hardware/Software Interface.
Morgan Kaufmann. 5a
ed.
Norton Trevisan Roman (norton@usp.br) 30 de agosto de 2019 46 / 46