Apx1 2021 2
Apx1 2021 2
Apx1 2021 2
<Assinatura do aluno>
Fundação CECIERJ - Vice Presidência de Educação Superior a Distância
Curso de Tecnologia em Sistemas de Computação
Disciplina: Organização de Computadores
APX1 2° semestre de 2021
Nome –
Assinatura –
Observações:
1. Respostas sem justificativa não serão consideradas.
2. O envio das avaliações deve ser feito apenas em pdf.
3. Não serão aceitos .docx e .zip.
1. (2,0 pts) Suponha que haja dois valores armazenados na memória, nos endereços 15 e 30.
Escreva um programa que verifique qual é o maior dos dois valores armazenados e armazene
esse valor na posição de memória número 20. Considere que os endereços 15, 20 e 30 estão
em hexadecimal. Além de apresentar seu programa escrito em linguagem de montagem,
apresente também o programa traduzido para linguagem de máquina. Utilize apenas as
instruções apresentadas na aula 4.
2. (1,5 pts) Considere a máquina hipotética apresentada na aula 4. Para cada instrução abaixo,
descreva em detalhes a sua execução conforme é visto na aula 4:
a. (0,5 ponto) STR 004: esta instrução armazena no endereço 004 o conteúdo do
acumulador.
b. (1,0 ponto) JP 005: (jump positive) esta instrução pula (jump) para o endereço 005 caso
ACC > 0.
3. (1,5 pts) Descreva, em linhas gerais, o funcionamento da técnica de pipelining. Além disso,
explique a importância dessa técnica, exemplificando os ganhos de um pipeline de cinco
estágios em comparação com a execução sequencial.
4. (4,0 pts) Considere o seguinte programa
a=[1,2,3,4]
max=4
for i=1:max % varre os números de 1 a max, de 1 em 1
for j=1:max % varre os números de 1 a max, de 1 em 1
a(j) = a(j)^i
end
end
No programa acima, o sinal de ^ significa elevado, ou seja, a(j)^i faz a operação de elevar a(j)
à potência i.
a. (1,0 ponto) Assuma que a memória cache tem tamanho 2, ou seja, consegue
armazenar conteúdos de apenas 2 endereços de memória (por exemplo, 2 elementos
do vetor a). Em particular, assuma também que a cache é usada exclusivamente para
armazenar elementos do vetor a. Indique, ao longo da execução do programa acima,
quais são as posições do vetor a armazenadas em cache, e quais os acessos à cache
que geram um cache hit (acerto na cache). Nesse último caso, indique se o cache hit se
deve à localidade espacial ou localidade temporal. Atenção! Você pode assumir uma
visão otimista da realidade, segundo a qual as posições de memória armazenadas na
cache são sempre as mais favoráveis.
b. (1,0 ponto) Altere o programa para que ele gere a mesma saída, mas de tal forma que
o número de cache hits aumente. Explique, com suas palavras, porque a sua alteração
é útil, e como ela funciona, usando os conceitos de localidade espacial e temporal. O
que ocorre com o número de acertos na cache na medida em que max aumenta, no
programa original acima? E no programa modificado?
c. (1,0 ponto) Programadores precisam entender o conceito de hierarquia de memória?
Explique o conceito de hierarquia de memória, e indique motivos para os quais
programadores precisam entender o conceito de hierarquia de memória, usando o
exemplo do programa acima.
d. (1,0 ponto) Comente sobre a possibilidade de eventualmente os compiladores
automaticamente resolverem alguns desafios associados à hierarquia de memória sem
a necessidade de ajuda dos programadores. Em particular, quando o programa acima
for convertido para a linguagem de máquina, o compilador teria como otimizar a
geração de código de máquina para melhorar o seu desempenho? Como?
a. (0,5 ponto) Mapeamento totalmente associativo: os n bits mais significativos são usados para
formar o campo “tag”. Por que usam-se os n bits mais significativos, e não os n bits menos
significativos?
b. (0,5 ponto) Mapeamento direto: cada bloco de memória principal só pode ser armazenado em
determinada linha (ou bloco) da cache. Qual dos tipos de mapeamento é mais restritivo? O
mapeamento totalmente associativo ou o mapeamento direto? Quais as vantagens e
desvantagens do mapeamento direto e do mapeamento totalmente associativo?