Soluciones-miniexamenes-grupo82

August 26, 2018 | Author: Fernando Gómez-Caro Villafuertes | Category: Bit, 64 Bit Computing, Computer Program, Assembly Language, Cache (Computing)
Share Embed Donate


Short Description

Download Soluciones-miniexamenes-grupo82...

Description

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 2 de octubre de 2013 Modelo A Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Represente en el estándar 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 1000…0000 El resultado es: 10111111010000000000000000000000 = 0xBF400000

 b) Dado el siguiente número hexadecimal 0x7FF0000000000000  que almacena un valor según el estándar IEEE754 de 64 bits. Indique su valor. c en binario es: 0111111111110000000…00000 . El signo es 0, el exponente (11 siguientes bits al signo) es 11111111111 y la mantisa es 0. El número 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 dirección de la siguiente instrucción a ejecutar.

Ejercicio 3. Considere un hipotético computador de 20 bits con 60 registros que direcciona la memoria  por bytes. Responda a las la s siguientes preguntas: pregun tas: a) ¿Cuántos bits se emplean para las direcciones de memoria? 20

 b) ¿Cuál es el tamaño de los registros? 20 bits

c) ¿Cuántos bits se almacenan en cada posición de memoria? 8 bits

d) ¿Cuántas posiciones de memoria se pueden direccionar? Exprese el resultado en KB se pueden direccionar 220 bytes = 210 MB = 1024 KB

e) ¿Cuántos 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 INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 2 de octubre de 2013 Modelo B Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Considere un hipotético 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 tamaño de la palabra de este computador coincide con el número de bits empleados para las direcciones de memoria. Responda a las siguientes preguntas: f) ¿Cuántos bits se emplean para las direcciones de memoria? 64 KB = 64 x 210 = 216, por tanto, se emplean 16 bits.

g) ¿Cuál es el tamaño de los registros? 16 bits h) ¿Cuántos bits se almacenan en cada posición de memoria? 8 bits = 1 byte

i) Si el computador fuera de 32 bits. ¿Cuál sería el tamaño de la máxima memoria direccionable? Exprese el resultado en MB 232 bytes = 212 x 220 MB = 4096 MB

 j) ¿Cuántos bits se necesitan para identificar a los registros? Log2100 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 número hexadecimal IEEE754. Indique su valor decimal.

0x41E00000 , que almacena un valor según el estándar

0x41E00000 = 0100000111100000000….00000 El signo es 0, por tanto el número 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 añade el bit implícito) es 1,11(2 El número, por tanto, es 1,11(2 x 24 = 11100(2 = 28

d) Represente el valor hexadecimal.

  en el estándar IEEE754 de 64 bits.

!

Exprese el resultado final en

111111111111000000……0000000 = 0xFFF0000000000000

Ejercicio 4. ¿Qué es el registro de instrucción y qué almacena? El registro de instrucción es un registro del procesador que almacena la instrucción que se está ejecutando en un momento determinado dentro del procesador.

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 16 de octubre de 2013 Modelo A Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún 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 máquina. Responda a las siguientes preguntas: a) ¿Cuál es el rango de números enteros en complemento a 2 que puede manejar? [-263..263-1]

 b) ¿Cuántas palabras se pueden almacenar como mucho en la memoria de este computador? Exprese el resultado en M. Un computador de 64 bits puede direccionar 264 bytes, como las palabras en este computador son de 64 bits = 8 bytes, puede almacenar 264 /23 = 261 palabras = 261 / 220 = 241 Mpalabras.

c) ¿Cuál es el tamaño en bits de cada registro? Coincide con el tamaño 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 dirección de la siguiente instrucción a ejecutar.

e) Considere la instrucción ADDM dir, R1, R2. Esta instrucción suma el contenido del registro R1 con el contenido del registro R2  y deja el resultado en la posición de memoria con dirección dir. Indique el formato de dicha instrucción. Para codificar el código de operación se necesitan 8 bits, para los registros 7 bits (log268 por exceso). Las direcciones de memoria en este computador son de 64 bits. Por tanto se necesitan dos  palabras para representar esta instrucción. En la primera se almacena el código de operación y los identificadores de los dos registros y en la segunda se almacena la dirección de memoria dir.

Ejercicio 2. Dada la siguiente definición 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 dirección de memoria (en el ejemplo anterior, N) esté alineada a un múltiplo, en este caso, de 22.  b) ¿Cuántos bits almacena el dato almacenado en la posición de memoria N? En la dirección N se almacena una palabra, por tanto 32 bits.

c) Si V1 es un vector de números enteros, escriba un fragmento de programa que permita imprimir el contenido de todos elementos del vector (v1[0], v1[1] ….), cada elemento en una línea. El tamaño del vector es de 200 bytes, es decir de 200/4 = 50 elementos de tipo entero. El código C que permite imprimir todos los elementos del vector es: for (i = 0; i < 50; i++) printf(“%d\n”, v[i]);

Un posible código ensamblador sería:

bulce:

li $v0, 1 li $t0, 0 li $t1, 50 la $t2, v1 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 INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 16 de octubre de 2013 Modelo B Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún 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 máquina. Responda a las siguientes preguntas: f) ¿Cuál es el rango de números enteros en complemento a 2 que puede manejar? [-247..247-1]

g) ¿Cuántos números en coma flotante de doble precisión se podrían almacenar como mucho en la memoria de este computador? Exprese el resultado en K. Un computador de 48 bits puede direccionar 248 bytes, como los números en coma flotante ocupan 64 bits = 23 bytes, puede almacenar 248/23 = 245 palabras = 245 / 210 = 235 Kpalabras.

h) ¿Cuál es el tamaño en bits de cada registro? Coincide con el tamaño de la palabra, es decir, 48 bits.

i)

¿Qué es el registro de instrucción?

El registro de instrucción es un registro del procesador que almacena la instrucción que se está ejecutando en un momento determinado dentro del procesador.

 j) Considere la instrucción LOAD R1, numero(R2) . Esta instrucción cara en el registro R1 el dato almacenado en la posición de memoria que viene representada por numero(R2), donde R2 es un registro y numero es un número en complemento a 2. Indique el formato de dicha instrucción Para codificar el código de operación se necesitan 7 bits, para los registros 6 bits (log268 por exceso). Los números en este computador ocupan el tamaño de una palabra, es decir, 48 bits. Por tanto se necesitan dos palabras para representar esta instrucción. En la primera se almacena el código de operación y los identificadores de los dos registros y en la segunda se almacena la el número.

Ejercicio 2. Dada la siguiente definición 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 dirección de memoria (en el ejemplo anterior, N) esté alineada a un múltiplo, en este caso, de 22.

e) ¿Cuántos bits almacena el dato de la posición de memoria N? En N se almacena un número en coma flotante de doble precisión, 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 línea.

El tamaño del vector es de 200 bytes, es decir de 200/4 = 50 elementos de tipo entero. El código C que permite imprimir todos los elementos del vector es: While (s[i] != 0) printf(“%c\n”, s[i]);

Un posible código ensamblador sería:

bulce:

li $v0, la $t2, lbu $a0, bgez $a0, syscall

11 s ($t2) fin

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

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 6 de noviembre de 2013. Grupo 82. Examen 3 Modelo A Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Escriba el código de una función denomina Func, que recibe 6 argumentos de tipo entero. La función 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, add $v0, lw $t0, add $v0, jr $ra

($sp) $v0, $t0 4($sp) $v0, $t0

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

Memoria  principal

E

Bus de direcciones Bus de datos Bus de control

Procesador 

4

Ta

Td

Señales de control

+ C1

MAR 

MBR 

C2 C3

PC

T3

T4

Bus interno T1

A RA RB RC SC

C4 C6 C5

T2

B

C9

T8

MA

1

MUX A MB

Banco de registros

Señales de interrupción

T7

C10

RT1 0

Unidad de Control

RI

RT2 0

T5 1

MUX B

RE T6

C7 C8

ALU

Cod. OP E

C11

RT3

Ciclo

Operaciones elementales

C0 C1 C2 C3 C4 C5 C6

MAR PC MBR MP MBR MP, PC RI MBR Decodificación RT1  RI(n) $t1 RT1 + $t2 !

! !

PC +4

!

!

!

!

Ejercicio 3. Considere un hipotético 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 tamaño de la palabra de este computador coincide con el número de bits empleados para las direcciones de memoria. Responda a las siguientes preguntas: a) ¿Cuántos bits se emplean para las direcciones de memoria? Se pueden direccionar 256 MB = 2 8 x 220 = 228 bytes. Por tanto las direcciones son de 28 bits.  b) ¿Cuál es el tamaño en bits de los registros? El tamaño coincide con el tamaño de palabra, que coincide con el tamaño de las direcciones de memoria, es decir, 28 bits. c) ¿Cuántos bits se almacenan en cada posición de memoria? 8 bits (1 byte) d) ¿Qué es el contador de programa y para qué se utiliza? ¿Cuántos 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 dirección de la siguiente instrucción a ejecutar.

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 6 de noviembre de 2013. Grupo 82. Examen 3 Modelo B Para la realización del presente examen se dispondrá de 15 minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Considere una función F que recibe 6 argumentos de tipo entero y devuelve un valor de tipo entero. Escriba el fragmento de código necesario para invocar a la función F, de la siguiente forma: F(‘a’, 2, 3, 4, 5+3, 0). A continuación se debe imprimir el valor que devuelve la función. 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 dirección.  para ejecutar la instrucción del MIPS (que ocupa una palabra): la $t1, Incluya el ciclo de  fetch y asuma que la memoria necesita 4 ciclos para las operaciones de lectura y escritura. L

Memoria  principal

E

Bus de direcciones Bus de datos Bus de control

Procesador 

4

Ta

Td

Señales de control

+ MAR 

C1

MBR 

C2 C3

PC

T3

T4

Bus interno T1

A RA RB RC SC

C4 C6 C5

T2

B

C9

T8

0

1

MUX A MB

Banco de registros

Señales de interrupción

T7

C10

RT1

MA

Unidad de Control

RI

RT2 0

T5 1

MUX B

RE T6

C7 C8

ALU

Cod. OP E

C11

RT3

Ciclo

Operaciones elementales

C0 C1 C2 C3 C4 C5 C6 C57

MAR PC MBR MP MBR MP MBR MP MBR MP, PC PC +4 RI MBR Decodificación $t1 RI(dirección) !

! ! ! !

!

!

!

Ejercicio 3. Considere un hipotético 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) ¿Cuánta memoria puede direccionar este computador? Exprese el resultado en KB 216 bytes = 26 KB

 b) ¿Cuál es el tamaño en bits de los registros?

16 bits c) ¿Cuántos bits se almacenan en cada posición de memoria?

8 bits (1 byte) d) ¿Qué es el registro de instrucción y para qué lo utiliza la unidad de control?

El registro de instrucción es un registro del procesador que almacena la instrucción que se está ejecutando en un momento determinado dentro del procesador. Lo utiliza la unidad de control  para acceder al código de operación y decodificar la instrucción

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 20 de noviembre de 2013 Modelo A Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Dado el siguiente fragmento de programa escrito en el ensamblador del MIPS 32 la la li li bucle:

$t1, 0x04000 $t2, 0x04100 $t3, 0 $t4, 1000 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 número de bytes que ocupa dicho programa en memoria y el número de accesos que se realizan a memoria cuando se ejecuta dicho fragmento de programa. Este fragmento de programa está formado por 12 instrucciones máquina. 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 número de instrucciones que se ejecuta es: 4 + 1001 x 8 + 1 = 8008+ 5 = 8012. La ejecución de cada instrucción supone un acceso a memoria. Además, dentro del bucle se ejecutan dos accesos adicionales a memoria (instrucciones lw y sw). Por tanto, el número total de accesos a memoria es de 8012 + 1001 x 2= 8012 + 2002 = 10014 accesos.

Ejercicio 2. Considere la siguiente función de un lenguaje de alto nivel: int función(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 números enteros y N el número de elementos del array. Escriba una función en ensamblador que implemente la misma funcionalidad, para ello debe seguirse el convenio de paso de parámetros visto en clase. funcion: bucle:

fin:

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

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 20 de noviembre de 2013 Modelo B Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno: Grupo:

. .

Ejercicio 1. Dado el siguiente fragmento de programa escrito en el ensamblador del MIPS 32. la la li li bucle:

$t1, $t2, $t3, $t4, bgt lbu lbu addi addi addi b

0x04000 0x04100 0 100 $t3, $t4, fin $t5, ($t1) $t6, ($t2) $t3, $t3, 1 $t1, $t1, 1 $t2, $t2, 1 bucle

fin:

Indique de forma razonada el número de bytes que ocupa dicho programa en memoria y el número de accesos que se realizan a memoria cuando se ejecuta dicho fragmento de programa. Este fragmento de programa está formado por 11 instrucciones máquina. 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 número de instrucciones que se ejecuta es: 4 + 101 x 7 + 1 = 707 + 5 = 712. La ejecución de cada instrucción supone un acceso a memoria. Además, dentro del bucle se ejecutan dos accesos adicionales a memoria (instrucciones lbu). Por tanto, el número total de accesos a memoria es de 712 + 101 x 2= 712 + 202 = 914 accesos.

Ejercicio 2. Considere la siguiente función de un lenguaje de alto nivel: int función(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 números enteros y N el número de elementos de los dos arrays. Escriba una función en ensamblador que implemente la misma funcionalidad, para ello debe seguirse el convenio de paso de  parámetros visto en clase. función:

bucle:

noigual:

fin:

move $t0, move $t1, li $t0, li $v0, bge $t0, lw $t2, lw $t3, bneq $t2, addi $v0, addi $t0, addi $t1, addi $t2, b bucle jr $ra

$a0 $a1 0 0 $a2, fin ($t0) ($t1) $t3, noigual $v0, 1 $t0, 1 $t1, 4 $t2, 4

UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 4 de diciembre de 2013. Modelo A Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún 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 vías. El tamaño de la línea 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 páginas de 8 KB y tiene instalada una memoria principal de 1 GB. Indique de forma razonada: a)  b) c) d) e) f) g) h)

El número de líneas de la caché El número de conjuntos de la caché El tamaño del bloque que se transfiere en un fallo entre memoria principal y caché. El formato de la dirección virtual. El número máximo de páginas en este computador. El número de marcos de página de este computador. El tamaño del bloque que se transfiere entre disco y memoria principal cuando ocurre un fallo de página El elemento del computador que genera el fallo de página

a)  b) c) d)

El número de líneas es 128 KB / 128 bytes = 2  / 2 = 2 = 1024 líneas. El número de conjuntos = 1024 / 8 vías = 2 10 / 23 = 27 = 128 conjuntos. 128 bytes. 13 Como las páginas son de 8 KB = 2  bytes, se emplean 13 bits para direccionar el byte dentro de la página y 32-13 = 19 bits para la página

17

 NP (19 bits)

e) f) g) h)

19

2  páginas 16 GB / 8 KB = 2 30 / 213 = 217 marcos de página. 8 KB La MMU (unidad de gestión de memoria)

7

10

Desplazamiento (13 its)

Ejercicio 2. Considere la siguiente función de un lenguaje de alto nivel y un posible fragmento de la sección de datos en ensamblador.int función(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: N2: N3: N4: N5:

.word .word .word .word .word

8 7 9 6 0

a) Escriba una función en ensamblador que implemente la misma funcionalidad, para ello debe seguirse

estrictamente el convenio de paso de parámetros visto en clase. b) Escriba en ensamblador el código necesario para invocar a la función anterior pasando como parámetros los valores de las posiciones de memoria N1, N2, N3 y N4. El resultado que devuelve la función debe almacenarse en la posición de memoria N5. a) función:

b1: b2:

fin2: fin1:

li li add bgt li bgt add add b addi b jr

b) lw lw lw lw jal sw

$a0, N1 $a1, N2 $a2, N3 $a3, N4 función $v0, N5

$v0, $t0, $t2, $t0, $t1, $t1, $v0, $t1, bb2 $t2, b1 $ra

0 0 $a2, $a0, 0 $a1, $v0, $t1,

$a3 fin1 fin2 $t2 1

$t2, 1

UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 4 de diciembre de 2013. Modelo B Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún tipo. Responda en el espacio reservado

Alumno:___________________________________________________________ Grupo:___________ . Ejercicio 1. Considere la siguiente función de un lenguaje de alto nivel y un posible fragmento de la sección de datos en ensamblador. int función(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: N2: N3: N4: N5:

.word .word .word .word .word

20 70 9 6 01

c) Escriba una función en ensamblador que implemente la misma funcionalidad, para ello debe seguirse

estrictamente el convenio de paso de parámetros visto en clase. d) Escriba en ensamblador el código necesario para invocar a la función anterior pasando como parámetros los valores de las posiciones de memoria N1, N2, y N3. El resultado que devuelve la función debe imprimirse por pantalla a) función: bucle:

nomayor fin: b) lw $a0, N1 lw $a1, N2 lw $a2, N3 jal función move $a0, $v0 li $v0, 1 syscall

li move blt sub ble sub add addi b jr

$v0, 0 $t0, $a0 $t0, $a0, fin $t1, $t0, $a1 $t1, $a2, nomayor $t1, $a1, $a2 $v0, $v0, $t1 $t0, $t0 -1 bucle $ra

Ejercicio 2. Considere un computador de 64 bits con una caché de 256 KB asociativa por conjuntos de 16 vías. El tamaño de la línea 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 páginas de 4 KB y tiene instalada una memoria principal de 2 GB. Indique de forma razonada: i)  j) k) l) m) n) o)  p)

El número de líneas de la caché El número de conjuntos de la caché El tiempo medio de acceso a la caché si la tasa de aciertos es del 95%. El número de marcos de página de este computador. El formato de la dirección virtual. El número máximo de páginas en este computador. El tamaño del bloque que se transfiere entre disco y memoria principal cuando ocurre un fallo de página ¿Quién se encarga de tratar el fallo de página?

i)  j) k) l) m)

El número de líneas es 256 KB / 256 bytes = 2 18 / 28 = 210 = 1024 líneas. El número de conjuntos = 1024 / 16 vías = 2 10 / 24 = 276= 64 conjuntos. Tm = 0.95 x 2 + 0.05 x 100 = 6.9 ns 2 GB / 4 KB = 2 31 / 212 = 219 marcos de página. 12 Como las páginas son de 4 KB = 2  bytes, se emplean 12 bits para direccionar el byte dentro de la página y 64-13 = 52 bits para la página

 NP (52 bits)

n) 252 páginas o) 4 KB  p) El sistema operativo

Desplazamiento (12 bits)

UNIVERSIDAD CARLOS III DE MADRID. DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 17 de diciembre de 2013. Modelo A Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún 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 vías y un tiempo de acceso de 4 ns. El tamaño de la línea 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 vacía. char v1[8192]; char v2[8192]; for (i = 0; i < 8192; i = i + 2) v1[i] = v2[i];

Se pide: a) Indique el número de líneas y conjuntos de la cache. (1 punto)  b) Indique de forma razonada la tasa de aciertos a la caché para el fragmento de código 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 líneas de 64 bytes = 2 6 bytes. El número de líneas es 2 16 / 26 = 210 líneas. El número de conjuntos es 2 10 / 22 = 28 = 256 conjuntos.  b) En cada línea de caché caben 64 / 1 = 64 bytes. El patrón de accesos es el siguiente: Lectura de v2[0] Escritura de v1[0] Lectura de v1[2] Escritura de v1[2] …. Lectura de v2[62] Escritura de v1[62] Lectura de v2[64] Escritura de v1[64]

fallo fallo acierto acierto

se trae a caché v2[0]…..v2[63] se trae a caché v1[0]…..v1[63]

acierto acierto fallo 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 (dirección 0x1000), registro de 32 bits que almacena la temperatura. Registro de control (dirección 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 (dirección 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 común 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 posición de memoria 0x0000A000 y se imprimirá por  pantalla. bucle: b1:

li $t0, 010 sw $t0, 0x1004 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 INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 17 de diciembre de 2013. Modelo B Para la realización del presente examen se dispondrá de 15  minutos. NO se podrán utilizar libros, apuntes ni calculadoras de ningún 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 vías y un tiempo de acceso de 5 ns. El tamaño de la línea 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 número de líneas y conjuntos de la cache. (1 punto)  b) Indique de forma razonada la tasa de aciertos a la caché para el fragmento de código 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 vacía) (4 puntos)

16

7

16

7

9

c) Cache de 64 KB = 2  bytes y líneas de 128 bytes = 2  bytes. El número de líneas es 2  / 2  = 2  líneas. El número de conjuntos es 2 9 / 22 = 28 = 128 conjuntos. d) En cada línea de caché caben 128 / 4 = 32 elementos. El patrón de accesos es el siguiente: Lectura de v1[0] Lectura de v2[0] Escritura de v1[0]

fallo fallo acierto

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

acierto acierto acierto

se trae a caché v1[0]…..v2[31] se trae a caché v2[0]…..v2[32]

fallo fallo 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 código de barras. El controlador dispone de 3 registros: • •



Registro de datos (dirección 0x1000), registro de 32 bits que almacena la el código de barras leído. Registro de control (dirección 0x1004), registro de 32 bits. Cuando se escribe en el registro el valor 111 se inicializa el lector de códigos de barras. Cuando se escribe el valor 001 se le indica que se quiere hacer una lectura. Registro de estado (dirección 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 código del producto.

Si el computador al que se conecta este controlador tiene un mapa de E/S y memoria común y dispone del juego de instrucciones del MIPS 32, realice un programa que: inicialice el lector y después de forma indefinida lea códigos de barras. Cada vez que se lee un nuevo código de barras se almacenará dicho valor en la posición de memoria 0xA0000000. Además se imprimirá por pantalla.

li sw bucle: b1:

$t0, 111 $t0, 0x1004

li $t0, sw $t0, lw $t0, beqz $t0, lw $t0, sw $t0, li $v0, move $a0, syscall b bucle

001 0x1004 0x1008 b1 0x1000 0xA0000000 1 $t0

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF