Organização de Computadores Marcelo Lobosco DCC/UFJF
Avaliando e Compreendendo o Desempenho Aula 10
Agenda Análise de Desempenho (cont.) Avaliando o Desempenho Benchmark SPEC Falá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ções Seqüência 2: 4 + 1 + 1 = 6 instruções n Ciclos de clock da CPU = i=1 (CPI i x C i ) Ciclos de Clock da CPU 1 = (2 x 1) + (1 x 2) + (2 x 3) = 10 ciclos Ciclos de Clock da CPU 2 = (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 CPI 1 = 10/5 = 2 CPI 2 = 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 Computador A Computador B Programa 1 (segundos) Programa 2 (segundos) Tempo Total (segundos) 1 1000 1001 10 100 110
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 Desempenho B = Tempo de Execução A = 1001 Desempenho A Tempo de Execução B 110 =9,1 Média aritmética: MA = 1 n Tempo i i=1 Média aritmética ponderada: somatório do produto dos pesos pelos tempos de execução n
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 Velocidade CINT2000/MHz CFP2000/MHz Pentium III 0,47 0,34 Pentium 4 0,36 0,39 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 Sistema Processador # de unidades de disco # de CPUs # de redes Clock (GHz) Resultado 1550/1000 PIII 2 2 2 1 2765 1650 PIII 3 2 1 1,4 1810 2500 PIII 8 2 4 1,13 3435 2550 PIII 1 2 1 1,26 1454 2650 P4 Xeon 5 2 4 3,06 5698 4600 P4 Xeon 10 2 4 2,2 4615 6400/700 PIII Xeon 5 4 4 0,7 4200 6600 P4 Xeon MP 8 4 8 2 6700 8450/700 PIII Xeon 7 8 8 0,7 8001
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 afetado pela melhoria Tempo de execução após melhoria = +Tempo de execução não afetado Quantidade de melhoria 80 seg Tempo de execução após melhoria = +(100 80 ) n Como queremos que o tempo melhore 5 vezes, o novo tempo de execução Deve ser de 20 seg: 80 seg 80 seg 20 seg = +(20) 0= n n 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) Contador de instruções MIPS = Tempo de execução x 10 6 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: ciclos de clock da CPU Tempo de execução = velocidade de clock n Ciclos de clock da CPU = (CPI i x C i ) i=1 Ciclos de clock da CPU 1 =(5x1+1x2+1x3)x 10 9 =10 x10 9 Ciclos de clock da CPU 2 =(10 x1+ 1x2+1x3) x10 9 =15 x10 9 Tempo de execução 1 = 10x109 4x10 9 Tempo de execução 2 = 15x109 4x10 9 =2,5 segundos =3,75 segundos
Falácias e Armadilhas Pelo tempo de compilação, compilador 1 gera o programa mais rápido. Calculo do MIPS: Contador de instruções MIPS = Tempo de execução x 10 6 MIPS 1 = (5+1+1)x109 2,5 x10 6 =2800 MIPS 2 = (10+1+1)x109 3,75 x 10 6 =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 foco Custo, consumo de energia, segurança, escalabilidade Custo 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 controle Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados