0

所有源和目标都在不可缓存的内存中。毫无疑问。在我开始 DMA(它是 scatter-gather DMA)之前,我组成了 DMA 链表(带有 src、dest、size 和 next)。我想我不必将列表放入不可缓存的内存中。有人可以证实吗?首先十分感谢!琳达

4

1 回答 1

0

规则是硬件直接修改的任何东西都需要在不可缓存的内存中。否则,正如您可以想象的那样,在 CPU 上运行的代码可能会从其缓存中看到陈旧的数据。因此,缓冲区以及由硬件直接修改的任何其他数据结构都需要标记为不可缓存。如果硬件以任何方式操作列表,或更新任何状态位等,那么这也需要是不可缓存的。

所有源和目标都在不可缓存的内存中。那里没有问题

顺便说一句,这个断言并不总是成立。如果硬件实现了其他缓存一致性机制(总线侦听等),那么您甚至不需要担心缓冲区。

于 2013-09-13T01:12:56.740 回答