460 likes | 674 Views
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:
E N D
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 Datos Lógica del interfaz a dispositivo externo Registro de datos Líneas de datos Estado Registro de estado/control Control Líneas de dirección Datos Lógica de E/S Lógica del interfaz a dispositivo externo Estado Líneas de control Control
Técnicas de operaciones de E/S • 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 ú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 Bus del sistema Controlador DMA Memoria Principal Disp. E/S Disp. E/S CPU
Configuraciones DMA (II), DMA-E/S integrados Bus del sistema • 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 Controlador DMA Memoria Principal Controlador DMA CPU Disp. E/S Disp. E/S Disp. E/S
Configuraciones DMA (III), Bus de E/S Bus del sistema • 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 Controlador DMA Memoria Principal CPU Bus E/S Disp. E/S Disp. E/S Disp. E/S Disp. E/S
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
Inicio Órdenes, Datos, Estado, Mensaje Bus libre Arbitraje (Re) Selección 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 Órdenes, Datos, Estado, Mensaje Bus libre Arbitraje (Re) Selección 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
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