【发布时间】:2014-05-02 16:23:48
【问题描述】:
在阅读 ARM 拱门时。参考。手册 v7,我发现了两个概念;一致性点 (PoC) 和统一点 (PoU)。
对于 PoC,似乎所有代理(即 CPU 内核)都可以看到相同的内存副本。
对于 PoU,似乎所有代理(在本例中为 CPU 内核和 MMU)都可以看到相同的内存副本。
我有几个后续问题:
我的理解正确吗?
-
如果是这样,如果我发出 DCCMVAC (Data cache clean MVA to PoC) 并将 MVA 设置为 0x40000000,(假设 PoC 恰好是 0x70000000),
VA 0x40000000 和 0x70000000 之间的所有缓存条目都被清除了吗?
那么,如果我发出带有 MVA 0x0 的 DCCMVAC,是否会清除所有数据缓存条目?
PoU 听起来像是 MMU 本身有自己的数据缓存(不是 TLB),用于在主内存中进行页表遍历。这是正确的吗?
【问题讨论】:
-
而不是 MMU 思考/了解 TLB(这是你的第 4 项)。如果系统是高级的,PoC 可以是 L1,其中 SCU 保持可共享内存的一致性。 PoU 可以是 L2 - 正如你所说的,每个人都有相同的副本。
-
哦,我的意思(第4项)是当MMU访问主存中的页表时(发生TLB未命中时),它是直接访问主存还是访问某种数据缓存?
-
TLB 是 MMU 的缓存(afaik),而 TLB 没有缓存。
-
TLB 是 MMU 的缓存,用于存储 vapa 映射。如果 TLB 中缺少条目,则 MMU 必须遍历主内存中的页表。我很好奇的是这一刻(MMU访问主存)。我已经编辑了问题以避免混淆。
-
没有像MMU的数据缓存这样的缓存。您可以阅读 cortex-a 系列程序员指南以获取更多信息。