Logo Passei Direto
Buscar
Material

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

avaliacoes de semestres anteriores/2018/Avaliacao1_2014_1_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1
a
. Prova – 25 pontos – 12/03/2014 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Conceitos abordados no capítulo 1 e 2 do livro texto de SPP. 
Relacione itens da primeira coluna com itens da segunda coluna. 
Itens em branco da segunda coluna deverão ser preenchidos com um traço. Ex.: ( - ). 
Cada item da primeira coluna pode aparecer em um ou mais itens da segunda coluna. 
(Valor total: 7 pontos, sendo 0,5 ponto para cada relacionamento correto) 
 
A – Sistema Embutido ( - ) – Gera o código Assembly. 
B – Instrução move ( C ) – Gera sequencia de zeros e uns. 
C – Montador ( H ) – Disco rígido 
D – sll ( B ) – Reconhecida pelo Montador 
E – Ciclo de Instrução ( A ) – Tocador de MP3. 
F – CISC ( - ) – Instrução do tipo I do MIPS. 
G – PC – Program Counter ( E ) – Sequencia de passos que uma CPU executa. 
H – Periférico ( - ) – Sequencia de instruções da ISA do MIPS. 
 ( - ) – Medida de desempenho de CPUs. 
 ( F ) – CPU 80386 da Intel 
 ( - ) – CPU ARM 9 
 ( D ) – Instrução do MIPS 
 ( G ) – Registrador 
 ( G ) – Participa do passo da busca de instrução. 
 
 
 
2 
 
QUESTÃO 2. Assunto: Desempenho. (Valor total: 6 pontos). 
As tabelas 1 e 2 apresentam dados de medidas obtidas para códigos de máquina gerados a partir de um mesmo código fonte para os 
computadores 1 e 2 respectivamente. Sabendo-se que a CPU do computador 1 funciona a uma frequência de 250 MHz e que a CPU 
do computador 2 funciona a uma frequência de 200 MHz, pede-se: 
 
a) Qual é a CPI média para cada conjunto, código de máquina – CPU (2 casas decimais)? Justifique sua resposta mostrando os 
cálculos realizados. 
 
CPI média CPU 1 = (100 x 2 + 200 x 1,5 + 400 x 1,0)/700 = 900/700 = 1,29 
CPI média CPU 2 = (200 x 1,5 + 200 x 1,0 + 150 x 1,2)/550 = 680/550 = 1,24 
 
b) Qual das duas CPUs demanda mais memória de programa para executar seus respectivos códigos de máquina, pressupondo-se 
que todas instruções tem o mesmo tamanho 32 bits? Justifique sua resposta mostrando os cálculos realizados. 
 
CPU 1 = 100 + 200 + 400 = 700 instruções 
CPU 2 = 200 + 200 + 150 = 550 instruções 
Portanto a CPU 1 ocupa mais memória de programa que a CPU 2. 
 
c) Qual o tempo de execução do código de máquina nas CPUs dos computadores 1 e 2 respectivamente? Justifique sua resposta 
mostrando os cálculos realizados. 
 
T (CPU 1) = (100 x 2 + 200 x 1,5 + 400 x 1,0)/250 MHz = 900 / 250 MHz = 3,6 us ou 3,6 x 10
-6
 s 
T (CPU 2) = (200 x 1,5 + 200 x 1,0 + 150 x 1,2)/200 MHz = 680 / 200 MHz = 3,4 us ou 3,4 x 10
-6
 s 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tabela 1 
 Instrução A Instrução B Instrução C 
Quantidade de Instruções 100 200 400 
CPI 2 1,5 1,0 
 
Tabela 2 
 Instrução D Instrução E Instrução F 
Quantidade de Instruções 200 200 150 
CPI 1,5 1,0 1,2 
 
3 
 
QUESTÃO 3. Assunto: Tradução de código em linguagem de alto nível para o Assembly do MIPS e Procedimentos no MIPS. 
Dado o trecho de código em linguagem C no quadro 1, utilize o cartão de referência do conjunto de instruções do MIPS para 
desenvolver essa questão. (Valor total: 6 pontos) 
 
Quadro 1 
int comp( int n, int m ) 
{ 
 int soma=0; 
 while(n < m ) 
 { 
 soma += m; 
 n++; 
 } 
 return soma; 
} 
 
void main() 
{ 
 int j=0, k = 5; 
 int vetor[] = {1, 2, 4, 8, 0} 
 while (vetor[j]) 
 { 
 k = comp(k, vetor[j]); 
 j++; 
 } 
} 
 Escreva o programa em Assembly do MIPS que representa 
fielmente o programa em linguagem C do quadro 1. 
$a0 – n; $a1 – m; $v0 – soma; $t0 – aux p/ calc do desvio; $s0 – j; 
$s1 – k; $s2 – vetor; $t1 - &(vetor+desloc); $t2 - *(vetor+desloc). 
 
Comp: Add $v0, $zero, $zero 
Loop: Slt $t0, $a0, $a1 
 Beq $t0, $zero, FIM_COMP 
 Add $v0, $v0, $a1 
 Addi $a0, $a0, 1 
 J Loop 
FIM_COMP: Jr $ra 
MAIN: Add $s0, $zero, $zero 
 Addi $s1, $zero, 5 
LoopMain: Add $t1, $s0, $s2 
 Lw $t2, 0($t1) 
 Beq $t2, $zero, FIM_MAIN 
 Add $a0, $s1, $zero 
 Add $a1, $t2, $zero 
 Jal Comp 
 Add $s1, $v0, $zero 
 J LoopMain 
FIM_MAIN: Jr $ra 
 
 
 
 
 
 
 
 
 
 
 
 
4 
 
QUESTÃO 4. Assunto: Linguagem de máquina do MIPS. (Valor total: 6 pontos) 
É dado logo abaixo um trecho de código em Assembly do MIPS. 
 
Inicio: addi $s0, $zero, 10 8 0 16 10 
srl $s1, $s0, 2 2 16 17 2 
ori $s2, $s1, 15 13 17 18 15 
add $s3, $s2, $s1 0 17 18 19 0 32 
addi $s4, $s3, -6 8 19 20 -6 
addiu $s5, $zero, 65536 9 0 21 65536 
slt $t0, $s0, $s4 0 18 20 8 0 42 
beq $t0, $zero, desvio 4 0 8 2 
add $s0, $s0, $s1 0 16 17 16 0 32 
j fim 2 0000 0000 0000 0001 0000 0001 1000 = (8+16+4096) = 4120 
desvio: sub $s1, $s1, $s0 0 17 16 17 0 34 
sw $s1, 4($s5) 43 21 17 4 
fim: sw $s2, 0($s5) 43 21 18 0 
 
 
 
 
a) Escreva o código de máquina correspondente usando o quadro ao lado do código dado. Com a finalidade de facilitar seu 
trabalho, cada linha do quadro tem 32 quadrados, cada quadrado representa 1 bit da instrução de máquina. Reforce a 
caneta as posições que delimitam o limite de cada campo de bits da instrução de máquina corespondente. E escreva dentro 
de cada campo o valor em decimal que cada campo deverá assumir, obedecendo a correspondência de cada linha de 
instrução do código Assembly. O programa começa no endereço 0x00001000. (3 pontos) 
 
 
b) Qual o valor em hexadecimal do registrador PC após a decodificação da instrução slt? (1 ponto) 
0x0000101C 
 
 
c) Qual o valor em hexadecimal do conteúdo do registrador $t0 após a execução da instrução slt? (1 ponto) 
0x00000001 
 
 
d) Em qual endereço da memória de dados (em hexadecimal) será armazenado o conteúdo do registrador $s2? (1 ponto) 
0x00010000 (65536 em decimal) 
 
 
 
 
avaliacoes de semestres anteriores/2018/Avaliacao1_2014_2_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1
a
. Prova – 25 pontos – 03/09/2014 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÕES de 1 a 5. Assuntos: Conceitos abordados no capítulo 1 e 2 do livro texto de SPP. Questões objetivas. Valor: 1 ponto 
cada. 
QUESTÕES de 6 a 15. Assuntos: Conceitos abordados no capítulo 2 do livro texto. Valor: 1 ponto cada. 
QUESTÃO 16. Assunto: Tradução de código em linguagem de alto nível para o Assembly do MIPS e Procedimentos no MIPS. 
Dado o trecho de código em linguagem C no quadro 2, utilize o cartão de referência do conjunto de instruções do MIPS para 
desenvolver essa questão. (Valor total: 10 pontos) 
 
QUESTÃO 1. Assinale a afirmativa correta: 
a) Computador é sinônimo de processador. 
b) O projeto de um computador baseado no conceito de programa armazenado não é mais adotado nos computadores 
mais modernos. 
c) O projeto de um computador baseado no conceito de programa armazenado tem como princípio a implementação de 
um conjunto de instruções. 
d) Arquitetura e organização de computadores representa um único conceito. 
 
QUESTÃO 2. É correto afirmar sobre o conceito de Ciclo de Instrução que: 
a) Determina uma sequencia de instruções seja executada pelo processador. 
b) Determina quantas instruções do conjunto de instrução podem ser executadas pelo processador. 
c) Determina o número mínimo e máximo de passos que cada instrução executa no processador.
d) Determina uma sequencia de passos que cada instrução do conjunto de instruções do processador executa. 
 
QUESTÃO 3. É correto afirmar que uma Arquitetura de um Conjunto de Instruções de uma CPU é um conceito que engloba: 
a) As formas como são implementadas as instruções no hardware. 
b) As formas de endereçamento da CPU. 
c) As formas de se contar a quantidade de ciclos por instrução de um determinado programa. 
d) As formas de se contabilizar o número de período de clocks que cada instrução leva para ser executada. 
 
QUESTÃO 4. É correto afirmar sobre tempo de execução de um programa em uma CPU que: 
a) Quanto maior for o número médio de ciclos por instrução de um programa, maior será o tempo de execução do mesmo 
pela CPU. 
b) Quanto maior for a frequência do clock da CPU, maior será o tempo de execução do programa na CPU. 
c) Quanto menor for a quantidade de instruções, maior será o tempo de execução do programa na CPU. 
d) Quanto maior for o período do clock da CPU, menor será o tempo de execução do programa na CPU. 
 
QUESTÃO 5. De acordo com a Lei de Moore, podemos afirmar que: 
a) A quantidade de transistores dentro de um chip dobra a cada 12 meses aproximadamente. 
b) A quantidade de transistores dentro de um chip é diretamente proporcional ao quadrado da área que ele ocupa. 
c) A quantidade de transistores dentro de um chip é inversamente proporcional ao quadrado da área que ele ocupa. 
d) A quantidade de transistores dentro de um chip dobra a cada 18 meses aproximadamente 
2 
 
As questões de número 6 a 15 se referem ao código assembly do MIPS do quadro 1. 
Observação importante: Suponha que a primeira instrução da função Main fora montada no endereço 0x0400 0010 da memória 
de programa do MIPS. 
 
Main: add $s0, $zero, $zero 
addiu $s1, $zero, 65535 
addi $s2, $zero, -1 
addi $s3, $zero, 15 
For: slt $t0, $s0, $s1 
bne $t0, $zero, Fim 
add $s3, $s3, $s0 
add $t1, $s0, $s2 
add $s4, $s4, $t1 
sll $s3, $s3, 1 
addi $s0, $s0, 1 
j For 
Fim: jr $ra 
Quadro 1 – Programa em Assembly do MIPS para responder as questões de número 6 a 15. 
 
 
QUESTÃO 6. Qual o valor guardado no registrador $s3 (em hexadecimal) assim que o valor contido em $s0 for igual a 3 (em 
decimal)? 
Como $s0 nunca assumirá o valor 3, não há como responder a essa questão. 
 
QUESTÃO 7. Qual o valor guardado no registrador PC (em hexadecimal) no momento que a instrução addiu é executada? 
0x0400 0018 
 
QUESTÃO 8. Qual o valor guardado no registrador de instruções (em hexadecimal) no momento que a instrução addiu esta 
sendo executada? 
001001 00000 10001 1111111111111111 = 0010 0100 0001 0001 1111 1111 1111 1111 = 0x2411FFFF 
 
QUESTÃO 9. Qual o valor guardado no registrador de instruções (em hexadecimal) no momento que a instrução addi $s2, 
 $zero,-1 esta sendo executada? 
 
001000 00000 10010 1111111111111111 = 0010 0000 0001 0010 1111 1111 1111 1111 = 0x2012FFFF 
 
QUESTÃO 10. Qual o valor (em decimal) do campo imediato da instrução bne? Explique como chegou a esse número. 
6. Esse número representa o deslocamento em quantidade de palavras a partir da próxima instrução imediatamente após o bne. 
 
QUESTÃO 11. Qual o valor (em hexadecimal) do campo de endereço da única instrução do tipo J do programa dado? 
Endereço do For: 0x0400 0020. Transformando o endereço do For em binário fica: 0000 0100 0000 0000 0000 0000 0010 0000 
Campo de endereço da instrução J tem 26 bits. O endereço em hexadecimal ficará assim: 0001 0000 0000 0000 0000 0000 1000, 
ou seja, 0x1000008 
 
QUESTÃO 12. Qual o valor (em hexadecimal) do endereço o rótulo Fim? 
0x0400 0040 
QUESTÃO 13. Qual o valor do campo OPCODE (em decimal) da instrução jr $ra? 
 zero 
QUESTÃO 14. Cite quantas e quais formas de endereçamento diferentes existem no programa dado? 
4 formas: endereçamento por registrador, endereçamento imediato, endereçamento pseudo-direto, endereçamento relativo ao 
PC. 
 
QUESTÃO 15. Qual o valor de $s3 (em decimal) após a primeira vez que a instrução sll $s3, $s3, 1 é executada? 
Como a instrução sll nunca será executada, não há como responder a essa questão. 
3 
 
QUESTÃO 16. Assunto: Tradução de código em linguagem de alto nível para o Assembly do MIPS e Procedimentos no MIPS. 
Dado o trecho de código em linguagem C no quadro 2, utilize o cartão de referência do conjunto de instruções do MIPS para 
desenvolver essa questão. (Valor total: 10 pontos). 
 
Quadro 2 – Trecho de código em C 
int soma(int n) 
{ 
 if(n == 1) 
 return 1; 
 else 
 return ( n + soma(n-1) ); 
} 
 
int main() 
{ 
 int vetor[]={1,2,3,4}; 
 int k, i=3; 
 while(i > -1) { 
 k += soma(vetor[i]); 
 --i; 
 } 
} 
 Observação: Use na sua solução essa associação de 
variáveis/registradores. Considere que os elementos de vetor 
estejam já armazenados na memória de dados. 
 
$a0 – n; $v0 – valor retornado pela função soma; $s0 – i; $s1 – k; 
$s2 – &vetor; $t2 – &(vetor+desloc); $t3 – *(vetor+desloc). 
 
soma: addi $sp, $sp, -8 
 sw $a0, 4($sp) 
 sw $ra, 0($sp) # até aqui +2 pts. 
 addi $t0, $zero, 1 
 bne $t0, $a0, else 
 add $v0, $a0, $zero 
 addi $sp, $sp, 8 
 jr $ra # até aqui +2pts. 
 addi $a0, $a0, -1 
else: jal soma 
 lw $ra, 0($sp) 
 lw $a0, 4($sp) 
 addi $sp, $sp, 8 
 add $v0, $a0, $v0 
 jr $ra # até aqui + 2pts. 
main: addi $s0, $zero, 3 
loop: slti $t1, $s0, 0 
 bne $t1, $zero, fim 
 sll $t4, $s0, 2 
 add $ t2, $s2, $t4 
 lw $t3, 0($t2) # até aqui + 2pts. 
 add $a0, $t3, $zero 
 jal soma 
 add $s1, $s1, $v0 
 addi $s0, $s0, -1 
 j loop 
fim: jr $ra # até aqui + 2pts. 
 
 
 
 
 
 
 
 
 
 
 
 
 
avaliacoes de semestres anteriores/2018/Avaliacao1_2015_1_A gabarito.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1a Prova – 25 pontos – 01/04/2015 
 
 Nome: GABARITO 
 
 
 Total 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: (Assunto: Arquiteturas CISC e RISC. Valor total: 6 pontos) 
Nessa questão você avaliará o desempenho entre duas arquiteturas de CPU, a CISC e a RISC. De forma muito 
simplificada, as CPUs CISC possuem instruções mais complexas do que as CPUs RISC e, portanto normalmente 
precisam de menos instruções para realizar as mesmas tarefas. Entretanto, em geral, uma instrução CISC, por ser 
mais complexa, demanda mais tempo para ser completada do que uma instrução RISC. Considere que um programa 
em linguagem C foi compilado para uma arquitetura CISC e gerou um código assembly com um total de 20 
instruções, sendo 12 instruções do tipo CISC_A, 4 instruções do tipo CISC_B e 4 instruções do tipo CISC_C. O mesmo 
programa compilado para uma arquitetura RISC gerou um código assembly com um total de 30 instruções, sendo 14 
instruções do tipo RISC_A, 11 instruções do tipo RISC_B e 5 instruções do tipo RISC_C. Sabendo-se que o tempo de 
execução das instruções CISC_A, CISC_B, CISC_C, RISC_A, RISC_B, RISC_C, são respectivamente 4ns, 6ns, 8ns, 2ns, 
4ns, 6ns. Pede-se: 
a) Quanto tempo o programa citado na questão leva para executar na CPU CISC? (escreva os cálculos) 
TCISC = 12*4ns + 4*6ns + 4*8ns = 104ns 
b) Quanto tempo o programa
citado na questão leva para executar na CPU RISC? (escreva os cálculos) 
TRISC = 14*2ns + 11*4ns + 5*6ns = 102ns 
c) Certamente uma das arquiteturas executa o referido programa em menos tempo que a outra. Podemos 
dizer que a arquitetura que executa o programa mais rápido, sempre apresentará um melhor desempenho 
que a outra para qualquer outro programa? (justifique sua resposta) 
Não necessariamente, pois o tempo total de execução de um programa esta relacionado com outros fatores que 
dependem da arquitetura da CPU, tais como: número de ciclos que um tipo de instrução leva para ser executada 
pela CPU, quantidade de instruções que um programa tem e frequência de clock da CPU. 
 
 
 
2 
 
QUESTÃO 2: (Assunto: Conceitos Gerais. Valor total: 6 pontos). 
Escreva com suas palavras o que você entende por cada um dos conceitos dos itens (a), (b) e (c) e a importância que 
cada um tem para o projeto de computadores e/ou CPUs: 
a) Conjunto de Instruções 
É a reunião de todas as instruções que a CPU reconhece como instruções válidas e para a qual foi projetada. Sem 
um conjunto de instruções finito e bem definido a CPU não pode ser projetada corretamente. 
b) Conceito de Programa Armazenado 
É o conceito que define que instruções e os dados possam ser representados como números e armazenadas na 
forma de combinações de 0s e 1s em posições de memória onde a CPU possa acessar e processar suas tarefas de 
maneira mais rápida. Sem o Conceito de Programa Armazenado o projeto de computadores e CPUs não 
existiriam na atualidade. 
c) Ciclo de Instruções 
É a sequencia de passos que uma CPU realiza para executar ou realizar suas instruções. Sem o conceito de ciclo 
de instruções uma CPU não saberia o que realizar a cada ciclo de clock. 
 
3 
 
QUESTÃO 3: (Assunto: Assembly do MIPS. Valor total: 6 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, escreva um programa em 
Assembly do MIPS capaz de somar os elementos de um vetor de 10 posições, cujos valores se encontram 
armazenados a partir da posição 0x10000000 na memória de dados. 
int questao3() 
{ 
int i, vetor[10]; 
int temp=0; 
vetor [10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 
for (i=0; i < 10; i++) 
 temp = +=vetor[i]; 
return(temp); 
} 
 
$t0 → variável auxiliar temporária que vai armazenar o conteúdo vindo de vetor[i] 
$t1 → endereço do inicio do vetor de dados 
$t2 → variável i 
$t3 → limite do fim do for (10) 
$t4 → deslocamento em quantidade de bytes (4) 
$t5 → &(vetor + 4*i) 
$v0 → armazenará temp 
 
-- inicialização dos registradores 
questao3: Add $t0, $zero, $zero 
Addi $t1, $zero, 0 
Lui $t1, $t1, 0x1000 
Ori $t1, $t1, 0x0000 
Addi $t2, $zero, 0 
Addi $t3, $zero, 10 
Addi $t4, $zero, 4 
Add $t5, $t1, $zero 
Inicio_for: Beq $t2, $t3, Fim_for 
Lw $t0, 0($t6) 
Add $v0, $v0, $t0 
Addi $t2, $t2, 1 -- incrementa i 
Add $t5, $t5, $t4 -- incrementa &vetor 
J Inicio_for 
Fim_for: jr $ra 
 
 
QUESTÃO 4: (Assunto: Execução de programas Assembly. Valor total: 7 pontos). 
A figura 1 apresenta a tela do simulador MARS (Simulador de Programas Assembly da Arquitetura do MIPS). Na 
janela Text Segment do MARS, observamos um programa em Assembly do MIPS armazenado na memória de 
programa a partir do endereço 0x00400000. Certos dados que o programa necessita para ser executado estão 
armazenados a partir do endereço 0x10010000 na memória de dados. Pergunta-se: 
4 
 
 
Figura 1 – Simulador MARS carregado com um programa em Assembly do MIPS. 
a) Com que valor em hexadecimal ficará armazenado no registrador $s4 após a execução da primeira 
instrução? Apresente sua resposta em hexadecimal. 0x10010000 
b) Qual o valor em hexadecimal do registrador PC enquanto a segunda instrução esta terminando de ser 
executada? Apresente sua resposta em hexadecimal. 0x00400008 
c) Qual o valor em hexadecimal do registrador IR quando a terceira instrução estiver sendo executada? 
Apresente sua resposta em hexadecimal. 0x8E900000 
d) Em qual endereço de memória de dados o resultado da décima sexta instrução será armazenado? Apresente 
sua resposta em hexadecimal. 0x1001000C 
e) Com que valor em hexadecimal ficará o conteúdo da posição de memória 0x10010004 ao final da execução 
do referido programa? Apresente sua resposta em hexadecimal. 0xFFFFFFFF 
f) Qual é a instrução que esta armazenada no endereço rotulado como desvio2? Apresente sua resposta em 
hexadecimal. 0xAE93000C 
g) Com que valor em hexadecimal ficará o conteúdo do registrador $s4 ao final da execução da terceira 
instrução do programa? Apresente sua resposta em hexadecimal. 0x10010000 
 
 
avaliacoes de semestres anteriores/2018/Avaliacao1_2015_2_gabarito.docx
Escola de Engenharia da UFMG
Departamento de Engenharia Eletrônica
Sistemas Processadores e Periféricos
1a Prova – 25 pontos – 23/09/2015
	Nome: GABARITO
NÃO DESTAQUE AS FOLHAS DA PROVA.
Apresente suas respostas com organização, no espaço reservado para cada questão.
QUESTÃO 1: (Assunto: Conceitos do capítulo 1 e 2 do Livro Texto. Valor total: 8 pontos)
Associe os itens das colunas abaixo. Um certo item pode aparecer mais de uma vez na coluna da direita. Assim como pode não haver nenhum relacionamento possível para um determinado item.
		( 01 )
		0x00000001
		( 06 )
		 (08) (09) Instrução em Assembly do MIPS
		( 02 )
		Registrador 
		( 14 )
		Instrução de máquina do MIPS
		( 03 )
		Decodificação
		( 11 )
		Tamanho em bits do campo Imediato da Instrução Tipo I
		( 04 )
		Intel Core i7™
		( 09 )
		(07) Endereçamento Imediato
		( 05 )
		Programa Armazenado
		( --- )
		Endereçamento Pseudodireto
		( 06 )
		beq $s0, $s1, desvio
		( 10 )
		Pseudo Instrução do Montador do MIPS
		( 07 )
		addi 
		( 07 )
		Mnemônico reconhecido pelo MIPS
		( 08 )
		jr $ra
		( 08 )
		Instrução do Tipo R
		( 09 )
		addiu $s0, $s1, 2
		( 05 )
		John Von Neumann
		( 10 )
		move $s2, $s1
		( --- )
		(04) Gordon Moore
		( 11 )
		0x00000010
		( 01 )
		Tamanho em bytes de um caractere ASCII
		( 12 )
		8
		( 13 )
		Microcontrolador
		( 13 )
		PIC32MX360F512L
		( 16 )
		Periférico
		( 14 )
		0x8E910004
		( 04 )
		Processador
		( 15 )
		Computador
		( 03 )
		Etapa do Ciclo de Instrução
		( 16 )
		Mouse
		( 02 )
		Program Counter
QUESTÃO 2: (Assunto: Assembly do MIPS. Valor total: 9 pontos).
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da linguagem C para o Assembly do MIPS. 
		#include <stdio.h>
		
		Apresente a sua solução no espaço abaixo
		 
		
		main: add $a0, $zero, $zero
		int compara_strings(char [], char []); 
		
		 add $a1, $zero, $zero
		 
		
		 lui $a0, 0x1001
		int main()
		
		 lui $a1, 0x1001
		{
		
		 ori $a0, $a0, 0x0000
		 int flag;
		
		 ori $a1, $a1, 0x0034
		 char a[100], b[100];
		
		 add $s0, $zero, $zero
		 
		
		 jal compara_strings
		// Considere que as strings a e b já estejam
		
		 add $s0, $zero, $v0
		// “carregadas” respectivamente a partir
		
		 bne $s0, $zero, desvio0
		// das posições de memória
		
		 addi $v1, $zero, 1
		// 0x10010000 e 0x10010034
		
		 j fim
		
		
		desvio0: add $v1, $zero, $zero
		 flag = compara_strings(a, b);
		
		fim: jr $ra
		 
		
		compara_strings:
add $t0, $zero, $zero
		 if (flag == 0)
		
		inicio_while: add $t1, $a0, $t0
		 return(1);
		
		 add $t2, $a1, $t0
		 else
		
		 lbu $t3, 0($t1)
		 return(0);
		
		 lbu $t4, 0($t2)
		}
		
		 bne $t3, $t4, fora_while
		 
		
		 beq $t3, $zero, fora_while
		int compara_strings(char a[], char b[])
		
		 beq $t4, $zero, fora_while
		{
		
		 addi $t0, $t0, 1
		 int c = 0;
		
		 j inicio_while
		 
		
		fora_while: bne $t3, $zero, retorna_1
		 while (a[c] == b[c]) {
		
		 bne $t4, $zero, retorna_1
		 if (a[c] == '\0' || b[c] == '\0')
		
		 add $v0, $zero, $zero 
		 break;
		
		 j fim_proced
		 c++;
		
		retorna_1: addi $v0, $zero, 1
		 }
		
		fim_proced: jr $ra
		 
		
		
		 if (a[c] == '\0' && b[c] == '\0')
		
		
		 return 0;
		
		Distribuição de pontos desta questão:
		 else
		
		Associação de Variáveis – Registradores correta (1 ponto)
		 return 1;
		
		Inicialização de Registradores correta (1 ponto)
		}
		
		Montagem do endereço dos vetores de caracteres (1 ponto)
		
		
		Chamada da rotina compara_strings (1 ponto)
		Associação de Variáveis - Registradores
		
		If da rotina main e Ifs da rotina compara_strings (1 ponto)
		usada na sua solução
		
		Carga do caractere da memória para o registrador (1 ponto)
		$a0 – &a 
		
		While da rotina compara_strings (1 ponto)
		$a1 – &b
		
		Formação do valor a ser retornado (1 ponto)
		$v0 – valor retornado de compara_strings
		
		Instrução de retorno ao endereço do procedimento de chamada (1 ponto)
		$v1 – valor retornado de main
		
		
		$s0 – flag
		
		
		$t0 – c
		
		
		$t1 – &a[c]
		
		
		$t2 – &b[c]
		
		
		$t3 – conteúdo de a[c]
		
		
		$t4 – conteúdo de b[c]
		
		
		
		
		
		
		
		
		
		
		
QUESTÃO 3: (Assunto: Execução de programas Assembly. Valor total: 8 pontos). 
A figura 1 apresenta a tela do simulador MARS (Simulador de Programas Assembly da Arquitetura do MIPS). Na janela Text Segment do MARS, observamos um programa em Assembly do MIPS armazenado na memória de programa a partir do endereço 0x00400000. Certos dados que o programa necessita para ser executado estão armazenados a partir do endereço 0x10010000 na memória de dados. Pergunta-se:
Figura 1 – Simulador MARS carregado com um programa em Assembly do MIPS.
a) Qual valor em hexadecimal armazenado no registrador $s2 após a execução da instrução lw $s2, 8($s4)? Apresente sua resposta em hexadecimal. 0x00000002
b) Qual o valor em hexadecimal do registrador PC enquanto a quarta instrução do programa está terminando de ser executada? Apresente sua resposta em hexadecimal. 0x00400010
c) Qual o valor em hexadecimal do registrador de instruções quando a instrução j desvio2 estiver sendo executada? Apresente sua resposta em hexadecimal. 0x0810000F
d) Em qual endereço de memória de dados o resultado da última instrução será armazenado? Apresente sua resposta em hexadecimal. 0x10010004
e) Com que valor em hexadecimal ficará o conteúdo da posição de memória 0x1001000C ao final da execução do referido programa? Apresente sua resposta em hexadecimal. 0x00000001
f) Qual é o valor do campo de endereço (em hexadecimal) da instrução j desvio2? Apresente sua resposta em hexadecimal. 0x010000F
g) Com que valor em hexadecimal ficará o conteúdo do registrador $s2 ao final da execução de sll $s2, $s2, 2? Apresente sua resposta em hexadecimal. 0x00000010
h) Com que valor em hexadecimal ficará o conteúdo do registrador $s4 ao final da execução da primeira instrução? Apresente sua resposta em hexadecimal. 0x10010000
3
avaliacoes de semestres anteriores/2018/Avaliacao1_2016_1_gabarito1.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1a Prova – 25 pontos – 04/04/2016 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
PARTE 1: (Assunto: Conceitos do capítulo 1 e 2 do Livro Texto. Valor total: 8 pontos, cada questão 0,5 pontos) 
Questão 1: O que significa arquitetura de um processador? 
A. A forma de endereçamento. 
B. O tipo de sistema operacional e do software que o computador é executado. 
C. A forma do chip e o layout de seus pinos do conector. 
D. Uma descrição das suas operações básicas. 
 
Questão 2: Qual a linguagem de programação a nível de arquitetura? 
A. linguagem assembly 
B. linguagem de máquina 
C. Java 
D. C 
 
Questão 3: O que significa ciclo de máquina ou ciclo de instrução? 
A. Um ciclo da máquina consiste em todas as medidas tomadas na execução de um programa. 
B. Um ciclo da máquina são os passos que um computador realiza quando é inicializado por um sistema operacional. 
C. Um ciclo da máquina é o processo através do qual uma instrução máquina é executado. 
D. Um ciclo da máquina é as etapas através do qual um byte é extraído da memória. 
 
Questão 4: Quais das alternativas abaixo mostram três etapas ordenadas corretamente de forma sequencial do ciclo 
de máquina ou ciclo de instrução? 
A. buscar, incrementar, executar 
B. incrementar, buscar, executar 
C. carregar, compilar, executar 
D. buscar operandos, executar, incrementar 
 
Questão 5: O que é uma instrução de máquina? 
A. Um padrão de bits que corresponde a um dado. 
B. Um sinal enviado através do barramento de sistema que controla a operação do computador. 
C. Um padrão de bits que demanda uma ou mais operações do processador. 
D. Um sinal enviado pelo relógio do sistema que inicia um ciclo de máquina. 
 
 
2 
 
Questão 6: Que parte do processador indica o endereço de memória da próxima instrução máquina a ser executada? 
A. O barramento de endereços. 
B. O registrador de instruções. 
C. O contador de programa (Program Counter). 
D. O registrador $sp (Stack Pointer) 
 
Questão 7: Montadores e compiladores normalmente traduzem um programa em linguagem de alto nível para 
instruções de máquina. O código de máquina está contido em qual tipo de arquivo? 
A. Arquivo header (extensão .h). 
B. Arquivo binário. 
C. Arquivo objeto (extensão .o). 
D. Arquivo fonte. 
 
Questão 8: Qual é a principal diferença entre a área da memória que contém instruções e a área da memória que 
contém os dados? 
A. Na memória de dados, os mesmos são organizados em bytes com endereços próprios; Memória instrução 
mantém palavras sem endereços. 
B. Não há nenhuma diferença. Toda a memória faz é armazenar dados como um padrão de bits. Cabe ao resto do 
computador determinar o que esses padrões significam. 
C. Na memória de dados, os mesmos se encontram ligados ao barramento de dados. A instrução de memória está 
ligada a um barramento de instruções. 
D. Dados utilizam a memória RAM; Instruções usam memória CACHE. 
 
Questão 9: Quantos bits ocupam cada endereço do MIPS 32? 
A. 16 
B. 24 
C. 32 
D. 64 
 
Questão 10: O que significa o OPCODE no conjunto de instruções do MIPS? 
A. A parte de uma instrução de máquina que designa os dados a serem utilizados. 
B. A parte de uma instrução de máquina que designa a operação que a CPU deverá fazer. 
C. A parte do processador que executa operações de decodificação. 
D. A parte de uma
instrução de máquina que é usada como dados em uma instrução. 
 
Questão 11: Existem 32 registradores de uso geral no banco de registradores do MIPS 32. Portanto, uma instrução de 
máquina deve apresentar um campo de quantos bits de tamanho para representar um registrador? 
A. 4 
B. 5 
C. 16 
D. 32 
 
 
3 
 
Questão 12: Dezesseis bits de dados, proveniente do campo imediato de uma instrução ori são utilizados para realizar 
a referida instrução. Durante a execução desta instrução, a primeira operação que a CPU deve realizar é: 
A. O valor do campo imediato deverá ser estendido para 32 bits, preenchendo os 16 bits mais significativos com 
zero. 
B. O valor do campo imediato deverá ser estendido para 32 bits, preenchendo os 16 bits mais significativos com 
um. 
C. Nada precisa ser feito. 
D. O valor do campo imediato deverá ser estendido para 32 bits, preenchendo os 16 bits mais significativos com o 
valor do bit mais significativo do campo imediato. 
 
Questão 13: Qual das instruções abaixo carrega o registrador $5 com o valor 48 na notação decimal? 
 A. ori $5, $0, 0x48 
 B. ori $5 ,$5, 0x48 
 C. ori $5, $0, 48 
 D. ori $5, $0, 0x3 
 
Questão 14: A alternativa que melhor representa a instrução assembly que inverte todos os bits do registrador$5 e 
coloca o resultado no registrador $8 é: 
 A. nori $8, $5, $0 
 B. nor $8, $5, $0 
 C. xor $8, $5, $0 
 D. nor $5, $8, $0 
 
Questão 15: Qual das instruções abaixo pode ser considerada uma pseudo instrução do MIPS32? 
 A. move $t1, $t0 
 B. move $t1, 0 
 C. blt $t1, $t2 
 D. blt $t1, $t2, $t3 
 
Questão 16: Qual das afirmativas abaixo melhor representa um microcontrolador? 
 A. microprocessador 
 B. periférico 
 C. memória 
 D. circuito integrado 
 
 
 
4 
 
PARTE 2: (Assunto: Assembly do MIPS. Valor total: 9 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da 
linguagem C para o Assembly do MIPS. Não use pseudoinstruções. 
#include <stdio.h> 
int s_pos (char*, unsigned int); 
int main () { 
 int i, j; 
 int tam_coluna = 5; 
 int tam_linha = 2; 
 int pos; 
 // considere que os elementos dos vetores abaixo já se encontram 
 // armazenados na memória 
 int array[2][5] = {{12, -1, 8, 0, 6}, {85, -74, 23, 99, -30}}; 
 int somatorio_elementos_coluna[5] = {0, 0, 0, 0, 0}; 
 int somatorio_elementos_linha[2] = {0, 0}; 
 
 for (i = 0; i < tam_linha; i++) { 
 for(j = 0; j < tam_coluna; j++) { 
 somatorio_elementos_linha[i]+=array[i][j]; 
 somatorio_elementos_coluna[j]+=array[i][j]; 
 } 
 } 
 pos = s_pos(somatorio_elementos_coluna, tam_coluna); 
 return 0; 
} 
 
int s_pos (char* array, unsigned int size) { 
int i, tmp=0; 
 for (i = 0; i < size; i++) { 
 if (array[i] > 0) 
 tmp += array[i]; 
 } 
 return tmp; 
} 
 
Utilize na sua solução a seguinte correspondência de variáveis e registradores: 
$t0 - i 
$t1 - j 
$s0 - tam_coluna 
$s1 - tam_linha 
$s2 - pos 
$s4 - &array[0][0] 
$s5 - &somatorio_elementos_coluna[0] 
$s6 - &somatorio_elementos_linha[0] 
$t2 - endereço de array[i][j] 
$t3 - endereço de somatorio_elementos_linha[i] 
$t4 - endereço de somatorio_elementos_coluna[j] 
$t5 - conteúdo do endereço de array[i][j] 
$t6 - conteúdo de somatorio_elementos_linha[i] 
$t7 - conteúdo de somatorio_elementos_coluna[j] 
$v0 - retorno do procedimento main() 
$v1 - retorno do procedimento soma_pos() 
$a0 - &somatorio_elementos_coluna[0] 
$a1 - tam_coluna 
$t6 - endereço de array[i] 
$t7 - conteúdo de array[i] 
 
5 
 
PARTE 3: (Assunto: Execução de programas Assembly. Valor total: 8 pontos). 
A figura 1 apresenta a tela do simulador MARS (Simulador de Programas Assembly da Arquitetura do MIPS). Na janela 
Text Segment do MARS, observamos um programa em Assembly do MIPS armazenado na memória de programa a 
partir do endereço 0x00400000. Certos dados que o programa necessita para ser executado estão armazenados a 
partir do endereço 0x10010000 na memória de dados. Pergunta-se: 
 
Figura 1 – Simulador MARS carregado com um programa em Assembly do MIPS. 
a) Qual valor em hexadecimal armazenado no registrador $s2 após a execução da instrução addu $4, $0, $16? 
Apresente sua resposta em hexadecimal. 0x10010004 
b) Qual o valor em hexadecimal campo imediato da instrução addi $sp, $sp, -20? Apresente sua resposta em 
hexadecimal. 0xFFEC 
c) Qual o valor em hexadecimal do registrador de instruções quando a instrução sw $s1, 0($sp) estiver sendo 
executada? Apresente sua resposta em hexadecimal. 0xAFB10000 
d) Qual o conteúdo do endereço de memória 0x0040002C? Apresente sua resposta em hexadecimal. 
0x00112821 
e) Qual o valor do registrador PC após a execução da instrução addu $17, $0, $4? Apresente sua resposta em 
hexadecimal. 0x00400020 
f) Qual o valor do registrador $a0 após a execução da primeira chamada da instrução addu $4, $0, $16? 
Apresente sua resposta em hexadecimal. 0x00000000 
g) Qual o primeiro valor diferente de zero armazenado no registrador $ra? Apresente sua resposta em 
hexadecimal. 0x00400034 
h) Com que valor em hexadecimal ficará o conteúdo do registrador $sp ao final da primeira execução da instrução 
addu $17, $0, $4? Apresente sua resposta em hexadecimal. 0x7FFFEFE8 
avaliacoes de semestres anteriores/2018/Avaliacao1_2016_2_gabarito1.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1a Prova – 25 pontos – 05/09/2016 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
PARTE 1: (Assunto: Capítulo 1 e 2 da referência principal do curso. Valor total: 16 pontos). 
QUESTÃO 1: Escreva com a menor quantidade de instruções assembly do MIPS a seguinte linha de programa em 
linguagem C. Você precisará consultar o cartão MIPS para fazer esta questão. 
int d = 1 << 4; addi $s0, $zero, 1 
 sll $s0, $s0, 4 
 
QUESTÃO 2: Escreva com a menor quantidade de instruções assembly do MIPS a seguinte linha de programa em 
linguagem C. Você precisará consultar o cartão MIPS para fazer esta questão. 
int d = 128000; lui $s0, 1 
 ori $s0, $s0, 62464 # ou 0xF400 
 
QUESTÃO 3: Escreva a linha de código assembly do MIPS a seguir em linguagem de máquina. Apresente seu resultado 
em hexadecimal. Você precisará consultar o cartão MIPS para fazer esta questão. 
srl $s0, $t0, 2 000000 01000 00000 10000 00010 000010 = 0000 0001 0000 0000 1000 0000 1000 0010 = 0x01008082 
 
QUESTÃO 4: Escreva a linha de código assembly do MIPS a seguir em linguagem de máquina. Apresente seu resultado 
em hexadecimal. Você precisará consultar o cartão MIPS para fazer esta questão. 
jr $ra 000000 11111 00000 00000 00000 001000 = 0000 0011 1110 0000 0000 0000 0000 1000 = 0x03E00008 
 
QUESTÃO 5: Qual o valor do registrador $s0 ao final da execução do trecho de programa assembly do MIPS abaixo? 
Apresente sua resposta com 8 símbolos em hexadecimal (p.ex.: 0x12345678) 
lui $s0, 1 0x00010010 
ori $s0, $s0, 16 
 
QUESTÃO 6: Qual o valor do registrador $s0 ao final da execução do trecho de programa assembly do MIPS abaixo? 
Apresente sua resposta com 8 símbolos em hexadecimal (p.ex.: 0x12345678) 
addi $t0, $zero, 15 0x0000000F 
sll $s0, $t0, 12 0x0000F000 
addiu $s0, $s0, $t0 resposta: 0x0000F00F 
 
QUESTÃO 7: Qual o valor em decimal contido em $s0 resultante da execução do trecho de código da QUESTÃO 6? 
61455 
 
QUESTÃO 8: Em qual região de memória fica armazenada a linha de código a seguir? Justifique sua resposta. 
 srl $s0, $t0, 2 Na memória de programa, memória de instrução ou ainda na região text da memória. 
 
QUESTÃO 9: Dê um exemplo de uma instrução reconhecida unicamente pelo montador do MIPS. Você precisará 
consultar o cartão MIPS para fazer esta questão. move $s0, $t0 
 
 
QUESTÃO
10: Na linha de código assembly a seguir para qual endereço de memória (em hexa) o programa será 
desviado? O endereço da instrução jump está em decimal. Você precisará consultar o cartão MIPS. 
J 16777216 0x04000000 
2 
 
 
QUESTÃO 11: Abaixo você observa uma instrução load word. Trata-se de uma instrução de endereçamento por 
registrador base. Escreva as operações necessárias para formar o endereço que o processador precisa gerar para 
acessar o dado na memória quando executar esta instrução load word. 
lw $t0, 16($s0) $t0 = [$s0]+16 
 
 
QUESTÃO 12: Se eu desejo armazenar na memória de dados um caractere contido no byte menos significativo do 
registrador $t0 no endereço 15 em decimal e o registrador base $s0 contém o valor 12 em decimal, pergunta-se: 
Escreva a instrução do assembly do MIPS que posiciona o caractere na posição pedida. Você precisará consultar o 
cartão MIPS para fazer esta questão. sb $t0, 3($s0) 
 
QUESTÃO 13: Uma posição da memória de programa do MIPS contém o código em hexadecimal abaixo. Pede-se: A 
qual instrução assembly do MIPS corresponde esta linha de código de máquina? Você precisará consultar o cartão 
MIPS para fazer esta questão. 
0xAFA4000C sw $a0, 12($sp) 
 
QUESTÃO 14: Uma posição da memória de programa do MIPS contém o código em hexadecimal abaixo. Pede-se: A 
qual instrução assembly do MIPS corresponde esta linha de código de máquina? Você precisará consultar o cartão 
MIPS para fazer esta questão. 
0x11000002 beq $t0, $zero, 2 
 
QUESTÃO 15: Que tipo de dado fica armazenado na região de memória conhecida como heap? 
Estruturas de dados dinâmicas. 
 
QUESTÃO 16: Qual o código binário do mnemônico da instrução abaixo? Você precisará consultar o cartão MIPS para 
fazer esta questão. 
slti $s0,$s1, -4 001010 
 
3 
 
PARTE 2: (Assunto: Assembly do MIPS. Valor total: 9 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da 
linguagem C para o Assembly do MIPS no espaço reservado ao lado do programa em C. Não use pseudoinstruções. 
 
#include <stdio.h> main: add $a0, $s1, $zero 
 jal myStrlen 
 add $s3, $v0, $zero 
 add $s0, $s3, $zero 
teste: slti $t0, $s0, 0 
 beq $t0, $zero, fim_for 
 sub $t1, $s3, $s0 
 add $t1, $t1, $s2 
 addi $t2, $s0, -1 
 add $t2, $t2, $s1 
 lbu $t3, 0($t2) 
 sb $t3, 0($t1) 
 addi $s0, $s0, -1 
 j teste 
fim_for: add $t1, $s2, $s3 
 sw $zero, 0($t1) 
 add $v1, $zero, $zero 
 jr $ra 
myStrlen: addi $sp, $sp, -4 
 sw $s4, 0($sp) 
 add $s4, $a0, $zero 
 add $t4, $zero, $zero 
teste2: add $t5, $s4, $t4 
 lw $t6, 0($t5) 
 beq $t6, $zero, fim_while 
 addi $t4, $t4, 1 
 j teste2 
fim_while: sub $v0, $t4, $s4 
 lw $s4, 0($sp) 
 jr $ra 
 
int myStrlen( char *s ); 
 
int main() { 
 
 int i, tam_string1; 
 
// considere que os elementos do vetor abaixo 
// já se encontram armazenados na memória a partir do 
// endereço 0x10000000 
 
 char palavra1[12] = "MEMORIA"; 
 char palavra_aux[12]; 
 
 tam_string1 = myStrlen(palavra1); 
 
 for (i = tam_string1; i > 0; i--) 
 palavra_aux[tam_string1-i]=palavra1[i-1]; 
 palavra_aux[tam_string1]='\0'; 
 return 0; 
} 
 
int myStrlen( char *s ) 
{ 
 char *start; 
 start = s; 
 while( *s != 0 ) 
 ++s; 
 return s - start; 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
Utilize na sua solução a seguinte correspondência de variáveis e registradores: 
$s0 – variável i 
$s1 – &palavra1 
$s2 – &palavra_aux 
$s3 – variável tam_string1 
$s4 – variável start 
$v0 – valor de retorno do procedimento myStrlen 
$v1 – valor de retorno do procedimento main 
$a0 – argumento do procedimento myStrlen 
Use os registradores temporários $t para guardar ou calcular dados adicionais se desejar. 
avaliacoes de semestres anteriores/2018/Avaliacao1_2017_1_gabarito.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1a Prova – 25 pontos – 24/04/2017 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: (Assuntos: código de máquina do MIPS, formas de endereçamento, formato de instrução, ciclo de 
máquina, arquitetura do conjunto de instruções do MIPS, endianess. Valor total: 15 pontos) 
Com base nas informações do MIPS Reference Data, o programa em assembly dado no quadro 2, e a situação inicial 
da memória de dados e do banco de registradores do MIPS mostrado respectivamente nos quadros 1 e 3, pede-se: 
 
a) Qual o conteúdo do registrador $t3 ao fim da primeira execução da instrução xor? 0xFFFFFFFF 
b) Qual o valor contido no registrador PC no momento da busca da oitava instrução, considerando que a primeira 
instrução do programa em assembly ocupe o endereço 0x00400000? 0x0040001C 
c) De qual endereço de memória virá o dado que será armazenado no conteúdo de $t0, quando da primeira 
execução da instrução lw? 0x10000010 
d) Supondo que a arquitetura do MIPS seja little-endian, qual o conteúdo de $t0 ao final da instrução lb? 
0x0000000B 
e) Supondo que a arquitetura do MIPS seja big-endian, qual o conteúdo de $t1 ao final da instrução lb? 
0x00000006 
f) Quantas instruções do tipo I estão presentes no programa? 12 
g) Quais instruções do programa que endereçam seus operandos na forma pseudo-direta? j 
h) Escreva em código de máquina a instrução beq do programa assembly. 0x1109FFFA 
i) Qual o valor do registrador de destino ao final da execução da instrução sra considerando o MIPS little-endian? 
0x00000110 
j) Escreva em código de máquina a instrução j do programa assembly. 0x08100000 
k) Quantos bytes da memória de programa ocupa o código assembly apresentado no quadro 2? 76 bytes 
l) Qual o valor da posição de memória 0x10000000 ao final da primeira execução da instrução sw? 0x00000031 
m) Quantos bytes estão contidos na memória de dados (quadro 1)? 32 bytes 
n) Qual o valor contido no registrador PC durante a execução da instrução sra? 0x00400038 
o) Quantas instruções do programa dado estendem o sinal do campo imediato ao serem executadas? 9 
 
 
2 
 
Endereço da Palavra Conteúdo da Palavra Endereço Nome Conteúdo do registrador 
... 0 $zero 00 00 00 00 
0x1000001C FF FF FF FF 1 $at 
0x10000018 12 34 56 A1 2 $v0 
0x10000014 10 05 06 07 3 $v1 
0x10000010 0F 0F 0F 0F 4 $a0 
0x1000000C 00 00 00 06 5 $a1 
0x10000008 A0 0B 1C D1 6 $a2 
0x10000004 04 FF F2 F0 7 $a3 
0x10000000 FF AA D1 20 8 $t0 09 08 03 02 
... 9 $t1 11 FF FF F1 
Quadro 1 – Memória de Dados 10 $t2 00 00 00 0F 
 11 $t3 01 21 51 A1 
desvio2: add $s0, $0, $0 
 add $s1, $0, $0 
 lui $s0, 0x1000 
 ori $s0, $s0, 0x0004 
 lui $s1, 0x0F0F 
 lw $t0, 12($s0) 
 sll $t1, $t0, 4 
 ori $t2, $s1, 0x0F0F 
 xor $t3, $t2, $t1 
desvio1: lb $t0, 6($s0) 
 lw $t1, 8($s0) 
 add $t0, $t0, $t1 
 sb $t0, 13($s0) 
 sra $t1, $t0, 4 
 beq $t0, $t1, desvio1 
 addi $t0, $t0, 0x0020 
 lb $t1, 11($s0) 
 sw $t0, -4($s0) 
 j desvio2 
 
 
 12 $t4 00 01 10 17 
 13 $t5 
 14 $t6 
 15 $t7 
 16 $s0 10 00 00 00 
 17 $s1 11 22 30 03 
 18 $s2 A1 FF 10 C2 
 19 $s3 10 09 34 55 
 20 $s4 22 00 11 01 
 21 $s5 
 22 $s6 
 23 $s7 
 24 $t8 
 25 $t9 
 26 $k0 
 27 $k1 
 28 $gp 
 29 $fp 
 30 $sp
31 $ra 
Quadro 2 – Programa em assembly Quadro 3 – Banco de Registradores 
 
 
3 
 
QUESTÃO 2: (Assunto: Conversão de código C em assembly do MIPS. Valor total: 10 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da 
linguagem C para o Assembly do MIPS no espaço reservado ao lado do programa em C. Não use pseudoinstruções. 
 
#include <stdio.h> main: addi $a0, $0, 5 
 addi $a1, $0, 3 
 jal f1 
 add $s0, $v0, $0 
 bne $s0, $0, fim_main 
 add $v0, $s0, $0 
fim_main: jr $ra (até aqui 2 pontos) 
f1: addi $sp, $sp, −16 
 sw $a1, 12($sp) 
 sw $a0, 8($sp) 
 sw $ra, 4($sp) 
 sw $s0, 0($sp) (salvou stack corretamente + 2 pts) 
 add $s0, $a0, $0 
 add $a0, $a1, $0 
 jal f2 (chamada correta de f2 + 1 ponto) 
 lw $a0, 8($sp) 
 lw $a1, 12($sp) 
 add $v0, $v0, $s0 
 add $v0, $v0, $a0 (lógica +1 ponto) 
 lw $s0, 0($sp) 
 lw $ra, 4($sp) 
 addi $sp, $sp, 16 
 jr $ra (recuperação da stack e retorno + 1 pts) 
f2: addi $sp, $sp, −12 
 sw $a0, 8($sp) 
 sw $ra, 4($sp) 
 sw $s0, 0($sp) (salvou stack corretamente +1 ponto) 
 addi $s0, $0, 3 
 bne $a0, $0, else 
 addi $v0, $0, 0 
 j fim 
else: addi $a0, $a0, −1 
 jal f2 (até aqui +1 ponto) 
 lw $a0, 8($sp) 
 add $v0, $v0, $s0 
fim: lw $s0, 0($sp) 
 lw $ra, 4($sp) (até aqui +1 ponto) 
 addi $sp, $sp, 12 
 jr $ra 
 
 
 
int main() { 
 int a1 = 5; 
 int b1 = 3; 
 int resultado; 
 
 resultado = f1(a1, b1); 
 if (!resultado) return (0); 
} 
 
int f1 (int a, int b) { 
 int j; 
 j = a; 
 return j + a + f2(b); 
} 
 
int f2 (int x) { 
 int k; 
 k = 3; 
 If (x == 0) return 0; 
 else return k + f2(x – 1); 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Utilize na sua solução a seguinte correspondência de variáveis e registradores: 
$a0 – variável a1, variável b e variável x 
$a1 – variável b1 
$s0 – variável resultado, variável j e variável k 
$v0 – para guardar os valores retornados das funções. 
avaliacoes de semestres anteriores/2018/Avaliacao1_2017_2_TA_gabarito.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1a Prova – 25 pontos – 30/08/2017 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: (Assuntos: código de máquina do MIPS, formas de endereçamento, formato de instrução, ciclo de 
máquina, arquitetura do conjunto de instruções do MIPS, endianess. Valor total: 15 pontos) 
Com base nas informações do MIPS Reference Data, o programa em assembly dado no quadro 2, e a situação inicial 
da memória de dados e do banco de registradores do MIPS mostrado respectivamente nos quadros 1 e 3, pede-se: 
 
a) Qual o conteúdo do registrador $t2 ao fim da primeira execução da instrução ori? 0x0F0F0F0F ou 
0x0000000F 
b) Qual o valor contido no registrador PC no momento da busca da quarta instrução, considerando que a primeira 
instrução do programa em assembly ocupe o endereço 0x00400000? 0x0040000C 
c) De qual endereço de memória virá o dado que será armazenado no conteúdo de $t0, quando da primeira 
execução da instrução lw? 0x10000018 
d) Supondo que a arquitetura do MIPS seja little-endian, qual o conteúdo de $t0 ao final da instrução lb? 
0x0000001B 
e) Supondo que a arquitetura do MIPS seja big-endian, qual o conteúdo de $t1 ao final da instrução lb? 
0x00000010 
f) Quantas instruções do tipo I estão presentes no programa? 13 
g) Quais instruções do programa que endereçam seus operandos na forma pseudo-direta? J 
h) Supondo que a arquitetura do MIPS seja big-endian, qual o conteúdo da posição de memória 0x10000018 
ao final da instrução sb? 0x122B56A1 
i) Qual o valor do registrador de destino ao final da execução da instrução sra? 0x00000002 
j) Escreva em código de máquina a instrução beq do programa assembly. 0x1109FFFB 
k) Escreva em código de máquina a instrução j do programa assembly. 0x08100000 
l) Quantos bytes da memória de programa ocupa o código assembly apresentado no quadro 2? 80 bytes 
m) Quantos bytes estão contidos na memória de dados (quadro 1)? 32 bytes 
n) Qual o valor contido no registrador PC durante a primeira passagem de execução da instrução sw? 0x00400048 
o) Expresse em decimal o valor contido nos 26 bits menos significativos da instrução j desvio2? 1048576 
 
 
2 
 
Endereço da Palavra Conteúdo da Palavra Endereço Nome Conteúdo do registrador 
... 0 $zero 00 00 00 00 
0x1000001C 00 F3 4F 11 1 $at 
0x10000018 12 34 56 A1 2 $v0 
0x10000014 10 05 06 07 3 $v1 
0x10000010 5F 1B 2A 32 4 $a0 
0x1000000C 77 01 C0 06 5 $a1 
0x10000008 A0 0B 1C D1 6 $a2 
0x10000004 04 8F F2 F0 7 $a3 
0x10000000 FF AA D1 20 8 $t0 09 08 03 02 
... 9 $t1 11 FF FF F1 
Quadro 1 – Memória de Dados 10 $t2 00 00 00 0F 
 11 $t3 01 21 51 A1 
desvio2: add $s0, $0, $0 
 addi $s1, $0, 10 
 lui $s0, 0x1000 
 ori $s0, $s0, 0x000C 
 lui $s2, 0x0F0F 
 lw $t0, 12($s0) 
 sll $t1, $t0, 4 
 ori $t2, $s2, 0x0F0F 
 xor $t3, $t2, $s2 
desvio1: lb $t0, 6($s0) 
 lb $t1, 8($s0) 
 add $t0, $t0, $t1 
 sb $t0, 13($s0) 
 sra $t1, $t0, 4 
 beq $t0, $t1, desvio1 
 addi $t0, $t0, 0x0020 
 lb $t1, 11($s0) 
 sw $t0, -4($s0) 
 j desvio2 
 jr $s4 
 
 12 $t4 00 01 10 17 
 13 $t5 
 14 $t6 
 15 $t7 
 16 $s0 10 00 00 00 
 17 $s1 11 22 30 03 
 18 $s2 A1 FF 10 C2 
 19 $s3 10 09 34 55 
 20 $s4 00 04 10 00 
 21 $s5 
 22 $s6 
 23 $s7 
 24 $t8 
 25 $t9 
 26 $k0 
 27 $k1 
 28 $gp 
 29 $fp 
 30 $sp 
 31 $ra 
Quadro 2 – Programa em assembly Quadro 3 – Banco de Registradores 
 
 
3 
 
QUESTÃO 2: (Assunto: Conversão de código C em assembly do MIPS. Valor total: 10 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da 
linguagem C para o Assembly do MIPS no espaço reservado ao lado do programa em C. Não use pseudoinstruções.
Suponha que o endereço do vetor vet se encontra no endereço de memória 0x10001000 
Suponha que o endereço de retorno da função f1 já se encontre dentro do registrador $ra. 
Suponha que o endereço de retorno da função main já se encontre dentro do registrador $s4. 
 
#include <stdio.h> main: addi $a0, $0, 0 
 lui $a0, 0x1000 
 addi $a0, $a0, 0x1000 
 addi $a1, $0, 0 
 addi $a2, $0, 1 
 add $v0, $0, $0 (até aqui 3 pontos) 
while: bne $v0, $0, fim_main 
 jal f1 
 addi $a1, $a1, 1 
 addi $a2, $a2, 1 
 j while 
fim_main: jr $s4 (até aqui mais 3 pontos) 
f1: addi $t0, $0, $0 
 addi $v0, $0, 1 
 sll $a1, $a1, 2 
 sll $a2, $a2, 2 
 add $t1, $a0, $a1 
 add $t2, $a0, $a2 
 lw $t0, 0($t1) 
 lw $t3, 0($t2) 
 sw $t3, 0($t1) 
 sw $t0, 0($t2) (até aqui mais 3 pontos) 
 bne $t0, $t3, fim_f1 
 add $v0, $0, $0 
 jr $ra (até aqui mais 1 ponto) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
void main() { 
 int a=0; 
 int b=1; 
 int vet[10]; 
 int res=0; 
 
 while(!res) { 
 res=f1(&vet,a,b); 
 ++a; 
 ++b; 
 } 
} 
 
int f1(int *v, int a, int b) { 
 int t=0; 
 int sai=1; 
 t=v[a]; 
 v[a]=v[b]; 
 v[b]=t; 
 if(v[a]==v[b]) 
 sai=0; 
 return(sai); 
} 
 
 
 
Utilize na sua solução a seguinte correspondência de variáveis e registradores: 
$a0 – variável &vet 
$a1 – variável a 
$a2 – variável b 
$t0 – variável t 
$v0 – para guardar o valor de retorno da função f1. 
Se você precisar de mais registradores declare explicitamente na sua solução o nome do registrador que você usou e para que 
ele foi usado! 
avaliacoes de semestres anteriores/2018/Avaliacao2_2014_1_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2
a
. Prova – 25 pontos – 16/04/2014 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Conversão de números reais para IEEE 754 e vice-versa. (Valor máximo: 6 pontos). 
 
a) Converta o número real 1220,5 em notação IEEE 754. Represente o número convertido em hexadecimal. Mostre no espaço 
abaixo como chegou ao número em hexadecimal. 
1220,5 = 1,19189453125 x 2
10 
(0,5 ponto pela normalização) 
Número positivo, logo sinal = 0 (0,5 ponto pelo sinal) 
Expoente deslocado = 10 + 127 = 137 = 1000 1001 (1,0 ponto pelo expoente) 
0,19189453125 x 16 = 3,0703125 
0,0703125 x 16 = 1,125 
0,125 x 16 = 2,0 
0 1000 1001 0011 0001 0010 0000 0000 000 (1,0 ponto pela mantissa) 
0x44989000 
 
 
 
 
 
 
 
b) Dado o número hexadecimal 0x45670100 em notação IEEE 754, pede-se qual número real ele representa. Mostre no 
espaço abaixo como chegou ao número real na base 10. 
0 10001010 1100 1110 0000 0010 0000 000 
Sinal 0 = positivo (0,5 ponto pelo sinal) 
Expoente = 138 - 127 = 11 (1,0 ponto pelo expoente) 
Mantissa = 1 + 12 x 16
-1
 + 14 x 16
-2
 + 2 x 16
-4 
(1,0 ponto pela mantissa) 
Número em decimal = (1 + 12 x 16
-1
 + 14 x 16
-2
 + 2 x 16
-4
) x 2
11
 = 3696,0625 (0,5 ponto pelo final) 
 
 
 
 
 
 
 
 
2 
 
QUESTÃO 2. Assunto: Caminho de Dados e Sinais de controle do MIPS Ciclo Único. (Valor total: 6 pontos). 
 
a) Desenhe e identifique com nomes representativos todos os componentes funcionais do MIPS ciclo único somente para a 
realização das instruções slt e addi. Inclua e identifique todos os sinais de dados e sinais de controle em cada componente 
funcional desenhado, assim como o tamanho de cada linha de dado. (2 pontos) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b) Faça a ligação correta dos elementos desenhados em (a) para que se viabilize a realização das instruções slt e addi. (2 
pontos) 
 
c) Projete usando portas lógicas, multiplexadores e registradores (caso seja necessário) a parte de controle do MIPS ciclo 
único responsável pela realização das instruções slt e addi. (2 pontos) 
 
 
Mnemônico OpCode ALUControl ALUSrc RegDst RegWrite 
SLT 000000 SUB = 0 0 0 1 
ADDI 001000 ADD = 1 1 1 1 
 
 
 
 
 
 
 
 
A RD
Instruction
Memory
PC
32 32 32
CLK
PC'
32
A1
A3
WD3
RD2
RD1
RegWrite
A2
CLK
Register
File32
32
32
5
5
5
SignImm
Sign Extend
15:0
32
SrcB
ALUResult
SrcA Slt_true
ALUControl
A
L
U32
32
32+
4
PC
PCPlus4
32
32
32
0
1
SrcB
ALUSrc
32
32
32
RD2
SignImm
5:0
31:26
RegDst
ALUSrc
RegWrite
Op
Funct
Control
Unit
ALUControl
0
1
A3
RegDst
5
5
5
Rd
Rt
0
1
WD3
Sll_true
32
32
32
ALUResult
“0” 31:1, Sll_true
0
1
ALUcontrol, ALUSrc, RegDst
bit29
addi
slt
“1”
“0”
RegWritebit29
3 
 
QUESTÃO 3. Assunto: Caminho de Dados e Sinais de controle do MIPS Multiciclo. (Valor total: 6 pontos). 
 
a) Desenhe e identifique com nomes representativos todos os componentes funcionais do MIPS multiciclo somente para a 
realização das instruções add e sw. Inclua e identifique todos os sinais de dados e sinais de controle em cada componente 
funcional desenhado, assim como o tamanho de cada linha de dado. (2 pontos) 
 
 
 
 
 
 
b) Faça a ligação correta dos elementos desenhados no item (a) para que se viabilize a realização das instruções add e sw. (2 
pontos) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c) Desenhe o diagrama da máquina de estados finitos da parte de controle do MIPS multiciclo responsável pela realização das 
instruções add e sw. (2 pontos) 
SignImm
CLK
A
RD
Instr / Data
Memory
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1 0
1
PC
0
1
PC' Instr
25:21
20:16
15:0
5:0
SrcB20:16
15:11
ALUResult
SrcA
ALUOut
31:26
R
e
g
D
s
t
M
e
m
to
R
e
g
ALUSrcA
RegWrite
Op
Funct
Control
Unit
PCSrc
CLK
CLK
ALUOp
A
L
U
CLK
Adr
0
1
Data
CLK
CLK
A
B
00
01
10
11
4
CLK
ENEN
ALUSrcB1:0IRWrite
IorD
PCWrite
MemWrite
WE
IorD = 0
AluSrcA = 0
ALUSrcB = 01
ALUOp = 00
PCSrc = 0
IRWrite
PCWrite
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst = 1
MemtoReg = 0
RegWrite
IorD = 1
MemWrite
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
Reset
S0: Busca
S2: 
CalculaEndMem
S1: 
Decodificação
S3: 
EscreveMem
S4: Executa
S5: 
EscreveBanco
Op = SW
Funct = add
4 
 
QUESTÃO 4. Assunto: Comparação do MIPS Ciclo Único com Multiciclo e Pipeline. (Valor total: 7 pontos) 
 
Considere somente as informações abaixo que forem relevantes para a sua solução: 
 Período do clock do MIPS ciclo único: 100 ns 
 1 ns equivale a 10
-9
 de 1 segundo. 
 Período do clock da etapa mais lenta do multiciclo: 25 ns 
 Período do clock da etapa mais rápida do multiciclo: 20 ns 
 Número de estágios do MIPS pipeline: 5 
 Período de clock do pipeline: 40 ns 
 Programa que será executado nas CPUs ciclo único, multiciclo e pipeline: 
Lw r0, 40($r1) 
Lw r2, 36($r1) 
Lw r4, 32($r1) 
Add $r3, $r0, $r2 
Add $r5, $r4, $r2 
Add $r4, $0, $0 
Addi $r6,
$r2, 100 
Sw $r3, 100($r1) 
Sw $r5, 96($r1) 
Sw $r6, 92($r1) 
 
a) Pede-se qual o tempo de execução do programa na versão ciclo único? Mostre os seus cálculos. (1 ponto) 
 
Texec = 10 x 100 ns = 1000 ns ou 1 us 
 
b) Pede-se qual o tempo de execução do programa na versão multiciclo? Mostre os seus cálculos. (1 ponto) 
 
Texec = ((3 x 5 x 25) + (7 x 4 x 25)) ns = 1075 ns ou 1,075 us 
 
c) Pede-se qual o tempo de execução do programa na versão pipeline? Mostre os seus cálculos. (1 ponto) 
 
Texec = (5 + 9) x 40 ns = 560 ns ou 0,560 us 
 
d) O tempo de execução de um programa em uma CPU multiciclo do MIPS sempre será menor que o tempo de execução do 
mesmo programa em uma versão MIPS ciclo único? Justifique sua resposta. (1 ponto) 
Não. A CPI média de um programa a ser executado na versão multiciclo tende a ser igual ou maior que 4 a medida que o 
programa cresce em números de linha de código. Isso porque as instruções do tipo R serão mais comuns do que as 
instruções de desvio (3 etapas) e as instruções lw (5 etapas) que acontecerão com muito menor frequência. Enquanto que, 
na versão ciclo único a CPI média será igual a 1, pela própria definição e característica intrínseca da implementação de ciclo 
único. O tempo de execução da etapa mais lenta do MIPS multiciclo, que determina o período de clock da versão multiciclo, 
é maior que 1/5 do período de clock da versão ciclo único. Portanto, a tendência é que com o aumento significativo de 
linhas de código assembly, a versão multiciclo se torne mais lenta que a versão ciclo único, pois o tempo de execução será 
calculado pela multiplicação do número de linhas de código pela CPI e pelo período de clock de cada versão. 
 
 
e) Considere agora um programa com 100.000 linhas de código assembly. Considere que a CPI média para as versões 
Multiciclo e Pipeline são respectivamente 4,12 e 1,2. Em quanto tempo será executado tal programa nas versões ciclo 
único, multicilo e pipeline? Mostre os seus cálculos. (3 pontos) 
 
Texec_ciclo_unico = 100.000 x 100 ns = 10.000.000 ns = 10 ms 
Texec_multiciclo = 100.000 x 4,12 x 25 ns = 10.300.000 ns = 10,3 ms 
Texec_pipeline = 100.000 x 1,2 x 40 ns = 4.800.000ns = 4,8 ms 
 
avaliacoes de semestres anteriores/2018/Avaliacao2_2014_2_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2
a
. Prova – 25 pontos – 08/10/2014 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Conversão de números reais para IEEE 754 e vice-versa. (Valor máximo: 6 pontos). 
 
a) Converta o número real 25,25 em notação IEEE 754. Represente o número convertido em hexadecimal. Mostre no espaço 
abaixo como chegou ao número em hexadecimal. 
25,25 = 1,578125 x 2
4 
(0,5 ponto pela normalização) 
Número positivo, logo sinal = 0 (0,5 ponto pelo sinal) 
Expoente deslocado = 4 + 127 = 131 = 1000 0011 (1,0 ponto pelo expoente) 
0,578125 x 16 = 9,25 
0,25 x 16 = 4,0 
0 1000 0011 1001 0100 0000 0000 0000 000 (1,0 ponto pela mantissa) 
0x41CA0000 
 
 
 
 
b) Dado o número hexadecimal 0x43FE0000 em notação IEEE 754, pede-se qual número real ele representa. Mostre no 
espaço abaixo como chegou ao número real na base 10. 
0 10000111 1111 1100 0000 0000 0000 000 
Sinal 0 = positivo (0,5 ponto pelo sinal) 
Expoente = 135 - 127 = 8 (1,0 ponto pelo expoente) 
Mantissa = 1 + 15 x 16
-1
 + 12 x 16
-2
 
 
(1,0 ponto pela mantissa) 
Número em decimal = (1 + 15 x 16
-1
 + 12 x 16
-2
) x 2
8
 = 508,0 (0,5 ponto pelo final) 
 
 
 
 
 
 
 
 
2 
 
QUESTÃO 2. Assunto: Caminho de Dados e Sinais de controle do MIPS Ciclo Único. (Valor total: 6 pontos). 
Considere a arquitetura MIPS Ciclo Único mostrada abaixo, onde são identificados com “números em balões” alguns dos sinais que 
se propagam pela via de dados. Para a sequência de instruções e os valores iniciais dados a seguir, preencha a tabela com os valores 
solicitados (escreva em decimal ou hexadecimal o valor pedido). 
 
 
 
Instrução 1 2 3 4 5 6 
lb $t0, 3($s0) 0x00021788 0x00000008 0x10010004 0x00000055 0x00000003 0x00000003 
add $t2, $t0, $t1 0x0002178C 0x0000000A 0x00000055 0x0084E505 0x00005020 0x0084E4B0 
beq $t2, $t3, enlace 0x00021790 0x0000000B 0x0084E505 0x00579F41 0x00001720 0x002D45C4 
 
Valores iniciais: 
Registradores: 
$s0 = 0x10010004 $t1 = 0x0084E4B0 $t3 = 0x002D45C4 PC = 0x00021784 enlace = 0x00021720 
 
Memória: 
Endereço Conteúdo 
0x10010000 0x485DEF80 
0x10010004 0x0737B655 
0x10010008 0x1F75179D 
0x1001000C 0x01A9ECA5 
 
 
 
 
 
 
 
1 
2 
5 
6 
3 
4 
3 
 
QUESTÃO 3. Assunto: Caminho de Dados e Sinais de controle do MIPS Multiciclo. (Valor total: 6 pontos). 
Desenhe no espaço abaixo um caminho de dados multiciclo para que a CPU execute única e exclusivamente as instruções add e 
jump do MIPS: 
a) Com todos os componentes funcionais; 
b) Com todos os sinais de controle necessários; 
c) Com o tamanho de cada linha de dado ou instrução. 
 
 
4 
 
QUESTÃO 4. Assunto: MIPS Pipeline. (Valor total: 6 pontos) 
 
Considere somente as informações abaixo que forem relevantes para a sua solução: 
 1 ns equivale a 10
-9
 de 1 segundo. 
 Número de estágios do MIPS pipeline: 5 
 Período de clock do pipeline: 40 ns 
 Considere o atraso de 1 período de clock para resolução de cada tipo de conflito. 
 Programa que será executado na CPU: 
 
Lw r0, 40($r1) 
Lw r2, 36($r1) 
Lw r4, 32($r1) 
Add $r3, $r0, $r2 
Add $r5, $r4, $r2 
Add $r4, $0, $0 
Addi $r6, $r2, 100 
Sw $r3, 100($r1) 
Sw $r5, 96($r1) 
Sw $r6, 92($r1) 
 
 
a) Dado o diagrama ciclo único do caminho de dados pipeline, preencha os retângulos com a instrução corrente que estará 
executando em cada um dos estágios do pipeline no décimo período de clock. (5 pontos) 
 
 
 
 
b) Em quanto tempo será executado o referido programa na versão da CPU pipeline? Mostre os cálculos que fez com que você 
chegasse ao resultado. (1 ponto) 
Número de estágios do pipeline = 5 
Período de cada estágio = 40 ns 
Número de instruções do programa = 11 
Número de períodos necessários para a execução do programa = 5 + 9 = 14 
Como não haverá nenhum tipo de conflito: 
Tempo de execução do programa = 14 x 40 ns = 560 ns. 
Sw $r6, 92($r1) 
 
Sw $r5, 96($r1) Sw $r3, 100($r1) Addi $r6, $r2, 100 Add $r4, $0, $0 
avaliacoes de semestres anteriores/2018/Avaliacao2_2015_1_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2a. Prova – 25 pontos – 13/05/2015 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Conversão de números reais para IEEE 754 e vice-versa. (Valor máximo: 6 pontos). 
 
a) Converta o número real -15,4375 em notação IEEE 754, precisão simples. Represente o número convertido em 
hexadecimal. Mostre no espaço abaixo como chegou ao número em hexadecimal. 
-15,4375 = 1.9296875 x 23 (0,5 ponto pela normalização) 
Número negativo, logo sinal = 1 (0,5 ponto pelo sinal) 
Expoente deslocado = 3 + 127 = 130 = 1000 0010 (1,0 ponto pelo expoente) 
1 10000010 1110 1110 0000 0000 0000 000 (1,0 ponto pela mantissa) 
0xC1770000 
 
 
 
b) Dado o número hexadecimal 0x43FE0000 em notação IEEE 754, pede-se qual número real ele representa. Mostre no 
espaço abaixo como chegou ao número real na base 10. 
0 10000111 1111 1100 0000 0000 0000 000 
Sinal 0 = positivo (0,5 ponto pelo sinal) 
Expoente = 135 - 127 = 8 (1,0 ponto pelo expoente) 
Mantissa = 1 + 15 x 16-1 + 12 x 16-2 (1,0 ponto pela mantissa) 
Número em decimal = (1 + 15 x 16-1 + 12 x 16-2) x 28 = 508,0 (0,5 ponto pelo final) 
 
 
 
 
 
 
 
 
2 
 
QUESTÃO 2. Assunto:
Caminho de Dados e Sinais de controle do MIPS Ciclo Único. (Valor total: 6 pontos). 
Considere a arquitetura MIPS Ciclo Único mostrada abaixo, onde são identificados com “números em balões” alguns dos sinais que 
se propagam pela via de dados. Para a sequência de instruções e os valores iniciais de registradores dados a seguir, preencha a 
tabela com os valores solicitados (escreva em hexadecimal o valor pedido). 
 
 
 
Instrução 1 2 3 4 5 6 
lw $t0, 12($s0) 0x0002100C 0x01111 0x1001000C 0x00102A2A 0x0000000C 0x0000000C 
addi $t2, $t1, 15 0x0002100F 0x01001 0x0080202F 0x0080202F 0x0000000F 0x0000000F 
beq $t3, $t0, enlace 0x000210F0 0x01011 0x00000000 0x0080202F 0x000210F0 0x00102A2A 
 
Valores iniciais: 
Registradores: 
$s0 = 0x10010000 $t1 = 0x00802020 $t3 = 0x00102A2A PC = 0x00021008 enlace = 0x000210F0 
 
Memória: 
Endereço Conteúdo 
0x10010000 0x00102020 
0x10010004 0x00102121 
0x10010008 0x00102F2F 
0x1001000C 0x00102A2A 
 
 
 
 
 
 
 
1 
2 
5 
6 
3 
4 
3 
 
QUESTÃO 3. Assunto: Caminho de Dados e Sinais de controle do MIPS Multiciclo. (Valor total: 6 pontos). 
Dada a máquina na figura 1. Insira nas tabelas abaixo, os estados (‘0’, ‘1’ ou ‘X’) dos sinais na tabela em cada estágio para 
as instruções: add $s1,$t1, $t2 e lw $s1,20($s5) 
 
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
 
Figura 1 
 
Instrução: add $s1, $t1, $t2 Instrução: lw $s1, 20($s5) 
 
 
 Nome do estágio IF ID EX WB 
N
o
m
e
 d
o
 s
in
al
 RegWrite 0 0 0 1 
ALUSrcA 0 0 1 X 
MemRead 1 0 0 0 
IorD 0 X X X 
PCWrite 1 0 0 0 
 Nome do estágio IF ID EX ME WB 
N
o
m
e
 d
o
 s
in
al
 RegWrite 0 0 0 0 1 
ALUSrcA 0 0 1 X X 
MemRead 1 0 0 1 0 
IorD 0 X X 1 X 
PCWrite 1 0 0 0 0 
4 
 
QUESTÃO 4. Assunto: MIPS Pipeline, Multiciclo e Ciclo Único. (Valor total: 7 pontos) 
 
Considere somente as informações abaixo que forem relevantes para a sua solução: 
 Número de estágios do MIPS pipeline: 5 
 Programa que será executado: 
 
1: Lw r0, 40($r1) 
2: Lw r2, 36($r1) 
3: Lw r4, 32($r1) 
4: Add $r3, $r4, $r2 
5: Add $r5, $r4, $r0 
6: Add $r4, $r0, $r5 
7: Addi $r6, $r0, 100 
8: Sw $r6, 100($r1) 
9: Sw $r4, 96($r1) 
10: Sw $r5, 92($r1) 
 
 
a) Considere que a CPU seja implementada na modalidade Ciclo Único. Em quantos períodos de clock o programa dado seria 
executado. Justifique sua resposta. (1 ponto) Em 10 (dez) ciclos de clock. Como o programa tem 10 instruções e cada 
instrução leva um ciclo de clock para ser executada, daí a justificativa do resultado apresentado. 
 
 
 
b) Considere que a CPU seja implementada na modalidade Multiciclo. Em quantos períodos de clock o programa dado seria 
executado. Justifique sua resposta. (1 ponto) 3 Lw, sendo que cada Lw leva 5 ciclos de clock cada para ser executado, Add 
ou Addi e Sw levam cada uma 4 ciclos de clock para ser executado. Portanto o programa vai levar 43 ciclos de clock para ser 
executado, ou seja, 3 x 5 + 7 x 4 = 43. 
 
 
 
c) Considere que a CPU seja implementada na modalidade Pipeline, sem considerar a existência de Hazards. Em quantos 
períodos de clock o programa dado seria executado. Justifique sua resposta. (1 ponto) [5 + (n-1)] ciclos de clock, onde 5 é o 
número de estágios do pipeline e n é o número de instruções do programa. Portanto, o programa será executado em 14 
ciclos de clock. 
 
 
 
d) Considere que a CPU seja implementada na modalidade Pipeline, considerando a existência de Hazards e unicamente Stalls 
como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria executado. 
Justifique onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) 2 stalls entre as instruções 3 e 
4, mais 2 stalls entre as instruções 5 e 6, mais 2 stalls entre as instruções 7 e 8. Total = 14 + 2 + 2 + 2 = 20 ciclos de clock. 
 
 
 
 
e) Considere que a CPU seja implementada na modalidade Pipeline com forwarding, considerando a existência de Hazards, 
além de Stalls como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria 
executado. Justifique onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) 1 stall entre as 
instruções 3 e 4. Total = 14 + 1 = 15 ciclos de clock. 
 
 
 
 
5 
 
f) Considere que a CPU seja implementada na modalidade Pipeline, considerando a existência de Hazards e a instrução NOP 
como elemento disponível para retardar o pipeline. Sem reordenar o código, quantos períodos de clock o programa dado 
seria executado. Justifique onde você precisou incluir NOPs. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) 
2 NOPs entre as instruções 3 e 4, mais 2 NOPs entre as instruções 5 e 6, mais 2 NOPs entre as instruções 7 e 8. Total = 14 + 
2 + 2 + 2 = 20 ciclos de clock. 
 
 
g) Considere que a CPU seja implementada na modalidade Pipeline sem forwarding, considerando a existência de Hazards e a 
instrução NOP como elemento disponível para retardar o pipeline. Reordene o código de forma que o código produza o 
mesmo resultado, de forma a eliminar a ocorrência de Hazards e que introduza o mínimo número de NOPs no código final 
reordenado. (1 ponto) 
 
1: Lw r4, 32($r1) 
2: Lw r2, 36($r1) 
3: Lw r0, 40($r1) 
4: NOP 
5: Add $r3, $r4, $r2 
6: Add $r5, $r4, $r0 
7: Addi $r6, $r0, 100 
8: NOP 
9: Add $r4, $r0, $r5 
10: Sw $r6, 100($r1) 
11: Sw $r5, 92($r1) 
12: Sw $r4, 96($r1) 
 
 
avaliacoes de semestres anteriores/2018/Avaliacao2_2015_2_gabarito.doc
Escola de Engenharia da UFMG
Departamento de Engenharia Eletrônica
Sistemas Processadores e Periféricos
2a. Prova – 25 pontos – 28/10/2015
Nome: GABARITO
		
NÃO DESTAQUE AS FOLHAS DA PROVA.
Apresente suas respostas com organização, no espaço reservado para cada questão.
QUESTÃO 1. Assunto: Conversão de números reais para IEEE 754 e vice-versa. (Valor máximo: 6 pontos). 
a) Converta o número real -111,0 em notação IEEE 754, precisão simples. Represente o número convertido em hexadecimal. Mostre no espaço abaixo como chegou ao número em hexadecimal.
-111,0 = 1,734375 x 26
(0,5 ponto pela normalização)
Número negativo, logo sinal = 1 
(0,5 ponto pelo sinal)
Expoente deslocado = 6 + 127 = 133 = 1000 0101
(1,0 ponto pelo expoente)
1011 1100 0000 0000 0000 000
(1,0 ponto pela mantissa)
0xC2DE0000
b) Dado o número hexadecimal 0x45F00000 em notação IEEE 754, pede-se qual número real ele representa. Mostre no espaço abaixo como chegou ao número real na base 10.
0 10001011 1110 0000 0000 0000 0000 000
Sinal 0 = positivo
(0,5 ponto pelo sinal)
Expoente = 139 - 127 = 12
(1,0 ponto pelo expoente)
Mantissa = 1 + 15 x 16-1
(1,0 ponto pela mantissa)
Número em decimal = (1 + 15 x 16-1) x 212 = 7680,0
(0,5 ponto pelo final)
QUESTÃO 2. Assunto: Caminho de Dados e Sinais de controle do MIPS Multiciclo. (Valor total: 6 pontos).
Considere a arquitetura MIPS Multiciclo mostrada na Figura 1, onde são identificados com “números em balões” em alguns dos sinais que se propagam pela via de dados. Preencha a tabela com os valores solicitados (escreva em hexadecimal o valor pedido), quando cada instrução da coluna
1 estiver sendo executada. 
S
h
i
f
t
l
e
f
t
 
2
P
C
M
u
x
0
1
R
e
g
i
s
t
e
r
s
W
r
i
t
e
r
e
g
i
s
t
e
r
W
r
i
t
e
d
a
t
a
R
e
a
d
d
a
t
a
 
1
R
e
a
d
d
a
t
a
 
2
R
e
a
d
r
e
g
i
s
t
e
r
 
1
R
e
a
d
r
e
g
i
s
t
e
r
 
2
I
n
s
t
r
u
c
t
i
o
n
[
1
5
–
1
1
]
M
u
x
0
1
M
u
x
0
1
4
I
n
s
t
r
u
c
t
i
o
n
[
1
5
–
0
]
S
i
g
n
e
x
t
e
n
d
3
2
1
6
I
n
s
t
r
u
c
t
i
o
n
[
2
5
–
2
1
]
I
n
s
t
r
u
c
t
i
o
n
[
2
0
–
1
6
]
I
n
s
t
r
u
c
t
i
o
n
[
1
5
–
0
]
I
n
s
t
r
u
c
t
i
o
n
r
e
g
i
s
t
e
r
A
L
U
c
o
n
t
r
o
l
A
L
U
r
e
s
u
l
t
A
L
U
Z
e
r
o
M
e
m
o
r
y
d
a
t
a
r
e
g
i
s
t
e
r
A
B
I
o
r
D
M
e
m
R
e
a
d
M
e
m
W
r
i
t
e
M
e
m
t
o
R
e
g
P
C
W
r
i
t
e
C
o
n
d
P
C
W
r
i
t
e
I
R
W
r
i
t
e
A
L
U
O
p
A
L
U
S
r
c
B
A
L
U
S
r
c
A
R
e
g
D
s
t
P
C
S
o
u
r
c
e
R
e
g
W
r
i
t
e
C
o
n
t
r
o
l
O
u
t
p
u
t
s
O
p
[
5
–
0
]
I
n
s
t
r
u
c
t
i
o
n
[
3
1
-
2
6
]
I
n
s
t
r
u
c
t
i
o
n
 
[
5
–
0
]
M
u
x
0
2
J
u
m
p
a
d
d
r
e
s
s
 
[
3
1
-
0
]
I
n
s
t
r
u
c
t
i
o
n
 
[
2
5
–
0
]
2
6
2
8
S
h
i
f
t
l
e
f
t
 
2
P
C
 
[
3
1
-
2
8
]
1
1
M
u
x
0
3
2
M
u
x
0
1
A
L
U
O
u
t
M
e
m
o
r
y
M
e
m
D
a
t
a
W
r
i
t
e
d
a
t
a
A
d
d
r
e
s
s
Figura 1
		Instrução
		Balão 1 no início do 2°Ciclo
		Balão 2 no início do 2°Ciclo
		Balão 3 no início do 2°Ciclo
		Balão 4 no início do 3°Ciclo
		Balão 5 no início do 3°Ciclo
		Balão 6 no início do 4°Ciclo
		lw
$t0, 12($s0)
		0x08
		0x10
		0x0000000C
		0x0000000C
		0x10010000
		0x1001000C
		addi
$t2, $t1, 15
		0x0A
		0x09
		0x0000000F
		0x0000000F
		0x00802020
		0x0080202F
		beq
$t3, $t0, enlace
		0x08
		0x0B
		0x000010F0
		0x000010F0
		0x00021008
		0x001043C4*
Valores iniciais:
Registradores:
		$s0 = 0x10010000
		$t1 = 0x00802020
		PC = 0x00102000
		$t0 = 0x00021008
		enlace = 0x000010F0
Memória:
		Endereço
		Conteúdo
		0x10010000
		0x00102020
		0x10010004
		0x00102121
		0x10010008
		0x00102F2F
		0x1001000C
		0x00102A2A
*OBS.: 0x001043C4 = PC + 4 + (0x000010F0 << 2)
QUESTÃO 3. Assunto: Caminho de Dados e Sinais de controle do MIPS Ciclo Único. (Valor total: 6 pontos).
Dada a CPU da figura 1. Insira nas tabelas abaixo, os estados (‘0’, ‘1’ ou ‘X’) dos sinais de controle do caminho de dados ciclo único para que as instruções: add $s1,$t1, $t2 e lw $s1,20($s5) sejam executadas corretamente. Considere que a entrada 0 dos MUXs são as entradas inferiores.
 
 Instrução: add $s1, $t1, $t2
 Instrução: lw $s1, 20($s5)
		Nome do Sinal
		Valor
		PCSrc
		1
		ALUScr
		1
		RegWrite
		1
		MemtoReg
		0
		MemRead
		0
		MemWrite
		0
		Nome do Sinal
		Valor
		PCSrc
		1
		ALUScr
		0
		RegWrite
		1
		MemtoReg
		1
		MemRead
		1
		MemWrite
		0
QUESTÃO 4. Assunto: MIPS Pipeline, Multiciclo e Ciclo Único. (Valor total: 5 pontos do item a ao e, 2 pontos o item f)
Considere somente as informações abaixo que forem relevantes para a sua solução:
· Número de estágios do MIPS pipeline: 5
· Programa que será executado:
1:
Lw r0, 40($r1)
2:
Lw r2, 36($r1)
3:
Lw r4, 32($r1)
4:
Add $r3, $r0, $r2
5:
Add $r5, $r3, $r4
6:
Sub $r6, $r0, $r5
7:
Addi $r7, $r5, 100
8: Ori $r6, $r6, 120
9:
Sw $r7, 100($r1)
10:
Sw $r6, 96($r1)
11:
Sw $r3, 92($r1)
12: Jr $ra
a) Considere que a CPU seja implementada na modalidade Ciclo Único. Em quantos períodos de clock o programa dado seria executado. Justifique sua resposta. (1 ponto) Em 12 (doze) ciclos de clock. Como o programa tem 12 instruções e cada instrução leva um ciclo de clock para ser executada, daí a justificativa do resultado apresentado.
b) Considere que a CPU seja implementada na modalidade Multiciclo. Em quantos períodos de clock o programa dado seria executado. Justifique sua resposta. (1 ponto) 3 Lw, sendo que cada Lw leva 5 ciclos de clock cada para ser executado, Add, Sub, Ori, Jr ou Addi e Sw levam cada uma 4 ciclos de clock para ser executado. Portanto o programa vai levar 51 ciclos de clock para ser executado, ou seja, 3 x 5 + 9 x 4 = 51.
c) Considere que a CPU seja implementada na modalidade Pipeline, sem considerar a existência de Hazards. Em quantos períodos de clock o programa dado seria executado. Justifique sua resposta. (1 ponto) [5 + (n-1)] ciclos de clock, onde 5 é o número de estágios do pipeline e n é o número de instruções do programa. Portanto, o programa será executado em 16 ciclos de clock.
d) Considere que a CPU seja implementada na modalidade Pipeline, considerando a existência de Hazards e unicamente Stalls como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria executado. Justifique onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) 1 stall entre as instruções 3 e 4, mais 2 stalls entre as instruções 4 e 5, mais 2 stalls entre as instruções 5 e 6, mais 1 stall entre a 7 e a 8, mais 1 stall entre a 9 e a 10. Total = 16 + 1 + 2 + 2 + 1 + 1 = 23 ciclos de clock.
e) Considere que a CPU seja implementada na modalidade Pipeline com forwarding, considerando a existência de Hazards, além de Stalls como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria executado. Justifique onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) mais 1 stall entre as instruções 4 e 5, mais 1 stall entre as instruções 5 e 6. Total = 16 + 2 = 18 ciclos de clock.
f) Considere que a CPU seja implementada na modalidade Pipeline com forwarding, considerando a existência de Hazards e a instrução NOP como elemento disponível para retardar o pipeline. Reordene o código de forma que o código produza o mesmo resultado, de forma a eliminar a ocorrência de Hazards e que introduza o mínimo número de NOPs no código final reordenado. (1 ponto)
Antes:
Depois:
1:
Lw r0, 40($r1) 
1:
Lw r0, 40($r1) 
2:
Lw r2, 36($r1)
2:
Lw r2, 36($r1)
3:
Lw r4, 32($r1)
3:
Lw r4, 32($r1)
4:
Add $r3, $r0, $r2
4:
Add $r3, $r0, $r2
5:
Add $r5, $r3, $r4
5: 
NOP
6:
Sub $r6, $r0, $r5
6:
Add $r5, $r3, $r4
7:
Addi $r7, $r5, 100
7:
Sw $r3, 92($r1)
8: Ori $r6, $r6, 120
8:
Sub $r6, $r0, $r5
9:
Sw $r7, 100($r1)
9:
Addi $r7, $r5, 100
10:
Sw $r6, 96($r1)
10:
Ori $r6, $r6, 120
11:
Sw $r3, 92($r1)
11:
Sw $r7, 100($r1)
12: Jr $ra
12:
Sw $r6, 96($r1)
13: Jr $ra
6
5
4
3
2
1
5
avaliacoes de semestres anteriores/2018/Avaliacao2_2016_1_turma TA gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos – Turma TA 
2a. Prova – 25 pontos – 11/05/2016 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA.
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Conversão de números reais para IEEE 754 e vice-versa. (Valor máximo: 6 pontos). 
 
a) Converta o número real +75,25 em notação IEEE 754, precisão simples. Represente o número convertido em hexadecimal. 
Mostre no espaço abaixo como chegou ao número em hexadecimal. 
+75,25= 1,17578125 x 26 (0,5 ponto pela normalização) 
Número positivo, logo sinal = 0 (0,5 ponto pelo sinal) 
Expoente deslocado = 6 + 127 = 133 = 1000 0101 (1,0 ponto pelo expoente) 
0010 1101 0000 0000 0000 000 (1,0 ponto pela mantissa) 
0x42968000 
 
b) Dado o número hexadecimal 0xC3F20000 em notação IEEE 754, pede-se qual número real ele representa. Mostre no 
espaço abaixo como chegou ao número real na base 10. 
1 10000111 11100100000000000000000 
Sinal 1 = negativo (0,5 ponto pelo sinal) 
Expoente = 135 - 127 = 8 (1,0 ponto pelo expoente) 
Mantissa = 1,890625 (1,0 ponto pela mantissa) 
Número em decimal = 1,890625 x 28 = -484.0 (0,5 ponto pelo final) 
 
 
 
 
 
 
 
 
2 
 
QUESTÃO 2. Assunto: Caminho de Dados e Sinais de controle do MIPS Multiciclo. (Valor total: 7 pontos). 
Considere a arquitetura MIPS Multiciclo mostrada na Figura 1, onde são identificados com “números em balões” em alguns dos 
sinais que se propagam pela via de dados. Considere que as instruções sejam executadas na sequência dada. Considere que o valor 
inicial de PC é 0x10010000 
a) Preencha os campos da tabela com os valores solicitados (escreva em hexadecimal o valor pedido) quando cada instrução da 
coluna 1 estiver sendo executada. Preencha os campos da tabela com um traço (-) quando o valor pedido não representar um valor 
útil para a sequência de execução das instruções. 
 
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
 
Figura 1 
 
 
 
Instrução 
Balão 1 no 
início do 
2°Ciclo 
Balão 2 no 
início do 
2°Ciclo 
Balão 3 no 
início do 
2°Ciclo 
Balão 4 no 
início do 
1°Ciclo 
Balão 5 no 
início do 
3°Ciclo 
Balão 6 no 
início do 
3°Ciclo 
sw $t0, 20($s0) 0x2B 0x8 0x0014 0x4 0x1001000C - 
beq $t1, $t0, enlace 0x4 - 0x10F0 0x4 0x0000000B 0x100110F8 
j 16387 0x2 - 0x4003 0x4 - 0x1001000C 
 
Valores iniciais: 
Registradores: 
$s0 = 0x10010000 $t1 = 0x0010202B PC = 0x10010000 $t0 = 0x00021008 enlace = 0x000010F0 
 
Memória: 
b) O caminho de dados da figura 1 não proporciona a 
execução correta da instrução slt. Explique com suas 
palavras o que você proporia como modificação(ões) no 
caminho de dados da figura 1 para que a instrução slt 
fosse corretamente executada. 
Endereço Conteúdo 
0x10010000 0x00102020 
0x10010004 0x00102121 
0x10010008 0x00102F2F 
0x1001000C 0x00102A2A 
1 
2 5 6 3 4 
3 
 
QUESTÃO 3. Assunto: Caminho de Dados e Sinais de controle do MIPS Ciclo Único. (Valor total: 5 pontos). 
Dada a CPU da figura 1. Insira nas tabelas abaixo, os estados (‘0’, ‘1’ ou ‘X’) dos sinais de controle do caminho de dados 
ciclo único para que as instruções: beq $s1, $t1, 4 e add $s1, $s5, $s0 sejam executadas corretamente. Considere que a 
entrada 0 dos MUXs são as entradas inferiores. 
 
 
 
 Instrução: beq $s1, $t1, 4 Instrução: add $s1, $s5, $s0 
 
 Nome do Sinal Valor 
PCSrc 0 
ALUScr 1 
RegWrite 0 
MemtoReg X 
MemRead X 
MemWrite 0 
Nome do Sinal Valor 
PCSrc 1 
ALUScr 1 
RegWrite 1 
MemtoReg 0 
MemRead X 
MemWrite 0 
4 
 
QUESTÃO 4. Assunto: MIPS Pipeline, Multiciclo e Ciclo Único. (Valor total: 5 pontos do item a ao e, 2 pontos o item f) 
 
Considere somente as informações abaixo que forem relevantes para a sua solução: 
 Número de estágios do MIPS pipeline: 5 
 Programa que será executado: 
1: lw $t1, 0($t0) 
2: lw $t2, 4($t0) 
3: add $t3, $t1, $t2 
4: sw $t3, 12($t0) 
5: lw $t4, 8($t0) 
6: add $t1, $t1, $t4 
7: sw $t5, 16($t0) 
 
 
a) Considere que a CPU seja implementada na modalidade Ciclo Único. Em quantos períodos de clock o programa dado seria 
executado. Justifique sua resposta. (1 ponto) Em 7 (sete) ciclos de clock. Como o programa tem 7 instruções e cada 
instrução leva um ciclo de clock para ser executada, daí a justificativa do resultado apresentado. 
 
b) Considere que a CPU seja implementada na modalidade Multiciclo. Em quantos períodos de clock o programa dado seria 
executado. Justifique sua resposta. (1 ponto) 3 Lw, sendo que cada Lw leva 5 ciclos de clock cada para ser executado, Add, 
e Sw levam cada uma 4 ciclos de clock para ser executado. Portanto o programa vai levar 31 ciclos de clock para ser 
executado, ou seja, 3 x 5 + 4 x 4 = 31. 
 
c) Considere que a CPU seja implementada na modalidade Pipeline, sem considerar a existência de Hazards. Em quantos 
períodos de clock o programa dado seria executado. Justifique sua resposta. (1 ponto) [5 + (n-1)] ciclos de clock, onde 5 é o 
número de estágios do pipeline e n é o número de instruções do programa. Portanto, o programa será executado em 11 
ciclos de clock. 
 
d) Considere que a CPU seja implementada na modalidade Pipeline, considerando a existência de Hazards e unicamente Stalls 
como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria executado. 
Justifique por escrito onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) 2 stall entre as 
instruções 2 e 3, mais 2 stalls entre as instruções 3 e 4, mais 2 stalls entre as instruções 5 e 6. Total = 11 + 2 + 2 + 2= 17 
ciclos de clock. 
 
e) Considere que a CPU seja implementada na modalidade Pipeline com forwarding, considerando a existência de Hazards, 
além de Stalls como elemento disponível para retardar o pipeline. Em quantos períodos de clock o programa dado seria 
executado. Justifique onde você precisou incluir stalls. Ex.: Entre a instrução 2 e a instrução 3. (1 ponto) mais 1 stall entre 
as instruções 2 e 3, mais 1 stall entre as instruções 5 e 6. Total = 11 + 2 = 13 ciclos de clock. 
 
f) Considere que a CPU seja implementada na modalidade Pipeline com forwarding, considerando a existência de Hazards e a 
instrução NOP como elemento disponível para retardar o pipeline. Reordene o código de forma que o código produza o 
mesmo resultado, de forma a eliminar a ocorrência de Hazards e que introduza o mínimo número de NOPs no código final 
reordenado. (1 ponto) Total = 11 ciclos de clock. 
 
 
avaliacoes de semestres anteriores/2018/Avaliacao2_2016_2_soluções.pdf
1 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2a Prova – 25 pontos – 10/10/2016 
 
Nome: _____________________________________________________________________________ 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: Assunto: diversificado (valor total: 5 pontos) 
Responda ‘V’ (verdadeiro) ou ‘F’ (falso) para as afirmativas abaixo. Cada marcação correta corresponderá a 0,5 
(meio) ponto. Cada marcação deixada em branco corresponderá a 0 ponto. Cada marcação errada corresponderá 
a -0.5 (menos meio)!
( V ) Os registradores HI e LO do MIPS são usados para a realização da divisão. 
( V ) A codificação para NaN (Not a Number) em ponto flutuante (formato IEEE 754, precisão simples) é: 
exponente igual a 255 e fração diferente de 0. 
( F ) Na microarquitetura ‘ciclo único’ as instruções são armazenadas no registrador de instruções (IR) em 
todos os ciclos de clock. 
( F ) Na microarquitetura ‘ciclo único’ alguns registradores necessitam ser adicionados após cada unidade 
funcional. 
( V ) Na microarquitetura ‘multi-ciclo’ nem todas as instruções usam todos os estágios. 
( V ) Na notação IEEE -754, precisão dupla o valor do deslocamento de correção do expoente vale 1023. 
( F ) As microarquiteturas ‘multi-ciclo’ e ‘pipelining’ apresentam as mesmas características. 
( F ) Na microarquitetura ‘pipelining’ é proibido que um estágio do pipeline faça um acesso de leitura ao um 
registrador, enquanto outro estágio faz um acesso de escrita no mesmo ciclo de clock ao mesmo 
registrador. 
( F ) Pipeline é uma técnica que permite acelerar a execução de uma instrução. 
( V ) Dois números negativos quando somados podem ocasionar overflow. 
 
2 
 
QUESTÃO 2: Assunto: Conversão de números em notação de ponto flutuante. (valor: 5 pontos) 
a) Converta o número 1,125 para a notação ponto flutuante de precisão simples obedecendo a norma IEEE-754. 
a.1) O valor do sinal obtido após a conversão é igual a: 0 (0,5 pontos) 
a.2) O expoente em binário é igual a: 0111 1111 (1.0 ponto) 
a.3) Os 4 bits mais significativos da mantissa são: 0010 (1.0 ponto) 
Mostre seus cálculos. 
 
 
 
 
 
 
 
 
b) Sabendo-se que o dado em hexadecimal 0xC0E00000 armazenado em um registrador de uma CPU é um 
número representado em precisão simples na notação IEEE-754, pede-se: 
b.1) Quantos bits serão necessários para representar a mantissa? 23 bits 
b.2) Qual o valor do expoente em decimal? 2 
b.3) Qual o valor do número real (na base 10) armazenado neste registrador? -7 
Mostre seus cálculos. 
 
 
 
 
 
3 
 
QUESTÃO 3: Assunto: MIPS Ciclo-único e controle. (valor: 5 pontos) 
Dada a microarquitetura na figura 1. Insira nas tabelas abaixo: 
a) Os nomes dos estágios, que são necessários para executar cada instrução. 
b) Os estados (‘0’, ‘1’ ou ‘X’) dos sinais na tabela em cada estágio. 
 
Shift 
left 2
PC
M 
u 
x
0
1
Registers
Write 
register
Write 
data
Read 
data 1
Read 
data 2
Read 
register 1
Read 
register 2
Instruction 
[15– 11]
M 
u 
x
0
1
M 
u 
x
0
1
4
Instruction 
[15– 0]
Sign 
extend
3216
Instruction 
[25– 21]
Instruction 
[20– 16]
Instruction 
[15–0]
Instruction 
register
ALU 
control
ALU 
result
ALU
Zero
Memory 
data 
register
 
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op 
[5– 0]
Instruction 
[31-26]
Instruction [5– 0]
M 
u 
x
0
2
Jump 
address [31-0]Instruction [25–0] 26 28Shift 
left 2
PC [31-28]
1
1 M 
u 
x
0
3
2
M 
u 
x
0
1
ALUOut
Memory
MemData
Write 
data
Address
 
Figura 1 
 
Instrução: add $s1,$t1, $t2 Instrução: lw $s1,5($s5) 
 
 
 Nome do estágio 
IF ID EX ME
M 
 
N
o
m
e
 d
o
 
si
n
al
 
RegWrite 0 0 0 1 
ALUSrcA 0 0 1 X 
MemRead 1 0 0 0 
IorD 0 X X X 
PCWrite 1 0 0 0 
 Nome do estágio 
IF ID EX ME
M 
WB 
N
o
m
e
 d
o
 
si
n
al
 
RegWrite 0 0 0 0 1 
ALUSrcA 0 0 1 X X 
MemRead 1 0 0 1 0 
IorD 0 X X 1 X 
PCWrite 1 0 0 0 0 
4 
 
QUESTÃO 4: Assunto: MIPS Multiciclo e controle. (valor: 5 pontos) 
É dada na figura 2 uma microarquitetura reduzida do tipo MIPS multi-ciclo. Esta microarquitetura pode executar 
todas as instruções lógicas e aritméticas de “tipo R” e a instrução addi (opcode = 0x08). Desenhe a máquina de 
estados finitos com todos estados necessários, ações nos estados, transições e condições, para o correto 
funcionamento desta microarquitetura. 
dados
endereço
Memória
PC
M
U
X Endereço
Escrita
Endereço
Leitura A
Endereço
Leitura B
Dados
Leitura A
Dados
Leitura B
Dados
Escrita
ULA
4
0
1
M
U
X0
1
M
U
X
0
1
Extensão do 
sinal
2
32
IR [15:0]
IR [15:11]
IR [20:16]
IR [25:21]
32
32
32
32
32
32
32
Banco de 
registradores
IR [5:0]
PCWrite
IRWrite
IR
R
eg
D
st
R
eg
W
ri
te
OrigALUA
OrigALUB
2
ALUop
Unidade de Controle
ALUop ULACtrl
U
LA
ct
rl
6
0
1 add
IR[5:0]
IR
 [
3
1
:2
6
]
U
LA
o
u
t
32 
Figura 2 
Init
IF
ALUop = 1
ID OrigALUA = 1
OrigALUB = 0
EX
Tipo-R
EX
addi
IR[
31
:26
] =
 0
IR[31:26] != 0
ALUop = 1
OrigALUA = 1
OrigALUB = “10”
MEM
Tipo - R
RegWrite = 1
RegDist = 1
PCWrite = 1
IRWrite = 1
OrigALUA = 0
OrigALUB = “01”
MEM
addi
RegWrite = 1
5 
 
 
QUESTÃO 5. Assunto: MIPS Pipeline. (Valor total: 5 pontos) 
 
Considere somente as informações abaixo que forem relevantes para a sua solução: 
 1 ns equivale a 10-9 de 1 segundo. 
 Número de estágios do MIPS pipeline: 5 
 Período de clock do pipeline: 40 ns 
 Considere o atraso de 1 período de clock para resolução de cada tipo de conflito. 
 Programa que será executado na CPU: 
Lw $r0, 40($r1) 
Lw $r2, 36($r1) 
Lw $r4, 32($r1) 
Add $r3, $r0, $r2 
Add $r5, $r4, $r2 
Add $r4, $0, $0 
Addi $r6, $r2, 100 
Sw $r3, 100($r1) 
Sw $r5, 96($r1) 
Sw $r6, 92($r1) 
 
a) Dado o diagrama do caminho de dados pipeline, preencha os retângulos com a instrução corrente que 
estará executando por cada um dos estágios do pipeline no décimo período de clock. (2,5 pontos) 
 
 
 
 
b) Em quanto tempo será executado o referido programa na microarquitetura pipeline? Mostre os cálculos 
que fez para que você chegasse ao resultado. (2,5 pontos) 
Número de estágios do pipeline = 5; Período de cada estágio = 40 ns. Número de instruções do programa 
= 10. Número de períodos necessários para a execução do programa = 5 + 9 = 14. 
Como haverá um único conflito de dados, devido a primeira instrução add não ter ainda o resultado $r2 
pronto no estágio ID, é necessário +1 stall. Logo o Tempo de execução do programa = 15 x 40 ns = 600 ns. 
Sw $r5, 96($r1) 
 
Sw $r3, 100($r1) 
 
Addi $r6, $r2, 100 
 
Add $r4, $0, $0 
 
Add $r5, $r4, 
$r2 
avaliacoes de semestres anteriores/2018/Avaliacao2_2017_1_gabarito.pdf
User
Pencil
User
Pencil
avaliacoes de semestres anteriores/2018/Avaliacao2_2017_2_TA_gabarito.pdf
1 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2a Prova – 25 pontos – 11/10/2017 
 
Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: Assunto: Microarquitetura do MIPS Ciclo-único. (valor: 6 pontos) 
A Figura 1 apresenta uma implementação completa da microarquitetura do MIPS ciclo único. Pergunta-se: 
a) A microarquitetura dada na Figura 1 executa a instrução ADD? Caso afirmativo, destaque na via de dados 
o caminho percorrido na execução de uma instrução ADD usando traços pontilhados na própria Figura 1. 
Caso negativo, escreva quais os componentes do caminho de dados que deveriam passar por 
modificações, e quais modificações seriam estas. 
SIM 
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE
0
1
PC0
1
PC' Instr
25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg
4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl
2:0
A
L
U
 
Figura 1 - Microarquitetura
MIPS ciclo único para resposta do item (a) 
 
2 
 
b) A microarquitetura dada na Figura 1 executa a instrução Jump Register (jr)? Caso afirmativo, destaque na 
via de dados o caminho percorrido na execução da instrução usando traços pontilhados na própria Figura 
1. Caso negativo, escreva qual (quais) o(s) componente(s) do caminho de dados que deveria(m) passar 
por modificações, e quais modificações seriam estas. 
NÃO 
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE
0
1
PC0
1
PC' Instr
25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg
4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl
2:0
A
L
U
 
Figura 1 - Microarquitetura MIPS ciclo único para resposta do item (b) 
 
O MUX da via de dados que tem como saída PC´ deverá ter mais uma entrada de dados proveniente da 
saída RD1 do Register File. Esse mesmo MUX deverá ter mais uma entrada de controle de seleção. 
 
3 
 
QUESTÃO 2: Assunto: Microarquitetura MIPS multiciclo e controle. (valor: 8 pontos) 
Dado a microarquitetura multiciclo da figura 2 e o diagrama da máquina de estados finitos da unidade de controle 
da mesma microarquitetura na figura 3. 
ImmExt
CLK
A
RD
Instr / Data
Memory
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1PC
0
1
PC' Instr
25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
Zero
CLK
A
L
U
WD
WE
CLK
Adr
0
1
Data
CLK
CLK
A
B
00
01
10
11
4
CLK
ENEN
00
01
10
<<2
25:0 (Addr)
31:28
27:0
PCJump
5:0
31:26
Branch
MemWrite
ALUSrcA
RegWrite
Op
Funct
Control
Unit
PCSrc
CLK
ALUControl
2:0
ALUSrcB
1:0IRWrite
IorD
PCWrite
PCEn
R
e
g
D
s
t
M
e
m
to
R
e
g
 
Figura 2 - Microarquitetura MIPS multiciclo 
IorD = 0
AluSrcA = 0
ALUSrcB = 01
ALUOp = 00
PCSrc = 00
IRWrite
PCWrite
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
IorD = 1
RegDst = 1
MemtoReg = 0
RegWrite
IorD = 1
MemWrite
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCSrc = 01
Branch
Reset
S0: Fetch
S2: MemAdr
S1: Decode
S3: MemRead
S5: MemWrite
S6: Execute
S7: ALU
Writeback
S8: Branch
Op = LW
or
Op = SW
Op = R-type
Op = BEQ
Op = LW
Op = SW
RegDst = 0
MemtoReg = 1
RegWrite
S4: Mem
Writeback
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst = 0
MemtoReg = 0
RegWrite
Op = ADDI
S9: ADDI
Execute
S10: ADDI
Writeback
PCSrc = 10
PCWrite
Op = J
S11: Jump
 
Figura 3 – FSM da Unidade de Controle do MIPS multiciclo 
 
4 
 
A tabela 1 apresenta a configuração do sinal ALUOp para cada tipo de situação que a microarquitetura dada é 
capaz de executar. 
Tabela 1 – Configuração de ALUOp 
ALUOp Significado 
0 Adição 
1 Subtração 
2 Depende do campo Funct 
3 Não usada 
 
A seguir apresento uma tabela contendo em cada uma de suas linhas uma instrução diferente do conjunto de 
instrução do MIPS. Ainda nessa mesma tabela cada coluna representa um dos sinais de controle da controladora 
mostrada na Figura 2. 
 
Preencha a tabela abaixo com o valor lógico em decimal ou X (don´t care) de cada sinal de controle deverá ter 
quando estiver executando o terceiro ciclo de clock da instrução indicada na linha da tabela. 
 
Instrução ALUSrcB PCSrc PCWrite ALUOp 
Add $s0, $s1, $s2 0 X 0 2 
Lw $s3, 4 ($s4) 2 X 0 0 
Addi $t1, $t2, 12 2 X 0 0 
Beq $s5, $s6, 200 0 3 1 0 1 
 
 
 
5 
 
QUESTÃO 3: Assunto: Microarquitetura pipeline. (valor: 6 pontos) 
Independente da arquitetura ser do MIPS, ARM, x86, ou outra qualquer, pergunta-se: 
a) Descreva na forma de uma sequência de passos lógicos e coerentes, como você projetaria uma 
microarquitetura pipeline a partir de um conjunto de instruções dado como ponto de partida. 
 
1) Eu começaria por construir de forma completa um caminho de dados ciclo único capaz de executar 
todas as instruções do conjunto de instruções dado. 
2) Em seguida, eu desenvolveria a unidade de controle da microarquitetura ciclo único, que é um 
circuito puramente combinacional. 
3) Em seguida, eu dividiria a execução das instruções do conjunto de instruções dado em uma sequência 
de etapas, fazendo com que cada etapa incluísse um subconjunto de componentes funcionais do 
caminho de dados desenvolvido no passo 1. 
4) Entre um subconjunto de componentes e outro eu incluiria um registrador de pipeline. 
5) Faria as ligações necessárias entre os componentes e os registradores de pipeline adicionados. 
6) Propagaria os sinais de controle necessários as etapas subsequentes, fazendo a ligação apropriada 
dos mesmos nos registradores de pipeline. 
 
 
 
 
 
 
 
 
 
 
b) O número de estágios de pipeline é um ponto importante na tomada de decisão para o projeto de 
microarquitetura pipeline, principalmente quando se deseja obter um melhor desempenho em vazão de 
instruções de programa por unidade de tempo. Discorra sobre as vantagens e desvantagens de se optar 
por um número maior ou menor de estágios de pipeline na implementação da microarquitetura. 
 
Vantagens de se optar por um número maior de estágios de pipeline: 
1) Aumento da frequência de clock. 
2) Maior vazão de instruções por unidade de tempo no caso ideal. 
Desvantagens de se optar por um número maior de estágios de pipeline: 
1) Aumento da área ocupada na implementação final da microarquitetura. 
2) Aumento do consumo de energia; 
3) Possibilidade de aumento do número de conflitos (hazards). 
4) Aumento do overhead por sequenciamento devido ao maior número de registradores de pipeline. 
 
c) Qual a vantagem de se ter uma microarquitetura pipeline com número de estágios bem balanceados em 
termos de atraso de propagação? 
Melhor relação de compromisso entre a frequência máxima de operação e o número de estágios do 
pipeline. 
 
 
6 
 
QUESTÃO 4: Assunto: Exceções e Microarquiteturas avançadas. (valor: 5 pontos) 
a) Quais componentes físicos são dedicados unicamente ao tratamento exclusivo das exceções do MIPS e 
qual o papel de cada um no tratamento de exceções. 
Os registradores Cause e EPC localizados no Coprocessador 0 do MIPS. 
 
 
 
 
 
 
b) Para uma microarquitetura MIPS 32 bits multithread, capaz de executar 8 threads ao mesmo tempo quais 
componentes e quantas cópias do mesmo deveriam aparecer na implementação do caminho de dados? 
O PC (Program Counter) e o Banco de Registradores. 8 cópias de cada. 
 
avaliacoes de semestres anteriores/2018/Avaliacao3_2014_1_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3
a
. Prova – 25 pontos – 28/05/2014 
 
 Nome: GABARITO 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
PARTE 1. Assunto: Conceitos abordados nos capítulos Tópicos de E/S e Armazenamento 
(Valor: 10 pontos, sendo 2 pontos cada). 
 
Questão 1: É correto afirmar que: 
a) Um disco rígido é um dispositivo de entrada e saída para armazenamento de dados voláteis. 
b) A tecnologia SSD permite a construção de HDs com maior capacidade de armazenamento que os HDs magnéticos. 
c) Um disco rígido SDD é mais resistente a choques mecânicos que um disco rígido magnético. 
d) Memória flash é um tipo de memória volátil. 
 
Questão 2: É correto afirmar que: 
a) RAID 1 oferece mais confiabilidade que RAID 0. 
b) RAID 0 não oferece nenhuma vantagem em relação a um único disco rígido. 
c)
RAID 5 oferece maior disponibilidade que RAID 6. 
d) RAID 5 é pouco usado em decorrência do surgimento de RAID 6. 
 
Questão 3: Para que um sistema de 5 discos em RAID 5 possa funcionar corretamente, deverei: 
a) Reservar um disco para paridade par ou ímpar e 4 discos para os dados. 
b) Armazenar dados e paridades espalhadas nos 5 discos, segundo um padrão definido. 
c) Reservar 1 disco para paridade, 1 disco para backup e 3 discos para dados. 
d) Reservar 2 discos para paridade e 3 discos para dados. 
 
Questão 4: A Disponibilidade de um sistema de E/S aumenta a medida que: 
a) Aumento a quantidade de interrupções do serviço. 
b) Diminuo a confiabilidade. 
c) Aumento o tempo de reparo. 
d) Diminuo o tempo de reparo. 
 
Questão 5: É correto afirmar que: 
a) Polling demanda pouca atenção por parte da CPU em um processador e E/S. 
b) Interrupções podem ser consideradas exceções que demandam a atenção da CPU. 
c) Interrupções sempre são atendidas pela CPU. 
d) Controladoras de DMA dependem da CPU para realizar cada passo do processo de transferência de dados da memória para 
o dispositivo de E/S e vice-versa. 
 
2 
 
PARTE 2. Assunto: Memória Cache e Hierarquia de memórias. 
(Valor: 10 pontos, sendo 2 pontos cada). 
 
Questão 6: Certa CPU necessita acessar um byte que está no endereço 0xA482 de memória. Podemos afirmar que o byte em 
questão é o byte: 
a) Byte 0 de uma cache completamente associativa. 
b) Byte 0 de uma cache diretamente mapeada. 
c) Byte 2 independentemente da forma de organização da cache. 
d) Byte 4. 
 
Questão 7: Certa CPU necessita acessar uma palavra de 32 bits que está no endereço 0xA482 de memória. Considere que a cache 
esta mapeada diretamente. Considere ainda que a cache possui 4096 entradas (endereços) diferentes e que em cada endereço cabe 
uma única palavra. Podemos afirmar que a palavra procurada pela CPU se encontra: 
a) No bloco 1154 da cache. 
b) No bloco 10 da cache. 
c) No bloco 28 da cache. 
d) No bloco 130 da cache. 
 
Questão 8: Uma cache de 2 vias associativa por conjuntos tem de conter: 
a) Dois comparadores para cada entrada da cache. 
b) Dois comparadores para cada palavra da cache. 
c) Dois comparadores para todos os conjuntos da cache. 
d) Dois comparadores para cada byte da cache. 
 
Questão 9: É correto afirmar que, a medida que aumento a associatividade em caches são necessários: 
a) Menos comparadores e menos bits de tag por bloco da cache. 
b) Menos comparadores e mais bits de tag por bloco da cache. 
c) Mais comparadores e menos bits de tag por bloco da cache. 
d) Mais comparadores e mais bits de tag por bloco da cache. 
 
Questão 10: Uma cache associativa por conjunto de 4 vias possui 1024 entradas diferentes. A CPU deseja a palavra de 32 bits que 
esta armazenada no endereço 0xA482 da memória. Qual o tamanho da tag e do índice respectivamente da palavra buscada nessa 
cache? 
a) Tag 10 bits e índice 20 bits. 
b) Tag 22 bits e índice 10 bits. 
c) Tag 20 bits e índice 10 bits. 
d) Tag 18 bits e índice 10 bits. 
 
User
Note
Questão anulada.
Primeiro: 
Endereços de palavras de 32 bits na memória terminam em 0, 4, 8 ou C, portanto 0xA482 não é um endereço de uma palavra na memória, mas sim de um byte.
Segundo:
Ainda que considerássemos como endereço da palavra 0xA480 (por exemplo), os 2 bits menos significativos seriam o byte offset (ID do byte dentro da palavra), seguido do endereço da cache (endereço do conjunto - set, que é o mesmo do que o endereço do bloco para esse exemplo, que é o mesmo que o endereço da palavra para esse exemplo). Nesse exemplo 1 set = 1 bloco = 1 palavra.
Sendo assim o endereço do bloco seria: 0x920 (1001 0010 0000) = 2336 em decimal
User
Strikeout
3 
 
PARTE 3. Assunto: Memória Virtual. 
(Valores: 1+2+2 respectivamente). 
 
Questão 11: É correto afirmar que: 
a) Memória virtual é uma técnica que usa o armazenamento secundário como uma “cache” da memória primária. 
b) Memória virtual é uma técnica que usa a memória principal como uma “cache” para o armazenamento secundário. 
c) Memória virtual é uma técnica que usa a cache para acelerar a busca de dados na memória principal. 
d) Memória virtual é uma técnica que usa a cache para acelerar a busca de dados na memória secundária. 
 
Questão 12: É correto afirmar que: 
a) Se um dado está na TLB ele tem de estar na cache e necessariamente tem de estar na tabela de páginas. 
b) Se um dado está na TLB ele pode não estar na cache, mas necessariamente tem de estar na tabela de páginas. 
c) Se um dado não está na TLB ele tem de estar na cache, mas não necessariamente tem de estar na tabela de páginas. 
d) Se um dado não está na TLB ele pode não estar na cache, mas necessariamente tem de estar na tabela de páginas. 
 
Questão 13: Com um endereço virtual de 32 bits, página de 4 KB e 4 bytes por entrada de uma tabela de páginas, podemos calcular 
o tamanho total da tabela de páginas. A alternativa que contém o valor correto para essa situação é: 
a) 400 KB 
b) 1 MB 
c) 2 MB 
d) 4 MB 
avaliacoes de semestres anteriores/2018/Avaliacao3_2014_2 versao final gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a. Prova – 25 pontos – 19/11/2014 
 
 Nome: _________________________________________________________________ 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
Assuntos: Memória Cache e hierarquia de memórias. (Valor total: 10 pontos) 
Considere as seguintes informações: 
1) 18 bits são reservados para o campo TAG da cache. 
2) 8 bits são reservados para o índice da cache. 
3) 4 bits são reservados para o deslocamento dentro do bloco da cache (block offset). 
4) 2 bits são reservados para a escolha do byte dentro do bloco (byte offset). 
5) Uma palavra por bloco. 
 
QUESTÃO 1. Qual o número de entradas, ou o número de blocos dessa cache? 
a) 16 blocos 
b) 64 blocos 
c) 128 blocos 
d) 256 blocos 
 
QUESTÃO 2. Qual o tamanho da palavra em bits? 
a) 16 bits 
b) 32 bits 
c) 64 bits 
d) 128 bits 
 
QUESTÃO 3. Qual o número de blocos por entrada da cache? 
a) 4 blocos 
b) 8 blocos 
c) 16 blocos 
d) 32 blocos 
 
QUESTÃO 4. Qual a quantidade em bits do endereço da memória cache? 
a) 16 bits 
b) 20 bits 
c) 24 bits 
d) 32 bits 
 
QUESTÃO 5. Como você classifica essa memória cache? 
a) Cache mapeada diretamente. 
b) Cache associativa por conjunto de 4 vias. 
c) Cache associativa por conjunto de 16 vias. 
d) Cache associativa por conjunto de 32 vias. 
 
 
User
Note
O termo block offset nessa questão explicita qual a palavra dentro do bloco.
Portanto cada bloco nesse caso possuí 16 palavras.
User
Note
18 + 8 + 4 + 2 = 32 bits
User
Note
O número de entradas está relacionado ao número de endereços diferentes da cache.
A cache é organizada por conjuntos (sets).
E cada conjunto (set) tem o seu próprio endereço.
Como são 8 bits do endereço gerado pela CPU, destinados a representar o índice da cache (endereço da cache), logo haverá:
2^8 = 256 endereços diferentes na cache (256 sets).
Como trata-se de uma cache mapeada diretamente (1 set = 1 bloco), logo a resposta correta é a letra d.
User
Strikeout
blocos não = palavras é o termo correto.
User
Strikeout
User
Strikeout
User
Strikeout
User
Strikeout
User
Strikeout
User
Strikeout
do endereço não = de cada dado armazenado na memória cache é o correto
2 
 
Assuntos: Memória Virtual, Tabelas de Páginas e TLBs. (valor: 10 pontos) 
Considere um sistema de memória virtual com as seguintes propriedades: 
1) O tamanho do registrador de tabela de página é igual a 32 bits. 
2) O tamanho do campo do endereço virtual reservado ao número da página virtual é igual a 20 bits. 
3) O tamanho do deslocamento dentro da página virtual é de 12 bits. 
4) O tamanho do endereço físico é igual a 30 bits. 
5) Considere que cada
entrada da tabela de página contenha somente 1 bit de validade. 
 
QUESTÃO 6. Qual o total de páginas virtuais desse sistema de memória? 
a) 210 páginas 
b) 212 páginas 
c) 218 páginas 
d) 220 páginas 
 
QUESTÃO 7. Qual o tamanho em bits de cada entrada da tabela de páginas? 
a) 18 bits 
b) 19 bits 
c) 20 bits 
d) 21 bits 
 
QUESTÃO 8. Qual o tamanho em bits do endereço físico da página? 
a) 18 bits 
b) 19 bits 
c) 20 bits 
d) 21 bits 
 
QUESTÃO 9. Qual o tamanho do campo (em bits) do deslocamento dentro da página física? 
a) 10 bits 
b) 11 bits 
c) 12 bits 
d) 18 bits 
 
QUESTÃO 10. Qual o tamanho total (em bits) da tabela de páginas? 
a) 18 x 220 bits 
b) 19 x 220 bits 
c) 18 x 232 bits 
d) 19 x 232 bits 
 
3 
 
 
Assuntos: Sistemas de Entrada e Saída, Multiprocessadores, Multicores e Clusters (valor: 10 pontos) 
 
QUESTÃO 11. É correto afirmar sobre os modos de operação de transferência de dados entre dispositivos de E/S e memória 
que: 
a) DMA (Direct Memory Access) é o modo que demanda menor intervenção da CPU se comparado ao modo por 
Interrupção e modo Polling. 
b) DMA (Direct Memory Access) é o modo mais apropriado para transferência de dados de um teclado para a memória de 
um computador. 
c) Polling é um modo de transferência de dados adequado à comunicação de pen-drives com a memória de um 
computador. 
d) No modo de transferência de dados por interrupção a CPU esta continuamente consultando o estado do dispositivo de 
E/S. 
 
QUESTÃO 12. É correto afirmar sobre a técnica RAID (Redundant Array of Inexpensive Disks) que: 
a) RAID 0 prevê espelhamento de disco. 
b) A leitura de dados em discos organizado como RAID 1 é mais rápida que RAID 0. 
c) RAID 5 demanda cálculo de paridade. 
d) A técnica de RAID 5 por si só já é eficiente quanto a alta disponibilidade sem necessidade de nenhum disco de backup 
adicional. 
 
 
Figura 1 – Servidor Sun Fire x4150 
 
Dado o Servidor Sun Fire x4150 da figura 1 pede-se: 
 
QUESTÃO 13. Qual a taxa máxima de transferência de dados da memória principal para a CPU e vice-versa? 
a) 5.3 GB/s 
b) 10.6 GB/s 
c) 21.2 GB/s 
d) 64 GB/s 
 
QUESTÃO 14. Supondo que a capacidade de armazenamento de cada HD é de 2 TB, qual a capacidade de armazenamento total 
de memória secundária do servidor Sun Fire x4150? 
a) 2 TB 
b) 4 TB 
c) 8 TB 
d) 16 TB 
 
 
4 
 
A figura 2 mostra como três threads A, B e C executariam separadamente em uma arquitetura superescalar com pipeline de 5 
estágios, sem recursos para multithreading. 
 
Thread A Thread B Thread C 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 2 – Execução separada de 3 threads em uma arquitetura superescalar com pipeline de 5 estágios. 
 
QUESTÃO 15. A alternativa que melhor representa a execução das 3 threads em uma arquitetura superescalar com pipeline de 5 
estágios e com recurso de multithreading de granularidade fina é: 
 
a) b) c) d) 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tempo 
avaliacoes de semestres anteriores/2018/Avaliacao3_2015_1 versao final gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a. Prova – 25 pontos – 17/06/2015 
 
 Nome: _________________________________________________________________ 
 
 
 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
Assuntos: Memória Cache e hierarquia de memórias. (Valor total: 10 pontos) 
Considere as seguintes informações: 
1) Quatro palavras de 32 bits por bloco. 
2) Cada conjunto possuí 4 blocos. 
3) Cada entrada da cache possuí 4 conjuntos. 
4) A cache tem 256 entradas diferentes. 
 
QUESTÃO 1. Qual o número de bits do índice dessa cache? 
a) 4 
b) 8 
c) 12 
d) 32 
 
QUESTÃO 2. Sabendo-se que o acesso de dados é por byte, qual o tamanho do offset (deslocamento) do byte dentro da palavra? 
a) 2 bits 
b) 3 bits 
c) 4 bits 
d) 6 bits 
 
QUESTÃO 3. Qual a quantidade total de blocos dessa cache? 
a) 1024 blocos 
b) 2048 blocos 
c) 4096 blocos 
d) 512 blocos 
 
QUESTÃO 4. Qual a quantidade em bits do endereço da memória cache? 
a) 16 bits 
b) 20 bits 
c) 24 bits 
d) 32 bits 
 
QUESTÃO 5. Como você classifica essa memória cache? 
a) Cache mapeada diretamente. 
b) Cache associativa por conjunto de 4 vias. 
c) Cache associativa por conjunto de 16 vias. 
d) Cache associativa por conjunto de 32 vias. 
 
 
2 
 
Assuntos: Memória Virtual, Tabelas de Páginas e TLBs. (valor: 10 pontos) 
 
QUESTÃO 6. Se o campo de deslocamento dentro da página de um endereço virtual tem 12 bits, podemos afirmar que: 
a) A memória virtual tem 212 páginas. 
b) A página tem 212 blocos. 
c) O endereço real tem 4096 bytes. 
d) O endereço virtual é menor que o endereço real. 
 
QUESTÃO 7. O bit de validade da tabela de páginas serve para: 
a) Indicar se a página presente na entrada da tabela de páginas está presente na memória real ou não. 
b) Indicar se a entrada da tabela de páginas possui o bloco procurado. 
c) Indicar se a página procurada está na TLB. 
d) Indicar se a página presente na entrada da tabela de páginas 
 
QUESTÃO 8. O registrador de tabela de páginas tem 16 bits, logo o tamanho de entradas da tabela de páginas é: 
a) 64 K 
b) 32 K 
c) 16 K 
d) 12 K 
 
QUESTÃO 9. Se o campo de deslocamento dentro da página de um endereço virtual tem 12 bits, podemos afirmar que o tamanho 
do campo (em bits) do deslocamento dentro da página física tem: 
a) 12 bits 
b) 13 bits 
c) 16 bits 
d) 18 bits 
 
QUESTÃO 10. Se o tamanho do endereço virtual é 32 bits e o campo de deslocamento dentro da página de um endereço virtual é 
12 bits, podemos afirmar que o tamanho do endereço (em bits) da página virtual é: 
a) 12 bits 
b) 16 bits 
c) 18 bits 
d) 20 bits 
 
3 
 
 
Assuntos: Sistemas de Entrada e Saída, Multiprocessadores, Multicores e Clusters (valor: 05 pontos) 
 
Um disco rígido apresenta um tempo médio de leitura de 3,2 ms. Sabendo-se que esse disco apresenta um tempo médio de busca 
igual a 1 ms; um tempo de overhead da controladora de 0,2 ms; um tempo de transferência de setores desprezível em relação 
aos demais tempos apresentados, pergunta-se: 
 
QUESTÃO 11. Qual o tempo total de latência de rotação do disco? 
a) 1 ms 
b) 1,2 ms 
c) 2,0 ms 
d) 2,2 ms 
 
A figura 1 mostra como três threads A, B e C executariam separadamente em uma arquitetura superescalar com pipeline de 5 
estágios, sem recursos para multithreading. 
 
Thread A Thread B Thread C 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1 – Execução separada de 3 threads em uma arquitetura superescalar com pipeline de 5 estágios. 
 
QUESTÃO 12. A alternativa que melhor representa a execução das 3 threads em uma arquitetura superescalar com pipeline de 5 
estágios e com recurso de multithreading de granularidade grossa é: 
 
a) b) c) d)
Tempo 
avaliacoes de semestres anteriores/2018/Avaliacao3_2015_2_gabarito.doc
Escola de Engenharia da UFMG
Departamento de Engenharia Eletrônica
Sistemas Processadores e Periféricos
3a. Prova – 25 pontos – 09/12/2015
Nome: GABARITO
		
NÃO DESTAQUE AS FOLHAS DA PROVA.
Apresente suas respostas com organização, no espaço reservado para cada questão.
QUESTÃO 1. Assunto: Arquiteturas Multithread. (Valor máximo: 5 pontos). 
Considere a execução das threads abaixo em três arquiteturas: multithread de grão grosso (MTGG) e de grão fino (MTGF) e multithread simultânea (SMT). Mostre como elas seriam executadas em cada arquitetura.
		Thread A
Thread B
Thread C
Thread D
A1
A1
A1
B1
B1
C1
C1
C1
D1
D1
D1
A2
A2
A2
A2
B2
B2
D2
D2
D2
D3
A3
B3
B3
B3
B3
C2
C2
C2
C2
D4
D4
A4
A4
A4
A4
C3
C3
A5
A5
B4
B4
C4
C4
C4
D5
D5
D5
D5
A6
A6
A6
A6
B5
B5
B5
C5
C5
D6
A7
B6
B6
C6
C6
D7
D7
D7
B7
D8
		MTGG
MTGF
SMT
A1
A1
A1
A1
A1
A1
A1
A1
A1
B1
A2
A2
A2
A2
B1
B1
B1
C1
C1
C1
B1
B1
C1
C1
C1
D1
D1
D1
A2
B2
B2
D1
D1
D1
A2
A2
A2
B2
C1
C1
C1
A2
A2
A2
A2
B2
D2
D2
D2
D1
D1
D1
B2
B2
D3
A3
B3
B3
A3
D2
D2
D2
B3
B3
C2
C2
A4
A4
A4
A4
D3
C2
C2
D4
D4
B3
B3
B3
B3
A3
A4
A4
A4
A4
C2
C2
C2
C2
B3
B3
B3
B3
C3
C3
A5
A5
C3
C3
C2
C2
C2
C2
B4
B4
C4
C4
D2
D2
D2
D4
D4
C4
D5
D5
D5
D3
A4
A4
A4
A4
D5
A6
A6
A6
D4
D4
C3
C3
A6
B5
B5
B5
A5
A5
A5
A5
C5
C5
D6
A7
A6
A6
A6
A6
B4
B4
B6
B6
C6
C6
A7
C4
C4
C4
D7
D7
D7
B7
B4
B4
D5
D5
D5
D5
D8
B5
B5
B5
A6
A6
A6
A6
C4
C4
C4
B5
B5
B5
C5
C5
C5
C5
D5
D5
D5
D5
D6
D6
A7
QUESTÃO 2. Assunto: Memória virtual. (Valor total: 5 pontos).
Considere uma implementação de memória virtual com paginação, com 64 páginas virtuais, TLB totalmente associativa com quatro entradas e memória primária com oito páginas físicas, ambas com política FIFO de substituição (a coluna ID indica a idade da página). Considerando as referências a páginas virtuais dadas abaixo e assumindo que a TLB e a memória física têm o estado inicial dado na coluna EI, determine os próximos estados, assinale as faltas ocorridas e indique quais entradas da TLB e da tabela de páginas serão escolhidas como vítimas para substituição.
		Referências
		ID
		EI
		9
		52
		25
		26
		1
		52
		1
		15
		26
		0
		32
		39
		1
		52
		1
		15
		TLB
		Falta?
		-
		-
		S
		S
		S
		S
		S
		N
		N
		S
		N
		S
		S
		S
		S
		S
		N
		S
		
		0
		1
		48
		
		
		25
		
		
		
		
		
		
		0
		
		
		
		52
		
		
		
		1
		3
		2
		9
		
		
		
		1
		
		(
		
		
		
		
		39
		
		
		
		
		
		2
		0
		34
		
		
		
		26
		
		
		
		
		(
		
		32
		
		
		
		
		15
		
		3
		2
		25
		
		52
		
		
		
		(
		
		15
		
		
		
		
		1
		
		(
		
		Vítima
		-
		-
		1
		3
		0
		2
		1
		-
		-
		3
		-
		0
		2
		1
		3
		0
		-
		2
		PÁGINA FÍSICA
		Falta?
		-
		-
		N
		S
		N
		N
		S
		-
		-
		S
		-
		S
		S
		S
		N
		N
		-
		N
		
		0
		3
		2
		
		
		
		
		
		
		
		
		
		
		32
		
		
		
		
		
		
		1
		6
		39
		
		
		
		
		1
		
		
		
		
		
		
		
		(
		
		
		
		
		2
		5
		26
		
		
		
		(
		
		
		
		15
		
		
		
		
		
		
		
		(
		
		3
		1
		48
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		4
		2
		25
		
		
		(
		
		
		
		
		
		
		
		
		39
		
		
		
		
		
		5
		4
		9
		(
		
		
		
		
		
		
		
		
		0
		
		
		
		
		
		
		
		6
		0
		34
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		7
		7
		36
		
		52
		
		
		
		
		
		
		
		
		
		
		
		(
		
		
		Vítima
		-
		-
		-
		7
		-
		-
		1
		-
		-
		2
		-
		5
		0
		4
		-
		-
		-
		-
QUESTÃO 3. Assunto: Memória Cache. (Valor total: 5 pontos).
Considere uma memória cache de 2048 bytes, com a organização de associatividade por conjunto de 4 vias e com 16 palavras por bloco. Para as referências à memória dadas pelos endereços abaixo (12 bits em hexadecimal), determine quais referências geram faltas (miss) ou acertos (hit) na cache, bem como o estado final do conteúdo da cache. Assume que a controladora faça a substituição de blocos pelo modo FIFO.
		Índice
		Referência
		Referência
		Referência
		Referência
		0
		200
		21C
		000
		23C
		1
		05C
		
		
		
		2
		
		
		
		
		3
		2E4
		
		
		
		4
		104
		
		
		
		5
		15C
		160
		360
		
		6
		3A8
		
		
		
		7
		1C8
		1C0
		1E8
		
Referências:
		Referência
		15C
		200
		3A8
		1C8
		21C
		1C0
		05C
		000
		Hit / Miss
		M
		M
		M
		M
		M
		M
		M
		M
		Índice
		5
		0
		6
		7
		0
		7
		1
		0
		Etiqueta
		0
		1
		1
		0
		1
		0
		0
		0
		Referência
		23C
		160
		1E8
		1C8
		104
		000
		2E4
		360
		Hit / Miss
		M
		M
		M
		H
		M
		H
		M
		M
		Índice
		0
		5
		7
		7
		4
		0
		3
		5
		Etiqueta
		1
		0
		0
		0
		0
		0
		1
		1
QUESTÃO 4. Assunto: RAID. (Valor total: 5 pontos)
Você possui cinco discos rígidos idênticos. Cada disco tem um tamanho de 1,5 GByte. 
a) Proponha e desenhe um sistema de redundância baseado em alguma técnica RAID de forma a oferecer ao sistema computacional uma capacidade de armazenamento de dados total de 6 GBytes, uso equilibrado para leitura e escrita em disco, e que não perca o funcionamento no caso de perda de um disco. (3 pontos)
b) Suponha que os dados seguintes são armazenados em discos diferentes: 0x0F, 0x11, 0xE2 e 0x81. Mostre como o seu sistema proposto pode restaurar o dado 0x11 no caso de uma perda do disco, no qual este dado foi armazenado. (2 pontos)
		D. #1: 00001111 (0x0F)
D. #2: 00010001 (0x11)
D. #3: 11100010 (0xE2)
D. #4: 10000001 (0x81)
(Paridade par, XOR)
D. #5: 01111101 (0x7D)
		D. #1: 00001111 (0x0F)
D. #2: -------------
D. #3: 11100010 (0xE2)
D. #4: 10000001 (0x81)
D. #5: 01111101 (0x7D)
(Paridade Par, XOR)
D.#2’: 00010001 (0x11)
		
QUESTÃO 5. Assunto: Tempo de acesso à leitura e escrita em HDDs. (Valor total: 5 pontos)
Meu professor me mostrou em sala de aula a resolução de um problema sobre a forma de calcular a recuperação de dados de disco rígido usando leitura por blocos . As especificações do disco dadas no enunciado do problema foram:
Velocidade de rotação do disco: 7200 RPM
Tempo médio de busca: 5ms
Taxa de transferência de dados: 80MB/s
Tamanho do bloco: 4KB
O problema pedia qual o tempo necessário para se ler um bloco de 4 KB.
O professor apresentou os seguintes cálculos no quadro:
5 ms + 4,166 ms + 0,049 ms = 9,215 ms para se ler um bloco.
Eu não entendi como ele fez o cálculo ou de onde tais números vieram.
1) Como você explicaria ao aluno os cálculos realizados pelo professor? (3 pontos)
O primeiro termo da expressão de cálculo é obtido diretamente do enunciado da questão. Trata-se do tempo médio de busca do dado, ou seja, o tempo que leva para a cabeça de leitura do disco se posicionar sob a trilha que contém o dado a ser lido.
O segundo termo da expressão de cálculo é obtido por uma regra de três e pelo fato de que no melhor caso a cabeça estará sob o setor a ser buscado (neste caso não haverá latência por parte da rotação do disco). No pior caso o disco tem que realizar uma volta completa). Na média a latência obtida por causa da rotação do disco vai ser (60/7200)/2 = 0,0041666 s 
O terceiro termo da expressão é taxa de transferência de dados por segundo. Divide-se o tamanho do bloco a ser lido pela taxa de transferência de dados dada no enunciado, adequando-se as unidades.
(4e3 B) / (80e6 B/s) ≈ 0,00005 s ou 0,05 ms
Suponha agora uma segunda situação, onde você desejando obter um maior desempenho na leitura de blocos por unidade
de tempo, tivesse a sua disposição um disco rígido SSD (Solid State Device) de 240 GB com as seguintes características exibidas no quadro abaixo. 
Pergunta-se:
2) Qual o tempo necessário para se ler um bloco de 4 KB armazenado neste disco SSD? (Mostre seus cálculos). (2 pontos)
50 us + (131072/550000000) s
0,5e-4 + 2,383e-4 = 2,883e-4 s ou 288 us ou 0,288 ms
6
avaliacoes de semestres anteriores/2018/Avaliacao3_2016_1_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a. Prova – 25 pontos – 27/06/2016 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
 
QUESTÃO 1. Assunto: Arquiteturas Multithread. (Valor máximo: 5 pontos). 
 
Considere a execução das threads abaixo em três arquiteturas: multithread de grão grosso (MTGG) e de grão fino 
(MTGF) e multithread simultânea (SMT). Mostre como elas seriam executadas em cada arquitetura. 
 
 
 
 
 
 
 
 
Thread A Thread B Thread C Thread D 
A1 A1 A1 B1 B1 C1 C1 C1 D1 D1 D1 
A2 A2 A2 A2 B2 B2 C2 C2 C2 C2 D2 D2 D2 
A3 B3 B3 B3 B3 D3 
A4 A4 A4 B4 B4 C3 C3 D4 D4 
 C4 C4 C4 D5 D5 D5 D5 
A5 A5 B5 B5 B5 
A6 A6 A6 A6 B6 B6 C5 C5 
A7 B7 C6 C6 
 D6 
 D7 D7 D7 
 
 D8 
 
 
 
 
 
 
 
 
MTGG MTGF SMT 
A1 A1 A1 A1 A1 A1 A1 A1 A1 B1 
A2 A2 A2 A2 B1 B1 B1 C1 C1 C1 
A3 C1 C1 C1 D1 D1 D1 A2 
A4 A4 A4 D1 D1 D1 A2 A2 A2 B2 
B1 B1 A2 A2 A2 A2 B2 C2 C2 C2 
B2 B2 B2 B2 C2 D2 D2 D2 
B3 B3 B3 B3 C2 C2 C2 C2 A3 B3 B3 B3 
B4 B4 D2 D2 D2 B3 D3 A4 A4 
C1 C1 C1 A3 A4 B4 B4 C3 
C2 C2 C2 C2 B3 B3 B3 B3 C3 D4 D4 C4 
D1 D1 D1 D3 C4 C4 D5 D5 
D2 D2 D2 A4 A4 A4 A4 D5 D5 A5 A5 
D3 B4 B4 B5 B5 B5 A6 
D4 D4 C3 C3 A6 A6 A6 B6 
D5 D5 D5 D5 D4 D4 B6 C5 C5 A7 
A5 A5 C4 C4 C4 B7 C6 C6 D6 
A6 A6 A6 A6 D5 D5 D5 D5 D7 D7 D7 D8 
A7 A5 A5 
B5 B5 B5 B5 B5 B5 
B6 B6 A6 A6 A6 A6 
B7 B6 B6 
C3 C3 C5 C5 
C4 C4 C4 A7 
 
2 
 
QUESTÃO 2. Assunto: Hierarquia de Memória. (Valor total: 10 pontos). 
 
Observação: Você deve apresentar os cálculos e/ou justificativas plausíveis que o levaram a chegar aos resultados. 
Resultados sem justificativas ou demonstração de cálculos não serão contabilizados, ainda que possam estar com valor 
final correto. 
 
Considere como dados: 
1. Um Hard-disk tem capacidade de armazenamento para 512 páginas. 
2. Cada página possuí 64 blocos de 16 bytes. 
Uma cache organizada de forma associativa por conjuntos com: 
1. 16 blocos; 
2. 4 conjuntos, sendo cada conjunto com 4 blocos cada. 
3. Cada bloco contém 4 palavras. 
4. Cada palavra contém 4 bytes. 
5. Endereçamento pode ser feito tanto por byte como por palavra. 
Considere ainda: 
1. O endereço virtual tem 14 bits. 
2. O endereço real tem 12 bits. 
 
Pergunta-se: 
a) Qual a capacidade de armazenamento em bytes da memória principal instalada? 
212= 4 KB 
b) Qual a capacidade de armazenamento em bytes da memória secundária (Hard disk)? 
512 x 64 x 4 x 4 = 29x26x22x22=219= 512 KB 
c) Qual a capacidade de armazenamento em bytes da memória cache? Não inclua nos cálculos os bits de controle e 
tags. 
16 x 4 x 4 = 256 B 
d) Qual a capacidade de armazenamento em bits da memória cache, incluindo nos cálculos os bits de controle e 
tags? 
Cada bloco da cache possui 16 bytes (4 palavras de 4 bytes), portanto 128 bits. 
A tag tem 8 bits. Precisamos acrescentar 1 bit de validade + 1 dirty bit. Total de 10 bits a mais por bloco. 
Logo, por bloco precisaremos 138 bits. Como a cache tem 16 blocos, por fim teremos 138 x 16 = 828 bits no 
total. 
e) Qual o tamanho em bits da tabela de páginas do sistema proposto? 
214x (1 + 2) = 49152 bits = 48 Kbits = 6 KBytes 
f) Desenhe e dimensione uma TLB para este sistema. Inclua os bits de controle e campos de dados necessários em 
cada linha (entrada) da TLB. Inclua o tamanho e uma identificação (nome) para cada campo do desenho. 
g) Quantos comparadores são necessários na cache proposta no enunciado do problema? 
4 vias (4 blocos por conjunto) → 4 comparadores 
h) Qual o tamanho em bits de cada comparador? 
TAG = 4 + 4 bits = 8 bits → comparadores com 8 bits de tamanho. 
i) Qual o tamanho da memória virtual (em bytes)? 
16 x 64 x 4 x 4 = 24x26x22x22=214= 16 KB 
j) Indique os bits do endereço reservados aos seguintes campos: 
a. Byte offset: bit 1 e bit 0 
b. Word offset: bit 3 e bit 2 
c. Set offset: bit 5 e bit 4 
d. Endereço do bloco: do bit 9 ao bit 4 
e. Endereço virtual da página: do bit 13 ao bit 10 
3 
 
QUESTÃO 3. Assunto: Memória Cache. (Valor total: 5 pontos). 
 
Considere uma memória cache de 2048 bytes, com a organização de associatividade por conjunto de 4 vias e com 16 
palavras por bloco. Para as referências à memória dadas pelos endereços abaixo (12 bits em hexadecimal), determine 
quais referências geram faltas (miss) ou acertos (hit) na cache, bem como o estado final do conteúdo da cache. Assume 
que a controladora faça a substituição de blocos pelo modo FIFO. 
 
Índice Referência Referência Referência Referência 
0 420/423/421/422 
1 
2 
3 2C0/2DF/2DD 
4 520 
5 
6 
7 3E8/3C0/3DC/3E7/3C2 5C8 
 
Referências: 
Referência 3E8 3C0 3E3 3DC 420 423 5C8 2C0 
Hit / Miss M H H H M H M M 
Índice 7 7 7 7 0 0 7 3 
Etiqueta 1 1 1 1 2 2 2 1 
 
Referência 2DF 2DD 3E7 421 3C0 3C2 422 520 
Hit / Miss H H H H H H H M 
Índice 3 3 7 0 7 7 0 4 
Etiqueta 1 1 1 2 1 1 2 2 
 
 
4 
 
QUESTÃO 4. Assunto: Projeto de Sistema de E/S. (Valor total: 5 pontos) 
 
Observação: Você deve apresentar os cálculos e/ou justificativas plausíveis que o levaram a chegar aos resultados. 
Resultados sem justificativas ou demonstração de cálculos não serão contabilizados, ainda que possam estar com valor 
final correto. 
 
Considere o seguinte sistema computacional: 
 Uma CPU que sustenta 3 bilhões de instruções por segundo e tem uma média de 100.000 instruções do sistema 
operacional por operação de E/S. 
 Um barramento de memória capaz de sustentar uma velocidade de transferência de 1.000 MB/s. 
 Controladoras de hard-disk SCSI Ultra320 com uma velocidade de transferência máxima de 320 MB/s e 
acomodando até 7 discos no máximo. 
 Unidades de hard-disk com largura de banda de leitura/escrita de 75 MB/s e um tempo de seek médio somado a 
latência de rotação do disco, no valor total de 6 ms. 
 
Se a carga (workload) consiste em 64 KB de leituras (onde o bloco é sequencial em uma trilha) e o programa do usuário 
precisa de 200.000 instruções por operação de E/S, pede-se: 
a) A taxa de E/S máxima que este sistema sustenta. 
 
Velocidade de E/S máxima da CPU = 3x109/(200+100) x103= 10.000 operações de E/S por segundo. 
 
Cada operação de E/S transfere 64 KB de modo que: 
Taxa máxima de E/S do barramento = 1.000 x 106/ 64 x103 = 15.625 operações de E/S por segundo. 
 
 
 
 
b) A quantidade de discos e controladoras SCSI exigidas para atender aos requisitos do problema. 
 
A CPU é o gargalo, de modo que agora podemos configurar o restante do sistema para trabalhar no nível ditado pela 
CPU, ou seja, de 10.000 operações de E/S por segundo. 
 
Vamos determinar quantos discos precisamos para poder acomodar 10.000 operações de E/S por segundo. 
Para encontrar o número de discos, primeiro encontramos o tempo por operação de E/S no disco: 
 
Tempo por operação de E/S no disco = Tseek + Tlatência de rotação + Ttransferência 
Tempo por operação de E/S no disco = 6 ms + 64KB / 75MB/s = 6,9 ms 
 
Assim cada disco pode completar em 1 segundo 146 operações de E/S = 1.000 ms / 6,9 ms. 
 
Para saturar a CPU são necessárias 10.000
operações de E/S por segundo, ou seja 69 discos (10.000 / 146). 
 
Para calcular o número de interfaces SCSI, precisamos verificar a taxa de transferência média por disco para ver se 
podemos saturar o barramento, o que é dado por: 
 
Taxa de transferência = 64 KB / 6,9 ms ~ 9,56 MB/s 
 
O número máximo de discos por barramento SCSI é 7, que não saturará esse barramento. Isso significa que 
precisaremos de 69/7, ou 10 barramentos e controladoras SCSI. 
avaliacoes de semestres anteriores/2018/Avaliacao3_2016_2_gabarito.pdf
1 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a. Prova – 25 pontos – 28/11/2016 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
 
 
QUESTÃO 1. 
É correto afirmar de uma cache de 4 vias associativa por conjuntos (4-way set associative) que: 
a) Possui quatro conjuntos. 
b) Possui quatro comparadores. 
c) Possui quatro palavras. 
d) Possui quatro blocos. 
 
QUESTÃO 2. 
Qual a capacidade de armazenamento em bytes de uma memória principal instalada em um microcomputador, 
sabendo-se que seu endereço real tem 30 bits: 
a) 1 GB 
b) 3 GB 
c) 8 GB 
d) 10 GB 
 
QUESTÃO 3. 
É correto afirmar de uma cache mapeada diretamente que: 
a) Cada endereço da cache representa um byte. 
b) Cada endereço da cache representa dois bytes. 
c) Cada endereço da cache representa uma palavra. 
d) Cada endereço da cache representa um conjunto. 
 
QUESTÃO 4. 
Considere uma memória cache completamente associativa endereçada por palavras. Essa cache possui 16 palavras por 
bloco e 16 blocos por conjunto. Possui ainda 12 bits reservados à TAG. Qual o tamanho do endereço da cache em bits? 
a) 16 bits 
b) 18 bits 
c) 20 bits 
d) 24 bits 
 
QUESTÃO 5. 
Um programa escrito em Assembly do MIPS possui 2000 instruções load word, 1250 dessas instruções se encontram na 
memória cache e o restante se encontra em outros níveis da hierarquia de memória. Qual o valor em porcentagem da 
taxa de miss desse programa? 
a) 6,25 % 
b) 62,5 % 
c) 37,5 % 
d) 3,75 % 
2 
 
 
QUESTÃO 6. 
Sabe-se que o tempo médio de acesso a memória (AMAT) é dado pela expressão geral abaixo. 
AMAT = tcache + MRcache[tMM + MRMM x tVM] 
MR = miss rate 
MM = main memory 
VM = virtual memory 
Considere que o computador tem dois níveis de hierarquia: a cache e a memória principal. 
Considere ainda que o tempo de acesso a memória cache demanda 1 ciclo de clock e o acesso a memória principal 100 
ciclos de clock. Qual o valor em número de ciclos de clock do tempo médio de acesso a memória (AMAT) para a 
execução do programa da questão 5? 
a) 37,5 
b) 38,5 
c) 75 
d) 77 
 
QUESTÃO 7. 
O conteúdo do endereço 0xFFFF FFEC da memória principal fica armazenado em qual conjunto de uma cache organizada 
na forma mapeada diretamente que possui 8 conjuntos, sendo um bloco em cada conjunto. 
a) 3 
b) 6 
c) 7 
d) 8 
 
QUESTÃO 8. 
Uma cache mapeada diretamente possui 8 entradas (linhas de endereço) com 1 bit de validade mais 27 bits de tag e 
mais 32 bits para armazenar o dado. Qual o tamanho desta cache em bits? 
a) 60 bits 
b) 256 x 60 bits 
c) 64 x 60 bits 
d) 8 x 60 bits 
 
QUESTÃO 9. 
O programa assembly do MIPS a seguir é executado por um processador contendo uma cache mapeada diretamente de 
8 conjuntos, sendo um bloco por conjunto. Qual a taxa de acertos desse processador na execução desse programa? 
addi $t0, $0, 5 
loop: beq $t0, $0, done 
lw $t1, 0x4($0) 
lw $t2, 0xC($0) 
lw $t3, 0x8($0) 
addi $t0, $t0, -1 
j loop 
done: 
 
a) 20 % 
b) 40 % 
c) 80 % 
d) 90 % 
 
3 
 
QUESTÃO 10. 
Falhas (miss) em caches são classificados em compulsórias, por conflito ou por capacidade. No caso apresentado na 
questão 9, predominantemente ocorreu falhas (miss): 
a) Compulsórias 
b) Por conflito 
c) Por capacidade limitada 
d) Por conflito e por capacidade limitada igualmente 
 
QUESTÃO 11. 
É correto afirmar que: 
a) Aumentando a associatividade eu reduzo as falhas por conflito. 
b) Aumentando a associatividade eu reduzo as falhas por capacidade. 
c) Aumentando a associatividade eu reduzo o número de comparadores dentro da cache. 
d) Aumentando a associatividade eu reduzo o campo de dados de uma cache. 
 
QUESTÃO 12. 
O programa assembly do MIPS a seguir é executado por um processador contendo uma cache associativa por conjunto 
de 2 vias (2-way set associative), sendo dois blocos por conjunto e 4 conjuntos no total. Qual a taxa de falhas desse 
processador na execução desse programa? 
addi $t0, $0, 5 
loop: beq $t0, $0, done 
 lw $t1, 0x4($0) 
 lw $t2, 0x24($0) 
 addi $t0, $t0, -1 
 j loop 
done: 
a) 10 % 
b) 20 % 
c) 30 % 
d) 40 % 
 
QUESTÃO 13. 
É correto afirmar que uma cache completamente associativa: 
a) Possui n conjuntos, onde n ≥ 1 
b) Possui somente 2 conjuntos 
c) Possui oito conjuntos 
d) Possui um único conjunto 
 
QUESTÃO 14. 
É correto afirmar que: 
a) Localidade espacial demanda o aumento do número de conjuntos. 
b) Localidade espacial demanda o aumento de comparadores por bloco. 
c) Localidade espacial demanda o aumento do número de bytes por palavra. 
d) Localidade espacial demanda o aumento do número de palavras por bloco. 
 
4 
 
QUESTÃO 15. 
O programa assembly do MIPS a seguir é executado por um processador contendo uma cache associativa por conjuntos 
de 2 conjuntos, sendo 4 blocos por conjunto e uma palavra por bloco. Qual a taxa de falhas desse processador na 
execução desse programa? 
addi $t0, $0, 5 
loop: beq $t0, $0, done 
lw $t1, 0x4($0) 
lw $t2, 0xC($0) 
lw $t3, 0x8($0) 
addi $t0, $t0, -1 
j loop 
done: 
a) 1 % 
b) 3,38 % 
c) 6,67 % 
d) 13,34 % 
 
QUESTÃO 16. 
É correto afirmar que: 
a) Memória virtual é composta por cache e memória principal. 
b) Memória virtual é constituída por cache e hard disk. 
c) Memória virtual é constituída pela memória física instalada no computador. 
d) Memória virtual proporciona ao processador a “ilusão” de ter disponível uma memória principal maior. 
 
QUESTÃO 17. 
É correto afirmar que: 
a) Cada programa possui sua própria faixa de endereçamento virtual. 
b) A CPU traduz um endereço real em um endereço virtual. 
c) Um subconjunto do endereço virtual se encontra no banco de registradores. 
d) O espaço de endereçamento virtual completo se encontra na memória principal. 
 
QUESTÃO 18. 
Um endereço virtual tem 32 bits, sendo 20 bits de deslocamento dentro da página (page offset). A capacidade de 
armazenamento da página em bytes é: 
a) 1 KB 
b) 2 KB 
c) 1 MB 
d) 2 MB 
 
QUESTÃO 19. 
A capacidade de armazenamento da memória virtual da questão 18 é: 
a) 1 GB 
b) 2 GB 
c) 3 GB 
d) 4 GB 
 
ANULADA 
5 
 
QUESTÃO 20. 
A quantidade em páginas que a memória da questão 18 armazena é: 
a) 1024 
b) 2048 
c) 4096 
d) 9182 
 
QUESTÃO 21. 
Considere a parte da tabela de páginas mostrada na figura abaixo. Qual o endereço físico obtido a partir do endereço 
virtual 0x000FF1F4? 
1 0x7F 
1 0x74 
1 0x1F 
1 0x0F 
0 0x0F 
1 0x7F 
0 0xF0 
1 0xFF 
1 0x00 
1 0xF4 
0 0xF1 
0 0xFF 
1 0xFE 
1 0x71 
1 0x14 
1 0xF4 
 
a) 0x7FF1F4 
b) 0x74F1F4 
c) 0x1FF1F4 
d) 0x7F000F 
 
QUESTÃO 22. 
Considere as informações dadas na questão 21 para resolver esta questão. Qual a capacidade de armazenamento da 
memória principal em quantidade de páginas? 
a) 128 
b) 256 
c) 512 
d) 1024 
 
6 
 
QUESTÃO 23. 
É correto afirmar sobre Polling que. 
a) Demanda pouco envolvimento por parte do processador. 
b) Demanda uma controladora de interrupções programável. 
c) Demanda que o estado de cada periférico seja monitorado frequentemente. 
d) Demanda uma controladora de DMA. 
 
QUESTÃO 24. 
É correto afirmar sobre uma transmissão de dados serial síncrona que: 
a) O transmissor e o receptor devam funcionar na mesma frequência de clock. 
b) O transmissor pode enviar vários caracteres de uma só
vez. 
c) O receptor pode receber vários caracteres de uma só vez. 
d) O transmissor e o receptor precisam ser configurados com o mesmo protocolo de comunicação. 
 
QUESTÃO 25. 
A figura abaixo apresenta um hardware de um sistema de E/S: 
Processor Memory
Address
MemWrite
WriteData
ReadDataI/O
Device 1
I/O
Device 2
CLK
EN
EN
Address Decoder
WE
W
E
M
R
D
s
e
l1
:0
W
E
2
W
E
1 CLK
00
01
10
CLK
 
a) Isolado ou dedicado 
b) Mapeado em memória 
c) DMA (Direct Memory Access) 
d) Orientado a interrupções 
 
avaliacoes de semestres anteriores/2018/Avaliacao3_2017_1_gabarito.pdf
1 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a Prova – 25 pontos – 03/07/2017 
Nome: GABARITO 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: Assunto: Hierarquia de Memórias e Memória Cache. (valor: 7 pontos) 
Uma cache de 16 palavras possui os parâmetros: 𝑏, tamanho do bloco, em número de palavras; 𝑆, número de 
conjuntos; 𝑁 número de vias; e 𝐴, número de bits de endereço. Considere a seguinte sequência repetida de lw 
endereços (dados em hexadecimal): 
 
40 44 48 4𝐶 70 74 78 7𝐶 80 84 88 8𝐶 90 94 98 9𝐶 0 4 8 𝐶 10 14 18 1𝐶 20 
 
Preencha as caches da figura abaixo para responder os itens de (a) à (d) da questão. 
Assumindo substituição do menos recentemente usado (LRU) para caches associativas, determine a miss rate 
efetiva, se a sequência é a entrada das seguintes caches abaixo, ignorando os efeitos de inicialização (perdas 
compulsórias): 
a) Cache diretamente mapeada, 𝑏 = 1 palavra; 80% miss rate. Os endereços de 70 a 7C e 20 não são removidos. 
Miss rate is 20/25 = 80%. 
b) Cache totalmente associativa, 𝑏 = 1 palavra; 100% miss rate. Uma sequência repetida de comprimento maior 
do que o tamanho do cache não produz hits para um cache totalmente associativo usando LRU. 
c) Cache de conjunto associativa duas vias, 𝑏 = 1 palavra; 100% miss rate. A sequência repetida faz pelo menos 
três acessos a cada conjunto durante cada passagem. Usando a substituição LRU, cada valor deve ser 
substituído cada passagem. 
d) Cache diretamente mapeada, 𝑏 = 2 palavras. 40% miss rate. As palavras em locais consecutivos são 
armazenadas em cada bloco da cache. O tamanho maior do bloco é vantajoso, uma vez que os acessos na 
sequência dada são feitos principalmente por endereços de palavras consecutivas. Um tamanho de bloco de 
dois divide o número de buscas de bloco pela metade, pois duas palavras são obtidas por busca no bloco. O 
endereço da segunda palavra no bloco sempre ocasionará um hit neste tipo de esquema (por exemplo, 
endereço 44 do par de endereços 40-44). Assim, os segundos acessos consecutivos de palavras sempre 
produzirão hits: 44, 4C, 74, 7C, 84, 8C, 94, 9C, 4, C, 14, 1C. Veja na figura (d) que mostra que três dos oito 
blocos (70-74, 78-7C, 20-24) permanecem na memória. Assim, a taxa de hits vai ser: 15/25 = 60% e a taxa de 
miss vai ser de 40%. 
Set 15 7C 
Set 14 78 
Set 13 74 
Set 12 70 
Set 11 
Set 10 
Set 09 
Set 08 20 
Set 07 9C 1C 7C 9C 1C 78-7C 
Set 06 98 18 78 98 18 70-74 
Set 05 94 14 74 94 14 
Set 04 90 10 70 90 10 20-24 
Set 03 4C 8C C 4C 8C C 98-9C 18-1C 
Set 02 48 88 8 48 88 8 90-94 10-14 
Set 01 44 84 4 44 84 4 48-4C 88-8C 8-C 
Set 00 40 80 0 40 80 0 20 40-44 80-84 0-4 
 (a) (c) (d) 
2 
 
 
QUESTÃO 2: Assunto: Representação IEEE-754 em precisão simples. (valor: 6 pontos) 
 
Dado o número -13,5625 na base decimal. Expresse a sua resposta em hexadecimal no formato de vírgula 
flutuante IEEE 754 de precisão simples. (Mostre os seus cálculos e como chegou ao resultado) 
-13,5625 / 8 = -1,6953125 
-13,5625 = -1,6953125 x 23 
Sinal negativo = bit 31 = 1 
Expoente = 3 -> 127 + 3 = 130 
1 10000010 10110010000000000000000 
0xC1590000 
 
 
 
 
 
 
 
 
 
Dado o número hexadecimal 0x42294000 no formato de vírgula flutuante IEEE 754 de precisão simples. Expresse 
a sua resposta em um número na base dez. (Mostre os seus cálculos e como chegou ao resultado) 
 
0 10000100 01010010100000000000000 
42,3125 
 
 
 
 
 
 
 
 
 
 
 
 
 
3 
 
QUESTÃO 3: Assunto: Memória Virtual (valor: 7 pontos) 
Considere um sistema de memória virtual que pode endereçar um total de 250 bytes. O leitor possui um espaço 
ilimitado no disco rígido, mas é limitado em 2𝐺𝐵 de memória semicondutora (física). Assuma que as páginas 
físicas e virtuais possuem, cada uma 4 𝑘𝐵 de tamanho. 
 
a) De quantos bits é o endereço físico? 31 bits 
b) Qual é o máximo número de páginas virtuais no sistema? 250 / 212 = 238 
c) Quantas páginas físicas existem no sistema? 2 GB / 4 KB = 231/212 = 219 páginas físicas 
d) De quantos bits é o número de páginas físicas e virtuais? VPN = 38 bits, PPN = 19 bits. 
e) Quantas entradas na tabela de páginas irá a tabela de páginas conter? 238 entradas (uma para cada 
página virtual). 
f) Assuma que, além do número de páginas físicas, cada tabela de páginas contém também alguma 
informação de status na forma de um bit válido (𝑉). Quantos bytes possui cada entrada da tabela de 
páginas? (Arredonde para o maior número inteiro de bytes). 
Cada entrada necessita de 20 bits, sendo 19 bits para o número da página física (PPN) e 1 bits (V). Portanto, 
precisaremos de 3 bytes para cada entrada (arredondamento de 20 bits para o maior número inteiro de 
bytes). 
 
 
g) Qual é o tamanho total da tabela de páginas, em bytes? 
O total em bytes da tabela de páginas é: 3 x 238 bytes. 
 
 
 
 
 
4 
 
QUESTÃO 4: Assunto: Sistemas de Entrada e Saída. (valor: 5 pontos) 
Os Sistemas de Entrada/Saída (Input/Output – I/O) são utilizados para conectar um computador com dispositivos 
externos chamados periféricos. Um processador acessa um dispositivo I/O utilizando os barramentos de dados e 
de endereços, da mesma forma que ele acessa a memória. Uma faixa do espaço de endereços é dedicada aos 
dispositivos I/O, ao invés de memória. A cada dispositivo I/O é atribuído um ou mais endereços de memória dessa 
faixa. Um armazenamento para o endereço especificado envia dados para o dispositivo. Um carregamento recebe 
dados do dispositivo. Este método de comunicação com dispositivos I/O é chamado I/O mapeada em memória. 
A partir da descrição fornecida no enunciado da questão, desenhe no espaço abaixo um sistema de I/O mapeada 
em memória, constituído dos seguintes componentes: processador, memória, dois dispositivos de I/O distintos, 
decodificador de endereços e multiplexador. Indique no seu desenho os nomes de todos os sinais de controle 
necessários que saem do processador e do decodificador de endereços, os barramentos de dados e o barramento 
de endereços. 
 
avaliacoes de semestres anteriores/2018/Avaliacao3_2017_2_TA_gabarito.pdf
1 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
3a Prova – 25 pontos – 22/11/2017 
 
Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: Assunto: Memória Virtual (valor: 7 pontos) 
Considere uma implementação de memória virtual com paginação, com 64 páginas virtuais e memória primária 
com oito páginas físicas, com política FIFO de substituição (a coluna ID indica a idade da página). Considerando as 
referências a páginas virtuais dadas abaixo e assumindo que a memória física tem o estado inicial dado na coluna 
EI, determine os próximos estados, assinale as faltas ocorridas e indique quais entradas da tabela de páginas 
serão escolhidas como vítimas para substituição. 
 
Referências ID EI 29 8 45 46 21 8 21 35 46 20 52 59 21 8 
P
Á
G
IN
A
 F
ÍS
IC
A
 
Falta? - - N S N N S N N S N S S N N N 
0 7 22 - 8 - - - √ - - - - - - - √ 
1 0 59 - - - - - - - - - - - √ - - 
2 4 46 - - - √ - - - - √ 20 - - - - 
3 2 4 - - - - - - - - - - - - - - 
4 1 45 - - √ - - - - - - - - - - - 
5 3 29 √ - - - - - - - - - 52 - - - 
6 6 54 - - - - 21 - √ - - - - - √ - 
7 5 56 - - - - - - - 35 - - - - - - 
Pág. Vítima - - - 0 - - 6 - - 7 - 2 5 - - - 
2 
 
QUESTÃO 2: Assunto: Memória Cache (valor: 6 pontos) 
Considere uma memória cache com 256 KB de dados e mapeamento direto e oito palavras por bloco. Os 
endereços têm 32 bits de tamanho e cada byte tem seu próprio endereço. Suponha que cada entrada da cache 
possua 1 bit de validade e 1 dirty bit. 
a) Qual o tamanho em bits do campo byte offset do endereço gerado pela CPU? 2 bits 
b) Qual o tamanho em bits do campo word offset do endereço gerado pela CPU? 3 bits 
c) Qual o tamanho em bits do campo set offset (ou índice) do endereço gerado pela CPU? 13 bits 
d) Qual o tamanho em bits do campo tag (etiqueta) do endereço gerado pela CPU? 14 bits 
e) Quantos conjuntos possuí essa memória cache? 213 
f) Qual o tamanho total de memória necessária para implementá-la? 213 *(14+8*32+1+1) = 272 KBytes 
 
Considere agora uma memória cache com 256 KB de dados e mapeamento associativo por conjuntos de quatro 
vias e oito palavras por bloco. Os endereços têm 32 bits de tamanho e cada byte tem seu próprio endereço. 
Suponha que cada entrada da cache possua 1 bit de validade e 1 dirty bit. 
g) Qual o tamanho em bits do campo byte offset do endereço gerado pela CPU? 2 bits 
h) Qual o tamanho em bits do campo word offset do endereço gerado pela CPU? 3 bits 
i) Qual o tamanho em bits do campo set offset (ou índice) do endereço gerado pela CPU? 11 bits 
j) Qual o tamanho em bits do campo tag (etiqueta) do endereço gerado pela CPU? 16 bits 
k) Quantos conjuntos possuí essa memória cache? 211 
l) Qual o tamanho total de memória necessária para implementá-la? 211*22 *(16+8*32+1+1) = 274 KBytes 
Ricardo
Destacar
Ricardo
Substituir
Ricardo
Substituir
block
Ricardo
Caixa de texto
block
Ricardo
Caixa de texto
block
User
Máquina de escrever
 Palavra de 32 bits
User
Máquina de escrever
 Palavra de 32 bits
3 
 
QUESTÃO 3: Assunto: E/S Mapeada em Memória, Sistemas de E/S e Assembly do MIPS (valor: 6 pontos) 
Na figura 1, você observa o diagrama de pinos do microcontrolador PIC32MX3XXH. Os pinos em destaque (do 
RD0 ao RD11) serão usados nessa questão. Todos esses pinos pertencem ao porto D do microcontrolador 
(lembre-se de que um porto é um conjunto de pinos com mesmas características). Em cada um dos pinos do RD0 
ao RD5 será colocado um LED com um resistor limitador de corrente, assim como mostrado na figura 2a. Em cada 
um dos pinos do RD6 ao RD11 será colocado um circuito com chaves como mostrado na figura 2b. 
Com o trecho de código de programação do PIC32 em linguagem C; o diagrama dos pinos do PIC32 na figura 1 e 
parte do datasheet do PIC 32 na figura 3, resolva as questões a seguir: 
a) Supondo que as chaves ligadas aos pinos RD6 e RD8 se encontram fechadas, qual o valor ficará gravado 
em PORTD após a execução da linha 9 do trecho de código em C? 0x00A 
b) Transforme a linha 5 do trecho de código em C em uma ou mais linhas de código Assembly do MIPS. 
(Dica: você precisará do endereço do registrador TRISD). 
c) Transforme a linha 8 do trecho de código em C em uma ou mais linhas de código Assembly do MIPS. 
(Dica: você precisará do endereço do registrador PORTD). 
 
Figura 1 – Esquema de Pinagem do PIC32 
4 
 
 
 
Figura 2a Figura 2b 
 
 
Figura 3 – Mapa dos registradores do porto D do PIC32 
 
 
b) lui $t0, 0xBF88 
 ori $t0, $t0, 0x60C0 
 addi $t1, $0, 0xFFE0 
 sw $t1, 0($t0) 
c) lui $t2, 0xBF88 
 ori $t2, $t2, 0x60D0 
 lw $t3, 0($t2) 
 srl $t3, $t3, 6 
 andi $t3, $t3, 0x3F 
 addi $t4, $t3, 0 
User
Máquina de escrever
 addiu e não addi
5 
 
 
QUESTÃO 4: Assunto: Representação de números racionais na notação IEEE 754 em precisão simples. (valor: 6 
pontos) 
a) Represente o número racional 28,0 na notação IEEE 754 em precisão simples. Mostre como chegou a sua 
resposta. 
01000001111000000000000000000000 
0x41E00000 
 
 
b) O conteúdo de um registrador é 0xBFA00000. Sabendo-se que este valor contido dentro do registrador 
equivale a um número racional representado na notação IEEE 754 em precisão simples. Que número 
racional é esse? Mostre como chegou a sua resposta. 
10111111101000000000000000000000 
-1,25 
avaliacoes de semestres anteriores/Avaliacao1_2018_1_TA_gabarito.pdf
1 
 
 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
1
a
 Prova – 30 pontos – 09/04/2018 
 
 Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
Apresente suas respostas com organização, no espaço reservado para cada questão. 
 
QUESTÃO 1: (Assuntos: código de máquina do MIPS, formas de endereçamento, formato de instrução, ciclo de 
máquina, arquitetura do conjunto de instruções do MIPS, endianess. Valor total: 15 pontos) 
Suponha que o programa assembly dado no quadro 2 se encontra na forma binária, montado na memória de 
programa a partir do endereço de memória 0x00400000. 
Com base nas informações do MIPS Reference Data, o programa em assembly dado no quadro 2, e a situação inicial 
da memória de dados e do banco de registradores do MIPS mostrado respectivamente nos quadros 1 e 3, pede-se: 
 
a) Qual o conteúdo do registrador $t2 ao final da execução da instrução ori $t2, $s2, 0xFFFF? 0x7FFFFFFF 
b) Qual o valor contido no registrador $t3 após a execução da instrução xor $t3, $t2, $t1? 0x8CB0EEFF 
c) De qual endereço de memória virá o dado que será armazenado no conteúdo de $t0, quando da primeira 
execução da instrução lw? 0x1001001C 
d) Supondo que a arquitetura do MIPS seja little-endian, qual o conteúdo de $t0 ao final da instrução lb? 
0x00000034 
e) Supondo que a arquitetura do MIPS seja big-endian, qual o conteúdo de $t1 ao final da instrução lb? 
0x00000000 
f) Qual o endereço de memória do rótulo desvio1? 0x00400024 
g) Qual instrução do programa em assembly dado apresenta a forma de endereçamento relativa ao PC? 
beq $t0, $t1, desvio1 
h) Supondo que a arquitetura do MIPS seja little-endian, qual o conteúdo da posição de memória 0x1001001C 
ao final da instrução sb? 0x22F34F11 
i) Qual o valor do registrador de destino ao final da execução da instrução sra? 0x000F34F2 
j) Escreva em código de máquina a instrução beq do programa assembly. 0x1109FFFA 
k) Escreva em hexadecimal o campo imediato da instrução sb $t0, 11($s0). 0x0004 
l) Quantos bytes da memória de programa ocupa o código assembly apresentado no quadro 2? 76 bytes 
m) Quantos bytes estão contidos na memória de dados (quadro 1)? 32 bytes 
n) Qual o valor contido no registrador PC durante a execução da instrução lb $t1, 0($s0)? 0x00400044 
o) Após a execução do referido programa, para qual endereço da memória de programa o PC vai apontar? 
0x00440044 
 
 
User
Strikeout
User
Note
0x000B
User
Strikeout
User
Strikeout
User
Note
$t1
User
Note
0x0000 0011
2 
 
Endereço da Palavra Conteúdo da Palavra Endereço Nome Conteúdo do registrador 
... 0 $zero 00 00 00 00 
0x1001001C 00 F3 4F 11 1 $at 
0x10010018 12 34 56 A1 2 $v0 
0x10010014 10 05 06 07 3 $v1 
0x10010010 5F 1B A2 32 4 $a0 
0x1001000C 77 01 C1 06 5 $a1 
0x10010008 A0 0B 1C D1 6 $a2 
0x10010004 04 8F F2 F0 7 $a3 
0x10010000 FF AA D1 20 8 $t0 09 08 63 52 
... 9 $t1 77 F3 F2 F1 
Quadro 1 – Memória de Dados 10 $t2 23 4C 20 0F 
 11 $t3 01 21 51 A1 
 add $s0, $0, $0
addi $s1, $0, 10 
 lui $s0, 0x1001 
 ori $s0, $s0, 0x0014 
 lui $s2, 0x7FFF 
 lw $t0, 8($s0) 
 sll $t1, $t0, 8 
 ori $t2, $s2, 0xFFFF 
 xor $t3, $t2, $t1 
desvio1: lb $t4, 6($s0) 
 lb $t1, 8($s0) 
 add $t0, $t0, $t1 
 sb $t0, 11($s0) 
 sra $t1, $t0, 4 
 beq $t0, $t1, desvio1 
 addi $t0, $t0, 0x002A 
 lb $t1, 0($s0) 
 sw $t0, -4($s0) 
 jr $ra 
 
 12 $t4 06 E1 1D 17 
 13 $t5 
 14 $t6 
 15 $t7 
 16 $s0 10 00 10 00 
 17 $s1 11 22 30 03 
 18 $s2 A1 FF 10 C2 
 19 $s3 10 09 34 55 
 20 $s4 04 E4 85 46 
 21 $s5 
 22 $s6 
 23 $s7 
 24 $t8 
 25 $t9 
 26 $k0 
 27 $k1 
 28 $gp 
 29 $fp 
 30 $sp 
 31 $ra 00 44 00 44 
Quadro 2 – Programa em assembly Quadro 3 – Banco de Registradores 
 
 
3 
 
QUESTÃO 2: (Assunto: Conversão de código C em assembly do MIPS. Valor total: 15 pontos). 
Usando somente instruções contidas no cartão MIPS Reference Data dado na prova, traduza o programa dado da 
linguagem C para o Assembly do MIPS no espaço reservado ao lado do programa em C. Não use pseudoinstruções. 
Suponha que o endereço do vetor vet se encontra no endereço de memória 0x10010000 
Suponha que o endereço de retorno da função main já se encontre dentro do registrador $ra. 
Suponha que o endereço do dispositivo de saída já se encontre dentro do registrador $s5. 
Use as diretivas .data e .text do montador para escrever o seu código assembly do MIPS. 
 
/* Esse código lê os elementos de um vetor 
declarado e inicializado como variável 
global identifica o maior elemento e o 
menor elemento do vetor e subtrai o 
menor do maior elemento. Em seguida 
imprime o resultado. */ 
.data 
.word -1 
.word -50 
.word 325 
.word 974 # (até aqui +2 pontos) 
.text 
main: lui $s3, 0x7FFF 
 ori $s3, $s3, 0xFFFF 
 lui $s6, 0x1001 
 lui $s4, 0x8000 # (até aqui +2 pontos) 
 addi $s1, $0, 0 
 addi $t0, $0, 4 
for1: slt $t1,$s1,$t0 
 beq $t1,$0, fimfor1 # (até aqui +2 pontos) 
 sll $t1, $s1, 2 
 add $t1, $s6, $t1 
 lw $t2, 0($t1) # (até aqui +2 pontos) 
 slt $t1, $s4, $t2 
 beq $t1, $0, fimif1 
 add $s4, $t2, $0 
fimif1: slt $t1, $t2, $s3 # (até aqui + 2 pontos) 
 beq $t1, $0, fimif2 
 add $s3, $t2, $0 
fimif2: addi $s1, $s1, 1 # (até aqui +2 pontos) 
 j for1 
fimfor1: sub $s2, $s4, $s3 
 sw $s2, 0($s5) # (até aqui +2 pontos) 
 add $v0, $0, $0 
 jr $ra # (até aqui +1 ponto) 
 
int vet[4]={-1, -50, 325, 974}; 
 
#include <stdio.h> 
int main() { 
 int i, res; 
 int menor=2147483647; 
 int maior=-2147483648; 
 for(i=0; i<4; ++i) { 
 if(vet[i]>maior) 
 maior=vet[i]; 
 if(vet[i]<menor) 
 menor=vet[i]; 
 } 
 res=maior-menor; 
 printf("%d",res); 
 return (0); 
} 
 
 
 
 
 
 
 
 
Utilize na sua solução a seguinte correspondência de variáveis e registra 
dores: 
$s0 – endereço da variável vet $v0 – para guardar o valor de retorno da função main. 
$s1 – variável i $t0 – armazenará a constante 4 
$s2 – variável res $t1 – registrador auxiliar para resultados temporários 
$s3 – variável menor 
$s4 – variável maior 
$s5 – endereço do dispositivo de saída 
$s6 – armazenará o endereço de vet 
Se você precisar de mais registradores declare explicitamente na sua solução o nome do registrador que você usou e para que 
ele foi usado! 
avaliacoes de semestres anteriores/Avaliacao2_2018_1_TA_gabarito.pdf
1 
 
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e Periféricos 
2a Prova – 35 pontos – 28/05/2018 
 
Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
 
QUESTÃO 1: Assunto: Procedimentos e subprogramas no MIPS 
Em um dado procedimento é necessário salvar os registradores $s0, $s1, $s6 e $s7. Quantos bytes são 
necessários alocar na região da pilha para salvar o contexto? 
a) 4 bytes 
b) 8 bytes 
c) 12 bytes 
d) 16 bytes 
 
QUESTÃO 2: Assunto: Procedimentos e subprogramas no MIPS 
A chamada de procedimentos no MIPS é realizada única e exclusivamente com a instrução jal. Quais os passos 
exclusivos que a instrução jal demanda do processador para ser executada? 
a) Busca de instruções e decodificação 
b) Registrar o conteúdo de PC+4 no registrador de destino e atualizar o PC com o endereço da primeira 
instrução do procedimento. 
c) Busca de instruções e atualização do PC. 
d) Leitura do banco de registradores e atualização do PC. 
 
QUESTÃO 3: Assunto: Instruções de Multiplicação e Divisão em Ponto Fixo no MIPS. 
As instruções mult $s1, $s2 e multu $s1, $s2 são instruções de multiplicação em ponto fixo do MIPS. A primeira é 
usada para multiplicação de números inteiros e a segunda para multiplicação de números naturais. É correto 
afirmar que: 
a) Ambas podem gerar exceções. 
b) Somente a segunda instrução pode gerar exceção. 
c) Somente a primeira instrução pode gerar exceção. 
d) Nenhuma delas pode gerar exceções. 
 
2 
 
QUESTÃO 4: Assunto: Operações e Hardware de Multiplicação e Divisão em Ponto Fixo do MIPS. 
 
Figura 1 – Divisor em Ponto Fixo no MIPS. 
Supondo que em um divisor em ponto fixo (mostrado na figura 1), tenhamos o conteúdo do dividendo igual a 1010 
e no registrador que acumula o divisor o valor 410. Qual o valor do registrador A ao final da primeira iteração do 
processo de divisão? 
a) 11001010 
b) 11101010 
c) 11111010 
d) 10001010 
 
QUESTÃO 5: Assunto: Representação de números em Ponto Flutuante IEEE-754. 
O valor em binário da representação do expoente deslocado do número 22,75 na notação em ponto flutuante 
IEEE-754 de precisão simples é igual a: 
a) 10000001 
b) 10000010 
c) 10000011 
d) 10000100 
 
QUESTÃO 6: Assunto: Faixa de representação e Precisão em Ponto Flutuante. 
O menor número negativo, não normalizado, capaz de ser representado na notação ponto flutuante de precisão 
simples? 
a) - (2 - 2-23) × 2127 
b) - (2 - 2-23) × 2128 
c) - (2 - 2-22) × 2127 
d) - (2 - 2-22) × 2128 
 
QUESTÃO 7: Assunto: Instruções de Ponto Flutuante no MIPS 
A instrução mul.d $f4, $f6, $f8 é uma instrução de multiplicação em ponto flutuante de dupla precisão da 
arquitetura MIPS. Em quais registradores essa instrução armazena o resultado? 
a) HI e LO 
b) $f4 e $f6 
c) $f6 e $f8 
d) $f4 e $f5 
 
3 
 
QUESTÃO 8: Assunto: Somador em Ponto Flutuante do MIPS. 
Dentre as alternativas abaixo, qual a única alternativa que contém somente operações realizadas pelo somador 
em ponto flutuante do MIPS. 
a) Subtração dos expoentes e comparação da parte fracionária. 
b) Comparação dos expoentes e adição da parte fracionária. 
c) Adição dos expoentes e comparação da parte fracionária. 
d) Comparação dos expoentes e deslocamento para esquerda da parte fracionária do número menor. 
 
A Figura 2 apresenta uma implementação completa da microarquitetura do MIPS ciclo único. 
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE
0
1
PC0
1
PC' Instr
25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg
4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl
2:0
A
L
U
 
Figura 2 - Microarquitetura MIPS ciclo único 
 
QUESTÃO 9: Assunto: Implementação do Processador MIPS no modo Ciclo Único. 
O caminho de dados da microarquitetura Ciclo único mostrado na figura 2 não está preparado para executar a 
instrução lb $s0, 3($s1). Qual das alternativas abaixo demanda a menor modificação no caminho de dados da 
Figura 2 para que o mesmo execute a instrução lb? 
a) Incluir mais um multiplexador 2x1 com entradas de 32 bits antes da entrada WD3 do Register File. 
b) Incluir mais um multiplexador 4x1 com entradas de 32 bits antes da entrada WD3 do Register File. 
c) Incluir mais um multiplexador 2x1 com entradas de 8 bits antes da entrada WD3 do Register File. 
d) Incluir mais um multiplexador 4x1 com entradas de 8 bits antes da entrada WD3 do Register File. 
 
QUESTÃO 10: Assunto: Implementação do Processador MIPS no modo Ciclo Único. 
Qual a alternativa correta que representa a configuração dos sinais de controle necessária para executar 
corretamente a instrução OR no caminho de dados da microarquitetura mostrada na Figura 2? 
a) RegWrite = ALUSrc = MemtoReg = RegDst = 1 
b) RegWrite = ALUSrc = MemtoReg = RegDst = 0 
c) RegWrite = 1 e ALUSrc = MemtoReg = RegDst = 0 
d) RegWrite = 0 e ALUSrc = MemtoREg = RegDst = 1 
 
 
User
Note
Questão 9
Justificativa da resposta:
A menor modificação no caminho de dados da Figura 2 é realizada com a inclusão de um MUX 4:1 com entradas de 32 bits (e por consequência uma única saída de 32 bits) antes da entrada WD3 do BR.
A alternativa da letra D demandaria um complemento com outro MUX, pois a entrada WD3 é de 32 bits para todas as outras instruções e não de 8 bits.
User
Note
Questão 10
Justificativa da resposta:
Regwrite = 1 (pois escreve no BR).
ALUSrc = 0 (pois é uma instrução do tipo R)
MemtoReg = 0 (pois o resultado do OR vem da ALU diretamente, não passa pela Data Memory)
RegDst = 1 (pois Rd vem do campo de bits 15:11 da instrução decodificada)
Não existe alternativa correta, portanto está ANULADA.
4 
 
 
ImmExt
CLK
A
RD
Instr / Data
Memory
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1PC
0
1
PC' Instr
25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
Zero
CLK
A
L
U
WD
WE
CLK
Adr
0
1
Data
CLK
CLK
A
B
00
01
10
11
4
CLK
ENEN
00
01
10
<<2
25:0 (Addr)
31:28
27:0
PCJump
5:0
31:26
Branch
MemWrite
ALUSrcA
RegWrite
Op
Funct
Control
Unit
PCSrc
CLK
ALUControl
2:0
ALUSrcB
1:0IRWrite
IorD
PCWrite
PCEn
R
e
g
D
s
t
M
e
m
to
R
e
g
 
Figura 3 - Microarquitetura MIPS multiciclo 
IorD = 0
AluSrcA = 0
ALUSrcB = 01
ALUOp = 00
PCSrc = 00
IRWrite
PCWrite
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
IorD = 1
RegDst = 1
MemtoReg = 0
RegWrite
IorD = 1
MemWrite
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCSrc = 01
Branch
Reset
S0: Fetch
S2: MemAdr
S1: Decode
S3: MemRead
S5: MemWrite
S6: Execute
S7: ALU
Writeback
S8: Branch
Op = LW
or
Op = SW
Op = R-type
Op = BEQ
Op = LW
Op = SW
RegDst = 0
MemtoReg = 1
RegWrite
S4: Mem
Writeback
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst = 0
MemtoReg = 0
RegWrite
Op = ADDI
S9: ADDI
Execute
S10: ADDI
Writeback
PCSrc = 10
PCWrite
Op = J
S11: Jump
 
Figura 4 – FSM da Unidade de Controle do MIPS multiciclo 
 
 S0 
FETCH 
 S1 
DECODE 
 S11 
 JUMP 
 S2 
 ENDER 
 S6 
EXEC_R 
 S8 
BRANCH 
 S9 
EXEC_I 
 S3 
MEMR 
 S7 
 WB_R 
 S5 
MEMW 
 S10 
 WB_I 
 S4 
 WB 
5 
 
A tabela 1 apresenta a configuração do sinal ALUControl para cada tipo de situação que a microarquitetura dada é 
capaz de executar. 
Tabela 1 – Configuração de ALUControl 
ALUControl Significado 
010 Add 
110 Subtract 
000 And 
001 Or 
111 Slt 
 
QUESTÃO 11: Assunto: Implementação do Processador MIPS Multiciclo. 
O caminho de dados da microarquitetura Multiciclo mostrado na figura 3 é capaz de executar qual subconjunto 
de instruções do MIPS? 
a) slt, sll, addi, lw, sw 
b) slt, j, add, lw, beq 
c) addi, slt, beq, lw, and 
d) addi, sll, sw, lw, or 
 
QUESTÃO 12: Assunto: Implementação do Processador MIPS Multiciclo. 
Quais os sinais de controle que deverão estar ativados em nível lógico 1 no estado S10? 
a) RegWrite e MemtoReg 
b) Somente RegWrite 
c) Somente MemtoReg 
d) RegWrite, MemtoReg e RegDst 
 
QUESTÃO 13: Assunto: Implementação do Processador MIPS no modo Pipeline. 
Dada a Figura 5, é correto afirmar que: 
a) Saltos incondicionais não gerarão stalls. 
b) Saltos condicionais não gerarão stalls. 
c) O caminho de dados da microarquitetura possuí previsão de desvio. 
d) O sinal de controle forwardAE pode ser usado para evitar conflitos de dados. 
 
QUESTÃO 14: Assunto: Controle do Processador MIPS no modo Pipeline. 
Qual a melhor alternativa que representa o sinal de controle flushE? 
a) flushE = ((rsD==rtE) OR (rtD==rtE)) AND MemtoRegE 
b) flushE = ((rsE==rtD) OR (rtE==rtD)) AND MemtoRegE 
c) flushE = ((rsE==rtD) OR (rtE==rtD)) AND not(MemtoRegE) 
d) flushE = ((rsD==rtE) OR (rtD==rtE)) OR MemtoRegE 
User
Note
Questão 11
Justificativa:
Letra (a) e letra (d) estão incorretas, pois não fazem a instrução SLL. Observem que o caminho de dados Figura 3 não faz SLL !!
Letra (b) e Letra (c) estão corretas.
Atribuirei os 2 pontos da questão quem marcou (b) ou (c).
6 
 
QUESTÃO 15: Assunto: Exceções no MIPS. 
Uma instrução não definida no conjunto de instruções do MIPS foi buscada na memória de programa. Na fase de 
decodificação da instrução, o processador gerou uma exceção do tipo “instrução indefinida”. Quantos estados, no 
mínimo, você deveria introduzir na máquina de estados finitos da unidade de controle da Figura 4, para tratar 
unicamente essa exceção? 
a) 1 estado 
b) 2 estados 
c) 3 estados 
d) 4 estados 
 
QUESTÃO 16: Assunto: Microarquiteturas Superescalar. 
É correto afirmar sobre microarquiteturas superescalares que: 
a) Proporcionam CPI menores que 1 
b) Proporcionam CPI iguais a 1 
c) Proporcionam CPI maiores que 1 
d) Nada se pode afirmar 
 
QUESTÃO 17: Assunto: Microarquiteturas Multithreading. 
É correto afirmar que: 
a) SFGM (Multithreading estática de granularidade fina) só funciona em microarquiteturas superescalares. 
b) DFGM (Multithreading dinâmica de granularidade fina) só funciona em microarquiteturas superescalares. 
c) CGM (Multithreading de granularidade grossa) só funciona em microarquiteturas superescalares. 
d) SMT (Multithreading simultânea) só funciona em microarquiteturas superescalares. 
 
QUESTÃO 18: Assunto: Multiprocessadores. (1 ponto) 
É correto afirmar que: 
a) Clusters são compostos por núcleos de processamento com memória individual. 
b) Clusters são compostos por núcleos de processamento com memória compartilhada. 
c) Processadores com múltiplos núcleos de processamento com memória compartilhada são chamados de 
multiprocessadores heterogêneos. 
d) Os processadores encontrados em smartphones modernos, podem ser classificados de 
multiprocessadores homogêneos. 
 
 
User
Note
Veja o slide 114 do conjunto de slides do capítulo 7.
Aceitarei quem respondeu 1 estado ou 2 estados. Já que quem respondeu 2 estados alegou que o processador precisaria de um estado a mais para recuperar o endereço de retorno armazenado em EPC de volta para o PC. O que é correto.
avaliacoes de semestres anteriores/Avaliacao3_2018_1_TA_gabarito.pdf
Escola de Engenharia da UFMG 
Departamento de Engenharia Eletrônica 
 
Sistemas Processadores e
Periféricos 
3a Prova – 36 pontos – 04/07/2018 
 
Nome: GABARITO 
 
NÃO DESTAQUE AS FOLHAS DA PROVA. 
 
Segue abaixo os dados para a construção de um sistema de hierarquia de memória composto por 
memória cache, memória virtual, tabela de páginas e TLB. 
Dados de 32 bits 
Blocos com 8 palavras 
Cache associativa por conjuntos com 4 vias (4-way set associative) 
A cache possuí um bit de validade 
A cache possuí dois bits de uso e a política de troca é a LRU (Menos Recentemente Usada) 
Cache com 4 conjuntos 
Endereço com 12 bits reservados para representar o PPN (Physical Page Number) 
Tamanho da página 64 Kbytes 
Endereço virtual de 32 bits 
A TLB possuí 16 entradas diferentes. 
A tabela de páginas possuí 4096 vezes mais entradas que a TLB. 
 
Justifique todas as respostas. Ou seja, demonstre como chegou a tal resposta ou número. 
Respostas sem justificativas e ou desenvolvimento não serão avaliadas, mesmo se estiverem 
corretas! 
1) Qual o tamanho em bytes da memória física desse sistema? 
Para calcular a quantidade em bytes da memória física, precisaremos conhecer o tamanho em bits 
do endereço da memória física. É dado o tamanho da página que é de 64 KB (16 bits), e o PPN que 
é de 8 bits, logo o endereço da memória física é de 24 bits e essa memória tem capacidade para 
armazenar 224 bytes, ou seja 16 MBytes. 
2) Qual o tamanho em bits da VPN (Virtual Page Number)? 
Como o endereço virtual tem 32 bits e 16 bits são reservado ao deslocamento dentro da página, 
sobram 16 bits para o VPN. 
3) Qual o tamanho em bits do page offset? 
O tamanho da página é de 64 KBytes, cada byte tem sem próprio endereço, logo são necessários 
16 bits para endereçar qualquer byte dentro da página, daí o page offset ter 16 bits. 
4) Qual o tamanho em bits da TLB? 
A TLB tem 16 entradas. Cada entrada da TLB deve armazenar a VPN (16 bits) e a PPN (12 bits) 
correspondente, além de armazenar pelo menos um (1 bit) bit de validade, logo o tamanho da TLB 
em bits é 16 x 29 bits = 464 bits. 
 
5) Qual o número de entradas diferentes da tabela de páginas? 
O número de entradas da tabela de páginas está relacionado com o número de endereços virtuais 
existentes no sistema de memória. Como 16 bits são reservados para a VPN, teremos 216 ou 65536 
entradas diferentes na tabela de páginas. 
6) Qual a faixa de endereços da entrada 0x0001 da tabela de páginas? 
De 0x00010000 a 0x0001FFFF, pois o deslocamento na página possui 16 bits. 
7) Quantos comparadores possuem a controladora da cache? 
4 comparadores, pois a cache é 4-way set associative. 
8) Qual o tamanho do multiplexador da controladora da memória cache responsável pela seleção 
da palavra correta? 
Precisaremos de um MUX 8:1 com terminal de 3 bits para seleção da palavra desejada. 
9) Qual o tamanho do multiplexador da controladora da memória cache responsável pela seleção 
do byte correto? 
Precisaremos de um MUX 4:1 com terminal de 2 bits para seleção do byte da palavra desejada. 
10) Qual o tamanho em bytes total da memória cache, ocupado exclusivamente por dados vindos 
da memória principal? 
A cache possui 4 conjuntos. Cada conjunto possui 4 blocos, pois a cache é 4-way set associative. 
Cada bloco acomoda 8 palavras. Cada palavra acomoda 4 bytes. Portanto o tamanho total em 
bytes da memória cache, ocupado exclusivamente com dados é: 4 x 4 x 8 x 4 bytes = 512 bytes. 
11) Qual o tamanho em bits total da memória cache, incluindo os dados vindos da memória 
principal, tags, bits de validade e demais bits de controle? 
O endereço gerado pelo processador é de 32 bits, sendo que 2 bits são reservados para o byte 
offset, mais 3 bits para o block offset (seleciona a palavra dentro do bloco), mais 2 bits para 
selecionar qual o set (ou conjunto, ou índice, ou endereço da cache). Os demais bits do endereço 
representam a tag, logo 27 bits. 
4 sets x (2 bits + 4 bits) + 4 sets x (4 blocos x 8 palavras x 4 bytes) + 4 sets x 4 blocos x tamanho da 
tag (xxx bits) = 24 bits + 512 x 8 bits + 4 x 27 bits = 24 + 4144 + 108 = 4276 bits 
 
12) Qual a faixa de endereços da entrada 0x02F da memória principal? 
De 0x02F0000 a 0x02FFFFF, pois o deslocamento na página possui 12 bits. 
13) O conteúdo da entrada 0x0200 da tabela de páginas é 0xF7. O endereço físico da palavra 
procurada é 0xF71234. Em qual o endereço virtual se encontra a palavra procurada? 
0x02001234, pois o índice da tabela de página representa o VPN e o endereço virtual é formado 
pelo VPN & page offset. 
 
14) Para qual conjunto da cache irá o conteúdo do endereço 0xFF11A27C? 
1111 1111 0001 0001 1010 0010 0111 1100 
1111111100010001101000100 11 111 00 
Para o conjunto 3 da cache. 
 
15) Desenhe a tabela de páginas e a TLB para o sistema de memória dado. 
 
 
 
 
 
 
 
 
16) Descreva os circuitos mínimos integrantes de um módulo controlador de DMA para o seu 
correto funcionamento. 
Um registrador de dados, um registrador de endereços e um registrador para armazenamento da 
quantidade de palavras a ser transferida e um circuito de controle para gerenciar as 
transferências. 
 
17) Cite duas técnicas diferentes de realização de operações de E/S. 
Acesso direto à memória e E/S realizada por interrupção. Outra alternativa E/S programada. 
18) Cite duas características do projeto de E/S mapeada em memória. 
Não demanda instruções de E/S dedicadas. 
Periféricos e memória compartilham o mesmo espaço de endereçamento. 
Operações de E/S se assemelham a operações de leitura e escrita na memória.

Teste o Premium para desbloquear

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

Mais conteúdos dessa disciplina