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.