Acceso directo a memoria (dma)

Definición: ¿Qué significa acceso directo a memoria (DMA)?

El acceso directo a la memoria (DMA) es un método que permite que un dispositivo de entrada / salida (E / S) envíe o reciba datos directamente hacia o desde la memoria principal, sin pasar por la CPU para acelerar las operaciones de memoria.

El proceso es gestionado por un chip conocido como controlador DMA (DMAC).

Techinfo explica el acceso directo a memoria (DMA)

Una parte definida de la memoria se usa para enviar datos directamente desde un periférico a la placa base sin involucrar al microprocesador, de modo que el proceso no interfiera con el funcionamiento general de la computadora.

En las computadoras más antiguas, cuatro canales DMA se numeraron 0, 1, 2 y 3. Cuando se introdujo el bus de expansión de arquitectura estándar industrial (ISA) de 16 bits, se agregaron los canales 5, 6 y 7.

ISA era un estándar de bus de computadora para computadoras compatibles con IBM, que permitía a un dispositivo iniciar transacciones (masterización de bus) a una velocidad más rápida. El controlador ISA DMA tiene 8 canales DMA, cada uno de los cuales está asociado con una dirección de 16 bits y registros de conteo.

Desde entonces, ISA ha sido reemplazado por tarjetas de expansión de puertos de gráficos acelerados (AGP) y de interconexión de componentes periféricos (PCI), que son mucho más rápidas. Cada DMA transfiere aproximadamente 2 MB de datos por segundo.

Las herramientas de recursos del sistema de una computadora se utilizan para la comunicación entre hardware y software. Los cuatro tipos de recursos del sistema son:

  • Direcciones de E / S.

  • Direcciones de memoria.

  • Números de solicitud de interrupción (IRQ).

  • Canales de acceso directo a memoria (DMA).

Los canales DMA se utilizan para comunicar datos entre el dispositivo periférico y la memoria del sistema. Los cuatro recursos del sistema dependen de ciertas líneas de un bus. Algunas líneas del bus se utilizan para IRQ, otras para direcciones (las direcciones de E / S y la dirección de memoria) y otras para los canales DMA.

Un canal DMA permite que un dispositivo transfiera datos sin exponer la CPU a una sobrecarga de trabajo. Sin los canales DMA, la CPU copia todos los datos utilizando un bus de periféricos del dispositivo de E / S. El uso de un bus de periféricos ocupa la CPU durante el proceso de lectura / escritura y no permite realizar otros trabajos hasta que se complete la operación.

Con DMA, la CPU puede procesar otras tareas mientras se realiza la transferencia de datos. La transferencia de datos la inicia primero la CPU. El bloque de datos puede ser transferido ay desde la memoria por el DMAC de tres formas.

En el modo de ráfaga, el bus del sistema se libera solo después de que se completa la transferencia de datos. En el modo de robo de ciclo, durante la transferencia de datos entre el canal DMA y el dispositivo de E / S, el bus del sistema se abandona durante unos pocos ciclos de reloj para que la CPU pueda realizar otras tareas. Cuando se completa la transferencia de datos, la CPU recibe una solicitud de interrupción del controlador DMA. En modo transparente, el DMAC puede hacerse cargo del bus del sistema solo cuando el procesador no lo requiere.

Sin embargo, el uso de un controlador DMA puede causar problemas de coherencia de la caché. Es posible que los datos almacenados en la RAM a los que acceda el controlador DMA no se actualicen con los datos de caché correctos si la CPU está utilizando una memoria externa.

Las soluciones incluyen vaciar las líneas de la caché antes de iniciar las transferencias DMA salientes o realizar una invalidación de la caché en las transferencias DMA entrantes cuando se señalan escrituras externas al controlador de la caché.