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
 Arbitraje del bus (también es una interrupción vectorizada)
 El módulo debe disponer de control del bus previamente a solicitar la
interrupción. Sólo un módulo puede activar la línea en un instante
 Cuando la CPU reconoce la interrupción, responde mediante la línea de
reconocimiento de la interrupción
 El módulo sitúa su vector 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
Canales de E/S
 Los dispositivos de E/S se han ido complicando con el
paso del tiempo. Ejemplo: tarjetas gráficas 3D
 Evolución temporal:
La CPU controla directamente al periférico
Se añaden módulos de E/S. Se usa E/S programada
Igual que el anterior, pero con interrupciones. Aumenta eficacia
El módulo de E/S tiene acceso directo a memoria
 El módulo de E/S mejora, con su propio repertorio de
instrucciones orientados a E/S. La CPU se “desentiende” y deja
trabajar al módulo. Sólo es avisada cuando se acaba la secuencia
El módulo de E/S tiene su propia memoria local. Es un
computador en sí mismo. Se controla un amplio abanico de
dispositivos sin la intervención de la CPU
 Asumir cada vez más competencia lleva a que se hable de
Canal de E/S, en general, más que módulo de E/S
Características de los canales de E/S
Es una ampliación del concepto de DMA
Ejecuta instrucciones de E/S, liberando a la CPU
La CPU se limita a mandar al canal de E/S que
ejecute un programa en memoria principal
El programa especifica dispositivos, área de
memoria, prioridad y acciones en caso de error
El canal de E/S sigue las instrucciones y controla
la transferencia de datos
Interfaz externa
 Se adapta a la naturaleza del dispositivo
 Paralelo, varias líneas a la vez
 Serie, una sola línea
 Diálogo con el periférico
 Módulo E/S envía señal de control solicitando permiso para mandar o
leer datos
 El periférico reconoce la solicitud
 El módulo transfiere los datos
 El periférico reconoce la recepción o envío de datos
 Se necesita un registro interno (buffer) para almacenar datos, que
compense la diferencia de velocidades
 Tipos de conexiones:
 Conexión punto a punto: línea de E/S entre módulo y dispositivo.
Ejemplo: teclados, impresora, módem externo
 Conexión multipunto: Interfaz SCSI y FireWire
Interfaz SCSI
(Small Computer System Interface)
Interfaz paralelo para CD-ROM, equipos de audio
y almacenamiento masivo
Líneas de datos de 8, 16 y 32 bits
Conexión en forma encadenada (daisy chain)
Conectores independientes de entrada y de salida
Los dispositivos se conectan en cadena entre sí y
con el computador anfitrión (host) en un extremo
Los dispositivos funcionan independientemente y
pueden intercambiar datos entre ellos
SCSI - 1
Principio de los 80’s
8 bits
Frecuencia de reloj: 5 MHz
Velocidad de transferencia: 5MBytes/sg
Hasta siete dispositivos en cadena
Ocho si se incluyen el computador host
SCSI - 2
1991
Expansión a 16 y 32 bits
Frecuencia de reloj: 10MHz
Velocidad de transferencia: 20 o 40 Mbytes/sg
Señalización SCSI
Entre iniciador y destino: habitualmente, el
iniciador es el host, y el destino es el dispositivo
Bus libre: ningún dispositivo está usando el bus
Arbitraje: permite a un dispositivo tomar el control
de bus para iniciar o reanudar un proceso de E/S
Selección: el iniciador elige un destino para leer o
escribir
Reselección: permite que un dispositivo
seleccionado se vuelva a conectar al iniciador para
reanudar una operación previa que ha sido
suspendida
Señalización SCSI (continuación)
Orden: el destino puede pedir una orden de
información al iniciador
Solicitud de datos: el dispositivo puede solicitar la
transferencia de un dato de dispositivo a iniciador
o viceversa
Estado: permite que el dispositivo solicite que se
envíe la información de estado desde el
dispositivo al iniciador
Mensaje: permite que el dispositivo solicite la
transferencia de uno o más mensajes desde el
iniciador al dispositivo o viceversa
Fases en un bus SCSI
Después de conectarse al sistema o reinicio, el bus pasa a la fase de bus libre
A continuación se pasa a arbitraje, un dispositivo toma el control del bus
Si el arbitraje falle, el bus vuelve a la fase de bus libre
Cuando el arbitraje termina con éxito, se pasa a la fase de selección, donde
se designa un iniciador y un dispositivo para realizar la transferencia
Inicio
Bus
libre
Arbitraje
(Re) Selección
Órdenes,
Datos,
Estado,
Mensaje
Fases en un bus SCSI (continuación)
 Se producen una o más fases de transferencia de información entre
iniciador y dispositivo (orden, datos, estados y mensajes)
 Finalmente, fase de entrada de mensaje, después mensaje de desconexión
al iniciador y fase de bus libre
Inicio
Bus
libre
Arbitraje
(Re) Selección
Órdenes,
Datos,
Estado,
Mensaje
Especificación del SCSI-1
18 líneas de señal
9 líneas de datos
9 líneas de control
Líneas de control del SCSI-1
 BSY: usada para indicar que el bus está ocupado
 SEL: usada por el iniciador para seleccionar el dispositivo que debe
responder a una orden
 C/D: usada por el dispositivo para indicar si el contenido del bus de
datos son órdenes (COMMAND) o datos (DATA)
 I/O: usada por el dispositivo para indicar si entran o salen datos
 MSG: usada por el dispositivo para indicar que está transfiriendo un
mensaje
 REQ: usada por el dispositivo para solicitar una transferencia de
información
 ACK: usada por el iniciado para reconocer la señal REQ del
dispositivo
 ATN: usada por el iniciador para indicar que hay un mensaje
disponible para transferir
 RST: usada para inicial el bus
Bus serie FireWire
Bus serie de altas prestaciones. IEEE 1394
Rápido: 100 MHz
Barato
Fácil de implementar
Usado también en electrónica de consumo
Cámaras digitales
Videograbadores
Televisores
Configuración FireWire
 Configuración en cadena “Daisy chain”
 Hasta 63 dispositivos a un único puerto
64 incluyendo a la propia interfaz
 Hasta 1022 buses pueden conectarse con adaptadores
(bridges)
 Se pueden conectar y desconectar periféricos sin tener
que reconfigurar el sistema
 No es necesario fijar manualmente los identificadores de
los dispositivos ni tener en cuenta la posición relativa de
los mismos
 Puede tener estructura de árbol
Las 3 capas del FireWire
Física
Define los medios de transmisión y características
eléctricas y señales
Enlace
Describe la transmisión de datos mediante paquetes
Transacción
Define el protocolo de petición/respuesta ocultando a
las aplicaciones los detalles de las capas inferiores
Capa física
 Velocidades binarias de 25 a 400Mbps
 Dos formas de arbitraje. La forma más simple:
Basada en estructura de árbol
El nodo (raíz) actúa como árbitro central
Primero que llega, primero que se atiende
 En caso de solicitudes simultáneas, se aplica la prioridad
natural, que consiste en que se atiende antes la que está más
cerca del nodo raíz, y en caso de igual distancia, la que tenga
un identificador menor
Funciones adicionales:
Arbitraje equitativo: evita que uno o más dispositivos de alta
prioridad monopolicen el uso del bus
Arbitraje urgente: algunos dispositivos pueden tener prioridad
urgente, que les permite acceder al bus mayor porcentaje de
tiempo
Capa de enlace
 Define la transmisión de datos en forma de paquetes
 Dos tipos de transmisiones
Asíncrona
Un paquete con una cantidad variable de datos y varios
bytes
A direcciones explícitas
Devuelve información de reconocimiento
Isócrona
Una cantidad variable de datos, con paquetes de tamaño
fijo, a intervalos regulares
Direccionamiento simplificado
No usa reconocimiento
Descargar

Entrada Salida curso 2008/09