缓存读取系统内存与CPU读取系统内存



在基于ARM的SOC Android/Linux上,我观察到:

  1. 为设备DMA输入分配一个存储区域为 UN-CACHED 。DMA完成后,该内存区域的内容被复制到另一个系统存储区域。
  2. Alloc A内存区域为缓存的设备DMA输入。DMA完成后,无效的内存范围,然后将此内存区域的内容复制到Arther System Memory区域。

分配的存储区域的大小约为2MB,大于缓存大小(L2高速缓存大小为256KB(。

方法2比方法1

快x10

是:方法2的内存复制操作比方法1

快x10

i

i在复制时从系统内存中读取缓存线大小的方法2缓存硬件。

但是,我找不到明确的解释。我感谢谁可以帮助提供详细的解释。

涉及太多的硬件项目,因此很难提供具体信息。社会决定了很多。但是,您观察到的是现代手臂系统的性能术语。

主要因素是SDRAM。所有DRAM都是用"行"one_answers"列"结构的。 DRAM历史记录在DRAM芯片上,可以一次阅读整个"行"。即,有一个晶体管矩阵,并且有一个物理点/布线可以读取整个行(实际上,SRAM可能会将行存储在芯片上(。当您阅读另一列"列"时,您需要"取消电荷/预付"接线才能访问新的"行"。这需要一些时间。要点是,DRAM可以在大块中快速读取顺序记忆。另外,随着每个时钟边缘的流式流出,没有命令开销。

如果将内存标记为未插入的内存,则CPU/SOC可能会发出单个节拍读数。通常,这些会在单读/写入过程中"预付"消耗额外的周期,并且必须将许多额外的命令发送到DRAM设备。

SDRAM也有"银行"。银行有一个单独的"行"缓冲区(静态RAM/多晶体管内存(,可让您从一家银行到另一家银行阅读,而无需充电/重新阅读。银行通常相距很远。如果您的操作系统在与2 nd "缓存"区域的不同银行中对"未接近"内存进行了物理分配,那么这也将增加额外的效率。在操作系统中,分别管理缓存/未接收的内存(用于MMU问题(。内存池通常足够遥远,可以在单独的银行中。

最新更新