Buscar

ORGANIZAÇÃO DE COMPUTADORES- semana 3

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ORGANIZAÇÃO DE COMPUTADORES – semana 3
EXERCÍCIO 1
Assinale Verdadeiro ou Falso. Justifique as alternativas falsas.
I Sobre organizações de computadores pode-se afirmar que: (i) em um processador com organização baseada em acumulador, um dos operandos está no registrador acumulador obrigatoriamente; (ii) em um processador com organização do tipo load/store é possível realizar operações aritméticas com um operando na memória.
II Uma arquitetura CISC (Complex Instruction Set Computer) se caracteriza por ter instruções mais complexas, objetivando diminuir o número de instruções que um programa necessita para sua implementação.
Em arquiteturas RISC (Reduced Instruction Set Computer) tipicamente há pouco trabalho para o compilador na transformação de instruções de linguagem de alto nível para instruções de máquina. III Um conjunto de instruções mais complexo implica em desempenho melhor.
IV Programas escritos em linguagem assembly terão obrigatoriamente melhor desempenho.
V Um dos princípios de projeto do MIPS é que simplicidade favorece a regularidade; por exemplo, todas as operações aritméticas tem a mesma forma, o que aumenta o desempenho. Outro princípio de projeto do MIPS é que menor é mais rápido, e está relacionado ao uso de banco de registradores e seu tamanho. Um outro princípio de
projeto do MIPS está relacionado ao uso do campo imediato nas instruções; como constantes pequenas são comuns, utilizar o imediato evita o uso de instruções de acesso a memória.
Respostas:
I.	Falso.: A afirmativa (i) está correta. Na afirmativa (ii), o correto seria dizer que: Num processador com organização do tipo load/store, também conhecida como organização registrador-registrador, as operações aritméticas utilizam exclusivamente operandos armazenados em registradores, portanto não é possível efetuar essas operações com um operando na memória.
II.	Falso.: A afirmação sobre a arquitetura CISC está correta, mas, devido ao reduzido conjunto de instruções das arquiteturas RISC, normalmente são necessárias várias instruções para executar o que apenas uma instrução de arquitetura CISC seria capaz e, dessa forma, o trabalho do compilador para gerar o código é maior.
III.	Falso.: Não necessariamente, pois o desempenho está ligado à velocidade da execução do programa. Instruções mais complexas permitem escrever um código com menor número de instruções, mas normalmente as instruções complexas tomam mais ciclos de clock para serem executadas.
IV.	Falso.: Os compiladores evoluíram muito desde que foram inicialmente desenvolvidos, sendo que atualmente possuem diversos níveis de otimização de código e são capazes de produzir programas muito eficientes. Um programa escrito diretamente em linguagem assembly, pensando-se na melhor otimização possível, pode ter melhor desempenho que um programa compilado, mas se o programador escrever um código ineficiente, o programa compilado pode sair-se melhor.
V Verdadeiro
EXERCÍCIO 2
Considere o seguinte trecho de código para o MIPS:
lw $v1, 0($a0)
addi $v0, $v0, 1
sw $v1, 0($a1)
addi $a0, $a0, 1
a) Quantas vezes a memória de instruções é acessada? Explique.
b) Quantas vezes a memória de dados é acessada? Explique.
a) 4 vezes, pois para cada linha de código o processador busca a instrução na memória, decodifica e executa.
b) 2 vezes, nas instruções load word (lw) e store word (sw), respectivamente, ler da memória e escrever na memória.
EXERCÍCIO 3
As questões a seguir tratam da tradução de C para MIPS. Assuma que as
variáveis g, h, i e j são dadas e podem ser consideradas inteiros de 32 bits
como declarado em um programa em C.
a) f = g + h + i + j;
b) f = g + (h + 5);
I Para as linhas em C acima, qual o código assembly MIPS correspondente?
Use o número mínimo de instruções assembly MIPS.
II Para as linhas em C acima, quantas instruções em assemblyMIPS são
necessárias para executar cada linha?
III Se as variáveis f, g, h, i e j tem valores 1, 2, 3, 4 e 5, respectivamente,
qual o valor 1nal de f?
a)f = g + h + i + j;
add $t0, $s1, $s2 # registrador temporário $t0 contém g + h
add $t1, $s3, $s4 # registrador temporário $t1 contém i + j
add $s0, $t0, $t1 # f recebe $t0 + $t1, que é g + h + i + j
Número de instruções: 3
Valor final: f = (2 + 3) + (4 + 5) = 14 
b) f = g + (h + 5);
addi $t0, $s2, 5 # registrador temporário $t0 contém h + 5
add $s0, $s1, $t0 # f recebe $s1 + $t0, que é g + (h + 5)
Número de instruções: 2
Valor final: f = 2 + (3 + 5) = 10
EXERCÍCIO 4
As questões a seguir tratam da tradução de MIPS para C. Assuma que as variáveis g, h, i e j são dadas e podem ser consideradas inteiros de 32 bits como declarado em um programa em C.
a) add f, g, h
b) addi f, f, 1
add f, g, h
I Para as linhas em assembly MIPS acima, qual o código em C correspondente?
II Se as variáveis f, g, h, e i tem valores 1, 2, 3 e 4, respectivamente, qual
o valor 1nal de f?
a) f=g+h;
b) f=f+1;
 f=g+h;
ii.
a) f=2+3;=5
b) f=1+1;
 f=2+3 
 f=5

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais