首页> 中国专利> 在处理器中提供用于系统管理模式的状态存储装置

在处理器中提供用于系统管理模式的状态存储装置

摘要

本发明名称为“在处理器中提供用于系统管理模式的状态存储装置”。在一个实施例中,本发明包括具有例如静态随机存取存储器的管芯上存储装置的处理器,管芯上存储装置在进入系统管理模式(SMM)时存储从处理器的架构状态存储装置交换出来的一个或多个线程的架构状态。以此方式,能够避免将此状态信息传送到系统管理存储器,从而减少与进入SMM关联的等待时间。实施例还可以使处理器能够更新处于长指令流中或处于系统管理中断(SMI)阻塞的状态中的执行代理的状态,以便向SMM内部的代理提供指示。还描述了其他实施例并且对其要求权利。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-08-20

    授权

    授权

  • 2011-05-25

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20100831

    实质审查的生效

  • 2011-04-06

    公开

    公开

说明书

技术领域

本发明涉及在处理器中提供用于系统管理模式的状态存储装置。

背景技术

大多数计算机系统处理器支持称为系统管理模式(SMM)的特殊操作模式。SMM提供对于操作系统(OS)软件透明的不同操作环境。此模式常常被原始设备制造商(OEM)用于执行例如系统管理、装置、电源和热管理的特殊任务。服务器相关的可靠性、可用性和可服务性(RAS)功能常常使用SMM来实现。通常通过向处理器发送系统管理中断(SMI)消息来进入SMM。当确认SMI时,处理器将当前处理器上下文(也称为处理器保存状态)保存到系统存储器中专门分配给SMM的部分,称为系统管理随机存取存储器(SMRAM),并且执行SMRAM中包含的SMI处理程序(handler)代码。当SMI处理程序完成其操作时,它执行特殊的(仅在SMM中有效的)恢复指令,该指令使处理器从SMRAM重新加载所保存的处理器上下文并恢复执行中断的任务。

在多处理器系统中,一般将SMI消息广播到所有处理器。SMI处理程序选择一个处理器(称为SMM主控(monarch))来处理事件。此处理器等待直到所有其他处理器会合(rendezvous)在SMM内,之后才处理SMI事件。非主控处理器保留在SMM中,直到主控完成事件处理。当处理了SMM事件时,主控将以信号通知其他处理器退出SMM。实现这种同步的进入和退出行为以阻止两个并行环境(OS与SMM)之间的任何资源冲突。即,如果一些处理器在OS环境中是活动的,而同时其余的处理器在SMM环境中是活动的,则可能的是:它们可能修改共享的资源,并由此干扰彼此的操作,从而导致系统崩溃。此外,某些SMM事件只能由特定逻辑处理器或一组逻辑处理器来处理。广播确保了此条件总是被满足,因为所有逻辑处理器都将进入SMI。

因此,多处理器系统中的SMI处理是复杂的且能消耗所有系统资源,阻止其他有用工作的处理,因为当处理器处于SMM中时,它就不可用于操作系统。

发明内容

本发明提供一种设备,包括:处理器核,执行指令并进入系统管理模式(SMM),其中当进入所述SMM时,所述处理器核将存储所述处理器核的状态存储装置中存在的活动状态到所述处理器核的存储单元中,并将通过插入与所述SMM关联的值到所述状态存储装置中来设立SMM执行环境。

本发明还提供一种方法,包括:响应系统管理中断(SMI)事件,确定处理器上执行的所有线程是否已进入系统管理模式(SMM)会合状态;以及如果否,则确定其余线程是否正在执行长流操作或处于SMI禁止的状态中,以及如果是,则使用主控线程在其余线程执行所述长流操作或处于所述SMI禁止的状态中时处理所述SMI事件,否则在处理所述SMI事件之前等待其余线程进入所述SMM会合状态。

本发明还提供一种系统,包括:第一处理器,包括执行指令和进入系统管理模式(SMM)的第一核、指示所述第一核上执行的线程是否处于长流操作中的第一指示符、指示所述线程是否处于系统管理中断(SMI)禁止的状态中的第二指示符以及存储单元,其中在进入所述SMM时,所述第一核将存储所述第一核的状态存储装置中存在的活动状态到所述存储单元中并将存储SMM执行状态到所述状态存储装置中,所述存储单元专用于在所述SMM期间存储所述活动状态;第二处理器,包括执行指令和进入所述SMM的第二核、指示所述第二核上执行的第二线程是否处于长流操作中的第一指示符、指示所述第二线程是否处于所述SMI禁止的状态中的第二指示符以及第二存储单元,其中在进入所述SMM时,所述第二核将存储所述第二核的状态存储装置中存在的活动状态到所述第二存储单元中并将存储SMM执行状态到所述状态存储装置中,所述第二存储单元专用于在所述SMM期间存储所述活动状态;以及动态随机存取存储器(DRAM),耦合到所述第一和第二处理器,其中所述DRAM的一部分是用于所述系统的系统管理随机存取存储器(SMRAM)。

附图说明

图1是根据本发明的一个实施例的处理器的框图。

图2是根据本发明的一个实施例的多处理器系统的框图。

图3是根据本发明的一个实施例的方法的流程图。

图4是根据本发明的另一个实施例的方法的流程图。

具体实施方式

在多种实施例中,能够使用管芯上存储装置(on-die storage)作为使用外部物理存储器的备选以存储有关SMM进入/退出的各个线程的保存状态。相比之下,对于进入和退出SMM,目前的系统依赖于外部物理存储器。这种SMM对系统RAM的依赖性导致任务关键应用中的伸缩(scaling)、性能和可靠性相关的限制,并且能使用本发明的一实施例来避免。注意,当在本文中使用时,术语“线程”可以指包括用于与进程关联的架构状态的处理器中的存储装置(例如,寄存器文件(register file)和关联的配置和状态寄存器)的硬件线程。当在本文中使用时,术语“硬件线程”与术语“逻辑处理器”同义来使用。每个处理器核可以包括多个逻辑处理器,每个逻辑处理器具有专用的架构状态存储装置,但是其共享其他核资源(例如前端单元、执行单元等)。

在不同的实现中,提供用于在SMM期间存储任何活动线程的保存状态的管芯上存储装置能够是用作用于保存状态存储装置的小专用存储器的处理器本身中的寄存器文件或管芯上静态RAM(SRAM)。一些处理器可以包括用于像电源管理的特定任务的管芯上SRAM,例如,例如根据高级配置和电源接口(ACPI)状态的OS管理的低电源(low power)状态(例如,C6状态或其他电源管理操作)。在此类处理器中,能够为每个线程的SRAM保存状态预留在每线程基础上分区的此SRAM中的部分。作为一个示例,每个逻辑处理器可以使用1千字节(KB)的SRAM存储装置以用于SMM保存状态。如果给定的处理器不能将这个量的SRAM专用于SMM保存状态,则能够实现一实施例使得它能够利用为C6流(flow)预留的SRAM。在此情况中,SMM内部的C6/C7转变能够降级到更低的低电源状态(例如,C3)以确保互斥地将共享的SRAM空间用于SMM状态保存。一些处理器并不为C6状态保存实现专用的SRAM,而是相反利用末级高速缓存(LLC)的一部分以用于在C6状态保存期间存储处理器状态。在这些处理器中,SMM保存状态能够存储在LLC中。

一旦保存,则可以在不同方式中存取此内部SMM保存状态。例如,能够使用每线程基础上的模型特定的寄存器(MSR)寻址或后向兼容机制来存取该内部状态。常规方式下,处理器能够在某个系统存储器地址存取SMM保存状态。后向兼容机制包括捕捉(trap)逻辑处理器对这些遗留存储器地址的存取并将其重定向到适合的SRAM位置的处理器中的逻辑。如果要求与现有基本输入/输出系统(BIOS)软件的绝对后向兼容性,则能实现此类重定向。这些MSR只能在SMM模式中读或写并且遵循与SMM保存状态关联的约束。如果一个逻辑处理器需要对另一个处理器的保存状态的存取,则这能经软件协议来完成。

在一些实施例中,专用处理器标识符叶(leaf)(例如,CPUID叶)或其字段或特征启用的MSR(模型特定的寄存器)位能用于启用内部SRAM的使用。现在参考图1,示出的是根据本发明的一个实施例的处理器的框图。如图1中所示,处理器100可以是多阶流水线式(multi-stage pipelined)乱序处理器。处理器100以相对简化的视图来显示以示出关联本文中描述的SMM技术来使用的多种特征。如所见到的,处理器100可以是包括多个处理器核105并且其可以在单个半导体管芯上形成的多核处理器。虽然在图1的实施例中以四个此类核示出,但是应理解,本发明的范围此方面不受限制。如图1中还所见的,处理器100中可存在附加的组件。例如,可存在集成的存储器控制器(IMC)108以及静态随机存取存储器(SRAM)106。如上讨论的,在一些实现中,根据本发明的一实施例,此存储器可用于存储上下文状态,其否则将存储在SRAM中。仍然还有的是,处理器100可以包括末级高速缓存(LLC)109,其可以是在所有处理器核之间共享的共享高速缓存。

如图1中所示,处理器100包括前端单元110,其可用于取要执行的宏指令并将其准备用于核中的稍后使用。例如,前端单元110可以包括指令预取器、指令解码器、追踪高速缓存(trace cache)连同微代码存储装置以及微指令(μop)存储装置。指令预取器可以从存储器取宏指令并将其馈送到指令解码器以将其解码成原语(即μop)以用于由处理器执行。追踪高速缓存可以取得解码的μop并将其组装(assemble)成程序排序的序列。当然,可以在前端单元110中实现附加的组件和特征。

耦合在前端单元110与执行单元120之间的是乱序(OOO)引擎115,其可用于接收微指令并将其准备用于执行。更确切地来说,OOO引擎115可包括多种缓冲器以对微指令流重新排序并分配对于执行所需的多种资源以及提供将逻辑寄存器重命名到多种寄存器文件(例如寄存器文件130a)内的存储位置上。寄存器文件130可以包括用于整数和浮点运算的单独寄存器文件。注意可以存在多个寄存器文件130a-n,每个寄存器文件用于不同的逻辑处理器。还可以存在附加的寄存器,即状态和配置寄存器135。如所见到的,每组寄存器135a-n可以用于不同的逻辑处理器。这些多种寄存器可用于配置核以用于不同的操作模式以及提供有关执行的线程和不同指令的状态信息。

在图1所示的示例中,此类寄存器可包括SMM保存状态寄存器136。在多种实现中,可以存在多个此类寄存器,每个寄存器与核上操作的给定线程关联。如上文讨论的,此类寄存器可存储指示符(例如,启用位)以在进入SMM时使得线程的状态能够存储在例如核本身内。如果此指示符未被启用,则进入SMM时,线程的上下文将转而存储到SMRAM。在一些实施例中,此MSR可以包含能够控制其他处理器特征的其他位。在一些实施例中,能够使包含指示符的此寄存器文件135仅在SMM中是可更改的,由此保护它免于被SMM外的恶意组件进行恶意更改,从而增加系统的安全性和健壮性。

如还所见到的,寄存器文件135还可以包括一个或多个SMM状态指示符寄存器138。此类指示符寄存器可以采用位图或位矢量的形式,其中每个逻辑处理器具有指示该逻辑处理器何时被禁止进入SMM或该逻辑处理器是否处于长流执行中的位置。在一个实施例中,可对于每个此类指示存在单独寄存器。备选的是,可以存在单个寄存器,并由此可以使用逻辑组合的指示符为每个逻辑处理器指示一个这些状态的存在。下文描述有关使用这些寄存器的进一步细节。

仍参考图1,执行单元120中可以存在多种资源,除其他专门的硬件外,包括例如整数、浮点和单个指令多个数据(SIMD)逻辑单元。可以将结果提供到引退单元(retirement unit)140,其可操作以确定是否能够有效地引退所执行的指令,以及是否能够将结果数据提交到处理器的架构状态,或是否发生一个或多个异常阻止指令的正确引退。

如图1中所示,引退单元140耦合到高速缓存存储器150,在一个实施例中,高速缓存存储器150可以是低级高速缓存(例如,L1高速缓存),但是本发明的范围在此方面不受限制。同样,执行单元120能直接耦合到高速缓存150(图1中未示出)。从高速缓存存储器150,可以进行与较高级高速缓存、系统存储器等的数据通信。虽然在图1的实施例中以此高级示出,但是应理解,本发明的范围在此方面不受限制。例如,可以在有序处理器中实现其他实施例。

通过在内部将SMM保存状态存储到处理器,可以改进系统的可靠性和健壮性。即,通常是SMRAM驻留在其上的一组外部动态随机存取存储器(DRAM)装置的物理存储器容易遭遇存储器错误。在无本发明的一实施例的情况下,SMM操作用尽此外部存储器,并因此在错误状况中不能依靠。相反使用本发明的一实施例,通过在处理错误时执行来自非易失性空间的SMI处理程序,能够改进SMRAM存储器的可靠性。例如,在它处理存储器错误的同时,SMM处理程序能够从像BIOS闪存或外部SRAM的更健壮的存储装置来运行。同样,当SMM保存状态对于处理器是内部的时,此存储装置的架构状态能够仅通过MSR暴露于外部的软件。在SMM代码执行“Resume(RSM)”指令之后复原机器执行状态所需的处理器的微架构状态无需暴露于外部软件,因为它对于此内部机器状态没有合法使用。这还意味着恶意软件代码无权存取敏感的微架构状态(如果保存的数据存储位于SMRAM中,则它将如此做),从而使得机器更安全且健壮。

实施例还可以改进性能和等待时间。许多服务器应用/操作系统是非一致存储器架构(NUMA)优化的且BIOS通常将存储器配置成使得整个SMRAM(其是邻接存储器范围)映射到单个插槽(socket)。因此,所有SMM保存状态/复原状态操作对于所有逻辑CPU将看上去如同远程写/远程读,除非这些操作包含在SMRAM对其是本地的一个插槽中。对于具有四个插槽且各具有12个核的服务器配置的性能分析指示,SMM保存状态写操作能受到互连和存储器带宽的限制并且能花费高达5微秒。随着应用变得越是NUMA优化的,处理器可能为远程业务分配越少的缓冲器。当那发生时,SMRAM保存状态写和读操作将花费甚至更长时间。操作系统通常具有对于CPU能处于SMM中多长时间的限制,以便维持可接受的实时性能并避免高速网络链路上的超时。超过此限制影响OS响应度、应用等待时间并且甚至可能导致操作系统功能失效。因此,使用根据本发明的一实施例的管芯上SMM保存状态减少了等待时间,并因此使得为SMM处理程序分配的另外时间能够服务于SMM事件(SMM的有效工作)。

此外,实施例可以改进可伸缩性。在多处理器系统中,当SMI发生时,系统中的每个线程必须将其保存状态存储在外部系统存储器中其自己专用的保存状态区中,如在系统引导期间由系统BIOS定义和预留的。要预留作为捕获系统中所有线程的所有保存状态所要求的SMRAM空间的物理存储器的总量随着系统中线程的数量而线性地增加。对于具有对称多线程支持的多核多插槽系统,空间的量能够相当大(并且在一个实施例中,可以约为大概256KB)。通过为SMM保存状态提供管芯上存储装置,可以避免对于容纳所有核及其线程的不断扩展的SMRAM区的需求,从而利于伸缩。这还消除对于BIOS为每个线程在SMRAM中查找并分配唯一且不重叠的区的必要性。仍然还有的是,这还保存存储器保护区免于在硅中实现。在热插拔情况中,SMRAM中的架构定义的SMM保存状态区域在1MB以下。在无本发明的一实施例的情况下,当添加新处理器时,BIOS设立存储器保护范围,并将迁移出数据以避免OS攻击和/或干扰。实施例消除如此做的需要,因为保存的状态不再存储在OS可见的存储器中。

现在参考图2,示出的是根据本发明的一个实施例的多处理器系统的框图。如图2中所示,多处理器系统200包括多个处理器2101-210n(统称为处理器210)。虽然在图2的实施例中以四个此类处理器示出,但是应理解,本发明的范围在此方面不受限制。在图2中所示的实现中,存在非一致存储器架构(NUMA)系统,使得系统存储器2201和2203经由互连2171和2173本地附连到处理器2101和2103。因此,处理器2102和210n对存储器的存取要求通过多个点到点(PTP)互连215之一与处理器2101和2103之一的通信。如图2的实现中所见,可以是DRAM的存储器2201包括SMRAM 225。在此NUMA架构中,SMRAM 225是用于整个系统的系统管理存储。因此,在无本发明的一实施例的情况下,有关SMM进入或退出的每个处理器需要保存/复原上下文到此SMRAM 225。这进而导致PTP互连215和互连2171上的带宽的大量使用,以及增加用于进入SMM和从SMM退出的等待时间。

因此,在多种实施例中,除了一个或多个核212和集成的存储器控制器214外,每个处理器210还可包括SRAM 216。在多种实施例中,SRAM 216可以专用于存储SMM保存状态。即,当发生系统管理中断时,可以将用于每个处理器210的多个逻辑处理器的上下文状态本地存储到它的SRAM 216,从而避免对于与SMRAM 225的状态信息通信的需要。在其他实施例中,不采用专用的管芯上存储装置,而是能将此上下文状态存储在例如寄存器文件的芯片上寄存器中或例如高速缓存存储器的其他位置中。虽然在图2的实施例中以此特定实现示出,但是本发明的范围在此方面不受限制。例如,实施例还可以与一致存储器架构系统一起使用。

现在参考图3,示出的是根据本发明的一个实施例的方法的流程图。如图3中所示,可以执行方法300以处理进入SMM而无需为了保存状态信息而存取SMRAM。注意,为了易于讨论,假定只存在单个硬件线程,但是在许多实现中,多个线程可以一起进入SMM。如图3中所见的,方法300可通过接收系统管理中断而开始(框310)。接收到此中断时,可以将当前活动状态(例如,给定硬件线程的活动状态)保存到管芯上存储装置(框320)。如上文讨论的,此管芯上存储装置可以是专用的SRAM、用于另一个目的(例如,电源管理状态)的SRAM、寄存器存储装置、管芯上高速缓存存储装置等。

仍参考图3,例如按照处理器规范所定义的,将处理器状态修改为匹配SMM进入状态(框330)。此状态包括用于多种控制和配置寄存器的值以及用于寄存器文件的初始值。此设立由此通过将与SMM进入状态关联的预定值加载到状态存储装置中来准备适合于SMM处理程序的SMM执行环境。当已设立SMM状态时,控制传递到框340,其中SMM可使用来自SMRAM的代码和数据来执行(框340)。因此,可以执行期望的SMM操作。当然本发明的范围在此方面不受限制,SMM操作的示例包括电源管理操作、错误处理操作等。

然后可以确定SMM操作是否已完成(菱形框350)。如果没有,则SMM中的执行可继续。如果完成,则处理器执行恢复指令(框360)。作为此指令的结果,可以将先前的状态从管芯上存储装置加载回处理器的寄存器中(框370)。然后,处理器可以恢复与复原回到活动状态的此先前状态所对应的线程的执行(框380)。虽然在图3的实施例中以此特定实现示出,但是应理解,本发明的范围在此方面不受限制。例如,在一些实现中,不是执行来自SMRAM的SMM操作(特别是在SMM用于处理如DRAM错误的错误时),一些实施例可相反从例如闪速存储器的非易失性存储装置获得SMM状态信息、SMM代码和数据。

如上所述,活动状态的硅存储能够减少SMM等待时间。实施例可以通过使得在某些情况中能够更快速地进入SMM来进一步减少等待时间,如现在将讨论的。

SMM等待时间定义为处理器每单个SMI对其处于SMM环境中的持续时间。对于总SMM等待时间有两个主要促成因素(contributor):处理器开销和OEM BIOS代码。必须将此等待时间保持在控制之下以避免对OS环境的副作用,例如超时和时钟漂移。另外的需求也将要求减少此等待时间,这变得难以实现。目前,规定SMI等待时间在约190微秒之下。像因特网门户数据中心和效用计算的新使用模型期望来自应用的更可预测的等待时间。结果,OS供应商正在奋力争取SMM等待时间中的进一步减少。另一方面,其他技术随着时间过去具有增加SMI等待时间的潜在可能。例如,对多核处理器的业界推进意味着SMI处理程序必须会合数量不断增加的处理器核。新的基于SMM的能力也将附加的压力置于SMM等待时间上。例如,高端RAS能力依靠SMM。此外,一些OEM利用SMM来交付唯一的电源管理能力以区分他们的产品。已知许多OEM生成SMI每秒高达8次。

某些指令集架构(ISA)包括例如写回(write back)和使无效指令(例如,wbinvd)的指令,其使所有高速缓存行(cache line)无效并将它们写回到存储器。这些操作能花费长时间来完成,例如,大约103至107个处理器周期,特别是在支持大高速缓存大小的处理器中。此外,存在其中能延迟SMI响应的某些处理器状态(例如,C3和C6低处理器状态)。总的来说,这些指令和处理器状态称为“长流(longflow)”状态,其定义为表示能花费不一般长数量的周期来完成(例如,大约103个时钟)并且其能延迟进入SMM的指令或进程。在一个实施例中,将延迟SMM进入大于5微秒的任何流能称为长流。就SMM而言,如果一个或多个逻辑处理器处于长流中,则它延迟SMM进入。

如上文解释的,SMM主控等待直到所有期望的逻辑处理器都已进入SMM。当进入SMM时,每个处理器在SMRAM中设置它自己的位以指示它已进入SMM。主控等待直到所有期望的处理器都已设置它们的位。当一个或多个逻辑处理器处于长流中并稍后进入SMM时,它保持住(hold up)SMM主控,并因此增加SMM等待时间。此外,存在其中禁止SMI事件的某些架构状态,例如等待启动处理器间中断(WFS)和TXT休眠状态。如果OS/BIOS将一个或多个逻辑处理器置于SMI禁止的状态中,则它将不进入SMM直到OS/BIOS显式地将其带出此状态。因为SMI事件将所有其他处理器置于SMM中,所以OS不能显露(unmask)SMI。在此情况下,SMM主控必须依靠长超时来确定SMI禁止的处理器的存在。这些超时延迟SMM会合并增加总SMM等待时间或减少可用于SMM事件处理的时间量。

在多种实施例中,甚至在一些逻辑处理器处于长流中的情况下,仍能够避免对SMM内部超时的需要。消除此类超时能够将平均SMM等待时间改进10-20%,以及在最坏情况下将SMM等待时间改进至少几个毫秒。

实施例依靠以下事实:处于长流中或SMI禁止的状态中的处理器不太可能存取共享资源。此外,此类处理器不太可能已经引起SMI,并且因此其参与对于SMI处理不是必需的。因此,SMM主控能够在此类处理器已进入SMM之前继续进行SMM处理。

但是,在继续之前,SMM主控必须能够可靠地检测哪些处理器处于长流和/或SMI禁止的状态中。为了检测长流中繁忙的或处于SMI禁止的状态中的处理器,实施例可例如通过位图来提供用于这些状态的指示符。在一个实施例中,此类指示能够通过称为LONG_FLOW_INDICATION和SMI_INHIBITED_INDICATION的全局可见配置寄存器来提供。在此实施例中,能够对插槽中的每个逻辑处理器分配一个位。作为一个示例,这些寄存器可以由图1的寄存器138来表示。在其中处理器微代码涉及进入长流与SMI禁止的状态和从其退出的实现中,微代码/硬件能够填充这些寄存器位。一些长流能引起长于5微秒的时间,并且因此不等待处于这些状态中的处理器的能力能够提供SMM等待时间中的显著节省。将来的处理器可能花费多于5微秒来用于SMM微代码进入流,并且其本身能视为长流。SMM主控能够等待直到所有处理器被考虑到,即,它们或者加入SMM或被报告处于长流中或处于SMI禁止的状态中。为了有助于此类确定,能够使用存储在SMRAM中的一个或多个表(例如位图),如下文描述的。

在一个实施例中,在执行指示符寄存器的检查之前,主控处理器保存其状态并运行SMM前导代码(preamble code)。这些步骤能轻易花费多于0.5微秒。此持续时间远大于用于任何飞行中的中断(in-flightinterrupt)的传播时间,从而确保SMI交付到核与读取其指示符寄存器之间不存在竞争状况。如果在某些配置下延迟较小,则主控处理器能够插入小延迟循环来弥补(make up)。

现在参考图4,示出的是根据本发明的另一个实施例的方法的流程图。确切地来说,图4示出用于在所有逻辑处理器无需在SMM状态中会合时处理进入SMM和从SMM退出的流程图。以此方式,能够避免与执行SMM操作之前等待所有逻辑处理器相关联的等待时间。如图4中所见,方法400可通过生成SMI事件来开始(框410)。此SMI事件可传播到所有线程。注意,为了易于讨论,假定图4的线程是针对单个处理器插槽而言的,但是实现能够用于跨多个插槽会合SMM。

接下来,可以在SMM指示符图中为进入SMM会合状态的每个线程设置指示符(框420)。要理解,线程能够首先执行多种进入SMM的准备动作,例如,状态保存,例如上文参考图3描述的。进入SMM会合状态的每个线程可以在可存储在SMRAM中的SMM指示符图中设置指示符。在一个实施例中,此图可以是其中每个逻辑处理器与图的位关联的位图,以及其中能够将每个插槽的逻辑处理器分到图的不同段中。由此,当给定线程进入SMM时,位图中其对应的位可以被设置。然后,可以选择SMM内部的线程之一作为主控或执行线程(框430)。在多种实施例中,哪个线程将是执行线程的确定可变化。例如,可以预先选择主控(例如,插槽0上的逻辑处理器0)或能够经由竞选机制动态地选择主控。

仍然参考图4,每个线程然后可以确定它是否已被选择作为主控(菱形框435)。如果未被选择,则该线程可以进入休眠状态,其中它等待主控线程以信号通知完成(框470)。

因此,控制为主控线程传递到框440。这里,可以为所有线程确定ACCOUNTED状态。在一个实施例中,除了也可存在于SMRAM中的线程存在图外,此状态还可以基于多种配置寄存器、SMM指示符图。此存在图可以是与SMM指示符图相似的位图,并且其可在SMM初始化期间设置以指示系统中存在的线程。在一个实施例中,框440处的确定是如下的按位的或运算:OR(LONG_FLOW_INDICATION,SMI_INHIBITED_INDICATION,IN_SMM_INDICATION),其中LONG_FLOW_INDICATION是从存储位矢量的状态寄存器来获得的,其每个位指示对应线程是否处于长流操作中,SMI_INHIBITED_INDICATION是从存储位矢量的状态寄存器获得的,其每个位指示对应线程是否处于SMI禁止的状态中,并且IN_SMM_INDICATION是SMM指示符图。按位或的结果、ACCOUNTED可存储在位图(例如,在SMRAM中)中。在此分析之后,控制传递到菱形框450,其中可以确定对于所有存在的线程,ACCOUNTED状态是否是活动的(菱形框450)。这能基于ACCOUNTED运算的结果与存在图之间的比较来确定。如果不是,则控制传递回框440。否则,控制传递到框455,其中可以处理SMI事件。因此,主控线程可以执行期望的SMM代码。在主控线程执行的SMM结束时,控制传递到框460。在框460,可以将ACCOUNTED状态和SMM指示符重置(reset)(框460)。即,主控线程可以将这两个位图中的值都重置。然后,主控线程可以用信号通知其他逻辑处理器:它们可以从SMI恢复(框465)。以此方式,其他线程从它们的等待循环释放。因此,在框475,所有线程可从SMM恢复。虽然在图4的实施例中以此特定实现来示出,但是本发明的范围在此方面不受限制。

因此,实施例使得实现SMM处理程序执行而没有存储器依赖性,从而改进可靠性。此机制还解决与SMM关联的性能和可伸缩性问题,使得SMI处理能够避免成为多核/多插槽系统中的瓶颈。因此,实施例避免具有DRAM依赖性的SMM代码的执行,使得实现其中SMM代码诊断和纠正存储器错误的高可用性使用模型。

实施例还使得在存在逻辑处理器处于长流或SMI禁止的状态中时能够以减少的等待时间进入SMM。相比之下,目前没有可靠的机制能由SMM代码用于确定一个或多个处理器是将稍后加入SMM还是处于SMM禁止的状态中,并因此设置比最长长流状态更长的超时。此解决方案除了不可靠且难以实现外,还增加SMM等待时间并减少OS实时响应,而使用本发明的一实施例能克服这些缺点。

实施例可在代码中实现,并且可存储在其上存储有指令的存储媒体上,所述指令能用于编程系统以执行这些指令。存储媒体可包括但不限于:任何类型的盘,包括软盘、光盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)和磁光盘;半导体装置,例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡;或者适合于存储电子指令的任何其他类型的媒体。

虽然本发明已经相对有限数量的实施例来描述,但是本领域技术人员将从其领会到许多修改和变化。所附权利要求旨在涵盖落在本发明的真正精神和范围内的所有此类修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号