Saltar al contenido

¿Cuál es la diferencia entre DMA y E / S con asignación de memoria?

Si encuentras algún error en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al trabajo final.

Solución:

La E / S mapeada en memoria permite que la CPU controle el hardware leyendo y escribiendo direcciones de memoria específicas. Por lo general, esto se usaría para operaciones de ancho de banda bajo, como cambiar bits de control.

DMA permite al hardware leer y escribir memoria directamente sin que involucrando a la CPU. Por lo general, esto se usaría para operaciones de gran ancho de banda, como E / S de disco o entrada de video de la cámara.

Aquí hay un artículo que tiene una comparación exhaustiva entre MMIO y DMA.

Directrices de diseño para sistemas RDMA de alto rendimiento

Dado que otros ya han respondido a la pregunta, solo agregaré un poco de historia.

En los viejos tiempos, en el hardware x86 (PC), solo había espacio de E / S y espacio de memoria. Estos eran dos espacios de direcciones diferentes, a los que se accede con diferentes protocolos de bus y diferentes instrucciones de CPU, pero capaces de hablar a través de la misma ranura de tarjeta enchufable.

La mayoría de los dispositivos usaban espacio de E / S tanto para la interfaz de control como para la interfaz de transferencia de datos en masa. La forma más sencilla de acceder a los datos era ejecutar muchas instrucciones de la CPU para transferir datos una palabra a la vez desde una dirección de E / S a una dirección de memoria (a veces conocida como “bit-banging”).

Para mover datos de los dispositivos a la memoria del host de forma autónoma, no había soporte en el protocolo de bus ISA para que los dispositivos iniciaran transferencias. Se inventó una solución de compromiso: el controlador DMA. Esta era una pieza de hardware que se instalaba junto a la CPU e iniciaba transferencias para mover datos desde la dirección de E / S de un dispositivo a la memoria, o viceversa. Debido a que la dirección de E / S es la misma, el controlador DMA está haciendo exactamente las mismas operaciones que lo haría una CPU, pero un poco más eficientemente y permitiendo cierta libertad para seguir funcionando en segundo plano (aunque posiblemente no por el tiempo que no pueda hablar con la memoria).

Avance rápido a los días de PCI, y los protocolos de bus se volvieron mucho más inteligentes: cualquier dispositivo puede iniciar una transferencia. Por lo tanto, es posible que, digamos, una tarjeta controladora RAID mueva cualquier dato que desee hacia o desde el host en cualquier momento que desee. A esto se le llama modo “bus maestro”, pero sin ninguna razón en particular la gente continúa refiriéndose a este modo como “DMA” a pesar de que el antiguo controlador DMA ya no existe. A diferencia de las antiguas transferencias DMA, con frecuencia no hay ninguna dirección de E / S correspondiente, y el modo maestro de bus es con frecuencia la única interfaz presente en el dispositivo, sin ningún modo de “bit-banging” de CPU.

E / S con asignación de memoria significa que los registros del dispositivo se asignan al espacio de memoria de la máquina; cuando la CPU lee o escribe esas regiones de memoria, está leyendo o escribiendo en el dispositivo, en lugar de en la memoria real. Para transferir datos desde el dispositivo a un búfer de memoria real, la CPU tiene que leer los datos de los registros del dispositivo asignados en memoria y escribirlos en el búfer (y lo contrario para transferir datos al dispositivo).

Con una transferencia DMA, el dispositivo puede transferir datos directamente hacia o desde un búfer de memoria real. La CPU le dice al dispositivo la ubicación del búfer y luego puede realizar otro trabajo mientras el dispositivo accede directamente a la memoria.

Puntuaciones y reseñas

Recuerda algo, que tienes concesión de agregar una reseña si descubriste tu dificultad .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *