在块608中,计算设备102检索更新平台配置设置314的一个或多个传入请求。更新平台设置的请求可以识别特定平台配置设置以及平台配置设置的请求的新值。例如,更新设置的请求可以指定特定的模型特定寄存器、I/o寄存器或存储器地址。此外,请求可以指定关联的寄存器或地址内的特定位字段连同该位字段的请求的新值。新的平台配置设置可以启用、禁用或以其他方式配置计算设备102的平台特定的特征,例如处理器120的硬件预取器或针对存储器124的存储器交错设置。
[0058]可以以对计算设备102的固件环境302可访问的任何方式存储或传递传入请求。在一些实施例中,在块610中计算设备检索已由计算设备102在运行时创建的更新封装体。如以下描述的,计算设备102的操作系统204可以以受保护模式操作,从而使用虚拟或线性寻址模式在存储器中寻址数据。另一方面,固件环境302可以以真实模式操作,从而使用物理地址寻址存储器。为了将存储器中的数据从操作系统204传递到固件环境302,可以生成更新封装体,其包括包含传递的数据的虚拟和物理存储器地址之间的映射。例如,操作系统204可以调用UpdateCapsule () UEFI函数将数据传递到固件环境302用于处理。固件环境302可以通过查询用于引用封装体的UEFI系统表来检索和处理更新封装体。在一些实施例中,在612块中计算设备102可以与可管理性引擎134执行握手协议以检索传入请求。计算设备102可以使用定义明确的网络端口与可管理性引擎134连接。
[0059]在块614中,计算设备102验证传入请求。计算设备102可以执行任何验证程序,该任何验证程序能够检验传入请求源和/或传入请求尚未被篡改。例如,计算设备102可以验证与传入请求相关联的一个或多个数字签名。在块616中,计算设备102确定是否已成功验证传入请求。如果不是的话,方法600向前分支到块620,如下所述。如果成功验证的话,方法600推进到块618。
[0060]在块618中,计算设备102基于传入请求更新平台配置设置314。计算设备102可以设置用于模型特定寄存器、I/O寄存器、存储器地址的适当值,或执行如由传入请求指定的其他配置操作。
[0061]在块620中,计算设备102导出当前平台配置设置314到引导目标。导出当前设置允许操作系统204在引导完成后并且在引导服务已被终止后访问平台配置设置314。这样的配置设置在引导后可能对于操作系统204不可访问,除非由固件环境302导出。为了执行导出,计算设备102可以使信息可用在UEFI系统表中、在非易失性平台变量中、在数据存储设备126中或使用可用于操作系统204的任何其他通信方法。
[0062]在块622中,计算设备102发起操作系统204。计算设备102可以从依照UEFI规范的许多可用引导目标来选择适当引导目标。某些平台配置设置314在加载操作系统204之后可能变得锁定、只读、或以其他方式不可配置。在加载操作系统204之后,方法600推进到块624,如图6B中图示的。
[0063]在块624中,计算设备102基于从固件环境302导出的平台配置设置314来确定计算设备102的平台配置是否是次优的。换言之,计算设备102确定是否可以改变计算设备102的配置设置,以改进计算设备102的性能。为了确定计算设备102是否被次优配置,计算设备102可以将配置设置与一组已知的配置设置进行比较。此外或者可替换地,在一些实施例中,计算设备102可以在块626中将操作特性与预定义阈值进行比较。计算设备102可以在操作期间通过测量或以其他方式剖析平台性能来确定操作特性。由计算设备102使用的(一个或多个)特定操作特性可以被体现为计算设备102的(一个或多个)任何操作特性,其指示计算设备102的操作性能。例如,计算设备102可以在操作期间测量存储器延迟和/或带宽。平台配置是否次优的确定可以由操作系统204中常驻的代理执行,例如由操作系统驱动程序执行。
[0064]在一些实施例中,在块628中,计算设备102传输导出的平台配置设置314到管理服务器104。在这样的实施例中,管理服务器104可以做出是否次优配置平台的确定,如以下结合图7描述的那样。计算设备102可以使用由处理器120执行的操作系统代理或应用程序传输配置设置。此外或者可替换地,在一些实施例中,可以使用可管理性引擎134的带外网络通信能力来传输配置设置。即,可以通过可管理性引擎134传输配置设置,而与任何操作系统204或由处理器120执行的应用程序的状态无关。
[0065]在块630中,计算设备102确定平台配置是否是次优。如果不是的话(S卩,如果平台配置是最佳的或计算设备102尚未识别配置为次优),则方法600循环回到块624以继续监控平台配置。以该方式,计算设备102可以适配于改变条件,并确保计算设备102保持最佳配置。如果计算设备102已被确定为次优,则方法600推进到块632。
[0066]在块632中,计算设备102确定新的配置设置,以使平台配置更加优化。新的配置设置可以包括针对模型特定寄存器、I/O寄存器、存储器地址的新值或针对计算设备102的任何其他配置设置。在一些实施例中,配置设置可以对应于寄存器或存储器位置内的特定位字段。新的配置设置中的每个可以对应于由固件环境302导出的平台配置设置314。在一些实施例中,在块634中计算设备102可以基于一个或多个配置改变策略316确定新的配置设置。配置改变策略316可以被体现为基于特定性能问题定义新的配置设置的一组规则。例如,配置改变策略可以指示应该启用硬件预取器,以改进存储器带宽和/或延迟。此外或者可替换地,配置改变策略316可以被体现为已知要适合于特定硬件部件和/或硬件部件的组合的一组平台配置设置314。
[0067]在块636中,计算设备102确定是否可以在运行时改变配置设置。某些低级配置设置(例如,存储器交错)仅可以在引导期间通过固件环境302来配置。计算设备102可以维持运行时能够的平台配置设置314以及运行时不能够的那些平台配置设置314的列表。在块634中,如果改变不是运行时能够的,则方法600分支到块642,如下所述。如果改变是运行时能够的,则方法600推进到块640。
[0068]在640块中,计算设备102在运行时改变平台配置设置314。配置改变可以基本上立即发生,或可以被安排在方便时间。为了执行配置改变,计算设备102可以设置用于模型特定寄存器、I/O寄存器、存储器地址的适当值或执行如块632中确定的其他配置操作。在改变平台配置之后,方法600循环回到块624,以针对次优平台配置继续监控。
[0069]参考回到块638,如果改变不是运行时能够的,则方法600分支到块642。在块642中,计算设备102生成针对新的配置设置的一个或多个配置指令。如以上描述的,可以由固件环境302解释或执行每个配置指令,以便在引导期间改变平台配置设置314。
[0070]在块644中,计算设备102将配置指令安全地传递到固件环境302。在一些实施例中,计算设备102可以对配置指令进行数字签名,从而允许固件环境302来检验配置指令源。在一些实施例中,计算设备102也可以使用安全或加密的信道传送配置指令到固件环境302。在一些实施例中,在块646中计算设备102可以产生包括配置指令的更新封装体。如以上描述的,更新封装体可以被体现为在受保护模式虚拟存储器中存储的数据块。配置指令可以使用通过固件环境302和/或配置模块304可读的任何格式被存储在更新封装体内。在一些实施例中,在块648中计算设备102可以将更新封装体传递到固件环境302。如以上描述的,为了从操作系统204传递存储器中的数据到固件环境302,可以生成由操作系统204使用的虚拟存储器地址到由固件环境302使用的物理地址之间的映射。例如,UpdateCapSule()UEFI函数可以用于将更新封装体和存储器映射传递到固件环境302用于处理。
[0071]在块650中,在一些实施例中计算设备102可以使用可管理性引擎134从管理服务器104接收配置指令。管理服务器104可以对配置指令进行数字签名和/或加密,从而允许计算设备102来验证配置指令。可管理性引擎134可以在握手协议期间存储配置指令直到通过固件环境302查询,如以上描述的那样。此外,虽然被图示为在方法600期间被执行,但是可管理性引擎134能够进行带外网络通信,从而允许从管理服务器104接收配置指令,而与处理器120或操作系统204的状态无关。因此,可管理性引擎134可以在任何时间从管理服务器104接收配置指令并且存储配置指令直到需要为止。
[0072]在块652中,重置计算设备102。计算设备102可以使用标准接口(诸如ResetSystemO UEFI函数)或高级配置和电源接口( “ACPI”)重置命令来重置自身。在一些实施例中,例如当配置指令要作为更新封装体被传递到固件环境302时,计算设备102可以执行热复位,其不清除存储器的内容。在一些实施例中,例如当已经从管理服务器104通过可管理性引擎134接收配置指令时,计算设备102可以被用户重置。在重置后,方法600循环回到在图6A中示出的块602,以根据配置指令重新初始化平台和更新配置设置。
[0073]现在参考图7,在使用中,管理服务器104可以执行用于平台配置的方法700。方法700以块702开始,在块702中管理服务器104从计算设备102接收导出的平台配置设置314。如以上描述的,导出的平台配置设置314由计算设备的固件环境302生成,并且可以由计算设备102的操作系统204或由计算设备102的可管理性引擎134传输。虽然被图示为从单个计算设备102接收配置设置,但是在许多实施例中管理服务器104可以接收针对许多计算设备102(例如,针对通过组织使用的计算设备102的所有)的配置设置。
[0074]在块704中,管理服务器104基于导出的平台配置设置314确定计算设备102的平台配置是否次优。为了确定平台是否被次优配置,管理服务器104可以将配置设置与一组已知的配置设置进行比较。在一些实施例中,在块706中,管理服务器104可以将计算设备102的操作特性与预定义阈值进行比较。为了确定操作特性,管理服务器104可以从计算设备102接收测量或剖析信息。通过监控许多计算设备102,管理服务器104可能能够检测常见的错误配置。在块708中,管理服务器104确定平台配置是否是次优。如果不是的话,方法700循环回到块702,以继续监控计算设备102。如果平台配置是次优,则方法700推进到块710。
[0075]在块710中,管理服务器104确定新的配置设置,以使计算设备102的平台配置更加优化。新的配置设置可以包括针对模型特定寄存器、I/O寄存器、存储器地址的新值或特定于计算设备102的任何其他配置设置。在一些实施例中,配置设置可以对应于寄存器或存储器位置内的特定位字段。新的配置设置中的每个可以对应于由固件环境302导出的平台配置设置314。在一些实施例中,在块712中管理服务器104可以基于一个或多个配置改变策略316确定新的配置设置。如以上描述的,配置改变策略316可以被体现为基于特定性能问题定义新的配置设置的一组规则。例如,配置改变策略可以指示应该启用硬件预取器,以改进存储器带宽和/或延迟。此外或者可替换地,配置改变策略316可以被体现为已知要适合于特定硬件部件和/或硬件部件的组合的一组平台配置设置314。
[0076]在块714中,管理服务器104生成用于新的配置设置的一个