Organização de Computadores Marcelo Lobosco DCC/UFJF Avaliando e Compreendendo o Desempenho Aula 09 Agenda Avaliando e Compreendendo o Desempenho Introdução Definindo Desempenho Medindo o Desempenho Desempenho da CPU e seus Fatores Introdução Como medir, informar e resumir o desempenho Principais fatores que determinam o desempenho Desempenho do hardware é fundamental para eficiência de todo o sistema Avaliar o desempenho pode ser complicado Escala e complexidade do software, técnicas de melhoria de desempenho do hardware Introdução Para diferentes tipos de aplicações, diversas medições de desempenho podem ser apropriadas Diferentes aspectos podem ser os mais significativos na determinação do desempenho geral Veja através da propaganda de marketing Vital para entender a motivação organizacional subjacente Introdução Por que alguns hardwares são melhores do que outros para diferentes programas? Que fatores do desempenho de sistema são relacionados ao hardware? (por exemplo, precisamos de uma nova máquina ou de um novo sistema operacional?) Como o conjunto de instruções da máquina afeta o desempenho? Definindo Desempenho A questão do desempenho pode ser sutil Que avião tem melhor desempenho? O quanto mais rápido é o Concorde comparado com o 747? O quanto maior é o 747 do que o Douglas DC-8? Definindo Desempenho Vencedores Capacidade: Boeing 747 Autonomia: Douglas DC-8-50 Velocidade: BAC/Sud Concorde Vazão: Boeing 747 Desempenho pode ser definido de várias formas diferentes Definindo Desempenho Tempo de resposta ou execução (latência) Quanto tempo leva para meu trabalho ser realizado? Quanto tempo preciso esperar para a consulta ao banco de dados? Tempo necessário para o computador completar uma tarefa Importante para usuário de computador individual Vazão (throughput) Quantos trabalhos a máquina pode realizar ao mesmo tempo? Qual é a velocidade de execução média? Quanto trabalho está sendo feito? Quantidade total de trabalho feito em um determinado tempo Importante para gerentes de CPDs Definindo Desempenho Questão: As seguintes mudanças em um sistema computacional aumentam a vazão, diminuem o tempo de resposta ou as duas coisas? Se atualizarmos uma máquina com um novo processador? Se incluirmos processadores adicionais em um sistema multiprocessado usado para tarefas distintas? Definindo Desempenho Foco em tempo de resposta Para maximizar o desempenho, devemos minimizar o tempo de execução de uma tarefa: 1 Desempenho X = Tempo de Execução X “Desempenho de X é n vezes superior a Y”: Desempenho X Desempenho Y =n Definindo Desempenho Se X é n vezes mais rápido que Y, então o tempo de execução de Y é n vezes maior do que em X: Desempenho X Desempenho Y = Tempo de Execução Y Tempo de Execução X =n Definindo Desempenho Exemplo: Se computador A executa um programa em 10s e B o executa em 15s, o quanto A é mais rápido do que B? Desempenho A Desempenho B = Tempo de Execução B Tempo de Execução A 15 =1,5 10 A é 1,5 vezes mais rápido do que B. =n Medindo o Desempenho Tempo de relógio, decorrido ou de resposta Conta tudo (acessos a disco e a memória, E/S etc.) Número útil, mas normalmente não é ideal para fins de comparação Tempo de CPU Tempo real que a CPU gasta computando uma tarefa específica Não conta E/S ou tempo gasto executando outros programas Pode ser dividido em tempo de sistema e tempo de usuário Medindo o Desempenho Ciclos de clock Tempo para cada período de clock Velocidade de clock (freqüência) = ciclos por segundo (1Hz = 1 ciclo/segundo) Velocidade de clock e tempo de ciclos são inversos! Exemplo: um clock de 4Ghz possui um tempo de ciclo de 1 / (4 x 109) = 0,25 x 10-9 = 250 x 10-12 = 250 ps Medindo o Desempenho Diferentes aplicações são sensíveis a diferentes aspectos do desempenho de um sistema Servidores => desempenho de E/S Tempo decorrido Para melhorar o desempenho Que métrica é importante Procurar gargalos medindo execução Medindo o Desempenho Questão: O desempenho do computador C é 4 vezes melhor do que o computador B, que leva 28s para executar uma determinada aplicação. Quanto tempo C levará para executar essa aplicação? Desempenho da CPU e seus Fatores Desempenho examinado usando diferentes métricas Se métricas pudessem ser relacionadas, poderíamos determinar os efeitos de uma mudança de projeto no desempenho Fórmula que relaciona métricas de CPU: Tempo de execução da CPU para um programa = Ciclos de clock da CPU para um programa X Tempo do ciclo de clock Desempenho da CPU e seus Fatores Outra alternativa (velocidade de clock e tempo de ciclo são inversos): Tempo de execução da CPU para um programa = Ciclos de clock de CPU para um programa velocidade de clock Como melhorar o desempenho? Reduzindo a duração do ciclo de clock Reduzindo o número de ciclos de clock necessário para um programa Desempenho da CPU e seus Fatores Exemplo: Um programa é executado em 10s no computador A, com clock de 4GHz. Um computador B está sendo construído para executar este programa em 6s. Entretanto, B exigirá 1,2 vezes mais ciclos de clock do que A. Qual a velocidade de clock necessária para B? Desempenho da CPU e seus Fatores Primeiro passo: quantos ciclos de CPU são necessários em A? Tempo de CPU A= Ciclos de clock da CPU A ∴ Velocidade de clock A Ciclos de clock da CPU A 10 segundos= ∴ 9 ciclos 4 x 10 segundo 9 ciclos Ciclos de clock da CPU A=4 x 10 x 10 segundos∴ segundo Ciclos de clock da CPU A=4 x 1010 ciclos Desempenho da CPU e seus Fatores Tempo de CPU para B: Tempo de CPU B = 1,2 x Ciclos de clock da CPU A Velocidade de clock B 1,2 x 4 x 10 10 ciclos 6 segundos= ∴ Velocidade de clock B 10 4,8 x 10 ciclos Velocidade de clock B = ∴ 6 segundos 8 x 109 ciclos Velocidade de clock B = = 8 GHz segundo ∴ Desempenho da CPU e seus Fatores Poderíamos considerar que o número de ciclos é igual ao número de instruções? 6ª. 5ª. 4ª. 3ª. Instrução 2ª. Instrução 1ª. Instrução Tempo Essa suposição é incorreta! Diferentes instruções levam a diferentes períodos em diferentes máquinas. Desempenho da CPU e seus Fatores Multiplicação leva mais tempo do que adição Operações de ponto flutuante levam mais tempo do que operações com inteiros Acessar memória leva mais tempo do que acessar registradores Importante: mudar o tempo de ciclo normalmente muda o número de ciclos necessários para várias instruções Desempenho da CPU e seus Fatores Tempo de execução pode ser expresso em função do número de instruções executadas: Ciclos de clock da CPU = Instruções para um programa x Média dos ciclos de clock por instrução Média dos ciclos de clock por instrução => CPI CPI permite comparar duas implementações diferentes do mesmo conjunto de instruções Desempenho da CPU e seus Fatores Exemplo: Suponha que tenhamos duas implementações da mesma arquitetura do conjunto de instruções (ISA). Para um determinado programa, A máquina A tem um tempo de ciclo de clock de 250 ps e uma CPI de 2,0 e a máquina B tem um tempo de ciclo de clock de 500 ps e uma CPI de 1,2 Que máquina é mais rápida para esse programa e o quanto? Desempenho da CPU e seus Fatores Solução: Mesmo número de instruções (I) Número de ciclos de clock para cada computador: Ciclos de clock da CPUA = I x 2,0 Ciclos de clock da CPUB = I x 1,2 Tempo de CPU para cada computador: Tempo de CPUA = Ciclos de Clock da CPUA x Tempo de Ciclo de ClockA => I x 2,0 x 250ps = (500 x I)ps Tempo de CPUB = Ciclos de Clock da CPUB x Tempo de Ciclo de ClockB => I x 1,2 x 500ps = (600 x I)ps Desempenho da CPU e seus Fatores A é mais rápido, mas o quanto? Desempenho A = Tempo de Execução B Desempenho B Tempo de Execução A (600 x I )ps =1,2 (500 x I )ps =n∴ Desempenho da CPU e seus Fatores Fórmula de desempenho em função do número de instruções, CPI e tempo de ciclo de clock: Tempo de CPU = Contagem de instruções x CPI x Tempo de ciclo de clock ou Contagem de instruções x CPI Tempo de CPU = velocidade de clock Três fatores chaves para desempenho Desempenho da CPU e seus Fatores Como determinar esses valores? Tempo de CPU => execução do programa Tempo de ciclo de clock => manuais Contagem de instruções => ferramentas de trace de execução, simulador de arquitetura, contadores de hardware CPI => contadores de hardware Varia por aplicação e entre implementações do mesmo conjunto de instruções Desempenho da CPU e seus Fatores É possível calcular ciclos de clock da CPU usando contagem de ciclos individuais: n Ciclos de clock da CPU =∑ (CPI i x Ci ) i=1 onde Ci é a contagem do número de instruções da classe i executadas, CPIi é a média dos ciclos por instrução para a classe i e n é o número de classes de instrução CPI geral depende do número de ciclos para cada tipo de instrução e de suas freqüências de execução. Desempenho da CPU e seus Fatores Componente Algoritmo Afeta o quê? Contagem de instruções, possivelmente CPI Linguagem de Programação Contagem de instruções, CPI Compilador Contagem de instruções, CPI Conjunto de Instruções Contagem de instruções, velocidade de clock, CPI 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? Próxima Aula... Avaliando e Compreendendo o Desempenho Avaliando o Desempenho Benchmark SPEC Falácias e Armadilhas