虚拟内存与缓存相关技术解析
1. 虚拟内存别名检测技术
当超集规模较大时,搜索超集的所有集合可能变得不切实际。为了动态检测别名,有几种技术可供选择。
一种技术是维护缓存的反向表,该表使用物理地址而非虚拟地址进行访问。常见的解决方案是基于可通过物理地址访问的双缓存目录。理想情况下,可设想一个全相联的双目录,其条目数量与缓存目录相同。这个双目录通过物理地址访问,并包含指向缓存行的反向指针。当一级缓存(L1)未命中时,会使用从转换后备缓冲器(TLB)获得的物理地址访问双目录。若存在指向缓存的有效反向指针,则表明存在同义词。双目录可以是组相联的,并且两个目录可能具有不同的组织方式。当新块加载到缓存中时,必须在两个目录中都找到相应条目,这可能导致从缓存中逐出两个块(配对逐出),因为缓存中的所有有效块在双目录中都必须有有效的反向指针。双目录中受害者条目标指向的块必须从缓存中刷新。这种解决方案在单处理器系统中成本很高,但在基于总线且采用窥探协议的多处理器系统中是有意义的,因为在这种系统中通常需要双目录来维护一致性。
另一种方式是假设存在包含关系,将反向指针维护在二级缓存(L2)中。L2缓存通过物理地址访问,因此L2缓存的条目可以跟踪某个块是否被缓存到了L1中,若存在则包含指向L1缓存行的反向指针。当L1未命中时,会查询L2缓存。如果反向指针指向L1中的不同行,L2缓存会返回该指针,L1控制器执行一次短未命中操作,这种短未命中的代价大约等于L1未命中但在L2中命中的代价。
动态检测同义词的硬件,如超集搜索、双目录或L2中的反向指针等形式,通常被称为抗别名硬件。
最后,页面着色是解决同义词问题的软件解决方案。页面的颜色是超集位的值。如果操作系统确保所有同义词
超级会员免费看
订阅专栏 解锁全文

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



