stringtranslate.com

Memoria de acceso directo

El acceso directo a la memoria ( DMA ) es una característica de los sistemas informáticos que permite que ciertos subsistemas de hardware accedan a la memoria principal del sistema independientemente de la unidad central de procesamiento (CPU).

Sin DMA, cuando la CPU utiliza entrada/salida programada , normalmente está completamente ocupada durante toda la operación de lectura o escritura y, por lo tanto, no está disponible para realizar otro trabajo. Con DMA, la CPU primero inicia la transferencia, luego realiza otras operaciones mientras la transferencia está en progreso y finalmente recibe una interrupción del controlador DMA (DMAC) cuando finaliza la operación. Esta característica es útil en cualquier momento en que la CPU no pueda mantener el ritmo de transferencia de datos, o cuando la CPU necesita realizar un trabajo mientras espera una transferencia de datos de E/S relativamente lenta. Muchos sistemas de hardware utilizan DMA, incluidos controladores de unidades de disco , tarjetas gráficas , tarjetas de red y tarjetas de sonido . DMA también se utiliza para la transferencia de datos dentro del chip en algunos procesadores multinúcleo . Las computadoras que tienen canales DMA pueden transferir datos hacia y desde dispositivos con mucha menos sobrecarga de CPU que las computadoras sin canales DMA. De manera similar, un circuito de procesamiento dentro de un procesador multinúcleo puede transferir datos hacia y desde su memoria local sin ocupar tiempo de procesador, permitiendo que el cálculo y la transferencia de datos se realicen en paralelo.

DMA también se puede utilizar para copiar o mover datos "de memoria a memoria" dentro de la memoria. DMA puede descargar costosas operaciones de memoria, como copias grandes u operaciones de dispersión , desde la CPU a un motor DMA dedicado. Un ejemplo de implementación es la tecnología de aceleración de E/S . DMA es de interés en arquitecturas informáticas de red en chip y en memoria .

Principios

Tercero

Placa base de una computadora NeXTcube (1990). Los dos grandes circuitos integrados debajo del centro de la imagen son el controlador DMA (izq.) y, algo inusual, un controlador DMA dedicado adicional (dcha.) para el disco magnetoóptico utilizado en lugar de una unidad de disco duro en la primera serie de este modelo de computadora.

La DMA estándar, también llamada 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 escribir y leer. Estos incluyen un registro de dirección de memoria, un registro de recuento de bytes y uno o más registros de control. Dependiendo de las características que proporciona el controlador DMA, estos registros de control pueden especificar alguna combinación del origen, el destino, la dirección de la transferencia (lectura desde el dispositivo de E/S o escritura en el dispositivo de E/S), el tamaño del unidad de transferencia y/o el número de bytes a transferir en una ráfaga. [1]

Para llevar a cabo una operación de entrada, salida o de memoria a memoria, el procesador host inicializa el controlador DMA con un recuento del número de palabras a transferir y la dirección de memoria a utilizar. Luego, la CPU ordena al dispositivo periférico que inicie una transferencia de datos. Luego, el controlador DMA proporciona 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 dirección interno hasta que se transfiere el bloque completo de datos.

Masterización del autobús

En un sistema de masterización de bus , también conocido como sistema DMA propio, a la CPU y a los periféricos se les puede otorgar el control del bus de memoria. Cuando un periférico puede convertirse en un bus maestro, puede escribir directamente en la memoria del sistema sin la participación de la CPU, proporcionando direcciones de memoria y señales de control según sea necesario. Se deben proporcionar algunas medidas para poner el procesador en condición de espera para que no se produzca contención en el bus.

Modos de operacion

Modo de ráfaga

En el modo ráfaga , se transfiere un bloque completo de datos en una secuencia contigua. Una vez que la CPU concede al controlador DMA acceso al bus del sistema, transfiere todos los bytes de datos en el bloque de datos antes de liberar el control de los buses del sistema a la CPU, pero deja la CPU inactiva durante períodos de tiempo relativamente largos. El modo también se llama "Modo de transferencia en bloque".

Modo de robo de ciclos

El modo de robo de ciclos se utiliza en sistemas en los que la CPU no debe desactivarse durante el tiempo necesario para los modos de transferencia en ráfaga. En el modo de robo de ciclo, el controlador DMA obtiene acceso al bus del sistema de la misma manera que en el modo ráfaga, utilizando señales BR ( Bus Request ) y BG ( Bus Grant ) , que son las dos señales que controlan la interfaz entre la CPU y el Controlador DMA. Sin embargo, en el modo de robo de ciclo, después de una unidad de transferencia de datos, el control del bus del sistema se retira a la CPU a través de BG. Luego se vuelve a solicitar continuamente a través de BR, transfiriendo una unidad de datos por solicitud, hasta que se haya transferido todo el bloque de datos. [2] Al obtener y liberar continuamente el control del bus del sistema, el controlador DMA esencialmente entrelaza 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 tanto tiempo como en el modo ráfaga. El modo de robo de ciclos es útil para controladores que monitorean datos en tiempo real.

Modo transparente

El modo transparente tarda más tiempo en transferir un bloque de datos, pero también es el modo más eficiente en términos de rendimiento general del sistema. En modo transparente, el controlador DMA transfiere datos solo 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 necesita determinar cuándo la CPU no está utilizando los buses del sistema, lo que puede ser complejo. . Esto también se denomina " modo de transferencia de datos DMA oculto ".

Coherencia de caché

Incoherencia de caché debido a DMA

DMA puede provocar problemas de coherencia de la caché . Imagine una CPU equipada con un 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 almacenará en la caché. Las operaciones posteriores en X actualizarán la copia almacenada en caché de X, pero no la versión de la memoria externa de X, suponiendo una caché de reescritura . Si el caché no se vacía en la memoria antes de la próxima vez que un dispositivo intente acceder a X, el dispositivo recibirá un valor obsoleto de X.

De manera similar, si la copia almacenada en caché de X no se invalida cuando un dispositivo escribe un nuevo valor en la memoria, entonces la CPU funcionará con un valor obsoleto de X.

Este problema se puede abordar de dos maneras en el diseño del sistema: Los sistemas coherentes con la caché implementan un método en el hardware, llamado bus snooping , mediante el cual las escrituras externas se envían al controlador de caché, que luego realiza una invalidación de caché para escrituras DMA o un vaciado de caché para DMA lee. Los sistemas no coherentes dejan esto en manos del 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. Mientras tanto, el sistema operativo debe asegurarse de que ningún subproceso en ejecución acceda al rango de memoria. 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 híbridos, donde la caché L2 secundaria es coherente mientras que la caché L1 (normalmente en la CPU) se gestiona mediante software.

Ejemplos

ES UN

En la PC IBM original (y la 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 de la PC ), solo podían abordar el primer megabyte de RAM ( estándar i8086 /8088) y estaban limitados. para abordar segmentos individuales de 64  kB dentro de ese espacio (aunque los canales de origen y destino podrían abordar segmentos diferentes). Además, el controlador sólo se podía utilizar para transferencias hacia, desde o entre dispositivos de E/S del bus de expansión, ya que el 8237 sólo podía realizar transferencias de memoria a memoria utilizando los canales 0 y 1, de los cuales el canal 0 en la PC (y XT ) estaba dedicado a la actualización dinámica de la memoria . Esto impedía que fuera utilizado como un " Blitter " de propósito general y, en consecuencia, los movimientos de memoria de bloque en la PC, limitados por la velocidad general PIO de la CPU, eran muy lentos.

Con IBM PC/AT , el bus AT mejorado (más conocido como Arquitectura estándar industrial (ISA) agregó un segundo controlador DMA 8237 para proporcionar tres adicionales y, como se destaca por los conflictos de recursos con la capacidad de expansión adicional del XT sobre la PC original, canales muy necesarios (5–7; el canal 4 se utiliza como cascada para el primer 8237). El registro de página también se recableó para abordar el espacio completo de direcciones de memoria de 16 MB de la CPU 80286. Este segundo controlador también se integró en un manera capaz de realizar transferencias de 16 bits cuando se utiliza un dispositivo de E/S como fuente y/o destino de datos (ya que en realidad solo procesa datos para transferencias de memoria a memoria; de lo contrario, simplemente controla el flujo de datos entre otras partes de el sistema de 16 bits, lo que hace que su propio ancho de bus de datos sea relativamente irrelevante), duplicando el rendimiento de datos cuando se utilizan los tres canales superiores. Por compatibilidad, los cuatro canales DMA inferiores todavía estaban limitados a transferencias de 8 bits únicamente, y aunque la memoria a Aunque las transferencias de memoria ahora eran técnicamente posibles debido a la liberación del canal 0 de tener que manejar la actualización de la DRAM, desde un punto de vista práctico tenían un valor limitado debido al consiguiente bajo rendimiento del controlador en comparación con lo que la CPU podía lograr ahora (es decir, un 80286 de 16 bits, más optimizado , que funciona a un mínimo de 6 MHz, frente a un controlador de 8 bits bloqueado a 4,77 MHz). En ambos casos, el problema de los límites del segmento de 64 kB persistió, con transferencias individuales incapaces de cruzar segmentos (en lugar de "envolver" al inicio del mismo segmento) incluso en modo de 16 bits, aunque en la práctica esto era más un problema de programación. complejidad que el rendimiento, ya que la necesidad continua de actualización de DRAM (como sea que se maneje) para monopolizar el bus aproximadamente cada 15  μs impidió el uso de transferencias de bloques grandes (y rápidas, pero ininterrumpibles).

Debido a su rendimiento retrasado (  capacidad máxima de transferencia de 8 bits de 1,6 MB /s a 5 MHz, [3] pero no más de 0,9 MB/s en PC/XT y 1,6 MB/s para transferencias de 16 bits en AT debido debido a los gastos generales del bus ISA y otras interferencias, como interrupciones en la actualización de la memoria [4] ) y la falta de disponibilidad de grados de velocidad que permitirían la instalación de reemplazos directos que funcionen a velocidades superiores al reloj estándar de 4,77 MHz de la PC original, estos dispositivos han quedado efectivamente obsoletos desde la finales de los años 1980. En particular, la llegada del procesador 80386 en 1985 y su capacidad para transferencias de 32 bits (aunque grandes mejoras en la eficiencia del cálculo de direcciones y movimientos de memoria de bloque en las CPU Intel después del 80186 significaron que las transferencias PIO incluso mediante el bus de 16 bits 286 y 386SX aún podrían superar fácilmente al 8237), así como el desarrollo de nuevas evoluciones ( EISA ) o reemplazos ( 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, normalmente 133 MB/s VLB/PCI) hacían que los controladores DMA originales parecieran más una piedra de molino de rendimiento que un refuerzo. Fueron compatibles en la medida necesaria para admitir hardware de PC heredado integrado en máquinas posteriores. Las piezas de hardware heredado que continuaron usando ISA DMA después de que los buses de expansión de 32 bits se volvieron comunes fueron las tarjetas Sound Blaster que necesitaban mantener total compatibilidad de hardware con el estándar Sound Blaster; y dispositivos Super I/O en placas base que a menudo integraban un controlador de disquete incorporado , un controlador de infrarrojos IrDA cuando se selecciona el modo FIR (infrarrojo rápido) y un controlador de puerto paralelo IEEE 1284 cuando se selecciona el modo ECP. En los casos en los que todavía se utiliza un 8237 original o compatible directo, la transferencia hacia o desde estos dispositivos aún puede 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 un registro de dirección de 16 bits y un registro de conteo de 16 bits asociado. Para iniciar una transferencia de datos, el controlador del dispositivo configura la dirección del canal DMA y cuenta los registros junto con la dirección de la transferencia de datos, lectura o escritura. Luego indica al hardware DMA que comience la transferencia. Cuando se completa la transferencia, el dispositivo interrumpe la CPU.

DMA de E/S vectorial o de dispersión dispersa permite la transferencia de datos hacia y desde múltiples áreas de memoria en una sola transacción DMA. Es equivalente a encadenar múltiples solicitudes DMA simples. La motivación es descargar múltiples tareas de copia de datos e interrupciones de entrada/salida de la CPU.

DRQ significa solicitud de datos ; DACK para reconocimiento de datos . Estos símbolos, que se ven en los esquemas de hardware de los sistemas informáticos con funcionalidad DMA, representan 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 Acuse de recibo. Un dispositivo que usa DMA debe configurarse para usar ambas líneas del canal DMA asignado.

Masterización de bus permitida por ISA de 16 bits. [5]

Asignaciones estándar ISA DMA:

  1. Actualización de DRAM (obsoleta)
  2. Hardware de usuario, normalmente tarjeta de sonido DMA de 8 bits.
  3. Controlador de disquete
  4. Disco duro (obsoleto por los modos PIO y reemplazado por los modos UDMA ), puerto paralelo (puerto compatible con ECP), ciertos clones de SoundBlaster como el OPTi 928
  5. Cascada al controlador PC/XT DMA
  6. Disco duro ( solo PS/2 ), hardware de usuario para todos los demás, normalmente tarjeta de sonido DMA de 16 bits
  7. Hardware de usuario
  8. Hardware de usuario

PCI

Una arquitectura PCI no tiene un controlador DMA central, a diferencia de ISA. En cambio, un dispositivo PCI puede solicitar el control del bus ("convertirse en el maestro del bus ") y solicitar leer y escribir en la memoria del sistema. Más precisamente, un componente PCI solicita la propiedad del bus al controlador de bus PCI (generalmente el puente de host PCI y el puente PCI a PCI [6] ), que arbitrará si varios dispositivos solicitan la propiedad del bus simultáneamente, ya que solo puede haber un bus maestro en una vez. Cuando se le concede la propiedad al componente, emitirá comandos normales de lectura y escritura en el bus PCI, que serán reclamados por el controlador del bus PCI.

Como ejemplo, en una PC basada en Intel Core , el puente sur reenviará las transacciones al controlador de memoria (que está integrado en la CPU) usando DMI , que a su vez las convertirá en operaciones DDR y las enviará a la memoria. autobús. Como resultado, hay una gran cantidad de pasos involucrados en una transferencia PCI DMA; sin embargo, eso no supone ningún problema, ya que el dispositivo PCI o el propio bus PCI son un orden de magnitud más lento que el resto de los componentes (consulte la lista de anchos de banda de dispositivos ).

Una CPU x86 moderna puede utilizar 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 utiliza DMA con un bus de direcciones de 32 bits no puede direccionar la memoria por encima de la línea de 4 GB. El nuevo mecanismo de ciclo de doble dirección (DAC), si se implementa tanto en el bus PCI como en el dispositivo mismo, [7] permite el direccionamiento DMA de 64 bits. De lo contrario, el sistema operativo necesitaría solucionar el problema utilizando costosos buffers dobles (nomenclatura DOS/Windows), también conocidos como buffers de rebote ( FreeBSD /Linux), o podría usar una IOMMU para proporcionar servicios de traducción de direcciones, si hay una presente. .

yo/avena

Como ejemplo de motor DMA incorporado en una CPU de uso general, algunos conjuntos de chips Intel Xeon incluyen un motor DMA llamado Tecnología de aceleración de E/S (I/OAT), que puede descargar la copia de memoria desde la CPU principal, liberándola para realizar otros trabajos. . [8] En 2006, el desarrollador del kernel Linux de Intel , Andrew Grover, realizó pruebas comparativas utilizando I/OAT para descargar copias de tráfico de red y no encontró más del 10% de mejora en la utilización de la CPU con cargas de trabajo de recepción. [9]

DDIO

Se han introducido más mejoras orientadas al rendimiento en el mecanismo DMA en los procesadores Intel Xeon E5 con su función Data Direct I/O ( DDIO ), lo que permite que las "ventanas" DMA residan dentro de las cachés de la CPU en lugar de en la RAM del sistema. Como resultado, las memorias caché de la CPU se utilizan como origen y destino principal para las E/S, lo que permite que los controladores de interfaz de red (NIC) realicen DMA directamente a la caché de último nivel (caché L3) de las CPU locales y eviten la costosa recuperación de las E/S. datos 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 caché, evita que el ancho de banda/latencia de la RAM disponible se convierta en un cuello de botella en el rendimiento y puede reducir el consumo de energía al permitir La RAM permanecerá más tiempo en estado de bajo consumo. [10] [11] [12] [13]

AHB

En sistemas integrados y en sistemas en un chip , la infraestructura típica de bus del sistema es un bus en chip complejo, 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 integrada, por ejemplo ARM ) puede escribir/leer registros de E/S o (menos comúnmente) bloques de memoria local dentro del dispositivo. El dispositivo puede utilizar una interfaz maestra para realizar transacciones DMA hacia/desde la memoria del sistema sin cargar demasiado la CPU.

Por lo tanto, los dispositivos de gran ancho de banda, como los controladores de red, que necesitan transferir grandes cantidades de datos hacia/desde la memoria del sistema, tendrán dos adaptadores de interfaz para el AHB: una interfaz maestra y una esclava. Esto se debe a que los autobuses en chip como AHB no admiten el triple estado del autobús ni la alternancia de dirección de ninguna línea en el autobús. Al igual que PCI, no se requiere un controlador DMA central ya que el DMA controla el bus, pero se requiere un árbitro en caso de que haya varios maestros presentes en el sistema.

Internamente, un motor DMA multicanal suele estar presente en el dispositivo para realizar múltiples operaciones de dispersión y recopilación simultáneas según lo programado por el software.

Celúla

Como ejemplo de uso de DMA en un sistema en chip multiprocesador , el procesador Cell de IBM/Sony/Toshiba incorpora un motor DMA para cada uno de sus 9 elementos de procesamiento, incluido un elemento de procesador de energía (PPE) y ocho elementos de procesador sinérgicos (SPE). . Dado que las instrucciones de carga/almacenamiento del SPE pueden leer/escribir sólo su propia memoria local, un SPE depende completamente de los DMA para transferir datos hacia y desde la memoria principal y las memorias locales de otros SPE. Por lo tanto, DMA actúa como un medio principal de transferencia de datos entre núcleos dentro de esta CPU (en contraste con las arquitecturas CMP coherentes con caché, como la GPU de propósito general cancelada de Intel , Larrabee ).

DMA en Cell es totalmente coherente con la caché (tenga en cuenta, sin embargo, que los almacenes locales de SPE operados por DMA no actúan como caché globalmente coherente en el sentido estándar ). Tanto en lectura ("obtener") como en escritura ("poner"), un comando DMA puede transferir un área de bloque único de hasta 16 KB o una lista de 2 a 2048 de dichos bloques. El comando DMA se emite especificando un par de una dirección local y una dirección remota: por ejemplo, cuando un programa SPE emite un comando put DMA, especifica una dirección de su propia memoria local como origen y una dirección de memoria virtual (que apunta a ya sea la memoria principal o 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, con tráfico uniforme) alcanza los 200 GB por segundo. [14]

Controladores DMA

Tubería

Los procesadores con memoria scratchpad y DMA (como los procesadores de señales digitales y el procesador Cell ) pueden beneficiarse del software que superpone las operaciones de la memoria DMA con el procesamiento, mediante almacenamiento en búfer doble o almacenamiento en búfer múltiple. Por ejemplo, la memoria del chip se divide en dos buffers; el procesador puede estar funcionando con datos en uno, mientras que el motor DMA está cargando y almacenando datos en el otro. Esto permite que el sistema evite la latencia de la memoria y aproveche las transferencias en ráfaga , a costa de necesitar un patrón de acceso a la memoria predecible . [ cita necesaria ]

Ver también

Notas

  1. ^ Osborne, Adán (1980). Introducción a las microcomputadoras: Volumen 1: Conceptos básicos (2ª ed.). Osborne McGraw Hill. págs. 5–64 a 5–93. ISBN 0931988349.
  2. ^ Hayes, John.P (1978). Arquitectura y Organización de Computadores . Compañía internacional del libro McGraw-Hill. pag. 426-427. ISBN 0-07-027363-4.
  3. ^ "Hoja de datos de Intel 8237 y 8237-2" (PDF) . Subsitio JKbox RC702 . Consultado el 20 de abril de 2019 .
  4. ^ "Fundamentos de DMA en varias plataformas de PC, National Instruments, páginas 6 y 7". Universidad Nacional de la Plata, Argentina . Consultado el 20 de abril de 2019 .
  5. ^ Intel Corp. (25 de abril de 2003), "Capítulo 12: Bus ISA" (PDF) , Arquitectura de PC para técnicos: nivel 1 , consultado el 27 de enero de 2015
  6. ^ "Detalles del bus: escritura de controladores de dispositivos para Oracle® Solaris 11.3". docs.oracle.com . Consultado el 18 de diciembre de 2020 .
  7. ^ "Extensión de dirección física: memoria PAE y Windows". Central de desarrollo de hardware de Microsoft Windows. 2005 . Consultado el 7 de abril de 2008 .
  8. ^ Corbet, Jonathan (8 de diciembre de 2005). "Copias de memoria en hardware". LWN.net .
  9. ^ 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 puntos de referencia ". Archivado desde el original el 5 de mayo de 2016 . Consultado el 12 de diciembre de 2006 .
  10. ^ "Intel Data Direct I/O (Intel DDIO): preguntas frecuentes" (PDF) . Intel . Marzo de 2012 . Consultado el 11 de octubre de 2015 .
  11. ^ Rashid Khan (29 de septiembre de 2015). "Superando los límites de las redes de kernel". redhat.com . Consultado el 11 de octubre de 2015 .
  12. ^ "Lograr las latencias más bajas con las velocidades 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 . 2012-06-07 . Consultado el 11 de octubre de 2015 .
  13. ^ Alexander Duyck (19 de agosto de 2015). "Superando los límites de las redes de kernel" (PDF) . linuxfoundation.org . pag. 5 . Consultado el 11 de octubre de 2015 .
  14. ^ Kistler, Michael (mayo de 2006). "Red de comunicación celular multiprocesador: diseñada para la velocidad". Micro IEEE . 26 (3): 10–23. doi :10.1109/MM.2006.49. S2CID  7735690.
  15. ^ "Controlador DMA multimodo Am9517A" (PDF) . Consultado el 6 de enero de 2024 .
  16. ^ "Controlador de acceso directo a memoria Z80® DMA" (PDF) . Consultado el 7 de enero de 2024 .
  17. ^ "Libro de datos de semiconductores de Sharp 1986" (PDF) . pag. 255-269 . Consultado el 13 de enero de 2024 .
  18. ^ "Controlador de acceso directo a memoria (DMA) pPD71037" (PDF) . pag. 832(5b1) . Consultado el 6 de enero de 2024 .
  19. ^ "Controlador DMA µPD71071" (PDF) . pag. 940(5g1) . Consultado el 5 de enero de 2024 .

Referencias

enlaces externos