Desempenho de Computadores João Canas Ferreira Arquitectura de Computadores FEUP/LEIC Contém figuras de Computer Organization and Design, D. Patterson & J. Hennessey, 3ª. ed., MKP Tópicos Os vários aspectos do desempenho Desempenho de CPU Avaliação de desempenho ArqComp: Desempenho de Computadores 2/21 2006-03-02
Aspectos da avaliação de desempenho Objectivos da avaliação de desempenho: Definir, medir e resumir; Apoiar a selecção fundamentada de sistemas; Compreender a motivação para a organização dos sistemas. Porque é que um computador é melhor que outro para um dado programa ou uma dada aplicação? Que factores do desempenho global estão relacionados com o suporte físico? De que forma é que a arquitectura do conjunto de instruções afecta o desempenho? ArqComp: Desempenho de Computadores 3/21 2006-03-02 Critérios de desempenho Os critérios usados para determinar o desempenho dependem daquilo que se pretende fazer com a resposta. Qual dos seguintes aviões tem o melhor desempenho? Avião Nº passag. Alcance (milhas) Velocidade (milhas) Débito (pass. milhas) Boeing 777 375 4630 610 228750 Boeing 747 470 4150 610 286700 Concorde 132 4000 1350 178200 DC-8-50 146 8720 544 79424 maior velocidade: Concorde (<133 passageiros) maior capacidade: Boeing 747 maior alcance: DC-8 ArqComp: Desempenho de Computadores 4/21 2006-03-02
Desempenho de computadores: tempo Tempo de resposta: o intervalo de tempo entre o início e o fim de uma tarefa. (Também designado tempo de execução.) Quanto tempo demora o programa a executar? Quanto tempo demora a resposta da base de dados? Débito: Quantidade total de trabalho por unidade de tempo. Quantos programas podem ser executados simultaneamente? Quantas interrogações da base de dados podem ser tratadas num minuto? Se acrescentarmos um computador a um laboratório, o que é que melhora? Se trocarmos o CPU de um computador por outro CPU mais rápido, o que é que melhora? ArqComp: Desempenho de Computadores 5/21 2006-03-02 Tempo de execução Tempo decorrido inclui tudo: acessos a memória e disco, E/S, etc. útil, mas delicado de usar em comparações (p. ex., quando são usados sistemas operativos multi-tarefa). Tempo de CPU não inclui tempo de E/S, nem o tempo de execução de outros programas; tem duas componentes: 1. tempo de utilizador: tempo gasto na execução das instruções do programa; 2. tempo de sistema: tempo que o sistema gasta em tarefas requeridas pelo programa (p. ex., acesso a disco). Foco: tempo de CPU do utilizador desempenho de CPU: usa tempo de CPU do utilizador; desempenho de sistema: usa tempo decorrido. ArqComp: Desempenho de Computadores 6/21 2006-03-02
Definição de desempenho Como estamos principalmente interessados no tempo de execução, usaremos a seguinte definição de desempenho: Desempenho = 1 Tempo de execução A afirmação: X é n vezes mais rápido que Y significa que De forma equivalente: desempenho X desempenho Y = n tempo_de_execução Y tempo_de_execução X = n ArqComp: Desempenho de Computadores 7/21 2006-03-02 Lei de Amdahl Erro comum: Esperar que uma melhoria do desempenho de uma parte de um computador leve a uma melhoria proporcional do desempenho global. Lei de Amdahl: O melhoria de desempenho causada por uma dada modificação é limitada pelo tempo durante o qual a modificação pode ser usada. t m = t u α + t n t m : tempo de execução com o melhoramento t u : tempo durante o qual o melhoramento é usado t n : tempo durante o qual o melhoramento não é usado α: factor de melhoria. Conclusão importante: Optimizar o caso comum. ArqComp: Desempenho de Computadores 8/21 2006-03-02
Lei de Amdahl: Exemplo de aplicação Um programa demora 100 s a executar. Desse tempo, 80 s são dispendidos em multiplicações. De quanto é necessário melhorar o desempenho da unidade de multiplicação, para que o programa execute 4 vezes mais rapidamente? t m = t u α + t n 25 = 80 α + (100 80) α = 80 5 = 16 E se quiséssemos obter uma melhoria global de 5 vezes? ArqComp: Desempenho de Computadores 9/21 2006-03-02 Ciclos de relógio Modelo de funcionamento de CPU: Todas as actividades são sincronizadas por um sinal periódico comum, o sinal de relógio. tempo Tempo entre tiques : nº de segundos por ciclo (período do relógio). Exprimir o tempo de execução em ciclos de relógio: tempo em segundos = nº de ciclos segundos ciclo Frequência de relógio: nº de ciclos por segundo 1 Hz = 1 ciclo/s Um relógio de 2.5 GHz tem um período de 1 2.5 10 9 = 0.4 ns. ArqComp: Desempenho de Computadores 10/21 2006-03-02
Factores de desempenho de CPU O desempenho depende obviamento do número de instruções executadas. O número de instruções pode ser relacionado com o número de ciclos de relógio através de um parâmetro designado por número médio de ciclos por instrução (CPI). nº de ciclos = nº de instruções nº médio de ciclos por instrução Combinando todos os parâmetros, tem-se a equação básica do desempenho: tempo = nº de instruções CPI período t = N CPI T = N CPI F ArqComp: Desempenho de Computadores 11/21 2006-03-02 Determinação empírica dos factores Como determinar o valor dos factores que afectam o desempenho? O tempo de execução pode ser medido empiricamente (para programas concretos e com dados de entrada bem definidos). A frequência de relógio é especificada na documentação do CPU. O nº de instruções pode ser obtido por: simulação; instrumentação do programa (gprof); contadores embutidos no CPU. O CPI depende dos detalhes de implementação do CPU e da mistura de instruções do programa. Muitas vezes é útil dividir as instruções por classes e determinar um CPI para cada classe. ArqComp: Desempenho de Computadores 12/21 2006-03-02
Classes de instruções Classificação das instruções em classes com características semelhantes. Exemplos: operações de ALU (números inteiros); operações de vírgula flutuante; acessos a memória. Para um programa com instruções de n classes, o número de ciclos de relógio é: n nº de ciclos = (CPI i C i ) em que C i é o número de instruções da classe i. O número N de instruções executadas é N = n i=1 C i. O CPI médio global é nº de ciclos n CPI = nº de instruções = i=1 (CPI i C i ) n ( = CPI i C ) i N N ArqComp: Desempenho de Computadores 13/21 2006-03-02 i=1 i=1 Avaliação empírica A melhor forma de avaliar o desempenho é por execução de aplicações reais (benchmark = marca de nível). usar programas típicos da carga esperada (workload); ou usar programas típicos de uma dada área (gráficos, aplicações científicas, bases de dados). Benchmarks pequenos são simples (bom para projectistas...); fáceis de normalizar; fáceis de manipular; de representatividade duvidosa. SPEC (System Performance Evaluation Cooperative) companhias concordaram num conjunto de programas reais (e dados de entrada); indicador valioso de desempenho (e de tecnologia de compilação); http://www.spec.org ArqComp: Desempenho de Computadores 14/21 2006-03-02
SPEC SPECINT2000 Benchmark Linguagem Categoria gzip C Compressão vpr C Colocação e encaminhamento para FPGAs gcc C Compilador de C mcf C Optimização (fluxos em redes) crafty C Xadrez parser C Processamento de texto eon C++ Visualização perlbmk C Linguagem de programação PERL gap C Interpretador para teoria dos grupos vortex C Base de dados OO bzip2 C Compressão twolf C Colocação e encaminhamento de CIs CPU2000: INT2000 (números inteiros); FP2000 (vírgula flutuante) Medida: SPEC ratio (cresce com o desempenho) ArqComp: Desempenho de Computadores 15/21 2006-03-02 Como resumir medidas de desempenho Como resumir o desempenho de um conjunto de benchmarks com um número? Característica fundamental: permitir prever o tempo de execução. Algumas possibilidades: total dos tempos de execução média aritmética: directamente proporcional ao tempo total quando os n programas são executados o mesmo número de vezes M a = 1 n t i n média aritmética pesada: a contribuição de cada programa é pesada pela sua frequência de ocorrência na carga n n M p = (p i t i ) com p i = 1 i=1 ArqComp: Desempenho de Computadores 16/21 2006-03-02 i=1 i=1
Exemplo: Benchmarks para CPUs 1400 1200 Pentium 4 CFP2000 SPEC CINT2000 and CFP2000 performance 1000 800 600 400 200 Pentium III CINT2000 Pentium III CFP2000 Pentium 4 CINT2000 0 500 1000 1500 2000 2500 3000 3500 Clock rate in MHz ArqComp: Desempenho de Computadores 17/21 2006-03-02 Exemplo: Benchmarks para portáteis 1.6 1.4 Pentium M @ 1.6/0.6 GHz Pentium 4-M @ 2.4/1.2 GHz Pentium III-M @ 1.2/0.8 GHz Relative performance 1.2 1.0 0.8 0.6 0.4 0.2 0.0 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 Always on/maximum clock Laptop mode/adaptive clock Benchmark and power mode Minimum power/minimum clock ArqComp: Desempenho de Computadores 18/21 2006-03-02
Exemplo: Eficiência energética 6 Pentium M @ 1.6/0.6 GHz Pentium 4-M @ 2.4 GHz 5 Pentium III-M @ 1.2 GHz Relative efficiency 4 3 2 1 0 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 Always on/maximum clock Laptop mode/adaptive clock Benchmark and power mode Minimum power/minimum clock ArqComp: Desempenho de Computadores 19/21 2006-03-02 MIPS: uma medida com problemas MIPS: million instructions per second MIPS = nº de instruções tempo de execução 10 6 Computadores mais rápidos têm mais MIPS (?) Problemas: 1. não considera a complexidade das instruções: não serve para comparar computadores com instruções diferentes. 2. MIPS pode variar de forma inversamente proporcional ao desempenho. Computador nº instr. freq. CPI T 1/T MIPS A 10 10 4 GHz 1 2,5 0,4 4000 B 8 10 9 4 GHz 1,1 2,2 0,455 3636 ArqComp: Desempenho de Computadores 20/21 2006-03-02
Pontos importantes A medição de desempenho é feita para programas específicos. O tempo total de execução é um resumo consistente do desempenho. Para uma dada arquitectura do conjunto de instruções, o aumento de desempenho pode ser obtido por: aumento da frequência do relógio (sem alteração do CPI); melhoria da organização interna que leve a diminuição do CPI; melhoramentos do compilador (baixa o CPI e/ou o número de instruções); escolha de linguagem/algoritmo (afecta o número de instruções). Cuidado: o melhoramento de um dado aspecto do desempenho de um computador pode não afectar proporcionalmente o desempenho total. ArqComp: Desempenho de Computadores 21/21 2006-03-02