e/s asignada en memoria

Download Report

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