Você está na página 1de 8

Primeira Lista de Exercícios

1) Uma equipe de engenheiros está desenvolvendo um novo processador com as seguintes


características: clock de 3GHz e CPI igual a 1.5. Durante uma das fases de desenvolvimento, um
benckmark foi executado em 10 segundos neste novo processador. A equipe de desenvolvimento não
ficou satisfeita com os resultados, visto que o principal concorrente executa o mesmo benchmark em 8
segundos. O chefe da equipe propôs uma alteração na arquitetura para tentar reduzir o tempo de
execução do benchmark para 7 segundos, mas isso levará a um aumento de 20% no CPI. A alteração
também demandará o aumento de sua frequência de clock. A alteração proposta não requer qualquer
alteração nos softwares que serão executados neste processador. Um dos membros da equipe
argumentou que o dissipador de calor do processador não será capaz de suportar o calor dissipado caso
o novo clock passe de 4.5 GHz. Calcule o novo clock do processador, de modo a determinar se a
alteração proposta no projeto poderá ou não ser adotada.
2 a 4) Você faz parte de um grupo de alunos que está participando de uma competição universitária
para desenvolvimento de um processador embarcado. O regulamento da competição prevê que o grupo
vencedor será aquele que produzir o processador com o menor produto entre o custo (em US$) e o
tempo de execução (em ns) até o último mês do ano. A cada mês é permitida a cada equipe postar uma
única modificação em seu projeto. O site do torneio então consolida e publica a classificação atualizada
das equipes, apresentando os custos dos equipamentos e o seu desempenho. O desempenho é avaliado
pelo tempo de execução de um microbenchmark, um aplicativo composto por 2000 instruções, sendo
750 instruções aritméticas, 250 escritas em memória, 500 leituras em memória e 500 desvios.

2) Assumindo que a sua equipe desenvolveu um processador de 2GHz capaz de executar as instruções
aritméticas em 1 ciclo de clock, leituras e escritas em memória em 5 ciclos de clock e desvios em 2
ciclos de clock, qual o tempo de execução do microbenchmark no processador de sua equipe?
3) Qual o CPI do microbenchmark, quando executado no processador de seu grupo?
4) No último mês da competição, o grupo que lidera a competição implementou um sistema com custo
de 1000 dólares e que executa o microbenchmark em 2500ns. Todas as equipes já postaram suas
modificações, e falta apenas a sua para saber quem será o grande vencedor da competição! Um dos
membros do seu grupo, após estudar as características do microbenchmark, propôs uma alteração na
hierarquia de memória que permite reduzir para 2 o número de ciclos necessários para ler um dado da
memória. A alteração, contudo, vai acarretar em um aumento de 10% no custo do processador de seu
grupo, que atualmente custa US$1100. Com essa alteração, vocês serão capazes de vencer a
competição?

5) Considere um programa escrito na linguagem de programação interpretada Python que executa em


210 segundos, dos quais 90 segundos são gastos com a execução de instruções aritméticas com inteiros.
Um grupo de pesquisadores sugeriu uma forma de reduzir o tempo de execução deste código,
substituindo o processo de interpretação das instruções aritméticas com inteiros por um processo que
envolve a compilação dessas instruções. Qual deverá ser o percentual de redução no tempo de execução
das instruções aritméticas com inteiros, decorrente da compilação, se quisermos que o tempo total de
execução da aplicação possa ser reduzido em 20%?

6) Represente o seguinte fragmento de código, escrito em assembly MIPS, em uma única linha de
código na linguagem de programação C:
add $t0, $s6, $s0
add $t1, $s7, $s1
lw $t3, 0($t0)
addi $t2, $t0, 4
lw $t0, 0($t2)
add $t0, $t0, $t3
sw $t0, 0($t1)

Considere em sua representação que os registradores $s0, $s1, $s2, $s3, e $s4 armazenam,
respectivamente, as variáveis i, j,f, g e h da aplicação, e que os registradores $s6 e $s7 armazenam
o endereço base dos vetores A e B.

7) Represente a seguinte instrução assembly em código de máquina MIPS: add $t1, $s7, $s1

8) Transforme a seguinte função escrita em C na linguagem assembly MIPS:


int addNumbers(int n) {
if (n != 0)
return n + addNumbers(n - 1);
else
return n;
}

Você também pode gostar