Examen final IC parte A • • • • • • • Duración de esta parte del examen: 3 horas. No podéis utilizar calculadora, móvil, apuntes, etc. Entregad los problemas en HOJAS SEPARADAS. 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 26 de enero por la tarde. La revisión será el 27 de enero a las 12:00 en el aula C6-E101. Las notas definitivas se publicarán en el Racó de la FIB el día 28. Exercici 1 (Objectius 11.8 i 10.4) (7,5 punts) IMPORTANT: Entregueu els apartats a) y b) del problema 1 en FULLS SEPARATS. Volem afegir al joc d’instruccions del llenguatge màquina SISA-I dues instruccions, BBZ i BBNZ, que ens permetin saltar si un bit concret d’un cert registre del banc de registres val 0 o 1, respectivament. Definim aquestes dues instruccions de la següent manera: Assemblador: Semàntica: BBZ Ra, K, N if (Ra<K> == 0) PC PC + N; else PC PC + 1; Descripció: La instrucció BBZ (Branch if Bit is Zero) salta tantes instruccions com indiqui N, interpretada com a un nombre enter en Ca2, si el bit de la posició K del registre Ra val 0. Altrament, la instrucció no provocarà cap ruptura de seqüència i s’executarà la següent instrucció del programa. Assemblador: Semàntica: BBNZ Ra, K, N if (Ra<K> == 1) PC PC + N; else PC PC + 1; Descripció: La instrucció BBNZ (Branch if Bit is Not Zero) salta tantes instruccions com indiqui N, interpretada com a nombre enter en Ca2, si el bit de la posició K del registre Ra val 1. Altrament, la instrucció no provocarà cap ruptura de seqüència i s’executarà la següent instrucció del programa. En tots dos casos, el rang de valors possibles per K és de 0 a 15, ambdós inclosos. El rang de valors possibles per N és de -32 a 31, ambdós inclosos. Cal modificar el processador SISP-I-1 perquè sigui capaç de processar aquestes dues noves instruccions afegides al llenguatge màquina (s'han de continuar executant correctament totes les instruccions del SISA-I). Contesta a les següents preguntes: a) (Objectiu 11.8) Implementació de les noves instruccions. (6 punts). a.1) Com codificaries aquestes dues instruccions? a.2) 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. a.3) Faries canvis a la Unitat de Control General? En cas afirmatiu, quines modificacions s'han de fer perquè s'executin les noves instruccions i es generin les paraules de control adequades. A més d'indicar el contingut de la ROM que correspon a les noves instruccions BBNZ i BBZ, 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 no importa el seu valor (X). b) (Objectiu 10.4) (1,5 punts).Volem realitzar una multiplicació entre dos nombres naturals X i Y que ens arriben a través del teclat. X s’emmagatzema inicialment al registre R6 i Y al registre R7. L’algoritme de multiplicació es descriu a través del següent codi en llenguatge d’alt nivell: 1: 2: 3: 4: 5: 6: 7: 8: R5 = 0; do { if (R7<0> == 1) R5 = R5 + R6; if (R6<15> == 1) break; R6 = R6 * 2; R7 = R7 / 2; } while (R7 != 0); NOTA: la instrucció break provoca la finalització immediata del bucle i el salt a la primera instrucció fora d’aquest. Com podeu observar, la multiplicació pot acabar per dos motius: (i) (ii) R7 val zero i per tant ja no té sentit seguir multiplicant, o el bit de més pes de R6 (R6<15>) val 1 i per tant el proper desplaçament de R6 produirà un sobreeiximent i perdrem informació necessària d’X per obtenir un resultat correcte, fet que fa que deixi de tenir sentit seguir amb la multiplicació. Donat el següent fragment de codi assemblador, on ja s’ha programat la recollida dels valors que arriben del teclat i el retorn del resultat per la impressora, es demana les instruccions en assemblador, que caldria posar al requadre buit que us marquem més avall, necessàries per implementar aquest algoritme de multiplicació, utilitzant les noves operacions BBNZ i BBZ. Heu de resoldre les operacions expressades a les línies 3 i 5 del pseudocodi que us proporcionem amb una única instrucció cadascuna: begin: IN BZ IN IN BZ IN R0, R0, R6, R0, R0, R7, KEY_STATUS -1 KEY_DATA KEY_STATUS -1 KEY_DATA Recordeu contestar-ho en un full apart. fibucle: IN R0, PRINT_STATUS BZ R0, -1 OUT PRINT_DATA, R5 BNZ R0, begin Ejercicio 2 (Objetivos 6.7, 6.8, 6.9 y 6.10) (2,5 puntos) Se desea diseñar un sistema de control mediante un procesador de propósito específico (PPE) que se encargue de contar el número de veces consecutivas que aparece el valor 1 en una señal. El sistema está formado por dos bloques: el bloque A (Adquisición) y el bloque C (Contador). El bloque A, que ya está diseñado, recibe una señal analógica de un sensor, comprueba si el valor está por encima o por debajo de un umbral predeterminado y genera un valor binario (señal Info) con el valor 1 si la medida está por encima del umbral y 0 en caso contrario. El bloque C se encarga de contar el número de 1 consecutivos que llegan a través de la señal Info del Bloque A. El bloque C debe mostrar, durante un ciclo, por el bus de salida CONT el valor calculado cada vez que llega por Info el primer cero que indica la finalización de la última secuencia de unos. El valor calculado corresponde al número de unos de la secuencia que acaba de terminar. Además, debe poner la señal Fin a 1 durante el ciclo en el que el valor correcto esté en el bus CONT. La señal Fin valdrá 0 en el resto de los ciclos. Los siguientes ceros que puedan llegar por la señal Info, después del primero, no tienen ningún efecto hasta que llegue un nuevo 1 que indique el inicio de otra secuencia de unos. El bus CONT es de 16 bits. El valor es un número natural codificado en 16 bits y para simplificar el problema supondremos que nunca llegarán más de 25000 unos seguidos (evitamos así desbordamientos). La comunicación entre los bloques A y C se realiza mediante el protocolo de handshaking. 1 Req 16 Bloque A 1 Ack Clk1 Info Bloque C 1 1 CONT Fin Clk2 Diseña el procesador de propósito específico (PPE) para el bloque C. a) Dibuja el esquema del PPE mediante los dos bloques UC y UP dibujando con flechas etiquetadas con el nombre correspondiente todas las señales y buses que entran y salen de cada bloque. (0,5 puntos) b) Dibuja el esquema lógico a bloques de la unidad de proceso (UP). (1 punto) c) Dibuja el grafo de estados de la unidad de control (UC). (1 punto)