我的一位朋友告诉我,在x86架构上,DMA控制器不能在两个不同的RAM位置之间传输。它只能在RAM和外设之间传输(如PCI总线)。DMA传输RAM-RAM
这是真的吗?
因为AFAIK DMA控制器应该能够位于总线上并具有地址的任意设备之间。特别是如果源地址和描述地址属于同一个物理设备,我看不出什么问题。
我的一位朋友告诉我,在x86架构上,DMA控制器不能在两个不同的RAM位置之间传输。它只能在RAM和外设之间传输(如PCI总线)。DMA传输RAM-RAM
这是真的吗?
因为AFAIK DMA控制器应该能够位于总线上并具有地址的任意设备之间。特别是如果源地址和描述地址属于同一个物理设备,我看不出什么问题。
ISA(还记得吗?;-) DMA芯片肯定有Fetch-and-Deposit传输类型。
然而,从MASM32 forums:
嗨,
在 “无证PC” 检查, 他说,存储器到存储器DMA是 可能。他接着说, 可能有问题,限制 和CPU可以(在386+ MOVSD)反正 做副本 比DMA硬件更快。
所以它似乎是肯定的,你可以, 但谁在乎,这样的事情。
问候,
史蒂夫N.
是,存储器到存储器的传输,可以很好达到80386家我曾与 “现代” 的x86的:)
指定源RAM尝试和目的地。您可能需要注意L1缓存的一致性,具体取决于您正在编程的设备以及是否启用了缓存。
您可能会发现在Linux内核中的一些代码对影子内存刷新视频RAM页。这铃响了。
在ARM MEM-到-MEM DMA显著提高性能。
为什么要将RAM从一个位置复制到另一个位置? x86有一个内存分页系统,所以任何内存页面都可以在任何地址的虚拟内存中看到。 – 2010-11-28 16:55:24
@GJ未处于实时模式。 – 2011-02-14 21:12:31