这参考了 InteI 的软件开发人员手册(订单号:325384-039US 2011 年 5 月),第 4.10.4.4 节“延迟无效”描述了 TLB 条目无效的潜在延迟,这可能在访问其分页结构条目的内存时导致不可预测的结果已经变了。
手册说……“在某些情况下,所需的失效可能会延迟。软件开发人员应该明白,在修改分页结构条目和执行第 4.10.4.2 节中推荐的失效指令之间,处理器可以使用转换基于分页结构条目的旧值或新值。以下项目描述了延迟失效的一些潜在后果: 如果修改分页结构条目以将 R/W 标志从 0 更改为 1,对由该条目控制其翻译的线性地址的写访问可能会也可能不会导致页面错误异常。 ”
让我们假设一个简单的情况,其中针对线性地址修改了页面结构条目(r/w 标志从 0 翻转到 1),然后立即调用相应的 TBL 无效指令。我的问题是——作为 TLB 延迟失效的结果,即使在调用 TLB 失效后,对相关线性地址的写访问也不会出错(页面错误)?
还是说“延迟失效”只能在页面结构发生变化的线性地址的“失效”指令没有发出时才会导致不可预知的结果?