Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


solucion ic, Apuntes de Introducción a los Ordenadores

Asignatura: Introducció als Computadors, Profesor: Juan J. Navarro, Carrera: Enginyeria Informàtica, Universidad: UPC

Tipo: Apuntes

2014/2015

Subido el 20/05/2015

feliplopez
feliplopez 🇪🇸

3.9

(37)

4 documentos

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Examen E3 (20 de noviembre de 2014) IC - 14-15-Q1
Apellidos y nombre: ………………………………………………………………………………………………………………… Grup: …………… DNI:…………………………
1 / 5
Examen 3. (Temas 8, 9, 10 y 11)
Duración del examen: 2 horas.
La solución de cada ejercicio se tiene que escribir en el espacio reservado para ello en el propio enunciado.
No podéis utilizar calculadora, móvil, apuntes, etc.
La solución del examen se publicará en Atenea mañana y las notas antes del 1 de diciembre.
Ejercicio 1 (Objetivos 8.x) (1 punto)
Completad los dos fragmentos de grafo de estados de la UC de propósito específico para que junto con la UPG formen un procesador
que realice la funcionalidad descrita mediante el siguiente código en C. Indicad los arcos que faltan, las etiquetas de los arcos (z, !z, o
nada) y completad las casillas de cada palabra de control que se especifica con mnemotécnicos a la derecha de cada nodo del grafo.
Todos los datos son naturales. Ambos fragmentos ejecutan la misma funcionalidad pero de forma distinta.
R2 = 0; a) b)
if (R3<=R2) {
R3 = R3 / 16;
} else {
R4 = R5 - 23;
}
R1 = R4;
Criterio de corrección: Ambos apartados se corrigen conjuntamente. -0.25 puntos po r el primer nodo incorrecto y -0.50 pu ntos por cada
uno de los siguientes nodos incorrectos.
Un nodo es erróneo si falta alguno de los arcos que salen de él, si alguna etiqueta es incorrecta o los destinos de alguno de sus arcos es incorrecto. También es
incorrecto un nodo si la salida especificada mediante mnemotécnicos (operación, registros o valor inmediato) es incorrecta. Las funcionalidades que sean
iguales en ambos apartados y estén mál en ambos, sólo contaran como un error.
Hacemos una excepción a esta regla: Si falta la U o la I se descuenta 0.1 por ese nodo si sólo tiene ese fallo.
Ejercicio 2 (Objetivo 8.x) (1 punto)
a) Indica el valor que debe tener cada uno de los bits de la palabra de control de la UPG (sin subsistema de I/O ni memoria)
para que realice, durante un ciclo, la acción concreta especificada mediante el mnemotécnico. Indicad con x las casillas cuyo
valor no importe para la ejecución de la instrucción. En caso de que no se pueda realizar la acción tachar toda la línea de
señales. (0.5 puntos)
Mnemotécnico
@A
@B
Rb/N
OP
F
In/Alu
@D
WrD
N
(hexa)
XORI R0, R3, -6
011 xxx 0 00
010 0 000 1 F F F A
OUT R0 // MOVEI R2, 0x1234
000 xxx 0 10
001 0 010 1 1 2 3 4
ADDI -,R4, 0 // IN R3
100 xxx 0 00
100 1 011 1 0 0 0 0
Criterio de corrección: -0.25 puntos por cad a fila y columna incorrecta, escogiendo el número mínimo de filas y/o columnas que cub ren
todos los errores.
b) Indica el mnemotécnico que corresponde a cada una de las siguientes palabras de control de la UPG (sin subsistema de I/O ni
memoria). (0.5 puntos)
Mnemotécnico
@A
@B
Rb/N
OP
F
In/Alu
@D
WrD
N
(hexa)
OUT R4 100 xxx x xx
xxx x xxx 0 X X X X
CMPLTUI -,R5,0x1234 101 xxx 0 01
100 x xxx 0 1 2 3 4
SHL R2,R1,R3 001 011 1 00
111 0 010 1 X X X X
Criterio de corrección: -0.25 puntos por cad a mnemotécnico incorrecto.
X
OR
R
2
,R
2
, R
2
C
MPLEU
-
,
R
3
,
R
2
S
HL
I
R
3,
R3
,
-
4
A
DD
I
R
4,
R5
,
-2
3
MO
V
E
R
1,
R4
X
OR
R
2
,R
2
, R
2
C
MPLTU
-
,
R
2,
R
3
S
HL
I
R
3,
R3,
-
4
A
DD
I
R
4,
R5,
-2
3
MO
V
E
R
1,
R4
!
z
z
!
z
z
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga solucion ic y más Apuntes en PDF de Introducción a los Ordenadores solo en Docsity!

Examen E3 (20 de noviembre de 2014) IC - 14-15-Q

Apellidos y nombre: ………………………………………………………………………………………………………………… Grup: …………… DNI:…………………………

Examen 3. (Temas 8, 9, 10 y 11)

  • Duración del examen: 2 horas.
  • La solución de cada ejercicio se tiene que escribir en el espacio reservado para ello en el propio enunciado.
  • No podéis utilizar calculadora, móvil, apuntes, etc.
  • La solución del examen se publicará en Atenea mañana y las notas antes del 1 de diciembre.

Ejercicio 1 (Objetivos 8.x ) (1 punto) Completad los dos fragmentos de grafo de estados de la UC de propósito específico para que junto con la UPG formen un procesador que realice la funcionalidad descrita mediante el siguiente código en C. Indicad los arcos que faltan, las etiquetas de los arcos (z, !z, o nada) y completad las casillas de cada palabra de control que se especifica con mnemotécnicos a la derecha de cada nodo del grafo. Todos los datos son naturales. Ambos fragmentos ejecutan la misma funcionalidad pero de forma distinta.

R2 = 0; a) b) if (R3<=R2) {

R3 = R3 / 16;

} else {

R4 = R5 - 23;

}

R1 = R4;

Criterio de corrección: Ambos apartados se corrigen conjuntamente. -0.25 puntos por el primer nodo incorrecto y -0.50 puntos por cada uno de los siguientes nodos incorrectos. Un nodo es erróneo si falta alguno de los arcos que salen de él, si alguna etiqueta es incorrecta o los destinos de alguno de sus arcos es incorrecto. También es incorrecto un nodo si la salida especificada mediante mnemotécnicos (operación, registros o valor inmediato) es incorrecta. Las funcionalidades que sean iguales en ambos apartados y estén mál en ambos, sólo contaran como un error. Hacemos una excepción a esta regla: Si falta la U o la I se descuenta 0.1 por ese nodo si sólo tiene ese fallo.

Ejercicio 2 (Objetivo 8.x ) (1 punto) a) Indica el valor que debe tener cada uno de los bits de la palabra de control de la UPG (sin subsistema de I/O ni memoria) para que realice, durante un ciclo, la acción concreta especificada mediante el mnemotécnico. Indicad con x las casillas cuyo valor no importe para la ejecución de la instrucción. En caso de que no se pueda realizar la acción tachar toda la línea de señales. (0.5 puntos)

Mnemotécnico

@A @B Rb/NOP F In/Alu@D WrD N (hexa)

XORI R0, R3, -6 011 xxx 0 00 010 0 000 1 F F F A

OUT R0 // MOVEI R2, 0x1234 000 xxx 0 10 001 0 010 1 1 2 3 4

ADDI -,R4, 0 // IN R3 100 xxx 0 00 100 1 011 1 0 0 0 0

Criterio de corrección: -0.25 puntos por cada fila y columna incorrecta, escogiendo el número mínimo de filas y/o columnas que cubren todos los errores.

b) Indica el mnemotécnico que corresponde a cada una de las siguientes palabras de control de la UPG (sin subsistema de I/O ni memoria). (0.5 puntos)

Mnemotécnico

@A @B Rb/NOP F In/Alu@D WrD N (hexa) OUT R4 100 xxx x xx xxx x xxx 0 X X X X

CMPLTUI -,R5,0x1234 101 xxx 0 01 100 x xxx 0 1 2 3 4

SHL R2,R1,R3 (^) 001 011 1 00 111 0 010 1 X X X X

Criterio de corrección: -0.25 puntos por cada mnemotécnico incorrecto.

X OR R^2 ,R^2 , R 2

C MP LEU - , R 3 , R 2

SHLI R3,R3, - 4

ADDI R4,R5, -2 3

MOV E R1,R

X OR R 2 ,R 2 , R 2

C MP LTU - , R 2 , R 3

SHLI R3,R3, - 4

ADDI R4,R5, -2 3

MOV E R1,R

!z z^ z !z

Examen E3 (20 de noviembre de 2014) IC – 14-14-Q

Ejercicio 3 (Objetivos 8.x ) (2 puntos) Dados los dos siguientes fragmentos de código en C (el código no tiene que hacer algo útil), indicad como se implementarían cada uno en un procesador que use la UPG vista en clase, utilizando la UC de propósito específico (UCe) y la UP de propósito general (UPG). Todos los datos son naturales.

Fragmento 1 Fragmento 2 for (R0=0; R0<128; R0++) { if ((R1>=R2) && (R0!=0)) { R4=R4*2+R5; R6=not(R2)-2; } } else { R3=R3-R4; R6=R2; } R6=R6-32;

a) Completad los dos fragmentos de grafo de estados de la UC de propósito específico para que junto con la UPG formen un procesador que realice la funcionalidad descrita en los fragmentos de código anteriores. Indicad los arcos que faltan, las etiquetas de los arcos (z, !z, o nada) y completad las casillas de cada palabra de control que se especifica con mnemotécnicos a la derecha de cada nodo del grafo.

Fragmento 1 (0.5 puntos) Fragmento 2 (0.5 puntos)

_ También se puede hacer un ADDI con los valores negativos_*

Criterio de corrección: Cada fragmento vale 0.5 puntos y se corrigen por separado. -0.25 puntos por cada nodo incorrecto. Un nodo es erróneo si falta alguno de los arcos que salen de él, si alguna etiqueta es incorrecta o los destinos de alguno de sus arcos es incorrecto. También es incorrecto un nodo si la salida especificada mediante mnemotécnicos (operación, registros o valor inmediato) es incorrecta. Las funcionalidades que sean iguales en ambos apartados y estén mal en ambos, sólo contaran como un error. Hacemos una excepción a esta regla: Si falta la U o la I se descuenta 0.1 por ese nodo si sólo tiene ese fallo.

b) Completad los fragmentos de programa en lenguaje ensamblador SISA para que el procesador formado por la unidad de control de propósito general (UCG) junto con la UPG realicen las funcionalidades descritas en los fragmentos de código en C (el código no tiene que hacer algo útil). El código SISA ya escrito siempre utiliza el registro R7 para valores temporales. En las comparaciones, hay que interpretar los datos como valores naturales. Rellenad la parte subrayada que falta. Fragmento 1 (0.5 puntos) Fragmento 2 (0.5 puntos)

_ También se puede haber usado el registro R Criterio de corrección: Cada fragmento vale 0.5 puntos y se corrigen por separado. -0.1 puntos por la primera instrucción incorrecta y - 0.2 puntos por cada una de las siguientes instrucciones incorrectas._*

MO V E I R 0 , 0

C M P LTUI^ - , R 0 , 1 28

A DD R 4 , R 4 , R 4

AD D R 4 , R 4 , R 5

AD D I R 0 , R 0 , 1

SU B R 3 , R 3 , R 4

C M P LTU - ,R 1 , R 2

C M P EQI - ,R 0 , 0

NO T R 6 ,R 2

SU B I *^ R 6 ,R 6 , 2

MO V E R 6 ,R 2

SU B I *^ R 6 ,R 6 , 32

@I-Mem

0x0000 MOVI R0, 0

0x0002 MOV I^ R7,^^127 0x0004 CMP LEU R7, R0, R

0x0006 B Z R7, 4

0x0008 SHL/SHA R4, R4, R

0x000A ADD R4, R4, R

0x000C ADDI R0, R0, **1 ***

0x000E BNZ^ R0,^ -

0x0010 SUB^ R3,^ R3,^ R

@I-Mem 0x0000 CMP LEU R7, R2, R

0x0002 B Z R7, 4

0x0004 B Z R0, 3

0x0006 NOT R7, R

0x0008 ADDI^ R6,^ R7,^ -

0x000A B NZ^ R0,^^1 0x000C AND/OR R6, R2, R

0x000E ADDI R6, R6, -

z !z

!z z

!z^ z

Examen E3 (20 de noviembre de 2014) IC – 14-14-Q

Dirección ROM Contenido de la ROM

I 15 I 14 I 13 I 12 I (^8) BnzBz Wr-MemRd-InWr-OutWrDByteRb/N-/i/l/a1-/i/l/aoOP

1 OP

0 MxN1MxN0MxFf2 f1 f0 MxD1MxD

0 0 0 0 X^0 x^1 0 A / L

0 0 0 1 X^0 x^1 0 CMP

0 0 1 0 X^0 0 0 0 0 1 x^0 0 0 0 0 0 0 1 1 0 0 0 1 ADDI

0 0 1 1 X^0 0 0 1 LD

0 1 0 0 X^1 0 0 1 ST

0 1 0 1 X^0 1 0 1 LDB

0 1 1 0 X^0 0 1 0 0 0 1 0 x^ x^0 0 0 0 1 1 0 0 x^ x^ STB

0 1 1 1 X^0 x^ x^ x^ (NOP)

1 0 0 0 0^0 1 0 0 0 0 x^ x^ x^ x^1 0 1 0 1 0 0 0 x^ x^ BZ

1 0 0 0 1^0 x^ x^1 BNZ

1 0 0 1 0^0 x^0 1 MOVI

1 0 0 1 1^0 0 0 0 0 1 x^0 0 0 1 0 0 1 1 0 1 0 1 0 MOVHI

1 0 1 0 0^0 x^ x^ x^ IN

1 0 1 0 1^0 x^ x^ x^ OUT

1 0 1 1 X^0 x^ x^ x^ (NOP)

1 1 X X X^0 x^ x^ x^ (NOP)

Criterio de corrección: -0.25 puntos por cada fila y columna incorrecta, escogiendo el número mínimo de filas y/o columnas que cubren todos los errores.

Ejercicio 8 (Objetivos X ) (1.5 puntos) Se desea resolver el mismo problema de la división que se resolvió en el examen E2 usando un PPE pero ahora usando la UPG. Se desea calcular el cociente y el resto de la división de dos naturales mayores que 0. Dados n (numerador) y d (denominador) tal que n

0 y d > 0, calcula los naturales q y r que cumplen que n = d * q + r , y 0 ≤ r < d mediante restas sucesivas.

Se ha conectado a la UPG un dispositivo externo de entrada que nos envía valores naturales de 16 bits y que tiene el registro de status en la dirección 5 del espacio de direccionamiento de entrada y el de datos en la 6. Este dispositivo tiene un efecto lateral en la lectura del dato sobre su registro de estado.

Este dispositivo de entrada nos envía de forma asíncrona primero n (el numerador) y luego d (el denominador). Una vez recibidos los dos valores deberemos calcular q (el cociente) y r (el resto) de la división haciendo restas sucesivas.

a) Usando la UPG junto a una UCe, una vez realizada la división se deberán enviar los resultados q y r (primero q y seguidamente r ) a un dispositivo externo de salida con efecto lateral en el puerto de datos. Este dispositivo tiene el registro de status en la dirección 9 de entrada y el de datos en la 10 del espacio de direccionamiento de salida Completad el grafo de estados si estuviésemos utilizando una unidad de control específica (UCe) junto a la UPG para que realice la función anteriormente descrita. Indicad los arcos y las etiquetas de los arcos (z, !z, o nada) que falten (en caso que falten) y completad las casillas de cada palabra de control. (0.75 puntos)

Examen E3 (20 de noviembre de 2014) IC - 14-15-Q

Apellidos y nombre: ………………………………………………………………………………………………………………… Grup: …………… DNI:…………………………

_ Otra posible solución es usar el mnemotécnico CMPLTUI y usar la señal Z al revés de como está en el grafo._*

Criterio de corrección: -0.25 puntos por cada nodo incorrecto. Un nodo es erróneo si falta alguno de los arcos que salen de él, si alguna etiqueta es incorrecta o los destinos de alguno de sus arcos es incorrecto. También es incorrecto un nodo si la salida especificada mediante mnemotécnicos (operación, registros o valor inmediato) es incorrecta. Hacemos una excepción a esta regla: Si falta la U o la I se descuenta 0.1 por ese nodo si sólo tiene ese fallo.

b) Usando el procesador SISC Harvard uniciclo, completad el fragmento de código ensamblador SISA para que realice la función de división anteriormente descrita. Una vez finalizada la operación de división, el programa deberá dejar el resultado en posiciones consecutivas en memoria de datos a partir de la dirección 0x1234 (0.75 puntos)

IN R0, 5

BZ R0, -

IN R6, 6

IN R0, 5

BZ R0, -

IN R5, 6

MOVI R1, 0

CMP LTU R7, R6, R

B NZ R7, 3

SUB R6, R6, R

ADDI R1, R1, 1

B Z R7, -

MOVI R7, 0x MOVHI R7, 0x ST 0(R7) , R ST 2(R7) , R

Criterio de corrección: -0.25 puntos por cada instrucción incorrecta. Hay una excepción, si el error en las dos primeras instrucciones (las de salto en el handshaking) es EXACTAMENTE el mismo sólo se contará como un único error.

IN R0, 5

IN R6, 6

IN R0, 5

CMP EQI -,R0,

CMP EQI*^ -,R0,

Z

Z

!Z

MOVEI R1,

CMP LTU -,R6,R

SUB R6, R6,R

IN R5, 6

ADDI R1, R1,

IN R0, 9

OUT 10 ,R

IN R0, 9

CMP EQI -,R0,

CMP EQI -,R0,

OUT 10, R

Z

!Z

!Z

Z

Z

!Z

!Z