Académique Documents
Professionnel Documents
Culture Documents
b15
sitivo est ocupado, y en 0 cuando est listo. Cuando el estado del dispositivo es listo, dispositivo. Escribir una rutina en assembler de la cantidad de datos a leer y en
b7 . . . b0
ORGA1que
debe leer
R1
polling.
La rutina recibe en
R0
Ejercicio 2
ORGA1de
la capacidad de atender
la interrupcin de un nico dispositivo de E-S. Para ello: Se agrega una nueva seal de entrada llamada rrupcin Reconocida). Se agrega un nuevo ag:
INT
(Interrupcin) y de salida
INTA
(Inte-
I.
con 1 que el procesador puede ser interrumpido y atender la interrupcin del dispositivo con 0 que el procesador no puede ser interrumpido
0x0000
CLRI SETI
que coloca I=0 que coloca I=1 cuyo efecto es [SP]=Ri y luego SP=SP-1
PUSH Ri , POP Ri ,
Las seales
Ri =[SP]
INT
INTA
interrupcin y el ag I vale 1, al terminar de ejecutar la instruccin en curso, el procesador realiza la siguiente secuencia de pasos: 1. Activa la seal
INTA
3. Coloca [SP]=PC, y decrementa el SP (SP=SP-1). 4. Coloca PC=[0x0000]. Luego de esto, comienza a ejecutarse la rutina de atencin de la interrupcin propiamente dicha. Sea el siguiente programa:
main:
; ; ; ;
restaura el valor original de R1 restaura el valor original de R0 habilita que se pueda interrumpir retorna a lo que estaba ejecutando 0x0000 se encuentra efectivamente la direccin
rutinaAtencionInt
main
b) Existe alguna limitacin en el diseo actual del esquema de atencin de la interrupcin? Proponga alguna alternativa para superarla.
Ejercicio 3
sensores son:
como sensores. Cada sensor posee un registro de E/S que reporta informacin climtica. Los
Temperatura: Mide temperatura en grados celsius (TEMP_STATUS) Presin Atmosfrica: Mide presin en HectoPascales (ATM_STATUS) Intensidad del Viento: Mide intensidad en Metros/Segundo (WIND_SPEED) 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 cdigo:
sensar: CMP [...], MAX_TEMP ;alcanz temperatura mxima? JG alarma CMP [...], MAX_ATM ;alcanz presin atmosfrica mxima? JG alarma CMP [...], MAX_WIND_SPEED ;alcanz velocidad mxima? JG alarma JMP sensar alarma: CALL sonarAlarma ;invoca rutina de alarma JMP sensar
2
b) Suponiendo que el ciclo de instruccin de cada instruccin del programa tarda de E/S?
t sg y los valores
mximos nunca se alcanzan cul es la frecuencia (en Hz) de muestreo (lectura) los registros
c) Suponga que el CPU cuenta con soporte para 1 interrupcin. El sensor de temperatura solicita una interrupcin si se alcanza la temperatura mxima.
i. Modicar el programa presentado para aprovechar esta caracterstica de modo que la
Ejercicio 4
una impresora, un disco y una lnea RS232 (puerto serial). Las prioridades de estos dispositivos son 2, 4 y 5 respectivamente (a mayor nmero, mayor prioridad). La CPU necesita 10 unidades de tiempo para atender una interrupcin de la impresora, 8 para atender una interrupcin del disco, y 7 para atender una interrupcin de la lnea RS232. El procesador cuenta con una mscara de interrupciones de 16 bits. Si la mscara contiene al nmero
n, esto signica que se atendern todas las interrupciones con prioridad mayor o igual que n, las interrupciones de menor prioridad n e interrumpe un
n.
son descartadas. Por otro lado, si se est atendiendo un dispositivo de prioridad dispositivo de prioridad mayor que tratamiento.
n,
Dada la siguiente secuencia de eventos, hacer un diagrama de tiempos mostrando a qu se dedica la CPU y cul es la mscara de interrupciones en cada instante: 1) t = 10: la impresora enva un pedido de interrupcin. 2) t = 15: la lnea RS232 enva un pedido de interrupcin. 3) t = 20: el disco enva un pedido de interrupcin. 4) t = 40: el disco enva un pedido de interrupcin. Suponer que cuando la CPU no est atendiendo interrupciones se encuentra corriendo un programa de usuario.
Ejercicio 5
zado prximamente al mercado. Se utiliza para ello un microcontrolador que posee dos niveles de interrupciones enmascarables, uno de prioridad alta (HP) y otro de prioridad baja (LP). La rutina de atencin de la interrupcin HP se encuentra en la direccin de memoria y la rutina de atencin de la interrupcin LP se encuentra en la direccin cuenta con un contador de programa (PC), un registro que apunta al tope de la pila (SP) y un registro de estado (PSW) de 8 bits en el cual
0000018h.
000008h
Adems,
los bits del 0-3 son bits de estado de la ALU (C, Z, V, N), el bit 4 (HIE) habilita (1) o deshabilita (0) las interrupciones de prioridad alta, el bit 5 (LIE) habilita (1) o deshabilita (0) las interrupciones de prioridad baja, el bit 6 (IFH) y el 7 (IFL) indican si se produjo una interrupcin de prioridad alta o de prioridad baja respectivamente (1 con interrupcin - 0 sin interrupcin ).
Ante una interrupcin, antes de dejar camino a la rutina de atencin de una interrupcin, el microcontrolador inhibe las interrupciones (HIE=0 y LIE=0). En la lnea LP estarn conectados un Reloj de tiempo real (RTC) y un panel de control (CP) por lo tanto cualquiera de los dos puede generar una interrupcin de prioridad baja. En la lnea HP tendr un sensor de apertura de puerta (DS). La rutina que maneja los dispositivos se encuentran en las siguientes direcciones: RTC
000108h,
CP en
000304h
y DS en
000510h.
CP_STATUS)
. Este registro
puede ser escrito o ledo desde el microcontrolador con una instruccin de entrada salida. Ambos dispositivos continan solicitando interrupcin hasta que : o bien se dan por vencidos, o bien se escribe la constante 0 en su registro de estado. a) Describir en pseudocdigo los pasos que realiza el hardware del microcontrolador para detectar la interrupcin hasta que deja paso a la rutina de atencin de interrupcin solicitada. b) Describa detalladamente con un algoritmo (pseudocdigo) la rutina de atencin de interrupciones del nivel de prioridad baja, (muestre como detecta quien produjo la interrupcin). Tener en cuenta que cuando se est atendiendo a un dispositivo de prioridad baja, las interrupciones de prioridad alta deben estar habilitadas, y que de esto se debe encargar el software. Analizar cul es el contexto que debe ser salvado por la rutina antes de iniciar el tratamiento especco de cada dispositivo. c) Cuando se termina la rutina de atencin de interrupcin, qu operaciones necesita realizar el hardware para retornar de la interrupcin de forma transparente?
Ejercicio 6
1. Monitor de presin del aire en la cabina del piloto y de los pasajeros. 2. Monitor de altura 3. Monitor de combustible 4. Monitor GPS Cada monitor solicita una interrupcin cuando se ha registrado un cambio en el entorno que est midiendo para informar sobre el nuevo estado. Los monitores estn listados por prioridad, siendo 1 el de mayor prioridad y 4 el de menor. Un monitor de mayor prioridad puede interrumpir la rutina de atencin de interrupciones de un monitor de menor prioridad. Cada monitor posee en alguna parte de la memoria una rutina de atencin especca para ese dispositivo. El acceso a los registros de los dispositivos de E-S y los controladores es mediante Registros No Mapeados en memoria (espacio de direcciones independiente de E/S). Para lo cual esta arquitectura posee las instrucciones especiales:
IN Reg,RegES
que copia el contenido del registro de E-S a un registro del CPU que copia el contenido del registro en el registro de E-S.
OUT RegES,Reg
INTMASK
para
congurar la mscara de interrupciones. En este registro el bit 0 para el monitor 1, el bit 1 para el monitor 2, etc. Los bits 4-15 no se utilizan. Un bit en 1 indica que una interrupcin del monitor asociado al bit ser atendida. El CPU cuenta con 1 ag especial en el registro interrupcin y
PSW
STI
El CPU cuenta con 2 modos posibles de ejecucin: interrupciones deben comenzar a ejecutarse en modo
kernel
user
(con
restricciones). Slo el hardware puede alterar el modo de ejecucin. Las rutinas de atencin de
kernel.
Cuando el CPU decide atender a un dispositivo que est interrumpiendo, se lo avisa al controlador de interrupciones levantando la seal
INTA
controlador coloca en el bus de datos el nmero de dispositivo que corresponde atender de acuerdo a la mscara. Cuando se le da el control a una rutina de atencin de interrupciones, todas las interrupciones se encuentran inhibidas. Cuando el monitor de altura solicita una interrupcin al controlador de interrupciones : a) Complete el enunciado para poder tener un esquema de atencin de interrupciones usando el controlador de interrupciones que sea coherente. b) Qu acciones se llevan a cabo por el hardware del procesador? c) Completar la siguiente rutina de atencin:
RAT_MONITOR_ALTURA: ; Guarda la mascara PUSH AX IN AX, INTMASK PUSH AX ; apila el registro AX ; copia el contenido del reg. de ES INTMASK en AX ; apila la mscara actual
; Setear mascara inhibiendo interrupciones de menor prioridad. MOV AX , .... (completar) OUT INTMASK, AX ;copia el contenido de AX en el reg. de ES INTMASK ; habilitar interrupciones ....(completar) ; Salvar el estado de lo que falte ....(completar) ; Obtener la altura nueva IN AX, 43h ; copia el contenido LEA SI, Altura ; Copia la constante MOV [SI], AX ; Copia el contenido ; direccin apuntada del reg. 43h de ES en AX Altura en el reg. SI del registro AX en la por el reg. SI
d) Es necesaria una instruccin especial para indicar el n de una interrupcin o alcanza con el mismo RET que se utilizar para volver de un CALL?
Ejercicio 7
y un registro de estado (SR) de 16 bits el cual guarda el estado del procesador y los ags. Este procesador posee 2 modos de operacin que son indicados en el bit S del registro SR: Usuario (S=0): slo se puede acceder a los primeros 8 bits del SR que contienen los ags. Supervisor (S=1): se puede acceder a todo el SR (incluyendo a la mscara de interrupciones que contiene la prioridad y el bit de modo) y a direcciones de memoria donde estn mapeados los dispositivos de E/S. Los bits I2,I1,I0 del registro de estado denen la mscara de interrupciones utilizada. Mscara 111 ... 001 000 Signicado mxima prioridad ... mnimo prioridad interrupciones deshabilitadas
El CPU posee: 3 seales de entrada: IPL0, IPL1 e IPL2 para las interrupciones externas. Estas seales indican el nivel de prioridad de la interrupcin solicitada. El CPU atiende una interrupcin slo si I2,I1,I0!=000 y I2,I1,I0IPL2,IPL1,IPL0. 1 seal de salida: IPEND, para el reconocimiento de la interrupcin. Si el CPU reconoce la interrupcin levanta la seal (IPEND=1).
Una vez que el procesador reconoci la interrupcin (IPEND=1), el dispositivo tiene 2 formas distintas de indicarle al CPU cul es la direccin de inicio de la rutina de atencin de interrupcin: Si el dispositivo levanta la seal AVEC (AVEC=1), le indica al CPU que debe utilizar la direccin del vector de interrupciones 000000h, e indexar esta tabla usando el nivel de interrupcin codicada en IPL2,IPL1,IPL0 Si el dispositivo baja la seal AVEC (AVEC=0), el dispositivo coloca en el bus de datos la direccin de inicio de otro vector de interrupciones. El CPU leer esta direccin del bus de datos, y la indexar usando el ndice codicado en IPL2,IPL1,IPL0. a) Detalle todos los pasos que cree usted que se desencadenan en el sistema al llegar un pedido de interrupcin hasta que la misma es satisfecha y se devuelve el control. Justique la decisin del orden de los pasos y aclarando debidamente que es lo que realiza el micro cdigo (hardware) y que es lo que realiza la rutina de atencin de interrupciones (software). b) Con los pasos que detall en 1 describa el comportamiento del 68000 si se activan las lineas IPLx de la siguiente forma IPL2=0,IPL1=0,IPL0=1, con un SR=021Ah y el dispositivo que provoca la interrupcin no posee vector de interrupciones propio. Mencione a qu posicin de memoria se va a buscar la direccin de inicio de la rutina de atencin de interrupciones de este dispositivo. c) Realice un grco que muestre que interrupcin se esta atendiendo, en que estado queda el SR a cada instante suponiendo que su valor inicial es SR=0011h. Utilice el nmero de dispositivo como su nivel de interrupcin. Suponga que las rutinas no alteran los cdigos de condicin y aquellos bits que no se utilizan permanecen en 0. Tome en cuenta que el microprocesador puede encolar hasta 2 pedidos de interrupcin y que atender la interrupcin le lleva 10 unidades de tiempo. Mientras que no esta atendiendo una interrupcin el 68000 corre un programa con nivel de usuario. Instante T 10 25 30 43 44 Dispositivo 1 4 6 2 3
Ejercicio 8
temporizada
que se dispara
automticamente cada
Ejercicio 10
A continuacin se describe un posible protocolo entre el controlador de DMA y el de un dispositivo de E/S para realizar transferencias de datos usando el I/O Bus.
1. El controlador DMA pone en el bus de direcciones el identicador del dispositivo con el que desea iniciar la comunicacin y levanta la seal de 2. El controlador del dispositivo detecta la seal de con el contenido del bus de direcciones. 3. Si coincide el identicador y el dispositivo se encuentra listo, el controlador levanta la seal de
Request
y de
RD
WR,
segn corresponda.
Request
Ready.
Ready.
controlador DMA pone el dato a escribir junto con su posicin de memoria en los buses correspondientes. Por otro lado, en el caso de una lectura, el controlador de DMA pone la direccin del dato deseado. 5. El controlador DMA baja la seal de
Request. Ready.
6. De tratarse de una escritura, el controlador del dispositivo ordena grabar el dato, o en el caso de una lectura pone el dato en el bus. Luego, baja la seal de
7. Si se trata de una lectura el DMAC lee el dato del bus de datos. 8. En ambos casos, lectura y escritura, el DMAC retira las lneas y baja la seal de corresponda. 9. Si es una lectura, cuando el DMAC baja la seal de dato del bus de datos. Teniendo en cuenta el protocolo y el sistema presentado, escribir en pseudocdigo la rutina del controlador de la cinta, suponiendo el mismo hace
RD o WR segn
polling
sobre la seal de
Request.
Para ello, cuenta con las siguientes primitivas para manejar la cinta de backup:
REW
PLAY: Lee el dato (de 16 bits) de la posicin actual y lo almacena en un buer. Luego avanza
la cinta una posicin.
READ:
1
Ch. 7, pag. 282, Computer Organization and Architecture, Null & Lobur.
8
Y las siguientes primitivas para manejar las lneas de control, el bus de datos y direcciones del I/O Bus:
Request.
Devuelve si el controlador DMA desea leer. Devuelve si el controlador DMA desea escribir. Setea la seal de
Ready
con el valor de
x (x
en
0).
Escribe
en el bus de datos.
setAddress(x): getAddress():
ms de
en el bus de direcciones.
65536
Ejercicio 11
en pseudocdigo la rutina del controlador DMA que se encarga de comunicarse con un dispositivo (controlador) y la memoria principal (tanto en el caso de lectura como de escritura). El controlador DMA posee un conjunto de registros, que ya se encuentran cargados con la siguiente informacin:
DEVICE:
identicador del dispositivo. direccin de memoria (en el espacio de direccionamiento del dispositivo)
que se desea leer/escribir. direccin de memoria (en el espacio de direccionamiento de la memoria prin-
STATUS:
el bit menos signicativo contiene un 1 en caso de escritura, y un 0 en caso contrario. si el bit mas signicativo contiene 1 indica que ya se han se cargado todos los datos necesarios, y se puede iniciar la transmisin. Las primitivas para manejar las lneas de control, el bus de datos y direcciones del I/O bus son las siguientes:
readyOn
Ready.
en
Read
con
Write x
en
con
en
0.
Setea la seal de
Request
con
(con
0).
Escribe
en el bus de datos.
setAddress(x): getAddress:
en el bus de direcciones.
readMemory(address). En el caso de una escritura a memoria, utiliza writeMemory(address, data). Ambas rutinas ya se encuentran programadas. Para solicitar una interrupcin el DMAC dispone de la primitiva RequestINT().
Bus) utiliza la rutina
Cuando el controlador de DMA desea leer un dato de memoria principal (usando el Memory
Ejercicio 12
10 para permitir utilizar direcciones, dentro del espacio de direccionamiento del dispositivo, de ms de 16 bits? (pista: se pueden agregar lneas de control).
Ejercicio 13
En una computadora
ORGA1se
Ejercicio 11. El acceso a cada uno de los registros del controlador est mapeado a memoria del siguiente modo:
0xFFF0 DEVICE 0xFFF1 DEVICE_ADDRESS 0xFFF2 MEM_ADDRESS 0xFFF3 SIZE 0xFFF4 STATUS
Escribir un programa en assembler que acceda a una cinta para transferir datos via DMA. El identicador de la cinta es la
0x013A.
0x354A.
STATUS
0xA142
0x0045
de la cinta hasta
de la memoria principal.
contrario. La forma de indicarle al controlador DMA que ya se cargaron todos los datos necesarios, y que puede iniciar la transmisin, es seteando en 1 el bit ms signicativo del registro
STATUS.
Ejercicio 14
cache
siempre
excludas de
Ejercicio 15
Discos Ejercicio 16
Un disco tiene 128 pistas de 32 sectores cada una, sobre una supercie de 8 platos de una sola cara cada uno. El disco gira a 3600 rpm y para moverse entre dos pistas le toma 60ms en el peor caso. Cul es el tiempo ms largo necesario para leer completamente un sector arbitrario, ubicado en cualquier lugar del disco?
Ejercicio 17
Un disco tiene
pistas de
rpm
y para moverse entre dos pistas adyacentes le toma Calcular los siguientes parmetros: a)
ta
tx
(peor caso).
Tt :
10
b) c) d) e)
Ts :
Tiempo de lectura de 1 sector Tiempo mnimo para leer el disco completo Tiempo medio para leer secuencialmente el disco completo Tiempo mximo para leer el disco completo (no secuencialmente)
Ejercicio 18
READ:
Se cuenta con un controlador de disco rgido que posee las siguientes primitivas:
SET_CYLINDER(c): SET_HEAD(h):
c.
selecciona la cabeza
polling ) a que el disco gire para llegar al sector buscado. El espacio <cabeza, cilindro, sector>= <0,0,0>. La ltima posicin es la #HEAD * #CYLINDER * #SECTOR, y se corresponde con la terna <#HEAD-1, #CYLINDER-1, #SECTOR-1>.
apropiado y esperar (mediante de direcciones del disco comienza en la direccin cero y se corresponde con la terna a) Considerando el protocolo del Ejercicio 10, escribir en pseudocdigo una rutina que se encargue de leer datos del disco a travs de DMA. Asumir que se cuenta con las mismas primitivas para manejar lneas de control y buses que las del Ejercicio 10.
Suponer que para leer un sector especco, se debe posicionar la cabeza del disco en el cilindro
b) En el caso que el controlador DMA solicite una direccin que no pertenezca al espacio de direccionamiento del disco, sugerir una modicacin al protocolo para que el dispositivo pueda indicarle un estado de error al controlador. Modicar el pseudocdigo de acuerdo a esto.
Ejercicio 19
trasmisin de datos, aumentar la conanza de los datos y incrementar la capacidad. Las mismas necesitan de una controladora de datos intermedia que encapsule los discos en un nico disco. Las posibles conguraciones son: a) Dos discos rgidos de 10GB, encapsulados en un disco virtual de 20GB con la misma velocidad de lectura de un disco. b) Dos discos rgidos de 10GB, encapsulados en un disco virtual de 20GB con el doble de velocidad de lectura de un disco. c) Dos discos rgidos de 10GB, encapsulados en un disco virtual de 10GB con informacin duplicada y con la misma velocidad de lectura de un disco. d) Dos discos rgidos de 10GB, encapsulados en un disco virtual de 10GB con informacin duplicada y el doble de velocidad de lectura de un disco. Se pide entonces:
i) Bajo estas conguraciones decidir si las siguientes armaciones son verdaderas:
11
La posicin de un sector del disco virtual debe traducirse a las posiciones correspondientes a los discos reales, excepto para las conguraciones c) y d). Para garantizar el doble de trasmisin en una rfaga de lectura hay que leer dos sectores contiguos al mismo tiempo. Y eso es posible nicamente si ambos sectores estn en el mismo disco rgido fsico. Si almaceno idnticos datos en ambos discos, solo debo leer uno de ellos. Si la lectura da error puedo usar lo almacenado en el otro disco. No se necesita reorganizar los datos de los discos para pasar de la conguracin c) a la d). No as para cambiar de a) a b). Si tengo una conguracin b), puedo escalar fcilmente la cantidad de discos rgidos y la velocidad de transferencia sin perder los datos previamente almacenados. Las conguraciones c) y d) necesitan siempre de un nmero par de discos.
ii) Ahora describa cada conguracin con un grco; describiendo la organizacin de los sectores,
la comunicacin de cada disco con sus controladores, el controlador del disco virtual, el DMA y la memoria principal.
iii) Habiendo comprendido un poco ms las cualidades de estas conguraciones se pide programar
readDevice
Las primitivas de este nuevo controlador usa las mismas que el ejercicio anterior, ms dos:
SET_DISC(d): WAIT:
El uso de la operacin
READ
WAIT
buf f er1
buf f er2
Tengan en cuenta que pueden usar la cantidad de buers que estimen necesario.
12