Tema 7
Entrada / Salida
Problemática Entrada/Salida
Elementos claves en un computador: Procesador, memoria
y módulos de E/S
Cada módulo de E/S se conecta al bus del sistema y
controla a uno o a más periféricos
¿Por qué no se conectan directamente al bus?
Respuesta:
Amplia variedad de dispositivos con distintos funcionamientos
Diferencia importante de velocidad. El periférico mucho más lento
Diferentes formatos y tamaños de palabras
Se necesitan módulos de E/S para
Realizar la interfaz entre procesador (CPU) y memoria a través del
bus del sistema
Realizar la interfaz entre uno o más dispositivos
Dispositivos externos: clasificación
De interacción con humanos
Comunicación con el usuario. Ej: impresoras
De interacción con máquinas
Comunicación con elementos del equipo. Ej: discos
magnéticos
Comunicación
Comunicación entre dispositivos remotos. Ej: modem
Funciones del módulo de E/S
Control y temporización
Comunicación con la CPU
Comunicación con los dispositivos
Almacenamiento temporal de datos
Detección de errores
Control y temporización
La CPU pregunta al módulo de E/S sobre el
estado del dispositivo
El módulo de E/S devuelve el estado del
dispositivo
Si el dispositivo está listo, la CPU solicita la
transferencia de datos mediante una orden
El módulo de E/S obtiene un dato del dispositivo
El módulo de E/S transfiere el dato a la CPU
Comunicación con la CPU
Decodificador de órdenes. El módulo de E/S acepta
órdenes de la CPU a través del bus de control
CPU y módulo intercambian datos a través del bus de datos
Información de estado. Indica si está o no preparado el
periférico.
Reconocimiento de direcciones. Cada dispositivo de E/S
tiene una dirección (igual que las palabras de memoria)
Comunicación con los dispositivos
Intercambio de órdenes, información del estado
y datos
Almacenamiento temporal de datos
Los datos procedentes de la memoria se envían al
módulo de E/S en ráfagas rápidas
Los datos se almacenan temporalmente (buffer) en el
módulo de E/S
Los datos se envían al periférico a la velocidad del
mismo, mucho más lenta
Al almacenarse los datos, no se mantiene ocupada a la
memoria en una operación de transferencia lenta
El módulo de E/S puede trabajar a distintas velocidades
Detección de errores
El módulo de E/S suele ser el responsable de
detectar errores y avisar de los mismos
Ejemplo: papel atascado en una impresora o
pista defectuosa en un disco
También vigila los errores en la transmisión de
bits
Utiliza un bit de paridad para comprobar si ha
habido un error. Ejemplo: teclado, 7 bits de
datos + 1 bit de paridad
Diagrama del módulo de E/S
Interfaz a
dispositivo externo
Interfaz al bus
del sistema
Líneas
de datos
Lógica del
interfaz a
dispositivo
externo
Registro de datos
Registro de estado/control
Líneas
de dirección
Líneas
de control
Lógica
de E/S
Lógica del
interfaz a
dispositivo
externo
Datos
Estado
Control
Datos
Estado
Control
Técnicas de operaciones de E/S
E/S programada
E/S mediante interrupciones
Acceso Directo a Memoria (DMA)
Transferencia de E/S a
memoria a través de la CPU
Transferencia directa de E/S a
memoria
Sin interrupciones
Con interrupciones
E/S programada
E/S mediante
interrupciones
Acceso Directo a
Memoria (DMA)
E/S PROGRAMADA
La CPU tiene el control directo sobre la E/S
Comprobación del estado del dispositivo
Envío de órdenes de lectura y escritura
Transferencia de datos
La CPU espera que el módulo de E/S acabe la
operación
Si la CPU es más rápida que el módulo, se
PIERDE TIEMPO
E/S programada con detalle
Cuando la CPU está ejecutando un programa y
encuentra una interrupción relacionada con E/S, ordena
al módulo de E/S que la ejecute
El módulo de E/S realiza la acción solicitada
El módulo de E/S activa los bits adecuados en el registro
de estado
El módulo de E/S no informa directamente a la CPU ni la
interrumpe
La CPU comprueba periódicamente los bits de estado
hasta que encuentra que la operación ha terminado
Órdenes de E/S
Al ejecutar una instrucción relacionada con E/S, la CPU
proporciona una dirección especificando el módulo de E/S y
el dispositivo externo
Además, la CPU proporciona una orden, que puede ser:
Control – dice al módulo qué debe hacer
Ejemplo: rebobinar una cinta magnética
Prueba – realización de comprobaciones
Ejemplo: ¿Encendido? ¿Error?
Lectura
El módulo de E/S capta un dato de un periférico y lo sitúa en un buffer
interno (registro de datos) y la CPU pide al módulo de E/S que lo ponga
en el bus de datos
Escritura
El módulo de E/S capta un dato del bus de datos y lo transmite hacia el
periférico
Direccionamiento de dispositivos de E/S
En la E/S programada hay una estrecha relación entre
las instrucciones de E/S que la CPU capta de la memoria
y las órdenes que la CPU envía al módulo de E/S
Normalmente hay varios dispositivos de E/S conectados
al sistema a través de los módulos de E/S
Cada dispositivo tiene un único identificador o dirección
Las órdenes de la CPU contienen el identificador (la
dirección)
Cuando la CPU, la memoria principal y las E/S
comparten un bus común son posibles dos formas de
direccionamiento: asignado en memoria y aislado
Formas de direccionamiento E/S
Asignado en memoria (memory mapping)
Existe un único espacio de direcciones para las posiciones de
memoria y los dispositivos de E/S
La CPU considera a los registros de estado y de datos de los
módulos de E/S como si fueran direcciones de memoria
Utiliza las mismas instrucciones máquinas para acceder a
memoria y a direcciones de E/S
Un sola línea de lectura y una sola línea de escritura en el bus
Aislado
Líneas de lectura y escritura en memoria separadas de las líneas
de órdenes para E/S
Órdenes específicas para E/S
Comparación “asignadas en
memoria” – “aislada”
E/S ASIGNADA EN MEMORIA
Se puede utilizar un amplio repertorio de instrucciones
Ventaja frente a E/S aislada: Programación más eficiente
E/S AISLADA
Existen pocas instrucciones de E/S
Ventaja frente a E/S asignada en memoria: se aprovecha
mejor el espacio de direccionamiento de memoria
E/S MEDIANTE INTERRUPCIONES
En E/S programada, la espera de la CPU
sobrecarga el sistema y degrada las
prestaciones
Mejora: que la CPU no esté “parada” hasta que
el módulo E/S esté preparado y mientras ésta
puede seguir haciendo “algo útil”
El módulo de E/S interrumpe a la CPU cuando
esté preparado para intercambiar datos. La CPU
ejecuta la transferencia de datos
Funcionamiento básico de la E/S mediante
interrupciones, visto por el módulo de E/S
El módulo de E/S recibe una orden READ de la CPU
El módulo de E/S lee el dato desde el periférico
asociado
Una vez que el dato está en el registro de datos del
módulo de E/S, éste envía una interrupción a la
CPU a través de una línea de control y se pone a la
espera hasta la que la CPU solicite su dato
La CPU solicita dato
El módulo de E/S coloca el dato en el bus de datos
y queda preparado para futuras operaciones
Funcionamiento básico de la E/S mediante
interrupciones, visto por la CPU
La CPU envía una orden READ de lectura
Pasa a hacer “otro trabajo”
Al final de cada ciclo de instrucción, la CPU comprueba las
interrupciones
Si el módulo de E/S solicita la interrupción:
La CPU guarda el contexto del programa en curso (contador de
programa y registros de la CPU)
Procesa la interrupción
La CPU lee la palabra de datos del módulo de E/S y la
almacena en memoria
Recupera el contexto del programa que estaba ejecutando
y continúa su ejecución
Cuestiones de diseño
Puesto que puede haber muchos dispositivos,
¿cómo sabe la CPU qué dispositivo ha
provocado la interrupción?
¿Qué hacer si se solicitan varias interrupciones a
la vez?
Identificación del dispositivo
Líneas diferentes para cada módulo
Pueden ser insuficientes, hay que usar otro método
Consulta por programa (software polling). Bifurcación a una
rutina de servicio de interrupción
La CPU pregunta a cada módulo y uno de ellos le responde
Lento
Conexión en cadena (daisy chain, interrupción vectorizada)
Todos los módulos comparten una línea común para
solicitar interrupciones
El módulo que solicitó la interrupción responde colocando
una palabra (llamada vector, que es un identificador
específico) en la línea de datos
Interrupción múltiple
Líneas diferentes: cada línea de interrupción
tiene una prioridad distinta
Polling: la prioridad la determina el orden de
consulta
Daisy chain: igual que el anterior
ACCESO DIRECTO A MEMORIA (DMA)
Inconvenientes de la E/S programada y con
interrupciones: NECESITAN LA PARTICIPACIÓN
ACTIVA DE LA CPU para transferir datos entre
memoria y el módulo E/S
La velocidad de transferencia está limitada
La CPU debe dedicarse a la gestión de transferencias
de E/S
El módulo de E/S y la memoria intercambian
datos directamente, sin la intervención de la CPU
Para transferir grandes cantidades de datos, se
utiliza el DMA
Funcionamiento del DMA (I)
Se necesita un módulo adicional de hardware en
el bus del sistema
El módulo DMA toma el control de la CPU para
E/S, liberando a la CPU
Transfiera datos a / desde memoria a través del
bus del sistema
Utiliza el bus cuando la CPU no lo necesita o,
cuando necesitándolo, fuerza a que lo deje
Funcionamiento del DMA (II)
Cuando la CPU necesita leer o escribir, envía una orden
al módulo DMA, con la siguiente información:
Mediante línea de control, si se solicita lectura o escritura
La dirección del dispositivo de E/S propiamente
Dirección de comienzo para leer / escribir
Número de palabras a leer / escribir
La CPU continúa con otro trabajo
Delega en el DMA el control de la transferencia
El DMA transfiere el bloque completo de palabras, sin la
intervención de la CPU
El DMA envía una señal de interrupción a la CPU cuando
acaba la transferencia
De esta manera, la CPU sólo interviene al principio y al
final de la transferencia
Configuraciones DMA (I),
DMA independiente
Bus del sistema
CPU
Controlador
DMA
Disp.
E/S
Disp.
E/S
Memoria
Principal
Bus único, el controlador DMA usa E/S programada
Cada transferencia usa el bus dos veces
E/S a DMA y después DMA a Memoria Principal
Solución económica pero insuficiente
Configuraciones DMA (II),
DMA-E/S integrados
CPU
Controlador
DMA
Disp.
E/S
Bus del
sistema Controlador
DMA
Disp.
E/S
Memoria
Principal
Disp.
E/S
Bus único, Funciones DMA y E/S integradas
El controlador DMA puede soportar más de un dispositivo,
sin necesitar el bus
Cada transferencia usa el bus sólo una vez
DMA a Memoria Principal
Configuraciones DMA (III),
Bus de E/S
Bus del sistema
Controlador
DMA
CPU
Bus E/S
Disp.
E/S
Disp.
E/S
Disp.
E/S
Memoria
Principal
Disp.
E/S
Bus E/S separado del bus del sistema
Bus E/S soporta todos los dispositivos de E/S
El intercambio de datos entre el controlador DMA y los
dispositivos de E/S NO necesita el bus del sistema
Sólo se necesita 1 interfaz de E/S en el controlador
DMA. Configuración fácilmente ampliable