Memory management AMD的ASID是什么时候;s页表扩展不再有效?

Memory management AMD的ASID是什么时候;s页表扩展不再有效?,memory-management,x86,paging,tlb,Memory Management,X86,Paging,Tlb,IA-32定义了CPU可能使整个TLB失效的各种情况。从AMD在Opteron Rev-F处理器(巴塞罗那?)中发布的ASID扩展开始,在某些情况下,只有特定ASID的TLB条目无效 问题是,ASID本身是否曾经停止有效?虚拟机监控程序在使用ASID之前是否必须检查ASID是否有效?我认为答案是“不直接”——看看AMD系统编程,虚拟机控制块中的ASID字段只是一个32位的ID,虚拟机监控程序为每个虚拟机实例设置一个唯一的值,并用作TLB查找中的附加标记 由于您无法直接控制x86上的TLB内容,因

IA-32定义了CPU可能使整个TLB失效的各种情况。从AMD在Opteron Rev-F处理器(巴塞罗那?)中发布的ASID扩展开始,在某些情况下,只有特定ASID的TLB条目无效

问题是,ASID本身是否曾经停止有效?虚拟机监控程序在使用ASID之前是否必须检查ASID是否有效?

我认为答案是“不直接”——看看AMD系统编程,虚拟机控制块中的ASID字段只是一个32位的ID,虚拟机监控程序为每个虚拟机实例设置一个唯一的值,并用作TLB查找中的附加标记

由于您无法直接控制x86上的TLB内容,因此无法控制TLB中的最终条目-如果处理器决定向TLB添加条目,则该条目将被标记为当前ASID,根据定义,该ASID在添加时是有效的

这在前面提到的系统编程规范第15.15.1节中以某种迂回的方式进行了描述:

在没有提供选择性地刷新单个指定ASID的所有翻译的实现中,软件可以通过为来宾分配一个新ASID并在至少刷新一次整个TLB之前不重用旧ASID,从而有效地刷新来宾的TLB条目

这意味着处理器没有有效或无效ASID的概念-它只是一个数字,其当前值必须与TLB条目ASID匹配,TLB才能命中。因此,如果虚拟机监控程序在重新使用ASID之前没有正确刷新ASID,您将得到过时的TLB点击。

我认为答案是“不直接”——查看AMD系统编程,虚拟机控制块中的ASID字段只是一个32位的ID,虚拟机监控程序为每个虚拟机实例设置一个唯一的值,并用作TLB查找中的附加标记

由于您无法直接控制x86上的TLB内容,因此无法控制TLB中的最终条目-如果处理器决定向TLB添加条目,则该条目将被标记为当前ASID,根据定义,该ASID在添加时是有效的

这在前面提到的系统编程规范第15.15.1节中以某种迂回的方式进行了描述:

在没有提供选择性地刷新单个指定ASID的所有翻译的实现中,软件可以通过为来宾分配一个新ASID并在至少刷新一次整个TLB之前不重用旧ASID,从而有效地刷新来宾的TLB条目

这意味着处理器没有有效或无效ASID的概念-它只是一个数字,其当前值必须与TLB条目ASID匹配,TLB才能命中。因此,如果虚拟机监控程序在重用ASID之前没有正确地刷新ASID,您将得到过时的TLB点击