gpt4 book ai didi

x86 - QEMU 是否模拟 TLB?

转载 作者:行者123 更新时间:2023-12-04 17:34:12 26 4
gpt4 key购买 nike

我有一个非常简单的问题,QEMU 是否模拟 TLB?当 guest linux 系统执行“invlpg”指令时会发生什么,因为它是为了使 TLB 条目无效。我知道 QEMU 有 softmmu link它用于将客户虚拟地址转换为主机虚拟地址,但 QEMU 会模拟实际的 TLB,以及“invlpg”指令的作用是什么。还是 QEMU 只是忽略了这条指令?

最佳答案

答案介于"is"和“否”之间。 QEMU 不会尝试模拟实际 guest CPU 的 TLB(这是一种硬件,可加速从 guest 虚拟地址到 guest 物理地址的查找)。然而,它确实实现了它自己的相当相似的数据结构,它称为 TLB——这加速了从访客虚拟地址直接到 RAM 的主机虚拟地址的查找,或者从访客虚拟地址到模拟设备的读/写功能的查找。

由于 CPU TLB 和 QEMU 的 TLB 之间存在相似性,我们可以使用 guest 指令使 TLB 失效或以其他方式操作 TLB 作为执行 QEMU TLB 失效的触发器(这就是 helper_invlpg() 中的 tlb_flush_page() 调用所做的) ;所以这些说明不是简单的无操作。如果它使用查询缓存和 TLB 信息的 cpuid 指令,我们还会向 guest 撒谎并告诉它有关其 TLB 大小的合理信息。但是我们实际上并未对访客 TLB 进行建模——因此您不会看到围绕访客 TLB 大小的性能变化,并且您无法记录有关访客 TLB 命中和未命中的信息,并且我们不实现 TLB 锁定在拥有它的 CPU 架构上。

最后,monitor "info tlb"命令的名称相当错误,因为它实际上显示的是有关访客页表设置的信息,这与 TLB 状态无关。

关于x86 - QEMU 是否模拟 TLB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com