首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM11对缓存的改进是什么?

ARM11对缓存的改进是什么?
EN

Stack Overflow用户
提问于 2012-07-05 13:25:43
回答 1查看 1.2K关注 0票数 1

据说在ARM11中,缓存是物理处理的,解决了许多缓存混叠问题,并减少了上下文切换开销

如何理解物理地址为?它如何帮助解决缓存混叠问题和减少上下文切换开销?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 15:19:28

有三种常见的缓存类型。

  • VIVT =虚拟索引
  • VIPT =实际索引的物理标记
  • PIPT =物理索引物理标记

还有

  • PIVT =物理索引,实际上是标记

PIPT通常用于第二层和更深层次的缓存,因为物理地址必须在此时知道,但是armv7也引入了PIPT L1 DCaches。PIVT并不是很实用,所以在现实世界中也没有使用。

不同之处在于缓存行如何连接到底层内存。

虚拟索引意味着纯缓存行查找是使用虚拟地址完成的,因此可以在任何虚拟地址到物理地址转换之前完成。然后,标记将决定缓存行是否真正映射到基础内存,还是包含其他内存位置的数据,这些数据恰好映射到同一缓存行。

如果标记是使用虚拟地址完成的,那么两个碰巧使用相同虚拟地址的进程可能会绊倒对方,因为一个进程可能访问另一个进程放入缓存中的数据。因此,对于VIVT缓存的cpu,内核必须在上下文开关上刷新整个缓存。因此,新的进程不会意外地访问不正确的数据,这意味着一般来说,在VIVT缓存的CPU上,上下文切换是一项非常昂贵的操作。在ARMv5和上面支持所谓的快速上下文切换扩展,它用标记修改虚拟地址。但这涉及到很多限制。

相反,VIPT仍将使用虚拟地址来查找缓存行,但随后将根据物理地址检查标记,因此MMU查找可以与缓存行查找并行进行。

别名是VIVT缓存的另一个大问题。因为两个虚拟地址可能指向相同的物理内存位置(这可能发生在用户和内核空间之间共享内存时)。因此,您可以使用不同的数据在缓存中有两个位置,这些数据很难正确地管理(显式地按正确的顺序刷新和使缓存无效)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11345290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档