¿Qué es el acceso directo a memoria (DMA) y cómo funciona? [Wiki de MiniTool]
What Is Direct Memory Access
Navegacion rapida :
Puedes adoptar el RDMA tecnología para permitir que las computadoras en una red intercambien datos en la memoria principal sin involucrar el procesador, la caché o el sistema operativo de ninguna computadora. Pero también puede usar la función DMA para enviar datos directamente desde un dispositivo conectado a la memoria en la placa base de la computadora. Esta publicación de Miniherramienta está hablando principalmente de DMA.
La definición de acceso directo a la memoria
En primer lugar, ¿qué es el acceso directo a memoria? El acceso directo a memoria se puede abreviar como DMA, que es una característica de los sistemas informáticos. Permite que los dispositivos de entrada / salida (E / S) accedan a la memoria principal del sistema ( memoria de acceso aleatorio ), independiente de la unidad central de procesamiento (CPU), lo que acelera las operaciones de memoria.
Propina: Puede que te interese esta publicación - 8 soluciones útiles para arreglar su CPU al 100% en Windows 10 .
Sin acceso directo a memoria, cuando la CPU usa entradas / salidas programadas, generalmente está completamente ocupada durante toda la operación de lectura o escritura, por lo que no puede realizar otras tareas. 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 se completa.
El acceso directo a la memoria es útil cuando la CPU no puede mantenerse al día con la velocidad de transferencia de datos o cuando la CPU necesita realizar un trabajo mientras espera transferencias de datos de E / S relativamente lentas.
Varios sistemas de hardware adoptan el acceso directo a memoria, como 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 en chip en procesadores de varios núcleos. En comparación con las computadoras sin canales de acceso directo a memoria, las computadoras con canales DMA pueden transferir datos entre dispositivos con mucho menos sobrecarga de CPU.
El acceso directo a la memoria también se puede utilizar para 'memoria a memoria' para copiar o mover datos en la memoria. Puede transferir costosas operaciones de memoria (como copias grandes u operaciones de dispersión y recopilación) desde la CPU a un motor DMA dedicado. DMA es importante en arquitecturas informáticas de red en chip y memoria.
¿Cómo funciona el acceso directo a la memoria?
Entonces, ¿cómo funciona Direct Memory Access? El acceso directo a memoria estándar (también llamado DMA de terceros) adopta un controlador DMA. El controlador DMA puede producir direcciones de memoria e iniciar ciclos de lectura o escritura de memoria. Cubre varios registros de hardware que la CPU puede leer y escribir.
Estos registros constan de un registro de direcciones de memoria, un registro de recuento de bytes y uno o más registros de control. Dependiendo de las funciones proporcionadas por el controlador de acceso directo a memoria, estos registros de control pueden designar alguna combinación de origen, destino, dirección de transferencia (lectura o escritura en el dispositivo de E / S), tamaño de la unidad de transferencia y / o número de bytes para transferir en una ráfaga.
Para realizar operaciones de entrada, salida o de memoria a memoria, el procesador host inicializa el controlador DMA con el número de palabras a transferir y la dirección de memoria a usar. Luego, la CPU ordena al dispositivo periférico que comience la transferencia de datos.
Luego, el controlador de acceso directo a memoria ofrece direcciones y líneas de control de lectura / escritura a la memoria del sistema. Cada vez que se prepara un byte de datos 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 un bloque de datos completo.
Modos de operacion
El acceso directo a la memoria funciona de manera diferente en diferentes modos de operación.
Modo de ráfaga
En el modo de ráfaga, el bloque de datos completo se transmite en una secuencia continua. Una vez que la CPU permite que el controlador DMA acceda al bus del sistema, el controlador DMA transferirá todos los bytes de datos en el bloque de datos antes de liberar el control de los buses del sistema de nuevo a la CPU, pero hará que la CPU esté inactiva durante un tiempo. bastante tiempo. Este modo también se denomina 'Modo de transferencia en bloque'.
Modo de robo de ciclo
El modo de robo de ciclo se utiliza en un sistema en el que la CPU no puede desactivarse durante el tiempo necesario para el modo de transferencia por ráfagas. En el modo de robo de ciclo, el controlador DMA obtiene el acceso al bus del sistema utilizando las señales BR (Solicitud de bus) y BG (Concesión de bus), que son las mismas que el modo de ráfaga. Estas dos señales controlan la interfaz entre la CPU y el controlador DMA.
Por un lado, en el modo de robo de ciclo, la velocidad de transmisión del bloque de datos no es tan rápida como en el modo de ráfaga, pero por otro lado, el tiempo de inactividad de la CPU no es tan largo como en el modo de ráfaga.
Modo transparente
El modo transparente tarda más en transferir bloques de datos, pero también es el modo más eficiente en términos de rendimiento general del sistema. En modo transparente, el controlador de acceso directo a la memoria transfiere datos solo cuando la CPU realiza operaciones que no utilizan los buses del sistema.
La principal ventaja del modo transparente es que la CPU nunca deja de ejecutar sus programas y las transferencias de acceso directo a la memoria son gratuitas en términos de tiempo, mientras que la desventaja es que el hardware necesita determinar cuándo la CPU no está usando los buses del sistema, lo que puede ser complicado. Esto también se denomina 'modo de transferencia de datos DMA oculta'.