tag取自虚拟地址导致歧义,index取自虚拟地址导致别名
在计算机体系结构中,缓存设计有多种方式来优化地址转换和访问效率。VIPT(Virtual Index Physical Tag)是其中一种缓存组织形式,它通过特定的设计来平衡虚拟地址和物理地址的使用,从而提高性能并减少地址转换带来的延迟。下面详细解释VIPT的概念及其访问流程,并解答为什么可以基于虚拟地址索引来查找缓存行。
VIPT(Virtual Index Physical Tag)概念
VIPT缓存是一种缓存组织形式,在这种结构中:
- 索引(Index):使用虚拟地址的一部分作为索引来定位缓存中的特定行。
- 标签(Tag):存储的是对应的物理地址的一部分,用于验证是否真正命中。
VIPT的tag取决于物理页大小的剩余位数,而不是去掉index和offset的剩余位数。物理tag是惟一的,所以不存在歧义。
只要tag/index和物理地址中对应段保持一致,就有唯一性
为什么使用虚拟地址作为索引?
-
减少地址转换延迟:
- 在传统的缓存访问中,如果完全依赖物理地址进行索引,则每次访问缓存之前都需要先经过MMU(内存管理单元)将虚拟地址转换为物理地址。这个过程涉及到查询页表或TLB(Translation Lookaside Buffer),可能会带来额外的延迟。
- 而VIPT允许直接使用虚拟地址的一部分来快速找到可能包含所需数据的缓存行,这样可以在地址转换完成之前就开始缓存查找过程,减少了等待时间。
-
保持一致性:
- 尽管索引使用虚拟地址,但最终确认缓存命中的依据仍然是物理地址的标签(Tag)。这意味着即使不同的进程可能映射到相同的虚拟地址,但由于它们的物理地址不同,不会发生混淆。
访问流程
以下是VIPT缓存访问的具体步骤:
-
获取虚拟地址:当CPU需要访问内存时,首先产生一个虚拟地址。
-
提取索引部分:从虚拟地址中提取出一部分位作为索引(Index),用于定位缓存中的某一行。
-
同时进行地址转换:与此同时,MMU开始处理虚拟地址到物理地址的转换(这一步通常涉及查询ITLB/UTLB)。
-
读取缓存行:根据提取的索引部分,直接访问缓存中的对应行,并读取该行的所有标签(Tag)以及数据。
-
比较标签:一旦MMU完成了地址转换,获得完整的物理地址后,将其与之前从缓存行中读出的标签进行比较。
- 如果标签匹配,则表示缓存命中,可以直接使用缓存中的数据。
- 如果不匹配,则表示缓存未命中,需要从主存中加载数据。
-
处理结果:根据是否命中采取相应的后续操作,如更新缓存、继续执行等。
关键点解释
-
为何能用虚拟地址索引?
- 这是因为在大多数情况下,虚拟地址和物理地址之间的映射关系在一定范围内是一致的(即对于小范围内的地址,虚拟地址的低位可以直接用来作为物理地址的低位,因为这些位通常不会改变)。因此,可以安全地使用虚拟地址的一部分来快速定位缓存行。
-
如何确保正确性?
- 尽管索引使用虚拟地址,但最终确认是否命中的依据是物理地址的标签。这样即使两个不同的虚拟地址映射到同一个物理地址,也不会导致错误的缓存命中。
通过这种方式,VIPT缓存能够在不显著增加复杂度的前提下,有效地减少地址转换带来的延迟,提升整体系统性能。希望这个详细的解释能够帮助您理解VIPT缓存的工作原理及其优势。
由于玄铁C910中指令缓存为VIPT(Virtual Index Physical Tag)结构,故返回的物理地址将与以虚拟地址为索引从指令缓存中读出的各路标志(tag)在IF级比较来判断是否发生缓存命中。仅当MMU返回指令PC物理地址后,IF级的数据才是有效的,若指令PC未及时完成虚实地址转换,将会阻塞IF级流水线。
- 使用PIPT结构,当访问缓存的索引超过页内偏移的大小(即地址的低12位)时,则需要先访问TLB/MMU得到物理地址后再索引缓存
无论是哪种cache组织方式,当页面大小为4KB时,虚拟地址和物理地址的低12bit都是一致的。
所以当index和tag位数相加小于等于12bit时,可以直接使用虚拟地址,不需要访问TLB/MMU来获取物理地址,从而改善访问延迟
- 而如果想要访问缓存的索引不超过页内偏移的大小,则缓存的大小最大只能为4KB×组相联数,这样将大大限制了缓存的容量。
缓存大小计算公式:路数(一组中有几行cache line) * 组数 * cache line大小 = 路数 * index * offset = 路数 * 4KB
参考链接:https://zhuanlan.zhihu.com/p/577138649#:~:text=1.1%20%E6%AD%A7%E4%B9%89(ambiguity)%E6%AD%A7%E4%B9%89%E6%98%AF%E6%8C%87%E4%B8%80%E4%B8%AAVA%E5%AF%B9%E5%BA%94%E4%B8%8D%E5%90%8C%E7%9A%84PA%E3%80%82%E4%BE%8B%E5%A6%82%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%8C%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E7%9A%84%E5%9C%B0%E5%9D%80%E4%BA%92%E7%9B%B8
https://zhuanlan.zhihu.com/p/503078043
https://mp.weixin.qq.com/s/uGTg5EPxqhI0MPZHv3FgvQ【强推这篇文章,写得很详细】