首页 文章

如果TLB都需要两次内存访问,那么TLB比Page Table更快的原因是什么?

提问于
浏览
0

刚刚离开wikipedia

页表通常存储在主存储器中,用于跟踪虚拟页面在物理存储器中的存储位置 . 此方法使用两个内存访问(一个用于页表项,一个用于字节)来访问一个字节 . 首先,查找页表以查找帧号 . 其次,具有页面偏移的帧编号给出实际地址 . 因此,任何简单的虚拟内存方案都会使内存访问时间加倍 . 因此,TLB用于减少访问页表方法中的存储器位置所花费的时间 .

所以考虑到这一点,我很好奇的是为什么TLB实际上更快,因为据我所知它只是一个较小的,精确的页表副本 .

您仍然需要访问TLB才能找到物理地址,然后一旦拥有,您仍然需要实际访问物理地址处的数据,这与页表一样是两次查找 .

我只能想到TLB速度更快的两个原因:

查找TLB或页表中的地址

  • 不是O(n)(我假设它的O(1)类似于哈希表) . 因此,由于TLB要小得多,因此查找速度更快 . 同样在这种情况下,为什么不使用哈希表而不是TLB呢?

  • 我错误地解释了TLB是如何工作的,并且它实际上并没有进行两次访问 .

2 回答

  • 1

    您认为使用 TLB 的方法仍然需要2次访问是正确的 . 但TLB的方法更快,因为:

    TLB is made of faster memory called associative memory

    通常我们对物理内存进行2次内存访问,但TLB有1次访问TLB,其他访问是物理内存 .

    Associative memory 更快,因为它是 content addressable memory 但它的 expensive 也是如此,因为需要额外的逻辑电路 .

    您可以阅读有关内容可寻址内存here的信息 .

  • 3

    这取决于具体的实施 . 通常,TLB是CPU中存在的缓存 .

    您仍然需要访问TLB才能找到物理地址,然后一旦拥有,您仍然需要实际访问物理地址处的数据,这与页表一样是两次查找 .

    CPU可以比通过内存总线访问数据更快地访问缓存 . 它正在对两个不同的地方进行两次访问(一次更快,一次更慢) . 此外,存储器位置也可以高速缓存在CPU内,在这种情况下,不需要访问来通过存储器总线 .

相关问题