Transcript e/s asignada en memoria
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 al bus del sistema Líneas de datos Registro de datos Registro de estado/control Interfaz a dispositivo externo Lógica del interfaz a dispositivo externo Datos 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
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
E/S programada
Con interrupciones
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 Disp.
E/S DMA Disp.
E/S Bus del sistema Controlador DMA Disp.
E/S Memoria Principal 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 CPU Controlador DMA Memoria Principal Bus E/S Disp.
E/S Disp.
E/S Disp.
E/S 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