一种多核cpu的切换方法

文档序号:6401752阅读:459来源:国知局
专利名称:一种多核cpu的切换方法
技术领域
本发明涉及计算机技术领域,特别涉及一种多核CPU的切换方法。
背景技术
CPU包括引导处理器BSP、应用处理器AP,是计算机的运算核心和控制核心。对于安装有两颗CPU的服务器主板,假设每颗CPU有四个内核,则两颗CPU共八个内核,这样,整个系统就相当于有一个BSP和七个AP。也就是说,所述BSP担负系统启动和运行操作系统OS的主要线程,因此BSP有且仅有一个,而AP有无均可。操作系统DOS主要是一种面向磁盘的系统软件,是人与机器的一座桥梁。DOS是单线程系统,也就是说,在DOS下只能支持单CPU运行,这样,既无法利用多核CPU的多核特性,也无法对其余CPU进行查询测试。

发明内容
本发明的目的在于提供一种多核CPU的切换方法,通过在DOS环境下实现多核CPU的切换,解决了对多核CPU任意操作的技术问题。根据本发明的一个方面,提供的一种多核CPU的切换方法包括中央处理器CPU间的切换步骤,包括:在DOS下,接收来自用户的含有待切换标识的CPU间切换指令;根据所述CPU间切换指令,保存运行操作系统的第一当前CPU的工作环境参数;将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU,并控制所述第一当前CPU退出运行状态,使第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行。优选地,所述将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU的步骤包括:生成用于使所述待切换CPU切换为第二当前CPU的第二处理器内部中断消息,并发送至所述待切换CPU ;根据所述第二处理器内部中断消息,将所述待切换CPU的AP切换为BSP,以便所述待切换CPU进入运行状态。优选地,所述控制所述第一当前CPU退出运行状态的步骤包括:生成用于使第一当前CPU退出运行状态的第一处理器内部中断消息IPI,并发送至所述第一当前CPU ;根据所述第一处理器内部中断消息,将所述第一当前CPU中的BSP切换为AP,以便退出运行状态。优选地,所述第一当前CPU的工作环境参数包括代码段寄存器CS参数和指令寄存器EIP参数,所述第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行的步骤包括:
所述第二当前CPU按照所述第一当前CPU的CS参数和EIP参数,分别设置第二当前CPU中BSP的CS参数和EIP参数,使所述第二当前CPU中的BSP按照所设置的CS参数和EIP参数,继续运行操作系统。优选地,所述方法还包括CPU内多核间的切换步骤,所述CPU的多核包括一个BSP、一个或多个AP,所述切换步骤包括:接收来自用户的含有待切换标识的CPU内切换指令;根据所述CPU内切换指令,保存运行操作系统的第一当前BSP的工作环境参数,并控制所述第一当前BSP退出运行状态;将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP,使第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行。优选地,所述将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP的步骤包括:生成用于使所述待切换AP切换为第二当前BSP的第四处理器内部中断消息,并发送至所述待切换AP;根据所述第四处理器内部中断消息,将所述待切换AP切换为BSP,以便所述待切换AP进入运行状态。优选地,所述控制所述第一当前BSP退出运行状态的步骤包括:生成用于使第一当前BSP退出运行状态的第三处理器内部中断消息,并发送至所述第一当前BSP ;根据所述第三处理器内部中断消息,将所述第一当前BSP切换为AP,以便退出运行状态。优选地,所述第一当前BSP的工作环境参数包括CS参数和EIP参数,所述第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行的步骤包括:所述第二当前BSP按照所述第一当前BSP的CS参数和EIP参数,分别设置第二当前BSP的CS参数和EIP参数,使所述当前第二 BSP按照所设置的CS参数和EIP参数,继续运行操作系统。优选地,所述方法还包括:生成用于读取BSP中内部寄存器组的第五处理器内部中断消息,并发送至所述BSP ;根据所述第五处理器内部中断消息,显示所述BSP的内部寄存器组,以便用户查询和调试。优选地,所述方法还包括:在所述接收来自用户的含有待切换标识的CPU间切换指令前或CPU切换指令前,生成用于初始化AP的启动处理器内部中断消息,并发送至所有AP ;根据收到的所述启动处理器内部中断消息,对AP的内部寄存器组进行初始化操作。与现有技术相比较,本发明的有益效果在于:本发明通过在DOS下将任意一个AP切换为运行操作系统的BSP,实现对AP进行任意操作,不仅可以利用多核CPU的多核特性,也可以对其余CPU进行查询测试。


图1是本发明实施例提供的多核CPU间切换流程图;图2是本发明实施例提供的多核CPU内切换流程图;图3是本发明实施例提供的多核CPU切换系统原理框图。
具体实施例方式以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。图1是本发明实施例提供的多核CPU间切换流程图,如图1所示,步骤包括:步骤101:在磁盘操作系统DOS下,接收来自用户的含有待切换标识的CPU间切换指令。步骤102:根据所述CPU间切换指令,保存运行操作系统的第一当前CPU的工作环境参数。所述第一当前CPU的工作环境参数包括代码段寄存器CS参数和指令寄存器EIP参数。具体地说,首先通过高级可编程中断处理控制器APIC总线对所述当前第一 CPU发出处理器内部中断IPI,在IPI处理程序中,保存下当前第一CPU的运行场景,例如:EAX, EBX, ECX, EDX, EBP, ESP, CS及EIP,以及相关的APIC寄存器组和MSR寄存器组。步骤103、将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU,并控制所述第一当前CPU退出运行状态,使第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行。其中,所述控制所述第一当前CPU退出运行状态的步骤包括:生成用于使第一当前CPU退出运行状态的第一处理器内部中断消息(第一 IPI消息),并发送至所述第一当前CPU ;根据所述第一处理器内部中断消息,将所述第一当前CPU中的引导处理器BSP切换为应用处理器AP,以便退出运行状态。所述将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU的步骤包括:生成用于使所述待切换CPU切换为第二当前CPU的第二处理器内部中断消息,并发送至所述待切换CPU ;根据所述第二处理器内部中断消息,将所述待切换CPU的AP切换为BSP,以便所述待切换CPU进入运行状态。所述第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行的步骤包括:所述第二当前CPU按照所述第一当前CPU的CS参数和EIP参数,分别设置第二当前CPU中BSP的CS参数和EIP参数,使所述BSP按照所设置的CS参数和EIP参数,继续运行操作系统。具体地说,首先,根据用户所设定的欲切换CPU APIC ID,在IPI处理程序中,将第二当前 CPU 的 MSR Register IA32_APIC_BASE (MSR Index:OxlB)位 8 从 O 设定为 I,标志着第二当前CPU中的一个AP将变成BSP。其次,将第一当前CPU的MSR Register IA32_APIC_BASE (MSR Index:0xlB)位8从I设定为0,标志着第一当前CPU中的BSP将变成AP。然后,依次将第二当前CPU中所述AP的CS和EIP设成第一当前CPU所设定的CS和EIP。最后,执行远跳转指令,跳到CS:EIP处,程序退出到DOS下,实现了 CPU间的切换。进一步地,在所述步骤101前,还包括初始化AP的步骤,所述初始化AP的步骤包括:生成用于初始化AP的启动处理器内部中断消息,并发送至所有AP,根据收到的所述启动处理器内部中断消息,对AP内部寄存器组进行初始化操作。进一步地,在所述步骤103后,还包括查询和调试步骤,所述查询和调试步骤包括:生成用于读取BSP中内部寄存器组的第五处理器内部中断消息,并发送至所述BSP,根据所述第五处理器内部中断消息,显示所述BSP的内部寄存器组,以供用户查询和调试。图2是本发明实施例提供的多核CPU内切换流程图,所述CPU的多核包括一个BSP、一个或多个AP,如图2所示,CPU内多核间的切换步骤包括:步骤201:接收来自用户的含有待切换标识的CPU内切换指令。步骤202:根据所述CPU内切换指令,保存运行操作系统的第一当前BSP的工作环境参数。其中,所述第一当前BSP的工作环境参数包括代码段寄存器CS参数和指令寄存器EIP参数。具体地说,首先通过高级可编程中断处理控制器APIC总线对所述当前第一 BSP发出处理器内部中断IPI,在IPI处理程序中,保存下当前第一 BSP的运行场景,例如:EAX, EBX, ECX, EDX, EBP, ESP, CS及EIP,以及相关的APIC寄存器组和MSR寄存器组。步骤203:将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP,并控制所述第一当前BSP退出运行状态,使第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行。其中,所述将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP的步骤包括:生成用于使所述待切换AP切换为第二当前BSP的第四处理器内部中断消息,并发送至所述待切换AP ;根据所述第四处理器内部中断消息,将所述待切换AP切换为BSP,以便所述待切换AP进入运行状态。所述控制所述第一当前BSP退出运行状态的步骤包括:生成用于使第一当前BSP退出运行状态的第三处理器内部中断消息,并发送至所述第一当前BSP;根据所述第三处理器内部中断消息,将所述第一当前BSP切换为AP,以便退出运行状态。所述第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行的步骤包括:所述第二当前BSP按照所述第一当前BSP的CS参数和EIP参数,分别设置第二当前BSP的CS参数和EIP参数,使所述当前第二 BSP按照所设置的CS参数和EIP参数,继续运行操作系统。具体地说,首先,根据用户所设定的欲切换CPU APIC ID,在IPI处理程序中,将指定 AP 的 MSR Register IA32_APIC_BASE (MSR Index:0xlB)位 8 从 0 设定为 1,标志着所述AP将变成第二当前BSP。其次,将第一当前BSP的MSR Register IA32_APIC_BASE (MSRIndex:0xlB)位8从I设定为0,标志着第一当前BSP将变成AP。然后,依次将第二当前BSP中的CS和EIP设成第一当前BSP所设定的CS和EIP。最后,执行远跳转指令,跳到CS = EIP处,程序退出到DOS下,实现了 CPU内多核间的切换。进一步地,在所述步骤201前,还包括初始化AP的步骤,所述初始化AP的步骤包括:生成用于初始化AP的启动处理器内部中断消息,并发送至所有AP,根据收到的所述启动处理器内部中断消息,对AP内部寄存器组进行初始化操作。进一步地,在所述步骤203后,还包括查询和调试步骤,所述查询和调试步骤包括:生成用于读取第二当前BSP中内部寄存器组的第五处理器内部中断消息,并发送至所述第二当前BSP,根据所述第五处理器内部中断消息,显示所述第二当前BSP的内部寄存器组,以供用户查询和调试。通过图1和图2可知,本发明能够对多核CPU进行初始化、自由切换,以及信息读取。图3是本发明实施例提供的多核CPU切换系统原理框图,如图3所示,多核CPU切换装置发出用于初始化AP的启动处理器内部中断SIPI消息,完成全部AP的初始化,当需要进行多核CPU切换时,多核CPU切换装置保存BSP工作环境,并切换用户指定AP作为运行OS的CPU,成功切换AP成为BSP后,就会回到DOS下,此时CPU对OS及应用软件完全是透明的,从而可以获得所述指定AP相关的内部寄存器资料,供用户查验及测试,例如:EAX、EBX、ECX、EDX、EBP、ESP, CS和EIP,以及APIC寄存器组和MSR寄存器组。所述多核CPU切换系统的工作流程如下:第一步、多核CPU切换装置利用高级可编程中断处理控制器APIC总线,发出用于初始化的SIPI消息,所有AP收到SIPI消息后,会执行相应的代码设定其内部的寄存器完成初始化操作。第二步、初始化完成后,多核CPU切换装置可根据用户的需求,先是保存下当前CPU运行的场景,然后发出IPI消息给BSP,将BSP切换为AP,然后再将待切换的AP转为用于运行OS的BSP。进一步,当所述待切换的AP与所述BSP属于同一 CPU的内核时,实现CPU内多核间的切换;当所述待切换的AP与所述BSP属于不同CPU的内核时,实现CPU间的切换。第三步、多核CPU切换装置也可对指定CPU发出IPI消息,执行提前设定好的AP代码,将CPU内部的所有寄存器,如MTRR,APIC等,全部输出到主机屏幕上,方便用户对CPU内部资料进行查询调试.
多核CPU切换装置提供了所有AP的IPI处理程序,这样在IPI消息或SIPI消息发出后,就会进入到各个AP的IPI处理程序,在AP的IPI处理程序处理完成后,就会回到多核CPU切换装置的软件执行点。尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
权利要求
1.一种多核CPU的切换方法,其特征在于,包括中央处理器CPU间的切换步骤,包括: 在磁盘操作系统DOS下,接收来自用户的含有待切换标识的CPU间切换指令; 根据所述CPU间切换指令,保存运行操作系统的第一当前CPU的工作环境参数; 将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU,并控制所述第一当前CPU退出运行状态,使第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行。
2.根据权利要求1所述的方法,其特征在于,所述将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU的步骤包括: 生成用于使所述待切换CPU切换为第二当前CPU的第二处理器内部中断消息,并发送至所述待切换CPU ; 根据所述第二处理器内部中断消息,将所述待切换CPU的AP切换为BSP,以便所述待切换CPU进入运行状态。
3.根据权利要求2所述的方法,其特征在于,所述控制所述第一当前CPU退出运行状态的步骤包括: 生成用于使第一当前CPU退出运行状态的第一处理器内部中断消息,并发送至所述第一当前CPU; 根据所述第一处理器内部中断消息,将所述第一当前CPU中的引导处理器BSP切换为应用处理器AP,以便退出运行状态。
4.根据权利要求3所述的方法,其特征在于,所述第一当前CPU的工作环境参数包括代码段寄存器CS参数和指令寄存器EIP参数,所述第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行的步骤包括: 所述第二当前CPU按照所述第一当前CPU的CS参数和EIP参数,分别设置第二当前CPU中BSP的CS参数和EIP参数,使所述第二当前CPU中的BSP按照所设置的CS参数和EIP参数,继续运行操作系统。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括CPU内多核间的切换步骤,所述CPU的多核包括一个BSP、一个或多个AP,所述切换步骤包括: 接收来自用户的含有待切换标识的CPU内切换指令; 根据所述CPU内切换指令,保存运行操作系统的第一当前BSP的工作环境参数; 将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP,并控制所述第一当前BSP退出运行状态,使第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行。
6.根据权利要求5所述的方法,其特征在于,所述将所述CPU内切换指令中待切换标识指定的待切换AP切换为运行操作系统的第二当前BSP的步骤包括: 生成用于使所述待切换AP切换为第二当前BSP的第四处理器内部中断消息,并发送至所述待切换AP ; 根据所述第四处理器内部中断消息,将所述待切换AP切换为BSP,以便所述待切换AP进入运行状态。
7.根据权利要求6所述的方法,其特征在于,所述控制所述第一当前BSP退出运行状态的步骤包括:生成用于使第一当前BSP退出运行状态的第三处理器内部中断消息,并发送至所述第一当前BSP ; 根据所述第三处理器内部中断消息,将所述第一当前BSP切换为AP,以便退出运行状态。
8.根据权利要求7所述的方法,其特征在于,所述第一当前BSP的工作环境参数包括CS参数和EIP参数,所述第二当前BSP按照所保存的第一当前BSP的工作环境参数继续运行的步骤包括: 所述第二当前BSP按照所述第一当前BSP的CS参数和EIP参数,分别设置第二当前BSP的CS参数和EIP参数,使所述当前第二 BSP按照所设置的CS参数和EIP参数,继续运行操作系统。
9.根据权利要求6-8任意一项所述的方法,其特征在于,所述方法还包括: 生成用于读取BSP中内部寄存器组的第五处理器内部中断消息,并发送至所述BSP ; 根据所述第五处理器内部中断消息,显示所述BSP的内部寄存器组,以供用户查询和调试。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括: 在所述接收来自用户的含有 待切换标识的CPU间切换指令前或CPU切换指令前,生成用于初始化AP的启动处理器内部中断消息,并发送至所有AP ; 根据收到的所述启动处理器内部中断消息,对AP内部寄存器组进行初始化操作。
全文摘要
本发明公开了一种多核CPU的切换方法,包括中央处理器CPU间的切换步骤,所述切换步骤包括在磁盘操作系统DOS下,接收来自用户的含有待切换标识的CPU间切换指令;根据所述CPU间切换指令,保存运行操作系统的第一当前CPU的工作环境参数;将所述CPU间切换指令中待切换标识指定的待切换CPU切换为运行操作系统的第二当前CPU,并控制所述第一当前CPU退出运行状态,使第二当前CPU按照所保存的第一当前CPU的工作环境参数继续运行。本发明能够在DOS下对多核CPU进行初始化,并可进行自由切换,获取多核CPU的信息。
文档编号G06F9/46GK103197959SQ20131011975
公开日2013年7月10日 申请日期2013年4月8日 优先权日2013年4月8日
发明者郑红文 申请人:合肥联宝信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1