Está en la página 1de 2

DMA

1. Primero, el controlador de disco lee el bloque (uno o ms sectores) de la unidad


en serie, bit por bit, hasta que todo el bloque se encuentra en la memoria
intermedia interna del controlador.
A continuacin, calcula la suma de comprobacin para verificar que no se hayan
producido errores de lectura. Entonces el controlador causa una interrupcin.
Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque de
disco del bfer del controlador un byte o una palabra a la vez ejecutando un
bucle, cada iteracin leyendo un byte o palabra de un registro de dispositivo
controlador y almacenndolo en la memoria principal.

2. Cuando se usa DMA, el procedimiento es diferente.


En primer lugar, la CPU programa el controlador DMA configurando sus
registros para que sepa dnde transferirlos (paso 1 en la figura 5-4).
Tambin emite un comando al controlador del disco dicindole que lea datos del
disco en su bfer interno y verifique la suma de verificacin.
Cuando hay datos vlidos en el bfer del controlador de disco, DMA puede
comenzar. El controlador DMA inicia la transferencia emitiendo una solicitud de
lectura sobre el bus al controlador de disco (paso 2). Esta solicitud de lectura se
parece a cualquier otra solicitud de lectura, y el controlador de disco no sabe (ni
le importa) si proviene de la CPU o de un controlador DMA. Normalmente, la
direccin de memoria para escribir est en las lneas de direccin del bus, por lo
que cuando el controlador de disco extrae la siguiente palabra de su bfer
interno, sabe dnde escribirla. La escritura en memoria es otro ciclo de bus
estndar (paso 3).
Cuando se completa la escritura, el controlador de disco enva una seal de
confirmacin al controlador DMA, tambin a travs del bus (paso 4). El
controlador DMA luego incrementa la direccin de memoria para usar y
disminuye el recuento de bytes. Si el recuento de bytes es an mayor que 0, los
pasos 2 a 4 se repiten hasta que el recuento llegue a 0.
En ese momento, el controlador DMA interrumpe la CPU para informarle que la
transferencia se ha completado. Cuando se inicia el sistema operativo, no tiene
que copiar el bloque de disco a la memoria; ya est all.

Apuntes:

Un DMA es un dispositivo programable. Es decir, la CPU tiene la


responsabilidad final de decirle al DMA qu hacer. Por supuesto, durante el
intervalo de tiempo donde el DMA asume el control del sistema, la CPU
cooperar permitiendo que el DMA ejecute el programa.
Bajo el control de la CPU (y del SO que la ejecuta), un DMA tiene la capacidad
de tomar el control de uno o ms buses (en plural) para facilitar la transferencia
de datos desde el controlador de disco a la memoria principal.
Durante el intervalo de tiempo en el que el DMA toma el bus (plural), el DMA
emitir comandos sobre ese bus, es decir, en lugar de su controlador habitual, es
decir, el DMA pretende que est haciendo el trabajo de la CPU.
Si la transferencia de datos involucra dos buses diferentes, el DMA puede tener
que hacer esto con un bus diferente.
Para poder mover un nmero de bytes (palabras, etc.), el DMA contiene un
contador de bucles para hacer un seguimiento de la cantidad restante de datos
que se copiarn.
Para poder escribir en la memoria principal, el DMA contiene un registro de
direccin de memoria, programable por la CPU, de modo que la CPU pueda
indicarle al DMA dnde escribir los datos.
Dependiendo del diseo del bus del sistema, el DMA puede o no tener que lidiar
con los horripilantes detalles de los ciclos de temporizacin DRAM.
rase una vez, un tiempo despus de que DMA se haba inventado, algunos
dispositivos perifricos comenzaron a pre empaquetar DMA en sus
controladores: esto se conoce como Bus Mastering. Aun as, ya sea que el DMA
se asiente en el paquete de la CPU, la placa madre o la tarjeta de E / S, debe
estar bajo el control (programacin) de la CPU, ya que de alguna manera debe
negociar el acceso al bus del sistema (plural) y la memoria principal.
Los sistemas informticos modernos tienen un subsistema dedicado llamado
controlador DRAM. Si hay uno, es casi seguro que este Controlador DRAM
tambin cumplir con la funcionalidad de DMA, es decir, parece que es un
"bucle de copiado de bytes" programable, y toda la complejidad antes
mencionada est escondida dentro del silicio de la DRAM. Controlador.

Bibliografa:

SoftwareEngineering (2015) How does a DMA controller work? (consulta: 17


de noviembre de 2017)
(https://softwareengineering.stackexchange.com/questions/272470/how-does-a-
dma-controller-work)

También podría gustarte