ACCESO DIRECTO DE MEMORIA

lunes, 26 de octubre de 2009

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.

Comments

No response to “ACCESO DIRECTO DE MEMORIA”
Post a Comment | Enviar comentarios (Atom)

Publicar un comentario