You are on page 1of 12

Prctica 6 - Entrada/Salida

Organizacin del Computador 1 1er cuatrimestre 2009


Esquemas de entrada/salida Ejercicio 1
0xFFF0.
la siguiente: El bit En una computadora La forma de interpretar la palabra (de 16 bits =

ORGA1se ha conectado un dispositivo de entrada en la direccin b15 . . . b0 ) provista por el dispositivo es

b15

representa el estado del dispositivo. Dicho bit se encuentra en 1 cuando el dispo-

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

contienen el dato proporcionado por el

ORGA1que

debe leer

datos del dispositivo y escribirlos

en forma contigua a partir de una direccin de memoria utilizando

R1

polling.

La rutina recibe en

R0

la posicin de memoria a partir de la cual debe escribir.

Ejercicio 2

Se desea proveer a la arquitectura del procesador

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.

Este ag indica:

con 1 que el procesador puede ser interrumpido y atender la interrupcin del dispositivo con 0 que el procesador no puede ser interrumpido

Se reserva la direccin de memoria

0x0000

para almacenar la direccin de la rutina de

atencin de la interrupcin del dispositivo de E-S. Se proveen 4 nuevas instrucciones:

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

cuyo efecto es SP=SP+1 y luego

Ri =[SP]

INT

INTA

se conectan a este dispositivo de E-S. Si el dispositivo activa la seal de

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

para indicarle al dispositivo que atender su pedido.

2. Coloca I=0 para evitar que el procesador vuelva a interrumpirse.

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:

noHuboOverflow: huboOverflow: rutinaAtencionInt:


... ... PUSH R0 PUSH R1 MOV R0, 0x0000 MOV R1, 0x0000 ADD R0, R1 POP R1 POP R0 SETI RET

MOV MOV ADD JVS ... ... ...

R0, 0x8000 R1, 0xFFFF R0, R1 huboOverflow

Y la siguiente rutina de atencin de la interrupcin:

; salva el valor original de R0 ; salva el valor original de R1

; ; ; ;

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

Suponga que I=1 y en la direccin de memoria de la etiqueta

rutinaAtencionInt

a) La ejecucin del programa

main

continuar como se espera si el dispositivo de E-S activa

la seal de interrupcin durante el ciclo de ejecucin de la instruccin

ADD R0, R1?

b) Existe alguna limitacin en el diseo actual del esquema de atencin de la interrupcin? Proponga alguna alternativa para superarla.

Ejercicio 3
sensores son:

Una computadora ORGA1 se encuentra conectada a 3 dispositivos de E/S que actan

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

frecuencia de muestreo sea mayor.


ii. Escribir la rutina de atencin de la interrupcin del sensor de temperatura.

Ejercicio 4

Una computadora tiene tres dispositivos de E/S:

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.

La mscara inicial es 0000h. Cuando se est atendiendo un dispositivo de prioridad

son descartadas. Por otro lado, si se est atendiendo un dispositivo de prioridad dispositivo de prioridad mayor que tratamiento.

n,

la ejecucin de la rutina actual se encola para su posterior

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

Se ha desarrollado un prototipo para un nuevo modelo de microondas que ser lan-

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.

No existe en la memoria un vector de inte-

rrupciones. El RTC y el CP poseen sendos registros de estado (RTC_STATUS y

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

El procesador central de la cabina de un avin tiene 4 dispositivos conectados:

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

El CI tiene un registro de E-S no mapeado a memoria de 16 bits en la direccin

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

(incluye todos los otros ags) y con dos

instrucciones para habilitar o deshabilitar interrupciones:

STI

CLI pone en cero (inhabilita) este bit de


(sin restricciones) y

pone en uno (habilita).

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

(interrupcin reconocida). Acto seguido el

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

; Ya se actualiz la altura, completar lo que falta para terminar.

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

El MC68000 es un procesador que contiene un PC de 24 bits que direcciona a byte

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

Algunas arquitecturas implementan una interrupcin

temporizada

que se dispara

automticamente cada

ciclos de reloj. De qu sirve interrumpir al procesador cuando ningn

dispositivo requiere realmente su atencin?

Transferencia de datos con DMA Ejercicio 9


Indicar qu tcnica de sincronizacin (polling o interrupciones) y qu mecanismo de transferencia de informacin a memoria (a travs de la CPU o usando DMA) es el ms apropiado para cada uno de los siguientes dispositivos. a) Disco rgido b) Teclado c) Calefn programable, dentro de un sistema embebido. Justicar la respuesta describiendo cmo utilizara el dispositivo con el mecanismo propuesto.

Ejercicio 10

Se cuenta con el siguiente sistema:

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

y compara su propio identicador

Ready.

4. El controlador DMA detecta la seal de

Ready.

En el caso de tratarse de una escritura, el

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

RD la Controladora del dispositivo quita el

polling

sobre la seal de

Request.

Para ello, cuenta con las siguientes primitivas para manejar la cinta de backup:

REW

: Rebobina la cinta hasta el principio.

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

Lee el buer de datos y devuelve el contenido.

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:

requestOn() readOn(): writeOn():

: Devuelve si est levantada la lnea de

Request.

Devuelve si el controlador DMA desea leer. Devuelve si el controlador DMA desea escribir. Setea la seal de

setReady(x): setData(x): getData():

Ready

con el valor de

x (x

en

0).

Escribe

en el bus de datos.

Lee el bus de datos. Escribe

setAddress(x): getAddress():
ms de

en el bus de direcciones.

Lee el bus de direcciones.

Se considera que el primer dato de la cinta se encuentra en la posicin

65536

0 y que la cinta no tiene

posiciones. Tener en cuenta que esta cinta es slo de lectura.

Ejercicio 11

Teniendo en cuenta el protocolo y el sistema presentado en el Ejercicio 10, escribir

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)

DEVICE_ADDRESS: MEM_ADDRESS: SIZE:

que se desea leer/escribir. direccin de memoria (en el espacio de direccionamiento de la memoria prin-

cipal) que se desea leer/escribir. cantidad de datos a transferir.

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

: Devuelve si est levantada la lnea de Setea la seal de

Ready.
en

setReadWrite(x): setRequest(x): setData(x): getData:

Read

con

Write x
en

con

en

0.

Setea la seal de

Request

con

(con

0).

Escribe

en el bus de datos.

Lee del bus de datos. Escribe

setAddress(x): getAddress:

en el bus de direcciones.

Lee del 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

Manteniendo el tamao de los buses, cmo modicara el protocolo del Ejercicio

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

ha conectado un controlador DMA como el del

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.

Se quiere transferir desde la posicin

Estos datos se deben guardar a partir de la posicin

El bit menos signicativo del registro

STATUS

0xA142

0x0045

de la cinta hasta

de la memoria principal.

contiene un 1 en caso de escritura, y un 0 en caso

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

En algunas arquitecturas es posible denir zonas de memoria como

(las referencias a estas direcciones

siempre

excludas de

son resueltas en la memoria principal) Por qu

motivos podra ser esto deseable?

Ejercicio 15

Discuta brevemente: Qu desventaja encuentra en un sistema con DMA pero con

un CPU sin interrupciones?

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

sectores cada una, y

cabezas. El disco gira a

rpm

y para moverse entre dos pistas adyacentes le toma Calcular los siguientes parmetros: a)

ta

y entre pistas extremos

tx

(peor caso).

Tt :

Tiempo de latencia media (en sg)

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)

Tmin : Tmed : Tmax :

Ejercicio 18
READ:

Se cuenta con un controlador de disco rgido que posee las siguientes primitivas:

lee el sector actual del disco. : devuelven, respectivamente, el cilin-

CURRENT_CYLINDER, CURRENT_HEAD, CURRENT_SECTOR


dro, cabeza y sector actual del disco.

SET_CYLINDER(c): SET_HEAD(h):

mueve el cabezal de lecto-escritura del disco hasta el cilindro

c.

selecciona la cabeza

que utilizar para leer o escribir.

#HEAD, #CYLINDER, #SECTOR:


y sectores del disco.

devuelven, respectivamente, la cantidad de cabezas, cilindros

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

Existen varias conguraciones de conexin de disco rgido que permiten acelerar la

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

para cada conguracin.

Las primitivas de este nuevo controlador usa las mismas que el ejercicio anterior, ms dos:

SET_DISC(d): WAIT:

dene el disco actual que las primitivas van a usar.

espera que todas las operaciones de lectura/escritura terminen.

El uso de la operacin

READ

cambia, ya que ahora requiere un parmetro que identica al

buer ledo. Un ejemplo del uso de la operacin es:

SET_DISC(0) READ(buffer1) SET_DISC(1) READ(buffer2) WAIT


Donde

WAIT

espera que los buers

buf f er1

buf f er2

se hayan ledo antes de continuar.

Tengan en cuenta que pueden usar la cantidad de buers que estimen necesario.

12