Sei sulla pagina 1di 6

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 se basa en el Intel 8237, el cul 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%.