![]() |
1
8
页偏移量是位0-11,而不是0-13。看看底图:页面偏移量是低12位,因此有4k页面(如x86和其他常见架构)。 如果任何索引位来自页面偏移量上方,则VIPT不再 behaves like a PIPT with free translation for the index bits . 这里就是这样。 一个进程可以将相同的物理页(框架)映射到两个不同的虚拟页。 你声称 所以其中一个索引位实际上是虚拟的,而不是物理的,所以同一物理行的两个条目可以放在不同的集合中。 PA和VA总是一样的。页面偏移量没有标记在图表的VA部分,只有用作索引的位的范围。
如评论中所述: 我最终发现 http://www.cse.unsw.edu.au/~cs9242/02/lectures/03-cache/node8.html . 它说的是同一件事:物理标记确实解决了缓存同音词问题,作为上下文切换刷新的替代方案。 但不是同义词问题。为此,您可以让操作系统确保每个VA的位12=每个PA的位12。 这称为页面着色。 页面着色还可以解决同名问题,而不需要硬件进行重叠的标记位,因为它会在物理地址和虚拟地址之间多出一个相同的位。phys idx=virt idx。(但是,如果硬件想要依赖于这个不变量,那么它将依赖于软件来实现正确性。) 标记与索引重叠的另一个原因是在逐出期间写回 :
How does the VIPT to PIPT conversion work on L1->L2 eviction 让标记包含页面偏移上方的所有物理地址位可以解决这个问题:给定页面偏移索引位和标记,可以构造完整的物理地址。 (另一种解决方案是直写缓存,因此 做 始终将TLB中的物理地址与数据一起发送,即使无法从缓存标记+索引中重建。或者对于只读缓存,例如指令缓存,没有写回;逐出=丢弃。) |
![]() |
tincho87 · 避免Javascript/Css缓存 7 年前 |
![]() |
Zac · 如何强制客户端重新下载我的网站? 7 年前 |
![]() |
Kumar · bitbake清理使用只读NFS SSTATE缓存失败 7 年前 |
![]() |
Chris Williams · 休眠/JPA缓存查找值 7 年前 |
![]() |
Nymeria · 仅绑定到当前事务的Spring缓存 7 年前 |