【发布时间】:2011-10-15 01:51:27
【问题描述】:
这参考了 InteI 的软件开发人员手册(订单号:325384-039US 2011 年 5 月),第 4.10.4.4 节“延迟无效”描述了 TLB 条目无效的潜在延迟,这可能会在访问其分页的内存时导致不可预知的结果-结构条目已更改。
手册说... “在某些情况下,必要的失效可能会延迟。软件开发- 操作人员应该明白,在修改分页结构条目之间 和执行第 4.10.4.2 节中推荐的无效指令, 处理器可以使用基于旧值或新值的转换 分页结构条目。以下项目描述了一些潜在的后果 延迟失效的quences: 如果修改了分页结构条目以将 R/W 标志从 0 更改为 1,则写入 访问由该条目控制转换的线性地址可能或 可能不会导致页面错误异常。"
让我们假设一个简单的情况,其中页面结构条目被修改(r/w 标志从 0 翻转到 1)以用于线性地址,然后立即调用相应的 TBL 无效指令。我的问题是——作为 TLB 延迟失效的后果,即使在调用 TLB 失效后对相关线性地址的写访问没有错 (页面错误)?
还是说“延迟失效”只能在页面结构发生变化的线性地址没有发出“失效”指令的情况下才会导致不可预知的结果?
【问题讨论】:
-
在修改分页结构入口和执行无效指令之间 ← 很清楚,不是吗?
-
我错误地解释了英特尔手册的描述,因此陷入了混乱。实际上,该手册描述了在页表结构更新后为了获得性能优势而进行的“故意”延迟。一旦发出“无效”指令,那么之后就没有“延迟”的问题了。
标签: tlb osdev cpu-cache page-fault