Buscar

Desempenho - P1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 90 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 90 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 90 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Perspectivas
2https://www.glassdoor.com/Jobs/Intel-Corporation-fpga-Jobs-EI_IE1519.0,17_KO18,22.htm
3
“Quão rápido um sistema 
computacional pode executar um 
programa single-threaded para 
realizar um trabalho útil”
Samuel H. Fuller e Lynette Millet em The Future 
of Computing Performance: Game Over or 
Next Level?
4
"Por que se importar com o 
desempenho na computação?"
"O que é workload?"
"O quanto tem melhorado o 
desempenho dos computadores?"
Importância de melhorar o 
desempenho na computação
5
1. Capacidade computacional
• Possibilitar computações que previamente eram 
impraticáveis ou que valessem a pena
2. Desempenho escala mais rapidamente 
que o custo
• Melhor custo-desempenho possibilita que a 
computação seja usada onde previamente era 
economicamente inviável
Exemplo: 
Não é vantajoso computar a previsão do 
tempo de amanhã se isso leva 24 horas, 
entretanto, se torna razoável se o tempo 
necessário for de 12 horas. 
Forma desejável de medir 
desempenho
6
1. Avaliar desempenho se baseando em um workload
significativo;
2. Fabricantes de computadores: deveriam analisar seus 
projetos tendo como base workloads atuais e 
estimativas de workloads futuros dos consumidores;
3. Consumidores: se basear em seus workloads para 
considerar melhor opção dentre computadores 
disponíveis.
⇒ Isso leva tempo e é caro, levando muitas 
pessoas a optarem por pacotes de benchmarks 
padronizados.
Desempenho
7
Métrica: algo que pode ser medido
Objetivo: avaliar o quão bom/ruim é uma arquitetura
Exemplos:
– Tempo de execução de um programa;
– Número de programas executados por segundo;
– Ciclos por instruções do programa;
– Energia consumida por um programa.
Como podemos comparar? Medir?
Desempenho (2)
8
• Medir, Relatar e Resumir
• Fazer escolhas inteligentes
• Ver além do sensacionalismo do mercado
• Ponto fundamental para compreender as reais 
necessidades de um sistema
Por que alguns hardwares são melhores que outros para diferentes 
programas?
Quais fatores do desempenho do sistema são relacionados ao hardware?
(exemplo: Eu preciso de um novo equipamento ou de um novo sistema operacional?
Qual é o papel do conjunto de instruções (ISA) no desempenho?
Desempenho (3)
Por Hennessy & Patterson
9
• Perspectiva de compra
– Dada um conjunto de computadores, qual deles tem:
• Melhor desempenho?
• Menor custo?
• Melhor custo-benefício?
• Perspectiva de projeto
– Defrontado com opções de projeto, em qual delas:
• Se extraí o melhor desempenho?
• Menor custo?
• Melhor custo-benefício?
• Ambas requerem
– Base para comparação
– Métricas de avaliação
• Objetivo é entender implicações de custo x desempenho 
de escolhas arquiteturais
Desempenho de uma CPU
10
• Complexo de se avaliar
• Maior complexidade e escala dos 
softwares modernos
• Ampla disponibilidade de técnicas para 
melhoria de desempenho
• Recursos da CPU: múltiplos núcleos, O3, Branch
prediction, inúmeras unidades funcionais, etc.
Desempenho de uma CPU (2)
11
• É impossível tendo em posse apenas o 
manual do conjunto de instruções 
determinar a velocidade de execução de um 
sistema
Exemplo 1: 
Supondo que um programa tenha 1900 
instruções de LOAD e cada uma delas demora 3 
ciclos de clock para serem executadas, o tempo 
para execução dessas instruções seria de:
1900 x 3 ciclos de clock? 
Exemplo 2
12
Fatorial em Sistema 
Embarcado
Exemplo 2
13
• Processador LEON3
– SPARC V8 
– 50 MHz
– 128 MB RAM
– 16 KB cache D/I
• Standalone (s/ SO)
– Setup n = 3
– Estimativa: 78 ciclos de clock
– Real: ~175 ciclos de clock.
• Stalls de memória
Desempenho de uma CPU (3)
14
• Desempenho é um dos fatores mais 
importantes para os projetistas de 
arquiteturas
O que fundamentalmente determina o 
desempenho de um computador?
Trade-off: latência versus vazão
15
Qual dos aviões tem maior desempenho?
• Tempo para realizar a tarefa - latência
– Quanto tempo cada avião leva para completar a tarefa de 
"transportar"?
• Tarefas por dia, hora, semana, segundo - vazão
– Quantas pessoas podem ser transportadas por hora?
Do sentido genérico “o fato de só se poder ter 
uma de duas coisas (the trade-off between
efficiency and quality, por exemplo), ou “o ponto, 
o grau até onde se pode alcançar ambas”
Explorando exemplo
16
• Tempo do Concorde vs. Boeing 754?
– Concorde é 2170 km/h / 980 km/h = 2,2 vezes mais rápido
= 6,5 horas / 3 horas
• Vazão do Concorde vs. Boeing 747?
– Concorde é 44 / 72,3 = 0,61 "vezes mais rápido"
– Boeing é 77,3 / 44 = 1.60 "vezes mais rápido"
• Boeing é 1,6 vezes (60%) mais rápido em termos de 
vazão
• Concorde é 2,2 vezes (120%) mais rápido em termos de 
tempo de voo (latência)
Foco primário no tempo de execução de um 
único trabalho
Inúmeras instruções em um programa => Vazão 
de instruções é importante!
Latência x Vazão
17
• Tempo de resposta (latência)
– Tempo entre o início e o fim de uma tarefa
– Diminuir o tempo de resposta quase sempre melhora a vazão
• Vazão (throughput)
– Quantas tarefas simultâneas um sistema pode executar?
– Qual é a taxa média de execução de tarefas?
– Quanto trabalho está sendo feito?
• Latência vs vazão
– O que melhora se?
• Se atualizarmos um computador com um novo processador?
• Se um novo computador for acrescentado a um laboratório?
Comparativo
18
• Dizer que um Computador A é n vezes mais rápido 
que B significa que:
𝑛 =
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐵
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴
Métrica
19
• Desempenho: definido como o inverso do tempo de 
execução
𝑑𝑒𝑠𝑒𝑚𝑝𝑒𝑛ℎ𝑜𝐴 =
1
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴
• Dizer que um Computador A é n vezes mais rápido que B
também significa que (desempenho relativo):
𝑛 =
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐵
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴
=
1
𝑑𝑒𝑠𝑒𝑚𝑝𝑒𝑛ℎ𝑜𝐵
1
𝑑𝑒𝑠𝑒𝑚𝑝𝑒𝑛ℎ𝑜𝐴
=
𝑑𝑒𝑠𝑒𝑚𝑝𝑒𝑛ℎ𝑜𝐴
𝑑𝑒𝑠𝑒𝑚𝑝𝑒𝑛ℎ𝑜𝐵
= 1 +
𝑛
100
Aperfeiçoamento (improvement)
20
• Melhora do desempenho significa 
incremento:
→ Mais é melhor
• Tempo de execução (ou tempo de 
resposta) significa decremento:
→ Menos é melhor
Exemplo
21
• Se um computador A executa o programa X em 10 segundos e 
um computador B executa o mesmo programa em 15 segundos:
→ A é 50% mais rápido que B ou A é 33% mais rápido que B?
Solução:
• A afirmação que diz que A é n% mais rápida que B pode ser expressa como:
⇒
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐵
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴
= 1 +
𝑛
100
⇒ 𝑛 =
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐵 − 𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴 ∗ 100
𝑡𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑥𝑒𝑐𝑢çã𝑜𝐴
=
15 − 10 ∗ 100
10
= 𝟓𝟎
→ Computador A é 50% mais rápido que B
Tempo de execução
22
• Tempo decorrido (real)
– Contagem total do tempo (acesso a disco e memória, E/S e etc.)
– Normalmente não é ideal para fins de comparação
• Interrupções do processo pelo escalonador e tempos imprevisíveis de 
acesso a E/S
• Tempo de CPU (user + system)
– Não computa E/S e tempo de execução de outros programas 
(tempo do sistema + usuário)
– Foco deste curso: tempo consumido em linhas de código do 
“nosso programa”
• Exemplo: comando time do Linux
Ciclos de clock
23
• Ao invés de relatar o tempo de execução em 
segundos, geralmente é utilizado ciclos:
• "ticks" de clock indicam quando uma atividade inicia
• Ciclo de clock: tempo entre ticks = segundos por 
ciclo
cycle
seconds
program
cycles
program
seconds

time
• TCLK = Período ou ciclo de clock
– Tempo entre dois pulsos de clock
– Segundos por ciclo
• fCLK = Frequência de clock
– Ciclos de clock por segundo = 1/T
• 1 Hz = 1 / segundo
• Exemplos:
– A frequência de clock de 500 MHz corresponde ao tempo de 
ciclo de clock: 1 / (500 * 106) = 2 * 10-9 = 2 nseg
– A frequência de clock de 1 GHz corresponde ao tempo de ciclo 
de clock: 1 / (109) = 1*10-9 = 1 nseg
Ciclos de clock (2)
24
tick tick
Quantos ciclos de clock são necessários 
para executar um programa?
25
• Poderíamos assumir que o número de ciclos é 
igual ao número de instruções?Essa afirmação é incorreta:
Diferentes instruções levam diferentes quantidades de tempo em 
diferentes arquiteturas
1
s
t 
in
s
tr
u
c
ti
o
n
2
n
d
 i
n
s
tr
u
c
ti
o
n
3
rd
 i
n
s
tr
u
c
ti
o
n
4
th
5
th
6
th ..
.
Números de ciclos variam para 
diferentes instruções
26
• Multiplicação leva mais tempo que adição;
• Operações de ponto flutuante levam mais tempo 
que as de inteiro;
• Acessar a memória leva mais tempo que acessar 
registradores.
clock cycle
opA opB opA opC
Perspectiva do programa
27
• Sua execução envolve:
– Um determinado número de instruções;
– Um determinado número de ciclos;
– Um determinado número de segundos.
• Vocabulário relacionado:
– CPI (Ciclos por Instrução)
• Específico para cada instrução de uma dada arquitetura;
• Pode ser utilizada como medida de desempenho;
• Aplicações com elevada computação de ponto flutuante 
geralmente tem maior CPI.
– MIPS (Milhões de instruções por segundo)
• Pode ser utilizada como medida para vazão de dados.
Tempo de execução ou Tempo de CPU
28
𝐶𝑃𝑈𝑡𝑖𝑚𝑒 = 𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒𝑠 × 𝑇𝐶𝐿𝐾 =
𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒𝑠
𝑓
𝐶𝐿𝐾
– Otimizar o desempenho significa reduzir o tempo 
de execução (ou CPUtime):
• Reduzir o número de ciclos de clock por 
programa;
• Reduzir o período de clock;
• Aumentar a frequência de clock. Factível hoje?
Tempo de execução (2)
29
𝐶𝑃𝑈𝑡𝑖𝑚𝑒 =
𝑆𝑒𝑐𝑜𝑛𝑑𝑠
𝑃𝑟𝑜𝑔𝑟𝑎𝑚
=
𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠
𝑃𝑟𝑜𝑔𝑟𝑎𝑚
×
𝐶𝑦𝑐𝑙𝑒𝑠
𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛
×
𝑆𝑒𝑐𝑜𝑛𝑑𝑠
𝐶𝑦𝑐𝑙𝑒
𝐶𝑃𝑈𝑡𝑖𝑚𝑒 =
𝑆𝑒𝑐𝑜𝑛𝑑𝑠
𝑃𝑟𝑜𝑔𝑟𝑎𝑚
= 𝐼𝐶 × 𝐶𝑃𝐼 × 𝑇𝐶𝐿𝐾 =
𝐼𝐶 × 𝐶𝑃𝐼
𝑓
𝐶𝐿𝐾
– Ciclos por Instrução
• CPI = Clock Cycles / Instruction Count
– Instruções por Ciclos
• IPC = 1 / CPI
Tempo de execução (3)
30
𝐶𝑃𝑈𝑡𝑖𝑚𝑒 = 𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒𝑠 × 𝑇𝐶𝐿𝐾 =
𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒𝑠
𝑓
𝐶𝐿𝐾
– Onde: Clock cycles = ෌
𝒊=𝟏
𝒏
(𝑪𝑷𝑰𝒊 𝒙 𝑰𝒊)
⇒ CPU time = σ𝒊=𝟏
𝒏 𝑪𝑷𝑰𝒊 × 𝑰𝒊 × 𝑻𝑪𝑳𝑲
CPI = ෌
𝒊=𝟏
𝒏
(𝑪𝑷𝑰𝒊 × 𝑭𝒊) Onde Fi = 
𝐼𝑖
𝐼𝐶
, “frequência da instrução”
⇒ CPU time = IC x CPI x TCLK = IC x σ 𝑪𝑷𝑰𝒊 × 𝑭𝒊 × 𝑻𝑪𝑳𝑲
Exemplo
31
• Calcule os CPI e o tempo da CPU para executar um programa 
composto por 100 instruções nas proporções descritas pela 
tabela. A CPU tem clock de 500 MHz.
• Solução:
• CPI = 0.43 * 1 + 0.21 * 4 + 0.12 * 4 + 0.12 * 2 + 0.12 * 2 = 2.23
• CPU time = IC * CPI + Tclock = 100 * 2.23 * 2 ns = 446 ns
CPI = ෌
𝒊=𝟏
𝒏
(𝑪𝑷𝑰𝒊 × 𝑭𝒊)
CPU time = IC x CPI x TCLK
MIPS – Millions of instructions per second
32
• Milhões de instruções por segundo
𝑀𝐼𝑃𝑆 =
𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛 𝐶𝑜𝑢𝑛𝑡
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒 × 106
• Onde:
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒 =
𝐼𝐶 × 𝐶𝑃𝐼
𝑓
𝐶𝐿𝐾
𝑀𝐼𝑃𝑆 =
𝑓
𝐶𝐿𝐾
𝐶𝑃𝐼 × 106
Lei de Amdahl
33
F F'
S
Como calcular o aumento de desempenho ou 
speedup?
Speedup devido a um aperfeiçoamento E:
t t'
t' = 1 – F + F’ ⇒ t' = 1 – F + F/S 
𝑆𝑝𝑒𝑒𝑑𝑢𝑝(𝐸) =
𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒𝑤𝑖𝑡ℎ𝑜𝑢𝑡 𝐸
𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒𝑤𝑖𝑡ℎ 𝐸
=
𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒𝑡𝑖𝑚𝑒𝑤𝑖𝑡ℎ 𝐸
𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒𝑡𝑖𝑚𝑒 𝑤𝑖𝑡ℎ𝑜𝑢𝑡 𝐸
Lei de Amdahl (2)
34
• Suponha que E acelera uma fração F da tarefa por 
um fator S e o restante da tarefa não é afetado. 
Assim:
𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒(𝐸) = ( 1 − 𝐹 +
𝐹
𝑆
) × 𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒 𝑤𝑖𝑡ℎ𝑜𝑢𝑡 𝐸
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 𝑤𝑖𝑡ℎ 𝐸 =
1
1 − 𝐹 +
𝐹
𝑆
Exectime(E) / Exectime (wo E) = 1 / Speedup(E)
Lei de Amdahl (3)
35
• Ideia básica: torne o caso comum mais rápido
• Lei de Amdahl: O ganho de desempenho que pode ser 
obtido melhorando uma determinada parte do sistema é 
limitado pela fração de tempo que essa parte é 
utilizada durante a sua operação.
– FraçãoE = a fração do tempo de computação na máquina 
original que pode ser convertida para tirar vantagem de 
alguma melhoria
– SpeedupE = a melhoria obtida pela execução "acelerada"
• O speedup total é dado por:
𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝑡𝑜𝑡𝑎𝑙 =
𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒(𝑤𝑜 𝐸)
𝐸𝑥𝑒𝑐𝑡𝑖𝑚𝑒(𝐸)
=
1
1 − 𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸 +
𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸
𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝐸
Lei de Amdahl (3)
36
Speedup limitado pela parte serial do programa. Se 95% for 
paralelizável, teoricamente o máximo de speedup possível é de 20x.
Exemplo
37
Considere o aperfeiçoamento de uma CPU resultando 
em computação dez vezes mais rápida em relação a 
CPU original. Esta CPU é ocupada com computação 
apenas 40% de todo tempo. Qual é o speedup total 
obtido pela introdução da melhoria?
• Solução:
– Caso comum: 40% da computação
– FraçãoE = 0.4
– SpeedupE = 10
– 𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝑡𝑜𝑡𝑎𝑙 =
1
1 −𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝐸 +
𝐹𝑟𝑎𝑐𝑡𝑖𝑜𝑛
𝐸
𝑆𝑝𝑒𝑒𝑑𝑢𝑝
𝐸
=
1
1 −0.4 +
0.4
10
= 𝟏.𝟓𝟔
Base para avaliação
38
Workload da aplicação alvo
Conjuntos completos de 
benchmarks
Benchmarks com kernels 
pequenos
Microbenchmarks
PRÓS
CONTRAS
• representativos
• Muito específico
• Não portável
• Difícil de executar 
ou medir
• Portáveis
• Amplamente 
usados
• Maior variação de 
workloads
• Menos 
representativos
• Fácil de "enganar"
• Fácil de ser 
executado. Até 
mesmo no ciclo de 
desenvolvimento
• Identifica máximo 
desempenho (pico) 
e possíveis 
gargalos
• "Pico" pode estar 
muito longe do 
desempenho da 
aplicação
Métricas de desempenho
39
Controle do 
datapath
Unidades 
Funcionais
Transístores, Fios e 
Pinos
Aplicação
Linguagem de 
Programação
Compilador
ISA
• (milhões) de instruções por segundo – MIPS
• (milhões) de (FP) operações por segundo – MFLOP/s
• Respostas por mês
• Operações úteis por segundo
• Megabyte por segundo
• Ciclos por segundo (freq. de clock)
Cada métrica tem um lugar e um propósito, e cada uma 
pode ser mal utilizada.
Aspectos do desempenho da CPU
40
𝐶𝑃𝑈𝑡𝑖𝑚𝑒 =
𝑆𝑒𝑐𝑜𝑛𝑑𝑠
𝑃𝑟𝑜𝑔𝑟𝑎𝑚
=
𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠
𝑃𝑟𝑜𝑔𝑟𝑎𝑚
×
𝐶𝑦𝑐𝑙𝑒𝑠
𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛
×
𝑆𝑒𝑐𝑜𝑛𝑑𝑠
𝐶𝑦𝑐𝑙𝑒
CPUtime = IC x CPI x TCLK
IC (# Instruções) CPI Clock Period
Programa X
Compilador X ( X )
Conj. de 
Instruções
X X X
Organização X X
Tecnologia X
# Instr
CPI
Clock 
period
Questões de desempenho com 
pipelining
41
• O pipelining aumenta a vazão de 
instruções (número de instruções 
concluídas por unidade de tempo), 
mas não reduz o tempo de execução 
(latência) de uma única instrução.
Questões de desempenho com 
pipelining
42
• Pipelining geralmente aumenta ligeiramente a 
latência de cada instrução devido ao desequilíbrio 
entre os estágios do pipeline e overhead no seu 
controle.
– O desequilíbrio entre os estágios de pipeline reduz o 
desempenho, pois a frequência de clock não pode ser 
maior do que o tempo necessário para o estágio mais 
lento.
– O overhead do pipeline surge pelo atraso no uso dos 
registradores do pipeline e do clock skew (atraso no sinal 
do clock nos latches). Assim: ciclo de clock > atraso dos 
registradores + clock skew
Métricas com pipeline
43
• IC = Instruction Count
• # Clock Cycles = IC + # Stall Cycles+ LL
LL = Latência dos Latches de Pipeline = ns - 1 
ns = Número de estágios do pipeline
• CPI = Clock por Instrução = # Clock Cycles / IC 
CPI = (IC + #Stall Cycles + LL ) / IC
• MIPS = fclock / (CPI * 10
6)
Exemplo
44
• IC = Instruction Count = 5
• # Clock Cycles = IC + # Stall Cycles+ LL
# Clock Cycles = 5 + 3 + 4 = 12
• CPI = (IC + #Stall Cycles + LL ) / IC
= 12 / 5 = 2.5
• MIPS = fclock / (CPI * 10
6) = 500 Mhz/2.4*106 = 208.3
Métricas com pipeline (2)
45
• Vamos considerar n iterações de um loop composto 
por m instruções e k stalls por iteração.
• ICper_iter = m
• #Clock Cycles = ICper_iter + #Stall Cyclesper_iter + LL
• CPIper_iter = (ICper_iter + #Stall Cyclesper_iter + LL ) / ICper_iter
= ( m + k + LL ) / m
• MIPS = fclock / (CPIper_iter * 10
6)
Métricas com pipeline (assintótica)
46
• Vamos considerar n iterações de um loop composto 
por m instruções e k stalls por iteração.
• ICAS = m * n
• #Clock Cycles = ICAS + #Stall CyclesAS + LL
• CPIper_iter = lim n→∞(ICAS+ #Stall CyclesAS + LL ) / ICAS
= lim n→∞ ( m*n + k*n + LL ) / m*n
=(m+k)/m
• MIPS= fclock / (CPIAS* 10
6)
Questões de desempenho com 
pipelining (2)
47
• O CPI ideal em um processador pipelined seria 1, mas 
os stalls causam degradação no desempenho. Assim, 
temos:
CPIpipe_medio = Ideal CPI + Pipe Stall Cycles per Instruction
= 1 + Pipe Stall Cycles per Instruction
• Ciclos de Stalls no pipeline são devidos a:
1. Hazards estruturais;
2. Hazards de dados;
3. Hazard de controle;
4. Stalls de memória.
Questões de desempenho com 
pipelining (3)
48
• Pipeline Speedup
𝑃𝑖𝑝𝑒𝑙𝑖𝑛𝑒𝑠𝑝𝑒𝑒𝑑𝑢𝑝 =
𝐴𝑣𝑒. 𝐸𝑥𝑒𝑐. 𝑇𝑖𝑚𝑒 𝑈𝑛𝑝𝑖𝑝𝑒𝑙𝑖𝑛𝑒𝑑
𝐴𝑣𝑒.𝐸𝑥𝑒𝑐.𝑇𝑖𝑚𝑒 𝑃𝑖𝑝𝑒𝑙𝑖𝑛𝑒𝑑
=
=
𝐴𝑣𝑒. 𝐶𝑃𝐼 𝑈𝑛𝑝.
𝐴𝑣𝑒. 𝐶𝑃𝐼 𝑃𝑖𝑝𝑒
×
𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒 𝑈𝑛𝑝.
𝐶𝑙𝑜𝑐𝑘 𝐶𝑦𝑐𝑙𝑒 𝑃𝑖𝑝𝑒
Questões de desempenho com 
pipelining (4)
49
• Se ignorarmos o overhead nos ciclos de pipelining e assumirmos 
que os estágios estão perfeitamente balanceados, o tempo de ciclo 
de clock de dois processadores podem ser iguais, então:
𝑷𝒊𝒑𝒆𝒍𝒊𝒏𝒆𝒔𝒑𝒆𝒆𝒅𝒖𝒑 =
𝐴𝑣𝑒. 𝐶𝑃𝐼 𝑈𝑛𝑝.
1+𝑃𝑖𝑝𝑒 𝑆𝑡𝑎𝑙𝑙 𝐶𝑦𝑐𝑙𝑒𝑠 𝑝𝑒𝑟 𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛
• Caso simples: Todas as instruções consomem o mesmo número de 
ciclos de clock, que devem ser iguais ao número de estágios de 
pipeline (profundidade do pipeline):
𝑷𝒊𝒑𝒆𝒍𝒊𝒏𝒆𝒔𝒑𝒆𝒆𝒅𝒖𝒑 =
𝑃𝑖𝑝𝑒𝑙𝑖𝑛𝑒 𝐷𝑒𝑝𝑡ℎ
1+𝑃𝑖𝑝𝑒 𝑆𝑡𝑎𝑙𝑙 𝐶𝑦𝑐𝑙𝑒𝑠 𝑝𝑒𝑟 𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛
• Se não houver stalls no pipeline (caso ideal), isto leva ao resultado 
intuitivo de que o pipelining pode melhorar o desempenho pela 
profundidade do pipeline.
Questões de desempenho com 
pipelining (5)
50
• Qual é o impacto no desempenho dos desvios 
condicionais?
𝑷𝒊𝒑𝒆𝒍𝒊𝒏𝒆𝒔𝒑𝒆𝒆𝒅𝒖𝒑 =
𝑃𝑖𝑝𝑒𝑙𝑖𝑛𝑒 𝐷𝑒𝑝𝑡ℎ
1 + 𝑃𝑖𝑝𝑒 𝑆𝑡𝑎𝑙𝑙 𝐶𝑦𝑐𝑙𝑒𝑠 𝑝𝑒𝑟 𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛 𝑑𝑢𝑒 𝑡𝑜 𝐵𝑟𝑎𝑛𝑐ℎ𝑒𝑠
𝑷𝒊𝒑𝒆𝒍𝒊𝒏𝒆𝒔𝒑𝒆𝒆𝒅𝒖𝒑 =
𝑃𝑖𝑝𝑒𝑙𝑖𝑛𝑒 𝐷𝑒𝑝𝑡ℎ
1 + 𝐵𝑟𝑎𝑛𝑐ℎ 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 × 𝐵𝑟𝑎𝑛𝑐ℎ 𝑃𝑒𝑛𝑎𝑙𝑡𝑦
Hierarquia de memória: definições
51
• Hit: dado encontrado em bloco do nível superior
• Hit Rate: taxa de sucesso em relação ao número total 
de acessos à memória.
𝑯𝒊𝒕 𝑹𝒂𝒕𝒆 =
#ℎ𝑖𝑡𝑠
#𝑚𝑒𝑚𝑜𝑟𝑦 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠
• Hit time: tempo para acessar o dado no nível superior 
da hierarquia, incluindo o tempo necessário para 
decidir se a tentativa de acesso irá resultar em um 
sucesso (hit) ou falta (miss).
Hierarquia de memória: definições (2)
52
• Miss: os dados precisam ser tomados de um nível mais 
baixo
Miss Rate: taxa de falta em relação ao número total de 
acessos à memória.
𝑴𝒊𝒔𝒔 𝑹𝒂𝒕𝒆 =
#𝑚𝑖𝑠𝑠𝑒𝑠
#𝑚𝑒𝑚𝑜𝑟𝑦 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠
• Hit Rate + Miss Rate = 1
• Miss Penalty: tempo necessário para acessar um nível mais 
baixo e substituir o bloco no nível superior.
• Miss Time:
Miss Time = Hit Time + Miss Penalty
• Hit Time << Miss Penalty
Tempo médio de acesso a memória
53
• AMAT = Hit Rate * Hit Time + Miss Rate * Miss Time
onde:
Miss Time = Hit Time + Miss Penalty
Hit Rate + Miss Rate = 1
⇒ AMAT = Hit Time + Miss Rate * Miss Penalty
Avaliação de desempenho: Impacto 
da hierarquia de memória no CPUtime
54
• CPUtime = (CPU exec cycles + Memory stall cycles) x TCLK
onde
TCLK = T período de tempo de ciclo de clock
CPU exec cycles = IC x CPIexec
IC = Instruction Count
(CPIexec inclui instruções da ULA e Load/Store)
Memory stall cycles = IC x Misses per instr x Miss Penalty
⇒ CPUtime = IC x (CPIexec + Misses per instr x Miss Penalty) x TCLK
onde:
Misses per instr = Memory access per instruction x Miss rate
⇒ CPUtime = IC x (CPIexec + MAPI x Miss rate x Miss Penalty) x TCLK
Avaliação de desempenho: Impacto 
da hierarquia de memória no CPUtime
55
⇒ CPUtime = IC x (CPIexec + MAPI x Miss rate x Miss Penalty) x TCLK
Vamos considerar uma cache ideal (100% hits):
CPUtime = IC x CPIexec x TCLK
Vamos considerar um sistema sem cache (100% misses):
CPUtime = IC x ( CPIexec + MAPI x Miss penalty) x TCLK
Avaliação de desempenho: Impacto 
da hierarquia de memória e stalls no 
pipeline no CPUtime
56
⇒ CPUtime = IC x (CPIexec + MAPI x Miss rate x Miss Penalty) x TCLK
Colocando tudo junto: Vamos considerar os stalls devido aos 
hazards no pipeline:
CPUtime = IC x ( CPIexec + Stalls per instr + MAPI x Miss penalty) x TCLK
Desempenho da cache
57
• Tempo médio de acesso a memória:
AMAT = Hit Time + Miss Rate * Miss Penalty
• Como melhorar o desempenho da cache:
– Reduzir o tempo de hit;
– Reduzir a taxa de miss;
– Reduzir a penalidade do miss.
O que é?
59
• Ato de executar um programa de computador, um 
conjunto de programas ou outras operações a fim de 
avaliar o desempenho relativo de um objeto, 
normalmente executando uma série de testes padrão. 
• O benchmarking geralmente é associado à avaliação 
das características de desempenho do hardware do 
computador.
• Os benchmarks fornecem um método de 
comparação do desempenho de vários subsistemas 
em diferentes arquiteturas de chip / sistema.
Histórico das técnicas de Benchmark
60
• Início (meados de 1960)
– Tempo de execução de uma única instrução;
– Tempo médio de execução de instrução (Gibson, 1970);
– MIPS puro (1/AIT ~ 1/(Tempo médio de instrução)).
• Programas simples (Início de 1970)
– Benchmarks sintéticos (Whetstone);
– Kernels (Livermore Loops).
• Desempenho relativo (Fim de 1970)
– VAX 11/780 = One-MIPS.
• Comparativo com IBM360
• Apenas marketing: ~ 500 mil instruções/s 
– VAX-MIPS
– MFLOPs.
Histórico das técnicas de Benchmark
61
• Aplicações "reais" (a partir de 1989):
– SPEC CPU C/C++/Fortran;
• Científico, computação irregular
• 89, 92, 95, 2000, 2006 e 2017
– Dhrystone;
– MiBench;
– EEMBC;
– TPC;
– LINPACK;
– Bonnie++: filesystem and hard drive benchmark;
– Phoronix Test Suite: open-source cross-platform
benchmarking suite for Linux;
– BDTI (Berkeley Design Technology) Benchmarks
Armadilhas 
62
Qual é o significado do gráfico?
Baseado no SPECint2017
63
Importância de saber comparar
64
• Benchmark versus workloads reais?
• Workloads reais seriam a melhor forma de medir o 
desempenho entre diferentes arquiteturas
– Geralmente essa abordagem é infactível¹:
• Aplicação em desenvolvimento: custo para executar partes 
críticas do software em computadores com diferentes 
especificações é caro (tempo + $$). 
• Aplicação pronta para ser implantada: como saber o 
desempenho de uma aplicação sobre diferentes condições do 
workload (aplicação web por exemplo) antes de ser 
implantada? Há riscos de falhas por falta de capacidade em 
atender demanda? Como avaliar isso? É preciso prever.
¹ Planning for Web Services: Metrics, Models, and Methods
Benchmark and Performance Tests – Chapter 7
Person Education
Importância de saber comparar (2)
65
• A técnica de benchmark é o principal método para 
medir o desempenho de uma máquina física¹. 
– Execução de um conjunto de programas representativos
em diferentes computadores e redes e medir os 
resultados. 
– Os resultados são usados para avaliar o desempenho de 
um determinado sistema com um workload bem 
definido. 
– Bons benchmarks têm objetivos de desempenho e 
workloads bem definidos, que são mensuráveis e 
reprodutíveis.
¹ U. Krishnaswamy and I. Scherson, “A Framework for Computer Performance
Evaluation Using Benchmark Sets,” IEEE Trans. Computers, vol. 49,
no. 12, Dec. 2000.
Importância de saber comparar (3)
66
• Tipos de benchmark
– Kernels: pequenos pedaços de aplicações reais;
• Úteis para avaliar mudanças arquiteturais. Exemplo: diferentes 
implementações de uma unidade de divisão de PF.
– Toy programs: com cerca de 100 linhas de código, como 
algoritmos de ordenação quicksort, bublesort, etc.
• Podem avaliar CPU e padrão de acesso à memória, por 
exemplo.
– Sintéticos: executam um conjunto de operações que 
tentam corresponder ao comportamento de uma 
aplicação real, como o Dhrystone e EEMBC.
– Suíte: oferecem variedade de aplicações. Permitem
avaliar diversos aspectos de um computador.
Berkeley Design Technology -
Benchmarks
67• Consultoria especializada para ajudar executivos de 
empresas, engenheiros e "product marketers" a criar 
e usar processadores embarcados, software e 
ferramentas.
• BDTI desenvolve benchmarks desde 1994
• Utilizados para:
– Auxiliar no desenvolvimento de processadores;
– Avaliar desempenho de processadores embarcados;
– Escolher processor já existente para aplicação embarcada:
desempenho x custo x consumo de energia.
Berkeley Design Technology -
Benchmarks
68
• Licença incluí:
– Especificação técnica detalhada de referência que descreve 
o(s) benchmark(s) e fornece diretrizes de implementação;
– Documentação do código do benchmark em linguagem 
de alto nível (geralmente em C ou MATLAB);
– Quando relevante, implementação(s) de referência em 
linguagem assembly para um processador representativo;
– Vetores de teste para verificar a funcionalidade do 
benchmark;
– Treinamento e suporte técnico.
• BDTI exige revisão e certificação de implementações 
de benchmark antes que qualquer dado de referência 
possa ser divulgado.
SPEC
69
• Dois dos mais populares benchmarks são os desenvolvidos pela 
Standard Performance Evaluation Corporation:
– SPECint (92, 95, 2000, 2006 e 2017)
– SPECfp (92, 95, 2000, 2006 e 2017)
• Indexa resultados em sua página spec.org
• Duas classes: processor-intesive and graphics-intensive
• Dois tipos de computação: inteiros e ponto-flutante
• Programas reais modificados para serem portáveis e minimizar o 
efeito do I/O no desempenho
SPEC
70
• Inteiros: programas desenvolvidos em C/C++
• Ponto flutuante: prog. desenvolvidos em C/C++ e 
Fortran.
• Útil para benchmark de processadores para sistemas
Desktop multi-core e servidores single-core.
• Característica das implementações: emprego de 
bibliotecas estáticas
SPECrate
10 integer benchmarks
10 floating point benchmarks
10 integer benchmarks
13 floating point benchmarks
SPECint2017
SPECfp2017
SPECspeed
71
Benchmarks para servidores
72
• Orientados a vazão de dados
– Taxa de processamento dos processadores do SPEC CPU 
(mesmo multicores) e é convertida em um índice, o 
SPECrate.
• Mede paralelismo a nível de requisição;
• SPEC oferece outros benchmarks para medir desempenho a 
nível de paralelismo de threads usando OpenMP e MPI.
– Atividade de I/O em servidores é significativa, tendo a 
SPEC desenvolvido o SPECSFS para medir a vazão e 
tempo de resposta entre nós de processamento (avalia 
I/O entre disco e rede sobre NFS -Network File System)
– Outra ferramenta: SPECWeb
• Simular múltiplos clientes requisitando páginas estáticas e
dinâmicas do servidor.
Benchmarks para servidores
73
• Transaction Processing Council (TPC): afere o 
desempenho de servidores medindo a capacidade 
dos sistemas em gerenciar transações em bancos
de dados (acessos e atualizações).
– Foco em transações em ATM de bancos e reservas aéreas
– Criado em meados de 1980 por um grupo de 
engenheiros interessados em desenvolver benchmarks 
realísticos e corretos para transação de processos (TP).
– Medida em transações por segundo, incluindo:
• A própria vazão.
• Tempo de resposta.
– Se timeout é atingido, fração da vazão é descartada.
Reportando desempenho
74
• O princípio que guia a medição de desempenho é a: 
reprodutibilidade.
– Outro experimentador deve ter condições de repetir o 
experimento e chegar nos mesmos resultados (método 
científico).
• Características
– SPEC: 
• Exige extensiva descrição do computador;
• Exige todas as flags de compilação;
• Exige configuração padrão e otimizada;
• Gera resultados gerados em tabelas e gráficos.
– TPC
• Exige resultados auditados por fonte confiável
• Custo da informação (todo o ambiente: terminais, 
equipamentos de comunicação, software, backup... por 3 anos).
Sumário de desempenho
75
• Uma vez escolhida uma métrica de desempenho 
em conjunto com a suíte de benchmark, é ideal 
haver condições de sintetizar o resultado em um 
único número.
– Como comparar diferentes computadores dessa 
maneira?
• Média aritmética: matematicamente incorreta para esse tipo de 
análise.
• Média ponderada: também incorreta.
• Média geométrica: a média geométrica a única média correta 
quando resulta em média normalizada, este é o resultado que 
está presente em relações com os valores de referência.¹
¹ Fleming, Philip J.; Wallace, John J. (1986). «How not to lie with statistics: the correct way to summarize benchmark 
results». Communications of the ACM. 29 (3): 218–221.doi:10.1145/5666.5673
https://pt.m.wikipedia.org/wiki/Digital_object_identifier
https://dx.doi.org/10.1145%2F5666.5673
Exemplo
76
• Suponha que o SPECRatio do computador A em um 
benchmark é 1.25 vezes mais rápido que B. Então, 
teríamos que:
Exemplo
77
Últimas duas colunas:
Relação entre tempos de execução é igual a da 
entre as SPECRatio
⇒ Computador de referência é irrelevante na 
performance relativa
Interpretando resultados
78
• Números de desempenho são aproximações do 
desempenho absoluto dos sistemas
• Indíces de benhmarks confiáveis são muito melhores 
do que desempenho baseados em "peak rate", que 
são geralmente calculados sobre operações sem 
muito propósito (instruções simples em MIPS ou 
MFLOPs, por exemplo).
• Gráficos
– eixo X é a escala de tempo, geralmente, por ano
– eixo Y é a escala logarítmica de desempenho normalizada 
para cerca de 1985 (primeiras medições de desempenho)
Benchmarks
79Fonte: Samuel H. Fuller e Lynette Millet em The Future of 
Computing Performance: Game Over or Next Level?
Benchmarks
80Fonte: Samuel H. Fuller e Lynette Millet em The Future of 
Computing Performance: Game Over or Next Level?
Armadilhas
81
• Benchmarks: Kernels, Toy programs e Sintéticos são 
desacreditados hoje (H&P):
– Susceptíveis a otimização de compiladores
• Diferentes flags de compilação. Que aparentemente só funcionam 
para otimizar o código dos benchmarks (tendem a não funcionar 
em uma aplicação real).
– Podem ser executados em diferentes condições:
• Com permissão de modificação de código fonte.
• Fabricantes de benchmarks passaram a orientar o uso 
de um compilador e flags específicas. Além de restringir 
a modificação do código fonte com opções de:
– Não permitirem.
– Tornarem a modificação impossível (benchmark grandes).
– Permitirem desde que não mude o valor dos resultados.
Armadilhas (2)
82
• EEMBC (Eletronic Design News Embedded
Microprocessor Benchmark Consortium) desenvolveu 
um conjunto de 41 kernels para uso de predição de 
desempenho para diferentes aplicações:
– Automotiva/Industrial;
– Consumidor;
– Rede;
– Automação comercial e telecomunicação.
• Esforço para o desenvolvimento de benchmark mais 
confiável: não susceptível a otimização de compilação, 
alocação aleatória da memória, bibliotecas estáticas ...
• O fato de trabalharem com kernels e limitadas opções de 
relatório ainda gera controvérsias e a faz não ter boa 
reputação nesse mercado (H&P). 
Exemplo: Como comprometer uma 
comparação
83
• O mesmo programa C sendo executado em duas 
arquiteturas
Exemplo: Reorganização de código 
pelo compilador
84
• Menos cache misses:
– Multiplicação de matrizes em blocos
A curva exponencial das inovações tecnológicas que 
conduzem à Singularidade, conforme previsto por 
Ray Kurzweil na Time Magazine (2005) 85
“Há alguns anos, pesquisamos o que 
pensavam os maiores especialistas em IA 
do mundo. E uma das perguntas que 
fizemos foi: 
‘Em qual ano você acha que haverá 50% 
de probabilidade de termos conseguido a 
inteligência de máquinas com nível 
humano?’
(...) E a resposta foi em média 2040 ou 
2050 (...) 
Poderá acontecer muito mais tarde ou mais 
cedo, a verdade é que ninguém sabe.” 
Nick Bostrom filósofo e futurologista, em 
palestra no TED em 2015
Considerações
86
• Benchmarks medem todo o sistema:
– Aplicação;
– Compilador, gerenciamento de memória, ...;
– Sistema operacional;
– Arquitetura;
– Organização.
• Tempo nos benchmarks são sensíveis a:
– Alinhamento da cache– Padrão de acesso à memória
– Localização de dados em disco
Considerações (2)
87
• Benchmarks populares geralmente refletem 
workloads de "ontem“
– E sobre os programas que as pessoas usam hoje?
– Resistem a "benchmark engineering" ou 
"benchmarketing"?
• Uma vez que um benchmark se torne padronizado e 
popular, há uma tremenda pressão para melhorar o 
desempenho por otimizações direcionadas. 
• Pequenos kernels ou programas que passam seu tempo 
em uma pequena quantidade de código são 
particularmente vulneráveis
• Em média 70% de todos os programas do SPEC2000 
haviam sido "invalidados" no lançamento do SPEC2006.
Considerações (3)
88
• A partir de 2005
– Desempenho single-threaded entra em uma nova 
era de melhorias modestas;
– Frequência de clock era o maior componente para 
melhora do desempenho:
• Maior frequência implica em maior dissipação de potência;
• Potência consumida pelos chips cresceu exponencialmente 
e teve que ser repensada.
Considerações (4)
89
–Otimistas x Pessimistas
• Tendência de Kurzweill continuará (otimismo);
• Arquitetura single-threaded e CMOS próximos 
de atingir seus limites (International Technology 
Roadmap for Semiconductors - ITRS);
• Programação multi-thread não tem sido 
amplamente bem sucedida para melhorar 
eficiência no paralelismo;
• Tecnologias alternativas ainda continuam 
insuficientes pela dificuldade de adoção. 
Referências
90
• Cap. 1: J. Hennessey, D. Patterson,
"Computer Architecture: a quantitative approach“ 4 th Edition, 
Morgan-Kaufmann Publishers.
• Outras espalhadas pelo texto

Continue navegando