You are on page 1of 17

Tema 5 Sistema de Entrada/Salida

5.1. Introduccin o

Una de las caracter sticas bsicas de un computador es su habilidad para intercambiar a datos con otros dispositivos. Esta capacidad permite tambin su comunicacin con el ser e o humano, tanto para aceptar datos como para comunicar resultados. Existen una gran variedad de dispositivos, denominados dispositivos de entrada/salida (E/S) o perifricos, que permiten la comunicacin del computador con su entorno. Las e o conexiones entre dispositivos de E/S, procesador y memoria se llevan a cabo mediante los buses. Un bus es un canal de comunicacin compartido que utiliza un conjunto de cables o para conectar mltiples subsistemas. u Para realizar la conexin entre la CPU y los dispositivos perifricos se necesita de o e mdulos de E/S debido a que los dispositivos de E/S: o Tienen unas velocidades de transmisin muy variadas, pero sensiblemente inferiores o a la de la CPU. Suelen tener un ancho de palabra que no coincide con el ancho de palabra de la mayor de los computadores. Pueden transmitir bits individuales, bytes sueltos, a etc. Algunos son de lectura (por ej. el teclado), otros de escritura (por ej. el monitor ) y otros simultneamente de lectura y escritura (por ej. el modem). a La gura 5.1 muestra diferentes tipos de perifricos indicando si son de entrada, de e salida o de almacenamiento, con quien interactan (hombre o mquina) y sus velocidades u a de transferencia. 1

2
Device
Keyboard Mouse Voice input Sound input Scanner Voice output Sound output Laser printer Graphics display Cable modem Network/ LAN Network/ wireless LAN Optical disk Magnetic tape Flash memory Magnetic disk Input Input Input Input Input Output Output Output Output Input or output Input or output Input or output Storage Storage Storage Storage

TEMA 5. SISTEMA DE ENTRADA/SALIDA


Behavior Partner
Human Human Human Machine Human Human Human Human Human Machine Machine Machine Machine Machine Machine Machine

Data rate (Mbit/ sec)


30,000.0001 30,000.0038 30,000.2640 30,003.0000 30,003.2000 30,000.2640 30,008.0000 30,003.2000 800.00008000.0000 0.12806.0000 100.000010000.0000 11.000054.0000 30,080.0000220.0000 005.0000120.0000 32.0000200.0000 800.00003000.0000

Figura 5.1: Dispositivos de E/S

5.2.

Buses

Un bus es una v de comunicacin que conecta dos o ms dispositivos. La caracter a o a stica clave de un bus es que se trata de un medio de transmisin compartido. o Las l neas que componen un bus se pueden clasicar en tres grupos funcionales: Las l neas de datos del bus proporcionan el camino para transmitir datos entre los mdulos del sistema. El nmero de l o u neas del bus de datos determina el nmero u mximo de bits que es posible transmitir al mismo tiempo. a Las l neas de direccin se utilizan para designar (direccionar) la fuente o el deso tino de los datos enviados por el bus de datos. La anchura del bus de direcciones determina la cantidad mxima de memoria (y de dispositivos de E/S) direccionable a en el sistema. Las l neas de control se emplean para gestionar el acceso y el uso de las l neas de datos y direccin, sealizando peticiones y reconocimientos e indicando qu tipo de o n e informacin pasa por las l o neas de datos. La temporizacin es una parte fundamental del funcionamiento del bus ya que controla o la forma en que se coordinan los sucesos sobre el bus: La temporizacin s o ncrona utiliza un protocolo para la comunicacin que est goo a bernado por una seal de reloj. Todos los dispositivos conectados deben funcionar n a la misma frecuencia de reloj. Se puede implementar con un sistema secuencial sencillo y puede funcionar a gran velocidad, pero no es adecuado para mezclar dispositivos con grandes diferencias de velocidad. Tiene una desventaja o problema fundamental que es el sesgo de la seal de reloj (clock skew). El sesgo de reloj es la n

5.3. MODULOS DE ENTRADA/SALIDA

diferencia, en tiempo absoluto, entre los instantes en que dos elementos de estado reciben el anco de reloj. Por culpa del sesgo los buses no pueden ser largos si son rpidos. Los buses de memoria suelen ser s a ncronos. En la temporizacin as o ncrona, por el contrario, la ocurrencia de un suceso sobre el bus sigue otro suceso previo sin que tenga que producirse en un instante concreto simultneamente con la aparicin de un anco de reloj. Los dispositivos a o implicados en la transferencia se coordinan mediante el intercambio de seales de n control (protocolo de handshaking ). Ya que no hay seal de reloj comn, los n u buses as ncronos pueden interconectar una gran variedad de dispositivos de diferentes velocidades. Como no hay problemas de sesgo de reloj, permiten distancias ms a largas. El inconveniente es que son ms lentos debido a la sobrecarga introducida a para sincronizar emisor y receptor y es ms dif predecir el tiempo que va a llevar a cil una determinada transaccin. Los buses de E/S son habitualmente as o ncronos. Al bus se conectan mltiples dispositivos y una seal transmitida por cualquiera de u n ellos puede ser recibida por todas las otras unidades conectadas. En un mismo instante de tiempo slo es posible la transmisin por parte de un unico dispositivo, sin embargo o o la recepcin puede ser realizada por varios simultneamente. Si dos dispositivos inteno a tan transmitir en el mismo per odo de tiempo sus seales se solapar y no se podr n an an recuperar, por lo que existen mecanismos de arbitraje. Existen 2 tipos de arbitraje bsicos, el centralizado y el distribuido. En el arbitraje a centralizado, el controlador del bus o arbitro es el responsable de asignar el tiempo de utilizacin del bus. En el arbitraje distribuido no existe un controlador central. Cada o mdulo tiene la lgica de control suciente para poder acceder al bus y todos actan de o o u forma cooperativa. Esto puede ser por autoseleccin, cuando cada dispositivo determina o de forma independiente si l es el solicitante de ms prioridad; o por deteccin de colisin, e a o o cuando varios dispositivos intentan acceder al bus a la vez se produce una colisin que es o detectable. Una posible solucin es esperar un tiempo aleatorio antes de volver a intentarlo. o El mismo mecanismo se utiliza en muchas redes de datos.

5.3.

Mdulos de Entrada/Salida o

Un mdulo de E/S acta como interfaz entre el procesador y uno o ms dispositivos o u a perifricos. Las funciones de los mdulos de E/S son: e o Control y temporizacin: puesto que los recursos internos, como memoria principal o y bus del sistema, deben compartirse entre distintas actividades, incluyendo la E/S. Comunicacin con el procesador: que implica el decodicar rdenes que le llegan del o o procesador, intercambiar datos, informar de su estado,... Comunicacin con los dispositivos: que implica intercambiar ordenes, informacin o o de estado y datos.

4
Interfaz al bus del sistema

TEMA 5. SISTEMA DE ENTRADA/SALIDA


Interfaz a dispositivo externo

Almacenamiento temporal de datos: puesto que la velocidad de transferencia desde y hacia la memoria principal y el procesador puede ser varios rdenes de magnitud o superior que la de la mayor de dispositivos perifricos. En ocasiones se reciben a e grandes bloques de datos que se emiten bit a bit hacia el perifrico, bien se leen e o bit a bit y se agrupan antes de sacarlos del mdulo. o Deteccin de errores y comunicacin de estos al procesador. o o La Figura 5.2 muestra un diagrama de bloques de un mdulo de E/S. El mdulo se o o conecta al resto del computador a travs de un conjunto de l e neas (l neas de datos, l neas de direccin y l o neas de control). Los datos que se transeren a y desde el mdulo se o almacenan temporalmente en uno o ms registros de datos. Adems, puede haber uno o a a ms registros de estado que proporcionan informacin del estado presente. Estos registros a o internos pueden ser le dos y escritos por la CPU y son el medio de intercambio de datos con los dispositivos externos. La lgica que hay en el mdulo interacta con el procesador o o u a travs de una serie de l e neas de control. Estas l neas las utiliza el procesador para proporcionar las ordenes al mdulo de E/S. Algunas de estas l o neas de control pueden ser utilizadas por el mdulo de E/S (por ejemplo, para las seales de arbitraje del bus). o n El mdulo tambin debe ser capaz de reconocer y generar las direcciones asociadas a los o e dispositivos que controla. Cada mdulo de E/S tiene una direccin unica o, si controla o o ms de un dispositivo externo, un conjunto unico de direcciones. Por ultimo, el mdulo a o de E/S tambin posee lgica espec e o ca para la interfaz con cada uno de los dispositivos que controla. Cuando el procesador precisa transferir datos con un perifrico, comienza colocando e en el bus de direcciones la direccin del mdulo con el que tiene que comunicarse. Despus o o e el mdulo informa a la CPU del estado del perifrico (ocupado, libre desconectado, etc.). o e Si el perifrico se encuentra disponible, el procesador solicita la transferencia mediante e una orden al mdulo de E/S. Cuando el perifrico es de entrada, como sucede por ejemplo o e con el teclado, el carcter correspondiente a la tecla pulsada se almacena en el registro de a datos del mdulo de E/S y de all se env a la CPU. Si es de salida, como por ejemplo o a

Figura 5.2: Diagrama de bloques del mdulo de E/S o

5.4. DIRECCIONAMIENTO DE LOS MODULOS DE E/S

una impresora, el carcter a imprimir lo env el procesador por el bus de datos al registro a a de datos del mdulo de E/S y de all se manda a la impresora. o Existen mdulos de E/S espec o cos para determinado tipo de perifricos, as como e otros que se adaptan al funcionamiento de varios. Distinguiremos entre 2 tipos de mdulos o de E/S: utilizaremos el trmino controlador para los mdulos de entrada salida ms e o a bsicos, y el de procesador para aquellos con capacidad de ejecutar programas. a

5.4.

Direccionamiento de los mdulos de E/S o

Como ya hemos visto en la seccin anterior, la comunicacin entre la CPU y el mdulo o o o de E/S se realiza a travs de los registros de estado y de datos, por tanto, estos registros e tienen que poder ser direccionables por el procesador. La forma de direccionamiento var a segn la arquitectura del procesador, existiendo dos aproximaciones: u E/S asignada al espacio de memoria (Memory-mapped I/O, MMIO). La CPU trata los registros de los dispositivos de E/S como posiciones de memoria, utilizando las mismas instrucciones para acceso a memoria y a dispositivos de E/S. Con este esquema, una parte del mapa de memoria del sistema es reservado para E/S en lugar de para memoria, asignado las direcciones en ese rango a los distintos dispositivos de E/S. De esta forma, existe un unico espacio de direcciones en el sistema, que se emplea tanto para la memoria principal como para la E/S. La ventaja es su sencillez, ya que no es necesario implementar instrucciones ni circuiteria especial para la E/S. Esta alternativa se utiliza sobre todo en arquitecturas RISC y sistemas empotrados1 . Ejemplos de sistemas que utilizan esta aproximacin son la familia de procesadores o PowerPC de IBM y la familia de procesadores MIPS. En el caso del MIPS, las direcciones de memoria a partir de la 0x80000000 son solo accesibles en modo kernel (ver gura 5.3). Esta regin incluye cdigo para el manejo de excepciones, o o datos solo accesibles por el Sistema Operativo (SO) y direcciones de E/S asignadas a memoria que se utilizan para referirse a los registros de estado y de datos de los dispositivos per ericos (las direcciones de memoria de la 0xffff0000 en adelante). f E/S aislada (Isolated I/O, Instruction-based I/O, Port I/O o Port-mapped I/O, PMIO). En este caso se mantienen espacios de direcciones diferentes para memoria y E/S, disponiendo el procesador de instrucciones especiales para el acceso a direcciones de E/S, distintas a las de acceso a memoria. Al tener los dispositivos de E/S un mapa de memoria separado de la memoria principal, la CPU utiliza una seal n /IO) para indicar si la direccin que est en el bus de memoria es de de control (M o a E/S, o bien se utiliza un bus de E/S propio. Ejemplos de sistemas que usan esta aproximacin son la familia de procesadores x86 de Intel. o
Entendiendo por sistema empotrado un sistema computador de propsito especial contenido dentro o de un dispositivo mayor.
1

TEMA 5. SISTEMA DE ENTRADA/SALIDA


Entrada/Salida

ffff 0000hex

Figura 5.3: Divisin del espacio de memoria en el MIPS o

5.5.

Gestin de la Entrada/Salida o

Hasta el momento hemos hablado de las caracter sticas de los mdulos de E/S. Ahora o veremos como se realiza la comunicacin entre los mdulos y la CPU. Hay 3 tcnicas o o e posibles: E/S programada: El programa corriendo en el procesador toma la iniciativa de conectar con los dispositivos de E/S y gestiona las transferencias de datos. Es la tcnica ms bsica y la menos eciente. e a a E/S mediante interrupciones: Los dispositivos de E/S realizan una peticin de o interrupcin al procesador. El programa se interrumpe mientras se gestiona la peo ticin y al terminar esta se reanuda la ejecucin. Mejora a la anterior ya que evita o o que la CPU tenga que comprobar continuamente el estado del dispositivo. Acceso directo a memoria: Existe un controlador especial que realiza el intercambio de datos entre memoria y los dispositivos de E/S mientras el procesador contina su ejecucin. Es la tcnica ms avanzada y la que mayor rendimiento peru o e a mite alcanzar.

5.5.1.

E/S programada

Es la tcnica de gestin de E/S ms simple. Los datos son intercambiados directamente e o a entre el procesador y el dispositivo de E/S. La CPU ejecuta un programa que le da un

5.5. GESTION DE LA ENTRADA/SALIDA

control completo y directo sobre la operacin de E/S, incluyendo la comprobacin del o o estado del dispositivo, el env de ordenes de lectura y escritura, y la transferencia de o datos. Cada vez que la CPU le env una orden al dispositivo tiene que esperar a que la a operacin de E/S se complete, interrogando peridicamente al dispositivo sobre su estado, o o lo que se conoce como encuesta (polling). El dispositivo de E/S nunca interrumpe al procesador tras acabar una operacin, simplemente indica el hecho con sus bits de estado. o El principal inconveniente de la E/S programada es que, al ser el procesador mucho ms rpido que el dispositivo, se estn desperdiciando muchos ciclos de reloj en encuestar a a a al dispositivo, degradando el rendimiento del sistema. La ventaja es que puede acelerar las operaciones de E/S. Suele utilizarse en sistemas de propsito espec o co como cajeros automticos o sistemas empotrados para el control o monitorizacin de eventos. a o La gura 5.4 proporciona un ejemplo del uso de la E/S programada para leer un bloque de datos desde un dispositivo perifrico y almacenarlo en memoria. Los datos se e leen palabra por palabra (32 bits, por ejemplo). Por cada palabra le el procesador debe da permanecer en un ciclo de comprobacin de estado hasta que determine que la palabra o est disponible en el registro de datos del mdulo de E/S. Si hay un dato listo, entonces a o transere el dato a la CPU, si no, vuelve a leer el registro de estado. Este diagrama de ujo resalta la principal desventaja de esta tcnica: mantiene ocupada la CPU sin que e pueda hacer otra cosa.

5.5.2.

E/S con interrupciones

Con el mecanismo de interrupciones la CPU delega en el dispositivo de E/S la responsabilidad de comunicarse con el procesador cuando lo necesite. En este caso, el procesador no hace polling de ningn dispositivo, sino que queda a la espera de que estos le avisen u cuando tengan algo que comunicarle (ya sea un evento, una transferencia de informacin, o una condicin de error, etc.). Este aviso se realiza activando una l o nea de peticin de inteo rrupcin. Cuando el procesador recibe esta seal salta a ejecutar una rutina de tratamiento o n de interrupcin que se encarga de atender al perifrico que solicit la interrupcin. o e o o Una interrupcin de E/S es como las excepciones vistas en el cap o tulo anterior. Ambas son sucesos inesperados que afectan al procesador, pero las excepciones son sucesos internos y las interrupciones se producen externamente al procesador. Adems, una intea rrupcin de E/S es as o ncrona con respecto a la ejecucin de las instrucciones, es decir, se o pueden producir e cualquier momento, cosa que no ocurre con las excepciones. La gura 5.5 muestra un ejemplo de uso de E/S con interrupciones para leer un bloque de datos. El programa que se est ejecutando en la CPU realiza una peticin de a o lectura a un controlador de E/S y a continuacin pasa a otra tarea. En algn momento el o u controlador avisa mediante una interrupcin de que el dato est disponible. El procesador o a pasa el control al programa de tratamiento de esa interrupcin, que leer el dato y lo o a guardar en memoria. El proceso se repite si es necesario, pero la CPU slo estar ocupada a o a

TEMA 5. SISTEMA DE ENTRADA/SALIDA

Figura 5.4: Ejemplo de E/S programada

el tiempo imprescindible. Con esta tcnica, el procesador puede atender al programa e principal mientras el perifrico est manipulando la informacin. Se complica la lgica del e a o o controlador, en el que recae la misin de explorar el estado del perifrico, para provocar o e una interrupcin hardware cuando detecta que ya est disponible. o a La secuencia de pasos en el tratamiento de una peticin de interrupcin es bsicamente o o a la siguiente: 1. El dispositivo env una seal de interrupcin al procesador. a n o 2. El procesador termina la ejecucin de la instruccin mquina en curso. o o a 3. El procesador env una seal de reconocimiento al dispositivo que origin la intea n o rrupcin. La seal de reconocimiento hace que el dispositivo desactive su seal de o n n interrupcin. o 4. El procesador se prepara para transferir el control a la rutina de interrupcin. Salva o el valor de contador de programa, PC, y los registros necesarios en la pila, de manera que la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la ultima instruccin. o

5.5. GESTION DE LA ENTRADA/SALIDA

Figura 5.5: Ejemplo de E/S con interrupciones

5. El procesador carga en el PC la posicin de inicio del programa de tratamiento o de la interrupcin solicitada (ISR, Interrupt Service Routine) y ejecuta esa rutina o que tiene como objetivo atender al dispositivo que gener la interrupcin. Segn la o o u arquitectura del computador y el diseo del SO, puede haber un solo programa, uno n por cada tipo de interrupcin o uno por cada dispositivo y cada tipo de interrupcin. o o Si hay ms de una rutina de gestin de interrupcin, el procesador debe determinar a o o qu programa llamar. e 6. Una vez que la rutina de interrupcin termina, el procesador restaura el estado o que hab guardado en la pila en el paso 4 y retorna al programa que se estaba a ejecutando anteriormente. El mecanismo anterior es muy simple, pero es solo vlido cuando existe un unico a perifrico conectado a la l e nea de peticin de interrupciones. Cuando hay ms de un o a dispositivo y cada uno de ellos puede generar de forma independiente la peticin de una o interrupcin, surge la necesidad de identicar al perifrico que ha generado la interrupcin, o e o decidir cul tiene preferencia sobre los dems y proteger los servicios de interrupcin de a a o otras interrupciones. La identicacin del dispositivo se puede realizar mediante l o neas de interrupcin o

10

TEMA 5. SISTEMA DE ENTRADA/SALIDA

dedicadas. En este caso cada dispositivo tiene asignada una l nea de interrupcin propia. o El nmero de l u neas de bus y de conexiones de la CPU que se pueden dedicar a l neas de interrupciones es limitado, por lo que esta tcnica por si misma suele ser insuciente. e La alternativa es utilizar l neas de interrupcin compartidas, es decir, cada l o nea de interrupcin puede ser empleada por ms de un mdulo de E/S. En este caso, es o a o necesario un mecanismo de identicacin del mdulo de E/S que provoc la interrupcin. o o o o La identicacin del dispositivo concreto se puede realizar de varias maneras, de las cuales o veremos 3: Encuesta software: al detectar la CPU que se ha activado la l nea de peticin o de interrupcin, una rutina genrica de manejo de interrupciones se encarga de o e interrogar a los diferentes dispositivos comprobando el valor del registro de estado. Una vez identicado el dispositivo se ejecuta su rutina de servicio asociada. Encadenamiento (daisy chain): cuando el procesador recibe una interrupcin, o activa la l nea de reconocimiento de interrupcin. La l o nea de reconocimiento de interrupcin se conecta en cadena a todos los mdulos de E/S. De esta forma, o o el primer mdulo que recibe dicha seal y ha generado una interrupcin, deja de o n o propagar la seal y suministra, a travs del bus de datos, la direccin en la que n e o se encuentra su rutina de tratamiento. El proceso se ilustra en la gura 5.6. El perifrico x hace la peticin, lo que provoca P Ix = 1 y, en consecuencia, P I = 1. e o La CPU reconoce la peticin de interrupcin y activa RI. La seal RI se recibe en o o n el primer perifrico, si ese perifrico no ha originado la peticin propaga la seal e e o n RI activndola a su salida. El paso anterior se repite hasta que la seal llega al a n perifrico que ha generado la interrupcin, el cual bloquea la seal RI ponindola e o n e a 0. El perifrico entonces env a la CPU la direccin de la rutina de tratamiento e a o de su interrupcin por el bus de datos. En el suministro de la direccin de la rutina o o de tratamiento se puede aplicar cualquiera de los mtodos de direccionamiento que e se estudiaron para las instrucciones, aunque se suelen imponer ciertas limitaciones o simplicaciones. Algunas alternativas clsicas son: a Direccionamiento absoluto: el perifrico manda su direccin. e o Direccionamiento relativo: el perifrico manda parte de la direccin y la CPU e o la completa aadiendo bits o sumando una determinada cantidad, que siempre n ser ja. Esta alternativa tiene una ventaja sobre la anterior y es que permite a especicar la direccin de comienzo con menos bits y por tanto simplica el o diseo. Ahora bien, tiene una desventaja principal y es que limita el nmero n u de dispositivos que podemos conectar. Direccionamiento relativo indirecto: el perifrico manda la posicin relativa de e o la direccin en una tabla de direcciones residente en memoria. En este caso se o habla de interrupciones vectorizadas Arbitraje de bus: un mdulo de E/S debe, en primer lugar, disponer del control del o bus antes de poder activar la l nea de peticin de interrupcin. As solo un mdulo o o , o puede activar la l nea en un instante. Cuando el procesador detecta la interrupcin, o

5.5. GESTION DE LA ENTRADA/SALIDA


Bus de datos

11

Procesador

PIN

Controlador N
RI

Perifrico N

Peticin de Interrupcin (PI) PI2

RI

Controlador 2
RI

Perifrico 2

PI1

Controlador 1

Perifrico 1

Reconocimiento de Interrupcin (RI)

Figura 5.6: Encadenamiento de perifricos e

responde mediante la l nea de reconocimiento de interrupcin. Despus el mdulo o e o que solicit la interrupcin sita la direccin de su rutina de tratamiento en las o o u o l neas de datos. Las tcnicas de arriba sirven para identicar el mdulo de E/S que solicita interrupcin e o o y para asignar prioridades cuando ms de un dispositivo est pidiendo que se atienda su a a interrupcin. Con varias l o neas de interrupcin, el procesador simplemente selecciona la o l nea con ms prioridad. Con consulta software, el orden en el que se consultan los mdulos a o determina la prioridad. De igual forma, el orden de los mdulos en la conexin en cadena o o determina la prioridad. Finalmente, el arbitraje de bus puede emplear tambin un esquema e de prioridad. Si una peticin de interrupcin se produce mientras se atiende una anterior existen o o 2 alternativas. En un sistema de interrupciones unico la ejecucin del programa de o servicio de una interrupcin contina hasta el nal antes de la que CPU pueda aceptar o u una segunda peticin de interrupciones. En un sistema multinivel se pueden atender o peticiones de interrupcin durante la ejecucin del programa de servicio de otro disposio o tivo. En este caso se le asigna a cada causa de interrupcin uno de entre varios niveles o de prioridad de modo que una interrupcin solo se atiende si su nivel es superior al de la o interrupcin cuyo programa de servicio se est ejecutando. o a La forma de ignorar interrupciones es mediante el enmascaramiento (ver gura 5.7). Con este mecanismo se puede evitar que una interrupcin se vea a su vez interrumpida o por otra de igual o menor nivel de prioridad, permitiendo la ejecucin sin interrupcioo nes de tareas cr ticas y/o evitando que dispositivos lentos interrumpan a otros de mayor prioridad. Tambin se puede pedir que ninguna interrupcin interrumpa a la actual. Las e o excepciones/interrupciones ms cr a ticas, de hecho, no son enmascarables y tienen prioridad absoluta.

12

TEMA 5. SISTEMA DE ENTRADA/SALIDA

PIn

PI1

Registro de estado

Peticin de interrupcin

M Re istro de mscara

Figura 5.7: Enmascaramiento de las interrupciones

Al invocar un servicio de interrupcin se pone en marcha un mecanismo muy similar a o la llamada a una subrutina en el que la pila juega un papel muy importante tal y como se muestra en la gura 5.8. En este ejemplo el programa principal es interrumpido por una peticin con cdigo de interrupcin 2. El programa que da servicio a esta interrupcin o o o o se comienza a ejecutar, y entonces se recibe una peticin de interrupcin PI3 que es o o rechazada porque su nivel de prioridad es inferior a la actual. Posteriormente se recibe otra peticin PI1 que s debe ser atendida porque tiene mayor prioridad que PI2. Al o terminar la ejecucin del programa que da servicio a PI1 se regresa al programa de PI2, o que tambin termina su ejecucin y, antes de regresar al programa principal, el procesador e o permite la ejecucin del programa de servicio de PI3, que ha estado pendiente todo ese o tiempo. Finalmente se vuelve al programa principal. En la parte de abajo de la gura se ve esto mismo desde el punto de vista de la pila, del registro contador de programa (PC) y de un registro de excepciones (RE) que contiene informacin sobre la excepcin o o o interrupcin que est siendo atendida. En la pila se van guardando los valores de PC a o a los que hay que retornar (n+1 y q+1) y los valores de RE.

Interrupciones en el MIPS Para el manejo de excepciones e interrupciones el MIPS utiliza el coprocesador 0. En este coprocesador existen una serie de registros que se utilizan para tratar este tipo de eventos: El registro EPC (Exception Program Counter): contiene la direccin de la instruco cin que se estaba ejecutando cuando se ha producido la excepcin. o o El registro Status: contiene la mscara de interrupciones y los bits de autorizacin a o (ver gura 5.9):

5.5. GESTION DE LA ENTRADA/SALIDA

13

Programa p

Programa de servicio de la interrupcin I2 PI r

Programa de servicio de la interrupcin I1

n n +1

PI

q q+1

PI

Programa de servicio de la interrupcin I3 s

Llega PI 2

Llega PI 3 SP

Llega PI 1 q+1 011 SP ------ 000 PC RE r - - - - - - 111 PC RE

Fin PI 1

SP

n+1 ------ 000 p - - - - - - 011

(No se altera)

n+1 ------ 000 q+1 - - - - - - 011

PC RE

Fin PI 2

Se trata PI 3

Fin PI 3

SP SP PC RE n+1 - - - - - - 000 PC RE

n+1 000 s - - - - - - 001

PILA
SP PC RE n+1 - - - - - - 000

Figura 5.8: Cambios en memoria y en registros debido a interrupciones

14

TEMA 5. SISTEMA DE ENTRADA/SALIDA


modo usuario

Registro Status

mscara interrupcin

15

Registro Cause

interrupciones pendientes

cdigo excepcin

15

Figura 5.9: Principales bits de los registros Status y Cause del coprocesador 0 del MIPS

El campo mscara de interrupciones contiene un bit para cada uno de los a niveles de interrupcin posibles (5 niveles hardware y 3 software). Un bit a 1 o permite interrupcin en ese nivel, un bit a 0 deshabilita las interrupciones de o ese nivel. El bit modo usuario vale 0 si el programa estaba en el ncleo del SO cuando u se ha producido la excepcin y 1 si se estaba ejecutando en modo usuario. o El bit permiso interrupcin est a 1 si se permiten las interrupciones y a 0 si o a estn deshabilitadas. a El registro Cause: se utiliza para identicar el motivo de la excepcin (ver gura 5.9): o Los 8 bits interrupciones pendientes se corresponden con los 8 niveles de interrupcin. Cada bit pasa a 1 cuando se ha producido una interrupcin en su o o nivel y no ha sido atendida. El campo cdigo excepcin describe la causa de la excepcin/interrupcin. El o o o o valor 0 en este campo indica una interrupcin externa y la rutina de manejo de o interrupciones tiene que averiguar el causante de la interrupcin encuestando a o los dispositivos que estn siendo manejados mediante interrupciones (encuesta a software).

5.5.3.

Acceso directo a memoria

El uso de E/S mediante interrupciones plantea problemas de rendimiento para grandes transferencias de datos. Por ejemplo, si se dispone de un mdulo de E/S con un registro de o datos de 1 byte y se desea realizar la transferencia de un bloque de 512 bytes, se producen 512 interrupciones y, por tanto, la rutina de tratamiento de interrupciones se ejecutara 512 veces. Esto implica que la operacin de E/S todav requiere una considerable utilizacin o a o del procesador para la operacin. o

permiso interrupcin
0

5.5. GESTION DE LA ENTRADA/SALIDA

15

Figura 5.10: Ejemplo de E/S con acceso directo a memoria

Cuando hay que transferir grandes volmenes de datos se requiere una tcnica ms u e a eciente: el acceso directo a memoria (DMA, Direct Memory Access). El acceso directo a memoria se realiza con un controlador especializado que transere los datos entre el dispositivo y la memoria sin intervencin del procesador. El dispositivo o contina usando el mecanismo de interrupciones para comunicarse con el procesador, pero u solo al nalizar la transferencia o en caso de error. La gura 5.10 proporciona un ejemplo del uso de la E/S con DMA para leer un bloque de datos desde un dispositivo perifrico y almacenarlo en memoria. Hay tres pasos en una e transferencia por DMA: El procesador inicia el DMA proporcionando la identidad del dispositivo, la operacin a realizar, la direccin de memoria que es la fuente o destino de los datos a o o transferir y el nmero de bytes a transferir. u El DMA inicia la operacin en el dispositivo y se encarga de obtener el acceso al o bus. Cuando los datos estn disponibles (procedentes del dispositivo o de memoria), a los transere. El controlador de DMA proporciona la direccin de memoria para las o lecturas o escrituras. Si la peticin requiere ms de un transferencia por el bus, el o a controlador de DMA genera la siguiente direccin de memoria e inicia la siguiente o transferencia. Usando este mecanismo, el controlador DMA completa la transferencia, que puede tener un tamao de miles de bytes, sin molestar al procesador. n Una vez nalizada la transferencia por DMA, el controlador interrumpe al procesador, el cual puede determinar, interrogando al controlador de DMA o examinando la memoria, si la operacin ha terminado con xito. o e Las opciones para el acceso al bus por parte del controlador DMA son: Por rfagas: cuando el DMA toma el control del bus no lo libera hasta haber a transmitido el bloque de datos pedido. Por robo de ciclos: cuando el DMA toma el control del bus lo retiene solo un ciclo, transmite una palabra y lo libera.

16

TEMA 5. SISTEMA DE ENTRADA/SALIDA

Bus nico, DMA independiente


CPU Memoria E/S E/S E/S Mdulo DMA

Bus nico, DMA - E/S integrados


CPU Memoria Mdulo DMA E/S E/S Mdulo DMA E/S E/S

Bus de E/S
CPU Mdulo DMA

Bus del sistema

Memoria
Bus del E/S

E/S

E/S

E/S

Figura 5.11: Conguraciones alternativas para el DMA

DMA transparente: solo se roban ciclos cuando la CPU no est utilizando el bus a del sistema. Elimina completamente la interferencia entre el controlador de DMA y la CPU. Una operacin de E/S gestionada mediante DMA puede degradar el rendimiento del o procesador si se hace un uso intensivo del bus de memoria, ya que si el bus est ocupado a en una transferencia DMA, el procesador no puede acceder a memoria principal. Existen varias conguraciones de DMA posibles segn la comparticin que se haga del bus. La u o gura 5.11 muestra la diferentes alternativas. En el caso ms bsico, todos los elementos a a comparten el bus y el trco es ms intenso, con posibilidad de que se reduzca el rendia a miento. Esto se puede evitar haciendo que los mdulos de E/S no tengan acceso directo o al bus, as solo existir trco entre el mdulo DMA y la memoria. Finalmente, puede a a o existir un bus espec co de E/S.

5.6.

Procesadores de E/S

Para reducir todav ms la interferencia de la E/S con la CPU, los controladores de a a E/S se pueden hacer ms inteligentes, haciendo que se comporten como un procesador en a

5.6. PROCESADORES DE E/S

17

s mismo, con un repertorio de instrucciones especializado orientado a la E/S. Esto permite que la CPU pueda especicar una secuencia de actividades de E/S y ser interrumpida cuando se haya completado la secuencia entera. En este caso el mdulo de E/S recibe el o nombre procesador de E/S en vez de controlador de E/S.

You might also like