lunes, 26 de octubre de 2009

DMA
Ya desde su concepción inicial, los diseñadores del PC dispusieron una arquitectura que permitiese este tipo de intercambios. El mecanismo utilizado se conoce como acceso directo a memoria DMA ("Direct Memory Access"), e igual que ocurre con las excepciones, el sistema DMA dispone de algunos elementos hardware auxiliares que lo convierten en un subsistema autónomo dentro del bus externo. Estos elementos son:

* Ciertas líneas dedicadas en el bus de control .
* Un procesador específico, el DMAC ("DMA Controller"), que permite que puedan realizarse estos intercambios sin apenas intervención del procesador
.
* Pequeñas zonas auxiliares de memoria, conocidas como Registros de página
.


Líneas de control


El bus de control ( H2) tiene líneas específicas para este tipo de intercambios, de forma que el DMA es un subsistema autónomo dentro del mecanismo general de intercambio de datos y control del bus. Son las siguientes:

°Líneas DRQ1 a DRQ3 ("DMA request").
°Líneas DACK1 a DACK3 ("DMA acknowledge"). °AEN ("Access Enabled"). °DMA(MEMR, MEMW, IOR, IOW, Etc).
°MEMR ("Memory Read").
°MEMW ("Memory Write").


Controlador DMA

El mecanismo de acceso directo a memoria está controlado por un chip específico, el DMAC ("DMA Controller"), que permite realizar estos intercambios sin apenas intervención del procesador. En los XT estaba integrado en un chip 8237A que proporcionaba 4 canales de 8 bits (puede mover solo 1 Byte cada vez); sus direcciones de puerto son 000-00Fh.

Cada canal tiene asignada una prioridad para el caso de recibirse simultáneamente varias peticiones (los números más bajos tienen prioridad más alta).


Funcionamiento

El mecanismo de acceso directo a memoria DMA es bastante complejo en sus detalles, y por supuesto, el movimiento de grandes volúmenes de datos entre memoria y un dispositivo requiere cierta intervención del procesador. El movimiento se hace a ráfagas, y cada transferencia se inicia con una interrupción que obliga al procesador a suspender su tarea para permitir un nuevo intercambio. A continuación intentaremos mostrar una visión general del proceso.

Para esto dispone de dos registros para cada línea; el contador y el registro de direcciones. Según se refieran a operaciones de lectura (memoria dispositivo) o escritura (dispositivo memoria) reciben distintos nombres porque su significado difiere:

*Escritura: Dirección de inicio ("Write starting address"). Contador ("Write starting word count")
*Lectura: Dirección actual de lectura ("Read current address"). Contador ("Read remaining word count")

Modos de operación


Aunque el mecanismo de transferencia se ajusta en lo sustancial al proceso anteriormente descrito, en realidad el controlador MDAC permite varios modos de operación:

§ Sencillo ("Single")
Este modo transfiere solo un byte cada vez. Después de cada transferencia el sistema cede el control del bus y debe adquirirlo de nuevo para transmitir el siguiente. Es utilizada por dispositivos que solo pueden transmitir 1 byte cada vez a intervalos comparativamente muy largos (periféricos lentos). Por ejemplo, el primitivo controlador de disquete del PC utilizaba este modo porque su bufer era de un byte. El ciclo solicitud adquisición del bus transferencia cesión del bus, se repite cuantas veces que sean necesarias.

§ Bloque ("Block") Las transferencias se realizan en bloques (un máximo de 64 KB). Se supone que el periférico es capaz de escribir/leer los datos a velocidad sostenida, porque una vez iniciada la transferencia, continúa hasta que se completa. En caso necesario el periférico puede solicitar una pausa momentánea mediante la línea CHRDY del bus ( 2), pero en general los dispositivos lentos utilizan el modo anterior.

§ Demanda ("Demand")
Como en el caso anterior, la transferencia se realiza en bloques, pero solo tiene lugar mientras el dispositivo mantiene activada la línea de "Petición" correspondiente (DRQ). En cuanto la desactiva, el DMAC cesa la transferencia y devuelve el control del bus al procesador. Si el dispositivo necesita transferir más datos debe solicitar otra transferencia.

§6.4 Cascada ("Cascade")
El procedimiento de transferencia descrito anteriormente, corresponde al primitivo sistema DMA ISA. Es conocido como DMA de tercer elemento ("Third party"), en relación a que en el proceso intervienen tres miembros: El dispositivo que envía los datos, el que los recibe y el controlador DMAC que sería el tercero (observe que en realidad, los datos NO pasan por él). Este enfoque pronto se mostró insuficiente para controlar los intercambios con dispositivos de alta velocidad, de forma que se arbitraron nuevas soluciones. El bus mastering o DMA de primer elemento ("First party"), llamado así en relación a que es el dispositivo que realiza el intercambio de datos (con la memoria) el que toma directamente el control del bus en lugar de hacerlo el controlador DMAC. En consecuencia, debe controlar las señales necesarias del bus (MEMR, MEMW, IOR, IOW, Etc).
Este procedimiento permite encadenar entre sí varios dispositivos DMA, y fue precisamente esta capacidad, la utilizada en el diseño del AT para añadir el segundo controlador. DMAC#2 se colocó en cascada con la línea 4 del DMAC#1. Cuando el DAMC#1 recibe una petición por el canal 4, cede el control del bus al dispositivo peticionario, el DMAC#2.

§ Autoinicialización ("Autoinicialize")
En esta forma las transferencias se realizan al modo Sencillo o Demanda, pero cuando la UCP vuelve a tomar el control y el dispositivo está listo para enviar o recibir nuevos datos, no es necesario reprogramar la siguiente transferencia. Si se estaban transfiriendo datos desde el dispositivo a un bufer de memoria, la UCP puede seguir añadiendo datos al bufer a continuación de los últimos transmitidos. Si era una transferencia de de datos desde un bufer hacia el dispositivo, la UCP puede seguir leyendo datos desde la última posición de leída y escribiéndolos en el dispositivo.
Esta técnica se utiliza con dispositivos que tienen bufers pequeños. Por ejemplo, dispositivos de audio. Supone cierta sobrecarga para la UCP, pero es la única forma de eliminar el retardo existente entre el momento en que termina una transferencia y se reprograma la siguiente.

http://zator.com/Hardware/H2_3.htm

No hay comentarios:

Publicar un comentario