Está en la página 1de 10

Acceso directo a memoria

De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas.
Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando: {{subst:Aviso referencias|Acceso directo a memoria}} ~~~~

Para DMA en reologa, vase Anlisis mecnico diferencial. El acceso directo a memoria (DMA, del ingls 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 grficas y tarjetas de sonido. DMA es una caracterstica 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 tpico es mover un bloque de memoria desde una memoria externa a una interna ms rpida. Tal operacin no ocupa al procesador y como resultado ste puede ser planificado para 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 transaccin 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.

Contenido
[ocultar]

1 Problemas de coherencia en la memoria cach 2 Secuencia de eventos o 2.1 Secuencia de eventos detallada 3 Motor de acceso directo a memoria 4 Transferencias 5 Ejemplos o 5.1 ISA o 5.2 PCI o 5.3 AHB o 5.4 Acelerador de entrada y salida en Xeon 6 Vase tambin

[editar] 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 versin de memoria externa de X. Si la cach no se vaca 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 invlida 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 diseo del sistema:

Los sistemas de cach coherente implementan un mtodo en el hardware externo mediante el cual se escribe una seal en el controlador de cach, la cual realiza una invalidacin 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 lneas de cach se vacan 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 operacin de DMA, ya que la mayora de hardware requiere un bucle para invalidar cada lnea de cach de forma individual.

Los hbridos tambin existen, donde en la cach secundaria L2 es coherente, mientras que en la cach L1 (generalmente la CPU) es gestionado por el software.

[editar] Secuencia de eventos


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

AR: Direccin de memoria de la regin de datos de E/S IOBUF (buffer de entrada/salida). WC: Nmero 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 operacin de DMA a travs de la lnea de peticin del DMAC. Despus de cada transferencia, se decrementa el valor de WC y se incrementa el de AR. La operacin termina cuando WC=0, entonces el DMAC (o el perifrico) indica la conclusin de la operacin enviando al procesador una peticin de interrupcin.

[editar] Secuencia de eventos detallada


1. 2. 3. 4. 5. El procesador inicializa el DMAC programando AR y WC. El dispositivo de E/S realiza una peticin de DMA al DMAC. El DMAC le responde con una seal de aceptacin. El DMAC activa la lnea de peticin de DMA al procesador. Al final del ciclo del bus en curso, el procesador pone las lneas del bus del sistema en alta impedancia y activa la cesin 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 posicin M[AR]. 9. El DMAC decrementa WC e incrementa AR. 10. El DMAC libera el bus y desactiva la lnea de peticin de DMA. 11. El DMAC compara WC con 0:
Si WC > 0, se repite desde el paso 2. Si WC = 0, el DMAC se detiene y enva una peticin de interrupcin al procesador.

[editar] Motor de acceso directo a memoria


Adems de la interaccin de hardware, el acceso directo a memoria puede ser utilizado para descargar costosas operaciones de memoria, tales como copias de gran tamao u operaciones de dispersin-reunin, 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)..

[editar] 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, por ejemplo para leer la siguiente instruccin a ejecutar. Esto provoca que mientras el DMA esta operando, la cpu deba esperar a que finalice dicha tarea sin ejecutar ninguna instruccin. Para solventar esto, existe una memoria cache dentro de la CPU que permite a sta seguir trabajando mientras el DMA mantiene ocupado el bus. En computadores que no disponen de memoria cache,el DMA debe realizar su tarea evitando ocupar el bus de datos mientras la CPU realiza la fase de captacin de la instruccin. A partir de estas dos posibilidades, existen dos tipos de transferencias de datos del DMA: Transferencias modo rfaga una vez que la CPU concede el bus al DMA, este no lo libera hasta que finaliza su tarea completamente. Este tipo de transferencia se usa en sistemas que disponen de una memoria cache en la unidad de procesamiento, ya que mientras la CPU puede seguir trabajando utilizando la cache.

Transferencias modo robo de ciclo una vez que la CPU concede el bus al DMA, este lo vuelve a liberar al finalizar de transferir cada palabra. Teniendo que solicitar de nuevo el permiso de uso del bus a la CPU. Esta operacin se repite hasta que el DMA finaliza la tarea. Este tipo de transferencia se suele usar en sistema que no disponen de memoria cache en la unidad de procesamiento, ya que de este modo, aunque la transferencia de datos tarda ms en realizarse, la CPU puede seguir ejecutando instrucciones.

[editar] Ejemplos
[editar] ISA
Por ejemplo, un PC con arquitectura ISA con controlador de DMA basado en el Intel 8237, el cual es un controlador de DMA multimodo, que es una combinacin de hardware-software. En los IBM antiguos, slo haba un controlador DMA capaz de ofrecer cuatro canales DMA (numerados 0-3). Estos canales DMA realizan las transferencias de 8 bits y slo pueden dirigirse al primer megabyte de RAM. Con la IBM PC/AT, un segundo controlador de DMA 8237, fue aadido (canales 5-7; el canal 4 no se puede utilizar), y el registro pgina fue recableado para abordar la completa memoria de 16 MB de espacio de direcciones de la CPU 80286. Este segundo controlador realiza las transferencias de 16 bits. Debido a su desempeo rezagado (2,5 Mbit / s [1]), estos dispositivos estn dejando de ser utilizados desde el aparecimiento del procesador 80386 y su capacidad de transferencia de 32 bits. An son admitidas en la medida en que son necesarias para apoyar incorporaciones hardware en las mquinas modernas. Cada canal de DMA tiene un registro de direccin de 16-bit y un recuento de 16-bit del registro asociado a l. Para iniciar una transferencia de datos el controlador de dispositivo establece la direccin del canal de acceso directo a memoria y registros,los cuales contarn conjuntamente con la direccin de la transferencia de datos, leer o escribir. A continuacin, indica al DMA para iniciar la transferencia. Cuando la transferencia se haya completado, el dispositivo interrumpe la CPU. Es equivalente a la de encadenar mltiples peticiones simples del DMA. La motivacin es la carga de mltiples entradas y salidas de interrupcin y copiar los datos de las tareas de la CPU. DRQ representa peticin DMA ; DACK para reconocer DMA . Estos smbolos, visto en el hardware esquemas de los sistemas informticos con funciones DMA, representan las lneas de sealizacin electrnica entre la CPU y el controlador DMA. Cada canal de DMA tiene una solicitud y una lnea de reconocer. Un dispositivo correctamente configurado que utiliza DMA debe ser puenteado para utilizar las dos lneas del canal DMA asignado. Norma ISA de asignaciones DMA: 0 Refrescar DRAM (obsoleto), 1 Usar hardware,

2 Disquete controlador, 3 Disco duro (obsoleto), 4 XT Cascada del controlador DMA, 5 Disco duro ( PS/2 solamente), hardware del usuario para todos los dems 6 Usuario del hardware.

[editar] PCI
Como se mencion anteriormente, un PC con arquitectura PCI no tiene ningn controlador central de DMA, a diferencia del ISA. Por el contrario, cualquiera de los componentes PCI puede pedir el control del bus ("convertirse en el bus maestro") y pedir leer y escribir desde la memoria del sistema. Ms precisamente, un componente de peticiones PCI tiene la propiedad de autobs desde el controlador de bus PCI, y arbitrar si la peticin de varios dispositivos al mismo tiempo la propiedad de autobuses, ya que slo puede haber un maestro de bus al mismo tiempo. Cuando el componente concede la propiedad, se leern y escribirn comandos en el bus PCI, que se solicite por el controlador del bus y se remitir al controlador de memoria usando un esquema que es especfico de cada chipset. Como puede verse, hay un buen nmero de pasos necesarios para una transferencia DMA, sin embargo, plantea muchos problemas, ya que el dispositivo PCI o bus PCI s son ms lentos que el resto de componentes. Un moderno procesador x86 puede usar ms de 4 GB de memoria, utilizando PAE, un modo de direccionamiento de 36 bits. En tal caso, un dispositivo que utiliza DMA con un poco de direccin de bus-32 es incapaz de tener una direccin de memoria por encima de la lnea 4 GB. El nuevo ciclo de doble direccin (DAC), si se aplican tanto en el bus PCI y el propio dispositivo, permite el acceso directo de memoria de 64-bit de direccionamiento. De lo contrario, el sistema operativo tendra que solucionar el problema, ya sea usando costosos amortiguadores dobles (nomenclatura de Windows), tambin conocido como amortiguadores rebote (Linux), o puede utilizar un IOMMU para proporcionar servicios de traduccin de direcciones, si uno est presente.

[editar] AHB
En sistemas integrados en chips y en sistemas embebidos, la tpica estructura de bus es un complejo bus integrado tal como el AMBA, de alto rendimiento. AMBA define dos tipos de componentes AHB: maestro y esclavo. Una interfaz de esclavo es similar a la entrada/salida programada por software, que puede leer/escribir en registros de entrada/salida o (menos comn) bloques locales de memoria dentro del dispositivo. Una interfaz mster puede ser usada por el dispositivo para mejorar las transacciones del DMA hacia la memoria del sistema sin ralentizar a la CPU. Por tanto dispositivos de un alto ancho de banda como los controladores de redes que necesitan transferir grandes cantidades de datos desde/hacia la memoria del sistema, tendrn dos adaptadores de interfaz hacia el bus AHB, una interfaz para mster y otra

para esclavo. Esto es porque los buses integrados como el AHB no soportan el triestado en el bus. En el caso del PCI, por ejemplo, no se necesita un controlador DMA central desde que los buses del DMA siguen una interfaz de maestro, pero se necesita de un circuito que gestione los casos en que haya varios buses mster presentes en el sistema. Internamente, en los dispositivos existe un motor multicanal DMA controlar los casos de concurrencia.

[editar] Acelerador de entrada y salida en Xeon


Como ejemplo de desarrollos de DMA incorporados a procesadores de propsito general, destacan los nuevos conjuntos de chips Intel Xeon que incluyen la nueva tecnologa de DMA denominada I/O Acceleration Technology (I/OAT), destinada a mejorar el desarrollo de las redes con interfaces de red de altas prestaciones como por ejemplo la red Gigabit Ethernet, sin embargo en varios benchmarks se ha demostrado una mejora de no mas del 10%.
http://es.wikipedia.org/wiki/Acceso_directo_a_memoria

Acceso Directo a Memoria (DMA)


Muchos controladores, sobre todo los de dispositivos por bloques, manejan el acceso directo a memoria o DMA. Para explicar el funcionamiento del DMA, veamos primero cmo ocurren las lecturas de disco cuando no se usa DMA. Primero el controlador lee el bloque (uno o ms sectores) de la unidad en serie, bit por bit, hasta que todo el bloque est en el buffer interno del controlador. A continuacin, el controlador calcula la suma de verificacin para comprobar que no ocurrieron errores de lectura, y luego causa una interrupcin. Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque del disco del buffer del controlador byte por byte o palabra por palabra, ejecutando un ciclo, leyndose en cada iteracin un byte o una palabra de un registro del controlador y almacenndose en la memoria. Naturalmente, un ciclo del CPU programado para leer los bytes del controlador uno por uno desperdicia tiempo de CPU. Por lo anterior el DMA se invent, para liberar al CPU de este trabajo de bajo nivel. Cuando se usa DMA, el CPU proporciona al controlador dos elementos de informacin, adems de la direccin en disco del bloque: la direccin de memoria donde debe colocarse el bloque y el nmero de bytes que deben transferirse, como se muestra en la Figura 19.

Figura 19. Transferencia DMA realizada totalmente por el controlador Una vez que el controlador ha ledo todo el bloque del dispositivo, lo ha colocado en su buffer y ha calculado la suma de verificacin, copia el primer byte o palabra en la memoria principal en la direccin especificada por la direccin de memoria de DMA. Luego, el controlador incrementa la direccin de DMA y decrementa la cuenta de DMA en el nmero de bytes que se acaban de transferir. Este proceso se repite hasta que la cuenta de DMA es cero, y en ese

momento el controlador causa una interrupcin. Cuando el sistema operativo inicia, no tiene que copiar el bloque en la memoria; ya est ah. No todas las computadoras usan DMA. El argumento en su contra es que en muchos casos el CPU principal es mucho ms rpida que el controlador de DMA y puede realizar el trabajo en mucho menos tiempo (cuando el factor limitante no es la rapidez del dispositivo de E/S). Si el CPU (rpida) no tiene otra cosa que hacer, obligarla a esperar hasta que el controlador de DMA (lento) termine, no tiene sentido. Adems, si se omite el controlador de DMA y se deja que el CPU realice todo el trabajo, se ahorra algo de dinero.

https://sites.google.com/site/osupaep2010/entrada-salida/acceso-directo-a-memoria-dma

(Direct Memory Access o DMA). El acceso directo a memoria es una caractersticas de las computadoras y microprocesadores modernos que permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a la memoria del sistema para la lectura y/o escritura, independientemente de la unidad central de procesamiento (CPU). De lo contrario, la CPU tendra que copiar cada porcin de dato desde el origen hacia

el

destino,

haciendo

que

sta

no

est

disponible

para

otras

tareas.

Los subsistemas de hardware que utilizan DMA pueden ser: controladores de disco duro, tarjetas grficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. Tambin es utilizado para la transferencia de datos dentro del chip en procesadores con mltiples ncleos. DMA es esencial en los sistemas integrados. Caractersticas generales del DMA

Aquellas computadoras que tienen canales DMA pueden transferir datos desde y hacia los dispositivos con menos utilizacin de CPU que aquellas computadoras sin canales DMA. Bsicamente una transferencia DMA consiste en copiar un bloque de memoria de un dispositivo a otro. Esa transferencia se lleva a cabo por el controlador DMA, en lugar del CPU. El controlador DMA es generalmente un chipset de la placa madre. En computadoras sin DMA, el CPU generalmente se ocupa completo durante toda la operacin de lectura o escritura de la memoria y, por lo tanto, no est disponible para realizar otras tareas. Con DMA, el CPU puede iniciar la transferencia, luego realizar otras operaciones mientras la transferencia est en progreso y luego recibir una interrupcin del controlador de DMA una vez que la transferencia termina. Sin DMA se utiliza el modo PIO para la comunicacin de perifricos con la memoria y de instrucciones de load/store en el caso de chips con multincleos. DMA Tipos es til de en aplicaciones transferencia en tiempo DMA real o y en el procesamiento directo de flujos a de datos.

Acceso

memoria

* DMA por robo de ciclo: es uno de los mtodos ms usados, ya que requiere poca utilizacin del CPU. Esta estrategia utiliza uno o ms ciclos de CPU para cada instruccin que se ejecuta. Esto permite alta disponibilidad del bus del sistema para la CPU, aunque la transferencia de datos se har ms lentamente. * DMA por rfagas: esta estrategia consiste en enviar el bloque de datos solicitado mediante una rfaga empleando el bus del sistema hasta finalizar la transferencia. Permite una altsima velocidad, pero la CPU no podr utilizar el bus de sistema durante el tiempo de transferencia, por lo que permanece inactiva. * DMA transparente: esta estrategia consiste en emplear el bus del sistema cuando la CPU no lo necesita. Esto permite que la transferencia no impida que la CPU utilice el bus del sistema; pero la velocidad de transferencia es la ms baja posible. * DMA Scatter-gather: esta estrategia permite transmitir datos a varias reas de memoria en una transaccin DMA simple. Equivale al encadenamiento de mltiples peticiones DMA simples. Su objetivo es librar a la CPU la tarea de la copia de datos e interrupciones de entrada/salida mltiples.

http://www.alegsa.com.ar/Dic/acceso%20directo%20a%20memoria.php