avaliando e compreendendo o desempenho - respostas professor: andré luis meneses silva e-mail/msn:...
TRANSCRIPT
Avaliando e Compreendendo o Desempenho - Respostas
Professor: André Luis Meneses SilvaE-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
ciclos 10x 40 segundos
ciclos 10x 4x segunds 10 CPUda clock de Ciclos
segundos
ciclos 10x 4
CPUda clock de Ciclos segundos 10
Clock de Frequência
CPUda clock de Ciclos CPU de Tempo
99A
9
A
A
AA
Questão 1
Calcular o tempo de CPU para B
GHz 8 segundo
ciclos 10x 8
segundos 6
ciclos 10x 40x 1,2 Clock de Frequência
Clock de Frequência
ciclos 10x 40x 1,2 segundos 6
Clock de Frequência
CPUda clock de Ciclosx 1,2 CPU de Tempo
99
B
B
9
B
AB
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 esse
programa e quão mais rápida ela é?
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:
1,2x I CPUda Clock de Ciclos
2,0x I CPUda Clock de Ciclos
B
A
Questão 2
Agora podemos calcular o tempo de CPU para cada processador.
2,1ps Ix 500
ps Ix 600
execução de Tempo
execução de Tempo
CPUda Desempenho
CPUda Desempenho
:A computador o é rápido mais quão odescobrir Para
rápido. mais é A computador o Logo,
ps Ix 600 500x 1,2x I CPU de Tempo
para B forma,mesma Da
ps Ix 500 250psx 1,2x I CPU de Tempo
clock de ciclo do x tempo CPUda Clock de Ciclos CPU de Tempo
A
B
B
A
B
A
AAA
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
1,11... 9
10
CPUda Tempo
CPUda Tempo
CPUda Desempenho
CPUda Desempenhoclock de Velocidade
CPIx instruções de Contagem CPU de Tempo
ou
clock de Ciclo do Tempox CPIx instruções de Contagem CPU de Tempo
2
1
1
2
Válido, pois estamos 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
rápido maisprograma ogera 1 compilador Logo,
segundos 3,754x10
10x10 2 Execuçãode Tempo
segundos 2,54x10
10x10 1 Execuçãode Tempo
101510x 3)x 1 2x 1 1x (10 CPU2da clock de Ciclos
101010x 3)x 1 2x 1 1x (5 CPU1da clock de Ciclos
xCCPI CPUda clock de Ciclos
clock de Velocidade
CPUda clock de Ciclos execução de Tempo
9
9
9
9
99
99
n
1iii
x
x
Questão 4
rápido. mais oser deveria 2 compilador MIPS,Pelo
320010x 3,75
10x 1) 1 (10 MIPS
280010x 2,5
10x 1) 1 (5 MIPS
10x execução de Tempo
instruções de Contagem MIPS
MIPSo segundo Mas,
6
9
2
6
9
1
6
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
16 5
80 n
segundos 20 n
segundos 80 25
segundos 20 n
segundos 80 melhoria após execução de Tempo
25 4
100 x vezes,4
x
100
Questão 5
impossível seja, ou 80, n 0.
segundos 20 n
segundos 80 20
segundos 20 n
segundos 80 melhoria após execução de Tempo
20 5
100 x vezes,5
x
100
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
rápido mais vezes667,16
10
CPU de Tempo
CPU de Tempo
Desempenho
Desempenho
segundos 6 5
5 5 melhoria após execução de Tempo
) melhoria de Quantidade
afetado execução de Tempo(
afetado não execução de Tempo melhoria após execução de Tempo
depois
antes
antes
depois
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 7
segundos 83,375x
segundos 16,625y
4y66,5
y1005y166,55
y-100 y - 33,3
y- 100 x 100, y x
5
x y 33,3
) melhoria de Quantidade
afetado execução de Tempo(
afetado não execução de Tempo melhoria após execução de Tempo
segundos 33,3x
x
100
CPU de Tempo
CPU de Tempo
Desempenho
Desempenho3
novo
antigo
antigo
novo