QEMU是否使用Tiny Code Generator甚至主机和目标(guest)都是相同的架构?

时间:2014-04-24 22:32:49

标签: qemu

我知道QEMU通常使用所谓的动态转换技术:它将目标机器的指令转换为微操作,然后通过Tiny Code Generator(TCG)将这些微操作转换为主机指令。那是: 目标指令 - >微操作 微操作 - > TCG - >主持人的指示

但是,如果目标和主机的架构相同,则两者都是x86,理论上它不需要使用TCG进行转换,因为指令集是相同的。在这种情况下,QEMU仍然使用TCG吗?

2 个答案:

答案 0 :(得分:0)

从我读到的on this blog:qemu在这种情况下可以使用KVM

  

KVM是Linux内核中的虚拟化功能,它允许像qemu这样的程序直接在主机CPU上安全地执行访客代码。这只有在主机CPU支持目标体系结构时才有可能;今天,这只意味着x86-on-x86虚拟化。

答案 1 :(得分:0)

除了罗宾的回答:

重要的是要记住,除非您在命令行中指定,否则QEMU将始终默认使用TCG进行翻译。

例如,下面的命令行参数将以 TCG模式启动QEMU,即使主机和目标架构相同,在我的情况下,它是 x86_64

./qemu-system-x86_64 -m 10G -machine pc-i440fx-2.5 -drive file=~/ubuntu16.04.server.qcow2,format=qcow2

如果QEMU启动的命令是这样的 -

./qemu-system-x86_64 -m 10G -machine pc-i440fx-2.5 -accel kvm -drive file=~/ubuntu16.04.server.qcow2,format=qcow2

其中明确规定加速器选择 kvm ,只有这样才能在KVM模式下启动QEMU。

但是,如果目标和主机arhcitecture相同,则可以允许QEMU以KVM模式运行(如果这是您想要的),而不是TCG模式。