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 del sistema principal ( memoria de acceso aleatorio ) independientemente de la unidad central de procesamiento (CPU).

Sin DMA, cuando la CPU utiliza entrada/salida programada , normalmente está totalmente 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 curso y finalmente recibe una interrupción del controlador DMA (DMAC) cuando finaliza la operación. Esta función es útil en cualquier momento en que la CPU no puede mantener el ritmo de la transferencia de datos, o cuando la CPU necesita realizar un trabajo mientras espera una transferencia de datos de E/S relativamente lenta. Muchos sistemas de hardware utilizan DMA, incluidos los controladores de unidades de disco , las tarjetas gráficas, las tarjetas de red y las tarjetas de sonido .. DMA también se utiliza para la transferencia de datos dentro del chip en procesadores multinúcleo . Las computadoras que tienen canales DMA pueden transferir datos hacia y desde dispositivos con mucha menos sobrecarga de CPU que las computadoras sin canales DMA. De manera similar, un elemento de procesamiento dentro de un procesador multinúcleo puede transferir datos hacia y desde su memoria local sin ocupar su tiempo de procesador, lo que permite que la transferencia de datos y el cálculo 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 implementación es la tecnología de aceleración de E/S . DMA es de interés en arquitecturas informáticas de red en chip y en memoria.

El 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 conteo de bytes y uno o más registros de control. Dependiendo de las funciones que proporcione el controlador DMA, estos registros de control pueden especificar alguna combinación de la fuente, el destino, la dirección de la transferencia (leer desde el dispositivo de E/S o escribir 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 de 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 propio, se puede otorgar a la CPU y a los periféricos el control del bus de memoria. Cuando un periférico puede convertirse en un maestro de bus, 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 proporcionar algunas medidas para poner el procesador en una condición de espera para que no ocurra la contención del bus.


Placa base de una computadora NeXTcube (1990). Los dos grandes circuitos integrados debajo del centro de la imagen son el controlador DMA (izq.) y, algo inusual, un controlador DMA adicional dedicado (der.) 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