[发明专利]并行多核虚拟机的原子指令模拟方法及虚拟机装置有效
申请号: | 201210127348.8 | 申请日: | 2012-04-26 |
公开(公告)号: | CN102662730A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 靳国杰;高翔 | 申请(专利权)人: | 龙芯中科技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/38 |
代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
地址: | 100190 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 多核 虚拟机 原子 指令 模拟 方法 装置 | ||
技术领域
本发明涉及虚拟机技术领域,特别涉及一种并行多核虚拟机的原子指令模拟方法及虚拟机装置。
背景技术
虚拟机(Virtual Machine)是对一种硬件设备进行模拟仿真的软件系统。近年来随着多核CPU的普及,虚拟机也开始增加对于多核CPU的模拟功能。早期主要采用串行的方法模拟多核CUP的运行,即虚拟机是单进程,在微观上以分时间片的方式轮询调度多个CPU,在宏观上模拟多个CPU的并行行为。在开源虚拟机系统(例如Bochs、QEMU、Simple-scalar等)中,均以串行方法模拟执行目标系统中多个CPU。这种方式实现简单,但是所有被模拟的CPU只能共享使用本地的一个CPU资源,每个模拟CPU可利用的CPU资源与总的模拟个数成反比,扩展性差。采用以这种结构实现的多核虚拟机一般难以支持几十个以上的模拟CPU。
并行多核虚拟机有效克服了串行结构的局限性。在并行多核虚拟机中,创建多个线程,每个线程分别模拟一个目标CPU。这种方式能够充分利用本地CPU资源。在本地物理CPU个数大于被模拟的CPU个数时,能够得到接近线性的加速比。目前采用这种结构的虚拟机能够以较好的效率模拟几百甚至上千个CPU。
并行多核虚拟机需要解决的一个问题是原子访存指令的模拟。原子访存指令是在硬件上实现互斥访存的支持机制,用于为多线程之间的自旋锁、互斥量等同步原语提供最底层的支持。例如,在X86指令中提供了lock指令缀,CPU保证带有lock前缀的指令以原子方式实现对内存的一次读写操作。在串行结构的多核虚拟机中无需模拟lock的语义,而在并行多核虚拟机中必须保证模拟lock的原子语义,目前主要有三种手段:
1、加锁:即在访存动作之前加锁,访存动作之后解锁。这种手段要求所有访存动作都要包含加锁行为,使得每次访存模拟代价较高,整体效率较低。
2、采用本地CPU支持的原子访存指令:例如X86的lock,MIPS的11/sc,等等。这种方式只能针对特定的硬件平台,可移植性受到限制。
3、以数学算法模拟原子指令:例如并行研究领域中的CASN等算法。该算法对于使用环境有各方面限制,例如需要提供额外存储空间保存描述符(descriptor)、必须使用特殊函数读写内存等,通用性受到限制。
发明内容
本发明的目的在于提供一种可移植性强、执行效率高的原子访存指令的模拟方法和装置。
为实现上述目的,一方面,本发明提供了一种并行多核虚拟机的原子指令模拟方法,该虚拟机根据目标CPU的内核个数,创建与CPU内核个数相等的多个CPU线程。该方法步骤包括:所述多个CPU线程中的第一CPU线程向其他CPU线程发送请求等待信号;接收到所述请求等待的其它CPU线程在原执行地址暂停,并返回确认信号;第一CPU线程接收到所有其他CPU线程的确认信号后执行原子访存指令;向处于原执行地址暂停的CPU线程发送撤消等待信号;接收到所述撤消等待信号的CPU线程由原执行地址继续执行。
另一方面,本发明提供了一种虚拟机装置,包括线程创建模块、线程调度模块和执行模块。线程创建模块用于根据目标CPU的内核个数,创建与所述CPU内核个数相等的多个CPU线程,所述多个CPU线程包括第一CPU线程和其他CPU线程;线程调度模块用于所述多个CPU线程间的信息交互,其中,所述第一CPU线程向其他CPU线程发送请求等待信号,接收到所述请求等待信号的其它CPU线程在原执行地址暂停,并返回确认信号,所述第一CPU线程在执行原子访存指令后,向处于原执行地址暂停的CPU线程发送撤消等待信号;执行模块用于当所述第一CPU线程接收到所有其他CPU线程的确认信号后执行原子访存指令。
本发明具有下列优点:
1.方法通用性好,移植性高。本发明只使用本地操作系统支持的标准线程间通讯机制,不依赖于特定目标指令集,不依赖于特定的平台,对于访存宽度、位置不做任何限制。能够克服加锁、本地原子指令、CASN算法等方式的不足。
2.执行效率高。本发明的开销主要体现在线程之间发送消息的代价,据实验测试效率较好,平均每次原子访存模拟代价低于毫秒级。
附图说明
图1是本发明实施例一种并行多核虚拟机的原子指令模拟方法流程图;
图2是本发明实施例一种并行多核虚拟机的原子指令模拟方法示意图;
图3是本发明实施例一种虚拟机装置示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术有限公司,未经龙芯中科技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210127348.8/2.html,转载请声明来源钻瓜专利网。