IA-32限定,其中CPU可能违反对整个TLB各种情况。与ASID扩展,AMD皓龙中启-F处理器(巴塞罗那?)有,其中只有一定ASID的TLB条目是无效的情况下,解除启动。

现在的问题是,它的ASID本身永远不再是有效的?是否有管理程序检查的ASID是有效的使用它之前?

有帮助吗?

解决方案

我的认为的答案是 '不直接' - 看AMD系统编程的规范时,在VM控制块中的ASID字段是一个简单的(最多),其管理程序集来用于VM的每个实例的唯一值,并且用作一个附加的32位ID标签在TLB查找。

如您有超过在x86的TLB的内容没有直接的控制,你无法控制哪些条目的TLB结束 - 如果处理器决定添加到TLB中的条目,该条目将被标记与当前ASID ,其定义添加时将是有效的。

这是在稍微迂回的方式部分中描述的 15.15.1 前面提到的系统编程规范的:

  

在实现不提供一种方法来选择刷新单指定ASID,软件所有翻译通过为客户分配新ASID,而不是重复使用旧的ASID,直到整个TLB可以有效地冲洗客人的TLB项已冲洗至少一次。

这意味着该处理器没有有效或无效ASID的概念 - 它只是一个数字,其电流值必须一个TLB的条目相匹配ASID的TLB命中。因此,如果它重用之前的虚拟机管理程序不能正确地刷新的ASID,你会得到过时TLB命中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top