



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Introducció als Computadors, Profesor: Juan J. Navarro, Carrera: Enginyeria Informàtica, Universidad: UPC
Tipo: Apuntes
1 / 5
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




Examen E3 (20 de noviembre de 2014) IC - 14-15-Q
Apellidos y nombre: ………………………………………………………………………………………………………………… Grup: …………… DNI:…………………………
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)
@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)
@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.
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._*
@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, -
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
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)
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.