Você está na página 1de 3

TERMO DE CONDUTA

Declaro assumir o compromisso de confidencialidade e de sigilo escrito, fotográfico


e verbal sobre as questões do exame ou avaliação pessoal que me serão
apresentadas, durante o curso desta disciplina. Comprometo-me a não revelar,
reproduzir, utilizar ou dar conhecimento, em hipótese alguma, a terceiros, e a não
utilizar tais informações para gerar benefício próprio ou de terceiros. Reitero minha
ciência de que não poderei fazer cópia manuscrita, registro fotográfico, filmar ou
mesmo gravar os enunciados que me são apresentados. Declaro, ainda, estar
ciente de que o não cumprimento de tais normas caracteriza infração ética, podendo
acarretar punição de acordo com as regras da minha universidade.
Ciente,

<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.

APX1 2° semestre de 2021.

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.

Indique como os registradores RDM, REM, CI e RI, os barramentos de dados, de controle e de


endereços e a ULA (Unidade Lógica Aritmética) são utilizados.

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?

5. (1,0 pts) Considere as seguintes memórias cache:

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?

Você também pode gostar