Avaliando e Compreendendo o Desempenho - Respostas Professor: André Luis Meneses Silva E-mail/msn: [email protected] Página: www.dcomp.ufs.br/index.php/docentes:Andre Questão 1 Nosso programa favorito é executado em 10 segundos no computador A, que possui um clock de 4 GHz. Estamos tentando ajudar um projetista de computador a construir uma nova máquina B, que execute esse programa em 6 segundos. O projetista determinou que um aumento substancial na velocidade de clock é possível, mas esse aumento afetará o restante do projeto da CPU, fazendo com que o computador B exija 1,2 vez mais ciclos de clock do que o computador A para esse programa. Que velocidade de clock devemos pedir para que o projetista almeje? Questão 1 Primeiro Encontrar o número de ciclos de clock necessários para o programa A T empode CPUA Ciclos de clock da CPUA Frequência de ClockA Ciclos de clock da CPUA 10 segundos ciclos 9 4 x 10 segundos Ciclos de clock da CPUA 10 segunds x 4 x 109 ciclos 40 x 109 ciclos segundos Questão 1 Calcular o tempo de CPU para B 1,2 x Ciclos de clock da CP UA T empode CP UB Frequência de ClockB 1,2 x 40 x 109 ciclos 6 segundos Frequência de ClockB 1,2 x 40 x 109 ciclos 8 x 109 ciclos Frequência de ClockB 8 GHz 6 segundos segundo Questão 2 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 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 programa e quão mais rápida ela é? esse Questão 2 Sabemos que cada computador executa o mesmo número de instruções para o programa. Vamos chamar esse número de I. Primeiro devemos encontrar o número de ciclos de clock do processador para cada computador: Ciclos de Clock da CPU A I x 2,0 Ciclos de Clock da CPU B I x 1,2 Questão 2 Agora podemos calcular o tempo de CPU para cada processador. T empode CP UA Ciclos de Clock da CP UA x tempodo ciclo de clockA T empode CP UA I x 1,2 x 250ps 500 x I ps Da mesmaforma,para B T empode CP UB I x 1,2 x 500 600 x I ps Logo,o comput adorA é mais rápido. P ara descobrir o quão mais rápido é o comput adorA : Desempenhoda CP UA T empode execuçãoB 600 x I ps 1,2 Desempenhoda CP UB T empode execuçãoA 500 x I ps Questão 3 Um projetista de compilador está tentando decidir entre duas seqüências de código para um determinada máquina. Com base 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? Questão 3 Da figura temos: Ciclos de Clock da CPU1 = (2 x 1) + (1 x 2) + (2 x 3) = 10 Ciclos de Clock da CPU2 = (4 x 1) + (1 x 2) + (1 x 3) = 9 Logo CPU2 é mais rápida Questão 3 T empode CPU Contagemde instruçõesx CPI x T empodo Ciclo de clock ou Contagemde instruçõesx CPI T empode CPU Velocidade de clock Válido, pois Desempenhoda CPU2 T empoda CPU1 10 1,11... estamos Desempenhoda CPU1 T empoda CPU2 9 trabalhando com a mesma cpu, logo, mesma velocidade de clock Questão 3 CPI1 = Ciclos de Clock da CPU1 = 10 = 2 Contagem de instruções1 5 CPI2 = Ciclos de Clock da CPU2 = 9 = 1,5 Contagem de instruções2 6 Questão 4 Dois compiladores diferentes estão sendo testados para uma máquina de 4 GHz com três classes diferentes de instruções: Classe A, Classe B e Classe C, e elas exigem um, dois e três ciclos, respectivamente. Ambos os compiladores são usados para produzir código para um grande software. O código do primeiro compilador usa 5 bilhões de instruções da Classe A, 1 bilhão de instruções da Classe B e 1 bilhão de instruções da Classe C. O código do segundo compilador usa 10 bilhões de instruções da Classe A, 1 bilhão de instruções da Classe B e 1 bilhão de instruções da Classe C. Que seqüência será mais rápida de acordo com o MIPS? Que seqüência será mais rápida de acordo com o tempo de execução? Questão 4 T em pode execução Ciclos de clock da CP U Velocidade de clock Ciclos de clock da CP U n CP I xC i 1 i i Ciclos de clock da CP U1 (5 x 1 1 x 2 1 x 3) x 109 10x109 Ciclos de clock da CP U2 (10 x 1 1 x 2 1 x 3) x 109 15x109 10x109 T em pode Execução1 2,5 segundos 4x109 10x109 T em pode Execução2 3,75segundos 4x109 Logo,compilador1 gera o programamais rápido Questão 4 Mas, segundo o MIP S Cont agemde inst ruções MIP S T empode execução x 106 (5 1 1) x 109 MIP S1 2800 6 2,5 x 10 (10 1 1) x 109 MIP S2 3200 6 3,75x 10 P elo MIP S,compilador2 deveria ser o mais rápido. Questão 5 Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de 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 4 vezes mais rápido?” Que tal torná-lo 5 vezes mais rápido? Questão 5 100 100 4 vezes,x 25 x 4 80 segundos T empode execuçãoapós melhoria 20 segundos n 80 segundos 25 20 segundos n 80 n 16 5 Questão 5 100 100 5 vezes,x 20 x 5 80 segundos T empode execuçãoapós melhoria 20 segundos n 80 segundos 20 20 segundos n 0. n 80, ou seja, impossível Questão 6 Suponha que melhoramos uma máquina fazendo todas as instruções de ponto flutuante serem executadas cinco vezes mais rápido. Se o tempo de execução de algum benchmark antes da melhoria do ponto flutuante é 10 segundos, qual será o aumento de velocidade se metade dos 10 segundos é gasta executando instruções de ponto flutuante? Questão 6 T empode execução após melhoria T empode execução não afet ado ( T empode execução afet ado ) Quantidadede melhoria 5 T empode execução após melhoria 5 6 segundos 5 Desempenhodepois T empode CP Uantes 10 1,667 vezesmais rápido Desempenhoantes T empode CP Udepois 6 Questão 7 Estamos procurando um benchmark para mostrar a nova unidade de ponto flutuante descrita acima e queremos que o benchmark geral mostre um aumento de velocidade de 3 vezes. Um benchmark que estamos considerando é executado durante 100 segundos com o hardware de ponto flutuante antigo. Quanto do tempo de execução as instruções de ponto flutuante teriam que considerar para produzir nosso aumento de velocidade desejado nesse benchmark? Questão 7Desempenho 3 novo Desempenhoantigo T empode CP Uantigo T empode CP Unovo 100 x x 33,3segundos T empode execução após melhoria T empode execução não afetado T empode execução afetado ( ) Quantidadede melhoria x 33,3 y 5 x y 100,x 100 - y 100- y 33,3- y 5 166,5 5y 100 y 66,5 4y y 16,625segundos x 83,375segundos