在运行Android/Linux的一个臂的SoC,我观察到以下:缓存读取系统存储器VS CPU读取系统存储器
- 分配的存储区域作为未缓存设备DMA输入。 DMA完成后,此存储区的内容被复制到另一个系统存储区。
- 为设备DMA输入分配一个内存区域为缓存。 DMA完成后,存储器范围无效,然后将该存储区的内容复制到另一个系统存储区。
分配的内存区大小约为2MB,大于缓存大小(L2缓存大小为256KB)。
方法2是X10大于方法快1
即:方法2的存储器复制操作是X10大于方法快1
我推测,用方法2缓存通过读从系统内存缓存行大小复制时,方法1需要通过总线事务处理大小读取CPU从绕过缓存硬件的系统内存中读取CPU。
但是,我找不到明确的解释。我很欣赏谁能帮助提供详细的解释。
不是简单的“缓存”版本能够通过缓存访问服务所有后续请求的问题,而未缓存版本必须始终通过内存获取数据。您提到的 –