Diferencia entre revisiones de «Acceso directo a memoria»

sin resumen de edición
{{otros usos|Análisis mecánico diferencial|DMA en [[reología]]}}
 
El '''acceso directo a memoria''' ('''''DMA''''', del inglés ''direct memory access'') permite a cierto tipo de componentes de una [[computadora]] acceder a la memoria del sistema para leer o escribir independientemente de la [[unidad central de procesamiento]] (CPU) principal. Muchos sistemas [[hardware]] utilizan DMA, incluyendo controladores de unidades de disco, [[tarjeta gráfica|tarjetas gráficas]] y [[tarjeta de sonido|tarjetas de sonido]]. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.
 
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Tal operación no ocupa al procesador y, comopor resultadoende, éste puede ser planificado para efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de [[Aplicación (informática)|aplicaciones]] que requieran muchos recursos.
 
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí que se necesita el bus del sistema (tanto [[bus de datos]] como [[bus de direcciones]]), por lo que existen diferentes estrategias para regular su uso, permitiendo así que no quede totalmente acaparado por el controlador DMA.
 
== Problemas de coherencia en la memoria caché==
La DMA puede llevar a ''problemas de coherencia'' de caché. Imagine una CPU equipada con una memoria caché y una memoria externa que se pueda acceder directamente por los dispositivos que utilizan DMA. Cuando la CPU accede a X lugar en la memoria, el valor actual se almacena en la caché. Si se realizan operaciones posteriores en X, se actualizará la copia en caché de X, pero no la versión de memoria externa de X. Si la caché no se vacía en la memoria antes de que otro dispositivo intente acceder a X, el dispositivo recibirá un valor caducado de X.
 
Del mismo modo, si la copia en caché de X no es inválidainvalidada cuando un dispositivo escribe un nuevo valor en la memoria, entonces la CPU funcionará con un valor caducado de X.
 
Este problema puede ser abordado en una de las dos formas en el diseño del sistema:
194

ediciones