首页> 中国专利> 系统管理模式中的代码更新

系统管理模式中的代码更新

摘要

提供了一种计算设备,该计算设备包括存储指令存储位置的存储器。该计算设备还可以包括处理器系统,该处理器系统包括多个处理器线程。处理器系统可以暂停多个处理器线程中的一个或多个相应处理器线程的执行。处理器系统可以将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。处理器系统可以进入系统管理模式(SMM)。处理器系统可以确定指令存储位置包括代码更新指令。处理器系统可以基于代码更新指令执行代码更新。处理器系统可以退出SMM。处理器系统可以从存储器中取回一个或多个处理器线程上下文并且在不重启计算设备的情况下恢复一个或多个处理器线程的执行。

著录项

说明书

背景技术

诸如在云计算环境中使用的服务器等计算设备通常具有管理服务器计算设备的硬件组件的功能的系统固件。有时可能需要更新该固件,例如,以修复安全漏洞、调节设置、适应硬件改变、修复功能错误、增强可靠性和可维护性功能或执行其他类型的更新。

发明内容

根据本公开的一个方面,提供了一种计算设备,该计算设备包括存储指令存储位置的存储器。该计算设备还可以包括处理器系统,该处理器系统包括多个处理器线程。处理器系统可以被配置为暂停多个处理器线程中的一个或多个相应处理器线程的执行。处理器系统还可以被配置为将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。处理器系统还可以被配置为进入系统管理模式(SMM)。处理器系统还可以被配置为确定指令存储位置包括代码更新指令。处理器系统还可以被配置为基于代码更新指令执行代码更新。处理器系统还可以被配置为退出SMM。处理器系统还可以被配置为从存储器中取回一个或多个处理器线程上下文并且在不重启计算设备的情况下恢复该一个或多个处理器线程的执行。

提供本“发明内容”以便以简化的形式介绍在以下“具体实施方式”中进一步描述的概念的选择。本“发明内容”不旨在确定要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实现。

附图说明

图1A-1B示意性地示出了根据本公开的一个实施例的可以在其处执行代码更新的示例计算设备。

图2A-2B示出了根据图1A-1B的实施例的在计算设备处于系统管理模式的时间段之前、期间和之后的示例处理器线程。

图3示出了根据图1A-1B的实施例的可以用于更新计算设备的代码的示例方法的流程图。

图4示出了在执行图3的方法时可以执行的附加步骤。

图5示出了根据图1A-1B的实施例的用于在计算设备处执行免重启固件更新的另一示例方法的流程图。

图6示出了图1A-1B的计算设备可以在其中实现的示例计算环境的示意图。

具体实施方式

根据用于更新诸如服务器计算设备等计算设备的基本输入输出系统(BIOS)等固件的现有方法,作为更新过程的一部分,重启计算设备。根据一种这样的现有方法,计算设备进入系统管理模式,使用闪存实用程序将BIOS的新版本存储在闪存中,然后执行重启并且从闪存加载BIOS的新版本,于是BIOS的新版本被执行。

当服务器计算设备处于关闭和重启的过程中时,其可用性被中断。此外,当虚拟机在服务器计算设备上运行时,这些虚拟机通常会在固件更新过程中迁移到其他服务器计算设备。重启服务器计算设备和迁移虚拟机都是耗时的过程,该过程增加了在服务器计算设备处应用固件更新的成本。在更新除服务器计算设备之外的计算设备的固件时,也存在类似的可用性中断挑战。

为了解决上述问题,提供了以下系统、设备和方法。图1A-1B示意性地示出了根据一个示例实施例的计算设备10。计算设备10可以包括处理器系统12。如图1A所示,处理器系统12可以包括多个处理器线程50。多个处理器线程50可以在处理器系统12中包括的多个处理器核心13上实例化,如图1B所示。

计算设备10还可以包括存储器14。存储器14可以包括一个或多个物理存储设备15,如图1B所示。每个存储设备15可以是易失性存储器设备或非易失性存储器设备。如图1A所示,存储器14可操作地耦合到处理器系统12,使得处理器系统12可以将数据存储在存储器14中并且从存储器14中取回数据。在一些实施例中,处理器系统12和存储器14的功能可以跨多个可操作地耦合的计算设备10被实例化。例如,计算设备10可以是可操作地耦合到数据中心中的一个或多个其他计算设备10的服务器计算设备,每个计算设备10可以执行下面讨论的处理器系统12或存储器14的功能中的一些或全部。

计算设备10可以具有固件70,固件70可以存储在存储器14中。例如,固件70可以是基本输入/输出系统(BIOS)或统一可扩展框架接口(UEFI)。此外,固件70可以包括可操作地耦合到计算设备10的处理器系统12和/或存储器14的一个或多个附加硬件设备的设置,例如一个或多个输入设备、一个或多个输出设备、或一个或多个网络设备。

在计算设备10的正常操作期间,多个处理器线程50可以在计算设备10上并发地执行以运行多个程序60。例如,多个处理器线程50可以包括一个或多个虚拟机在其上运行的一个或多个虚拟机(VM)处理器线程。作为另一示例,多个程序60可以包括一个或多个操作系统程序。多个处理器线程50可以在处理器系统12中包括的多个处理器核心13上运行。多个处理器线程50和核心13可以允许并行执行由处理器系统12执行的计算。

处理器系统12可以被配置为暂停多个处理器线程50中的一个或多个处理器线程50的执行。处理器线程50运行直到对于每个线程达到会合屏障,此时,处理器线程50被静默,即,暂时暂停。在暂停一个或多个处理器线程50的执行之后,处理器系统12还可以被配置为将一个或多个处理器线程50的一个或多个相应处理器线程上下文62存储在存储器14中。每个处理器线程上下文62可以是处理器线程50的执行被暂停时处理器线程50的状态。因此,其执行被暂停的一个或多个处理器线程50中的每个可以被存储,使得它们可以在执行代码更新之后恢复执行,如下文进一步详细讨论的。在一些实施例中,可以制作一个或多个处理器线程上下文62的一个或多个附加副本。在这样的实施例中,一个或多个附加副本可以作为备份副本存储在一个或多个其他计算设备10上。

在存储一个或多个处理器线程上下文62之后,处理器系统12还可以被配置为进入系统管理模式(SMM)30。SMM 30可以在计算设备10上具有最高级别的管理特权。由于具有最高级别的管理特权,SMM 30可以修改固件70,如下文进一步详细讨论的。处理器系统12可以被配置为在不重启计算设备10的情况下暂停一个或多个处理器线程50的执行并且进入SMM30。因此,可以避免与将VM迁移到另一计算设备和重启计算设备10相关联的成本。

在一些实施例中,当处理器系统12在SMM 30中时,处理器系统12可以包括被配置为分配一个或多个其他SMM线程54的主控线程52。主控线程52可以是被选择以执行多个系统管理中断(SMI)处理程序34的处理器线程50,如下所述。主控线程52在图2A的示例中示出,图2A示出了在处理器系统12处于SMM 30中的时间段之前、期间和之后的多个处理器线程50。多个处理器线程50可以例如包括处理器系统12在其上运行一个或多个VM的一个或多个VM处理器线程。

在图2A的示例中,在多个处理器线程50的相应处理器线程上下文62被存储在存储器14中之后,处理器系统12可以执行SMM入口86。SMM入口点可以是对于一个或多个处理器线程50中的每个被停止执行的会合点。然后处理器系统12可以执行主控线程52和多个其他SMM线程54。当主控线程52和多个其他SMM线程54被执行时,一个或多个处理器线程50每个可以处于静默状态56。

虽然在图2A的示例中每个处理器线程50用于执行SMM 30,但是当处理器系统12在SMM 30中时,处理器线程50中的一个或多个可以不使用。另外地或替代地,SMM 30可以使用在进入SMM 30之前用于执行一个或多个程序60的一个或多个处理器线程50。在一些实施例中,如图2B的示例中所示,处理器系统12还可以被配置为与SMM 30并发地执行一个或多个程序60。处理器系统12继续执行的一个或多个程序60可以例如是在代码更新被执行的同时继续运行的一个或多个虚拟机。在图2B的示例中,当在SMM 30中时,两个处理器线程50的执行被暂停。然而,处理器系统12继续执行一个处理器线程50,同时其他处理器线程50用于SMM 30。

返回图1A,当处理器系统12在SMM 30中时,多个处理器线程50可以被配置为执行SMI处理程序列表32中包括的多个SMI处理程序34。每个SMI处理程序34可以是由SMM 30中的处理器系统12执行的一段代码。主控线程52可以将每个SMI处理程序34分配给另一SMM线程54,该SMM线程54然后可以执行SMI处理程序34。

在一些实施例中,SMI处理程序列表32的每个SMI处理程序34可以包括相应SMI处理程序元数据36。在一些实施例中,SMI处理程序元数据36可以包括SMI原因38,SMI原因38指示在处理器系统12在SMM 30中的同时SMI处理程序被配置为在其下被执行的一个或多个预定条件。在这样的实施例中,对于每个SMI处理程序34,主控线程52可以确定该SMI处理程序34的SMI处理程序元数据36中包括的SMI原因38是否满足。主控线程52可以被配置为向满足SMI原因38的每个SMI处理程序34分配另一SMM线程54,但不向不满足SMI原因38的每个SMI处理程序34分配另一SMM线程54。因此,处理器系统12可以被配置为在SMM 30中的同时执行SMI处理程序列表32中包括的多个SMI处理程序34的仅一部分。

计算设备10的存储器14可以包括存储有代码更新指令22的系统管理存储器区域20。例如,系统管理存储器区域20可以是系统管理随机存取存储器(SMRAM)区域,该SMRAM区域可以位于存储器14的顶段(TSEG)中。替代地,SMRAM区域可以位于DOS存储器或存储器低段中。当处理器系统12在SMM 30中时,处理器系统12还可以被配置为确定系统管理存储器区域20包括代码更新指令22。代码更新指令22可以是SMI处理程序34。

下面提供可以通过执行代码更新指令22来执行的更新的示例。代码更新指令22可以是用于添加或删除由BIOS提供的代码的指令,例如SMI处理程序34。SMI处理程序34可以添加到SMI处理程序列表32或从中移除。因此,SMM 30可以在代码更新指令22被执行时修改自身。作为另一示例,代码更新指令22可以是用于重新初始化存储器14的存储器控制器80的至少一部分的指令。替代地,代码更新指令22可以是用于改变处理器系统12的多线程设置82的指令。改变多线程设置82可以包括增加或减少在处理器系统12的至少一个核心13上执行的处理器线程50的数目。作为另一示例,代码更新指令22可以是用于启用或禁用处理器系统12的核心13的指令。作为另一示例,代码更新指令22可以是用于改变用于影响寻址镜像的策略的存储器使用模型84的指令。在一个具体示例中,存储器使用模型84可以是用于修改存储器14的镜像地址范围的大小和/或位置的指令。在其他实施例中,代码更新指令22可以是用于执行其他类型的指令的更新。

在一些实施例中,处理器系统12可以被配置为至少部分通过查询指示每个SMI处理程序34在存储器14中的相应位置的查找表24来确定系统管理存储器区域20包括代码更新指令22。在一些实施例中,查找表24可以存储在系统管理存储器区域20中。在处理器系统12被配置为查询查找表24的实施例中,SMI处理程序列表32可以包括更新查询SMI处理程序40。更新查询SMI处理程序40可以包括用于至少一个处理器线程50查询查找表24以获取代码更新指令22的指令。更新查询SMI处理程序40还可以包括更新查询SMI处理程序元数据42。类似于SMI处理程序列表32中包括的其他SMI处理程序34的SMI处理程序元数据36,更新查询SMI处理程序元数据42可以包括SMI原因38或其他元数据。

执行代码更新还可以包括对于SMI处理程序列表32中的每个SMI处理程序34,确定SMI处理程序34是否被配置为代码更新指令22。在一些实施例中,处理器系统12可以基于SMI处理程序34的SMI处理程序元数据36中包括的相应SMI原因38来确定每个SMI处理程序34是否是代码更新指令22。例如,处理器系统12可以被配置为对于每个SMI处理程序34,至少部分基于SMI处理程序34的SMI处理程序元数据36中包括的SMI原因38来确定SMI处理程序34是否是更新查询SMI处理程序40。

在处理器系统12从系统管理存储器区域20中取回到代码更新指令22之后,处理器系统12还可以被配置为基于代码更新指令22执行代码更新。在一些实施例中,执行代码更新可以包括修改SMI处理程序列表32。在这样的实施例中,处理器系统12可以被配置为至少部分地通过添加、删除或重写一个或多个SMI处理程序34基于代码更新指令22来修改SMI处理程序列表32。处理器系统12还可以被配置为更新查找表24以指示对SMI处理程序列表32的一个或多个SMI处理程序34的修改。该修改可以由查找表24中存储的处理程序重写覆写26指示。例如,在现有SMI处理程序34被重写的实施例中,指示SMI处理程序34已经被重写的处理程序重写覆写26可以存储在查找表24中与该SMI处理程序34相关联的位置处。在修改SMI处理程序列表32之后,执行代码更新还可以包括执行修改后的SMI处理程序列表32中的多个SMI处理程序34。

在一些实施例中,处理器系统12还可以被配置为响应于验证代码更新指令22的数字签名28而执行代码更新。在一些实施例中,代码更新指令22可以用私钥被签名。在这样的实施例中,计算设备10的固件70可以包括公钥72。为了确认代码更新指令22是从可信来源接收的,可以使用计算设备10的公钥72对数字签名28执行非对称验证。因此,处理器系统12可以防止第三方进行未授权代码更新。

在修改SMI处理程序列表32之后,处理器系统12还可以被配置为从系统管理存储器区域20中删除代码更新指令22。因此,处理器系统12可以释放存储器14中的空间并且避免安装相同的代码更新两次。

处理器系统12还可以被配置为在进行代码更新之后退出SMM30。当处理器系统12执行SMM出口88时,如图2A-2B的示例中所示,处理器系统12可以停止执行主控线程52和一个或多个其他SMM线程54。另外,处理器系统12还可以被配置为从存储器14中取回一个或多个处理器线程上下文62并且恢复执行被暂停的一个或多个处理器线程50的执行。因此,如图2A-2B所示,SMM出口88可以是多个SMI处理程序34中的每个的执行停止的SMI会合点。一个或多个处理器线程50可以在代码更新之后恢复执行。这允许一个或多个程序60(诸如一个或多个VM)的一个或多个处理器线程50在计算设备10上恢复执行,而不必将一个或多个处理器线程50从另一计算设备转移回计算设备10。结果,可以减少一个或多个程序60的可用性的中断并且可以避免与迁移一个或多个程序60相关联的成本。

现在转向图3,示出了用于与计算设备一起使用的示例方法100的流程图。图3的方法100可以与图1A-1B的计算设备10或与某种其他计算设备一起使用。在步骤102,方法100可以包括暂停由处理器系统执行的多个处理器线程中的一个或多个处理器线程的执行。由处理器系统执行的多个处理器线程可以例如实例化一个或多个虚拟机。

在步骤104,方法100还可以包括将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在计算设备的存储器中。每个处理器线程的处理器线程上下文是处理器线程在特定时间点的当前状态。在一些实施例中,可以为处理器系统的多个处理器线程中的每个处理器线程存储对应处理器线程上下文。

在步骤106,方法100还可以包括进入系统管理模式(SMM)。系统管理模式可能对计算设备具有顶级管理权限。一个或多个处理器线程的执行可以被暂停,并且可以在不重启计算设备的情况下进入SMM。在不重启计算设备的情况下进入SMM可以避免与重启计算设备相关联的停机时间。

在一些实施例中,在步骤108,方法100可以可选地包括与SMM并发地执行一个或多个虚拟机。在这样的实施例中,与SMM并发地执行的一个或多个虚拟机可以在一个或多个处理器线程上执行,当一个或多个其他处理器线程在SMM中时,该一个或多个处理器线程继续被执行。

另外地或替代地,方法100还可以包括:在步骤110,使用多个处理器线程中的主控线程来分配一个或多个其他处理器线程。主控线程可以在进入SMM时由处理器系统指定。

在步骤112,方法100还可以包括确定存储器中的系统管理存储器区域包括代码更新指令。系统管理存储器区域可以是SMRAM区域。当由处理器系统执行时,代码更新指令可以修改计算设备的固件。在一些实施例中,代码更新指令可以包括数字签名。在这样的实施例中,方法100还可以包括:在步骤114,验证代码更新指令的数字签名。在一些实施例中,可以对代码更新指令的数字签名进行非对称加密。

在步骤116,方法100还可以包括基于代码更新指令执行代码更新。在执行步骤114的实施例中,可以响应于验证数字签名而执行代码更新。

在步骤118,在执行代码更新之后,方法100还可以包括退出SMM。当处理器系统退出SMM时,可以停止主控线程和一个或多个其他SMM线程的执行。该方法还可以包括:在步骤120,从存储器中取回一个或多个处理器线程上下文。如上所述,从存储器中取回的一个或多个处理器线程上下文可以指示在SMM进入之前一个或多个VM的相应状态。在步骤122,方法100还可以包括恢复从存储器中取回的一个或多个处理器线程的执行。因此,在一个或多个处理器线程实例化一个或多个VM的实施例中,可以在代码更新之后恢复VM的执行,而不必重启计算设备或从另一计算设备迁移一个或多个VM,在代码更新被执行时该一个或多个VM在该另一计算设备上被执行。

图4示出了可以在执行代码更新包括执行多个SMI处理程序的实施例中执行的方法100的附加步骤。多个SMI处理程序可以被包括在SMI处理程序列表中,该SMI处理程序列表指示被配置为在SMM中时由处理器系统执行的每个SMI处理程序。SMI处理程序列表还可以指示多个SMI处理程序的执行顺序。在步骤124,方法100还可以包括查询查找表,该查找表指示SMI处理程序列表中包括的每个SMI处理程序在存储器中的相应位置。当确定系统管理存储器区域包括代码更新指令时,可以查询查找表。查找表可以存储在存储器中。在一些实施例中,多个SMI处理程序可以包括更新查询SMI处理程序。在这样的实施例中,在步骤126,查询查找表可以包括执行更新查询SMI处理程序。

在步骤128,在一些实施例中,方法100还可以包括修改SMI处理程序列表。在步骤130,修改SMI处理程序列表可以包括添加、删除或重写一个或多个SMI处理程序。在执行步骤128的实施例中,方法100还可以包括:在步骤132,更新查找表以指示对SMI处理程序列表的修改。例如,当一个或多个SMI处理程序在步骤130被重写时,指示一个或多个SMI处理程序已经被重写的一个或多个相应处理程序重写覆写可以存储在查找表中。因此,存储器可以存储关于代码更新已经被执行的指示。

在步骤134,方法100还可以包括:在修改SMI处理程序列表之后,执行修改后的SMI处理程序列表中的多个SMI处理程序。多个SMI处理程序可以按照在SMI处理程序列表中指示的顺序执行。在步骤136,方法100还可以包括在修改SMI处理程序列表之后从系统管理存储器区域中删除代码更新指令。

图5示出了用于在计算设备处执行免重启固件更新的另一示例方法200的流程图。执行方法200的计算设备可以是图1A-1B的计算设备10,或者替代地是某种其他计算设备。在步骤202,方法200可以包括将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。一个或多个处理器线程可以实例化一个或多个VM。每个处理器线程的相应处理器线程上下文可以编码该处理器线程在特定时间点的状态。通过存储一个或多个处理器线程上下文,可以在执行免重启固件更新之后取回一个或多个处理器线程的相应状态。

方法200还可以包括:在步骤204,在不重启计算设备的情况下在存储一个或多个处理器线程上下文之后安装固件更新。应当理解,当代码更新应用于在诸如BIOS等固件控制下的更新代码时,本文上面描述的代码更新也可以被称为固件更新。在这种情况下,代码更新是固件更新。固件更新可以在计算设备处于SMM中时安装。安装固件更新可以包括在SMM中时执行多个SMI处理程序。安装SMI更新可以另外地或替代地包括从系统管理存储器区域中取回固件更新。在执行固件更新之后,取回一个或多个处理器线程上下文可以从存储器中被取回并且可以恢复执行。

上述系统和方法可以用于在系统管理模式中快速执行代码更新,而无需重启计算设备。这具有极大地减少可能由于重启过程而导致的计算设备停机时间的潜在优势。在一个示例中,可以在190微秒内执行代码更新,然后静默线程可以恢复执行,从而导致计算设备的用户没有可察觉的性能滞后。这在服务器环境中尤其有利,因为重启服务器所需要的停机时间可能需要更长时间,并且服务器处理器时间特别重要。

在一些实施例中,本文中描述的方法和过程可以绑定到一个或多个计算设备的计算系统。特别地,这样的方法和过程可以被实现为计算机应用程序或服务、应用程序编程接口(API)、库和/或其他计算机程序产品。

图6示意性地示出了可以实现上述方法和过程中的一个或多个的计算系统300的非限制性实施例。计算系统300以简化形式示出。计算系统300可以体现上面描述的并且在图1A-1B中示出的计算设备10。计算系统300可以采用一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备、和可穿戴计算设备(诸如智能手表和头戴式增强现实设备)的形式。

计算系统300包括逻辑处理器302、易失性存储器304和非易失性存储设备306。计算系统300可以可选地包括显示子系统308、输入子系统310、通信子系统312和/或图6中未示出的其他组件。

逻辑处理器302包括被配置为执行指令的一个或多个物理设备。例如,逻辑处理器可以被配置为执行作为一个或多个应用、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现以执行任务、实现数据类型、转换一个或多个组件的状态、实现技术效果或以其他方式达到期望结果。

逻辑处理器可以包括被配置为执行软件指令的一个或多个物理处理器(硬件)。另外地或替代地,逻辑处理器可以包括被配置为执行硬件实现的逻辑或固件指令的一个或多个硬件逻辑电路或固件设备。逻辑处理器302的处理器可以是单核或多核,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑处理器的个体组件可选地可以分布在两个或更多个单独的设备中,这些设备可以远程定位和/或被配置用于协调处理。逻辑处理器的各方面可以由以云计算配置而配置的远程可访问的联网计算设备来虚拟化和执行。在这种情况下,应当理解,这些虚拟化方面在各种不同机器的不同物理逻辑处理器上运行。

非易失性存储设备306包括被配置为保存由逻辑处理器可执行以实现本文中描述的方法和过程的指令的一个或多个物理设备。当这样的方法和过程被实现时,非易失性存储设备306的状态可以被转换——例如,以保存不同数据。

非易失性存储设备306可以包括可移除和/或内置的物理设备。非易失性存储设备306可以包括光学存储器(例如,CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(例如,ROM、EPROM、EEPROM、闪存等)、和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)、或其他大容量存储设备技术。非易失性存储设备306可以包括非易失性、动态、静态、读/写、只读、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。应当理解,非易失性存储设备306被配置为即使在非易失性存储设备306的电源被切断时也保存指令。

易失性存储器304可以包括具有随机存取存储器的物理设备。易失性存储器304通常由逻辑处理器302用来在软件指令的处理期间临时存储信息。应当理解,当易失性存储器304断电时,易失性存储器304通常不会继续存储指令。

逻辑处理器302、易失性存储器304和非易失性存储设备306的各方面可以一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括现场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SOC)和复杂可编程逻辑器件(CPLD)。

术语“模块”、“程序”和“引擎”可以用于描述通常由处理器以软件实现以使用易失性存储器的部分来执行特定功能的计算系统300的一方面,该功能涉及转换将处理器专门配置为执行该功能的处理。因此,模块、程序或引擎可以经由逻辑处理器302使用易失性存储器304的部分执行由非易失性存储设备306保持的指令来实例化。应当理解,不同的模块、程序和/或引擎可以是从相同的应用、服务、代码块、对象、库、例程、API、函数等实例化。同样,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块、对象、例程、API、函数等实例化。术语“模块”、“程序”和“引擎”可以包括个体或各组可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。

当被包括时,显示子系统308可以用于呈现由非易失性存储设备306保存的数据的视觉表示。视觉表示可以采用图形用户界面(GUI)的形式。由于本文中描述的方法和过程改变了由非易失性存储设备保存的数据,并且从而变换了非易失性存储设备的状态,显示子系统308的状态同样可以被变换以在视觉上表示底层数据的变化。显示子系统308可以包括使用几乎任何类型的技术的一个或多个显示设备。这种显示设备可以与逻辑处理器302、易失性存储器304和/或非易失性存储设备306组合在共享外壳中,或者这样的显示设备可以是外围显示设备。

当被包括时,输入子系统310可以包括一个或多个用户输入设备或与其接口,诸如键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,输入子系统可以包括所选择的自然用户输入(NUI)组件或与其接口。这样的组件可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外处理。示例NUI组件可以包括用于语音和/或语音识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部追踪器、眼部追踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场传感组件;和/或任何其他合适的传感器。

当被包括时,通信子系统312可以被配置为将本文中描述的各种计算设备彼此以及与其他设备通信耦合。通信子系统312可以包括与一种或多种不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络、或者有线或无线局域网或广域网(例如,通过Wi-Fi连接的HDMI)进行通信。在一些实施例中,通信子系统可以允许计算系统300经由诸如互联网等网络向和/或从其他设备发送和/或接收消息。

根据本公开的一个方面,提供了一种计算设备。该计算设备可以包括存储器,该存储器包括系统管理存储器区域。该计算设备还可以包括处理器系统,该处理器系统包括多个处理器线程。处理器系统可以被配置为暂停多个处理器线程中的一个或多个处理器线程的执行。

处理器系统还可以被配置为将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。处理器系统还可以被配置为进入系统管理模式(SMM)。处理器系统还可以被配置为确定系统管理存储器区域包括代码更新指令。处理器系统还可以被配置为基于代码更新指令执行代码更新。处理器系统还可以被配置为退出SMM。

处理器系统还可以被配置为从存储器中取回一个或多个处理器线程上下文。处理器系统还可以被配置为在不重启计算设备的情况下恢复一个或多个处理器线程的执行。

根据该方面,代码更新指令可以是用于以下操作的指令:添加或移除系统管理中断(SMI)处理程序、为存储器重新初始化存储器控制器的至少一部分、改变多线程设置、启用或禁用处理器系统的核心、或修改存储器使用模型。

根据该方面,当处理器系统在SMM中时,处理器系统可以包括被配置为分配一个或多个其他SMM线程的主控线程。

根据该方面,处理器系统还可以被配置为与SMM并发地执行一个或多个虚拟机。

根据该方面,执行代码更新可以包括修改包括多个SMI处理程序的系统管理中断(SMI)处理程序列表。执行代码更新还可以包括执行修改后的SMI处理程序列表中的多个SMI处理程序。

根据该方面,处理器系统可以被配置为至少部分通过添加、删除或重写一个或多个SMI处理程序基于代码更新指令来修改SMI处理程序列表。

根据该方面,处理器系统可以被配置为至少部分通过查询指示每个SMI处理程序在存储器中的相应位置的查找表来确定系统管理存储器区域包括代码更新指令。

根据该方面,SMI处理程序列表可以包括更新查询SMI处理程序。处理器系统可以被配置为至少部分通过执行更新查询SMI处理程序来查询查找表。

根据该方面,处理器系统还可以被配置为在修改SMI处理程序列表之后从系统管理存储器区域中删除代码更新指令。

根据该方面,SMI处理程序列表的每个SMI处理程序可以包括相应SMI处理程序元数据。

根据该方面,处理器系统可以被配置为响应于验证代码更新指令的数字签名而执行代码更新。

根据本公开的另一方面,提供了一种用于与计算设备一起使用的方法。该方法可以包括暂停由处理器系统执行的多个处理器线程中的一个或多个处理器线程的执行。该方法还可以包括将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。该方法还可以包括进入系统管理模式(SMM)。该方法还可以包括确定存储器中的系统管理存储器区域包括代码更新指令。该方法还可以包括基于代码更新指令执行代码更新。该方法还可以包括退出SMM。该方法还可以包括从存储器中取回一个或多个处理器线程上下文。该方法还可以包括在不重启计算设备的情况下恢复一个或多个处理器线程的执行。

根据该方面,代码更新指令可以是用于以下操作的指令:添加或移除系统管理中断(SMI)处理程序、重新初始化存储器的至少一部分、改变多线程设置、启用或禁用处理器系统的核心、或修改存储器使用模型。

根据该方面,该方法还可以包括使用多个处理器线程中的主控线程来分配一个或多个其他处理器线程。

根据该方面,该方法还可以包括与SMM并发地执行一个或多个虚拟机。

根据该方面,执行代码更新可以包括修改包括多个SMI处理程序的系统管理中断(SMI)处理程序列表。执行代码更新还可以包括执行修改后的SMI处理程序列表中的多个SMI处理程序。

根据该方面,确定系统管理存储器区域包括代码更新指令可以包括查询指示每个SMI处理程序在存储器中的相应位置的查找表。

根据该方面,该方法还可以包括在修改SMI处理程序列表之后从系统管理存储器区域中删除代码更新指令。

根据该方面,SMI处理程序列表的每个SMI处理程序可以包括相应SMI处理程序元数据。

根据本公开的另一方面,提供了一种用于在计算设备处执行免重启固件更新的方法。该方法可以包括将一个或多个处理器线程的一个或多个相应处理器线程上下文存储在存储器中。该方法还可以包括在不重启计算设备的情况下在存储一个或多个处理器线程上下文之后安装固件更新。

应当理解,本文中描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应当被视为限制性的,因为很多变化是可能的。本文中描述的特定例程或方法可以代表任何数目的处理策略中的一种或多种。因此,所示出和/或描述的各种动作可以按照所示出和/或描述的顺序、以其他顺序、并行执行或省略。同样,上述过程的顺序可以改变。

本公开的主题包括本文中公开的各种过程、系统和配置以及其他特征、功能、作用和/或特性的所有新颖和非很清楚的组合和子组合、以及任何及其所有等同物。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号