cpu TLB - tlb 已满 -> 下一个条目未命中?

cpu TLB - tlb full -> next entry is a miss?

上下文:

x86_64,英特尔酷睿 2 双核。

我搜索了 3 卷英特尔文档,可能错过了正确的部分,因此出现了这个问题。

一个 tlb 最多可以有 4096 个条目,这在我看来已经很多了。但这在 SMP 系统中毕竟不是那么多。特别是如果 tlb 由于标记位而没有被刷新 -> 几乎一直都是满的。

想象一下您的内存在 4 个页表中正确映射的情况。想象一下,您有超过 4096 个条目(我知道..),而且显然对于 tlb 来说太多了。

我知道 x86 不会在 tlb 未命中时自动生成页面错误。

问题:

我是否应该确信 mmu 将遍历页表并自动替换其中一个条目(因为它已经正确映射)?

这是有道理的,因为在操作系统方面没有什么可做的,内存已经被映射了。

谢谢

是的,如果 TLB 未命中,MMU 将遍历页面 table 并在没有可用的空 space 来容纳新条目时替换现有的 TLB 条目。

如果页面不在内存中,TLB 未命中只会导致页面错误。