在处理虚拟内存时,您经常使用TLB(我问的是软件管理的TLB)来加快速度。不是将您的虚拟地址插入到页表中以获取它映射到的物理地址,而是可以使用它们之间的TLB来存储最近使用的页面。
所以,你所做的就是你拿走你的虚拟地址并查看TLB是否包含你的地址,如果是,它会返回虚拟地址映射到的物理地址,但是如果它没有得到命中它将会转到页面表,将该页面加载到TLB并返回物理地址。
我的问题是:如果TLB必须一直搜索你的虚拟地址,它如何才能如此之快?这些条目似乎没有特定的顺序,所以通过它们会非常慢,我猜想。
对于上下文,这是我头脑中的TLB查找图像(图片来自维基百科)。
答案 0 :(得分:2)
这些条目似乎没有特定的顺序,所以通过它们会很慢,我会假设。
这不是硬件中通常的工作方式,“通过”条目并不是真的。那么你可以这样做,但那时它不再快,所以它错过了重点。
可以同时比较所有条目,并且可以使用对数深度电路提取匹配条目(如果存在)(如果允许任意扇入,则为恒定深度,但这有其自身的问题)。
答案 1 :(得分:0)
TLB只是一个缓存。缓存背后的想法是,搜索少量最近的引用更容易,而不是更大,更远,更多的非加强引用。
如果我理解,您的问题更多:"why is caching fast?"
也许有人可以从架构的角度解释比我更好的解释?