
[英]How many bits there are in a TLB ASID tag for Intel processors? And how to handle 'ASID overflow'?
[英]Can Intel processors delay TLB invalidations?
参考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无效之后,对所讨论的线性地址的写访问也不会出错 (页面错误)吗?
还是仅当未发出页结构已更改的线性地址的“无效”指令时,“延迟无效”才会导致不可预测的结果?
透明地优化TLB不会被CR3更改取消缓存。 TLB条目用地址空间的唯一标识符标记,并留在TLB中,直到它们被错误的过程(在这种情况下TLB条目已被废弃)触摸或恢复了地址空间(在这种情况下, TLB在地址空间更改时被保留)。
这一切对CPU都是透明的。 您的程序(或操作系统)不能通过以下方式分辨出此行为与TLB无效而使TLB实际无效之间的区别:
解决方案是:
请注意,这实际上是未定义的行为。 过渡到SMM可能会使TLB无效,也可能不会无效,从而使TLB处于竞争状态。 不要依赖这种行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.