Smi处理和初始化的优化的制作方法

文档序号:6501707阅读:260来源:国知局
专利名称:Smi处理和初始化的优化的制作方法
领域本发明涉及计算机系统领域,并且更具体地说,涉及系统管理模式优化。
背景计算机系统在我们的社会中正变得越来越普遍,所述计算机系统包括从例如个人数字数据助理和蜂窝电话的小型手持电子设备到例如机顶盒和其他消费类电子的专用电子组件,再到完全可移动设备、桌面和服务器系统的一切事物。但是,系统变的越小和越便宜,对高效的存储器分配和系统管理的需求就变得越重要。
一直以来,服务器系统的传统特征在于同一系统(多处理器系统)中的大量的常规存储器和多个物理处理器,其中物理处理器是指单个处理器管芯(die)或单个封装(package)。服务器系统可用的大量存储器已经导致效率极其低下的存储器空间分配和严重浪费的执行时间。
典型地,在多处理器系统中,在引导时(upon boot),每个处理器对唤醒进行仲裁(arbitrate),所述唤醒操作可以包括分配存储器和重新定位处理器的基地址(SMBase)。在初始化每个处理器的过程中产生系统管理中断(SMI),所述SMI使用每个处理器(processor)的默认SMI处理程序(SMI handler)来处理。通常,处理器使用赛跑(race toflag)的方案来仲裁,其中开始处理SMI的第一处理器能够开始初始化。初始化通常包括为每个处理器分配分开的且不同的4KB对齐的存储器空间,这迫使人们分配比系统管理所需的存储器要多的存储器。
此外,当发生系统管理中断(SMI)时,无论是在引导期间还是常规操作期间,多处理器系统中的每个处理器运行分开的且不同的SMI处理程序来服务/处理SMI。存在着两种类型的SMI。第一种是异步中断,异步中断可以由系统硬件产生,例如当电池电量低时。因为不需要知道另一个处理器的状态保存区的信息来服务请求,所以异步中断可以分别被任一处理器处理。第二种中断即同步SMI由软件产生,应该被每个处理器处理。典型地,软件产生的SMI发生在操作系统(OS)需要处理器进入系统管理模式(SMM)时。SMM是用于执行不干扰操作系统和应用程序的软件例程/处理程序的环境。
在当前的多处理器系统中,每个处理器进入SMM并且随后一条接一条地执行不同的SMI处理程序来核查它们的寄存器,以找出哪个处理器产生所述SMI。这需要为每个处理器执行分开的SMI处理程序,这就引入了资源争夺问题,并因此使得对SMI处理程序代码的更新变得困难。
但是,这些效率低下的初始化和处理方法不限于多处理器服务器系统,还存在于其他系统中,例如移动多处理器系统。超线程技术(HT)是一项来自加利福尼亚州圣塔克莱拉市的Intel公司的技术,所述技术使得能够使用信号物理处理器并行地执行线程。HT在一个物理处理器(同一管芯)上包括两个逻辑处理器。逻辑处理器是操作系统(OS)可见的独立处理器,能够执行代码并且维持相对于系统中其他处理器来说独特的体系结构状态。HT是通过包括多个体系结构状态来实现的,所述多个体系结构状态共享一套执行资源。
因此,HT使得人们能够在移动平台中实现多(逻辑)处理器系统。如上所示,效率低下的存储器分配、处理器初始化和SMI处理存在于传统的多处理器系统(例如服务器系统)中。此外,随着多处理器系统开始渗入资源(例如存储器)受限的移动领域,对于上述的低效率的优化的需求就变得愈发重要。
附图简要说明本发明是以示例性的方式描述的,并且不应认为本发明受附图限制。


图1示出具有多个处理器的设备的方框图,所述多个处理器共享执行资源、缓存和存储器。
图2示出具有多个处理器的系统的方框图。
图3示出具有物理处理器的系统的方框图,所述物理处理器包括多个逻辑处理器图4示出第一处理器唤醒第二处理器的流程图。
图5示出使用第一处理器唤醒第二处理器的例证性实施方案的流程图。
图6示出在第一和第二处理器上使用相同的SMI处理程序处理SMI的流程图。
图7示出在第一和第二处理器上使用一个SMI处理程序处理SMI的例证性实施方案的流程图。
图8示出如果产生的SMI是软件SMI的情况下在第一和第二处理器上执行相同的系统管理中断代码的流程图,。
图9示出如果正被处理的SMI是软件产生的情况下执行相同的SMI处理程序的第一和第二处理器的例证性实施方案的流程图。
详细描述在以下描述中阐述了大量具体的细节,例如具体的存储器地址、存储器大小、组件配置的实施例,以提供对本发明的完整理解。然而,本领域的技术人员将会清楚,无需使用这些具体的细节可以实现本发明。此外,没有详细描述公知的组件和方法,例如例程引导模块(block)(例如上电自检(POST))、具体的系统管理模式(SMM)实现以及具体的系统管理中断处理程序代码,以免不必要地模糊本发明。
在此描述的方法和装置用于在多处理器系统中当唤醒处理器时优化存储器分配和优化系统管理中断(SMI)处理。唤醒处理器的方法可以发生为任何数量的普通操作的结果。例如,当计算机上电或重启时,可以唤醒非活动/睡眠的处理器。此外,当系统从低功率状态返回时,可以唤醒非活动的处理器,所述低功率状态例如睡眠、待机、挂起、休眠、等待SIPI、睡眠、深度睡眠、重启和第二处理器不响应中断的任何其他模式。
本领域的技术人员将会很容易理解,所公开的唤醒第二处理器的方法可以适用于任何级别的计算机系统(个人数字助理、移动平台、桌面平台和服务器平台)以及任何数量的处理器。例如,具有四个或更多个处理器的多处理器系统可以采用该方法利用活动的处理器来唤醒非活动的处理器。
图1-3示出了可以具体实施在此描述的方法的一些硬件的例证性的实施例。在此描述的方法可以用于任何多处理器系统;因此所述方法只在参考图3时详细描述,以免因为不必要的细节模糊本发明。
图1示出了具有多个逻辑处理器的设备105的方框图。物理处理器是指物理处理器管芯或单个封装。逻辑处理器是操作系统(OS)可见的独立处理器,所述逻辑处理器能够执行代码并保存相对于系统中其他处理器来说独特的体系结构状态。超线程技术(HT)是一项来自加利福尼亚州圣塔克莱拉市的Intel公司的技术,所述技术使得能够使用信号物理处理器并行地执行线程。HT在一个物理处理器上包括两个逻辑处理器,并且通过复制体系结构状态来实现,其中每个体系结构状态共享一套处理器执行资源。
设备105可以包括第一处理器120和第二处理器125。设备105可以是物理处理器。设备105也可以是嵌入式系统或其他的具有至少两个处理器的设备。处理器120和125可以是逻辑处理器。例如,处理器105可以包括体系结构状态寄存器130和135,所述体系结构状态寄存器130和135各自保存独特的体系结构状态。很容易理解,设备105可以包括两个以上的逻辑处理器,所述逻辑处理器各自具有与其相关联的体系结构状态寄存器以保存各自的体系结构状态。所述两个处理器120和125共享相同的执行资源140、缓存145、总线150和存储器155。
设备105还可以包括控制器110。控制器110可以是高级可编程中断控制器(APIC)控制器。控制器110可以被用于产生系统管理中断(SMI)。控制器110也可以被用于在APIC总线(未示出)上通信,所述APIC总线将第一处理器120和第二处理器125耦合到一起。
设备105还可以包括存储器155。存储器可以是任何类型的可以存储数据的储存装置。例如存储器155可以是存储信息的寄存器。存储器155也可以是缓存145的另一层次。存储器155还可以是某种形式的置于器件105上的系统存储器。
存储器155至少包括第一存储器单元(location)160和第二存储器单元165。第一存储器单元160可以包括默认的系统管理处理程序代码。第一存储器单元160还可以是按1k对齐的。第二处理器165可以是另一不按1k对齐的地址。第一存储器单元160和第二存储器单元165还可以分别是第一处理器120和第二处理器125的基地址。在重新定位第一处理器120的基地址时,第二存储器单元165还可以被用作暂存空间。第一和第二存储器单元将参照图4到9中描述的方法被更详细地描述。
参照图2,示出了具有多个处理器的系统的例证性实施例。系统可以包括第一处理器205和第二处理器210。处理器205和210可以是物理处理器,其中每个处理器位于其自身的封装中。系统还可以包括将处理器205和210耦合到控制器中心(hub)220的系统总线215。控制器中心220也可以通过总线225被耦合到存储器230。
图3示出了具有多个处理器的系统的实施例。处理器305可以包括共享执行资源330、缓存335和系统总线340的处理器310和处理器315。体系结构状态寄存器320和325分别保存处理器320和325的独特的体系结构状态。系统总线340将处理器305耦合到控制器中心345。控制器中心345可以通过第二总线350被耦合到系统存储器。系统存储器可以包括多个存储器单元,例如第一存储器单元365和第二处理器单元370。
图3的例证性系统将被用于描述图4到9中所述的方法。虽然图3在描述高效的存储器分配和系统管理中断(SMI)处理方法时被提及,但是很明显地,图1、图2中的硬件和其他未示出的硬件配置可以实现在此描述的方法。
图4示出了第一处理器唤醒第二处理器的高级流程图。第一和第二处理器可以是位于一个处理器管芯上的逻辑处理器、位于如图2所示的分开的封装上的分开的处理器或在其他多处理器配置中的处理器。最初,当多处理器系统从低功率状态,例如睡眠、待机、挂起、休眠、等待SIPI、睡眠、深度睡眠、重启和任何其他的第二处理器不响应中断的模式中回复时,第一处理器应该初始化为活动状态,而第二处理器应该初始化为非活动状态。活动状态可以包括执行代码或响应中断。反过来,非活动状态可以包括不响应中断。非活动状态也可以包括不执行代码。
在方框405中接收到第一系统管理中断(SMI)。通常产生SMI来请求处理器的服务。一旦接收到SMI,除非处理器是非活动的且不响应中断,否则处理器进入系统管理模式(SMM),通过运行常规存储器中的SMI处理代码和例程来服务该请求。
作为例证性的实施例,方框405中的第一SMI可以由控制器中心(例如图3中描述的控制器中心345)产生。作为另一个实施例,方框405中的第一SMI可以由APIC(例如图1中的控制器110)产生,或者由分开定位在系统中的控制器(未示出)来产生。作为再一个实施例,方框405中的第一SMI可以通过改变例如处理器305的处理器或例如控制器345的控制器中心上的管脚的逻辑电平来产生。
方框405中的第一SMI可以是初始化SMM的服务请求,用于为系统管理分配地址空间和/或重新定位处理器基地址(SMBase)。SMBase可以是存储器的系统管理部分的起始地址。SMBase也可以是存储器的系统管理部分所参考的地址。例如SMBase可以是值0x30000。用于存储器那部分的SMI处理程序可以参考SMBase偏移一个偏移量。例如,SMI处理程序可以从SMBase偏移0x8000(SMBase+0x8000),在本实施例中这会把SMI处理程序放在0x38000上。
当在多处理器系统中产生了SMI时,第一和第二处理器应该接收/锁存该SMI。但是,第二处理器可能在此时不进入SMM并且不处理SMI,因为它可能处于非活动状态(不响应中断)。相反,在方框410中,第一处理器可以是活动的,并且可以处理在方框405中接收到的第一SMI。当第一处理器接收到第一SMI时,第一处理器可以进入系统管理模式(SMM)来服务/处理该SMI。
如图5所示,第一处理器可以通过在方框505中初始化SMM并且在方框510中执行默认的SMI处理程序来处理SMI。默认的SMI处理程序可以是位于默认存储器单元(例如第一存储器单元365)中默认的代码。第一存储器单元可以是按1k、4k或任何其他大小对齐的存储器区间(range)。
回到图4,在方框415中由第一处理器产生唤醒信号。方框415中的唤醒信号可以是任何信号,所述信号被发送以将第二处理器从非活动状态唤醒。因为第二处理器在非活动状态可能不响应中断或不执行代码,所以唤醒信号可以是总线信号,处于非活动状态的第二处理器等待该总线信号来开始唤醒过进。在一个实施方案中,唤醒信号可以是在耦合第一和第二处理器的总线(未示出)上传输的启动内部处理器中断(SIPI)消息,所述总线例如APIC总线。
如图5的方框515中所示,唤醒信号可以是基于默认SMI处理程序在存储器中的位置的向量。唤醒信号可以是存储器中的任何地址或任何对存储器中地址单元的参考。在一个实施方案中,默认SMI处理程序位于第一存储器单元365中,其中唤醒信号是基于第一存储器单元365的向量。在另一个实施方案中,唤醒信号是基于第一存储器单元365的,所述存储器单元365是按1k、4k或其他大小对齐的存储器地址区间。第二处理器可以要求唤醒信号对齐并且要求其位于常规系统存储器中。在另一个实施方案中,第一存储器单元365可以是第二处理器315开始执行的地址单元。
回到图4,方框420示出了第二处理器的唤醒操作。方框420可以包括唤醒第二处理器以允许它处理方框405中接收的第一SMI,或运行基本的唤醒例程,例如上电自检(POST)。
在下一个方框425中,在方框405中接收的第一SMI被第二处理器处理。然而,当第一SMI在方框405中被接收时,第二处理器可能一直是非活动的,并因此不能在该时刻服务该SMI;第二处理器在其处于非活动状态时可能依旧已经锁存了该SMI。一旦醒来,第二处理器可以处理先前锁存的第一SMI。
转向图5,在方框520和525中示出了使用第二处理器处理第一SMI的一个实施方案。在方框520中,第二处理器初始化SMM。此外,在方框525中第二处理器的指令指针可以被修改为第二存储器地址,例如图3中的第二存储器地址370。第二存储器地址370可以是未对齐的地址,所述地址不再限于常规存储器。一旦第二处理器将指令指针修改(patch)为第二存储器地址370,那么就没有必要为执行启动代码分配常规的对齐存储器。在完成初始化和恢复后,如方框530所示,第二处理器可以恢复到被修改的指令指针,并且开始执行其启动代码,所述被修改的指针指向第二存储器地址370。
参照图6,示出了无论是在引导时还是在普通操作下的处理SMI的方法,其中可以使用相同的SMI处理程序在多个处理器上处理SMI。在方框605中接收到SMI。SMI可以是例如电池电量低的硬件(异步)中断或例如操作系统请求处理器改变频率或功率水平的软件中断。典型地,硬件SMI可以被任一处理器处理而不需知道其他处理器的状态保存区。相反,软件SMI常常依赖于处理器在SMI被产生时的体系结构状态,并因此需要访问产生该SMI的处理器的状态保存区。因此,软件产生的SMI可以使多处理器系统中的所有处理器进入SMM并执行处理程序。
在方框610中,第一处理器执行SMI代码(SMI处理程序),用于为第一处理器处理SMI。处理SMI可以包括执行SMI代码以确定正被检查的当前处理器的状态保存区是否产生了SMI。处理SMI还包括服务SMI请求。
如上参考图4所述,第一处理器可以具有第一SMBase地址。SMI代码(SMI处理程序)可以位于偏离第一SMBase地址默认偏移量的地址。此外,SMI代码可以参考目标SMBase地址。目标SMBase可以是SMI代码打算访问该处理器的系统管理区域(存储器中的区间)的地址。
作为例证性的实施例,目标SMBase可以被默认地设置为参考第一SMBase地址,所述SMBase地址是第一处理器的系统管理区域的起始地址。因此,当接收到SMI并且执行SMI处理程序代码时,SMI处理程序代码能够通过参考目标SMBase来访问第一处理器系统管理区域,所述第一处理器系统管理区域可以包括第一处理器的状态保存区。
在方框610中执行SMI代码来为第一处理器处理SMI之后,可以执行相同的SMI代码/处理程序来为第二处理器处理SMI,如方框615所示。在图7中在流程图中示出了执行SMI处理程序来为第二处理器处理SMI的方框615的例证性实施例。在方框705中,SMI处理程序的目标SMBase地址从第一处理器的第一SMBase地址改为第二处理器的第二SMBase地址。
继续上面的例证性实施例,在使用以第一SMBase为目标的目标SMBase来执行SMI处理程序之后,目标SMBase可以被改为以第二SMBase地址为目标。第二SMBase地址可以是第二处理器的系统管理区域(存储器空间)的起始地址。因此,如方框710所示,当使用第二处理器的SMBase作为目标SMBase来执行SMI处理程序时,相同的SMI代码/处理程序能够通过参考偏置第二处理器的SMBase地址来为第二处理器处理SMI。
图8示出了如果正被产生处理的SMI是软件产生的情况下为多个处理器执行相同的SMI处理程序代码的另一个例证性实施例。如上所述,硬件SMI可以被任何处理器处理而不会影响其他处理器。因此,在方框805中,第一处理器执行SMI代码。在方框810中,第一处理器或第二处理器可以进行核查来观察SMI是否是软件产生的。很明显地,任一处理器可以以任意时间顺序进行核查来观察正被处理的SMI是否是软件产生的。例如,在方框805之前第一处理器可以进行核查来观察SMI是否是由软件产生,随后在方框805中执行SMI处理程序代码。作为另一个实施例,在方框805之后第二处理器可以进行核查来观察是否有软件产生的SMI存在。如果软件SMI不存在,那么第一处理器在方框815中退出SMM并且返回普通操作。
然而,如果SMI是软件产生的,那么第二处理器也应该处理该SMI。在方框820中,第二处理器可以随后执行与方框805中第一处理器执行的代码相同的SMI代码。
图9中使用流程图示出了执行相同SMI代码的例证性实施例。与图6和图7大部分相同的是,可以位于第一存储器单元365中的第一处理器SMBase可以是目标SMBase地址。在使用第一处理器执行SMI代码来为第一处理器处理SMI之后,在方框905中目标SMBase可以被改为以第二处理器的SMBase地址为目标。在方框910中,使用第二处理器的SMBase作为目标SMBase来执行SMI代码。此外,如方框915所示,目标SMBase可以被恢复成以第一处理器SMBase地址为目标。
很明显地,第一和第二处理器的任何组合都可以执行SMI代码。例如,第一处理器可以为第一处理器执行SMI代码。随后,在目标SMBase被改为第二处理器的SMBase后,第一处理器可以再次执行该SMI代码来为第二处理器处理SMI。作为另一个实施例,第二处理器可以两次都执行该SMI代码。作为再一个实施例,在SMI代码第一次被执行来为第一处理器处理SMI时第一处理器可以执行SMI代码,并且第二处理器可以第二次执行该SMI代码来为第二处理器处理SMI。
因此,不同于当前的系统,这些优化可以只使用一个要被产生的SMI来唤醒和开始执行第二处理器。此外,不同于在不同的默认存储器地址启动每个处理器的传统方法,通过发送在第一存储器地址启动第二处理器的唤醒信号可以节省存储器,所述第一存储器地址可以是默认的SMI处理程序的位置。此外,通过在第二处理器处理第一SMI时修改指令指针,第二处理器可以在未对齐的第二存储器地址恢复执行。允许第二处理器在第二存储器地址恢复执行节省了为每个处理器分配的分开的对齐存储器空间。
此外,处理SMI可以使用统一的处理程序,通过使用第一处理器并且随后使用第二处理器执行相同的处理程序代码来实现。通过进行核查来观察正被处理的SMI是否是软件产生的,并且如果SMI不是软件产生的就退出SMM,人们可以节省大量的执行时间。此外,该实现允许平台开发更容易,因为软件SMI处理程序所需的所有改变可以很容易地被包括在包装(wrapper)代码中而不需对软件SMI处理程序例程进行修改。
在前面的详细说明中,参考本发明的具体示例性的实施方案描述了本发明。但是,很明显地,正如所附权利要求书所阐述的,可以对本发明做出各种修改和变化,而不背离本发明的较宽的精神和范围。因此,本说明书和附图可以被视为描述性的而非限制性的。
权利要求
1.一种方法,包括接收第一系统管理中断(SMI);使用第一处理器处理所述第一SMI;使用所述第一处理器产生唤醒信号;基于来自所述第一处理器的所述唤醒信号唤醒第二处理器;以及使用第二处理器处理所述第一SMI。
2.如权利要求1所述方法,其中所述第一和第二处理器是逻辑处理器。
3.如权利要求1所述方法,其中所述第一和第二处理器是物理处理器。
4.如权利要求1所述方法,其中使用第一处理器处理所述第一SMI的操作包括执行位于第一存储器地址上的默认SMI处理程序。
5.如权利要求4所述方法,其中所述唤醒信号包括基于所述第一存储器地址的向量。
6.如权利要求5所述方法,其中所述第一存储器地址是对齐的。
7.如权利要求6所述方法,其中所述第一存储器地址是按4k对齐的。
8.如权利要求5所述方法,其中使用所述第二处理器处理所述第一SMI的操作包括执行位于所述第一存储器地址的所述默认SMI处理程序。
9.如权利要求8所述方法,其中使用所述第二处理器处理所述第一SMI的操作还包括将指令指针修改为第二存储器地址。
10.如权利要求9所述方法,其中所述第二存储器地址是未对齐的地址。
11.如权利要求10所述方法,还包括在所述第二处理器已经处理了所述第一SMI之后执行所述第二存储器地址上的代码。
12.一种方法,包括接收第一系统管理中断(SMI);响应于所述第一SMI,使用第一处理器执行第一存储器地址上的代码;使用所述第一处理器产生唤醒信号;基于来自所述第一处理器的唤醒信号唤醒第二处理器;以及使用所述第二处理器执行所述第一存储器地址上的所述代码。
13.如权利要求12所述方法,其中所述唤醒信号基于所述第一存储器地址。
14.如权利要求13所述方法,其中所述第一存储器地址是默认SMI处理代码的位置。
15.如权利要求14所述方法,其中所述第一存储器地址位于常规存储器中。
16.如权利要求15所述方法,其中所述第一存储器地址是对齐的。
17.如权利要求12所述方法,其中所述第一和第二处理器都是位于相同管芯上的逻辑处理器。
18.如权利要求12所述方法,其中所述第一和第二处理器是位于分开的封装上的物理处理器。
19.如权利要求12所述方法,还包括将所述第二处理器的指令指针修改为第二存储器地址。
20.如权利要求19所述方法,其中所述第二存储器地址是未对齐的地址。
21.如权利要求20所述方法,还包括在将所述指令指针修改为所述第二存储器地址之后执行所述第二存储器地址上的代码。
22.如权利要求12所述方法,还包括在使用第一和第二处理器接收所述SMI之前产生所述SMI。
23.如权利要求22所述方法,其中产生所述SMI的操作包括改变耦合到控制器中心的管脚的逻辑电平。
24.如权利要求22所述方法,其中APIC被用于产生所述SMI。
25.如权利要求24所述方法,其中所述APIC位于所述第一处理器中。
26.一种方法,包括接收系统管理中断;执行SMI处理程序来为第一处理器处理SMI;以及执行所述SMI处理程序来为第二处理器处理所述SMI。
27.如权利要求26所述方法,其中所述SMI是软件产生的SMI。
28.如权利要求27所述方法,其中所述第一处理器执行所述SMI处理程序来为所述第一和第二处理器处理所述SMI。
29.如权利要求26所述方法,其中所述SMI处理程序位于第一存储器地址。
30.如权利要求29所述方法,其中所述第一存储器地址是相对于用于所述第一处理器的第一系统管理基(SMBase)地址的默认偏移。
31.如权利要求30所述方法,其中使用所述第一SMI处理程序处理所述第二SMI的操作包括将所述SMI处理程序的目标SMBase从所述第一SMBase改为所述第二处理器的第二SMBase;以及使用所述第二处理器的SMBase作为所述目标SMBase来执行所述第一SMI处理程序。
32.一种方法,包括使用第一处理器执行系统管理中断(SMI)代码来为所述第一处理器处理SMI;核查所述SMI时候是否是软件产生的SMI;以及如果所述SMI是软件产生的,执行所述SMI代码来为第二处理器处理所述SMI。
33.如权利要求32所述方法,其中,如果所述SMI是软件产生的,所述第一处理器执行所述SMI代码来为所述第二处理器处理所述SMI。
34.如权利要求32所述方法,其中,如果所述SMI是软件产生的,所述第二处理器执行所述SMI代码来为所述第二处理器处理所述SMI。
35.如权利要求32所述方法,其中所述第一处理器包括第一系统管理基(SMBase)地址。
36.如权利要求33所述方法,其中所述第二处理器包括第二SMBase地址。
37.如权利要求36所述方法,其中所述SMI代码位于第一存储器单元,所述第一存储器单元相对于所述第一SMBase地址具有偏移。
38.如权利要求37所述方法,其中执行所述SMI代码来为所述第二处理器处理所述SMI的操作包括将所述SMI处理程序的所述目标SMBase从所述第一SMBase改为所述第二SMBase;以及使用所述第二处理器的SMBase作为所述目标SMBase来执行所述SMI代码。
39.如权利要求38所述方法,还包括在执行所述SMI代码来为所述第二处理器处理所述SMI之后,使所述SMI处理程序的所述目标SMBase回到所述第一SMBase。
40.一种装置,包括产生第一系统管理中断(SMI)的控制器;耦合到所述控制器的第一逻辑处理器,所述第一逻辑处理器用于产生第一SMI来处理所述第一SMI,以及用于产生唤醒信号;以及耦合到所述控制器的第二逻辑处理器,所述第二逻辑处理器用于在接收到来自所述第一逻辑处理器的所述唤醒信号后处理所述第一SMI。
41.如权利要求40所述装置,其中为了使用所述第一逻辑处理器来处理所述第一SMI,所述第一逻辑处理器执行第一存储器单元上的代码。
42.如权利要求41所述装置,其中所述第一存储器地址是按1k对齐的。
43.如权利要求41所述装置,其中使用所述第二逻辑处理器处理所述第一SMI的操作包括执行所述第一存储器单元上的代码。
44.如权利要求43所述装置,其中使用所述第二逻辑处理器处理所述第一SMI的操作还包括将指令指针修改为第二存储器地址。
45.一种系统,包括产生第一系统管理中断(SMI)的控制器中心;具有第一存储器地址的存储器,所述第一存储器地址包括代码;耦合到所述控制器中心用于处理所述第一SMI的第一处理器,其中所述第一处理器执行所述第一存储器地址上的代码并产生唤醒信号;以及耦合到所述控制器中心用于在接收到所述唤醒信号后处理所述第一SMI的第二处理器,其中所述第二处理器执行所述第一存储器地址上的所述代码。
46.如权利要求45所述系统,其中所述第一和第二处理器是位于相同管芯上的逻辑处理器。
47.如权利要求45所述系统,其中所述第一和第二处理器是位于分开的封装上的物理处理器。
48.如权利要求45所述系统,其中在所述控制器中心上反转管脚以产生所述第一SMI。
49.如权利要求45所述系统,其中代码被所述控制器中心执行,以产生所述第一SMI。
50.如权利要求45所述系统,其中所述第一存储器地址上的所述代码是SMI处理代码。
51.如权利要求50所述系统,其中所述唤醒信号是包括所述第一存储器地址的向量。
52.如权利要求51所述系统,其中在接收到所述唤醒信号后使用所述第二处理器处理所述第一SMI的操作还包括将指针设置为第二存储器地址。
53.如权利要求52所述系统,其中所述第二处理器一旦从处理所述SMI的操作中恢复,执行所述第二存储器地址上的代码。
54.一种系统,包括具有包括系统管理中断(SMI)代码的第一存储器地址的存储器;在接收到SMI时执行所述SMI代码的第一处理器;以及如果所述SMI是软件产生的,执行所述SMI代码的第二处理器。
55.如权利要求54所述系统,其中所述第一处理器包括第一系统管理基(SMBase)地址。
56.如权利要求55所述系统,其中所述第二处理器包括第二SMBase地址。
57.如权利要求56所述系统,其中所述第一存储器地址相对于所述第一SMBase具有偏移。
58.如权利要求57所述系统,其中所述目标SMBase默认地是所述第一SMBase。
59.如权利要求58所述系统,其中,在所述第二处理器执行所述SMI代码之前,所述目标SMBase被改为所述第二SMBase。
60.如权利要求54所述系统,其中所述第一和第二处理器是逻辑处理器。
61.如权利要求54所述系统,其中所述第一和第二处理器是物理处理器。
全文摘要
在本文中描述了用于高效的存储器分配和系统管理中断(SMI)处理的方法和装置。一旦唤醒多个处理器系统中第二处理器,那么可以使用单个SMI来初始化每个处理器,可以使用单个默认SMI处理程序的位置作为第二处理器的唤醒向量,并且可以在使用第二处理器处理SMI期间将指令指针修改到未对齐地址,以避免传统的额外的对齐存储器的分配。此外,可以使用统一的处理程序代码在第一和第二处理器两者上处理软件产生的SMI,并且在处理完硬件SMI后可以直接退出SMM以节省执行时间。
文档编号G06F9/46GK1890634SQ200480036293
公开日2007年1月3日 申请日期2004年9月30日 优先权日2003年10月6日
发明者巴恩斯·库珀, 格兰特·小林 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1