Registros del 8237-5
Para entender cómo se transfieren realmente los datos, necesitamos entender los registros internos del 8237A que se usan para almacenar direcciones de memoria, cuentas de bloque, modos, comandos y estados. Cada canal de DMA tiene una palabra de modo de 6 bits y cuatro registros de 16 bits asociados con él, a saber una cuenta y dirección actual, y una cuenta y dirección base.
La dirección base (de inicio) y cuenta (número de bytes a transferirse) se envían al DMA antes de que tome lugar una operación y automáticamente inicialice la dirección actual y registros cuenta a los mismos valores. Después de que cada byte se transfiere, la dirección actual se incrementa o decrementa (dependiendo de si el bit 5 de la palabra de modo del canal es 0 ó 1), y la cuenta actual se decrementa. La transferencia continua hasta que۳۽۾la cuenta actual llega a cero (cuenta FINAL), o hasta que el ”pin” se pone a “0” por algún dispositivo externo.
Los registros base mantienen los valores iniciales de los registros actuales correspondientes para que cuando la cuenta actual se decrementa a 0 los registros actuales se pueden recargar automáticamente si el bit 4 del registro de modo del canal esta coloca a “1”. Los bits 3 y 2 del registro de modo especifican transferencia de lectura (10) o escritura (01), y los bits 7 y 6 especifican uno de cuatro posibles modos de transferencia: demanda (00), individual (01), bloque (10) y cascada (11). Los bits 1 y 0 especifican el número de canal.
El registro de estado se puede leer a partir del CPU para determinar qué canales tienen peticiones DMA pendientes y cuales canales han alcanzado su cuenta final. Para tazas de transferencia substancialmente menores que un byte por ciclo de máquina (4 periodos de reloj), es deseable el modo de transferencia individual.
Esto transfiere un solo byte por activación de la línea DREQ del canal. El modo de transferencia de bloque se usa cuando el dispositivo E/S puede operar cercanamente tan rápido o más que el controlador DMA. Si el dispositivo E/S es un poco más lento que el controlador DMA, puede poner la línea READY del C. I. 8237 a “1”, originando que el C. I. 8237 inserte estados de espera en el ciclo del bus.
Finalmente, hay tres registros de control adicionales en el C. I. 8237: un registro de máscara de canal que permite a los canales individualmente ser deshabilitados, un registro de petición de canal que permite a un programa (en lugar de la línea DREQ) iniciar una petición DMA, y un registro de comando.
El controlador de DMA 8237-5 que se usa en las computadoras actuales tiene cuatro canales DMA. Dos de los cuales se utilizaron en el diseño de la computadora, el canal 0 se usa en la función de refresco de memoria dinámica de la unidad del sistema, y el canal 2 se usa para transferir datos entre el controlador de disco flexible y memoria. Los canales 1, 2 y 3 están disponibles en el bus para uso de interfaces instaladas en las ranuras de tarjeta del bus. El BIOS de la computadora inicializa el DMA tal que el canal 0 tiene la más alta prioridad y el canal 3 tiene la más baja.
El 8237-5, una versión del 8237A, tiene 16 direcciones de registro de puerto E/S de lectura/escritura que contienen tanto los datos de inicialización como estado del dispositivo. La computadora decodifica al 8237-5 tal que las direcciones de puerto residen en el rango de 0000H a 000FH. Las direcciones de puerto están divididas en dos grupos: las direcciones 0000H a 0007H son registros de lectura-escritura que contienen las direcciones de memoria de inicio de DMA para cada canal, dirección de memoria actual para el siguiente ciclo DMA en cada canal, y la cuenta byte actual de cada canal. El segundo grupo de direcciones de puerto E/S, de 0008 a 000FH, contiene los registros de estado y control que define la operación de cada canal.
La tabla siguiente muestra la función de cada una de las direcciones en el rango de 0008H a 000FH. Las funciones son diferentes para lectura y escritura, así, típicamente no es posible leer los contenidos de registros sólo de escritura.
Fuente: Apuntes de Arquitectura de computadoras de la FCA de la UNAM