Upload
vocong
View
239
Download
0
Embed Size (px)
Citation preview
Organização de Computadores
Marcelo LoboscoDCC/UFJF
Avaliando e Compreendendo o Desempenho
Aula 10
Agenda
Análise de Desempenho (cont.)Avaliando o DesempenhoBenchmark SPECFalácias e Armadilhas
Desempenho da CPU e seus Fatores Exercício: Um projetista de compilador está tentando decidir entre
duas seqüências de código para um determinada máquina. Baseado na implementação de hardware, existem três classes diferentes de instruções: Classe A, Classe B e Classe C, e elas exigem um, dois e três ciclos, respectivamente.
A primeira seqüência de código possui 5 instruções: 2 de A, 1 de B e 2 de C. A segunda seqüência possui 6 instruções: 4 de A, 1 de B e 1 de C.
Que seqüência será mais rápida? O quanto mais rápida? Qual é a CPI para cada seqüência?
Desempenho da CPU e seus Fatores Resposta:Seqüência 1: 2 + 1 + 2 = 5 instruçõesSeqüência 2: 4 + 1 + 1 = 6 instruções
Ciclos de clock da CPU =∑i=1
n
(CPI i x Ci )
Ciclos de Clock da CPU1 = (2 x 1) + (1 x 2) + (2 x 3) = 10 ciclos
Ciclos de Clock da CPU2 = (4 x 1) + (1 x 2) + (1 x 3) = 9 ciclos
Seqüência 2 é mais rápida
Ciclos de clock da CPU = Instruções para um programa x CPI
CPI1 = 10/5 = 2
CPI2 = 9/6 = 1,5
Avaliando Desempenho
A melhor forma de determinar desempenho é executando uma aplicação real Usa programas típicos do workload esperado Ou usa programas típicos da classe de aplicações
esperada
Benchmarks pequenos Ótimos para arquitetos e projetistas Fácil de padronizar Pode ser otimizado / uso de otimizações especiais
Avaliando Desempenho
A Intel reconheceu, envergonhada, na sexta-feira que um bug em um programa de software conhecido como um compilador levou a empresa a anunciar uma velocidade 10 por cento maior dos seus chips microprocessadores em um benchmark da área. Entretanto, os analistas do setor disseram que o erro de codificação foi um comentário infeliz sobre uma prática comum de “mentir” nos testes de desempenho padronizados. O erro foi atribuído à Intel dois dias atrás pela concorrente Motorola, em um teste conhecido como SPECint92. A Intel reconheceu que havia “otimizado” seu compilador para melhorar suas pontuações de teste. A empresa também havia dito que não gostava da prática, mas que foi forçada a fazer as otimizações porque seus concorrentes estavam fazendo o mesmo. No coração do problema da Intel está a prática de “ajustar” os programas de compilador para reconhecerem certos problemas de computação no teste e, então, substituir por partes especiais do código escritas a mão.
Sábado, 6 de janeiro de 1996 — New York Times
Avaliando Desempenho
Diferentes classes e aplicações de computadores exigem diferentes tipos de benchmarks Desktop
Desempenho de CPU ou tarefa específica
Servidores Aplicação Servidores científicos => CPU Outros (Web, BD, arquivos) => Vazão, tempo de resposta
Comparando e Resumindo o Desempenho
1101001Tempo Total (segundos)
1001000Programa 2 (segundos)
101Programa 1 (segundos)
Computador BComputador A
Comparando e Resumindo o Desempenho Quem é mais rápido?
A é 10 vezes mais rápido que B para o programa 1 B é 10 vezes mais rápido que A para o programa 2
Desempenho
Média aritmética:
Média aritmética ponderada: somatório do produto dos pesos pelos tempos de execução
DesempenhoB
DesempenhoA
=Tempo de ExecuçãoA
Tempo de Execução∣B
=1001110
=9,1
MA =1n∑i=1
n
Tempoi
Benchmark SPEC
SPEC (System Performance Evaluation Cooperative) Empresas concordaram sobre um conjunto de
programas e entradas reais Valioso indicador do desempenho (e da tecnologia do
compilador) Benchmarks para CPU, gráficos, computação de alto
desempenho, computação orientada a objetos, aplicações Java, modelo cliente-servidor, e-mail, sistemas de arquivos, servidores Web.
Mais recente: SPEC CPU2006
SPEC CPU2000
SPEC CINT2000 e CFP2000
Valores normalizados Resultados divididos pelo desempenho de uma Sun Ultra
5_10 300MHz Razão SPEC Resultados numéricos maiores indicam melhor desempenho
Aumento de desempenho resultado de... Aumento na velocidade de clock Melhorias na organização do processador que diminuem CPI Aprimoramento no compilador
Diminui contagem de instruções Geram instruções com média de CPI mais baixa
SPEC CINT2000 e CFP2000
SPEC CINT2000 e CFP2000
Desempenho aumenta quase linearmente com aumento da velocidade do clock Perdas no sistema de memória geralmente
aumentam com velocidades de clock mais alta Cache agressivo Incapacidade do benchmark de exaurir sistema de memória
Pentium 4 é relativamente melhor do que Pentium III nos benchmarks de ponto flutuante ou relativamente pior nos benchmarks de inteiros?
SPEC CINT2000 e CFP2000
0,390,34CFP2000/MHz
0,360,47CINT2000/MHz
Pentium 4Pentium IIIVelocidade
Considerando único compilador para ambos os processadores CINT2000 => CPI do Pentium 4 é 1,3 vezes melhor que do
Pentium III (0,47/0,36) Pentium 4: Novas instruções de ponto flutuante
(Streaming SIMD Extensions 2) Contagem de instruções e CPI diferem
SPECweb99
80010,7887PIII Xeon8450/700
67002848P4 Xeon MP6600
42000,7445PIII Xeon6400/700
46152,24210P4 Xeon4600
56983,06425P4 Xeon2650
14541,26121PIII2550
34351,13428PIII2500
18101,4123PIII1650
27651222PIII1550/1000
ProcessadorSistema ResultadoClock (GHz)
# de redes
# de CPUs
# de
unidades de disco
SPEC CINT2000 e CFP2000
Falácias e Armadilhas
Armadilha: Esperar a melhoria de um aspecto de um computador para aumentar o desempenho por uma quantidade proporcional ao tamanho da melhoria
Exemplo: “Suponha que um programa seja executado em 100
segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 5 vezes mais rápido?”
Falácias e Armadilhas
Lei de Amdahl
Tempo de execução após melhoria =Tempo de execução afetado pela melhoriaQuantidade de melhoria
+Tempo de execução não afetado
Tempo de execução após melhoria =80 seg
n+(100−80 )
20 seg =80 seg
n+(20) ∴ 0=
80 segn
Como queremos que o tempo melhore 5 vezes, o novo tempo de execuçãoDeve ser de 20 seg:
Conclusão: A melhoria de desempenho possível com determinado aumento é limitada pela quantidade em que o recurso aprimorado é usado Torne o caso comum rápido
Falácias e Armadilhas
Armadilha: Usar um subconjunto da equação de desempenho como uma métrica de desempenho
MIPS (Milhão de instruções por segundo)
MIPS =Contador de instruções
Tempo de execução x 106
Problemas com MIPS: Não leva em conta o tipo das instruções Computadores com diferentes conjuntos de
instruções terão contagens de instruções diferentes MIPS pode variar inversamente com o desempenho
Falácias e Armadilhas
Considere o computador com três classes de instruções e medições de CPI do exemplo do fim da última aula. Agora suponha que, medindo o código gerado por dois compiladores diferentes para o mesmo programa, obtivemos os seguintes dados: Código do compilador 1 gerou 5 bilhões de instruções da classe de instruções A, 1 bilhão de B e 1 bilhão de C; o compilador B gerou 10 bilhões de instruções da classe A, 1 bilhão de B e 1 bilhão de C. Considere o computador com clock de 4GHz. Que seqüência de código será executada mais rápido de acordo com o MIPS? E de acordo com o tempo de execução?
Falácias e Armadilhas
Primeiro encontramos o tempo de execução para cada compilador usando:
Tempo de execução =ciclos de clock da CPUvelocidade de clock
Ciclos de clock da CPU =∑i=1
n
(CPI i x Ci )
Ciclos de clock da CPU1=(5x1+1x2+1x3 )x 109=10 x109
Ciclos de clock da CPU2=(10x1+1x2+1x3 ) x109=15 x109
Tempo de execução1=10x109
4x109=2,5 segundos
Tempo de execução2=15x109
4x109=3,75 segundos
Falácias e Armadilhas
Pelo tempo de compilação, compilador 1 gera o programa mais rápido.
Calculo do MIPS:
MIPS =Contador de instruções
Tempo de execução x 106
MIPS1=(5+1+1 )x109
2,5 x106=2800
MIPS2=(10+1+1 )x109
3,75x 106=3200
Compilador 2 possui MIPS mais alto, porém código do compilador 1 é executado mais rápido
Comentários Finais
Desempenho não deve ser único focoCusto, consumo de energia, segurança,
escalabilidadeCusto depende de vários fatores
Componentes, pesquisa e desenvolvimento, mão de obra, vendas, marketing, margem de lucros
Próxima Aula...
O Processador: caminho de dados e controleIntroduçãoConvenções Lógicas de ProjetoConstruindo um Caminho de Dados