从利用多核加速QEMU的CPU模拟谈起
发表于 : 2014-10-30 23:07
说一说自己对于QEMU的理解,八卦八卦多核加速CPU模拟的现状。
目前,QEMU不开虚拟化,默认是双线程的,一个线程模拟CPU,一个负责IO。不论-smp设置的是多少,都由这一个线程负责。对于非同种CPU的模拟,比如X86模拟ARM或者ARM模拟X86,多核的优势基本无用。
QEMU的优势在于CPU模拟,各种CPU都能模拟,效率当然比虚拟化要低很多。比如X86模拟ARM,现在安卓SDK里的模拟器基于QEM,模拟ARM的兼容性要好,但却慢得很,用来测试应用都嫌慢。而在安卓ARM上模拟X86更是慢到家。
所以有的人就考虑用多核加速QEMU的CPU模拟。
也看到10、11年就有IBM和Redhat的人提这个,网上可以查到他们作报告的ppt,但是这方面似乎一直没有热起来,不知道为什么。
查了查,看到的有三个项目,似乎都是中国人弄的,前两个反正都能在IEEE上下到论文。
COREMU,最近的论文和更新在2013年,复旦大学开发的,官方网址:
http://sourceforge.net/p/coremu/home/Home/
这个我尝试编译而且成功了:http://blog.sina.com.cn/s/blog_59cf67260102v1ys.html
原理似乎是这样的:一个线程模拟一个CPU然后绑定到一个物理CPU,如果模拟的核太多,就开始新一轮的绑定。
PQEMU,台湾人的项目,国立中正大学,最近的更新在2年多前了,似乎中间还有很多人贡献了源码。
源码地址:
https://github.com/podinx/PQEMU
编译一直不成功:
http://blog.sina.com.cn/s/blog_59cf67260102v28m.html
HQEMU,连源码都不见了:
http://sourceforge.net/projects/hqemu/?source=navbar
老外好像有人说他们这违反GPL协议。或能这玩意儿也不太重要,也没人认真追究。
为什么人们对多核的模拟不感兴趣呢,因为虚拟化的技术很好用,很成熟。服务器领域更是用不到低效的全模拟。而且硬件在不断变强,
今天单核不强,明天说不定就够用了。
不过只怕CPU工艺的物理极限就快到了,到时只怕还是要依靠多核来提升性能的。
另外CPU核数的增多,以及异种CPU的组合,使得CPU的设计越来越复杂,似乎在向更智能的方向发展,可能会通往仿生人脑结构的方向,人工智能会不会从这诞生呢?
目前,QEMU不开虚拟化,默认是双线程的,一个线程模拟CPU,一个负责IO。不论-smp设置的是多少,都由这一个线程负责。对于非同种CPU的模拟,比如X86模拟ARM或者ARM模拟X86,多核的优势基本无用。
QEMU的优势在于CPU模拟,各种CPU都能模拟,效率当然比虚拟化要低很多。比如X86模拟ARM,现在安卓SDK里的模拟器基于QEM,模拟ARM的兼容性要好,但却慢得很,用来测试应用都嫌慢。而在安卓ARM上模拟X86更是慢到家。
所以有的人就考虑用多核加速QEMU的CPU模拟。
也看到10、11年就有IBM和Redhat的人提这个,网上可以查到他们作报告的ppt,但是这方面似乎一直没有热起来,不知道为什么。
查了查,看到的有三个项目,似乎都是中国人弄的,前两个反正都能在IEEE上下到论文。
COREMU,最近的论文和更新在2013年,复旦大学开发的,官方网址:
http://sourceforge.net/p/coremu/home/Home/
这个我尝试编译而且成功了:http://blog.sina.com.cn/s/blog_59cf67260102v1ys.html
原理似乎是这样的:一个线程模拟一个CPU然后绑定到一个物理CPU,如果模拟的核太多,就开始新一轮的绑定。
PQEMU,台湾人的项目,国立中正大学,最近的更新在2年多前了,似乎中间还有很多人贡献了源码。
源码地址:
https://github.com/podinx/PQEMU
编译一直不成功:
http://blog.sina.com.cn/s/blog_59cf67260102v28m.html
HQEMU,连源码都不见了:
http://sourceforge.net/projects/hqemu/?source=navbar
老外好像有人说他们这违反GPL协议。或能这玩意儿也不太重要,也没人认真追究。
为什么人们对多核的模拟不感兴趣呢,因为虚拟化的技术很好用,很成熟。服务器领域更是用不到低效的全模拟。而且硬件在不断变强,
今天单核不强,明天说不定就够用了。
不过只怕CPU工艺的物理极限就快到了,到时只怕还是要依靠多核来提升性能的。
另外CPU核数的增多,以及异种CPU的组合,使得CPU的设计越来越复杂,似乎在向更智能的方向发展,可能会通往仿生人脑结构的方向,人工智能会不会从这诞生呢?