虚拟内存与缓存集成及内存层次结构解析
1. 虚拟内存与缓存集成
1.1 虚拟索引虚拟标签(VIVT)缓存
VIVT 缓存是一种直接使用虚拟地址进行索引和标签的缓存解决方案。它无需将虚拟地址转换为物理地址,就能直接检查缓存中的数据并进行提取,显著减少了命中时间。与 PIPT 缓存组织相比,VIVT 缓存的实现更为简单,因为它在索引和标签过程中都使用虚拟地址,无需复杂的地址转换和额外的物理地址硬件支持,从而降低了硬件复杂度和成本。
然而,VIVT 缓存也存在一些挑战。虚拟地址可能会出现别名问题,即不同的虚拟地址可能映射到相同的缓存索引。当两个不同的程序对同一物理地址使用不同的虚拟地址时(例如,两个程序都访问相同的操作系统子程序),就会出现这种情况。这些重复的地址(别名)可能导致缓存中存在同一数据的两份副本,如果其中一份被修改,另一份的值就会出错,进而导致缓存冲突,降低缓存性能。而 PIPT 缓存则不会出现这种问题,因为访问会首先转换为相同的物理缓存块。
1.2 虚拟索引物理标签(VIPT)缓存
现代计算机系统采用了一种折中的方法,即 VIPT 缓存。它使用虚拟索引和物理标签来平衡性能和复杂度。VIPT 缓存从物理地址中获取标签位,从虚拟地址中获取索引。这种缓存与转换后备缓冲器(TLB)同时工作。
当 CPU 发出虚拟地址时,缓存索引(数据访问和标签访问)立即开始,无需为缓存索引转换虚拟地址。因为缓存使用在地址转换过程中不改变的虚拟地址部分进行索引,这实际上等同于使用物理地址对缓存进行索引。同时,TLB 使用虚拟页号进行搜索,并从 TLB 中获取物理地址。最后,将缓存索引期间从 VIPT 缓存中获取的标签与 TLB 中
超级会员免费看
订阅专栏 解锁全文
51

被折叠的 条评论
为什么被折叠?



