针对龙芯多核CPU模拟的动态代码转换的多线程化方法技术

技术编号:8593809 阅读:173 留言:0更新日期:2013-04-18 06:57
本发明专利技术为一种针对龙芯多核CPU模拟的动态代码转换的多线程化方法,包括:对需要模拟的龙芯多核CPU进行初始化;为各个待模拟的CPU核准备相应的动态代码转换环境;通过线程间通信完成各动态代码转换线程初始化;各个动态代码转换线程开始并行工作。该方法首先通过针对需要模拟的龙芯CPU核数进行探测,准备对应的多线程代码转换相应环境,再依靠多线程之间的通讯机制保证动态代码转换的并行执行,则避免模拟核在需要获得执行机会以及核间通讯过程中的不必要等待,提高对龙芯多核CPU的模拟效率。本发明专利技术的方法在计算机虚拟化技术领域内具有广泛地实用价值和应用前景。

【技术实现步骤摘要】
针对龙芯多核CPU模拟的动态代码转换的多线程化方法
本专利技术涉及针对龙芯多核CPU模拟的动态代码转换的多线程化方法,具体涉及一种多线程化的代码转换环境设计、多转换线程之间的通讯机制以及基于以上方法的对龙芯多核CPU的多线程模拟方法,它能够通过在对龙芯多核CPU模拟时多线程并行地进行代码转换从而对模拟效率进行优化,属于计算机虚拟化

技术介绍
当前采用国产龙芯处理器的服务器中,大部分采用龙芯多核CPU,通常在研发过程中需要对CPU硬件进行模拟,对CPU进行模拟是指通过软件方法模拟出相应的硬件环境,提供给上层一个透明的运行环境,使上层感觉自己就像直接运行在相应的CPU硬件上一样,通常对CPU硬件进行模拟可以满足虚拟化、上层相应软件调试等需求,同时可以在模拟的CPU硬件上注入故障以检查上层软件的健壮性。现有的对龙芯多核CPU的模拟实现中并没有使多个模拟核进行并行的代码转换,这降低了龙芯多核CPU的模拟效率,如图1所示,在当前龙芯多核CPU的模拟实现中,由于每个模拟的CPU核按照轮询方式来获得执行机会,同时在进行核间通讯的过程中,需要响应的模拟核因没有得到执行机会而不能及时完成通讯过程,从而降低了对龙芯多核CPU的模拟效率。如果能在模拟过程中,通过设计实现的多线程代码翻译环境,并且完成多翻译线程之间的通讯机制,如图2所示,使在对多个核的模拟过程中实现并行的动态代码翻译,则可以避免模拟核在需要获得执行机会以及核间通讯过程中的不必要等待,提高对龙芯多核CPU的模拟效率,从而为虚拟化、上层软件调试提供高效的支持。综上,本专利技术对提高针对龙芯多核CPU的模拟效率有很重要的意义。
技术实现思路
本专利技术人认识到,如果能在模拟过程中,通过设计实现的多线程代码转换环境,并且完成多转换线程之间的通讯机制,如图2所示,使在对多个核的模拟过程中实现并行的动态代码转换,则可以避免模拟核在需要获得执行机会以及核间通讯过程中的不必要等待,提高对龙芯多核CPU的模拟效率,从而为虚拟化、上层软件调试提供高效的支持。综上,本专利技术对提高针对龙芯多核CPU的模拟效率有很重要的意义。本专利技术的一个目的,是提供一种针对龙芯多核CPU模拟的动态代码转换的多线程化方法,它是针对龙芯多核CPU模拟的将动态代码转换过程多线程化来实现并行的方法,它首先通过针对需要模拟的龙芯CPU核数进行探测,准备对应的多线程代码转换相应环境,再依靠多线程之间的通讯机制保证动态代码转换的并行执行,则避免模拟核在需要获得执行机会以及核间通讯过程中的不必要等待,提高对龙芯多核CPU的模拟效率根据本专利技术的一个方面,提供了一种针对龙芯多核CPU模拟的动态代码转换的多线程化方法,其特征在于包括:步骤A:对需要模拟的龙芯多核CPU进行初始化;步骤B:为各个待模拟的CPU核准备相应的动态代码转换环境;步骤C:通过线程间通信完成各动态代码转换线程初始化;步骤D:使各个动态代码转换线程开始并行工作。本专利技术的优点包括:本专利技术是一种针对龙芯多核CPU模拟的多线程动态代码转换方法,它与现有技术相比,其主要优点如下:(1)通过使对多核CPU模拟的过程通过多线程技术,实现了动态代码并行化,提高了模拟过程中动态代码转换的效率;(2)通过在多线程代码转换的过程中,通过线程通讯模拟核间通讯过程,避免不必要的等待,进一步提高动态代码转换的效率。附图说明图1是现有技术的龙芯多核CPU模拟动态代码转换时序图。图2是根据本专利技术的一个实施例的龙芯多核CPU模拟动态代码转换时序图。图3是根据本专利技术的一个实施例的针对龙芯多核CPU模拟的多线程动态代码转换方法总体流程图。图4是根据本专利技术的一个实施例的针对龙芯多核CPU模拟的多线程动态代码转换详细工作流程图。具体实施方式以下结合附图及具体实施例对本专利技术再作进一步详细的说明。本专利技术的一个主要思想,是在对龙芯多核cpu的模拟过程中通过使每个核的动态代码转换并行化,从而避免原本各个核轮询执行过程中以及在核间通讯过程中不必要的等待,进而提高对龙芯多核CPU的模拟效率。经过并行后的龙芯多核CPU动态代码转化时序图如图2所示,从图中我们可以看出多个CPU核在整个代码翻译的过程中采用并行化执行,在同一时刻多个CPU同时进行动态代码转换。如图3所示,根据本专利技术的一个实施例的一种针对龙芯多核CPU模拟的多线程动态代码转换方法包括以下步骤:步骤101.对需要模拟的龙芯多核CPU进行初始化;步骤102.为各个待模拟的CPU核准备相应的动态代码转换环境;步骤103.通过线程间通信完成各动态代码转换线程初始化;步骤104.各个动态代码转换线程开始并行工作。其中,步骤101所述的对需要模拟的龙芯多核CPU进行初始化包括对需要模拟的龙芯CPU进行特定的分析,确定每个CPU中要进行模拟的核数,同时给对应的核进行特定标识,以便之后动态代码转换并行化,然后为其初始化好相应的模拟寄存器、模拟内存等,并且在特定的寄存器中放好启动所需的特定初始值,为启动CPU做好准备。其中,步骤102包括为了保证多线程动态代码转换的并行执行,为每个动态代码转换线程准备独立的代码转换资源,由于动态代码转换过程需要经历将源代码变为中间代码,从而最终转换为目标代码两个过程,所以需要为中间代码和目标代码分别准备配套的资源。其中,步骤103包括:为了保证多个代码核能够在同时就绪的情况下同时开始工作,设置特定的信号通讯机制和锁变量,在此基础上线程间通讯保证多个动态代码转换线程的一致性。其中,步骤104包括:在之前准备好的多线程代码转换线程环境和动态代码转换进程初始化的基础上,对各个核中的需要模拟执行的指令进行并行的动态代码转换,在转换过程中保持线程间的同步性,保证并行工作的正确性,并且利用线程间通讯完成核间通讯的模拟。本专利技术适用但不限于针对龙芯多核处理器的模拟效率优化。更具体地,参见图2、图3及图4,根据本专利技术的一个实施例的一种针对龙芯多核CPU模拟的多线程动态代码转换方法包括以下步骤:步骤201:对需要模拟的龙芯多核CPU进行初始化在对龙芯多核CPU进行模拟前,需要对龙芯多核CPU进行抽象,为保证之后多个核能够在多线程环境下进行并行动态代码转换,每个核需要有自己独立的数据结构,其中包括CPUState和CoreIPIState两方面,需要对核进行唯一编号,从而形成CoreID,以便在动态代码转换的过程中使用数据自己的转换资源;同时对于核内部的CPUState进行独立的初始化以备动态代码转换过程中的映射,通过以上工作来保证每个核在运行过程中不影响其他核的动态代码转换工作。步骤202:为各个待模拟的CPU核准备相应的动态代码转换环境。通过该步骤主要完成了对动态代码转换所需的相关资源的初始化,为每个核准备特定的资源进行处理;根据如图4所示的本专利技术的实施例,步骤202的具体实现过程可以包括:步骤202-1:初始化各个核的动态代码转换上下文在为每一个待模拟的CPU核准备动态代码转换环境的过程中,应当为其准备代码转换上下文TCGContext,包括在代码转换过程中核所对应的序号,转换过程中用到的中间变量和全局变量计数,目标代码保存数据及跳转指针,在代码转换上下文TCGContext中较重要的数据结构如下:intcpu_index;uint8_t本文档来自技高网
...
针对龙芯多核CPU模拟的动态代码转换的多线程化方法

【技术保护点】
一种针对龙芯多核CPU模拟的动态代码转换的多线程化方法,其特征在于包括:步骤A:对需要模拟的龙芯多核CPU进行初始化;步骤B:为各个待模拟的CPU核准备相应的动态代码转换环境;步骤C:通过线程间通信完成各动态代码转换线程初始化;步骤D:使各个动态代码转换线程开始并行工作。

【技术特征摘要】
1.一种针对龙芯多核CPU模拟的动态代码转换的多线程化方法,其特征在于包括:步骤A:对需要模拟的龙芯多核CPU进行初始化;步骤B:为各个待模拟的CPU核准备相应的动态代码转换环境;步骤C:通过线程间通信完成各动态代码转换线程初始化;步骤D:使各个动态代码转换线程开始并行工作,其中所述步骤B包括:初始化各个核的动态代码转换上下文(步骤202-1);初始化各个核转换的目的代码的执行前后序列(步骤202-2);初始化各个核转换的中间代码操作码及操作数缓存(步骤202-3);初始化各个核的动态转换加速资源(步骤202-4),所述步骤C包括:设置多个代码转换线程相互之间及与IO线程之间的信号通讯机制和锁变量,从而保证多个CPU核能够在同时就绪的情况下同时开始工作,从而使线程间通信能够保证多个动态代码转换线程的一致性,利用系统的初始主线程,为每个CPU核创建一个子线程,其中所述主线程在创建每个所述子线程后保留每个子线程的线程号用于后续的通信,主线程需要CPU线程初始化后才能开始后续工作,在主线程创建所述子线程后,挂起所述主线程,随后主线程等待创建的子线程准备就绪并返回线程号后再被唤醒继续运行,使用CPU信号cpu_cond和每个CPU核的全局锁global_mutex_multi来同步所述主线程和子线程。2.根据权利要求1所述的针对龙芯多核CPU模拟的动态代码转换的多线程化方法,其特征在于所述步骤A包括:对需要模拟的龙芯多核CPU进行特定的分析,确定每个CPU中要进行模拟的核数,同时给对应的核进行特定标识,以便之后动...

【专利技术属性】
技术研发人员:肖利民唐浩夫阮利王慧祥徐鹏
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1