虚拟索引物理标记和虚拟索引物理标记与分页之间有什么区别?

时间:2018-07-04 14:21:51

标签: memory indexing operating-system paging

还要说明是否还有其他索引和标记方法?

1 个答案:

答案 0 :(得分:2)

CPU缓存分为个缓存行,它们具有固定大小(通常为64个字节)。一般而言,我们可以说每个缓存行由它所引用的内存地址来标识(最后6位被丢弃,因为它们引用的是偏移量 缓存行)。

为使查找更快,地址分为两部分:索引标签索引解决了已知位置的缓存行的 set :访问 set 的速度非常快。在 N向关联集中,您有N条缓存行(无特定顺序),这些行将使用标签进行标识。

现在我们说 tag index 是内存地址的一部分,但是什么类型的地址?物理还是虚拟?

理论上,您可以将物理索引(PI),物理标签(PT),虚拟索引(VI),和虚拟标记(VT)。 每个组合都有其优点和缺点。通常,我们可以说使用物理地址的缺点是必须等待虚拟地址被转换(在TLB丢失的情况下可能会很昂贵),另一方面,使用虚拟地址虽然速度更快,但可以会导致一致性问题,因为多个虚拟地址可以映射到同一物理地址,并且映射会随着时间的推移而发生变化,从而需要进行缓存刷新。

由于这些原因,PIPT仅用于慢速缓存(例如L2 / L3),很少使用VIVT,几乎不使用PIVT,而VIPT用于 fast (和小型)缓存。

使用VIPT的优点是,虽然查找可以与地址转换并行开始(因此比PIPT更快),但它使用物理地址进行查找的最后一部分,因此选择了适当的大小对于索引,它可以防止一致性问题。 索引的正确大小取决于页面大小:如果,虚拟地址和物理地址之间的转换是在页面级别进行的。选择索引的方式始终是指页面缓存行的偏移量,如果我们使用物理地址或虚拟地址。不幸的是,这限制了缓存的大小,这就是为什么仅将其用于快速和小型缓存(例如L1)的原因。