Você está na página 1de 9

O Perigo das Previsões...

Aula 03: Análise de Performance


e Benchmarks

Medidas e Avaliações
O Perigo das Previsões... A Era RISC
Arquitetura como processo iterativo:
• Busca da solução ótima em todos os
níveis dos sistemas de computadores

Criatividade
Custo /
Performance

Boas idé
idéias
Idéias medíocres
Idéias ruins
Ferramentas para Medidas de
Performance Performance (e Custo)
• Benchmarks, Traces, Mixes Throughput
Avião DC à Paris Veloc. Passageiros
(pmph)
• Custo, atraso, área, estimativa de
potência Boeing 747 6.5 horas 610 mph 470 286,700

• Simulação (muitos níveis)


BAD/Sud
– ISA, RT, Gate, Circuito 3 horas 1350 mph 132 178,200
Concorde

• Teoria das filas


• Tempo para rodar tarefa (ExTime ou ET)
• Basic Rules – tempo de execução, tempo de resposta, latência
• Tarefas por dia, hora, semana, sec, ns …
• Leis fundamentais (Performance)
– Throughput, bandwidth

Terminologia de Performance
Performance (e Custo)
“X é n% mais veloz que Y” significa:
"X é n vezes mais veloz que Y" significa

• Velocidade do Concorde vs. Boeing 747

• Throughput do Boeing 747 vs. Concorde


Lei de Amdahl
Exemplo Speedup devido à melhoria E:
ExTime sem E Performance com E
Exemplo: Y leva 15 segundos para completar tarefa, Speedup(E) = ------------- = -------------------
X leva 10 segundos. Quantos % X é mais rápido? ExTime com E Performance sem E

Suponha que melhoria E acelere porção F da tarefa por um fator


S, e que restante da tarefa permanece sem alteração, então

ExTime(E) =
Speedup(E) =

Lei de Amdahl
Lei de Amdahl
ExTimenew = ExTimeold x (1 - Fractionenhanced) + Fractionenhanced
• Instruções de ponto flutuante são melhoradas
Speedupenhanced para rodar 2X mais rápidas, mas somente 10%
das instruções são de ponto flutuante (FP).
1
ExTimeold ExTimenew =
Speedupoverall = =
(1 - Fractionenhanced) + Fractionenhanced
ExTimenew
Speedupenhanced Speedupoverall =

Em última análise, performance de qualquer sistema será


limitada por porção que não é melhorada...
Lei de Amdahl Corolário: Make the common case fast
• Todas as instruções requerem busca de instrução,
somente uma fração requer busca ou escrita de dados.
– Otimize acessos à instruções em vez de otimizar o acesso a dados
• Instruções de ponto flutuante são melhoradas
para rodar 2X mais rápidas, mas somente 10% • Programas exibem localidade de referência
das instruções são de ponto flutuante (FP). Localidade espacial Localidade temporal

ExTimenew = ExTimeold x (0.9 + 0.1/2) = ExTimeold x 0.95

Speedupoverall = 1 • Acesso a memórias menores é mais rápido


= 1.053
0.95 – Mantenha hierarquia de memória de modo a fazer acessos mais
freqüentes estar localizados nas memórias menores.

CPU
Reg's
Cache
Memória
Disco / Fita

Regra Básica:
Métricas de Performance
Make the common case fast
Aplicação Respostas por mês
• Os casos mais simples são usualmente Linguagens de
Operações por segundo

mais freqüentes e mais fáceis de serem Programação


otimizados!!! Compilador
(milhões) de instruções por segundo: MIPS
(milhões) de operações FP por segundo:
ISA MFLOP/s
• Faça as coisas simples e rápidas em Datapath
Megabytes / segundo
hardware e certifique-se de que as demais Control
Unidades Funcionais
sejam feitas corretamente em software. Transistores Lógica Ciclos por segundo (clock rate)
Aspectos da Performance de uma
CPU Métricas de Marketing
CPU
CPUtime
time == Seconds
Seconds == Instructions
Instructions xx Cycles
Cycles xx Seconds
Seconds MIPS = IC / CPU time * 10^6 = Clock Rate / CPI * 10^6
Program
Program Program
Program Instruction
Instruction Cycle
Cycle • Máquinas com diferentes conjuntos de instruções ?
• Programas com instruções diferentes ?
Instruction
CPI Clock Rate – Freqüência dinâmica das instruções
Count
• Sem correlação com performance
Programa X
MFLOP/s = Operações FP / CPU time * 10^6
Compilador X (X)
• Dependente de máquina
Conjunto de Normalizado:
X X • Tempo da máquina pode estar Normalizado:
Instruções
sendo gasto em outro lugar add,sub,compare,mult
add,sub,compare,mult 11
Organização X X
div,
div,sqrt
sqrt 44
Tecnologia X exp,
exp,sin,
sin,. .. .. . 88

Compromissos da Organização da Ciclos por Instrução


Cycles per Instruction
CPU
“Média do número de ciclos por instrução”
Aplicação

Linguagens de
Programação
Compilador

ISA Instruction Mix


Datapath CPI
Control
“Freqüência de instruções”
Unidades Funcionais
Transistores Lógica Cycle Time
onde
Exemplo de Cálculo de CPI Exemplo
Máquina Base (Reg / Reg)
Analisar o impacto de acrescentarem-se
operações Registrador / Memória na máquina
Operação Freq Ciclos CPIi (% Time) anterior, sabendo-se que:
ALU 50% 1 .5 (33%)
ƒ Um operando em memória
Load 20% 2 .4 (27%) ƒ Um operando em registrador
ƒ Leva 2 ciclos para completar
Store 10% 2 .2 (13%) ƒ Branch passa a levar 3 ciclos para completar.

Branch 20% 2 .4 (27%) Qual a fração dos Loads tem que ser
eliminada para que a modificação seja
CPI 1.5
vantajosa?
Mix Típico

Solução Programas para Avaliação da


Performance de Processadores
Op Freq Ciclos CPIi Freq Ciclos CPIi
• (Toy) Benchmarks
ALU 0.50 1 0.5 0.5 – x 1 0.5 – x
– Programas de 10-100 linhas
– e.g.: sieve, puzzle, quicksort
Load 0.20 2 0.4 0.2 – x 2 0.4 – 2x
Store 0.10 2 0.2 0.1 2 0.2 • Benchmarks sintéticos
Branch 0.20 2 0.4 0.2 3 0.6 – Tentativa de se ter na média a mesma freqüência de instruções de
Reg/Mem x 2 2x programas reais
1.00 1.5 1–x (1.7 – x)/(1 – x) – e.g., Whetstone, dhrystone
• Kernels
– Partes críticas de programas reais
– e.g., Livermore loops
• Programas reais
TODOS os loads devem ser eliminados para esta versão ser vantajosa! – e.g., gcc, spice
Truques utilizados para se ganhar
o Jogo dos Benchmarks Erros Comuns em Benchmarking
• Variações das demandas de dispositivos ignorados
• Configurações diferentes das máquinas utilizadas
para rodar o mesmo programa;
• Nível de carga do sistema controlado de maneira
• Compilador otimizado para o benchmark; inadequada
• Utilizar benchmark escrito para melhorar
performance de uma única máquina; • Efeitos de cache ignorados
• Sincronizar jobs intensivos em CPU/IO;
• Utilização de benchmarks pequenos; • Tamanho de buffers inapropriados
• Benchmarks “compilados à mão” para otimizar
performance; • Ignorar a imprecisão devido à amostragem

SPEC: System Performance


Erros Comuns em Benchmarking
Evaluation Cooperative
• Ignorar overhead dos monitores; • Primeiro Round 1989
– 10 programas
• Medições sem validação;
• Segundo Round 1992
• Não manter mesmas condições iniciais; – SpecInt92 (6 programas inteiros) e SpecFP92 (14
programas de ponto flutuantes)
– Sem limite para flags de compiladores
• Não medir performance transiente (cold start);
• Terceiro Round 1995
• Coleta de muitos dados com pouca análise;
– Limite de um único flag para todos os programas
– Novo conjunto de programas
SPEC Primeiro Round SPEC Primeiro Round

800

700
• Um programa: 99% do tempo em única linha de 600
código 500

• Fácil para compilador (não testa a máquina) 400

300

200

100

doduc
gcc

nasa7
epresso

spice

eqntott

fpppp

tomcatv
li

matrix300
Benchmark

Como agrupar dados de medições Como agrupar dados de medições


de Performance de Performance
1. Tempo total de Execução 2. Tempo de Execução Ponderado
a. Tempo → Média Aritmética a. Tempo → Média Aritmética Ponderada

b. Taxa (rate) → Média Harmônica b. Taxa (rate) → Média Harmônica Ponderada

– Rastreiam o tempo de execução – Rastreiam o tempo de execução


Como agrupar dados de medições
Avaliação de Performance
de Performance
• Venda é uma função da performance relativo à
3. Tempo de Execução Normalizado competição. Logo, espere investimentos altos em
a. Média Geométrica melhoria da performance do produto dado pela
melhoria da performance dos benchmarks
• Bons produtos aparecem quando:
– Bons benchmarks
– Boas maneiras de sumarizar a performance
• Se o benchmark ou sumário são inadequados,
então melhor o produto para melhorar vendas
- Não há, necessariamente, correspondência com o sempre ganha de outras opções
tempo de execução Ex. Tempo é a única medida real de performance!
• E quanto ao custo?

Avaliação de Benchmarks / Preços


de CPUs
300

250
200 BUS
BENCH
150
US$/10
100 Bench/$
50
0
P-II P-II P-II P-III P-III P-III P-III
350 400 450 500 600 700 800
http://www.cpuscorecard.com

Você também pode gostar