我试图弄清楚这一点(好吧,考试前一晚临时抱佛脚:),但我不能弄清楚(也不能在网上找到一个很好的高级概述):
‘页表条目可以映射到一个以上的TLB条目。例如,如果每个页表条目映射到两个TLB条目,则这称为双向集合关联TLB。’
我的问题是,为什么我们要多次映射它呢?当然,我们希望在TLB中表示最大数量的可能条目,而复制会浪费空间,对吧?我遗漏了什么?
非常感谢
发布于 2010-04-23 06:39:14
这并不意味着您要将相同的条目加载到表中的两个位置--它意味着可以将特定条目加载到表中的两个位置中的任何一个。您只能将一个条目映射到表中的一个位置的另一种方法是直接映射TLB。
如果要从内存的一部分复制到另一部分,直接映射TLB的主要缺点就会出现,并且(无论CPU使用哪种直接映射方案)两者的转换都必须映射到TLB中的同一位置。在这种情况下,您每次都要重新加载TLB条目,因此TLB做得很少或根本没有做好任何事情。通过使用双向集合关联TLB,您可以保证任何两个条目可以同时出现在TLB中,因此(例如)从A点移动到B点的块不会毁了您的一天--但是如果您从两个区域读取数据,将它们组合在一起,并将结果写入第三个区域,则可能会发生这种情况(如果所有三个区域都使用映射到同一组TLB条目的转换)。
具有多路TLB (与任何其他多路缓存一样)的缺点是,您不能直接计算在给定时间哪个位置可能保存特定条目--您基本上是在所有路径中搜索以找到正确的条目。对于双向来说,这几乎不是问题--但四种方式通常是有用的限制;8向集合关联(TLB|cache)根本不常见,部分原因是在8个可能的位置搜索数据开始变得过多。
随着时间的推移,在缓存或tlb中使用的有意义的方式的数量往往会增加。内存和处理器之间的速度差异继续上升。差异越大,CPU可以使用的周期就越多,并且仍然可以在单个内存时钟周期(或指定数量的内存时钟周期,即使不止一个)内生成结果。
https://stackoverflow.com/questions/2694941
复制相似问题