系统管理模式进入方法、处理器和计算机系统转让专利

申请号 : CN202311628148.5

文献号 : CN117331676B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王惟林牛彦奎刘景龙王江波管应炳成龙

申请人 : 上海兆芯集成电路股份有限公司

摘要 :

本公开涉及系统管理模式技术领域,尤其涉及一种系统管理模式进入方法、处理器和计算机系统,该方法应用于处理器,处理器包括至少一个逻辑核,该方法包括响应于系统管理中断,进入系统管理模式;将当前的状态信息存储至对应的状态保存区;将运行模式设置为目标运行模式;以及在目标运行模式下执行系统管理中断处理程序。可以直接确定出状态保存区的地址、核配置信息存储空间的地址以及系统管理中断处理程序的地址,各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高系统管理中断处理程序的执行效率。

权利要求 :

1.一种系统管理模式进入方法,其特征在于,应用于处理器的逻辑核,所述处理器包括至少一个逻辑核,所述方法包括:响应于系统管理中断,进入系统管理模式;

将当前的状态信息存储至对应的状态保存区;

所述处理器的硬件将运行模式设置为目标运行模式,其中,所述目标运行模式包括

64bit模式和32bit模式;以及

在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。

2.根据权利要求1所述的方法,其特征在于,所述处理器还包括至少一个模型特定寄存器MSR,各所述MSR中存储有与所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括用于存储核配置信息的核配置信息存储空间,其中,所述方法还包括:

根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址,所述核配置信息包括模式设置信息,所述模式设置信息能够指示对应于目标运行模式的各寄存器的设定值;

基于模式设置信息设置对应于目标运行模式的各寄存器。

3.根据权利要求2所述的方法,其特征在于,对应于所述64bit模式的寄存器包括以下至少一个:CR0寄存器、CR3寄存器、CR4寄存器、EFER寄存器、段寄存器、CS寄存器;段寄存器包括DS寄存器、ES寄存器、FS寄存器、GS寄存器中的至少一个;

其中,CR0寄存器的PG位的设定值为1、PE位的设定值为1,CR3寄存器指示系统管理模式中程序的所在的页的地址;CR4寄存器指示所述处理器的基础配置信息;EFER寄存器的LME位的设定值为1;CS寄存器的L位的设定值为1,表示开启64bit模式。

4.根据权利要求1所述的方法,其特征在于,所述处理器还包括至少一个模型特定寄存器MSR,各所述MSR中存储有与所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括用于存储核配置信息的核配置信息存储空间,其中,所述核配置信息包括:模式控制信息,所述模式控制信息用于指示所述逻辑核所需进入的目标运行模式。

5.根据权利要求1所述的方法,其特征在于,所述处理器包括至少一个模型特定寄存器MSR,各所述MSR中存储有与对应的所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括状态保存区,其中,所述方法还包括:根据至少一个MSR中存储的地址,确定逻辑核对应的状态保存区的地址。

6.根据权利要求1所述的方法,其特征在于,所述处理器包括至少一个模型特定寄存器MSR,各所述MSR中存储有与对应的所述逻辑核的系统管理内存相关的地址,所述系统管理内存用于存储核配置信息的核配置信息存储空间,其中,所述方法还包括:

根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址,所述核配置信息包括运行环境信息,所述运行环境信息能够指示系统管理模式下对应于运行环境的逻辑核各寄存器的设定值;

基于运行环境信息设置对应于运行环境的各寄存器。

7.根据权利要求6所述的方法,其特征在于,所述至少一个逻辑核包括一个第一逻辑核和至少一个第二逻辑核;至少一个MSR中包括设置在逻辑核外的用于存储所述第一逻辑核的基地址的第一MSR;

在各所述系统管理内存中,预设的状态保存区偏移地址所对应的存储空间为对应的逻辑核的状态保存区,预设的核配置信息偏移地址所对应的存储空间为对应的逻辑核的核配置信息存储空间;所述系统管理内存的基地址为系统管理中断处理程序的地址;

其中,所述方法包括:

所述第一逻辑核将从所述第一MSR中获取到的基地址确定为对应的系统管理内存的基地址;并且/或者所述第二逻辑核根据所述第一MSR中获取到的基地址和该第二逻辑核对应的基地址关联关系确定出该第二逻辑核对应的系统管理内存的基地址。

8.根据权利要求6所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核设置的第二MSR,各所述第二MSR用于存储对应的逻辑核的系统管理内存的基地址;

在各所述系统管理内存中,预设的状态保存区偏移地址所对应的存储空间为对应的逻辑核的状态保存区,预设的核配置信息偏移地址所对应的存储空间为对应的逻辑核的核配置信息存储空间;所述系统管理内存的基地址为系统管理中断处理程序的地址;

其中,所述方法还包括:各逻辑核将从对应的所述第二MSR中获取到的基地址确定为该逻辑核对应的系统管理内存的基地址。

9.根据权利要求6所述的方法,其特征在于,所述核配置信息还包括系统管理中断处理程序的地址。

10.根据权利要求9所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第三MSR和一个第四MSR,各所述第三MSR用于存储对应的逻辑核的状态保存区的地址,各所述第四MSR用于存储对应的逻辑核的核配置信息存储空间的地址。

11.根据权利要求9所述的方法,其特征在于,所述核配置信息存储空间中存储有根据对应的逻辑核的核配置信息生成的配置信息结构,所述配置信息结构中包括多个信息字段,各所述信息字段用于存储对应的核配置信息或对应的核配置信息的存储地址。

12.根据权利要求9所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核设置的第二MSR,各所述第二MSR用于存储对应的逻辑核的状态保存区的地址和核配置信息存储空间的地址。

13.根据权利要求6所述的方法,其特征在于,所述系统管理内存,还包括:处理程序存储空间,用于存储系统管理中断处理程序。

14.根据权利要求13所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核设置的一个第三MSR、一个第四MSR和一个第五MSR,各所述第三MSR用于存储对应的逻辑核的状态保存区的地址,各所述第四MSR用于存储对应的逻辑核的核配置信息存储空间的地址,各所述第五MSR用于存储对应的逻辑核的处理程序存储空间的地址。

15.根据权利要求13所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第二MSR,各所述第二MSR用于存储对应的逻辑核的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址。

16.根据权利要求13所述的方法,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第三MSR和一个第四MSR,各所述逻辑核的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址中的任意两个存储在对应的第三MSR中、剩余一个存储在对应的所述第四MSR中。

17.一种处理器,其特征在于,所述处理器包括至少一个逻辑核,所述逻辑核被配置为在初始化设置之后执行响应执行步骤,所述响应执行步骤包括:响应于系统管理中断,进入系统管理模式;

将当前的状态信息存储至对应的状态保存区;

所述处理器的硬件将运行模式设置为目标运行模式,其中,所述目标运行模式包括

64bit模式和32bit模式;以及

在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。

18.根据权利要求17所述的处理器,其特征在于,所述处理器还包括至少一个模型特定寄存器MSR,各所述MSR中存储有与所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括用于存储核配置信息的核配置信息存储空间,其中,所述逻辑核所执行的响应执行步骤还包括:

根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址,所述核配置信息包括模式设置信息,所述模式设置信息能够指示对应于目标运行模式的各寄存器的设定值;

基于模式设置信息设置对应于目标运行模式的各寄存器。

19.根据权利要求18所述的处理器,其特征在于,

对应于所述64bit模式的寄存器包括以下至少一个:CR0寄存器、CR3寄存器、CR4寄存器、EFER寄存器、段寄存器、CS寄存器;段寄存器包括DS寄存器、ES寄存器、FS寄存器、GS寄存器中的至少一个;

其中,CR0寄存器的PG位的设定值为1、PE位的设定值为1,CR3寄存器指示系统管理模式中程序的所在的页的地址;CR4寄存器指示所述处理器的基础配置信息;EFER寄存器的LME位的设定值为1;CS寄存器的L位的设定值为1,表示开启64bit模式。

20.根据权利要求17所述的处理器,其特征在于,所述处理器还包括至少一个模型特定寄存器MSR,各所述MSR中存储有与所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括用于存储核配置信息的核配置信息存储空间,其中,所述核配置信息包括:模式控制信息,所述模式控制信息用于指示所述逻辑核所需进入的运行模式为目标运行模式。

21.根据权利要求17所述的处理器,其特征在于,所述处理器包括至少一个模型特定寄存器MSR,各所述MSR中存储有与对应的所述逻辑核的系统管理内存相关的地址,所述系统管理内存包括状态保存区,其中,所述逻辑核所执行的响应执行步骤还包括:根据至少一个MSR中存储的地址,确定逻辑核对应的状态保存区的地址。

22.根据权利要求17所述的处理器,其特征在于,所述处理器包括至少一个模型特定寄存器MSR,各所述MSR中存储有与对应的所述逻辑核的系统管理内存相关的地址,所述系统管理内存用于存储核配置信息的核配置信息存储空间,其中,所述逻辑核所执行的响应执行步骤还包括:

根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址,所述核配置信息包括运行环境信息,所述运行环境信息能够指示系统管理模式下对应于运行环境的逻辑核各寄存器的设定值;

基于运行环境信息设置对应于运行环境的各寄存器。

23.根据权利要求22所述的处理器,其特征在于,所述至少一个逻辑核包括一个第一逻辑核和至少一个第二逻辑核;至少一个MSR中包括设置在逻辑核外的用于存储所述第一逻辑核的基地址的第一MSR;

在各所述系统管理内存中,预设的状态保存区偏移地址所对应的存储空间为对应的逻辑核的状态保存区,预设的核配置信息偏移地址所对应的存储空间为对应的逻辑核的核配置信息存储空间;所述系统管理内存的基地址为系统管理中断处理程序入口的地址;

其中,所述逻辑核所执行的响应执行步骤还包括:

所述第一逻辑核将从所述第一MSR中获取到的基地址确定为对应的系统管理内存的基地址;并且/或者所述第二逻辑核根据所述第一MSR中获取到的基地址和该第二逻辑核对应的基地址关联关系确定出该第二逻辑核对应的系统管理内存的基地址。

24.根据权利要求22所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核设置的第二MSR,各所述第二MSR用于存储对应的逻辑核的系统管理内存的基地址;

在各所述系统管理内存中,预设的状态保存区偏移地址所对应的存储空间为对应的逻辑核的状态保存区,预设的核配置信息偏移地址所对应的存储空间为对应的逻辑核的核配置信息存储空间;所述系统管理内存的基地址为系统管理中断处理程序入口的地址;

其中,所述逻辑核所执行的响应执行步骤还包括:各逻辑核将从对应的所述第二MSR中获取到的基地址确定为该逻辑核对应的系统管理内存的基地址。

25.根据权利要求22所述的处理器,其特征在于,所述核配置信息还包括系统管理中断处理程序的地址。

26.根据权利要求25所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第三MSR和一个第四MSR,各所述第三MSR用于存储对应的逻辑核的状态保存区的地址,各所述第四MSR用于存储对应的逻辑核的核配置信息存储空间的地址。

27.根据权利要求25所述的处理器,其特征在于,所述核配置信息存储空间中存储有根据对应的逻辑核的核配置信息生成的配置信息结构,所述配置信息结构中包括多个信息字段,各所述信息字段用于存储对应的核配置信息或对应的核配置信息的存储地址。

28.根据权利要求25所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核设置的第二MSR,各所述第二MSR用于存储对应的逻辑核的状态保存区的地址和核配置信息存储空间的地址。

29.根据权利要求22所述的处理器,其特征在于,所述系统管理内存,还包括:处理程序存储空间,用于存储系统管理中断处理程序。

30.根据权利要求29所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核设置的一个第三MSR、一个第四MSR和一个第五MSR,各所述第三MSR用于存储对应的逻辑核的状态保存区的地址,各所述第四MSR用于存储对应的逻辑核的核配置信息存储空间的地址,各所述第五MSR用于存储对应的逻辑核的处理程序存储空间的地址。

31.根据权利要求29所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第二MSR,各所述第二MSR用于存储对应的逻辑核的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址。

32.根据权利要求29所述的处理器,其特征在于,至少一个MSR中包括为每个逻辑核所设置的一个第三MSR和一个第四MSR,各所述逻辑核的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址中的任意两个存储在对应的第三MSR中、剩余一个存储在对应的所述第四MSR中。

33.一种计算机系统,其特征在于,包括:

处理器,所述处理器包括至少一个逻辑核和至少一个模型特定寄存器MSR;

存储器;

其中,所述逻辑核被配置为在初始化设置步骤之后执行响应执行步骤,所述响应执行步骤包括:响应于系统管理中断,进入系统管理模式;

将当前的状态信息存储至对应的状态保存区;

所述处理器的硬件将运行模式设置为目标运行模式,其中,所述目标运行模式包括

64bit模式和32bit模式;以及

在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。

说明书 :

系统管理模式进入方法、处理器和计算机系统

技术领域

[0001] 本公开涉及系统管理模式技术领域,尤其涉及一种系统管理模式进入方法、处理器和计算机系统。

背景技术

[0002] 系统管理模式(System Management Mode,缩写为SMM)是处理器的一种特殊的运行模式,通常被用来实现系统级功能,如系统监控、电源管理、错误处理或原始设备制造商(Original Equipment Manufacturer,缩写为OEM)私有的定制化功能。但进入SMM之后会先进入实模式,而后在执行系统管理中断处理程序时从实模式切换至64bit模式之后才能正常执行系统管理中断处理程序,影响处理效率。

发明内容

[0003] 有鉴于此,本公开提出了一种系统管理模式进入方法、处理器和计算机系统。
[0004] 根据本公开的一方面,提供了一种系统管理模式进入方法,应用于处理器的逻辑核,所述处理器包括至少一个逻辑核,所述方法包括:
[0005] 响应于系统管理中断,进入系统管理模式;
[0006] 将当前的状态信息存储至对应的状态保存区;
[0007] 将运行模式设置为目标运行模式;以及
[0008] 在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。
[0009] 根据本公开的另一方面,提供了一种处理器,所述处理器包括至少一个逻辑核,所述逻辑核被配置为在初始化设置之后执行响应执行步骤,所述响应执行步骤包括:
[0010] 响应于系统管理中断,进入系统管理模式;
[0011] 将当前的状态信息存储至对应的状态保存区;
[0012] 将运行模式设置为目标运行模式;以及
[0013] 在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。
[0014] 根据本公开的另一方面,提供了一种计算机系统,包括:
[0015] 处理器,所述处理器包括至少一个逻辑核和至少一个模型特定寄存器MSR;
[0016] 存储器;
[0017] 其中,所述逻辑核被配置为在所述初始化设置步骤之后执行响应执行步骤,所述响应执行步骤包括:
[0018] 将当前的状态信息存储至对应的状态保存区;
[0019] 将运行模式设置为目标运行模式;以及
[0020] 在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。
[0021] 通过本公开实施例所提供的系统管理模式进入方法、处理器和计算机系统,可以直接根据核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高系统管理中断处理程序的执行效率。另外,还可以根据实际需要对核配置信息进行定制化设定(例如对通用寄存器进行定制化设定),来减少在执行系统管理中断处理程序时所做的设定操作,以进一步提高执行系统管理中断处理程序的执行效率。
[0022] 根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0023] 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0024] 图1示出根据本公开一实施例的系统管理模式进入方法应用的处理器的框图。
[0025] 图2示出根据本公开一实施例的进入系统管理模式之前的初始化设置的流程图。
[0026] 图3示出根据本公开一实施例的系统管理模式进入方法中系统管理内存的示意图。
[0027] 图4示出根据本公开一实施例的系统管理模式进入方法的流程图。
[0028] 图5示出根据本公开一实施例的系统管理模式进入方法的流程图。
[0029] 图6示出根据本公开一实施例的示例一应用的处理器的框图。
[0030] 图7示出根据本公开一实施例的示例一中初始化设置的流程图。
[0031] 图8示出根据本公开一实施例的示例一中第一存储空间以及系统管理内存的示意图。
[0032] 图9示出根据本公开一实施例的配置信息结构的示意图。
[0033] 图10示出根据本公开一实施例的示例一中系统管理模式进入方法的流程图。
[0034] 图11示出根据本公开一实施例的示例二应用的处理器的框图。
[0035] 图12示出根据本公开一实施例的示例二中初始化设置的流程图。
[0036] 图13示出根据本公开一实施例的示例二中系统管理模式进入方法的流程图。
[0037] 图14示出根据本公开一实施例的示例三中初始化设置的流程图。
[0038] 图15示出根据本公开一实施例的示例三中第一存储空间以及系统管理内存的示意图。
[0039] 图16示出根据本公开一实施例的示例四应用的处理器的框图。
[0040] 图17示出根据本公开一实施例的示例四中初始化设置的流程图。
[0041] 图18‑图20示出根据本公开一实施例的示例四中第一存储空间以及系统管理内存的示意图。
[0042] 图21示出根据本公开一实施例的配置信息结构的示意图。
[0043] 图22示出根据本公开一实施例的示例四中初始化设置的流程图。
[0044] 图23示出根据本公开一实施例的示例四中系统管理模式进入方法的流程图。
[0045] 图24示出根据本公开一实施例的示例六应用的处理器的框图。
[0046] 图25示出根据本公开一实施例的示例六中初始化设置的流程图。
[0047] 图26‑图27示出根据本公开一实施例的示例六中系统管理内存的示意图。
[0048] 图28示出根据本公开一实施例的示例六中系统管理模式进入方法的流程图。
[0049] 图29示出根据本公开一实施例的计算机系统的框图。

具体实施方式

[0050] 以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0051] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0052] 另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0053] 本公开提供一种系统管理模式进入方法,图1示出根据本公开一实施例的系统管理模式进入方法应用的处理器的框图。该方法应用于图1所示的处理器1,该处理器1可以包括一个或多个逻辑核(logical core)11。处理器1中各逻辑核11设置有处于该逻辑核11内部的一个系统管理内存基地址(SMBase)寄存器111。该SMBase寄存器111用于存储该逻辑核11对应的如图3所示的系统管理内存(System Management Random Access Memory,缩写为SMRAM)M1的基地址。
[0054] 图2示出根据本公开一实施例的进入系统管理模式之前的初始化设置的流程图。如图2所示,该进入系统管理模式之前该方法需要先进行初始化设置,该初始化设置可以包括步骤S101‑步骤S104。
[0055] 在步骤S101中,处理器上电(power on)或重置(reset)之后,处理器的引导处理器(BootStrap Processor,缩写为BSP)开始执行基本输入输出系统(Basic Input/output System,缩写为BIOS)。在一实施例中,处理器1可以包含至少一个核心(core),每个核心包含至少一个逻辑核11。处理器1中的一个逻辑核11可以被设置为引导处理器。
[0056] 在步骤S102中,处理器中各逻辑核的系统管理内存基地址设置为同一预设值。例如,各逻辑核的系统管理内存基地址都被设置为同一预设值30000H(十六进制数,下同),本公开对此不作限制。
[0057] 图3示出根据本公开一实施例的系统管理模式进入方法中系统管理内存的示意图。如图3所示,由于所有逻辑核的系统管理内存都位于同一个内存(例如计算机系统的系统内存、或独立于系统内存的独立存储空间)中,若各逻辑核的系统管理内存基地址被设置为同一预设值,就使得各逻辑核11的状态保存区重叠(即所有逻辑核11的状态保存区所占用的内存地址范围相同)。若两个或两个以上的逻辑核11同时进入系统管理模式,前一个逻辑核11保存在状态保存区的状态信息(也称为上下文(context),包括各通用寄存器(例如,RAX、RBX、RCX、RDX等等)的值,等等)将会被之后进入SMM的逻辑核11覆盖,导致前一个逻辑核11无法正常退出SMM。因此为了保证两个或两个以上的逻辑核11同时进入SMM后都可以正常退出SMM,BIOS必须重定位每个逻辑核11的系统管理内存基地址到合适位置。各逻辑核11只有在进入SMM后才能通过修改SMBase寄存器111的值来重定位自己的系统管理内存基地址,且由于前面所说的原因,每个逻辑核11只能依次按顺序(即串行)进入SMM重定位系统管理内存基地址(也即执行下述步骤S103和步骤S104)。
[0058] 在步骤S103中,BIOS为各逻辑核11分配如图3所示的系统管理内存M1。不同逻辑核11的系统管理内存M1的基地址不同。
[0059] 如图3所示,各逻辑核11的系统管理内存M1设置为一固定结构,其中,SMBase ~SMBase+8000H之间的存储空间是空闲的。在系统管理内存M1中,从SMBase+8000H开始的存储空间用于存储系统管理中断处理程序(SMI handler)。状态保存区位于SMBase+OFFSET~
SMBase+FFFFH所对应的存储空间,用于保存进入SMM前逻辑核11的状态信息。其中,OFFSET是一个大于8000H且小于FFFFH的十六进制数。在一个实施例中,OFFSET为FE00H。在另一实施例中,OFFSET为FC00H。
[0060] 在步骤S104中,BIOS通知各逻辑核11重定位各自的系统管理内存基地址。具体来说,BIOS依次向各逻辑核11发送系统管理中断(SMI)使各逻辑核进入SMM后,将在步骤S103中分配的系统管理内存M1的首地址写入SMBase寄存器中。其中,当一个逻辑核11完成系统管理内存基地址的重定位后,BIOS才通知下一个逻辑核11进行系统管理内存基地址的重定位,即这个处理过程是串行的,效率较低。
[0061] 这样,通过步骤S101‑步骤S104,引导处理器通过BIOS实现了为各逻辑核11重定位系统管理内存基地址,保证了后续各逻辑核11可以同时响应系统管理中断。但是,由于各逻辑核11需串行进入SMM进行系统管理内存重定位,所以系统管理模式的初始化设置过程效率较低。
[0062] 图4示出根据本公开一实施例的系统管理模式进入方法的流程图。如图4所示,该系统管理模式进入方法在本文中也称响应执行步骤,响应执行步骤(即处理系统管理中断SMI的步骤)可以包括步骤S105‑步骤S109。下面以一个逻辑核为例,结合图4说明逻辑核11是如何处理系统管理中断的。
[0063] 在步骤S105中,逻辑核响应于系统管理中断(SMI),进入系统管理模式。
[0064] 在步骤S106中,逻辑核基于系统管理内存基地址SMBase确定出对应的状态保存区的地址范围(SMBase+OFFSET SMBase+FFFFH),而后从状态保存区的最高地址(例如SMBase+~FFFFH)处开始将该逻辑核当前的状态信息存储至对应的状态保存区(即从最高地址处向低地址方向存储)。
[0065] 在步骤S107中,逻辑核加载配置运行环境所需的各信息进而配置运行环境,并将SMBase+8000H确定为进入系统管理中断处理程序的入口(也即,SMBase+8000H为存储系统管理中断处理程序的存储空间的首地址)。在一些实施例中,配置运行环境可以是指配置如下表1所示的对应的各寄存器的值。其中,通过把CR0寄存器的PE,EM,TS和PG位设置为0,可以把逻辑核的运行模式设置为实模式(real mode)。
[0066] 表 1寄存器的配置设置
[0067]
[0068] 在步骤S108中,逻辑核开始执行系统管理中断处理程序(SMI handler)。在系统管理中断处理程序中,先将逻辑核的运行模式从实模式切换为目标运行模式(例如64bit模式),并在目标运行模式(例如64bit模式)下执行系统管理中断处理程序的剩余部分代码。由于需要执行模式切换,所以降低了系统管理中断处理程序的执行效率。另外,如表1所示,由于一些寄存器的值未定义(例如通用寄存器的值),执行系统管理中断处理程序的剩余部分代码前,还需要先加载需要的值到这些寄存器中,这也降低了系统管理中断处理程序的执行效率。
[0069] 在步骤S109中,逻辑核在系统管理中断处理程序的最后,执行RSM指令,退出系统管理模式。具体来说,响应于RSM指令,逻辑核将保存在状态保存区的状态信息恢复(例如,将保存在状态保存区的各寄存器的值再写回各寄存器中),退出系统管理模式。然后继续执行接收到系统管理中断之前在执行的程序。
[0070] 需要注意的是,上述步骤S105‑步骤S107是由逻辑核的硬件实现的,上述步骤S108‑S109是由逻辑核通过执行系统管理中断处理程序实现的。
[0071] 综上所述,图1‑图4所示的方式可以实现系统管理中断的正常执行,但存在以下问题:
[0072] 问题一:
[0073] 由于初始状态下各逻辑核的系统管理内存基地址均为同一预设值,为了保证各逻辑核都能同时响应系统管理中断,需通过执行步骤S101‑步骤S104为各逻辑核重定位系统管理内存基地址。但由于为各逻辑核重定位系统管理内存基地址的操作仅能使各逻辑核串行执行,非常耗时。且由于图3所示的系统管理内存M1的设置,只定义了系统管理内存顶部(即SMBase+FFFFH向下)和中部(即SMBase+8000H向上)的用途,没有定义系统管理内存底部(即SMBase+8000H向下)的用途,容易造成内存的碎片化(例如,系统管理内存底部可能不会被使用)、并使得系统管理模式下的内存管理代码更复杂。
[0074] 问题二:
[0075] 各逻辑核进入SMM后会被逻辑核的硬件设置为实模式,但是由于系统管理中断处理程序中的一些代码只能在目标运行模式(例如64bit模式)下执行,所以在系统管理中断处理程序中必须先将运行模式切换至目标运行模式(例如64bit模式)才可以。这就导致每次执行系统管理中断处理程序时,都必须执行一次从实模式到目标运行模式(例如64bit模式)的切换这一固定操作,降低了系统管理中断处理程序的执行效率。
[0076] 问题三:
[0077] 如表1所示,进入SMM后,一些寄存器(例如通用寄存器)的值是未定义(即不确定)的,每次执行系统管理中断处理程序时,需要先加载需要的值到这些寄存器中,这也降低了系统管理中断处理程序的执行效率。
[0078] 为解决上述技术问题,本公开实施例还提供了一种系统管理模式进入方法。图5示出根据本公开一实施例的系统管理模式进入方法的流程图。该方法可以应用于处理器,该处理器包括至少一个逻辑核。在一些实施例中,处理器可以包含至少一个核心,每个核心包含至少一个逻辑核。该系统管理模式进入方法是处理器在完成系统管理模式的初始化设置之后执行的,可以称为响应执行步骤,该响应执行步骤中响应于系统管理中断并执行系统管理中断处理程序。
[0079] 如图5所示,该响应执行步骤(也即系统管理模式进入方法)可以包括步骤S501‑步骤S504。
[0080] 在步骤S501中,响应于系统管理中断,进入系统管理模式。
[0081] 在步骤S502中,将当前的状态信息存储至对应的状态保存区。
[0082] 在步骤S503中,将运行模式设置为目标运行模式。其中,目标运行模式可以为64bit模式、32bit模式等,本公开对此不作限制。
[0083] 在步骤S504中,在所述目标运行模式下执行系统管理中断处理程序,其中,在执行所述系统管理中断处理程序过程中,不再进行模式切换。
[0084] 其中,步骤S501‑步骤S503是由处理器的硬件实现的,步骤S504是逻辑核通过执行系统管理中断处理程序实现的。
[0085] 在一种可能的实现方式中,所述处理器还可以包括至少一个模型特定寄存器MSR(model specific register;如下文所述的第一MSR、第二MSR、第三MSR、第四MSR、第五MSR),各所述MSR中存储有与所述逻辑核的系统管理内存相关的地址,使得逻辑核可以基于MSR中存储的相关地址对逻辑核进行预先设置,该预先设置包括将运行模式设置为目标运行模式、设置该逻辑核的运行环境。在一实施例中,会在系统管理内存中预设上述预先设置所需的核配置信息,且存储核配置信息的存储空间的首地址可以通过所述至少一个模型特定寄存器MSR确定。各逻辑核读写模型特定寄存器MSR时不需要进入系统管理模式,所以各逻辑核可以并行执行步骤S503,效率较高。
[0086] 在一些实施例中,该逻辑核的硬件(例如,中断处理单元)会先根据所述至少一个模型特定寄存器MSR中存储的地址从系统管理内存中对应的区域读取核配置信息,再根据所述核配置信息对该逻辑核进行预先配置。举例来说,可以根据核配置信息将该逻辑核的运行模式设置为64bit模式(具体如何设置,后文会详述)。在另一实施例中,该逻辑核的硬件(例如,中断处理单元)中直接预设了核配置信息,该逻辑核的硬件(例如,中断处理单元)直接根据预设的核配置信息对该逻辑核进行预先配置。
[0087] 在该实现方式中,所述系统管理内存包括用于存储核配置信息的核配置信息存储空间。其中,所述方法还包括:根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址,所述核配置信息包括模式设置信息,所述模式设置信息能够指示对应于目标运行模式的各寄存器的设定值;基于模式设置信息设置对应于目标运行模式的各寄存器。
[0088] 在该实现方式中,所述目标运行模式包括64bit模式,对应于所述64bit模式的寄存器包括以下至少一个:CR0寄存器、CR3寄存器、CR4寄存器、EFER寄存器、段寄存器、CS寄存器;段寄存器包括DS寄存器、ES寄存器、FS寄存器、GS寄存器中的至少一个。其中,CR0寄存器的PG位的设定值为1、PE位的设定值为1,CR3寄存器指示系统管理模式中程序的所在的页的地址;CR4寄存器指示所述处理器的基础配置信息;EFER寄存器的LME位的设定值为1;CS寄存器的L位的设定值为1,表示开启64bit模式。
[0089] 在该实现方式中,所述核配置信息包括:模式控制信息,所述模式控制信息用于指示所述逻辑核所需进入的目标运行模式,所述目标运行模式包括64bit模式。
[0090] 在该实现方式中,所述系统管理内存包括状态保存区,其中,所述方法还可以包括:根据至少一个MSR中存储的地址,确定逻辑核对应的状态保存区的地址。具体来说,逻辑核是根据所述至少一个模型特定寄存器MSR中存储的地址确定系统管理内存中的状态保存区的地址,再将逻辑核当前的状态信息存储至对应的系统管理内存中的状态保存区内。举例来说,逻辑核可以将架构寄存器的值写入系统管理内存中的状态保存区,等等。其中,架构寄存器包括通用寄存器(例如RAX、RBX、RCX、RDX,等等)、段寄存器(例如CS、DS、SS,等等),等等。
[0091] 在该实现方式中,所述核配置信息包括运行环境信息,所述运行环境信息能够指示系统管理模式下对应于运行环境的逻辑核各寄存器的设定值。其中,所述方法还包括:根据至少一个MSR中存储的地址,确定逻辑核对应的核配置信息存储空间的地址;基于运行环境信息设置对应于运行环境的各寄存器。
[0092] 在该实现方式中,所述核配置信息还包括系统管理中断处理程序的地址。
[0093] 在该实现方式中,所述系统管理内存,还可以包括:处理程序存储空间,用于存储系统管理中断处理程序。至少一个MSR中存储有处理程序存储空间等等地址。
[0094] 通过上述系统管理模式进入方法,可以直接根据前述至少一个模型特定寄存器MSR确定出状态保存区的地址、核配置信息存储空间的地址以及系统管理中断处理程序的地址,核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高系统管理中断处理程序的执行效率。另外,还可以根据实际需要对核配置信息进行定制化设定(例如对通用寄存器进行定制化设定),来减少在执行系统管理中断处理程序时所做的设定操作,以进一步提高执行系统管理中断处理程序的执行效率。举例来说,可以根据核配置信息将各逻辑核的标识写入通用寄存器(例如RAX)中,这样系统管理中断处理程序就可以直接从通用寄存器中读取到对应的逻辑核的标识,而不必通过执行指令(例如CPUID指令)获取,从而提高了执行系统管理中断处理程序的执行效率。
[0095] 为实现上述图5所示的方法,可以根据实际需要对方法的各步骤、执行该方法的处理器进行相应设置,本公开以下通过几种示意性示例对图5所示的系统管理模式进入方法(也即响应执行步骤)以及在该系统管理模式方法之前处理器需要进行的初始化步骤可能的实现方式进行示意性说明。
[0096] 示例一(下面将参照图6‑图10描述示例一):
[0097] 图6示出根据本公开一实施例的示例一应用的处理器的框图。如图6所示,该方法可以应用于如图6所示的处理器,该处理器包括多个逻辑核以及一个第一MSR 23。逻辑核包括一个第一逻辑核和至少一个第二逻辑核,其中,第一逻辑核可以为引导处理器(the bootstrap processor,缩写为BSP)、第二逻辑核可以为应用处理器(the application processor,缩写为AP)。为简明图6中仅示意性示出处理器包括两个逻辑核,分别为BSP和AP。在一实施例中,第一MSR 23被设置于处理器的非核心(uncore;例如,核间的互联结构)中。
[0098] 图7示出根据本公开一实施例的示例一中初始化设置的流程图,可应用于图6所示的处理器。如图7所示,该方法中初始化设置可以包括步骤S201‑步骤S204。
[0099] 在步骤S201中,处理器上电或者重置之后,处理器的第一逻辑核执行BIOS为所有逻辑核申请在系统管理模式下所需的连续的如图8所示的第一存储空间MM,该第一存储空间MM是连续的存储空间,用作处理器的各逻辑核的系统管理内存M2。根据申请到的第一存储空间进一步为每个逻辑核分配系统管理内存M2。其中,该第一存储空间MM(以及下文所述的第一存储空间)可以是从只能在系统管理模式下访问的系统内存或者独立于系统内存的存储器中分配的。
[0100] 图8示出根据本公开一实施例的示例一中第一存储空间以及系统管理内存的示意图。如图8所示,初始化设置中会为每个逻辑核分配一个如图8所示的系统管理内存M2,且各逻辑核的系统管理内存M2具有相同的预设的系统管理内存大小(例如64K bytes)。申请第一存储空间MM的过程中,可以将预设的系统管理内存大小与逻辑核个数的乘积作为所需申请的第一存储空间MM的大小。
[0101] 在步骤S202中,第一逻辑核执行BIOS将第一存储空间MM的首地址作为第一逻辑核的系统管理内存M2的基地址,并将该第一逻辑核对应的系统管理内存M2的基地址存储至第一MSR 23中。该第一MSR 23中可以供第一逻辑核写入(可以使用指令WRMSR)以及读取(可以使用指令RDMSR)对应的系统管理内存M2的基地址、供第二逻辑核读取(可以使用指令RDMSR)该基地址。其中,该第一MSR可以是64bit的模型特定寄存器(Model Specific Register)。
[0102] 在本实施例中,如图8所示,在各逻辑核对应的系统管理内存M2中:为各逻辑核所分配的系统管理内存M2的基地址为系统管理中断处理程序的地址(也即系统管理内存M2的基地址为系统管理中断处理程序的首地址),预设的核配置信息偏移地址所对应的存储空间是用于存储该逻辑核的核配置信息的核配置信息存储空间,预设的状态保存区偏移地址所对应的存储空间是该逻辑核的状态保存区。其中,第一逻辑核的系统管理内存M2的基地址即为上述存储在第一MSR中的基地址,第二逻辑核的系统管理内存M2的基地址为“根据第一逻辑核对应的系统管理内存M2的基地址和第二逻辑核对应的系统管理内存M2的基地址之间的关联关系确定出的”。不同的第二逻辑核与第一逻辑核之间的基地址关联关系不同。
[0103] 在一些实施例中,地址关联关系可以根据各逻辑核的系统管理内存M2的大小和各逻辑核的标识(例如可以将逻辑核的高级可编程中断控制器编号(Advanced Programmable Interrupt Controller ID,缩写为APIC_ID)作为该逻辑核的标识)确定的。假定第一逻辑核对应的基地址为BSP_SMM_BASE、且各逻辑核的系统管理内存M2的大小相同(例如都是64K bytes),则根据基地址关联关系可以确定出某一个第二逻辑核对应的基地址即为:BSP_SMM_BASE+APIC_ID×delta,其中,delta是各逻辑核的系统管理内存M2的大小。第一逻辑核的APIC_ID值为0,第一个第二逻辑核的APIC_ID值为1,第二个第二逻辑核的APIC_ID值为2,等等,依次类推。
[0104] 在一些实施例中,核配置信息偏移地址和状态保存区偏移地址是相对于对应的逻辑核的系统管理内存M2的基地址的偏移地址,本公开对此不作限制。
[0105] 在步骤S203中,第一逻辑核执行BIOS设置各所述逻辑核在所述系统管理模式下的核配置信息。在一些实施例中,核配置信息包括多个信息字段,各所述信息字段用于存储对应的核配置信息或对应的核配置信息的存储地址。在本实施例中,所述核配置信息包括所述逻辑核在执行系统管理中断处理程序之前进行模式设置所需的对应于所述目标运行模式的模式设置信息、所述逻辑核在执行系统管理中断处理程序之前进行运行环境设置所需的运行环境信息。以使得逻辑核可以基于模式设置信息将该逻辑核的运行模式设置为目标运行模式,以及基于运行环境信息将逻辑核的运行环境进行相应设置。在一些实施例中,目标运行模式可以为64bit模式、32bit模式等,本公开对此不作限制。所述运行环境信息能够指示在系统管理模式下对应于运行环境的各寄存器(例如,各通用寄存器RAX、RBX、RCX、RDX,等等)的设定值,所述模式设置信息能够指示对应于目标运行模式的各寄存器的设定值。
[0106] 在一些实施例中,所述核配置信息还可以包括模式控制信息、访问权限控制信息、中断源合法性信息中的至少一种。所述模式控制信息用于指示所述逻辑核所需进入的目标运行模式。所述访问权限控制信息用于指示针对目标资源的访问权限,所述目标资源包括以下至少一种:IO端口、寄存器、PCI设备、内存空间等逻辑核能够访问到的资源,本公开对此不作限制。所述中断源合法性信息用于指示系统管理中断的合法性。在一些实施例中,中断源合法性信息可以通过软件SMI白名单的形式实现。
[0107] 在步骤S204中,第一逻辑核执行BIOS通知各逻辑核将所述各逻辑核的核配置信息存储至如图8所示的对应于各逻辑核的核配置信息存储空间,对应于各逻辑核的核配置信息存储空间的地址是根据第一逻辑核的系统管理内存M2的基地址确定的。举例来说,可以先使用前文所述的算式BSP_SMM_BASE+APIC_ID×delta 计算出对应的逻辑核的系统管理内存M2的基地址,再将对应的逻辑核的系统管理内存M2的基地址与对应的核配置信息偏移地址相加,即可得到对应的逻辑核的核配置信息存储空间的地址。
[0108] 图9示出根据本公开一实施例的配置信息结构的示意图。在一些实施例中,配置信息结构(SMM_ENTRY_STRUCT)可以如图9所示包括顺序设置的多个信息字段。如图9所示,配置信息结构中各信息字段可以直接存储对应的核配置信息,如存储的CR0、CR3、CR4等寄存器的设定值。配置信息结构中各信息字段也可以存储指示存储对应的核配置信息的地址(即指针),来实现系统管理模式下的资源访问权限控制,以提高系统的安全性。举例来说,对应于IO端口访问权限控制设置IO写访问控制区指针、IO读访问控制区指针,针对模型特定寄存器MSR的访问权限控制设置MSR读访问控制区指针、MSR写访问控制区指针,针对中断源合法性信息设置软件SMI名单指针。
[0109] 在一些实施例中,配置信息结构中的各指针(IO写访问控制区指针、IO读访问控制区指针、MSR读访问控制区指针、MSR写访问控制区指针和软件SMI名单指针)可以按照设定的结构存储在对应的字段中,如图9所示,各指针可以指示一个存储空间。
[0110] 其中,如图9所示,IO写访问控制区指针、IO读访问控制区指针分别指示的存储空间“IO写访问控制区”和“IO读访问控制区”中存储了至少一个IO端口地址,逻辑核不被允许从IO写访问控制区中各IO端口地址对应的IO端口进行数据写入、逻辑核不被允许从IO读访问控制区中各IO端口地址对应的IO端口进行数据读取。
[0111] 其中,如图9所示,MSR写访问控制区指针、MSR读访问控制区指针分别指示的存储空间“MSR写访问控制区”和“MSR读访问控制区”中存储了至少一个MSR地址,逻辑核不被允许将数据写入MSR写访问控制区中各MSR地址对应的MSR、逻辑核不被允许从MSR读访问控制区中各MSR地址对应的MSR中读取数据。
[0112] 其中,如图9所示,软件SMI名单指针指示的存储空间中存储有软件SMI白名单,该软件SMI白名单中包括至少一个SMI标识,SMI标识用于指示对应的一个SMI。根据SMI标识可以在执行系统管理中断处理程序之前就确定系统管理中断处理程序的合法性,节省处理时间、且提高了系统的安全性。在一实施例中,SMI标识为一个8bit的数字,可以由触发SMI的软件写入端口寄存器中,并可以由系统管理中断处理程序读取、用以判断触发SMI的是哪个软件。
[0113] 在一些实施例中,如图9所示,配置信息结构中各信息字段的长度可以为预设长度,如32 bit或64 bit。配置信息结构中还包括Feature Control(功能控制)信息字段,Feature Control信息字段用于设定进入系统管理模式后需要实现的一些具体功能,例如可以通过Feature Control信息字段设定进入系统管理模式后是否支持模式切换控制、是否支持访问控制(即是否支持根据IO写访问控制区指针、IO读访问控制区指针、MSR写访问控制区指针、MSR读访问控制区指针、软件SMI名单指针等进行的控制)等。
[0114] 举例来说,若目标运行模式为64bit模式,则核配置信息可按照如下设置:
[0115] CR0:将CR0寄存器的PG位设置为1,表示默认开启分页(paging),将CR0寄存器的PE位设置为1,表示默认开启保护模式。
[0116] CR3:指向系统管理中断处理程序所在的页的地址。
[0117] CR4:包含一些处理器的基础配置,例如可以通过设置CR4寄存器的PAE(Physical Address Extensions,物理地址扩展)位来配置分页类型等。
[0118] EFER:将EFER寄存器的LME位设置为1,表示使能IA32‑e 模式。
[0119] DS/ES/FS/GS等段寄存器都设置为0。
[0120] CS:将CS寄存器的L位设置为1,表示开启64bit 模式。
[0121] 将上述核配置信息载入到逻辑核对应的寄存器里,使得逻辑核在进入系统管理模式后就可以直接处于64bit模式,无需在执行系统管理中断处理程序时再进行从实模式等模式到64bit模式的模式切换。这样可以提高系统管理中断处理程序的执行效率。
[0122] 综上所述,通过图6‑图9所示的示例一所提供的初始化设置,无需串行为各逻辑核设置系统管理内存M2的基地址,缩短了初始化所用的时间,提高了初始化的执行效率。核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接由硬件通过设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高执行系统管理中断处理程序的执行效率。另外,还可以根据实际需要对核配置信息进行定制化设定(例如对通用寄存器进行定制化设定),来减少在执行系统管理中断处理程序时所做的设定操作,以进一步提高执行系统管理中断处理程序的执行效率。
[0123] 图10示出根据本公开一实施例的示例一中系统管理模式进入方法的流程图。在完成系统管理内存的初始化设置之后,图6所示的处理器中任意一个逻辑核就可以处理系统管理中断了。图10所示的响应执行步骤为逻辑核处理系统管理中断的具体流程,该响应执行步骤可以由图6所示的处理器中任意一个逻辑核执行,且处理器中可以有一个或多个逻辑核同时进行该响应执行步骤。如图10所示,响应执行步骤可以包括步骤S206‑步骤S209。其中,步骤S206‑步骤S208是由逻辑核的硬件实现的,步骤S209是由逻辑核通过执行系统管理中断处理程序实现的。
[0124] 在步骤S206中,逻辑核响应于系统管理中断,进入系统管理模式(SMM)。步骤S206与图4的步骤S105相同,此处就不赘述了。而后执行步骤S207。
[0125] 在步骤S207中,逻辑核从第一MSR中获取到所存储的基地址(即第一逻辑核的系统管理内存M2的基地址BSP_SMM_BASE),而后根据该基地址确定出该逻辑核对应的状态保存区的地址,并将该逻辑核当前的状态信息存储至该逻辑核对应的状态保存区。其中,状态信息可以为指示逻辑核当前运行状态、环境的信息,如上下文(context)等等,该上下文可以包括各寄存器(如RAX、RBX、RCX、RDX等等)的值,本公开对此不作限制。
[0126] 其中,第一逻辑核和第二逻辑核基于第一MSR中存储的基地址确定出其对应的状态保存区的地址的方式存在差异:第一逻辑核在获取到第一MSR中的基地址后如图8所示,由于第一MSR中存储本身即为第一逻辑核对应的系统管理内存M2的基地址,则可以直接将该基地址与预设的状态保存区偏移地址相加就可以得到第一逻辑核的状态保存区的地址。第二逻辑核在获取到第一MSR中的基地址后,根据所述第一MSR中的第一逻辑核对应的系统管理内存M2的基地址和与该第二逻辑核对应的系统管理内存M2的基地址关联关系确定出该第二逻辑核的系统管理内存M2的第基地址,而后可以将该第二逻辑核所对应的系统管理内存M2的基地址和状态保存区偏移地址相加就可以得到该第二逻辑核对应的状态保存区的地址。前文已经描述如何根据算式 BSP_SMM_BASE+APIC_ID×delta计算出对应的逻辑核的系统管理内存M2的基地址、以及如何进一步计算出所述逻辑核的状态保存区的地址,此处就不赘述了。
[0127] 在步骤S208中,逻辑核根据所述第一MSR中的基地址确定出该逻辑核对应的系统管理内存M2中的核配置信息存储空间的地址,从所述核配置信息存储空间获取到核配置信息,并基于获取到核配置信息进行预先设置。
[0128] 其中,第一逻辑核和第二逻辑核基于第一MSR中存储的基地址确定出其对应的核配置信息存储空间的地址的方式存在差异:第一逻辑核在获取到第一MSR中的基地址后如图8所示,可以直接将该基地址与核配置信息偏移地址相加就可以得到第一逻辑核的核配置信息存储空间的地址。第二逻辑核可以将在上述步骤S207中确定的自身对应的系统管理内存M2的基地址和核配置信息偏移地址相加就可以得到该第二逻辑核对应的核配置信息存储空间的地址。前文已经描述了如何根据算式 BSP_SMM_BASE+APIC_ID×delta计算出对应的逻辑核的系统管理内存M2的基地址、以及如何进一步计算出所述逻辑核的核配置信息存储空间的地址,此处就不赘述了。
[0129] 在一些实施例中,预先设置可以包括:逻辑核根据对应的模式设置信息进行模式设置,也即将相应寄存器的值设置为模式设置信息中指示的设定值,以进入目标运行模式;各逻辑核根据对应的运行环境信息对运行环境进行设置,也即将相应寄存器的值设置为运行环境信息中指示的设定值,完成运行环境设置。具体如何设置已在前文中做了描述,此处就不赘述了。
[0130] 在一些实施例中,逻辑核将这些核配置信息载入寄存器之前,需要先检查这些核配置信息是否正确,若存在错误则可以直接关闭计算机系统(shutdown)。在确定核配置信息正确后,才将这些核配置信息载入到对应的寄存器里。
[0131] 在步骤S209中,逻辑核在目标运行模式下,根据该逻辑核对应的系统管理内存M2的基地址确定出系统管理中断处理程序的地址并执行所述系统管理中断处理程序。其中,如图8所示,第一逻辑核可以直接将从第一MSR中获取到的基地址作为系统管理中断处理程序的首地址,第二逻辑核可以直接将在上述步骤S207中确定的其对应的系统管理内存M2的基地址作为系统管理中断处理程序的首地址。其中,在所述系统管理中断处理程序的最后(即执行完系统管理中断处理程序中的所有功能代码之后)执行RSM指令,以退出所述系统管理模式。
[0132] 通过图10所示的示例一所提供的响应执行步骤,可以直接基于第一MSR中的基地址确定出状态保存区的地址、核配置信息存储空间的地址以及系统管理中断处理程序的地址,核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高系统管理中断处理程序的执行效率。另外,还可以根据实际需要对核配置信息进行定制化设定(例如对通用寄存器进行定制化设定),来减少在执行系统管理中断处理程序时所做的设定操作,以进一步提高执行系统管理中断处理程序的执行效率。
[0133] 在另一种实施方式中,图7可以不含步骤S203和步骤S204,图8的系统管理内存M2中可以不包含核配置信息存储空间。相应的,各逻辑核的硬件中包含了预设的核配置信息,且在图10的步骤S208中,各逻辑核的硬件是通过预设的核配置信息对逻辑核进行预先设置的。
[0134] 示例二(下面参照图8、图11‑图13描述示例二):
[0135] 图11示出根据本公开一实施例的示例二应用的处理器的框图。如图11所示,该方法应用于如图11所示的处理器,该处理器包括一个或多个逻辑核,每个逻辑核包含一个第二MSR 411。其中,每个逻辑核设置的第二MSR 411可以如图11所示设置在逻辑核内部,也可以设置在逻辑核外,本公开对此不作限制。逻辑核包括一个第一逻辑核(如BSP)和至少一个第二逻辑核(如AP)。为简明图11中仅示意性示出处理器包括两个逻辑核。
[0136] 图12示出根据本公开一实施例的示例二中初始化设置的流程图。如图12所示,该方法中初始化设置可以包括步骤S401‑步骤S404。
[0137] 在步骤S401中,处理器上电或者重置之后,处理器的第一逻辑核执行BIOS为处理器的所有逻辑核申请在系统管理模式下所需的如图8所示的第一存储空间MM,该第一存储空间MM是连续的存储空间。申请连续的第一存储空间MM的实现方式可以参考上述步骤S201,为免冗余不予赘述。
[0138] 在本实施例中,初始化中会先申请如图8所示的第一存储空间MM,而后为每个逻辑核分配一个如图8所示的系统管理内存M2,未免冗余第一存储空间MM和系统管理内存M2的实现方式参见上文,不予赘述。
[0139] 在步骤S402中,第一逻辑核执行BIOS根据所述第一存储空间MM的首地址和预设的系统管理内存大小确定出各逻辑核的系统管理内存M2的基地址,并通知各逻辑核存储各自对应的基地址到被设置的第二MSR中。其中,可以直接将第一存储空间MM的首地址作为第一逻辑核的系统管理内存M2的基地址。而后基于第一逻辑核对应的基地址和基地址关联关系计算出各第二逻辑核的系统管理内存M2的基地址,其与上文基于第一逻辑核对应的基地址和基地址关联关系计算出各第二逻辑核对应的基地址的实现方式相同,可参考上文,为免冗余不予赘述。
[0140] 其中,在确定出各逻辑核对应的基地址之后,第一逻辑核可以向各逻辑核发出处理器间中断(inter‑processor interrupt,缩写为IPI),以使得接收到处理器间中断的逻辑核将自身对应的系统管理内存M2的基地址存储到各自的第二MSR中,接收到处理器间中断的各逻辑核可以并行执行,所以执行效率较高。具体而言,第一逻辑核将为各逻辑核分配的系统管理内存M2的首地址写入所有逻辑核都能访问的内存中不同的存储位置。然后,第一逻辑核发送处理器间中断IPI给所有第二逻辑核。各第二逻辑核响应于接收到的IPI,开始执行初始化中断处理程序(各第二逻辑核的初始化中断处理程序可以是由处理器开发人员预先编写好、为其分配中断向量、并设置为各第二逻辑核的中断处理程序)。通过执行初始化中断处理程序,各第二逻辑核从所有逻辑核都能访问的内存中对应的存储位置,读取各自的系统管理内存M2的首地址。举例来说,第一逻辑核将为第一个第二逻辑核分配的系统管理内存M2的首地址写入共享内存(所有逻辑核都可以访问该共享内存)中地址为addr1的存储空间中,将为第二个第二逻辑核分配的标存储空间M2的首地址写入共享内存(所有逻辑核都可以访问该共享内存)中地址为addr2的存储空间中,等等。然后,第一逻辑核发送处理器间中断IPI给所有第二逻辑核。各第二逻辑核响应于接收到的IPI,开始执行初始化中断处理程序,以从共享内存中对应的地址处读取各自的系统管理内存的首地址。例如,第一个第二逻辑核可以从共享内存中地址为addr1的存储空间中读取对应的系统管理内存M2的首地址;第二个第二逻辑核可以从共享内存中地址为addr2的存储空间中读取对应的系统管理内存M2的首地址。
[0141] 在步骤S403中,第一逻辑核执行BIOS设置各所述逻辑核在所述系统管理模式下的核配置信息。
[0142] 在步骤S404中,第一逻辑核执行BIOS将所述各逻辑核的核配置信息存储至如图8所示的第一存储空间MM中的对应的核配置信息存储空间,各核配置信息对应的核配置信息存储空间的地址是根据各逻辑核的系统管理内存M2的基地址确定的。
[0143] 其中,上述步骤S403‑步骤S404的实现方式与上述步骤S203‑步骤S204相似,更详细的描述可参考上文,为免冗余不予赘述。
[0144] 通过图12所示的示例二所提供的初始化设置,各逻辑核可以并行执行系统管理模式的初始化操作,因而系统管理模式初始化的效率较高。且由于为每个逻辑核设置的系统管理内存M2的基地址被存储至各自的第二MSR,能够减少后续各逻辑核获取其对应的系统管理内存M2的基地址的时间。核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,执行系统管理中断处理程序时无需再进行模式切换这一固定操作,也提高了系统管理中断处理程序执行效率。另外。可以根据实际需要对核配置信息进行定制化设定,进一步减少了执行系统管理中断处理程序时进行设置所用的时间,更进一步提高了系统管理中断处理程序执行效率。
[0145] 图13示出根据本公开一实施例的示例二中系统管理模式进入方法的流程图。如图13所示,该方法中在完成系统管理内存的初始化设置之后,图11所示的处理器中任意一个逻辑核就可以处理系统管理中断了。图13所示的响应执行步骤为逻辑核处理系统管理中断的具体流程,该响应执行步骤可以由图11所示的处理器中任意一个逻辑核执行,该响应执行步骤可以由处理器中任意一个逻辑核执行,且处理器中可以有一个或多个逻辑核同时执行该响应执行步骤。如图13所示,响应执行步骤可以包括步骤S406‑步骤S409。其中,步骤S406‑步骤S408是由逻辑核的硬件实现的,步骤S409是由逻辑核通过执行系统管理中断处理程序实现的。
[0146] 在步骤S406中,逻辑核响应于系统管理中断,进入系统管理模式。
[0147] 在步骤S407中,逻辑核从对应的第二MSR中读取到对应的基地址(即该逻辑核的系统管理内存的基地址),而后基于获取到的基地址确定出对应的状态保存区的地址,再之后根据确定出的状态保存区的地址将逻辑核当前的状态信息存储到对应的状态保存区中。其中,如图8所示,逻辑核可以直接将各自的基地址和状态保存区偏移地址相加就可以得到该逻辑核对应的状态保存区在所分配的系统管理内存M2中的地址。
[0148] 在步骤S408中,逻辑核根据对应的第二MSR中的基地址确定出逻辑核对应的核配置信息存储空间的地址,从所述核配置信息存储空间获取到核配置信息,并基于获取到的核配置信息进行预先设置。其中,如图8所示,逻辑核在获取到对应的第二MSR中的基地址后可以直接将该基地址与核配置信息偏移地址相加就可以得到该逻辑核的核配置信息存储空间的地址。
[0149] 在一些实施例中,预先设置可以包括:逻辑核根据对应的模式设置信息进行模式设置,也即将相应寄存器的值设置为模式设置信息中指示的设定值,以进入目标运行模式;各逻辑核根据对应的运行环境信息对运行环境进行设置,也即将相应寄存器的值设置为运行环境信息中指示的设定值,完成运行环境设置。具体如何设置已在前文中做了描述,此处就不赘述了。
[0150] 在一些实施例中,逻辑核将这些核配置信息载入寄存器之前,需要先检查这些核配置信息是否正确,若存在错误则可以直接关闭计算机系统(shutdown)。在确定核配置信息正确后,才将这些核配置信息载入到对应的寄存器里。
[0151] 在步骤S409中,逻辑核在目标运行模式下,则根据所获取到的第二MSR中的基地址确定出系统管理中断处理程序的地址并执行所述系统管理中断处理程序。其中,如图8所示,逻辑核可以直接将获取到的第二MSR中的基地址作为系统管理中断处理程序的首地址。其中,在所述系统管理中断处理程序最后(即执行完系统管理中断处理程序中的所有功能代码之后)执行RSM指令,以退出所述系统管理模式。
[0152] 通过图13所示的示例二所提供的响应执行步骤,各逻辑核可以直接基于第二MSR中存储的基地址确定出状态保存区的地址、核配置信息存储空间的地址以及系统管理中断处理程序的入口的地址,核配置信息中包含的模式设置信息使得各逻辑核每次进入系统管理模式后可以直接通过硬件设置进入目标运行模式,在执行系统管理中断处理程序时无需再进行模式切换这一固定操作,可以提高系统管理中断处理程序的执行效率。另外,由于可以根据实际需要对核配置信息进行定制化设定,可以进一步减少执行系统管理中断处理程序时需要做的设置操作,更进一步提高了系统管理中断处理程序的执行效率。
[0153] 在另一种实施方式中,图12可以不含步骤S403和步骤S404,图8的系统管理内存M2中可以不包含核配置信息存储空间。相应的,各逻辑核的硬件中包含了预设的核配置信息,且在图13的步骤S408中,各逻辑核的硬件是通过预设的核配置信息对逻辑核进行预先设置的。
[0154] 示例三(下面参照图11、图13‑图15描述示例三):
[0155] 该方法仍应用于如图11所示的处理器。示例三所提供的方法与示例二所提供方法仅初始化设置存在差异,图14示出根据本公开一实施例的示例三中初始化设置的流程图。其中,如图14所示,该方法中初始化设置包括步骤S401’、步骤S402’、步骤S403‑步骤S404。
该方法中响应执行步骤包括如图13所示的各步骤。也即,示例三与示例二所提供的方法仅初始化设置的前两个步骤不同,其余步骤相同,为免冗余仅对不同的S401’、步骤S402’进行说明,其余步骤以及相关有益效果参见上文示例二,此处不予赘述。
[0156] 其中,步骤S401’为,处理器上电或者重置之后,处理器的第一逻辑核执行BIOS为各逻辑核申请在系统管理模式下所需的如图15所示的系统管理内存M2。
[0157] 图15示出根据本公开一实施例的示例三中第一存储空间以及系统管理内存的示意图。在一些实施例中,如图15所示,各逻辑核的系统管理内存M2组成第一存储空间MF,该第一存储空间MF中各逻辑核的系统管理内存M2可以是在不连续的存储空间,也即第一存储空间MF为不连续空间且各系统管理内存M2为连续的存储空间。为便于统一管理,各逻辑核的系统管理内存M2可以具有相同的预设的系统管理内存大小。系统管理内存M2的实现方式可以参考上述图8中系统管理内存M2的相关描述,为免冗余不予赘述。
[0158] 步骤S402’为,第一逻辑核执行BIOS将每个逻辑核的系统管理内存M2的首地址确定为该逻辑核对应的基地址,并通过向各逻辑核发送处理器间中断通知各逻辑核存储各自对应的系统管理内存基地址到各自的第二MSR中。至于如何通过向各逻辑核发送处理器间中断以通知各逻辑核存储各自对应的系统管理内存基地址到各自的第二MSR中,前文已做了描述,此处就不赘述了。而后执行步骤S403‑步骤S404。
[0159] 这样,在示例三的实施例中,由于第一存储空间可以为不连续的存储空间,可以更有效的利用存储空间,减少存储空间的碎片化。
[0160] 在另一种实施方式中,图14可以不含步骤S403和步骤S404,图15的系统管理内存M2中可以不包含核配置信息存储空间。相应的,各逻辑核的硬件中包含了预设的核配置信息,且在图13的步骤S408中,各逻辑核的硬件是通过预设的核配置信息对逻辑核进行预先设置的。
[0161] 示例四(下面参照图16‑图23描述示例四):
[0162] 图16示出根据本公开一实施例的示例四应用的处理器的框图。该方法应用于图16所示的处理器,该处理器可以包括一个或多个逻辑核。为各逻辑核设置有一个第三MSR 611和一个第四MSR 612。每个逻辑核的第三MSR 611可以如图16所示设置在逻辑核内部,也可以设置逻辑核之外;同样,每个逻辑核的第四MSR 612可以如图16所示设置在逻辑核内部,也可以设置逻辑核之外。为简明,图16中仅示意性给出处理器包括两个逻辑核。
[0163] 图17示出根据本公开一实施例的示例四中初始化设置的流程图。如图17所示,该方法中初始化设置可以包括步骤S601‑步骤S604。
[0164] 在步骤S601中,处理器上电或者重置之后,处理器的逻辑核(如多个逻辑核中的第一逻辑核(如BSP))通过执行BIOS为处理器申请在系统管理模式下所需的第一存储空间,该第一存储空间可以是如上图18、图19所示的不连续的第一存储空间MF,也可以是如图20所示的连续的存储空间MM,只需要保证每个逻辑核的状态保存区为一连续的存储空间、核配置信息存储空间也为一连续的存储空间即可,本公开对此不作限制。
[0165] 在步骤S602中,第一逻辑核执行BIOS根据第一存储空间为各逻辑核分配状态保存区,并存储各逻辑核的状态保存区的地址至该逻辑核对应的第三MSR中。不同逻辑核的状态保存区不同。其中,可以通过向各逻辑核发送处理器间中断通知各逻辑核存储各自对应的状态保存区的地址到设置的第三MSR中。
[0166] 图18‑图20示出根据本公开一实施例的示例四中第一存储空间以及系统管理内存的示意图。如图18所示,若示例四中所申请的第一存储空间MF为不连续的存储空间,则可以分别为每个逻辑核在第一存储空间MF中分配一个存储空间作为状态保存区以及分配一个存储空间作为核配置信息存储空间。同一个逻辑核的系统管理内存M3为一个不连续的存储空间,也即同一个逻辑核的系统管理内存M3状态保存区与核配置信息存储空间之间不连续。
[0167] 在一些实施例中,如图19所示,若示例四中所申请的第一存储空间MF为不连续的存储空间,则可以分别为每个逻辑核在第一存储空间MF中分配一个存储空间作为状态保存区以及分配一个存储空间作为核配置信息存储空间。同一个逻辑核的系统管理内存M4为一个连续的存储空间,也即同一个逻辑核的系统管理内存M4状态保存区与核配置信息存储空间之间连续。
[0168] 在一些实施例中,如图20所示,若示例四中所申请的第一存储空间MM为连续的存储空间,则可以分别为每个逻辑核在第一存储空间MM中分配一个存储空间作为状态保存区以及分配一个存储空间作为核配置信息存储空间。同一个逻辑核的系统管理内存M4为一个连续的存储空间,也即同一个逻辑核的系统管理内存M4状态保存区与核配置信息存储空间之间连续。在另一实施例中,若示例四中所申请的第一存储空间MM为连续的存储空间,同一个逻辑核的系统管理内存M4为一个不连续的存储空间,也即同一个逻辑核的系统管理内存M4状态保存区与核配置信息存储空间之间不连续。
[0169] 在一些实施例中,可以控制各逻辑核根据所分配的状态保存区的地址形成对应的保存区结构,并存储该保存区结构至对应的第三MSR中。具体如何通过向各逻辑核发送处理器间中断通知各逻辑核存储各自对应的状态保存区的地址到设置的第三MSR中,可参考前文对第二MSR进行设置的描述,此处就不赘述了。
[0170] 在步骤S603中,第一逻辑核执行BIOS设置各所述逻辑核在所述系统管理模式下的核配置信息,并将各所述核配置信息分别存储至对应的系统管理内存中的核配置信息存储空间(如图18‑图20所示)。其中,所述核配置信息包括所述逻辑核在执行系统管理中断处理程序之前进行模式设置所需的对应于目标运行模式的模式设置信息、所述逻辑核在执行系统管理中断处理程序之前进行运行环境配置所需的运行环境信息以及系统管理中断处理程序的地址。
[0171] 图21示出根据本公开一实施例的配置信息结构的示意图。在本实施例中,在确定出核配置信息之后,可以根据各所述逻辑核的核配置信息,生成各所述核配置信息的如图21所示的配置信息结构;而后将各所述配置信息结构分别存储至对应的系统管理内存中的核配置信息存储空间内(如图18‑图20所示)。其中,所述配置信息结构中包括多个信息字段,各所述信息字段用于存储对应的核配置信息或对应的核配置信息的存储地址。
[0172] 其中,图21所示的配置信息结构与图9所示的配置信息结构的区别在于,图21所示的配置信息结构还包括系统管理中断处理程序的地址,也即图21所示的RIP。核配置信息结构的实现方式参见上文图9所示配置信息结构的相关描述,为免冗余不予赘述。
[0173] 在步骤S604中,第一逻辑核执行BIOS存储各核配置信息存储空间的地址至对应的第四MSR中。其中,可以通过向各逻辑核发送处理器间中断通知各逻辑核将指示配置信息结构所处核配置信息存储空间地址的指针存储至对应的第四MSR中。具体如何通过向各逻辑核发送处理器间中断通知各逻辑核存储各自对应的状态保存区的地址到设置的第四MSR中,可参考前文对第二MSR进行设置的描述,此处就不赘述了。
[0174] 通过图17所示的示例四所提供的初始化设置,可以并行(即各逻辑核可以在接收到处理器间中断后并行执行相关的设置操作)实现对各逻辑核的状态保存区、核配置信息的设置,设置的速度快、所需时间短,并实现了存储空间的合理利用避免内存碎片化,便于内存管理。各逻辑核每次进入系统管理模式后,执行系统管理中断时无需进行模式切换这一固定操作,可以提高系统管理中断的执行效率。另外,由于可以根据实际需要对核配置信息进行定制化设定,可以进一步减少执行系统管理中断处理程序时需要做的设置操作,更进一步提高了系统管理中断处理程序的执行效率。这样,通过步骤S601‑步骤S604的预先设置,保证后续各逻辑核可以响应系统管理中断并执行系统管理中断处理程序。
[0175] 图22示出根据本公开一实施例的示例四中初始化设置的流程图。可以根据实际需对示例四中的初始化设置的执行步骤进行设置,可以按照如图17所示的方式设置,也可以按照图22所示的步骤S701‑步骤S703进行设置。
[0176] 如图22所示,在步骤S701与上述步骤S601相同,为免冗余不予赘述。在步骤S702中,第一逻辑核执行BIOS根据第一存储空间为各逻辑核分配状态保存区和核配置信息存储空间,并存储各逻辑核的状态保存区的地址至该逻辑核对应的第三MSR中以及存储核配置信息存储空间的地址至该逻辑核对应的第四MSR中。其中,可以向各逻辑核发送处理器间中断通知各逻辑核存储各自对应的状态保存区的地址和核配置信息存储空间的地址到对应的第三MSR、第四MSR中。在步骤S703与上述步骤S603相同,为免冗余不予赘述。
[0177] 图23示出根据本公开一实施例的示例四中系统管理模式进入方法的流程图。如图23所示,该方法中在完成初始化设置之后,该方法还可以包括响应执行步骤,该响应执行步骤可以由图16所示的处理器中任意一个逻辑核执行,且处理器中可以有一个或多个逻辑核同时进行该响应执行步骤。如图23所示,响应执行步骤可以包括步骤S607‑步骤S610。其中,步骤S607‑步骤S609是由逻辑核的硬件实现的,步骤S610是由逻辑核通过执行系统管理中断处理程序实现的。
[0178] 在步骤S607中,逻辑核响应于系统管理中断,进入到系统管理模式。
[0179] 在步骤S608中,逻辑核从对应的第三MSR中获取到逻辑核对应的状态保存区的地址,并基于所述状态保存区的地址将逻辑核当前的状态信息存储至对应的所述状态保存区。其中,各逻辑核可以先从对应的第三MSR中获取到状态保存区结构,并根据状态保存区结构进一步确定出状态保存区的地址,而后根据状态保存区的地址将该逻辑核当前的状态信息存储至状态保存区。
[0180] 在步骤S609中,逻辑核从对应的第四MSR中获取到逻辑核对应的核配置信息所在的核配置信息存储空间的地址,并根据从所述核配置信息存储空间中获取到核配置信息进行预先设置。其中,逻辑核可以先从对应的第四MSR中获取到核配置信息结构的地址,进而从确定的核配置信息结构的地址中获取到配置信息结构,再基于核配置信息结构确定出各核配置信息。
[0181] 在一些实施例中,预先设置可以包括:逻辑核根据对应的模式设置信息进行模式设置,也即将相应寄存器的值设置为模式设置信息中指示的设定值,以进入目标运行模式;各逻辑核根据对应的运行环境信息对运行环境进行设置,也即将相应寄存器的值设置为运行环境信息中指示的设定值,完成运行环境设置。具体如何设置已在前文中做了描述,此处就不赘述了。
[0182] 在一些实施例中,逻辑核将这些核配置信息载入寄存器之前,需要先检查这些核配置信息是否正确,若存在错误则可以直接关闭计算机系统(shutdown)。在确定核配置信息正确后,才将这些核配置信息载入到对应的寄存器里。
[0183] 在步骤S610中,逻辑核在目标运行模式下,根据所述核配置信息中的系统管理中断处理程序的地址,执行所述系统管理中断处理程序。其中,在所述系统管理中断处理程序最后执行RSM指令,以退出所述系统管理模式。
[0184] 通过图23所示的示例四所提供的响应执行步骤,可以并行(即各逻辑核可以在接收到处理器间中断后并行执行相关的设置操作)实现对各逻辑核的状态保存区、核配置信息的设置,设置的速度快、所需时间短,并实现了存储空间的合理利用避免内存碎片化,便于内存管理。各逻辑核每次进入系统管理模式后,执行系统管理中断时无需进行模式切换这一固定操作,可以提高系统管理中断的执行效率。另外,由于可以根据实际需要对核配置信息进行定制化设定,可以进一步减少执行系统管理中断处理程序时需要做的设置操作,更进一步提高了系统管理中断处理程序的执行效率。
[0185] 示例五(下面参照图11描述示例五):
[0186] 该方法应用于图11所示的处理器。示例五所提供的方法与示例四所提供方法仅地址的存储存在差异,在示例五中,初始化设置中,各逻辑核的状态保存区的地址和核配置信息存储空间的地址均存储到该逻辑核的第二MSR中;响应执行步骤中,各逻辑核从各自的第二MSR中获取到其对应的状态保存区的地址和核配置信息存储空间的地址,其余步骤相同,所以其余步骤以及相关步骤有益效果参见上文示例四,此处不予赘述。
[0187] 示例六(下面参照图9、图19‑图20、图24‑图28描述示例六):
[0188] 图24示出根据本公开一实施例的示例六应用的处理器的框图。该方法应用于图24所示的处理器,该处理器可以包括一个或多个逻辑核。为各逻辑核设置有一个第三MSR 711、一个第四MSR 712和一个第五MSR 713。每个逻辑核的MSR(第三MSR 711、第四MSR 712和第五MSR 713)可以如图24所示设置在逻辑核内部,也可以设置逻辑核之外,本公开对此不作限制。为简明,图24中仅示意性给出处理器包括两个逻辑核。
[0189] 示例六与示例四的区别在于:第三MSR 711用于存储对应的逻辑核的状态保存区的地址,第四MSR 712用于存储对应的逻辑核的核配置信息存储空间的地址,第五MSR 713用于存储系统管理中断处理程序的地址。其中,示例六中核配置信息中仅包括模式设置信息和运行环境信息,也即示例六中核配置信息存储空间所存储的是如图9所示的配置信息结构。
[0190] 图25示出根据本公开一实施例的示例六中初始化设置的流程图。如图25所示,该方法中初始化设置可以包括步骤S801‑步骤S803。
[0191] 在步骤S801中,处理器上电或者重置之后,处理器的逻辑核(如多个逻辑核中的第一逻辑核(如BSP))通过执行BIOS为各逻辑核申请在系统管理模式下所需的系统管理内存。
[0192] 图26‑图27示出根据本公开一实施例的示例六中系统管理内存的示意图。各逻辑核的系统管理内存可以为图26所示的连续的系统管理内存M5,各逻辑核的系统管理内存也可以为图27所示的不连续的系统管理内存M6,本公开对此不作限制。只需要保证每个逻辑核的状态保存区为一连续的存储空间、核配置信息存储空间也为一连续的存储空间、处理程序存储空间为一连续的存储空间即可,本公开对各逻辑核的系统管理内存中状态保存区、核配置信息存储空间和处理程序存储空间这三个存储空间之间是否连续不作限制。其中,示例六中所有逻辑核的系统管理内存所构成的第一存储空间中,各系统管理内存之间可以是类似图20中连续的、也可以是类似图19中不连续的,本公开对此不作限制。
[0193] 在步骤S802中,第一逻辑核执行BIOS根据各逻辑核的系统管理内存为各逻辑核分配状态保存区、核配置信息存储空间和处理程序存储空间,并将各逻辑核的状态保存区的地址存储至该逻辑核对应的第三MSR 711中、将核配置信息存储空间的地址存储至对应的第四MSR 712中、将处理程序存储空间的地址存储至对应的第五MSR 713中。其中,可以通过向各逻辑核发送处理器间中断通知各逻辑核并将各逻辑核的状态保存区的地址存储至该逻辑核对应的第三MSR 711中、将核配置信息存储空间的地址存储至对应的第四MSR 712中、将处理程序存储空间的地址存储至对应的第五MSR 713中。
[0194] 在步骤S803中,第一逻辑核执行BIOS设置各所述逻辑核在所述系统管理模式下的核配置信息,并将各所述核配置信息分别存储至对应的系统管理内存中的核配置信息存储空间中。核配置信息中包括模式设置信息和运行环境信息。以及将系统管理中断处理程序存储到对应的处理程序存储空间中。
[0195] 通过图25所示的示例六所提供的初始化设置,可以并行(即各逻辑核可以在接收到处理器间中断后并行执行相关的设置操作)实现对各逻辑核的状态保存区、核配置信息、处理程序存储空间的设置,设置的速度快、所需时间短,并实现了存储空间的合理利用避免内存碎片化,便于内存管理。各逻辑核每次进入系统管理模式后,执行系统管理中断时无需进行模式切换这一固定操作,可以提高系统管理中断的执行效率。另外,由于可以根据实际需要对核配置信息进行定制化设定,可以进一步减少执行系统管理中断处理程序时需要做的设置操作,更进一步提高了系统管理中断处理程序的执行效率。
[0196] 图28示出根据本公开一实施例的示例六中系统管理模式进入方法的流程图。如图28所示,该方法中在完成初始化设置之后,该方法还可以包括响应执行步骤,该响应执行步骤可以由图24所示的处理器中任意一个逻辑核执行,且处理器中可以有一个或多个逻辑核同时进行该响应执行步骤。如图28所示,响应执行步骤可以包括步骤S805‑步骤S808。其中,步骤S805‑步骤S807是由逻辑核的硬件实现的,步骤S808是由逻辑核通过执行系统管理中断处理程序实现的。
[0197] 在步骤S805中,逻辑核响应于系统管理中断,进入到系统管理模式。
[0198] 在步骤S806中,逻辑核从对应的第三MSR 711中获取到逻辑核对应的状态保存区的地址,并基于所述状态保存区的地址将逻辑核当前的状态信息存储至对应的所述状态保存区。
[0199] 在步骤S807中,逻辑核从对应的第四MSR 712中获取到逻辑核对应的核配置信息所在的核配置信息存储空间的地址,并根据从所述核配置信息存储空间中获取到核配置信息进行预先设置。其中,逻辑核可以先从对应的第四MSR 712中获取到核配置信息结构的地址,进而从确定的核配置信息结构的地址中获取到图9所示配置信息结构,再基于核配置信息结构确定出各核配置信息。
[0200] 在一些实施例中,预先设置可以包括:逻辑核根据对应的模式设置信息进行模式设置,也即将相应寄存器的值设置为模式设置信息中指示的设定值,以进入目标运行模式;各逻辑核根据对应的运行环境信息对运行环境进行设置,也即将相应寄存器的值设置为运行环境信息中指示的设定值,完成运行环境设置。具体如何设置已在前文中做了描述,此处就不赘述了。
[0201] 在一些实施例中,逻辑核将这些核配置信息载入寄存器之前,需要先检查这些核配置信息是否正确,若存在错误则可以直接关闭计算机系统(shutdown)。在确定核配置信息正确后,才将这些核配置信息载入到对应的寄存器里。
[0202] 在步骤S808中,逻辑核在目标运行模式下,从第五MSR 713中获取到系统管理中断处理程序的地址,并执行所述系统管理中断处理程序。其中,在所述系统管理中断处理程序最后执行RSM指令,以退出所述系统管理模式。
[0203] 通过图25所示的示例六所提供的响应执行步骤,可以并行(即各逻辑核可以在接收到处理器间中断后并行执行相关的设置操作)实现对各逻辑核的状态保存区、核配置信息、处理程序存储空间的设置,设置的速度快、所需时间短,并实现了存储空间的合理利用避免内存碎片化,便于内存管理。各逻辑核每次进入系统管理模式后,执行系统管理中断时无需进行模式切换这一固定操作,可以提高系统管理中断的执行效率。另外,由于可以根据实际需要对核配置信息进行定制化设定,可以进一步减少执行系统管理中断处理程序时需要做的设置操作,更进一步提高了系统管理中断处理程序的执行效率。
[0204] 示例七:
[0205] 该方法应用于图16所示的处理器。示例七所提供的方法与示例六所提供方法仅地址的存储存在差异,在示例七中,初始化设置中,各逻辑核的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址中的任意两种存储到对应的第三MSR中,剩余一种存储到对应的第四MSR中。例如,可以将各逻辑核的状态保存区的地址、核配置信息存储空间的地址存储到对应的第三MSR中,将处理程序存储空间的地址存储到对应的第四MSR中。响应执行步骤中,各逻辑核从对应的MSR中获取到其对应的状态保存区的地址、核配置信息存储空间的地址和处理程序存储空间的地址,其余步骤相同,所以其余步骤以及相关步骤有益效果参见上文示例六,此处不予赘述。
[0206] 图29示出根据本公开一实施例的计算机系统的框图。如图29所示,该计算机系统900包括:处理器和存储器。所述处理器包括至少一个逻辑核和至少一个模型特定寄存器MSR。
[0207] 其中,所述处理器用于在各所述逻辑核进入系统管理模式之前进行初始化设置,所述初始化设置包括:为各所述逻辑核分配在系统管理模式下所需的系统管理内存,各逻辑核对应的系统管理内存位于所述存储器中;以及将与各所述逻辑核的系统管理内存相关的地址存储到对应的MSR中。
[0208] 在一种可能的实现方式中,所述逻辑核被配置为在所述初始化设置步骤之后执行响应执行步骤,所述响应执行步骤包括:响应于系统管理中断,进入系统管理模式;将逻辑核当前的状态信息存储至对应的系统管理内存中的状态保存区内;根据从对应的系统管理内存中获取到的核配置信息进行该逻辑核的预先设置;执行所述系统管理中断处理程序;其中,所述状态保存区的地址和所述核配置信息的地址是基于对应的MSR中存储的地址确定的。
[0209] 其中,图29所示的处理器可以为上文图6、图11、图16、图24所示的处理器,处理器所完成的初始化设置、响应执行步骤及其相关有益效果可以参照上文示例一‑示例七,为免冗余不予赘述。
[0210] 需要说明的是,尽管以上述实施例作为示例介绍了系统管理模式进入方法、处理器和计算机系统如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤、各器件,只要符合本公开的技术方案即可。
[0211] 本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
[0212] 本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
[0213] 本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
[0214] 本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0215] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0216] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0217] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0218] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0219] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0220] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0221] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0222] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。