pci_alloc_consistent 未缓存的内存

pci_alloc_consistent uncached memory

可以说 pci_alloc_consistent 分配了一个连续的非缓存、非分页内核内存块。我问的原因是我在一些 kernel/driver 代码中看到了这个评论(不是在香草内核源代码中),我想我明白内存是连续的,但不确定它是否被分配为非缓存,因为缓存一致性的思想是保持缓存中的数据和DMA内存中的数据一致。

此外,不确定他们为什么称其为非分页。

例如https://www.kernel.org/doc/Documentation/DMA-API.txtPart Ia 部分说:

一致性内存是设备或 处理器可以立即被处理器或设备读取 无需担心缓存效果。

所以不能推断内存是非缓存,所以我倾向于认为我看到的评论有些误导。

如果能得到有用的评论,我将不胜感激。谢谢!

在 x86 上,缓存是 DMA 一致的(这要求缓存控制器监听所有 DMA 流量),因此一致的内存只是普通(缓存的)内存。

在大多数其他体系结构上,缓存不是 DMA 一致的,因此 pci_alloc_consistent() 必须分配非缓存内存。

"Non-paged"表示内存不能交换到磁盘。但是,这是 Windows 驱动程序编写者会关心的事情; none 正常 Linux 内核分配函数 returns 可交换内存。