TLB 为何如此之快?

How are TLB's so fast?

处理虚拟内存时,您经常使用 TLB(我问的是软件管理的 TLB)来加快处理速度。无需将您的虚拟地址插入页面 table 以获取它映射到的物理地址,您可以在两者之间使用 TLB 来存储最近使用的页面。

因此,您要做的是获取您的虚拟地址并查看 TLB 是否包含您的地址,如果包含,它将 return 虚拟地址映射到的物理地址,但如果不包含'如果没有命中,它将转到页面 table,将该页面加载到 TLB 和 return 物理地址。

我的问题是:如果TLB必须一直搜索你的虚拟地址,它怎么能这么快?这些条目似乎没有特定的顺序,所以我认为浏览它们会很慢。

对于上下文,这是我脑海中的 TLB 查找图像(图片来自维基百科)。

TLB只是一个缓存。缓存背后的想法是搜索少量最近的引用比搜索更大、更多 "distant" 数量的未引用更容易。

如果我理解了,你的问题更多:"why is caching fast?"

也许有人能从架构的角度解释得比我好?

The entries seemingly come in no certain order, so going through them would be very slow, I'd assume.

这不是硬件中通常的工作方式,"going through" 条目并不是真正的东西。好吧,你可以那样做,但是它不再快了,所以它错过了重点。

可以同时比较所有条目,并且可以使用对数深度电路提取匹配条目(如果存在)(如果允许任意扇入,则为恒定深度,但这有其自身的问题)。