Connect with us

Tutoriales Varios

Bus de direcciones. Dispositivo DMA (Direct Memory Access)

Antes de empezar a hablarles sobre lo que son los métodos y técnicas de entrada y salida de datos debemos conocer los principios de estas por lo cual es conveniente hablar sobre el medio de transporte de la información, tal y como lo es el bus de direcciones, para que una vez comprendido el concepto de este nos sea mas fácil entender los términos y el contenido en general sobre la entrada y salida de datos

Bus de direcciones

Es utilizado por el microprocesador para señalar la celda de memoria (o el dispositivo de E/S) con el que se quiere operar. El tipo de operación será de lectura o de escritura y los datos implicados viajarán por el bus de datos.

Por él circula la expresión binaria de la dirección de memoria a la cual el microprocesador quiere acceder. Tiene sentido de flujo unidireccional desde el microprocesador hacia la memoria. Una vez localizados los datos perdidos, su transmisión hacia el microprocesador (o hacia donde sea) se hará a través del bus de datos.

Los dispositivos de E/S intercambian la información con el microprocesador mediante los puertos de E/S. Cada puerto está asociado con un determinado dispositivo y tiene una dirección que lo identifica.

El ancho de este bus también es una medida de la potencia del microprocesador, ya que determina la cantidad de memoria a la que éste puede acceder, es decir, la cantidad de espacio direccionable. El espacio de direcciones es el rango de valores distintos que el microprocesador puede seleccionar. La cantidad máxima de direcciones disponibles será 2 a la n, siendo n el número de líneas del bus de direcciones.

Módulo de E/S

 

  • Cada controlador está a cargo de un tipo específico de dispositivo.

  • Dependiendo del controlador, pueden ester varios dispositivos conectados al mismo controlador.

  • El controlador se encarga de mover datos entre el dispositivo periferico que controla y el buffer de almacenamiento local. El tamaño del buffer varía de un controlador a otro y depende del dispositivo que controla.

Son posibles tres técnicas para las operaciones de E/S:

  • E/S programada 

  • E/S mediante interrupciones 

  • DMA

E/S Programada

Los datos se intercambian entre el CPU y el módulo de E/S. El CPU ejecuta un programa que controla directamente la operación de E/S, incluyendo la comprobación del estado del dispositivo, el envío de la orden de lectura o escritura y la transferencia del dato. Cuando el CPU envía la orden debe esperar hasta que la operación de E/S concluya. Si el CPU es más rápido, éste estará ocioso. El CPU es el responsable de comprobar periódicamente el estado del módulo de E/S hasta que encuentre que la operación ha finalizado.

Normalmente habrá muchos dispositivos de E/S conectados al sistema a través de los módulos de E/S. Cada dispositivo tiene asociado un identificador o dirección. Cuando el CPU envía una orden de E/S, la orden contiene la dirección del dispositivo deseado.

 

E/S mediante Interrupciones

El problema con E/S programada es que el CPU tiene que esperar un tiempo considerable a que el módulo de E/S en cuestión esté preparado para recibir o transmitir los datos. El CPU debe estar comprobando continuamente el estado del módulo de E/S. Se degrada el desempeño del sistema.

Una alternativa es que el CPU tras enviar una orden de E/S continue realizando algún trabajo útil. El módulo de E/S interrumpirá al CPU para solicitar su servicio cuando esté preparado para intercambiar datos. El CPU ejecuta la transferencia de datos y después continua con el procesamiento previo.

Se pueden distinguir dos tipos: E/S síncrona y E/S asíncrona

  • E/S Síncrona: cuando la operación de E/S finaliza, el control es retornado al proceso que la generó. La espera por E/S se lleva a cabo por medio de una instrucción wait que coloca al CPU en un estado ocioso hasta que ocurre otra interrupción. Aquellas máquinas que no tienen esta instrucción utilizan un loop. Este loop continua hasta que ocurre una insterrupción transfiriendo el control a otra parte del sistema de operación. Sólo se atiende una solicitud de E/S por vez. El sistema de operación conoce exactamente que dispositivo está interrumpiendo. Esta alternativa excluye procesamiento simultáneo de E/S.

  • E/S Asíncrona: retorna al programa usuario sin esperar que la operación de E/S finalice. Se necesita una llamada al sistema que le permita al usuario esperar por la finalización de E/S (si es requerido). También es necesario llevar un control de las distintas solicitudes de E/S. Para ello el sistema de operación utiliza una tabla que contiene una entrada por cada dispositivo de E/S (Tabla de Estado de Dispositivos).

  • La ventaja de este tipo de E/S es el incremento de la eficiencia del sistema. Mientras se lleva a cabo E/S, el CPU puede ser usado para procesar o para planificar otras E/S. Como la E/S puede ser bastante lenta comparada con la velocidad del CPU, el sistema hace un mejor uso de las facilidades.

Inicio de la Operación de E/S

  • Para iniciar una operación de E/S, el CPU actualiza los registros necesarios en el módulo de E/S.

  • El módulo de E/S examina el contenido de estos registros pare determinar el tipo de acción a ser llevada a cabo. Por ejemplo, si encuentra un requerimiento de lectura, el módulo de E/S empezará a transferir data desde el dispositivo a los buffers locales. Una vez terminada la transferencia, el módulo informa al CPU que la operación ha terminado por medio de una interrupción.

Procesamiento de la Interrupción

Cuando un dispositivo de E/S termina una operación de E/S, se produce la siguiente secuencia de eventos:

  • El dispositivo envía una señal de interrupción al procesador

  • El procesador termina la ejecución de la instrucción en curso antes de responder a la interrupción.

  • El procesador comprueba si hay alguna interrupción. Si hay alguna, envía una señal de reconocimiento al dispositivo que la originó

  • El procesador debe prepararse para transferir el control a la rutina de interrupción. Debe guardar la información necesaria para continuar con el proceso en curso en el punto en que se interrumpió. Guarda en la pila del sistema el contenido de los registros, etc.

  • El procesador carga en el PC la dirección de inicio del programa de gestión o servicio de interrupción solicitada.

  • Una vez modificado el PC, el procesador continúa con el ciclo de instrucción siguiente. Es decir, se transfiere el control a la rutina servidora de la interrupción.

  • Cuando finaliza el servicio de la interrupción, se restauran los valores de los registros.

 

Tabla de Estado de Dispositivos

Cuando el CPU recibe una interrupción que indica que se ha finalizado una operación de E/S, el sistema de operación debe saber a cuál proceso pertenece. Para esto se mantiene una tabla de estado de dispositivos. Cada entrada en la tabla contiene el tipo de dispositivo, su dirección y su estado (ocioso, ocupado, no funcionando). Si es dispositivo se encuentra ocupado, entonces el tipo de solicitud junto con otros parametros son almacenados en la tabla (lista).

Las operaciones TYPEAHEAD son un esquema usado por algunos dispositivos que permiten a los usuarios "adelantar" la entrada de datos antes de ser requeridas. Cuando sucede la interrupción de final de E/S no hay proceso que la requirió, por lo tanto se necesita un buffer para almacenar los caracteres adelantados hasta que algún programa los requiera. En general, se requiere un buffer para cada terminal de entrada.

DMA (Direct Memory Access)

La E/S con interrupciones, aunque más eficiente que la E/S programada, también requiere la intervención del CPU para transferir datos entre la memoria y el módulo de E/S.

Consideren el siguiente ejemplo. Cuando se va a leer una línea desde un terminal, el primer carácter escrito es enviado al computador. Cuando el carácter es recibido por el controlador, éste interrumpe al CPU. El CPU le da servicio a la interrupción y luego continua con el proceso que estaba ejecutando. Esto es posible cuando el dispositivo es muy lento comparado con el CPU. Entre un carácter y otro el CPU lleva a cabo gran cantidad de procesamiento. Pero qué sucede cuando estamos trabajando con dispositivos de E/S más veloces? Tendríamos interrupciones muy seguidas y se estaría desperdiciando mucho tiempo.

Para evitar esto, se utiliza DMA para dispositivos de E/S de alta velocidad. E1 controlador del dispositivo transfiere un bloque de datos desde o para sus buffers de almacenamiento a memoria directamente sin intervención del CPU. Solo se produce una interrupción por bloque en lugar de tener una interrupción por cada byte (o palabra).

Por ejemplo, un programa solicita una transferencia de datos. El Sistema de Operación busca un buffer disponible. El controlador de DMA tiene sus registros actualizados con las direcciones del fuente y del destino y la longitud de la transferencia . Por lo general esta actualización es realizada por el manejador de dispositivo (rutina). Se indica al controlador de DMA a través de bits de control en un registro de control pare que inicie la operación de E/S. Mientras tanto el CPU puede llevar a cabo otras operaciones. El controlador de DMA interrumpe el CPU cuando la transferencia ha sido terminada . El CPU interviene solo al comienzo y al final de la transferencia.

Transferencias vía DMA.

Algunos dispositivos de entrada/salida envían datos a la memoria más rápido de lo que el microprocesador puede manejar. El controlador de DMA (Direct Memory Access) es un circuito integrado dedicado que puede enviar y recibir datos más rápido que el microprocesador. Luego, dispositivos como discos ópticos y magnéticos utilizan este integrado para acceder a la memoria del sistema.

El controlador de DMA (Direct Memory Access) toma prestado los buses de datos, de direcciones y de control del sistema y envia un número programado de bytes desde un dispositivo de entrada/salida hasta la memoria. El "8237 DMA controller" es el nombre del circuito integrado que utilizan los PCs para esta función.

Cuando un dispositivo tiene un bloque de datos preparado para enviar a la memoria, envia una petición al DMA poniendo una señal DRQn a "1". Si el canal de DMA se halla disponible, el DMA enviará una señal HRQ (hold request) al microprocesador. El microprocesador responderá dejando los buses libres y enviando una señal HLDA (hold acknowledge) al DMA. Luego el DMA obtiene el control de los buses poniendo la señal AEN a nivel alto y envia la dirección de memoria a ser escrita. Despues el DMA envia la señal de DACKn (DMA acknowledge) al dispositivo. Finalmente el controlador de DMA se ocupa de manejar las señales de MEMW y IOR del bus de control. Cuando la transferencia de datos se ha completado vuelve a poner la señal HRQ a nivel bajo y el procesador recupera el control de los buses de nuevo.

Si un dispositivo necesita datos de la memoria, el proceso es similar. La única diferencia consiste en que el controlador de DMA usa las señales MEMR y IOW en el bus control.

Diginota Es una Revista On-line, Internet, tecnologías, con los trucos y Notas insólitas, extrañas y mucho más... . Proporcionamos Noticias Técnicas, Revisiones, consejos, Cómo Hacer, todo esto y mucho más. Desde el 2005. Si quieres saber más de diginota En mis redes sociales a pesar de estar en varias, Soy mas activo en Twitter y de allí dispuesto a ayudarte en lo que pueda.