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