Practica 5
Practica 5
Las etiquetas MAX TEMP, MAX ATM, MAX WIND SPEED son constantes de 16 bits.
a) Mapear los registros de E/S a direcciones de E/S de ORGA1 y completar el siguiente código:
b) Suponiendo que el ciclo de instrucción de cada instrucción del programa tarda t s y los
valores máximos nunca se alcanzan ¿cuál es la frecuencia (en Hz) de muestreo (lectura)
de los registros de E/S?
c) Suponga que reemplaza el procesador ORGA1 por un procesador ORGA1i que soporta
hasta una interrupción. El sensor de temperatura solicita una interrupción si se alcanza la
temperatura máxima.
i. Modificar el programa presentado para aprovechar esta caracterı́stica de modo tal que
la frecuencia de muestreo sea mayor. ¿Cuál es la nueva frecuencia de muestreo en Hz?
ii. Escribir la rutina de atención de la interrupción del sensor de temperatura.
1
La rutina de atención de la interrupción es la siguiente:
rutinaAtencionInt: ...
...
PUSH R0 ; salvar el valor original de R0
PUSH R1 ; salvar el valor original de R1
MOV R0, 0x0000
MOV R1, 0x0000
ADD R0, R1
POP R1 ; restaurar el valor original de R1
POP R0 ; restaurar el valor original de R0
SETI ; habilitar las interrupciones
RET ; retornar a lo que se estaba ejecutando
Suponga que I=1 y en la dirección de memoria 0x0000 se encuentra efectivamente la
dirección de la etiqueta rutinaAtencionInt
a) ¿La ejecución del programa main continuará como se espera si el dispositivo de E/S
activa la señal de interrupción durante el ciclo de ejecución de la instrucción ADD R0,
R1?
while (true) {
Fetch() // fetch
Decode() // decodificación
Execute() // ejecución
if I==1 AND INTR==1 {
... Completar
INTA()
}
}
Completar el pseudo-código de modo tal que describa correctamente las acciones que lleva
a cabo el procesador cuando atienda una interrupción.
El bit b15 representa el estado del dispositivo. Dicho bit se encuentra en 1 cuando el
dispositivo esté ocupado (es decir, cuando todavı́a no hay un dato válido para leer), y
en 0 cuando esté listo (caso contrario).
Cuando el estado del dispositivo sea “listo” (es decir, el dato para leer sea válido),
b7 . . . b0 contendrán el dato proporcionado por el dispositivo.
2
Ejercicio 5 Un procesador ORGA1 se encuentra conectado a 2 dispositivos de E/S:
Un botón que posee un único registro de E/S de sólo lectura (BUTTON STATUS). De
leerse el valor 0x0000 el botón no está siendo presionado, y si se lee 0xFFFF, está siendo
presionado. Este registro de E/S se encuentra mapeado a la dirección 0xFFF0.
Un display electrónico que posee un registo de E/S de sólo escritura (DISPLAY DATA).
El valor que se escribe en este registro se muestra como un número entre 0 y 65535.
Éste se encuentra mapeado a la dirección 0xFFF1.
Escribir una rutina que controle el procesador de manera que, comenzando con el valor 0,
cuente la cantidad de veces que el usuario oprime un botón. Debe tener en cuenta que una
pulsación del botón incluye esperar a que se suelte.
Cada monitor levanta una señal cuando registra un cambio en el entorno que está mi-
diendo. Un monitor de mayor prioridad debe poder interrumpir la rutina de atención de
interrupción de uno de menor.
Suponiendo que la cabina utiliza un procesador INTEL 8086 con un PIC 8259A (ver
referencia en el apunte de arquitecturas):
a) ¿En qué orden conectarı́a las entradas del PIC a las salidas de los monitores?
RAI_MONITOR_ALTURA:
; Guardar la máscara
PUSH AX ; apilar el registro AX
IN AX, IMR ; copiar el contenido del reg. de E/S IMR en AX
PUSH AX ; apilar la máscara actual
; Habilitar interrupciones
.... (completar)
3
; Obtener la altura nueva
IN AX, 43h ; copiar el contenido del reg. 43h de E/S en AX
LEA SI, MONITOR_ALTURA ; copiar la constante MONITOR_ALTURA en el reg. SI
MOV [SI], AX ; copiar el contenido del registro AX en la
; dirección apuntada por el reg. SI
f) ¿Es necesaria una instrucción especial para indicar el fin de la ejecución de una rutina
de atención de interrupción o alcanza con el mismo RET que se utilizar para volver de
un CALL?
Ejercicio 7 Se desea diseñar un nuevo modelo del procesador ORGA1i que soporte 2 niveles
de interrupciones enmascarables: uno de prioridad alta (HP) y otro de prioridad baja (LP).
El flag I se reemplaza por 2 nuevos flags: HIF y LIF que habilitan y deshabilitan las
interrupciones de prioridad alta y baja respectivamente. A su vez, los flags IFH y IFL indican
si se solicitó una interrupción de prioridad alta o baja respectivamente.
La dirección de inicio de la rutina de atención de la interrupción HP se encuentra en la
dirección de memoria 0x0000 y la de la rutina de atención de la interrupción LP en 0x0001.
a) Describir en pseudo-código los pasos que realiza atómicamente el hardware del procesador
desde que termina de ejecutar la instrucción actual hasta dejar paso a la rutina de atención
de interrupción correspondiente.
b) Explique qué instrucciones debe agregar o modificar para completar la arquitectura del
nuevo procesador.
Ejercicio 8 Ordenar por prioridad decreciente los pedidos de interrupción de los siguientes
dispositivos de E/S. Justificar brevemente.
2) Una vez que el vehı́culo cruza la barrera, un sensor especialmente ubicado activa el motor
para cerrar la barrera.
3) La barrera sólo funciona 12 horas al dı́a desde el momento de encendido del sistema. Si el
automovilista presiona el botón fuera del horario de atención, la barrera no se levantará.
Además del microprocesador ORGA1, se cuenta con los siguientes dispositivos de E/S:
4
Un motor con un registro de E/S (MOTOR CTRL) para controlar la barrera. Si se escribe
el valor 1 en su registro, el motor levantará la barrera, mientras que si se escribe el valor
0, el motor bajará la barrera.
Un clock que emite un pulso a través de una lı́nea de salida (llamada CLOCK OUT) cada
10 minutos.
a) Graficar un esquema de conexión del sistema indicando claramente cómo conectarı́a los
registros de los dispositivos a los puertos de E/S de la máquina ORGA1i. No olvide graficar
la lı́nea de interrupción.
d) Suponiendo que el microprocesador puede ejecutar 750 millones de instrucciones por se-
gundo. ¿Cuánto tardarı́a en ejecutarse la rutina de atención de interrupciones?
Ejercicio 10 Una importante empresa está diseñando un nuevo modelo de tren que fun-
cione de manera autónoma utilizando para su construcción una máquina ORGA1i y algunos
dispositivos de E/S detallados a continuación:
SENSOR AMBIENTE: informa el estado del entorno permitiéndole al tren decidir la acción
a realizar. Cuenta con un registro llamado STATUS del que se puede leer 0x0000 si
el camino está despejado, permitiéndole al tren avanzar libremente, 0x0001 si se debe
avanzar con precaución y 0xFFFF si debe detenerse. Cada vez que este sensor cambia
su estado pone en 1 a INTR y lo mantiene hasta recibir un pulso a través de INTA.
CONTROL MOTOR: controla el motor del tren. Para que avance a velocidad crucero se
debe escribir en el registro POWER el valor 0x7FFF, para que circule con precaución, el
valor 0x30F0 y para detenerlo, 0xF000.
CUENTA METROS: cuenta los metros recorridos en el registro DISTANCIA. Es posible re-
iniciar el contador colocando el valor 0xFFFF.
El funcionamiento del tren es sencillo. Siempre debe hacer lo que el estado de SEN-
SOR AMBIENTE le permita. Además se quiere contar la cantidad de kilómetros recorridos
por el tren y guardarla en el registro R0.
a) Mapear los registro de E/S e indicar para cada uno si es de lectura, escritura o lectura/es-
critura.
b) Realizar el esquema de conexión del sistema, incluyendo todos los dispositivos involucrados
y la manera en que están conectados.