【发布时间】:2019-06-02 13:44:27
【问题描述】:
大多数设备都需要连续内存。例如 GPU、VPU。
CMA 和静态内存分配是连续内存的例子。
为什么需要连续内存?
【问题讨论】:
-
这取决于具体设备的驱动程序,但可能与性能原因有关。
-
它与性能有何关系?你能解释一下,它如何依赖于设备驱动程序。
-
许多设备直接使用内存,忽略 MMU。此类设备将物理地址用于内存区域,因此要求这些区域在物理上是连续的。
-
您将连续的虚拟内存与连续的物理内存混为一谈。内存分配始终是连续的虚拟内存。如果你的系统有 IOMMU,你可能不会问这个问题。
-
我相信原因之一是DMA。硬件需要一块连续的内存。此外,显卡使用双缓冲区或三缓冲区。我想如果不能通过交换指针来交换缓冲区(而不是复制碎片缓冲区),那将是非常低效的。
标签: linux memory-management linux-kernel linux-device-driver embedded-linux