Arquitectura del controlador de DMA
La figura siguiente muestra un diagrama a bloques de un C.I. 8237A. El C.I. 8237A está configurado para hacer transferencias por DMA, teniendo el CPU que programar sus 16 registros internos a través de un conjunto de۷۽തതതതത16 puertos۷۽ ۱de E/S. La programación se hace a través de las líneas de control , y (chip select), y las líneas de datos DB0-DB7. Cuando realmente se hace una transferencia por DMA, el C.I. 8237 toma las líneas de control y dirección de la CPU y genera estas señales élۻ۳ۻmismo.ۻ۳ۻEsto es ۷۽porque ۷۽las líneas CLOCK y READY, las líneas de control , , e y las líneas de dirección están presentes.
Aunque no está indicado en la figura, las líneas de datos DB0- DB7 se convierten en las líneas de dirección A8-A15 durante la transferencia por DMA.
Dentro de cada C.I. 8237A hay cuatro canales de DMA. Cada canal se puede programar independientemente para realizar su propia transferencia por DMA, es decir, un C.I. 8237 se comporta como cuatro controladores de DMA coordinados de tal manera que en un tiempo dado sólo uno de ellos toma el control del bus.
Las líneas DREQn (solicitud de DMA) son entradas que se deben conectar a los dispositivos E/S que necesitan servicio DMA. Las líneas de salida correspondientes DACKn (reconocimiento de canal de DMA) se deben conectar a aquellos dispositivos E/S que sirven como las selecciones de integrado del dispositivo E/S. Cuando el C.I. 8237A recibe una petición de DMA desde una línea DREQn, pone a HRQ (solicitud de suspensión) en alto. Esta línea se conecta al HOLD de la CPU, causando que la CPU ponga en tercer estado sus líneas de dirección, datos y control.
La CPU le dice al 8237 que esto está hecho subiendo la línea HLDA. Cuando se ve que HLDA۳۽۾se va a alto, el C.I 8237A empieza su transferencia DMA. La línea (fin de proceso) del 8237 es bidireccional. Cuando se usa como salida, ۳۽۾ se va abajo cuando se alcanza la cuenta final, esto es, cuando el número programado۳۽۾de bytes ha sido transferido.
Cuando se usa como entrada, puede ser transferida a un nivel bajo por un dispositivo externo para terminar cualquier operación de DMA en curso.
Los canales de DMA están priorizados de tal forma que si más de una señal DREQ se presenta al mismo tiempo, solo un canal DMA a la vez se puede convertir en activo. En la computadora, los canales tienen una prioridad fija, el canal 0 tiene la prioridad más alta y el canal 7 la más baja.
Fuente: Apuntes de Arquitectura de computadoras de la FCA de la UNAM