que es dma acceso directo a memoria para una mejor velocidad de transferencia

Aprende sobre DMA y su impacto en la velocidad de transferencia de memoria

El Acceso Directo a Memoria (DMA en sus siglas en inglés) es una técnica que posibilita a los dispositivos de entrada/salida acceder de manera directa a la memoria del sistema, sin necesidad de pasar por el procesador. Este método ofrece una elevada velocidad de transferencia de datos, lo que se traduce en un mejor funcionamiento del sistema. En el presente artículo, nos adentraremos en los detalles del DMA y examinaremos cómo puede aumentar la velocidad de transferencia de datos en los sistemas electrónicos.

El significado y la utilidad del DMA

El DMA (Direct Memory Access) es una técnica empleada en informática y electrónica que posibilita el acceso directo de ciertos dispositivos a la memoria del sistema, sin requerir la intervención de la CPU. Esto agiliza y mejora la transferencia de datos, al eliminar la necesidad de que la CPU participe en cada paso del proceso.

Esta técnica se emplea frecuentemente en dispositivos de almacenamiento de datos, tales como discos duros, unidades de CD/DVD y dispositivos USB. También se encuentra en tarjetas de sonido y de red, facilitando la transferencia de datos de audio y video, así como la comunicación en red.

El funcionamiento del DMA se basa en el uso de un controlador DMA, un circuito integrado que actúa como intermediario entre el dispositivo que necesita acceder a la memoria y la propia memoria del sistema. Cuando un dispositivo precisa transferir datos a la memoria, envía una solicitud al controlador DMA, el cual se encarga de efectuar la transferencia directamente a la memoria, sin la intervención de la CPU.

Quién es responsable de iniciar la transferencia DMA en un acceso directo a memoria

La técnica DMA permite a los dispositivos periféricos acceder directamente a la memoria del sistema, sin la intervención de la CPU. Gracias a esto, se consigue una transferencia de datos más eficiente y rápida.

En un sistema que utiliza DMA, el dispositivo periférico que necesita acceder a la memoria envía una solicitud al controlador DMA. El controlador, a su vez, responde a la petición y configura el acceso directo a la memoria.

En términos sencillos, cuando se inicia un acceso directo a la memoria, es el controlador DMA el encargado de iniciar la transferencia de datos entre el dispositivo periférico y la memoria del sistema.

Qué es el DMA

El significado del DMA es "Direct Memory Access" o "Acceso Directo a la Memoria". Se trata de una técnica utilizada en computadoras para facilitar la transferencia de datos entre dispositivos de E/S y la memoria del sistema. Gracias a esta tecnología, los dispositivos pueden acceder a la memoria sin necesidad de la intervención del CPU, permitiendo que este se centre en otras tareas.

El controlador DMA es el encargado de llevar a cabo esta transferencia de datos entre la memoria interna del dispositivo y la memoria principal del sistema. Gracias a estos controladores, se establece un canal de comunicación directo entre el dispositivo de E/S y la memoria principal, evitando así la necesidad de pasar por el CPU.

Secuencia de eventoseditar

Configuración de una operación de E/S mediante DMA

Para llevar a cabo una operación de entrada/salida mediante DMA, es necesario ejecutar una breve rutina de inicialización mediante varias instrucciones de salida.

Estas instrucciones tienen como objetivo asignar valores iniciales para la correcta ejecución del DMA.

Ejecución de la transferencia de datos

Una vez inicializado, el DMA se encarga de transferir datos entre IOBUF y el dispositivo de E/S.

La transferencia se lleva a cabo cuando el dispositivo de E/S solicita una operación de DMA a través de la línea de petición del DMAC.

Finalización de la operación

La operación de E/S mediante DMA finaliza cuando WC=0.

En este momento, el DMAC (o el periférico) envía una petición de interrupción al procesador para indicar la conclusión de la operación.

Acceso directo a memoria optimizado por un motor

Más allá de la comunicación entre hardware, es posible utilizar el acceso directo a memoria para optimizar operaciones costosas, como copiar grandes cantidades de datos o realizar dispersión y reunión, a través de un motor dedicado de acceso directo a memoria. Esta tecnología, conocida como I/O Acceleration Technology (IOAT), viene integrada en los servidores de alta gama de Intel.

Ejemploseditar

En los ordenadores antiguos de IBM, se utilizaba un controlador de DMA (Direct Memory Access) basado en el Intel 8237, el cual era un controlador de DMA multimodo que combinaba hardware y software. Este controlador sólo tenía cuatro canales DMA (0-3), que se encargaban de las transferencias de 8 bits y podían acceder únicamente al primer megabyte de RAM.

Con la llegada de la IBM PC/AT, se añadió un segundo controlador de DMA 8237 (canales 5-7, el canal 4 no se podía utilizar) y se recableó el registro de página para permitir el acceso a toda la memoria de 16 MB.

A pesar de su limitado rendimiento (2,5 Mbit/s [1]), estos dispositivos se dejaron de utilizar con la aparición del procesador 80386, que ofrecía una capacidad de transferencia de 32 bits. No obstante, aún se encuentran en uso para dar soporte a nuevas incorporaciones de hardware en las máquinas modernas.

Cada canal de DMA tiene un registro de dirección de 16 bits y un registro asociado de recuento de 16 bits. Para iniciar una transferencia de datos, el controlador de dispositivo establece la dirección de acceso directo a memoria del canal y el registro de recuento, los cuales suman la dirección de la transferencia de datos a leer o escribir. Luego, el controlador de DMA recibe la orden de iniciar la transferencia. Cuando ésta se completa, el dispositivo interrumpe a la CPU.

Transferenciaseditar

Durante las operaciones del DMA, el rendimiento del sistema puede verse afectado debido a su uso intensivo del bus. Esto impide a la CPU leer datos de memoria, como por ejemplo la siguiente instrucción a ejecutar. Como consecuencia, la CPU debe esperar a que el DMA finalice su tarea sin poder ejecutar otras instrucciones.

Una solución a este inconveniente es la utilización de una memoria caché dentro de la CPU. De esta forma, la CPU puede seguir trabajando mientras el DMA ocupa el bus.

En caso de que el ordenador no disponga de memoria caché, el DMA debe realizar su tarea de manera diferente. Debe evitar ocupar el bus de datos mientras la CPU realiza la captación de la instrucción. De acuerdo a estas dos posibilidades, existen dos tipos de transferencias de datos del DMA. Este tipo de transferencia se utiliza en sistemas con memoria caché, ya que permite a la CPU seguir trabajando utilizando la caché.

Desafíos de coherencia en la caché del CPUeditar

Coherencia de caché y problemas en la DMA

La coherencia de caché del procesador puede ocasionar inconvenientes en la DMA. Imagina una CPU con memoria caché y memoria externa accesible directamente por dispositivos que usan DMA. Cuando la CPU accede a un lugar X en la memoria externa, se guarda el valor actual en la caché. Si se realizan operaciones posteriores en X, la copia de X en la caché se actualizará, pero no la versión en la memoria externa. Si la caché no se vacía en la memoria externa antes de que otro dispositivo intente acceder a X, este recibirá un valor desactualizado...

Además, si la copia en caché de X no se invalida cuando un dispositivo escribe un nuevo valor en la memoria externa, la CPU trabajará con una versión obsoleta de X.

Otra forma de manejar la coherencia de caché es a través de híbridos, donde la caché L2 es coherente mientras que la L1 (usualmente manejada por la CPU) es controlada por el software.

Artículos relacionados