ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Acceso Directo


Enviado por   •  14 de Octubre de 2013  •  2.257 Palabras (10 Páginas)  •  521 Visitas

Página 1 de 10

ACCESO DIRECTO A LA MEMORIA

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, tarjetas gráficas y 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, por ende, éste puede efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos.

Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí 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.

El acceso directo a memoria es simplemente eso, un acceso a memoria que se crea al particionar la memoria en bloques del mismo tamaño.

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 invalidada 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 el diseño del sistema de las siguientes dos formas :

Los sistemas de caché coherente implementan un método en el hardware externo mediante el cual se escribe una señal en el controlador de caché, la cual realiza una invalidación de la caché para escritura de DMA o caché de descarga para lectura de DMA.

Los sistemas no-coherente dejan este software, donde el sistema operativo debe asegurarse de que las líneas de caché se vacían antes de que una transferencia de salida de DMA sea iniciada y anulada antes de que una parte de la memoria sea afectada por una transferencia entrante de DMA que se haya requerido. El sistema operativo debe asegurarse de que esa parte de memoria no es accedida por cualquier subproceso que se ejecute en ese instante. Este último enfoque introduce cierta sobrecarga a la operación de DMA, ya que la mayoría de hardware requiere un bucle para invalidar cada línea de caché de forma individual.

Los híbridos también existen, donde en la caché secundaria L2 es coherente, mientras que en la caché L1 (generalmente la CPU) es gestionado por el software.

Secuencia de eventos

Una operación de E/S por DMA se establece ejecutando una corta rutina de inicialización. Consiste en varias instrucciones de salida para asignar valores iniciales a:

AR: Dirección de memoria de la región de datos de E/S IOBUF (buffer de entrada/salida).

WC: Número N de palabras de datos a transferir.

Una vez inicializado, el DMA procede a transferir datos entre IOBUF y el dispositivo de E/S. Se realiza una transferencia cuando el dispositivo de E/S solicite una operación de DMA a través de la línea de petición del DMAC.

Después de cada transferencia, se decrementa el valor de WC y se incrementa el de AR.

La operación termina cuando WC=0, entonces el DMAC (o el periférico) indica la conclusión de la operación enviando al procesador una petición de interrupción.

Secuencia de eventos detallada[editar código]

1.El procesador inicializa el DMAC programando AR y WC.

2.El dispositivo de E/S realiza una petición de DMA al DMAC.

3.El DMAC le responde con una señal de aceptación.

4.El DMAC activa la línea de petición de DMA al procesador.

5.Al final del ciclo del bus en curso, el procesador pone las líneas del bus del sistema en alta impedancia y activa la sesión de DMA.

6.El DMAC asume el control del bus.

7.El dispositivo de E/S transmite una nueva palabra de datos al registro intermedio de datos del DMAC.

8.El DMAC ejecuta un ciclo de escritura en memoria para transferir el contenido del registro intermedio a la posición M[AR].

9.El DMAC decrementa WC e incrementa AR.

10.El DMAC libera el bus y desactiva la línea de petición de DMA.

11.El DMAC compara WC con 0:

12.Si WC > 0, se repite desde el paso 2.

13.Si WC = 0, el DMAC se detiene y envía una petición de interrupción al procesador

Motor de acceso directo a memoria

Además de la interacción de hardware, el acceso directo a memoria puede ser utilizado para descargar costosas operaciones de memoria, tales como copias de gran tamaño u operaciones de dispersión-reunión, desde la CPU a un motor de acceso directo a memoria dedicada. Intel incluye estos motores en los servidores de gama alta, llamado I/O Acceleration Technology (IOAT).

Transferencias

Durante las operaciones del DMA, el rendimiento del sistema puede verse afectado debido a que este dispositivo hace un uso intensivo del bus y por lo tanto la cpu no puede leer datos de memoria,

...

Descargar como (para miembros actualizados)  txt (14 Kb)  
Leer 9 páginas más »
Disponible sólo en Clubensayos.com