You are on page 1of 33

Introduccin a los

Sistemas de Entrada/Salida

Arquitectura de Sistemas Paralelos (1)

Introduccin a los sistemas de entrada/salida


ndice y bibliografa

Introduccin
Mdulos de Entrada/Salida
Mapa de Entrada/Salida: comn y separado
Mtodos de Entrada/Salida
E/S programada
E/S por interrupciones
Acceso directo a memoria
Ejemplo de dispositivo de E/S
Operaciones de E/S desde el SO
Bibliografa
Organizacin y Arquitectura de Computadores, William Stalling
Linux Device Drivers, Alessandro Rubini and Jonathan Corbet, OReilly
Arquitectura de Sistemas Paralelos (2)

Introduccin a los sistemas de entrada/salida


Introduccin (I)
Un computador no puede estar formado slo por la CPU y la memoria.
Para darle alguna utilidad debe de poder comunicarse con el mundo
exterior. Esto se realiza a travs del subsistema de entrada/salida
(mdulos de E/S)
La misin principal del subsistema de E/S es la adaptacin de los
dispositivos externos para su conexin al bus del sistema. Por qu no
pueden conectarse directamente?
A menudo, la velocidad de transmisin de datos de los perifricos es
mucho menor que la de la memoria y la CPU (es necesario amortiguar esa
diferencia de velocidades)
Debido a la gran variedad de perifricos existentes no es posible incorporar
toda la lgica necesaria para controlar tal diversidad de dispositivos dentro
del procesador
Los formatos y tamaos de datos de los perifricos suelen ser diferentes a
los utilizados por el computador a los que se conectan

Arquitectura de Sistemas Paralelos (3)

Entrada/Salida
Introduccin (II)
Existen dos esquemas diferentes para la
implementacin del subsistema de E/S:
a) Disearlo a medida utilizando
componentes bsicos
b) Utilizar dispositivos genricos de E/S y
programarlos convenientemente

(b)

(a)
Arquitectura de Sistemas Paralelos (4)

Mdulos de E/S
Definiciones
Dispositivo externo: elementos que permiten la transferencia de informacin
entre la CPU y el mundo exterior. Funcionan a modo de interface
transformando la informacin asncrona y analgica del mundo exterior a la
informacin sncrona y codificada del computador
Mdulo de E/S: elementos que permiten la conexin de un dispositivo externo
al bus del sistema. Los trminos controlador, procesador de E/S y mdulo
de E/S son equivalentes desde el punto de vista funcional:
Los controladores son mdulos de E/S muy sencillos que tienen el
hardware necesario para que funcione el dispositivo externo
Los procesadores de E/S son autnticos procesadores con un juego
especializado de instrucciones orientado a operaciones de E/S, que son
programados por la CPU, permitiendo un funcionamiento autnomo
Un dispositivo externo conectado a un mdulo de E/S se denomina dispositivo
perifrico o simplemente perifrico
Arquitectura de Sistemas Paralelos (5)

Mdulos de E/S
Diagrama de bloques de un dispositivo externo

Arquitectura de Sistemas Paralelos (6)

Mdulos de E/S
Diagrama de bloques de un mdulo de E/S

Arquitectura de Sistemas Paralelos (7)

Mdulos de E/S
Funciones (I)
Las funciones de un mdulo de E/S son:
Control y temporizacin
Comunicacin con el procesador
Comunicacin con los dispositivos
Almacenamiento temporal
Deteccin de errores

Arquitectura de Sistemas Paralelos (8)

Mdulos de E/S
Funciones (II)
Control y temporizacin
Son necesarios para coordinar el trfico entre dispositivos internos y externos
Por ejemplo, el control de la transferencia de datos desde un dispositivo
externo al procesador podra implicar la siguiente secuencia de pasos:
1. El procesador pregunta por el estado del dispositivo
2. El mdulo de E/S devuelve el estado del dispositivo
3. Si el dispositivo est listo, el procesador solicita la transferencia al mdulo de E/S
4. El mdulo de E/S obtiene los datos
5. Los datos se transfieren del mdulo de E/S al procesador

La comunicacin con el procesador implica:

Decodificacin de rdenes
Datos
Informacin de estado
Reconocimiento de direccin

Arquitectura de Sistemas Paralelos (9)

Mdulos de E/S
Funciones (III)
La comunicacin con el dispositivo implica:
rdenes
Informacin de estado
Datos

Almacenamiento temporal de datos


Los datos se envan en rfagas rpidas desde la memoria al mdulo de E/S y
despus se envan al perifrico a la velocidad de ste (el proceso inverso es
semejante)
Los datos se almacenan para no mantener ocupada a la memoria en una
operacin de transferencia lenta (evitar una cada en el rendimiento)

Deteccin de errores
Errores debidos a defectos mecnicos o elctricos
Errores en la transmisin de informacin (cdigos de deteccin de errores)
Arquitectura de Sistemas Paralelos (10)

Mdulos de E/S
Funciones (IV)
Velocidades tpicas de transferencia en dispositivos de E/S (bps)
(Almacenamiento temporal de datos)

Arquitectura de Sistemas Paralelos (11)

Mapa de Entrada/Salida: comn y separado


Definicin
A la hora de integrar el subsistema de E/S (seleccin del dispositivos y
acceso a sus registros) en un computador existen dos posibilidades:
E/S comn o asignada/mapeada en memoria: en la que el procesador no
contempla el acceso a mdulos de E/S. El acceso a los perifricos se hace
como si se accediese a un dato almacenado en la memoria principal. A los
perifricos se le asigna posiciones de memoria como si fueran variables. Ej:
el procesador Motorola 68000
E/S aislada o separada: el acceso a la E/S est contemplado en la
arquitectura. Existen dos mapas de memoria separados: uno para memoria y
otro para E/S. Esto implica que existen instrucciones especficas de E/S
(inport/outport) y tambin seales especficas. Ej: la familia i80x86

Aunque el sistema soporte espacios de direcciones separados no todos los


dispositivos tienen porqu usar los puertos de E/S: mientras que el uso de
los puertos de E/S eran comn en las tarjetas ISA, los dispositivos PCI
suelen mapear sus registros en memoria
Arquitectura de Sistemas Paralelos (12)

Mapa de Entrada/Salida: comn y separado


Ejemplo: Esquema de direcciones de E/S en un PC

Arquitectura de Sistemas Paralelos (13)

Mapa de Entrada/Salida: comn y separado


Ventajas e inconvenientes
Mapear la E/S en memoria tiene como ventajas:
no utilizar instrucciones de propsito especfico y aprovechar
toda la potencia del juegos de instrucciones, permitiendo una
mejor programacin
el acceso a memoria es mucho ms eficiente
el compilador tiene mas libertad para elegir el lugar y el modo de
direccionamiento en el acceso a memoria

Y como inconveniente:
se desperdicia parte del espacio de direcciones

Arquitectura de Sistemas Paralelos (14)

Mapa de Entrada/Salida: comn y separado


Los problemas de la E/S en memoria
Hay que tener en cuenta que las operaciones de E/S suelen tener
efectos colaterales (ej: bandera desactivada cuando se produce
una lectura) mientras que la operaciones con memoria no
Cuando existen efectos colaterales las operaciones de E/S
mapeada en memoria pueden ser problemticas
Como la velocidad de acceso a memoria es crtica en el
rendimiento de la CPU, el acceso a memoria (sin efectos
colaterales) es optimizado: cach, optimizaciones del
compilador y reordenacin hardware de instrucciones
Para evitar el uso de la cach el espacio de memoria del
dispositivo puede ser configurado como memoria no cacheable
Para evitar la optimizacin del compilador y la reordenacin
harware de instrucciones cuando se programa deben utilizarse
memory barriers
Arquitectura de Sistemas Paralelos (15)

Mtodos de Entrada/Salida
Clasificacin
Debido a la diferencia de velocidad entre procesador y
perifricos es necesario proporcionar mecanismos para
sincronizar las operaciones de E/S
A la hora de clasificar los diferentes mtodos para llevar
a cabo las operaciones de E/S hay que tener en cuenta los
siguientes factores:
Inicio de la transferencia (quin comienza la transferencia?)
Transferencia (quin realiza la transferencia?)

Existen tres tcnicas para realizar las operaciones de E/S:


E/S programada
E/S por interrupciones
Acceso directo a memoria
Arquitectura de Sistemas Paralelos (16)

Mtodos de Entrada/Salida
E/S programada
Tambin llamada por sondeo o encuesta (polling)
La CPU tiene el control absoluto de la operacin de E/S: inicia
y lleva a cabo la transferencia
El procesador ejecuta un programa que controla directamente
la operacin de E/S :
Comprobacin del estado
Envo de una orden de lectura o escritura
Transferencia de datos

Esta tcnica tiene la ventaja de utilizar un hardware mnimo


aunque malgasta tiempo de proceso ya que ha de interrogar
continuamente al perifrico (espera activa,
en sistemas
multiproceso)
Arquitectura de Sistemas Paralelos (17)

E/S programada
Ejemplo de programacin
void main ()
{
unsigned char estado;
...
inicializar_periferico_X();
...
while (!fin_operacion) {
estado = inportb (PUERTO_REG_ESTADO_X);
if ((estado & MASCARA_BIT_LISTO)!= 0)
hacer_operacion(); activo en alta
}
}
((estado | ~ MASCARA_BIT_LISTO)!= 0xFFFF)
activo en baja
Arquitectura de Sistemas Paralelos (18)

Mtodos de Entrada/Salida
E/S por interrupciones

Para evitar la degradacin en las prestaciones del sistema que supone la


espera activa, en este caso es el dispositivo el que solicita la operacin de
E/S cuando se encuentra preparado para realizarla (interrupcin)
La transferencia es llevada a cabo por la CPU de forma semejante a como
se haca en la E/S programada
El esquema bsico de funcionamiento de la E/S por interrupciones es:
1. El procesador ejecuta instrucciones de un programa
2. Al finalizar cada instruccin comprueba si se ha producido una interrupcin
3. En caso afirmativo el procesador enva una seal de reconocimiento al
dispositivo, guarda el estado actual del proceso (contador del programa y
registros) y comienza a ejecutar la rutina que sirve la interrupcin
(manejador de interrupcin o rutina de servicio de interrupcin)
4. Al finalizar la ejecucin de la rutina de servicio, se recupera el estado de la
mquina y se contina ejecutando el proceso que se abort
Arquitectura de Sistemas Paralelos (19)

E/S por interrupciones


Esquema de funcionamiento

PSW=Program Status Word


PC=Program Counter
Arquitectura de Sistemas Paralelos (20)

E/S por interrupciones


Implementacin

En la implementacin de la E/S mediante interrupciones aparecen dos


cuestiones:
cmo se determina el procesador qu dispositivo ha provocado la
interrupcin?
si se han producido varias interrupciones, cmo decide el
procesador la que debe atender?

Hay cuatro tcnicas utilizadas comnmente para implementar la E/S


por interrupciones:

Mltiples lneas de interrupcin


Consulta software (software polling)
Conexin en cadena (daisy chain)
Arbitraje de bus
Tcnicas que usan interrupciones vectorizadas

Arquitectura de Sistemas Paralelos (21)

Implementacin de la E/S por interrupciones


Mltiples lneas de interrupcin
Consiste en proporcionar varas lneas de interrupcin entre el
procesador y los mdulos de E/S
Es poco prctico porque malgasta terminales del procesador y adems
de existir ms perifricos que lneas no se resolvera el problema
La prioridad viene fijada por el procesador

CPU

Perifrico 0

Perifrico 1

INT0
INT1
...
INTN

Arquitectura de Sistemas Paralelos (22)

Perifrico N

Implementacin de la E/S por interrupciones


Consulta software
Todos los mdulos de E/S comparten una lnea comn para solicitar
interrupciones
Cuando el procesador detecta una interrupcin, se produce un salto a
una subrutina de servicio de interrupcin que se encarga de consultar a
cada mdulo de E/S para determinar cul ha producido la interrupcin
La desventaja de la consulta software est en el tiempo que consume
La prioridad viene determinada por el orden en que se hace la encuesta

Arquitectura de Sistemas Paralelos (23)

Implementacin de la E/S por interrupciones


Conexin en cadena (I)

Se trata de una consulta o polling hardware


Todos los mdulos de E/S comparten una lnea comn para solicitar
interrupciones
La lnea de reconocimiento de interrupcin se conecta encadenando los
mdulos uno tras otro
Cuando el procesador recibe una interrupcin, activa la seal de
reconocimiento, la cual se propaga a travs de la secuencia de mdulos de
E/S hasta que alcanza al que solicit la interrupcin
El mdulo correspondiente responde colocando una palabra que lo identifica
en las lneas de datos (vector)
El procesador utiliza el vector de interrupcin como puntero a la rutina de
servicio (as se evita ejecutar una rutina de servicio general)
La prioridad viene determinada por el orden en que se conectan los mdulos
en la cadena

Arquitectura de Sistemas Paralelos (24)

Implementacin de la E/S por interrupciones


Conexin en cadena (II)

Arquitectura de Sistemas Paralelos (25)

Implementacin de la E/S por interrupciones


Arbitraje de bus

Con esta tcnica, un mdulo de E/S antes de poder activar la lnea de


peticin de interrupcin debe disponer del control del bus
Mediante el arbitrador de bus se garantiza que slo un mdulo puede
activar la seal de peticin en un determinado instante
Es una tcnica que usa interrupciones vectorizadas como el daisy chain
La prioridad viene determinada por el arbitrador

Arquitectura de Sistemas Paralelos (26)

Implementacin de la E/S por interrupciones


Ejemplo de arbitrador: PIC 8259 (I)

Los 80x86 disponen de una sola lnea de peticin de interrupcin


(INTR) y una sola lnea de reconocimiento de interrupcin (INTA)
Para manejar cierta variedad de dispositivos y estructuras de prioridad,
se configura un rbitro de interrupciones externo (PIC 8259)
El 8259 permite manejar hasta 8 mdulos. Si se precisan ms pueden
conectarse en cascada permitiendo manejar hasta 64 mdulos
El esquema de funcionamiento de un sistema basado en el 8259 es el
siguiente:
El 8259 acepta las solicitudes de interrupcin de los dispositivos
conectados a l
El 8259 determina qu interrupcin tiene la prioridad ms alta e
indica la peticin al procesador activando la seal INTR
El procesador reconoce la solicitud activando la seal INTA
El 8259 sita el vector de interrupcin apropiado en el bus
El procesador comienza la ejecucin de la rutina de servicio

Arquitectura de Sistemas Paralelos (27)

Implementacin de la E/S por interrupciones


Ejemplo de arbitrador: PIC 8259 (II)
El esquema de prioridades es configurable en el 8259. Se
permiten los siguientes modos:
Completamente anidados: las solicitudes de interrupcin se
ordenan segn un nivel de prioridad desde 0 (IR0) hasta 7(IR7)
Rotatorio: un dispositivo pasa a tener la menor prioridad del grupo
despus de ser servido (aplicaciones en las que hay dispositivos con
igual prioridad de interrupcin)
Con mscara especial: se permite que el procesador pueda inhibir
selectivamente las interrupciones de determinados dispositivos

Arquitectura de Sistemas Paralelos (28)

Implementacin de la E/S por interrupciones


Ejemplo de arbitrador: PIC 8259 (III)

Arquitectura de Sistemas Paralelos (29)

E/S por interrupciones


Habilitacin/Deshabilitacin de interrupciones
Las interrupciones pueden ser:
enmascarables: se pueden dejar de atender por software
no enmascarables: siempre son atendidas

Existen 3 niveles en los que habilitar/deshabilitar las interrupciones:


A nivel de procesador: se deshabilitan todas las interrupciones
enmascarables
A nivel de controlador de interrupciones (PIC): se pueden
habilitar/deshabilitar todas las interrupciones asociadas a un canal de
interrupcin
A nivel del dispositivo: los dispositivo perifricos suelen tener bits en sus
registros de E/S para habilitar/deshabilitar las diferentes interrupciones que pueden
generar

Arquitectura de Sistemas Paralelos (30)

E/S por interrupciones


Ejemplo de programacin
void main () {
void interrupt (*manejador_antiguo)();
...
inicializar_periferico_X();
antiguo=getvect(INT_X);
disable(); /* Se deshabilitan mientras se manipulan
los vectores de interrupcion */
setvect(INT_X, manejador_intr_periferico_X);
enable ();
...
disable();
setvect(INT_X, manejador_antiguo);
enable (); }
void interrupt manejador_intr_periferico_X() {
... /* Se realizan las operaciones necesarias */}

Arquitectura de Sistemas Paralelos (31)

Acceso directo a memoria


Concepto
Tanto la E/S por interrupciones como la E/S programada requieren la
intervencin activa del procesador para transferir datos entre la
memoria y los mdulos de E/S
Ambos mtodos tienen un impacto negativo sobre la actividad del
procesador y la velocidad de E/S
Utilizando la E/S programada, el procesador puede transferir datos a
alta velocidad al precio de no hacer nada ms
La E/S con interrupciones libera en parte al procesador a expensas de
reducir la velocidad de E/S (debido a la sobrecarga que supone el
cambio de contexto)
Cuando hay que transferir grandes volmenes de datos, se requiere una
tcnica ms eficiente: el Acceso Directo a Memoria (DMA)
En el DMA tanto el inicio de la transferencia como la transferencia en
s estn gobernadas por el dispositivo (se libera a la CPU)
Arquitectura de Sistemas Paralelos (32)

Acceso directo a memoria


El controlador de DMA
El acceso directo a memoria requiere un mdulo adicional en el bus
del sistema: el Controlador de DMA (DMAC)
La nica tarea de la CPU es programar el DMAC. Hay que enviarle al
menos la siguiente informacin:

Direccin del perifrico de E/S


Posicin inicial de memoria de donde se lee o se escribe
El tipo transferencia: lectura o escritura
El tamao de la transferencia (nmero de palabras a transferir)

El DMAC transfiere el bloque de datos completo, palabra a palabra,


directamente desde, o hacia, la memoria, sin que tenga que pasar a
travs del procesador
Cuando la transferencia ha concluido el DMAC enva una seal de
interrupcin al procesador (TC, Terminal Count)
Arquitectura de Sistemas Paralelos (33)

Acceso directo a memoria


Implementacin (I)
Existen varias formas de realizar el acceso directo a memoria:
Memoria multipuerto: la memoria permite realizar transferencias
simultneas por parte de la CPU y el DMAC. La memoria tiene dos
puertos: uno para la CPU y otro para el DMAC. Es posible el acceso
concurrente a un mismo bloque de memoria por lo que hay que
establecer mecanismos de control
Acceso a memoria por robo de ciclo: es una solucin ms
econmica y es la utilizada habitualmente. El DMAC cada vez que
quiere tomar el control del bus del sistema para realizar una
transferencia, lo solicita a la CPU activando una seal (HOLD). La
CPU concede el control del bus (se activa la seal HLDA), el DMAC
se hace dueo del bus y realiza la transferencia. Ejemplo 80x86 y
8237:
Transferencia en bloque o rfaga
Transferencia bajo demanda
Transferencia simple
Arquitectura de Sistemas Paralelos (34)

Acceso directo a memoria


Implementacin (II)

Acceso a memoria por robo de ciclo


Arquitectura de Sistemas Paralelos (35)

Acceso directo a memoria


Implementacin (III)

La conexin del DMAC al sistema puede realizarse de varias formas


diferentes:
Bus nico, DMA independiente: El mdulo de DMA acta como un
procesador suplementario. Es econmica pero ineficiente: la
transferencia de cada palabra consume dos ciclos de bus
Bus nico, DMA-E/S: El nmero de ciclos de bus necesarios puede
reducirse sustancialmente si se integran las funciones de DMA y E/S
(el camino entre el DMA y los mdulos de E/S no incluye al bus del
sistema)
Bus de E/S: El concepto anterior puede llevarse algo ms lejos
conectado los mdulos de E/S a un mdulo de DMA mediante un bus
de E/S. Se reduce a uno el nmero de interfaces de E/S en el mdulo de
DMA y es una configuracin fcilmente ampliable

Arquitectura de Sistemas Paralelos (36)

Acceso directo a memoria


Implementacin (IV)
Bus nico,
DMA independiente

Bus nico,
DMA-E/S

Bus de E/S

Arquitectura de Sistemas Paralelos (37)

Acceso directo a memoria


Ejemplo de mdulo de DMA: DMAC 8237 (I)

El 8237 es un controlador de DMA de 4 canales programables en 3 modos


diferentes, con posibilidad de ser conectado en cascada y que adems de las
funciones tradicionales soporta tambin transferencias memoria-memoria
El bus de datos es de 8 bits y el de direcciones de 16 bits (requiere un latch
externo porque est multiplexado para ahorrar pines)
Cuando se usa con la familia 80x86 es necesario un latch (registro de pgina) que
almacene los 4 bits superiores de la direccin del 80x86 en modo real (20 bits)
Modos de transferencia:
Transferencia nica: El dispositivo es programado para realizar una nica
transferencia
Transferencia de bloque: Se transfieren todas las palabras de las que consta
la transferencia
Transferencia bajo demanda: la transferencia se realiza slo mientras el
dispositivo siga solicitando el canal de DMA. Esta modalidad permite dejar
ciclos a la CPU cuando no es realmente necesario que el DMA opere
Arquitectura de Sistemas Paralelos (38)

Acceso directo a memoria


Ejemplo de mdulo de DMA: DMAC 8237 (II)

El controlador de DMA es realmente un circuito secuencial generador de


seales de control y direcciones que permite la transferencia directa de los
datos sin necesidad de registros temporales intermedios (transferencia al vuelo)
Las operaciones memoria-memoria precisan de un registro temporal
intermedio, por lo que son al menos dos veces ms lentas que las de E/S
(permiten chequeos para finalizar transferencias)
Cuando el 8237 est inactivo permanece desconectado de los buses del
sistema; cuando se produce una peticin de DMA por parte de un dispositivo
(con DREQi se pide y con DACKi se confirma), genera una solicitud para
apropiarse del bus (HRQ), espera confirmacin (HLDA) y a continuacin
genera las seales necesarias para realizar la transferencia. Cuando acaba
genera una interrupcin (TC, Terminal Count)
Dispone de esquemas de prioridad fija (DREQ0 ms prioritaria) y rotativa
La operacin que realiza el 8237 es consecuencia de la programacin realizada
previamente en los registros de comando, modo, base de direccin y contador
de palabras a transferir
Arquitectura de Sistemas Paralelos (39)

Ejemplo de mdulo de DMA: DMAC 8237


Sistema basado en un 8237

Arquitectura de Sistemas Paralelos (40)

Acceso directo a memoria


Ejemplo de programacin
void main () {
void interrupt (*manejador_antiguo)();
...
inicializar_periferico_X();
inicializar_DMA (dir, tam, tipo, ...);
antiguo=getvect(INT_FIN_TRANS);
disable(); /* Se deshabilitan mientras se manipulan
los vectores de interrupcion */
setvect(INT_FIN_TRANS, manejador_fin_trans);
enable ();
...
disable();
setvect(INT_FIN_TRANS, manejador_antiguo);
enable (); }
void interrupt manejador_fin_trans () {
/* Se comprueban los posibles errores de la transferencia */ ...}

Arquitectura de Sistemas Paralelos (41)

Mtodos de E/S
Resumen

Arquitectura de Sistemas Paralelos (42)

Ejemplo de dispositivo de E/S


Interfaz Perifrico Programable 8255

Caractersticas
Diagrama de bloques
Direcciones y registros de control
Modos de funcionamiento:
Modo 0 (E/S programada)
Modo 1 (E/S por interrupciones)
Modo 2 (E/S bidireccional)

Emulacin interfaz centronics (puerto paralelo impresora)


mediante un 8255
Arquitectura de Sistemas Paralelos (43)

Interfaz Perifrico Programable 8255


Caractersticas
Dispone de tres puertos de E/S (A, B y C):
dos de tamao byte (A y B) y uno de tamao
2x4 bits (C) con control bit a bit
Los puertos pueden ser configurados como
entrada, salida o bidireccionales
Dispone de lneas de protocolo
Arquitectura de Sistemas Paralelos (44)

Interfaz Perifrico Programable 8255


Diagrama de bloques

Arquitectura de Sistemas Paralelos (45)

Interfaz Perifrico Programable 8255


Direcciones y registros de control

Arquitectura de Sistemas Paralelos (46)

Interfaz Perifrico Programable 8255


Modo 0 (E/S Programada)
Se utilizan los tres puertos (A,B,C) como simples registros
donde leer y escribir. La CPU y el/los dispositivo/s externo/s
correspondiente/s se encarga/n de leer/escribir de acuerdo a un
determinado protocolo previamente definido
El puerto A (8 bits) se configura como entrada o salida con el bit
D4 del registro de control
El puerto B (8 bits) se configura como entrada o salida con el bit
D1 del registro de control
El puerto C alto (4 bits) se configura como entrada o salida con el
bit D3 del registro de control
El puerto C bajo (4 bits) se configura como entrada o salida con el
bit D0 del registro de control
Arquitectura de Sistemas Paralelos (47)

Interfaz Perifrico Programable 8255


Cronograma Modo 0

Arquitectura de Sistemas Paralelos (48)

Interfaz Perifrico Programable 8255


Modo 1 (E/S por interrupciones)
En este modo se utiliza el protocolo Handshake
El puerto A (8 bits) se configura como entrada o salida con el
bit D4 del registro de control
El puerto B (8 bits) se configura como entrada o salida con el
bit D1 del registro de control
El puerto C contiene las seales del protocolo
Arquitectura de Sistemas Paralelos (49)

Interfaz Perifrico Programable 8255


Modo 1 (E/S por interrupciones). Configuracin de entrada
Seales de protocolo cuando el puerto est configurado como entrada

STBA (strobe input): Un cero en esta lnea de entrada indica


que hay dato disponible en el puerto A (activada por el
dispositivo externo)
IBFA (input buffer full): Un uno en esta lnea de salida indica
que el dato ya ha sido cargado en el registro del puerto A.
IBFA se desactiva cuando se desactiva STBA (el dispositivo
externo da su confirmacin) y se produce el flanco de subida
de la seal RD (dato ledo por la CPU)
Las seales STBB , IBFB son funcionalmente equivalentes

Arquitectura de Sistemas Paralelos (50)

Interfaz Perifrico Programable 8255


Modo 1 (E/S por interrupciones) Configuracin de salida
Seales de protocolo cuando el puerto est configurado como salida

OBFA (output buffer full): esta lnea de salida se pone a cero


(activa en baja) para indicarle al dispositivo que la CPU ha
escrito un dato en el puerto A. Se activa con el flanco de
subida de la seal WR (escritura finalizada) y se desactiva
con la confirmacin del dispositivo (ACKA)
ACKA (acknowledge input): un cero en esta entrada indica
que los datos del puerto A han sido ledos por el
dispositivo externo. Esencialmente es una respuesta del
dispositivo perifrico indicando que ha sido recibido el
dato enviado por la CPU
Las seales OBFB y ACKB son funcionalmente equivalentes
Arquitectura de Sistemas Paralelos (51)

Interfaz Perifrico Programable 8255


Modo 1 (E/S por interrupciones). Interrupciones

Seales de interrupcin se pueden generar en los puertos A y B tanto si


estn configurados como entrada (la CPU debe leer un dato) como si lo
estn como salida (la CPU ya puede escribir un nuevos dato)
El bit 4 del puerto C (PC4) es el bit de habilitacin de interrupcin del
puerto A (INTEA) cuando est configurado como entrada y el PC6 cuando
lo est como salida. El del puerto B (INTEB) es el bit 2 (PC2).
Para que el 8255 genere una interrupcin asociada al puerto A (seal
INTRA) cuando est configurado como entrada, se debe cumplir que:
STBA es 1, IBFA es 1 e INTEA es 1
(semejante para el puerto B)
Para que el 8255 genere una interrupcin asociada al puerto A (seal
INTRA) cuando est configurado como salida, se debe cumplir que:
ACKA es 1, OBFA es 1 e INTEA es 1
(semejante para el puerto B)

Arquitectura de Sistemas Paralelos (52)

Interfaz Perifrico Programable 8255


Modo 1 (E/S por interrupciones). Registros y seales

Arquitectura de Sistemas Paralelos (53)

Interfaz Perifrico Programable 8255


Cronograma Modo 1
1
2

5
3
4

Comienzo de la
ejecucin de los
manejadores de
interrupcin

Arquitectura de Sistemas Paralelos (54)

1
2

4
5
3

Interfaz Perifrico Programable 8255


Modo 2 (E/S bidireccional)
El PUERTO A funciona de forma bidireccional. Es como un doble
modo 1. El PUERTO B no tiene este modo
Los cinco lneas superiores del puerto C contienen las seales de
protocolo
Seales de protocolo
(semejantes a las descritas en el modo 1)

STB (strobe input)


IBF (input buffer full)
ACK (acknowledge)
OBF (output buffer full)
INTR
Arquitectura de Sistemas Paralelos (55)

Interfaz Perifrico Programable 8255


Modo 2 (E/S bidireccional). Registro y seales

Arquitectura de Sistemas Paralelos (56)

Interfaz Perifrico Programable 8255


Cronograma Modo 2

Arquitectura de Sistemas Paralelos (57)

Interfaz Perifrico Programable 8255


Emulacin interfaz centronics (puerto paralelo impresora)

Arquitectura de Sistemas Paralelos (58)

Operaciones de E/S desde el SO


El S.O. Linux y la programacin de drivers

El kernel de Linux ofrece una interfaz de programacin que facilita la


creacin de drivers, de manera que el diseador debe mapear llamadas al
sistema independientes del driver de carcter estndar con operaciones
especficas del driver
Una caracterstica interesante de esta interfaz de programacin es que los
drivers pueden ser implementados fuera del kernel y aadidos a ste en
tiempo de ejecucin
La distincin entre mecanismos (capacidades que se ofrecen) y poltica (uso
de esas capacidades) es una de las mejores ideas aplicadas al diseo de
sistemas UNIX
Esta idea se aplica al diseo de drivers: drivers libres de poltica (driver para
un floppy). El objetivo es programar cdigo para el kernel que permita el
acceso al dispositivo sin forzar ninguna poltica puesto que diferentes
usuarios pueden tener necesidades diferentes (acceso flexible, sin
restricciones)
Arquitectura de Sistemas Paralelos (59)

El S.O. Linux y la programacin de drivers


El kernel de Linux

Arquitectura de Sistemas Paralelos (60)

El S.O. Linux y la programacin de drivers


Programacin del kernel: Mdulos
Una de las caractersticas ms significativas de Linux es la
posibilidad de ampliar la funcionalidad del kernel en
tiempo de ejecucin
El cdigo que se aade al kernel en tiempo de ejecucin se
denomina mdulo
El kernel de Linux ofrece soporte para diferentes tipos de
mdulos incluido los drivers, aunque no limitados a ellos
Clases de dispositivos y mdulos
Dispositivos de caracteres
Dispositivos de bloque
Interfaces de red

Arquitectura de Sistemas Paralelos (61)

Programacin del kernel: Mdulos


Mdulos vs Aplicacin
Aplicacin

Mdulo

Ejecuta una tarea desde que


comienza hasta que acaba
Puede utilizar funciones que
no han sido definidas por
ella, linkando con las
libreras adecuadas (printf)
Se ejecutan en el espacio de
usuario

Permite atender solicitudes


de procesos en ejecucin
Puede usar slo las funciones
que el kernel exporta (printk)

Se ejecuta en el espacio del


kernel

Los mdulos que se encuentran cargados en un momento dado pueden conocerse con el
comando lsmod o cat /proc/modules
Los dispositivos del sistema pueden conocerse con el comando cat /proc/devices
Arquitectura de Sistemas Paralelos (62)

Programacin del kernel: Mdulos


Espacio de usuario y espacio del kernel

Una de las tareas de un S.O. es proteger de accesos no autorizados a los


diferentes recursos del sistema
Esta tarea del S.O. requiere un componente hardware de proteccin en el
procesador: diferentes niveles con funciones diferentes y operaciones no
permitidas en niveles inferiores (todos los actuales procesadores disponen de
al menos dos niveles)
Los sistemas Unix utilizan dos niveles de proteccin:
Modo superusuario: en el que se ejecuta el kernel (todo est permitido)
Modo usuario: en el que se ejecutan las aplicaciones (se evitan accesos
directos al hardware y accesos a memoria no autorizados)
Habitualmente se denominan espacio del kernel y espacio de usuario
La aplicaciones y los mdulos del kernel tienen mapas de memoria diferentes.
Se requieren funciones para realizar transferencias de datos de uno a otro. Ej:
copy_to_user y copy_from_user
El espacio del kernel a diferencia del de usuario es nonswappable (no
paginable) y nonpreemptive (de ejecucin no concurrente)
Arquitectura de Sistemas Paralelos (63)

El S.O. Linux y la programacin de drivers


Puertos de E/S y E/S mapeada en memoria

Un dispositivo perifrico es controlado mediante operaciones de


lectura/escritura sobre sus registros internos
Desde el punto de vista del hardware no hay diferencias conceptuales entre que
estos registros estn mapeados en E/S o en memoria (cat /proc/ioport y cat
/proc/iomem)
Para evitar los problemas de los efectos colaterales en la E/S mapeada en
memoria:
el espacio de memoria del dispositivo debe ser configurado como memoria no
cacheable (ej: opcin en el espacio de configuracin de los dispositivos PCI)
deben utilizarse memory barriers (ej: rmb, wmb, y mb)

Existen funciones para leer y escribir en los puertos una palabra (operaciones
simples) o ms (operaciones complejas). Ej: inb, outb, insb, ..
Existen funciones para leer y escribir en memoria (operaciones simples y
complejas). Ej: readb, writeb, memcpy_fromio, memcpy_toio,
Algunas plataformas reservan un espacio de memoria no paginable para la E/S
mapeada en memoria (no ocurre en ISA/PCI x86). Si el acceso a la memoria
asignada est virtualizado se requiere el uso de funciones especiales (ioremap y
iounmap)
Arquitectura de Sistemas Paralelos (64)

El S.O. Linux y la programacin de drivers


Gestin de interrupciones (I)
El Linux existen dos tipos de interrupciones:
Rpidas: Deben ser rpidamente atendidas, pues su ejecucin se realiza con
todas las interrupciones deshabilitadas (interrupcin de un timer)
Lentas: Se ejecutan con todas las interrupciones habilitadas excepto la que
est siendo servida, por lo que su tratamiento puede consumir ms tiempo

Para que un mdulo pueda atender las solicitudes de interrupcin de un


determinado canal debe asignarle un manejador de interrupcin cuando
se carga el mdulo (request_irq) y desasignrselo cuando se descarga
(free_irq)
Mediante el comando cat /proc/interrupts se saben las IRQs asociadas a
cada dispositivo
Mediante el comando cat/proc/stat se sabe las veces que se ha ejecutado
una IRQ
Existen funciones para habilitar y deshabilitar las interrupciones: sti, cli,
enable_irq, diable_irq,
Arquitectura de Sistemas Paralelos (65)

El S.O. Linux y la programacin de drivers


Gestin de interrupciones (II)
El problema que presenta la gestin de interrupciones es que no pueden
realizarse tareas demasiado largas en el manejador
El manejador necesita acabar cuanto antes para desbloquear las
interrupciones (sobre todo en las rpidas)
Solucin: Dividir la funcionalidad del manejador en dos rutinas: top-half
y bottom-half
La diferencia principal entre ellas es que todas las interrupciones estn
habilitadas durante la ejecucin de la rutina bottom-half
La rutina top-half (manejador) realizar lo qu debe hacerse de manera
inmediata (operacin de E/S) mientras que la rutina bottom-half har el
resto (procesado de la informacin)
Existen diferentes formas de que el kernel comience la ejecucin de la
rutina bottom-half (se establecen colas)
En la rutina de interrupcin (top-half) hay que insertar la tarea
planificada (rutina bottom-half) en una de las colas de tareas e indicarle
al kernel que la tarea est lista para su ejecucin
Arquitectura de Sistemas Paralelos (66)

You might also like