Memoria de acceso directo


El acceso directo a la memoria ( DMA ) es una característica de los sistemas informáticos que permite que ciertos subsistemas de hardware accedan a la memoria principal del sistema ( memoria de acceso aleatorio ) independientemente de la unidad central de procesamiento (CPU).

Sin DMA, cuando la CPU está usando una entrada / salida programada , normalmente está completamente ocupada durante toda la operación de lectura o escritura y, por lo tanto, no está disponible para realizar otro trabajo. Con DMA, la CPU primero inicia la transferencia, luego realiza otras operaciones mientras la transferencia está en progreso, y finalmente recibe una interrupción del controlador DMA (DMAC) cuando la operación finaliza. Esta función es útil en cualquier momento en que la CPU no pueda mantener el ritmo de transferencia de datos, o cuando la CPU necesite realizar un trabajo mientras espera una transferencia de datos de E / S relativamente lenta. Muchos sistemas de hardware utilizan DMA, incluidos controladores de unidades de disco , tarjetas gráficas , tarjetas de red y tarjetas de sonido.. DMA también se utiliza para la transferencia de datos dentro del chip en procesadores de varios núcleos . Las computadoras que tienen canales DMA pueden transferir datos hacia y desde dispositivos con mucho menos sobrecarga de CPU que las computadoras sin canales DMA. De manera similar, un elemento de procesamiento dentro de un procesador de múltiples núcleos puede transferir datos hacia y desde su memoria local sin ocupar el tiempo de su procesador, lo que permite que el cálculo y la transferencia de datos se realicen en paralelo.

DMA también se puede utilizar para copiar o mover datos de "memoria a memoria" dentro de la memoria. DMA puede descargar costosas operaciones de memoria, como copias grandes u operaciones de dispersión y recopilación , desde la CPU a un motor DMA dedicado. Un ejemplo de aplicación es la aceleración de E / S tecnología . DMA es de interés en arquitecturas informáticas de red en chip y en memoria .

DMA estándar, también llamado DMA de terceros, utiliza un controlador DMA. Un controlador DMA puede generar direcciones de memoria e iniciar ciclos de lectura o escritura de memoria. Contiene varios registros de hardware que la CPU puede escribir y leer. Estos incluyen un registro de dirección de memoria, un registro de recuento de bytes y uno o más registros de control. Dependiendo de las características que proporcione el controlador DMA, estos registros de control pueden especificar alguna combinación del origen, el destino, la dirección de la transferencia (lectura del dispositivo de E / S o escritura en el dispositivo de E / S), el tamaño del unidad de transferencia y / o el número de bytes a transferir en una ráfaga. [1]

Para llevar a cabo una operación de entrada, salida o memoria a memoria, el procesador host inicializa el controlador DMA con un recuento del número de palabras a transferir y la dirección de memoria a usar. Luego, la CPU ordena al dispositivo periférico que inicie una transferencia de datos. El controlador DMA luego proporciona direcciones y líneas de control de lectura / escritura a la memoria del sistema. Cada vez que un byte de datos está listo para ser transferido entre el dispositivo periférico y la memoria, el controlador DMA incrementa su registro de dirección interno hasta que se transfiere el bloque completo de datos.

En un sistema de masterización de bus , también conocido como sistema DMA de primera parte, se puede otorgar a la CPU y los periféricos el control del bus de memoria. Cuando un periférico puede convertirse en un bus maestro, puede escribir directamente en la memoria del sistema sin la participación de la CPU, proporcionando direcciones de memoria y señales de control según sea necesario. Se deben tomar algunas medidas para poner el procesador en una condición de espera para que no se produzca la contención del bus.


Placa base de una computadora NeXTcube (1990). Los dos grandes circuitos integrados debajo de la mitad de la imagen son el controlador DMA (l.) Y - inusual - un controlador DMA adicional dedicado (r.) Para el disco magneto-óptico usado en lugar de una unidad de disco duro en la primera serie de este modelo de computadora.
Incoherencia de caché debido a DMA