Examen final A IC-09-10-Q2 Apellidos: ……………….………………………………………… Nombre:………………………………………… DNI:………………………… Examen final IC parte A • • • • • • Duración de esta parte del examen: 2 horas. No podéis utilizar calculadora, móvil, apuntes, etc. Resolver cada problema en una hoja a parte. La solución del examen se publicará en el Racó de la FIB y en Atenea mañana por la mañana. Las notas se publicarán en el Racó de la FIB el día 28 de junio por la tarde. La revisión será el 29 de junio a las 11:00 en el aula D6-003. Las notas definitivas se publicarán en el Racó de la FIB al día siguiente. Para algunos de los ejercicios son útiles las figuras y tablas que se muestran en la hoja aparte: Estructura a bloques del SISP-I-1, Subsistema de Entrada/Salida (teclado/impresora), SISP-I-1 CONTROL LOGIC, Tabla resumen del formato y codificación de las instrucciones SISA-I y Funcionalidades de la ALU. Ejercicio 1 (Objetivos 6.7) (3 puntos) Debemos diseñar un procesador de propósito específico (PPE) formado por una unidad de control (UC) y una unidad de proceso (UP) que permita contar el número de personas que entran en un recinto. El PPE pondrá a cero su contador de personas o lo incrementará para contar la entrada de una nueva persona según le indique un sensor de presencia que se comunica con él mediante el protocolo asíncrono de handshaking de 4 fases. Tal como se ve en la figura anterior, el PPE tiene las siguientes entradas y salidas: Entrada • Req (1 bit): Request del protocolo de handshaking de 4 fases • Inc/Clr (1 bit): Es el dato que le envía el sensor mediante el protocolo de handshaking. Cuando vale 1 indica que se debe incrementar el contador porque ha entrado una nueva persona al recinto. Cuando vale 0 indica que se debe poner a cero el contador de personas. Salidas • N (16 bits): bus de salida con el número de personas que han entrado en el recinto desde la última puesta a cero del contador. • Ack (1 bit): Acknowledgement del protocolo de handshaking de 4 fases. El circuito interno de la UP del PPE se muestra en la figura. Dibuja el grafo de la UC del PPE. Podeis asumir que cuando se pone en funcionamiento el sistema completo (Sensor + PPE) el valor inicial de la salida de todos los biestables (incluidos los de los registros de la UP del PPE) es 0. Así mismo, las señales Req y Ack también valen inicialmente 0 para que el protocolo de handshaking se pueda desarrollar correctamente. 1/3 Examen final A IC-09-10-Q2 Apellidos: ……………….………………………………………… Nombre:………………………………………… DNI:………………………… Ejercicio 2 (5.5 puntos) Es vol afegir una nova instrucció que pugui realitzar una operació AND entre els dos bits d'una certa posició de dos registres. És a dir, donats dos registres Ra i Rb i la posició b (entre 0 i 15), es vol que la nova instrucció realitzi una operació AND entre els bits que es troben a la posició b d'aquests dos registres. El resultat es guardarà al registre Rd de manera que, tots els bits de Rd valdran 0 excepte el bita la posició b que prendrà per valor 0 o 1 en funció del resultat de l'operació AND. Per exemple, si R2 i R3 prenen per valor 0000 0000 0010 1001 i 1111 0101 1010 1101, respectivament, si realitzem l'operació AND entre els seus bits a la posició 3 (recorda que el bit de menys pes diem que és el bit que es troba a la posició 0), el valor guardat al registre destí després d'executar la nova instrucció serà 0000 0000 0000 1000. La sintaxi de la nova instrucció seria la següent: ANDB Rd, Ra, Rb, b ;Rd=(Ra AND (0x0001<<b)) AND (Rb AND (0x0001<<b)) a. (Objectiu 10.4) Escriu una seqüència d’instruccions del llenguatge assemblador SISA-I que emmagatzemi al registre R7 el mateix resultat que la instrucció ANDB R7, R2, R3, 4 (pots modificar el contingut de qualsevol dels registres del banc de registres sempre que al final de l’execució d’aquestes instruccions, el registre R7 contingui el resultat correcte de l’operació). (1 punt) b. (Objectiu 6.4) Dibuixa l’esquema intern d’un circuit lògic combinacional, el símbol del qual us donem a continuació: (1 punt) El circuit ANDb té dos busos d’entrada X i B i un bus de sortida W, tots ells de 16 bits, i implementa la funció: W = X AND (0x0001<<B) NOTA: pots utilitzar qualsevol bloc combinacional dels usats per construir el processador SISP-I-1. Pots utilitzar també un bloc, que pots anomenar “1”, que generi el valor 0x0001 representat en 16 bits. c. (Objectiu 11.8) Implementació de la nova instrucció. i. Dóna una codificació per aquesta nova instrucció. (0,5 punt) ii. Faries canvis a la Unitat de Procés General? En cas afirmatiu, quines modificacions s'han de fer? Si has de realitzar qualsevol modificació a un bloc no cal que el dibuixis sencer, sempre i quan les teves indicacions no continguin cap ambigüitat que afecti a la interpretació del nou disseny. (1,5 punts) NOTA: pots utilitzar qualsevol bloc combinacional dels usats per construir el processador SISPI-1, així com el nou bloc que has dissenyat ANDb. 2/3 Examen final A IC-09-10-Q2 Apellidos: ……………….………………………………………… Nombre:………………………………………… DNI:………………………… iii. Faries canvis a la Unitat de Control General? En cas afirmatiu, quines modificacions s'han de fer perquè s'interpreti la nova instrucció i es generin les paraules de control adequades, garantint que les instruccions originals del llenguatge assemblador SISA-I segueixen funcionant correctament. A més d'indicar el contingut de la ROM que correspon a la nova instrucció ANDB, si uses algun nou senyal que hagi de generar la ROM, indica clarament quin valor prendrà aquest senyal per a cada una de les instruccions del SISA-I, diferenciant quan ha de valer 0, 1 o X, si no importa el seu valor. (1,5 punts) NOTA 1: els senayls s’han d’escriure en el mateix ordre de la ROM (Bnz, Bz, Wr-Mem, Rd-In, Wr-Out, WrD InLD/Alu, In/Ld, Rb/N, OP1, OP0, Mx@A, MxF, Mx@B, MxN) i el(s) nou(s) al principi de tot. NOTA 2: l’ordre de les instrccions ha de ser el mateix que a la ROM (A / L, CMP, ADDI, LD, ST, MOVI, MOVHI, BZ, BNZ, IN, OUT, ANDB) segui t de la nova instrucció. Ejercicio 3 (Objectiu 6.4) (1.5 puntos) Suposa que afegim una nova instrucció anomenada ANDBR, la sintaxi de la qual és la següent: ANDBR Rd, Ra, Rb, Rc ;Rd=(Ra AND (0x0001<<Rc)) AND (Rb AND (0x0001<<Rc)) On Rd, Ra, Rb i Rc són registres del banc de registres (fixa’t que caldria ampliar el banc de registres per a que tingués tres busos de lectura A, B i C). Escriu una seqüència d’instruccions del llenguatge assemblador SISA-I ampliat amb la nova operació ANDBR que, donat el contingut dels registres R0 i R1, emmagatzemi a R2 el nombre de posicions que valen 1 alhora a tots dos registres. És a dir, si R0=0001 0101 0000 1110 i R1=1101 0101 0000 0000, el contingut del registre R2 després d’executar el fragment de codi que proposis ha de ser 0x0003, ja que les posicions 8, 10 i 12 valen 1 a tots dos registres. NOTA 1: no pots utilitzar l’antiga instrucció AND. NOTA 2: pots modificar el contingut de qualsevol dels registres del banc de registres sempre que utilitzis correctament el valor inicial dels registres R0 i R1 i que el registre R2 contingui el resultat correcte de l’operació als final de l’execució del programa. 3/3