Direct memory access (DMA) is a feature of many computer systems that allows certain hardware subsystems to access main system memory independently of the central processing unit (CPU).[1]
Without DMA, programmed input–output must be used to transfer data which typically fully occupies the CPU for the entire duration of the transfer, and is thus unavailable to perform other work. With DMA, the CPU first initiates the transfer, then it does other operations while the transfer is in progress, and it finally receives an interrupt from the direct memory access controller (DMAC) when the operation is done. This feature is useful at any time that the CPU cannot keep up with the rate of data transfer, or when the CPU needs to perform work while waiting for a relatively slow data transfer.
Many hardware systems use DMA, including disk drive controllers, graphics cards, network cards, sound cards and dedicated DMA controllers (acting on behalf of the aforementioned device types). DMA is also used for intra-chip data transfer in some multi-core processors. Computers that have DMA capability can transfer data to and from devices with much less CPU overhead than computers without DMA.
DMA can also be used for memory-to-memory transfers. DMA can offload expensive memory operations, such as large copies or scatter-gather operations, from the CPU to a DMA controller. An implementation example is the I/O Acceleration Technology. DMA is of interest in network-on-chip and in-memory computing architectures.
While hardware acceleration is usually vendor-specific, direct memory access can be used by the class driver.[2]
Principles
Third-party

El DMA estándar, también llamado DMA de terceros, utiliza un controlador DMA. Un controlador DMA puede generar direcciones de memoria e iniciar ciclos de lectura o escritura de memoria. Contiene varios registros de hardware que la CPU puede leer y escribir. Estos incluyen un registro de dirección de memoria, un registro de conteo y uno o más registros de control. Dependiendo de las características que proporcione el controlador DMA, estos registros de control pueden especificar alguna combinación de la fuente, el destino y la dirección de la transferencia (lectura desde el dispositivo de E/S o escritura en el dispositivo de E/S). [ 3 ]
Para realizar una operación de entrada, salida o de memoria a memoria, el procesador principal inicializa el controlador DMA con el número de palabras a transferir y la dirección de memoria que se utilizará. A continuación, la CPU ordena al dispositivo periférico que inicie la transferencia de datos. El controlador DMA proporciona entonces direcciones y líneas de control de lectura/escritura a la memoria del sistema. Cada vez que un byte de datos está listo para ser transferido entre el dispositivo periférico y la memoria, el controlador DMA incrementa su registro de direcciones interno hasta que se transfiere el bloque completo de datos.
Dominio del autobús
En un sistema de gestión de bus , también conocido como sistema DMA de primera parte , tanto la CPU como los periféricos pueden controlar el bus de memoria. Cuando un periférico se convierte en gestor de bus, puede escribir directamente en la memoria del sistema sin la intervención de la CPU, proporcionando las direcciones de memoria y las señales de control necesarias. Es preciso implementar medidas para que el procesador entre en un estado de espera y así evitar la contención del bus . El propio periférico puede disponer de registros de hardware, como registros de dirección y de conteo, para controlar la operación DMA.
Modos de funcionamiento
Modo ráfaga
En el modo ráfaga , se transfiere un bloque completo de datos en una secuencia continua. Una vez que la CPU concede al controlador DMA acceso al bus del sistema, este transfiere todos los bytes del bloque antes de devolver el control del bus a la CPU, pero la deja inactiva durante periodos de tiempo relativamente largos. Este modo también se conoce como "Modo de transferencia de bloques".
Modo de robo de ciclos
El modo de robo de ciclo se utiliza en sistemas donde la CPU no debe estar inhabilitada durante el tiempo necesario para los modos de transferencia en ráfaga. En este modo, el controlador DMA obtiene acceso al bus del sistema de la misma manera que en el modo ráfaga, utilizando las señales BR ( Solicitud de Bus ) y BG ( Concesión de Bus ) , que controlan la interfaz entre la CPU y el controlador DMA. Sin embargo, en el modo de robo de ciclo, después de transferir una unidad de datos, el control del bus del sistema se libera a la CPU mediante BG. A continuación, se solicita continuamente mediante BR, transfiriendo una unidad de datos por solicitud, hasta que se haya transferido todo el bloque de datos. [ 4 ] Al obtener y liberar continuamente el control del bus del sistema, el controlador DMA intercala esencialmente las transferencias de instrucciones y datos. La CPU procesa una instrucción, luego el controlador DMA transfiere un valor de datos, y así sucesivamente. Los datos no se transfieren tan rápido, pero la CPU no permanece inactiva durante tanto tiempo como en el modo ráfaga. El modo de robo de ciclo es útil para controladores que monitorizan datos en tiempo real.
Modo transparente
El modo transparente es el que más tiempo tarda en transferir un bloque de datos, pero también es el más eficiente en términos de rendimiento general del sistema. En este modo, el controlador DMA transfiere datos únicamente cuando la CPU realiza operaciones que no utilizan los buses del sistema. La principal ventaja del modo transparente es que la CPU nunca deja de ejecutar sus programas y la transferencia DMA es gratuita en términos de tiempo, mientras que la desventaja es que el hardware debe determinar cuándo la CPU no está utilizando los buses del sistema, lo cual puede ser complejo. Este modo también se conoce como " Modo de transferencia de datos DMA oculto ".
Coherencia de caché
![]()
El acceso directo a memoria (DMA) puede provocar problemas de coherencia de caché . Imaginemos una CPU equipada con una caché y una memoria externa a la que los dispositivos pueden acceder directamente mediante DMA. Cuando la CPU accede a la ubicación X en la memoria, el valor actual se almacena en la caché. Las operaciones posteriores sobre X actualizan la copia en caché de X, pero no la versión de X en la memoria externa, suponiendo una caché de escritura diferida . Si la caché no se vacía en la memoria antes de que un dispositivo intente acceder a X de nuevo, recibirá un valor obsoleto de X.
Del mismo modo, si la copia almacenada en caché de X no se invalida cuando un dispositivo escribe un nuevo valor en la memoria, la CPU operará con un valor obsoleto de X.
Este problema puede abordarse de dos maneras en el diseño del sistema: Los sistemas con coherencia de caché implementan un método en hardware, llamado " bus snooping" , mediante el cual las escrituras externas se señalan al controlador de caché, que luego realiza una invalidación de caché para escrituras DMA o un vaciado de caché para lecturas DMA. Los sistemas sin coherencia dejan esto al software, donde el sistema operativo debe asegurarse de que las líneas de caché se vacíen antes de que se inicie una transferencia DMA saliente y se invaliden antes de que se acceda a un rango de memoria afectado por una transferencia DMA entrante. El sistema operativo debe asegurarse de que ningún hilo en ejecución acceda a dicho rango de memoria mientras tanto. Este último enfoque introduce cierta sobrecarga en la operación DMA, ya que la mayoría del hardware requiere un bucle para invalidar cada línea de caché individualmente.
También existen sistemas híbridos, en los que la caché L2 secundaria es coherente, mientras que la caché L1 (normalmente en la CPU) es gestionada por software.
Ejemplos
ISA
En el IBM PC original (y el PC/XT posterior ), solo había un controlador DMA Intel 8237 capaz de proporcionar cuatro canales DMA (numerados del 0 al 3). Estos canales DMA realizaban transferencias de 8 bits (ya que el 8237 era un dispositivo de 8 bits, idealmente adaptado a la arquitectura de CPU/bus i8088 del PC ), solo podían direccionar el primer megabyte de RAM ( estándar i8086 /8088) y estaban limitados a direccionar segmentos individuales de 64 kB dentro de ese espacio (aunque los canales de origen y destino podían direccionar segmentos diferentes). Además, el controlador solo podía usarse para transferencias hacia, desde o entre dispositivos de E/S del bus de expansión, ya que el 8237 solo podía realizar transferencias de memoria a memoria usando los canales 0 y 1, de los cuales el canal 0 en el PC (y XT) estaba dedicado a la actualización dinámica de la memoria . Esto impedía que se utilizara como un " Blitter " de propósito general y, en consecuencia, los movimientos de memoria de bloques en el PC, limitados por la velocidad PIO general de la CPU, eran muy lentos.
Con el IBM PC/AT , el bus AT mejorado (más conocido retronombrado como Arquitectura Estándar de la Industria (ISA)) agregó un segundo controlador DMA 8237 para proporcionar tres canales adicionales y, como lo evidenciaron los conflictos de recursos con la capacidad de expansión adicional del XT sobre el PC original, muy necesarios (5-7; el canal 4 se usa en cascada al primer 8237). El ancho de bus de direcciones de 24 bits extendido del DMA ISA le permite acceder hasta 16 MB de memoria inferior. [ 5 ] El registro de página también se reconectó para direccionar el espacio de direcciones de memoria completo de 16 MB de la CPU 80286. Este segundo controlador también se integró de forma que pudiera realizar transferencias de 16 bits cuando se utiliza un dispositivo de E/S como origen o destino de datos (ya que en realidad solo procesa datos para transferencias de memoria a memoria, controlando simplemente el flujo de datos entre otras partes del sistema de 16 bits, lo que hace que el ancho de su propio bus de datos sea relativamente irrelevante), duplicando así el rendimiento de datos cuando se utilizan los tres canales superiores.
Para garantizar la compatibilidad, los cuatro canales DMA inferiores seguían limitados a transferencias de 8 bits, y aunque las transferencias de memoria a memoria eran técnicamente posibles gracias a que el canal 0 ya no tenía que gestionar la actualización de la DRAM, en la práctica resultaban de escaso valor debido al bajo rendimiento del controlador en comparación con lo que la CPU podía alcanzar (es decir, un 80286 de 16 bits, más optimizado , funcionando a un mínimo de 6 MHz, frente a un controlador de 8 bits bloqueado a 4,77 MHz). En ambos casos, persistía el problema del límite de segmento de 64 kB , con transferencias individuales incapaces de cruzar segmentos (en su lugar, "dando la vuelta" al inicio del mismo segmento) incluso en modo de 16 bits, aunque en la práctica esto era más un problema de complejidad de programación que de rendimiento, ya que la necesidad continua de que la actualización de la DRAM (independientemente de cómo se gestionara) monopolizara el bus aproximadamente cada 15 μs impedía el uso de transferencias de bloques grandes (y rápidas, pero ininterrumpibles).
Debido a su rendimiento deficiente ( capacidad máxima de transferencia de 8 bits de 1,6 MB /s a 5 MHz, [ 6 ] pero no más de 0,9 MB/s en el PC/XT y 1,6 MB/s para transferencias de 16 bits en el AT debido a la sobrecarga del bus ISA y otras interferencias como interrupciones de actualización de memoria [ 1 ] ) y la falta de disponibilidad de grados de velocidad que permitieran la instalación de reemplazos directos que operaran a velocidades superiores al reloj estándar de 4,77 MHz del PC original , estos dispositivos han estado efectivamente obsoletos desde finales de la década de 1980.
Sistemas 80386 y de 32 bits
En particular, la llegada del procesador 80386 en 1985 y su capacidad para transferencias de 32 bits (aunque las grandes mejoras en la eficiencia del cálculo de direcciones y los movimientos de memoria de bloques en las CPU de Intel después del 80186 significaron que las transferencias PIO incluso por el bus de 16 bits 286 y 386SX aún podían superar fácilmente al 8237), así como el desarrollo de evoluciones posteriores ( EISA ) o reemplazos para ( MCA , VLB y PCI ) del bus "ISA" con sus propios subsistemas DMA de rendimiento mucho mayor (hasta un máximo de 33 MB/s para EISA, 40 MB/s MCA, típicamente 13 MB/s VLB/PCI) hicieron que los controladores DMA originales parecieran más una carga de rendimiento que un impulsor. Se les dio soporte en la medida en que son necesarios para dar soporte al hardware de PC heredado integrado en máquinas posteriores.
Los componentes de hardware heredados que continuaron utilizando ISA DMA después de que los buses de expansión de 32 bits se generalizaran fueron las tarjetas Sound Blaster , que necesitaban mantener la compatibilidad total del hardware con el estándar Sound Blaster ; y los dispositivos Super I/O en las placas base, que a menudo integraban un controlador de disquete incorporado , un controlador de infrarrojos IrDA cuando se seleccionaba el modo FIR (infrarrojo rápido) y un controlador de puerto paralelo IEEE 1284 cuando se seleccionaba el modo ECP. En los casos en que todavía se utilizaban los 8237 originales o compatibles directos, la transferencia hacia o desde estos dispositivos aún podía estar limitada a los primeros 16 MB de RAM principal, independientemente del espacio de direcciones real del sistema o la cantidad de memoria instalada.
Cada canal DMA tiene asociado un registro de dirección de 16 bits y un registro de conteo de 16 bits. Para iniciar una transferencia de datos, el controlador del dispositivo configura los registros de dirección y conteo del canal DMA, junto con la dirección de la transferencia (lectura o escritura). A continuación, indica al hardware DMA que inicie la transferencia. Una vez completada la transferencia, el dispositivo interrumpe la CPU.
El acceso directo a memoria (DMA) de dispersión-recolección o de E/S vectorizada permite la transferencia de datos desde y hacia múltiples áreas de memoria en una sola transacción DMA. Es equivalente a encadenar varias solicitudes DMA simples. El objetivo es descargar de la CPU múltiples tareas de interrupción de entrada/salida y copia de datos.
DRQ significa Solicitud de datos ; DACK, Confirmación de datos . Estos símbolos, que aparecen en los diagramas de hardware de los sistemas informáticos con funcionalidad DMA, representan las líneas de señalización electrónica entre la CPU y el controlador DMA. Cada canal DMA tiene una línea de Solicitud y una de Confirmación. Un dispositivo que utiliza DMA debe configurarse para usar ambas líneas del canal DMA asignado.
La arquitectura ISA de 16 bits permitía el control maestro del bus. [ 7 ]
Asignaciones DMA estándar de ISA:
- Actualización de DRAM (obsoleto)
- El hardware del usuario suele ser una tarjeta de sonido ISA.
- Controlador de disquetes
- WDMA para controlador de disco duro (sustituido por modos UDMA ), puerto paralelo (puerto compatible con ECP) o ciertos clones de SoundBlaster como el OPTi 928.
- Controlador DMA 8237
- Controlador de disco duro ( solo PS/2 ) o hardware del usuario, normalmente una tarjeta de sonido ISA.
- Hardware del usuario
- Hardware del usuario
PCI
A diferencia de ISA, la arquitectura PCI no cuenta con un controlador DMA central. En cambio, un dispositivo PCI puede solicitar el control del bus ("convertirse en el maestro del bus ") y solicitar acceso a la memoria del sistema para leer y escribir en ella. Más precisamente, un componente PCI solicita la propiedad del bus al controlador del bus PCI (generalmente el puente host PCI y el puente PCI a PCI [ 8 ] ), que arbitrará si varios dispositivos solicitan la propiedad del bus simultáneamente, ya que solo puede haber un maestro del bus a la vez. Cuando se le concede la propiedad al componente, este emitirá comandos normales de lectura y escritura en el bus PCI, que serán reclamados por el controlador del bus PCI.
Por ejemplo, en un PC con procesador Intel Core , el puente sur reenviará las transacciones al controlador de memoria (integrado en el chip de la CPU) mediante DMI , que a su vez las convertirá en operaciones DDR y las enviará a través del bus de memoria. En consecuencia, una transferencia PCI DMA implica varios pasos; sin embargo, esto no supone un gran problema, ya que el dispositivo PCI o el bus PCI en sí son mucho más lentos que el resto de los componentes (véase la lista de anchos de banda de los dispositivos ).
Una CPU x86 moderna puede usar más de 4 GB de memoria, ya sea utilizando el modo nativo de 64 bits de la CPU x86-64 o la Extensión de Dirección Física (PAE), un modo de direccionamiento de 36 bits. En tal caso, un dispositivo que usa DMA con un bus de direcciones de 32 bits no puede direccionar memoria por encima de la línea de 4 GB. El nuevo mecanismo de Ciclo de Dirección Doble (DAC), si se implementa tanto en el bus PCI como en el propio dispositivo, [ 9 ] permite el direccionamiento DMA de 64 bits. De lo contrario, el sistema operativo tendría que solucionar el problema utilizando costosos búferes dobles (nomenclatura de DOS/Windows), también conocidos como búferes de rebote ( FreeBSD /Linux), o podría usar una IOMMU para proporcionar servicios de traducción de direcciones si está presente.
I/OAT
Como ejemplo de un motor DMA incorporado en una CPU de propósito general, algunos chipsets Intel Xeon incluyen un motor DMA llamado Tecnología de Aceleración de E/S (I/OAT), que puede descargar la copia de memoria de la CPU principal, liberándola para realizar otras tareas. [ 10 ] En 2006, Andrew Grover, desarrollador del kernel de Linux de Intel , realizó pruebas de rendimiento utilizando I/OAT para descargar las copias de tráfico de red y no encontró una mejora superior al 10 % en la utilización de la CPU con cargas de trabajo de recepción. [ 11 ]
DDIO
Se han introducido mejoras adicionales orientadas al rendimiento en el mecanismo DMA en los procesadores Intel Xeon E5 con su función Data Direct I/O ( DDIO ), que permite que las "ventanas" DMA residan en las cachés de la CPU en lugar de la RAM del sistema. Como resultado, las cachés de la CPU se utilizan como origen y destino principal para la E/S, lo que permite a los controladores de interfaz de red (NIC) realizar DMA directamente a la caché de último nivel (caché L3) de las CPU locales y evitar la costosa recuperación de los datos de E/S de la RAM del sistema. Como resultado, DDIO reduce la latencia general del procesamiento de E/S, permite que el procesamiento de E/S se realice completamente en la caché, evita que el ancho de banda/latencia de la RAM disponible se convierta en un cuello de botella de rendimiento y puede reducir el consumo de energía al permitir que la RAM permanezca más tiempo en un estado de bajo consumo. [ 12 ] [ 13 ] [ 14 ] [ 15 ]
AHB
En los sistemas en chip y los sistemas embebidos , la infraestructura típica del bus del sistema es un bus complejo integrado en el chip, como el bus de alto rendimiento AMBA . AMBA define dos tipos de componentes AHB: maestro y esclavo. Una interfaz esclava es similar a una E/S programada, a través de la cual el software (que se ejecuta en una CPU embebida, por ejemplo, ARM ) puede escribir/leer registros de E/S o (con menos frecuencia) bloques de memoria local dentro del dispositivo. Una interfaz maestra puede ser utilizada por el dispositivo para realizar transacciones DMA hacia/desde la memoria del sistema sin sobrecargar la CPU.
Por lo tanto, los dispositivos de alto ancho de banda, como los controladores de red que necesitan transferir grandes cantidades de datos desde y hacia la memoria del sistema, contarán con dos adaptadores de interfaz para el bus AHB: una interfaz maestra y una esclava. Esto se debe a que los buses integrados en el chip, como el AHB, no admiten la conmutación de tres estados ni la alternancia de la dirección de ninguna línea del bus. Al igual que en PCI, no se requiere un controlador DMA central, ya que el DMA es de tipo maestro de bus, pero sí se requiere un árbitro en caso de que haya varios maestros en el sistema.
Internamente, el dispositivo suele contar con un motor DMA multicanal para realizar múltiples operaciones simultáneas de dispersión y recolección, según lo programado por el software.
Celúla
Como ejemplo del uso de DMA en un sistema multiprocesador en chip , el procesador Cell de IBM/Sony/Toshiba incorpora un motor DMA para cada uno de sus 9 elementos de procesamiento, incluyendo un elemento de procesador Power (PPE) y ocho elementos de procesador sinérgicos (SPE). Dado que las instrucciones de carga/almacenamiento del SPE solo pueden leer/escribir en su propia memoria local, un SPE depende completamente de DMA para transferir datos desde y hacia la memoria principal y las memorias locales de otros SPE. Por lo tanto, el DMA actúa como un medio principal de transferencia de datos entre los núcleos dentro de esta CPU (a diferencia de las arquitecturas CMP con coherencia de caché, como la GPU de propósito general cancelada de Intel , Larrabee ).
DMA en Cell es totalmente coherente con la caché (sin embargo, tenga en cuenta que las memorias locales de los SPE operados por DMA no actúan como una caché globalmente coherente en el sentido estándar ). Tanto en lectura ("get") como en escritura ("put"), un comando DMA puede transferir un único bloque de hasta 16 KB o una lista de entre 2 y 2048 bloques. El comando DMA se emite especificando un par formado por una dirección local y una dirección remota: por ejemplo, cuando un programa SPE emite un comando DMA de escritura, especifica una dirección de su propia memoria local como origen y una dirección de memoria virtual (que apunta a la memoria principal o a la memoria local de otro SPE) como destino, junto con un tamaño de bloque. Según un experimento, el rendimiento máximo efectivo de DMA en Cell (3 GHz, bajo tráfico uniforme) alcanza los 200 GB por segundo. [ 16 ]
chips controladores DMA
- Intel 8257
- Am9517 [ 17 ]
- Intel 8237
- Z80 DMA [ 18 ]
- LH0083, [ 19 ] compatible con Z80 DMA
- μPD71037, [ 20 ] capaz de direccionar una memoria de 64K bytes
- μPD71071, [ 21 ] capaz de direccionar una memoria de 16 Mbytes
Tuberías
Los procesadores con memoria de acceso rápido y DMA (como los procesadores de señales digitales y el procesador Cell ) pueden beneficiarse de la superposición por software de las operaciones de memoria DMA con el procesamiento, mediante doble búfer o búfer múltiple. Por ejemplo, la memoria integrada se divide en dos búferes; el procesador puede estar operando con los datos en uno, mientras que el motor DMA carga y almacena datos en el otro. Esto permite al sistema evitar la latencia de la memoria y aprovechar las transferencias en ráfaga , a costa de necesitar un patrón de acceso a la memoria predecible .
Véase también
- AT Attachment – Estándar de interfaz de almacenamiento informático Páginas que muestran breves descripciones de destinos de redireccionamiento
- Funcionamiento periférico autónomo : función de hardware del microcontrolador para la descarga de tareas.
- Blitter : circuito integrado para la sincronización rápida de datos.
- E/S de canal : arquitectura de entrada/salida de alto rendimiento
- Ataque DMA : ciberataque que explota puertos de expansión de alta velocidad.
- E/S mapeada en memoria : método de comunicación de la CPU Páginas que muestran breves descripciones de destinos de redireccionamiento
- Aceleración por hardware : hardware informático especializado.
- Procesamiento en memoria : tecnología de procesamiento de datos
- Gestión de memoria : metodología de gestión de memoria informática
- Red en un chip : subsistema de comunicación electrónica en un circuito integrado.
- Sondeo (informática) – Proceso de muestreo del estado del dispositivo
- Acceso directo a memoria remota : acceso directo a memoria de hardware de bajo nivel
- UDMA : método de transferencia de datos para discos duros ATA
- Servicios DMA virtuales
Referencias
- 1 2 "Fundamentos de DMA en diversas plataformas de PC, National Instruments, páginas 6 y 7" (PDF) . Universidad de Colorado Boulder . Consultado el 26 de abril de 2025 .
- ↑ "DMA USB — Documentación del kernel de Linux" . www.kernel.org . Consultado el 28 de septiembre de 2025 .
- ↑ Osborne, Adam (1980). Introducción a los microordenadores: Volumen 1: Conceptos básicos (2.ª ed.). Osborne McGraw Hill. págs. 5-67 a 5-93. ISBN 0931988349.
- ↑ Hayes, John P. (1978). Arquitectura y organización de computadoras . McGraw-Hill International Book Company. págs. 426-427. ISBN 0-07-027363-4.
- ↑ "ISA DMA - OSDev Wiki" . wiki.osdev.org . Consultado el 20 de abril de 2025 .
- ↑ "Hoja de datos de Intel 8237 y 8237-2" (PDF) . Subsitio JKbox RC702 . Consultado el 20 de abril de 2019 .
- ↑ Intel Corp. (25/04/2003), "Capítulo 12: Bus ISA" (PDF) , Arquitectura de PC para técnicos: Nivel 1 , consultado el 27/01/2015.
- ↑ "Especificaciones del bus: escritura de controladores de dispositivos para Oracle® Solaris 11.3" . docs.oracle.com . Consultado el 18 de diciembre de 2020 .
- ↑ "Extensión de dirección física : memoria PAE y Windows" . Centro de desarrollo de hardware de Microsoft Windows. 2005. Consultado el 7 de abril de 2008 .
- ↑ Corbet, Jonathan (8 de diciembre de 2005). "Copias de memoria en hardware" . LWN.net .
- ↑ Grover, Andrew (1 de junio de 2006). "I/OAT en la wiki de LinuxNet" . Descripción general de I/OAT en Linux, con enlaces a varios benchmarks . Archivado del original el 5 de mayo de 2016. Consultado el 12 de diciembre de 2006 .
- ↑ "Intel Data Direct I/O (Intel DDIO): Preguntas frecuentes" (PDF) . Intel . Marzo de 2012. Consultado el 11 de octubre de 2015 .
- ↑ Rashid Khan (29-09-2015). "Llevando al límite las redes del kernel" . redhat.com . Consultado el 11-10-2015 .
- ↑ "Logrando las latencias más bajas a las tasas de mensajes más altas con el procesador Intel Xeon E5-2600 y el adaptador de servidor Solarflare SFN6122F de 10 GbE" (PDF) . solarflare.com . 7 de junio de 2012. Consultado el 11 de octubre de 2015 .
- ↑ Alexander Duyck (19 de agosto de 2015). "Llevando al límite las redes del kernel" (PDF) . linuxfoundation.org . pág. 5. Consultado el 11 de octubre de 2015 .
- ↑ Kistler, Michael (mayo de 2006). "Red de comunicación multiprocesador celular: diseñada para la velocidad" . IEEE Micro . 26 (3): 10–23 . doi : 10.1109/MM.2006.49 . S2CID 7735690 .
- ↑ "Controlador DMA multimodo Am9517A" (PDF) . Consultado el 6 de enero de 2024 .
- ↑ "Controlador de acceso directo a memoria DMA Z80®" (PDF) . Consultado el 7 de enero de 2024 .
- ↑ "Sharp 1986 Semiconductor Data Book" (PDF) . págs. 255-269 . Consultado el 13 de enero de 2024 .
- ↑ "Controlador de acceso directo a memoria (DMA) pPD71037" (PDF) . pág. 832(5b1) . Consultado el 6 de enero de 2024 .
- ↑ "Controlador DMA µPD71071" (PDF) . pág. 940(5g1) . Consultado el 5 de enero de 2024 .
Fuentes
- Fundamentos de DMA en diversas plataformas de PC , por AF Harvey y el personal de la División de Adquisición de Datos de NATIONAL INSTRUMENTS
- mmap() y DMA , de Linux Device Drivers, 2.ª edición , Alessandro Rubini y Jonathan Corbet
- Mapeo de memoria y DMA , de Controladores de dispositivos Linux, 3.ª edición , Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
- DMA y gestión de interrupciones
- Modos DMA y gestión de bus
Enlaces externos
- Dominando las API de DMA e IOMMU , Conferencia de Linux Embebido 2014, San José, por Laurent Pinchart
- Memoria de computadora
- Placa madre
- buses de almacenamiento informático
- aceleración de hardware
- Entrada/salida