Sunteți pe pagina 1din 24

UNIVERSIDAD CARLOS III DE MADRID

DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
2 de octubre de 2013 Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni calculadoras de
ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Represente en el estndar de coma flotante IEEE 754 de 32 bits:

a) El valor (en decimal) -0,75. Exprese el resultado final en hexadecimal.

-0,75 = 0,11
(2
= -1.1 x 2
-1

Bit de signo = 1 (negativo)
Exponente = -1, por lo tanto el exponente que se almacena es E= 127 -1 = 126 = 01111110
(2
Mantisa = 1,11000, por lo tanto la mantisa que se almacena es 10000000

El resultado es: 10111111010000000000000000000000 = 0xBF400000













b) Dado el siguiente nmero hexadecimal 0x7FF0000000000000 que almacena un valor segn el
estndar IEEE754 de 64 bits. Indique su valor.

c en binario es: 011111111111000000000000 . El signo es 0, el exponente (11 siguientes bits al
signo) es 11111111111 y la mantisa es 0. El nmero representado es +inifinito.






Ejercicio 2. Qu es el contador de programa y para qu sirve?

El contador de programa es un registro que se encuentra en el procesador y que almacena la direccin de
la siguiente instruccin a ejecutar.


Ejercicio 3. Considere un hipottico computador de 20 bits con 60 registros que direcciona la memoria
por bytes. Responda a las siguientes preguntas:

a) Cuntos bits se emplean para las direcciones de memoria?

20


b) Cul es el tamao de los registros?

20 bits


c) Cuntos bits se almacenan en cada posicin de memoria?
8 bits


d) Cuntas posiciones de memoria se pueden direccionar? Exprese el resultado en KB
se pueden direccionar 2
20
bytes = 2
10
MB = 1024 KB


e) Cuntos bits se necesitan para identificar a los registros?

6 bits



Ejercicio 4. Represente en complemento a 2 utilizando 7 bits, el valor 17.

17
(2
= 0010001
(en complemento a 2























UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
2 de octubre de 2013 Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni calculadoras de
ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .



Ejercicio 1. Considere un hipottico computador con 100 registros que direcciona la memoria por bytes.
En este computador se pueden direccionar como mucho 64 KB de memoria. Asumiendo que el tamao de
la palabra de este computador coincide con el nmero de bits empleados para las direcciones de memoria.
Responda a las siguientes preguntas:

f) Cuntos bits se emplean para las direcciones de memoria?

64 KB = 64 x 2
10
= 2
16
, por tanto, se emplean 16 bits.



g) Cul es el tamao de los registros? 16 bits

h) Cuntos bits se almacenan en cada posicin de memoria? 8 bits = 1 byte



i) Si el computador fuera de 32 bits. Cul sera el tamao de la mxima memoria
direccionable? Exprese el resultado en MB

2
32
bytes = 2
12
x 2
20
MB = 4096 MB



j) Cuntos bits se necesitan para identificar a los registros?

Log
2
100 por exceso = 7



Ejercicio 2. Represente en complemento a 2 utilizando 8 bits, el valor 24.

24
(10
= 00011000
(en complemento a 2

Ejercicio 3. Responda a las siguientes preguntas:

c) Dado el siguiente nmero hexadecimal 0x41E00000, que almacena un valor segn el estndar
IEEE754. Indique su valor decimal.

0x41E00000 = 0100000111100000000.00000
El signo es 0, por tanto el nmero es positivo
El exponente almacenado (siguientes 8 bits) = 10000011 = 131. El exponente real es 131 127 = 4
La mantisa almacenada es 1100000..000. La mantisa real (se aade el bit implcito) es 1,11
(2

El nmero, por tanto, es 1,11
(2
x 2
4
= 11100
(2
= 28












d) Represente el valor - ! en el estndar IEEE754 de 64 bits. Exprese el resultado final en
hexadecimal.

1111111111110000000000000 = 0xFFF0000000000000








Ejercicio 4. Qu es el registro de instruccin y qu almacena?


El registro de instruccin es un registro del procesador que almacena la instruccin que se est ejecutando
en un momento determinado dentro del procesador.













UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
16 de octubre de 2013 Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni calculadoras de
ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Considere un computador de 64 bits, que dispone de 68 registros y un juego de 136
instrucciones mquina. Responda a las siguientes preguntas:
a) Cul es el rango de nmeros enteros en complemento a 2 que puede manejar?

[-2
63
..2
63
-1]


b) Cuntas palabras se pueden almacenar como mucho en la memoria de este computador? Exprese
el resultado en M.
Un computador de 64 bits puede direccionar 2
64
bytes, como las palabras en este computador son
de 64 bits = 8 bytes, puede almacenar 2
64
/2
3
= 2
61
palabras = 2
61
/ 2
20
= 2
41
Mpalabras.


c) Cul es el tamao en bits de cada registro?
Coincide con el tamao de la palabra, es decir, 64 bits.

d) Qu es el contador de programa y para qu sirve?

El contador de programa es un registro que se encuentra en el procesador y que almacena la
direccin de la siguiente instruccin a ejecutar.


e) Considere la instruccin ADDM dir, R1, R2. Esta instruccin suma el contenido del
registro R1 con el contenido del registro R2 y deja el resultado en la posicin de memoria con
direccin dir. Indique el formato de dicha instruccin.

Para codificar el cdigo de operacin se necesitan 8 bits, para los registros 7 bits (log
2
68 por
exceso). Las direcciones de memoria en este computador son de 64 bits. Por tanto se necesitan dos
palabras para representar esta instruccin. En la primera se almacena el cdigo de operacin y los
identificadores de los dos registros y en la segunda se almacena la direccin de memoria dir.




Ejercicio 2. Dada la siguiente definicin del segmento de datos en un fragmento de programa que usa el
ensamblador del MIPS 32:

.data:
.align 2
N: .word 80
V1: .space 200


Responda:

a) Para qu se utiliza align?

Se utiliza para que la siguiente direccin de memoria (en el ejemplo anterior, N) est alineada a un
mltiplo, en este caso, de 2
2
.

b) Cuntos bits almacena el dato almacenado en la posicin de memoria N?

En la direccin N se almacena una palabra, por tanto 32 bits.


c) Si V1 es un vector de nmeros enteros, escriba un fragmento de programa que permita imprimir el
contenido de todos elementos del vector (v1[0], v1[1] .), cada elemento en una lnea.

El tamao del vector es de 200 bytes, es decir de 200/4 = 50 elementos de tipo entero.
El cdigo C que permite imprimir todos los elementos del vector es:

for (i = 0; i < 50; i++)
printf(%d\n, v[i]);

Un posible cdigo ensamblador sera:

li $v0, 1
li $t0, 0
li $t1, 50
la $t2, v1
bulce: bge $t0, $t1, fin
lw $a0, ($t2)
syscall

addi $t0, $t0, 1
addi $t2, $t2, 4
b bucle
fin:









UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
16 de octubre de 2013 Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni calculadoras de
ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Considere un computador de 48 bits, que dispone de 36 registros y un juego de 124
instrucciones mquina. Responda a las siguientes preguntas:
f) Cul es el rango de nmeros enteros en complemento a 2 que puede manejar?

[-2
47
..2
47
-1]



g) Cuntos nmeros en coma flotante de doble precisin se podran almacenar como mucho en la
memoria de este computador? Exprese el resultado en K.

Un computador de 48 bits puede direccionar 2
48
bytes, como los nmeros en coma flotante ocupan
64 bits = 2
3
bytes, puede almacenar 2
48
/2
3
= 2
45
palabras = 2
45
/ 2
10
= 2
35
Kpalabras.


h) Cul es el tamao en bits de cada registro?

Coincide con el tamao de la palabra, es decir, 48 bits.


i) Qu es el registro de instruccin?


El registro de instruccin es un registro del procesador que almacena la instruccin que se est
ejecutando en un momento determinado dentro del procesador.



j) Considere la instruccin LOAD R1, numero(R2). Esta instruccin cara en el registro R1 el
dato almacenado en la posicin de memoria que viene representada por numero(R2), donde R2
es un registro y numero es un nmero en complemento a 2. Indique el formato de dicha
instruccin

Para codificar el cdigo de operacin se necesitan 7 bits, para los registros 6 bits (log
2
68 por
exceso). Los nmeros en este computador ocupan el tamao de una palabra, es decir, 48 bits. Por
tanto se necesitan dos palabras para representar esta instruccin. En la primera se almacena el
cdigo de operacin y los identificadores de los dos registros y en la segunda se almacena la el
nmero.




Ejercicio 2. Dada la siguiente definicin del segmento de datos en un fragmento de programa que usa el
ensamblador del MIPS 32:

.data:
.align 2
N: .double 80.0
S: .asciiz Hola Mundo\n


Responda:

d) Para qu se utiliza align?
Se utiliza para que la siguiente direccin de memoria (en el ejemplo anterior, N) est alineada a un
mltiplo, en este caso, de 2
2
.


e) Cuntos bits almacena el dato de la posicin de memoria N?

En N se almacena un nmero en coma flotante de doble precisin, es decir, de 64 bits.

f) Si S representa una cadena de caracteres, escriba un fragmento de programa que permita imprimir
el contenido de todos elementos de la cadena (S[0], S[1] .), cada elemento en una lnea.


El tamao del vector es de 200 bytes, es decir de 200/4 = 50 elementos de tipo entero.
El cdigo C que permite imprimir todos los elementos del vector es:

While (s[i] != 0)
printf(%c\n, s[i]);

Un posible cdigo ensamblador sera:


li $v0, 11
la $t2, s
lbu $a0, ($t2)
bulce: bgez $a0, fin
syscall

addi $t2, $t2, 1
lbu $a0, ($t2)
b bucle
fin:










UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
6 de noviembre de 2013. Grupo 82. Examen 3 Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Escriba el cdigo de una funcin denomina Func, que recibe 6 argumentos de tipo entero. La funcin
devuelve el resultado de la suma de los 6 argumentos.


Func: add $v0, $a0, $a1
add $v0, $v0, $a2
add $v0, $v0, $a3

lw $t0, ($sp)
add $v0, $v0, $t0
lw $t0, 4($sp)
add $v0, $v0, $t0
jr $ra




































Ejercicio2. Dada la estructura del computador visto en clase. Indique ciclos y operaciones elementales necesarios
para ejecutar la instruccin del MIPS: lw $t1, n($t2). Incluya el cdigo de fetch y asuma que la
memoria necesita 2 ciclos para las operaciones de lectura y escritura.

Memoria
principal
Procesador
Banco de
registros
Unidad de
Control
MAR MBR RI
ALU
RE
Seales de control
Bus de direcciones
Bus de datos
Bus de control
Seales de
interrupcin
RT1 RT2
RT3
PC
4
A
T1
Td Ta
T3
T2
B
E
RC
SC
RA
Cod. OP
RB
L
E
MUX A MUX B
+
MA
0
MB
1 0 1
T4
T5
T6
T7
T8
C1
C2
C3
C4
C9
C10
C11
C5
C7
C8
C6
Bus
interno


Ciclo Operaciones elementales
C0 MAR !PC
C1 MBR !MP
C2 MBR !MP, PC !PC +4
C3 RI !MBR
C4 Decodificacin
C5 RT1 ! RI(n)
C6 $t1 !RT1 + $t2


Ejercicio 3. Considere un hipottico computador con 64 registros que direcciona la memoria por bytes. En este
computador se pueden direccionar como mucho 256 MB de memoria. Asumiendo que el tamao de la palabra de
este computador coincide con el nmero de bits empleados para las direcciones de memoria. Responda a las
siguientes preguntas:

a) Cuntos bits se emplean para las direcciones de memoria?

Se pueden direccionar 256 MB = 2
8
x 2
20
= 2
28
bytes. Por tanto las direcciones son de 28 bits.

b) Cul es el tamao en bits de los registros?

El tamao coincide con el tamao de palabra, que coincide con el tamao de las direcciones de memoria, es
decir, 28 bits.

c) Cuntos bits se almacenan en cada posicin de memoria?

8 bits (1 byte)

d) Qu es el contador de programa y para qu se utiliza? Cuntos registros de este tipo hay en un
procesador?

El contador de programa es un registro que se encuentra en el procesador y que almacena la
direccin de la siguiente instruccin a ejecutar.
UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
6 de noviembre de 2013. Grupo 82. Examen 3 Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .



Ejercicio 1. Considere una funcin F que recibe 6 argumentos de tipo entero y devuelve un valor de tipo entero.
Escriba el fragmento de cdigo necesario para invocar a la funcin F, de la siguiente forma: F(a, 2, 3, 4,
5+3, 0). A continuacin se debe imprimir el valor que devuelve la funcin.

li $a0, a
li $a1, 2
li $a2, 3
li $a4, 4
li $t0, 8
sub $sp, $sp, 8
sw $t0, ($sp)
sw $zero, 4($sp)
jal F
addi $sp, $sp, 8
move $a0, $v0
li $v0, 1
syscall





























Ejercicio2. Dada la estructura del computador visto en clase. Indique ciclos y operaciones elementales necesarios
para ejecutar la instruccin del MIPS (que ocupa una palabra): la $t1, direccin.
Incluya el ciclo de fetch y asuma que la memoria necesita 4 ciclos para las operaciones de lectura y escritura.

Memoria
principal
Procesador
Banco de
registros
Unidad de
Control
MAR MBR RI
ALU
RE
Seales de control
Bus de direcciones
Bus de datos
Bus de control
Seales de
interrupcin
RT1 RT2
RT3
PC
4
A
T1
Td Ta
T3
T2
B
E
RC
SC
RA
Cod. OP
RB
L
E
MUX A MUX B
+
MA
0
MB
1 0 1
T4
T5
T6
T7
T8
C1
C2
C3
C4
C9
C10
C11
C5
C7
C8
C6
Bus
interno


Ciclo Operaciones elementales
C0 MAR !PC
C1 MBR !MP
C2 MBR !MP
C3 MBR !MP
C4 MBR !MP, PC !PC +4
C5 RI !MBR
C6 Decodificacin
C57 $t1 !RI(direccin)

Ejercicio 3. Considere un hipottico computador con 128 registros que direcciona la memoria por bytes. Este
computador tiene un ancho de palabra de 16 bits. Responda a las siguientes preguntas:

a) Cunta memoria puede direccionar este computador? Exprese el resultado en KB

2
16
bytes = 2
6
KB


b) Cul es el tamao en bits de los registros?

16 bits

c) Cuntos bits se almacenan en cada posicin de memoria?

8 bits (1 byte)

d) Qu es el registro de instruccin y para qu lo utiliza la unidad de control?

El registro de instruccin es un registro del procesador que almacena la instruccin que se est
ejecutando en un momento determinado dentro del procesador. Lo utiliza la unidad de control
para acceder al cdigo de operacin y decodificar la instruccin




UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
20 de noviembre de 2013 Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Dado el siguiente fragmento de programa escrito en el ensamblador del MIPS 32

la $t1, 0x04000
la $t2, 0x04100
li $t3, 0
li $t4, 1000
bucle: bgt $t3, $t4, fin
lw $t5, ($t1)
addi $t5, $t5, 1
sw $t5, ($t2)
addi $t3, $t3, 1
addi $t1, $t1, 4
addi $t2, $t2, 4
b bucle
fin:

Indique de forma razonada el nmero de bytes que ocupa dicho programa en memoria y el nmero de accesos que
se realizan a memoria cuando se ejecuta dicho fragmento de programa.

Este fragmento de programa est formado por 12 instrucciones mquina. Como todas las instrucciones en el MIPS
ocupan una palabra, el fragmento de programa ocupa 12 palabras = 12 x 4 = 48 bytes.

En el fragmento anterior el bucle se ejecuta 1001 veces, el nmero de instrucciones que se ejecuta es:
4 + 1001 x 8 + 1 = 8008+ 5 = 8012.
La ejecucin de cada instruccin supone un acceso a memoria. Adems, dentro del bucle se ejecutan dos accesos
adicionales a memoria (instrucciones lw y sw). Por tanto, el nmero total de accesos a memoria es de 8012 + 1001
x 2= 8012 + 2002 = 10014 accesos.





















Ejercicio 2. Considere la siguiente funcin de un lenguaje de alto nivel:

int funcin(int A[ ], int N, int x)
{
int i;

for (i = 0; i < N; i = i + 1)
A[i] = A[i] + X;

return X;
}

Donde A representan un array de nmeros enteros y N el nmero de elementos del array. Escriba una funcin en
ensamblador que implemente la misma funcionalidad, para ello debe seguirse el convenio de paso de parmetros
visto en clase.

funcion: li $t0, 0
move $t1, $a0
bucle: bge $t0, $a1, fin
lw $t2, ($t1)
add $t2, $t2, $a2
sw $t2, ($t1)
addi $t0, $t0, 1
addi $t1, $t1, 4
b bucle
fin: move $v0,$a2
jr $ra































UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
20 de noviembre de 2013 Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno: .
Grupo: .


Ejercicio 1. Dado el siguiente fragmento de programa escrito en el ensamblador del MIPS 32.

la $t1, 0x04000
la $t2, 0x04100
li $t3, 0
li $t4, 100
bucle: bgt $t3, $t4, fin
lbu $t5, ($t1)
lbu $t6, ($t2)
addi $t3, $t3, 1
addi $t1, $t1, 1
addi $t2, $t2, 1
b bucle
fin:

Indique de forma razonada el nmero de bytes que ocupa dicho programa en memoria y el nmero de accesos que
se realizan a memoria cuando se ejecuta dicho fragmento de programa.

Este fragmento de programa est formado por 11 instrucciones mquina. Como todas las instrucciones en el MIPS
ocupan una palabra, el fragmento de programa ocupa 11 palabras = 11x 4 = 44 bytes.

En el fragmento anterior el bucle se ejecuta 101 veces, el nmero de instrucciones que se ejecuta es:
4 + 101 x 7 + 1 = 707 + 5 = 712.
La ejecucin de cada instruccin supone un acceso a memoria. Adems, dentro del bucle se ejecutan dos accesos
adicionales a memoria (instrucciones lbu). Por tanto, el nmero total de accesos a memoria es de 712 + 101 x 2=
712 + 202 = 914 accesos.





















Ejercicio 2. Considere la siguiente funcin de un lenguaje de alto nivel:

int funcin(int A[ ], int B[ ], int N)
{
int i;
int c = 0;

for (i = 0; i < N; i = i + 1)
if (A[i] == B[i])
c = c + 1;

return c;
}

Donde A y B representan arrays de nmeros enteros y N el nmero de elementos de los dos arrays. Escriba una
funcin en ensamblador que implemente la misma funcionalidad, para ello debe seguirse el convenio de paso de
parmetros visto en clase.

funcin: move $t0, $a0
move $t1, $a1
li $t0, 0
li $v0, 0
bucle: bge $t0, $a2, fin
lw $t2, ($t0)
lw $t3, ($t1)
bneq $t2, $t3, noigual
addi $v0, $v0, 1
noigual: addi $t0, $t0, 1
addi $t1, $t1, 4
addi $t2, $t2, 4
b bucle
fin: jr $ra























UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
4 de diciembre de 2013. Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno:___________________________________________________________ Grupo:___________.

Ejercicio 1. Considere un computador de 32 bits con una cach de 128 KB asociativa por conjuntos de 8 vas. El
tamao de la lnea es de 128 bytes. El tiempo para servir un fallo es de 100 ns. El computador dispone de un
sistema de memoria virtual que emplea pginas de 8 KB y tiene instalada una memoria principal de 1 GB. Indique
de forma razonada:

a) El nmero de lneas de la cach
b) El nmero de conjuntos de la cach
c) El tamao del bloque que se transfiere en un fallo entre memoria principal y cach.
d) El formato de la direccin virtual.
e) El nmero mximo de pginas en este computador.
f) El nmero de marcos de pgina de este computador.
g) El tamao del bloque que se transfiere entre disco y memoria principal cuando ocurre un fallo de pgina
h) El elemento del computador que genera el fallo de pgina


a) El nmero de lneas es 128 KB / 128 bytes = 2
17
/ 2
7
= 2
10
= 1024 lneas.
b) El nmero de conjuntos = 1024 / 8 vas = 2
10
/ 2
3
= 2
7
= 128 conjuntos.
c) 128 bytes.
d) Como las pginas son de 8 KB = 2
13
bytes, se emplean 13 bits para direccionar el byte dentro de la pgina y
32-13 = 19 bits para la pgina





e) 2
19
pginas
f) 16 GB / 8 KB = 2
30
/ 2
13
= 2
17
marcos de pgina.
g) 8 KB
h) La MMU (unidad de gestin de memoria)
NP (19 bits) Desplazamiento (13 its)

Ejercicio 2. Considere la siguiente funcin de un lenguaje de alto nivel y un posible fragmento de la seccin de
datos en ensamblador.int funcin(int A, int B, int C, int D)
{
int i, j;
int x = 0;
for (i=0; i < A; i++)
for (j = 0; j < B; j++)
x = x + C + D;

return x;

}

.data:
N1: .word 8
N2: .word 7
N3: .word 9
N4: .word 6
N5: .word 0

a) Escriba una funcin en ensamblador que implemente la misma funcionalidad, para ello debe seguirse
estrictamente el convenio de paso de parmetros visto en clase.
b) Escriba en ensamblador el cdigo necesario para invocar a la funcin anterior pasando como parmetros
los valores de las posiciones de memoria N1, N2, N3 y N4. El resultado que devuelve la funcin debe
almacenarse en la posicin de memoria N5.

a)
funcin: li $v0, 0
li $t0, 0
add $t2, $a2, $a3
b1: bgt $t0, $a0, fin1
li $t1, 0
b2: bgt $t1, $a1, fin2
add $v0, $v0, $t2
add $t1, $t1, 1
b bb2
fin2: addi $t2, $t2, 1
b b1
fin1: jr $ra

b)
lw $a0, N1
lw $a1, N2
lw $a2, N3
lw $a3, N4
jal funcin
sw $v0, N5














UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
4 de diciembre de 2013. Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno:___________________________________________________________ Grupo:___________.

Ejercicio 1. Considere la siguiente funcin de un lenguaje de alto nivel y un posible fragmento de la seccin de
datos en ensamblador.
int funcin(int A, int B, int C)
{
int i, j;
int x = 0;

for (i=A; i >= 0; i--)
if (i B > C)
x = x + B C;
return x;

}

.data:
N1: .word 20
N2: .word 70
N3: .word 9
N4: .word 6
N5: .word 01

c) Escriba una funcin en ensamblador que implemente la misma funcionalidad, para ello debe seguirse
estrictamente el convenio de paso de parmetros visto en clase.
d) Escriba en ensamblador el cdigo necesario para invocar a la funcin anterior pasando como parmetros
los valores de las posiciones de memoria N1, N2, y N3. El resultado que devuelve la funcin debe
imprimirse por pantalla

a)
funcin: li $v0, 0
move $t0, $a0
bucle: blt $t0, $a0, fin
sub $t1, $t0, $a1
ble $t1, $a2, nomayor
sub $t1, $a1, $a2
add $v0, $v0, $t1
nomayor addi $t0, $t0 -1
b bucle
fin: jr $ra

b)

lw $a0, N1
lw $a1, N2
lw $a2, N3
jal funcin
move $a0, $v0
li $v0, 1
syscall
Ejercicio 2. Considere un computador de 64 bits con una cach de 256 KB asociativa por conjuntos de 16 vas. El
tamao de la lnea es de 256 bytes. El tiempo de acceso a la cach es de 2 ns y el tiempo para servir un fallo es de
100 ns. El computador dispone de un sistema de memoria virtual que emplea pginas de 4 KB y tiene instalada una
memoria principal de 2 GB. Indique de forma razonada:

i) El nmero de lneas de la cach
j) El nmero de conjuntos de la cach
k) El tiempo medio de acceso a la cach si la tasa de aciertos es del 95%.
l) El nmero de marcos de pgina de este computador.
m) El formato de la direccin virtual.
n) El nmero mximo de pginas en este computador.
o) El tamao del bloque que se transfiere entre disco y memoria principal cuando ocurre un fallo de pgina
p) Quin se encarga de tratar el fallo de pgina?




i) El nmero de lneas es 256 KB / 256 bytes = 2
18
/ 2
8
= 2
10
= 1024 lneas.
j) El nmero de conjuntos = 1024 / 16 vas = 2
10
/ 2
4
= 2
76
= 64 conjuntos.
k) Tm = 0.95 x 2 + 0.05 x 100 = 6.9 ns
l) 2 GB / 4 KB = 2
31
/ 2
12
= 2
19
marcos de pgina.
m) Como las pginas son de 4 KB = 2
12
bytes, se emplean 12 bits para direccionar el byte dentro de la pgina y
64-13 = 52 bits para la pgina





n) 2
52
pginas
o) 4 KB
p) El sistema operativo

























NP (52 bits) Desplazamiento (12 bits)
UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
17 de diciembre de 2013. Modelo A

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno:___________________________________________________________ Grupo:___________.

Ejercicio 1. Considere un computador de 32 bits con una cach de 64 KB asociativa por conjuntos de 4 vas y un
tiempo de acceso de 4 ns. El tamao de la lnea es de 64 bytes. El tiempo para servir un fallo es de 120 ns.
Considere que en este computador se ejecuta el siguiente fragmento de programa con la cach inicialmente vaca.

char v1[8192];
char v2[8192];

for (i = 0; i < 8192; i = i + 2)
v1[i] = v2[i];

Se pide:
a) Indique el nmero de lneas y conjuntos de la cache. (1 punto)
b) Indique de forma razonada la tasa de aciertos a la cach para el fragmento de cdigo anterior teniendo en
cuenta solo los accesos a datos (considere que la variable i se almacena en un registro) (4 puntos)

a) Cache de 64 KB = 2
16
bytes y lneas de 64 bytes = 2
6
bytes. El nmero de lneas es 2
16
/ 2
6
= 2
10
lneas. El
nmero de conjuntos es 2
10
/ 2
2
= 2
8
= 256 conjuntos.

b) En cada lnea de cach caben 64 / 1 = 64 bytes. El patrn de accesos es el siguiente:

Lectura de v2[0] fallo se trae a cach v2[0]..v2[63]
Escritura de v1[0] fallo se trae a cach v1[0]..v1[63]
Lectura de v1[2] acierto
Escritura de v1[2] acierto
.
Lectura de v2[62] acierto
Escritura de v1[62] acierto
Lectura de v2[64] fallo
Escritura de v1[64] fallo

Cada 32 iteraciones del bucle hay una lectura y una escritura, es decir, 2 accesos, y se producen 2 fallos,
por tanto la tasa de aciertos = 62/64

Ejercicio 2. (5 puntos) Considere un controlador de un sensor de temperatura. El controlador dispone de 3
registros:
Registro de datos (direccin 0x1000), registro de 32 bits que almacena la temperatura.
Registro de control (direccin 0x1004), registro de 32 bits. Cuando se escribe en el registro el valor 010 se
le indica al controlador que inicie una toma de temperatura.
Registro de estado (direccin 0x1008), registro de 32 bits. Si el valor del registro es 0, el controlador no
dispone de una medida estable. Si el valor es 1, el controlador dispone de una medida estable.

Si el computador al que se conecta este controlador tiene un mapa de E/S y memoria comn y dispone del juego de
instrucciones del MIPS 32, realice un programa que de forma indefinida lea temperaturas. Cada vez que se lee un
nuevo valor de la temperatura se almacena dicho valor en la posicin de memoria 0x0000A000 y se imprimir por
pantalla.

bucle: li $t0, 010
sw $t0, 0x1004
b1: lw $t0, 0x1008
beq $t0, b1
lw $t0, 0x1000
sw $t0, 0x0000A000
li $v0, 1
move $a0, $t0
syscall
b bucle































UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMTICA
GRADO EN INGENIERA INFORMTICA. ESTRUCTURA DE COMPUTADORES
17 de diciembre de 2013. Modelo B

Para la realizacin del presente examen se dispondr de 15 minutos. NO se podrn utilizar libros, apuntes ni
calculadoras de ningn tipo. Responda en el espacio reservado

Alumno:___________________________________________________________ Grupo:___________.

Ejercicio 1. Considere un computador de 32 bits con una cach de 64 KB asociativa por conjuntos de 4 vas y un
tiempo de acceso de 5 ns. El tamao de la lnea es de 128 bytes. El tiempo para servir un fallo es de 200 ns.
Considere el siguiente fragmento de programa:

float v1[10000];
float v2[10000];

for (i = 0; i < 10000; i = i + 2)
v1[i] = v1[i] + v2[i];

Se pide:
a) Indique el nmero de lneas y conjuntos de la cache. (1 punto)
b) Indique de forma razonada la tasa de aciertos a la cach para el fragmento de cdigo anterior teniendo en
cuenta solo los accesos a datos (considere que la variable i se almacena en un registro y que la cach esta
inicialmente vaca) (4 puntos)



c) Cache de 64 KB = 2
16
bytes y lneas de 128 bytes = 2
7
bytes. El nmero de lneas es 2
16
/ 2
7
= 2
9
lneas. El
nmero de conjuntos es 2
9
/ 2
2
= 2
8
= 128 conjuntos.

d) En cada lnea de cach caben 128 / 4 = 32 elementos. El patrn de accesos es el siguiente:

Lectura de v1[0] fallo se trae a cach v1[0]..v2[31]
Lectura de v2[0] fallo se trae a cach v2[0]..v2[32]
Escritura de v1[0] acierto

Lectura de v1[2] acierto
Lectura de v2[2] acierto
Escritura de v1[1] acierto
.
Lectura de v1[32] fallo
lectura de v2[32] fallo
escritura de v1[32] acierto

Cada 16 iteraciones del bucle hay dos lectura y una escritura, es decir, 3 accesos. En total 48 accesos y se
producen 2 fallos, por tanto la tasa de aciertos = 46/48





Ejercicio 2. Considere un controlador de un lector cdigo de barras. El controlador dispone de 3 registros:
Registro de datos (direccin 0x1000), registro de 32 bits que almacena la el cdigo de barras ledo.
Registro de control (direccin 0x1004), registro de 32 bits. Cuando se escribe en el registro el valor 111 se
inicializa el lector de cdigos de barras. Cuando se escribe el valor 001 se le indica que se quiere hacer una
lectura.
Registro de estado (direccin 0x1008), registro de 32 bits. Si el valor del registro es 0, no se ha realizado
ninguna lectura. Si el valor es 1, se ha realizado una lectura y el controlador dispone en el registro de datos
del cdigo del producto.

Si el computador al que se conecta este controlador tiene un mapa de E/S y memoria comn y dispone del juego de
instrucciones del MIPS 32, realice un programa que: inicialice el lector y despus de forma indefinida lea cdigos
de barras. Cada vez que se lee un nuevo cdigo de barras se almacenar dicho valor en la posicin de memoria
0xA0000000. Adems se imprimir por pantalla.


li $t0, 111
sw $t0, 0x1004

bucle: li $t0, 001
sw $t0, 0x1004
b1: lw $t0, 0x1008
beqz $t0, b1
lw $t0, 0x1000
sw $t0, 0xA0000000
li $v0, 1
move $a0, $t0
syscall
b bucle

S-ar putea să vă placă și