Examen final IC parte A-0809Q1-Enunciado

Anuncio
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)
Descargar