【问题标题】:Referenced and Modified bit in TLB and PTETLB 和 PTE 中的引用和修改位
【发布时间】:2013-01-03 22:58:24
【问题描述】:
您可能知道这些是 Accessed 和 Dirty 位。现在 x86 PTE 包含这些位。假设 TLB 也包含这些位。在 TLB 命中的情况下,如果它们所引用的页框被访问或修改,这些位将由硬件设置。我的问题是硬件何时将这些位复制回 PTE,以及这究竟是如何完成的(尤其是在软件管理的 TLB 的情况下)?
PS - 我想知道这一点,因为我正在尝试设计和测试页面替换算法。
【问题讨论】:
标签:
x86
virtual-memory
tlb
【解决方案1】:
x86 CPU 没有软件管理的 TLB。如果你想模拟这样的事情,你需要在普通 TLB 之上实现它,就像你将物理页面映射和取消映射到虚拟地址空间一样:在页面错误处理程序中拦截页面访问,修改 PDE/ PTE 在必要时使 TLB 条目无效,并在多处理器系统的情况下特别小心。
CPU 将访问位和脏位设置为 1 对软件是透明的,因此,一旦页面被访问,您应该会立即看到更改。
有关详细信息,请参阅“英特尔® 64 和 IA-32 架构软件开发人员手册”。获取包含第 1 卷至第 3 卷的 pdf,以便您将所有必要信息集中在一处。