不知道你说的是指什么,例如在x86上通过QEMU再跑一个x86版本的Linux,和跑一个PowerPC的Linux效率上不同吧?对于同构的情况虚拟机能做许多优化,但对于跨体系结构,则多数会慢许多。
呵呵,我所说的是回应7楼的问题。
不错,如果Host和Target同构,是会快些,例如,可直接映射Target寄存器到Host机上。 原帖由 ninesunqian 于 2009-8-20 13:17 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
qemu确实很强,用了动态二进制翻译。tager支持的架构很多, host就不支持mips, 不过相信不久就可以了。
http://www.qemu.org/status.html
kvm 是不是只能仿真x86指令?
有空研究一下,有点意思。
KVM是基于VT/SVM技术的,貌似目前只有Intel和AMD的CPU。 这不就是虚拟机吗 好像有点扯远了。我想问的仅仅是把x86的指令动态翻译成mips指令。
逐条翻译肯定效率低,两者架构不同,寄存器不同,不能充分发挥mips多寄存器的优点。
而把x86指令分解成平台无关的中间指令 (类似与瓦片覆盖的反向过程),然后再拼成mips指令(瓦片覆盖)。
如果是动态翻译,可能涉及到估计指令的执行频率来判断是逐条解释执行,还是先把整个指令块(指令跳转之间的部分)翻译再执行。
至于操作系统不一样,例如,target是linux,host是windows. 就涉及到各位所说的虚拟化技术了吧? 原帖由 ninesunqian 于 2009-8-21 08:57 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
好像有点扯远了。我想问的仅仅是把x86的指令动态翻译成mips指令。
逐条翻译肯定效率低,两者架构不同,寄存器不同,不能充分发挥mips多寄存器的优点。
而把x86指令分解成平台无关的中间指令 (类似与瓦片覆盖 ...
明白你的意思了。
这不正是QEMU正在做的事吗?Host是Mips平台,Target是X86平台,通过TCG动态转换Target指令为Host指令。遗憾的是,目前Qemu还不支持Host是Mips平台。不过,应该不会等很久了。 翻译成中间代码当然可以了,不用中间代码都可以,复杂指令变换成精简指令,还记得克鲁索的代码变形吗?
页:
1
[2]