操作系统-转换后备缓冲区(TLBs)

5
我正在努力理解这个问题(好吧,说实话是在考试前一晚突击复习 :),但我无法弄清楚(也找不到网络上的高级概述)这个问题:
“页面表项可以映射到多个TLB条目...例如,如果每个页面表项映射到两个TLB条目,则称为2路组相联TLB”。
我的问题是,为什么我们要映射多次?我们肯定希望在TLB中表示最大可能数量的条目,而重复会浪费空间,对吧?我错过了什么?
非常感谢。
1个回答

7
这并不意味着你将同一条目加载到表中的两个位置,而是指特定条目可以加载到表中的任何一个位置。只能将条目映射到表中的一个位置的替代方案是直接映射TLB。
直接映射TLB的主要缺点在于,如果您从内存的一部分复制到另一部分,并且(无论CPU使用什么直接映射方案)两个翻译必须映射到TLB中的相同位置,则每次都会重新加载TLB条目,因此TLB几乎没有用处。通过使用双向集合关联TLB,您可以保证任何两个条目都可以同时存在于TLB中,因此例如从点A移动到点B的块移动不会出问题,但是如果您从两个区域读取数据,将它们组合起来,并将结果写入第三个区域,则可能会出现问题(如果所有三个区域使用的翻译都映射到相同的TLB条目集)。
拥有多路TLB(像任何其他多路高速缓存一样)的缺点在于,您无法直接计算在给定时间可能保存特定条目的哪个位置 - 您基本上需要搜索各个路以找到正确的条目。对于二路来说,这很少是个问题 - 但四路通常是有用极限; 8路集合关联(TLB |高速缓存)根本不常见,部分原因是在8个可能位置上搜索数据开始变得过多。
随着时间的推移,在缓存或TLB中使用的路数越来越多。内存和处理器之间的速度差异继续增加。差异越大,CPU可以使用的周期就越多,并且仍然可以在单个内存时钟周期(或指定数量的内存时钟周期,即使超过一个)内生成结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接