从wikipedia得知:
页面表通常存储在主内存中,用于记录虚拟页面在物理内存中的位置。使用该方法需要两次内存访问(一次是页面表项,一次是字节),才能访问一个字节。首先查找页面表以获取帧编号,其次通过帧编号和页面偏移量确定实际地址。因此,任何简单的虚拟内存方案都会导致内存访问时间加倍。因此,使用TLB可以减少访问页面表方法所需的时间。
鉴于此,我想知道为什么TLB实际上更快,因为据我所知,它只是页面表的一个更小、精确的副本。
你仍然需要访问TLB以查找物理地址,然后一旦你获得了物理地址,你仍然需要访问物理地址处的数据,这与页面表一样需要二次查找。
我只能想到两个原因说明TLB更快:
在TLB或页面表中查找地址不是O(n)(我假设它像哈希表一样是O(1))。因此,由于TLB要小得多,进行查找更快。在这种情况下,为什么不使用哈希表而不是TLB呢?
我错误地解释了TLB的工作原理,实际上它并没有进行两次访问。