首页> 中国专利> 保持早期硬件配置状态

保持早期硬件配置状态

摘要

本发明公开了保持早期硬件配置状态。处理器包括锁定指示符,当锁定指示符被设置时,防止在引导了操作系统之后发生微码更新。还描述了其他实施例并且对这些其他实施例要求权利。

著录项

  • 公开/公告号CN101145107A

    专利类型发明专利

  • 公开/公告日2008-03-19

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200710126426.1

  • 发明设计人 V·齐默;G·高德;

    申请日2007-06-07

  • 分类号G06F9/445;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人曾祥夌

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 19:54:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-30

    未缴年费专利权终止 IPC(主分类):G06F9/445 授权公告日:20120822 终止日期:20130607 申请日:20070607

    专利权的终止

  • 2012-08-22

    授权

    授权

  • 2008-05-14

    实质审查的生效

    实质审查的生效

  • 2008-03-19

    公开

    公开

说明书

技术领域

本公开一般涉及信息处理系统,更具体地说涉及计算机系统的引导处理。

背景技术

在计算机系统能够运行之前,它必须在其存储器中具有操作系统(OS),以使计算机的资源能够到达并由例如多种应用程序的其他软件进行控制。计算机硬件具有非易失性且相对简单的自举程序来执行引导序列并从磁盘加载操作系统。通常自举程序由BIOS(基本输入/输出系统)程序来调用。

虽然计算机系统的大多数硬件由计算机供应商提供,但是BIOS通常是由第三方供应商提供的,所以计算机供应商对这些项目的具体内容所知有限以及对它们的控制也是有限的。然而,计算机供应商可能注意到引导过程期间应该加载的微码补丁。

就微码补丁而言,CISC(复杂指令集计算机)计算机处理器执行一系列操作,其中以微码的形式将定义一些更复杂的操作的微指令编码到非易失性存储区中。微码定义处理器的所有或部分可执行指令集,并且还可以定义不采用软件可访问代码实现的内部操作。微码通常在制造处理器时被置于处理器内的只读存储器(ROM)中。然而,有时在制造处理器之后甚至已经将处理器投入使用之后,需要修改微码。微码补丁通过添加附加的微指令或插入新的微指令来取代原有微指令来使此类修改得以实现。

可以采用多种方式将微码补丁递送到处理器。递送补丁的一种方式是:处理器可以支持微码ROM存储装置的可现场升级机制,该机制称为微码更新。微码更新支持的微码补丁能够在现场对微码ROM进行更改,以便寻址勘误表等。

一些第三方供应商并不愿意支持这种微码更新机制。这是因为微码更新机制允许在计算机系统(包括BIOS代码)通过第三方供应商验证之后经由接口将补丁加载到操作系统。用户或IT部门能够在第三方供应商验证并交付系统之后使用微码更新机制加载补丁可能导致针对从第三方供应商工厂交付的平台状态的稳定性、质量和验证问题。即,后续补丁可能消除系统的验证,导致先前通过验证的系统的质量问题,从而对已验证该系统的第三方供应商造成不良的评价。因此,至少一些第三方平台供应商宁愿将所有补丁集成到已利用所有微码补丁更新的BIOS中,验证该系统,并确认此后操作系统无法加载任何将来的微码补丁。

发明内容

根据本发明的一方面,本发明涉及一种系统,所述系统包括:

处理器,所述处理器具有微码并且还具有用于存储锁定指示符值的专用存储位置;

耦合到所述处理器的存储器,所述存储器用于存储引导指令,其中所述引导指令包括用于在引导操作系统之前将所述锁定指示符值设置为第一值的锁定命令;

所述处理器还包括用于在所述锁定指示符与所述第一值匹配的情况下防止所述微码的更新的逻辑;以及

所述逻辑还用于在所述锁定指示符与第二值匹配的情况下允许所述微码的更新。

根据本发明的又一方面,本发明涉及一种方法,所述方法包括:

在引导操作系统之前将一个或多个微码补丁加载到闪速存储器中;以及

在引导所述操作系统之前设置锁定指示符,以防止在所述操作系统的所述引导之后发生任何微码更新。

根据本发明的另一方面,本发明涉及一种产品,所述产品包括:

有形存储介质,所述有形存储介质具有多个机器可访问指令;

其中,当所述指令被处理器执行时,所述指令用于:

在引导操作系统之前将一个或多个微码补丁加载到闪速存储器中;以及

在引导所述操作系统之前设置锁定指示符,以防止在所述操作系统的所述引导之后发生任何微码更新。

附图说明

可以参考如下附图来理解本发明的实施例,附图中相似的编号指示相似的部件。这些附图无意构成限制,而是用于说明用于禁用微码补丁的现场更新以便维持早期硬件配置状态的系统、方法和机制的所选实施例。

图1是说明用于加载操作系统之后防止后续微码更新的方法的至少一个实施例的流程图。

图2是说明用于执行微码更新的锁定以便保留早期硬件配置状态的电路的至少一个实施例的框图。

图3是根据包括多节点总线通信路径的本发明实施例的多处理器系统的框图。

图4是根据包括点到点互连的本发明实施例的多处理器系统的框图。

具体实施方式

下文论述描述用于禁用微码补丁以便维持早期硬件配置状态的系统、方法和机制的所选实施例。本文描述的这些设备、系统和方法实施例可以结合单核或多核系统来利用。在下文描述中,提出了诸如处理器类型、引导处理、多线程环境、系统配置以及电路布局的许多特定细节以便提供对本发明实施例的更透彻的理解。然而将认识到,对于本领域人员来说,本发明也可以在没有这些特定细节的情况下实施。此外,未详细示出一些公知的结构、电路等,以避免妨碍对本发明的理解。

图1是说明用于加载操作系统之后防止后续微码更新的方法100的至少一个实施例的流程图。对于至少一个实施例,该方法可以由例如图3和4中的实施例所示的处理系统300、400来执行。

图1示出方法100的处理开始于框102,其中重启计算机系统。也就是说,在许多通用处理系统中,通过某种类型的重启功能开始引导过程。这可以是冷重启(对硬件的供电最初是关闭的)、热重启(已经对硬件供电)或多种其他启动情况的其中之一。离开睡眠或休眠状态的转变可以是热重启。

复位功能通常将硬件复位到已知状态并生成复位中断,该复位中断将系统引导到非易失性存储器中的程序,并从此点开始执行。对于至少一个实施例,在复位102期间从例如模型专用寄存器的硬件寄存器(下文论述的)清除先前内容。

图1示出响应系统复位事件102分派复位向量103。在框104,复位向量103使基本输入-输出系统(BIOS)程序(通常存储在闪速存储器中)被调用。

图1示出在框104启动BIOS程序,BIOS程序使基本输入输出(10)控制得以实现。通常,BIOS没有关于操作系统所需的环境的任何信息,因此除了将硬件置于已知状态之外它对于初始化系统并没有做什么。在框104,BIOS代码执行诸如初始化存储器、检测所有系统CUP和初始化I/O孔(I/O aperture)等的典型启动功能。

就CPU的检测而言,对于至少一个实施例,对包括多个CPU的芯片多处理器(CMP)系统执行方法100。在框104检测这些CPU的每个CPU。如果对具有单个CPU的系统执行方法100,则在框104检测该单个CPU。

就I/O孔而言,框104处的此类初始化可以包括确定I/O通信路径(例如PCI总线)正在正常地响应、初始化芯片组等。在框104处,BIOS还可以执行其他附加处理,例如加载已集成到BIOS代码中的任何微码补丁。

从框104,处理进行到框106。在框106,BIOS代码确定第三方供应商是否已指示应该禁用引导后微码更新。如果情况如此,则处理进行到框108。否则,处理进行到框110。

对于至少一个实施例,如果BIOS代码遇到“锁定”命令(directive),则在框106处评估为“真”。对于至少一个实施例,预期第三方供应商已将锁定命令置于BIOS代码中。锁定命令可以是例如用于将特定值写入到例如寄存器或存储器变量的特定存储位置的写指令。该命令可以是体系结构指令,例如写MSR(WRMSR)指令。或者,该命令可以是过程调用,例如下文论述的对PAL_PROC_DISABLE_PAL_UPDATE过程的调用。

锁定命令所写的值指示将禁用后续微码更新。该值称为锁定指示符。

在框108中,禁用后续微码更新。例如可以通过将特定值写入指定为存储锁定指示符的专用寄存器或存储器位置或变量来实现此目的。可以通过前面段中涉及的锁定命令的BIOS执行来执行禁用108。如上文所指示的,锁定命令可以是体系结构指令或可以是对过程或函数的调用。

对于至少一个实施例,在框108通过执行在模型专用寄存器(MSR)中设置位的指令来禁用后续微码更新。如本文使用的,术语模型专用寄存器(MSR)旨在表示为特定处理器或处理器组定义的实现专用的寄存器组的其中一个寄存器。关于MSR的更多信息可以参阅IA-32 Intel Architecture Software Developer′s Manual第3卷:System Programming Guide,2002(系统编程指南,2002)的第9.4节和附录B。

可以利用任何模型专用寄存器中的任何其他未使用(例如“保留的”)位来实现此目的。对于至少一个实施例,例如可以利用IA32处理器的MSR MSR#17h的位零来实现此目的。可以将该位视为一次写入锁定位,当设置该位时,防止处理器接受微码更新。

用来保存此锁定位的寄存器不一定是MSR。可以在专用于存储锁定指示符的任何寄存器、存储器位置、变量或其他存储位置中保存锁定指示符。为了简明,下文将锁定位称为保存在“锁定寄存器”中。从框108,处理进行到框110。

在框110中,完成BIOS处理,并且引导操作系统。对于至少一个实施例,BIOS在框110转移到选项ROM以启用在该特定系统中活动的选项,然后转移回到BIOS程序以完成初始化并将OS从磁盘加载到主存储器中。

处理从框110进行到框112。在框112引导了OS之后,执行常规系统处理。在框112,确定在常规系统处理期间是否期望引导后微码更新。此判定可以在接收到例如基于INT15h的接口信号的信号时评估为“真”,该信号指示例如驱动程序的软件正在尝试请求微码更新。关于基于INT15h的接口的更多信息可以参阅IA-32 IntelArchitecture Software Developer′s Manual第3卷:System ProgrammingGuide,2002(系统编程指南,2002)的第9.11.4.4节以及下列等。

如果框112处的判定评估为真,则处理进行到框114。否则,在框130继续常规系统处理。

在框114中,查询锁定寄存器以确定是否已设置了一次写锁定位。如果已设置了一次写锁定位,则不执行微码更新,并且失败115。可以记录该失败或者该失败可以是无记载失败。对于记录的失败,可以在处理器的状态寄存器(未示出)中设置失败位。处理然后进行到框130,其中继续常规系统处理。

相反,如果在框114确定未设置一次写锁定值,则在框116执行引导后微码更新。框116处的处理可以包括在加载补丁之前对补丁的验证。处理然后进行到框130,其中继续常规系统处理。

虽然结合图1描述的实施例假定响应基于INT15h的接口信号而执行引导后微码更新,但是本发明并不局限于此。其他实施例可以采用不同方式执行微码更新,例如UEFI(www.uefi.org)Update Capsule运行时接口。本领域技术人员将认识到:执行图1提出的功能的类似处理可以为这些其他实施例执行。

对于至少一个备选实施例,该方法100可以在利用处理器抽象层(PAL)执行现场补丁更新的系统上执行。PAL层可以提供对软件“隐藏”硬件MSR的抽象层。关于PAL的更多描述可以参阅IntelItaniumArchitecture Software Developer′s Manual第2卷:SystemArchitecture,Rev.2.1,October 2002(系统体系结构版本2.1,2002年10月)。对于此类实施例,方法100禁止的引导后补丁不是对微码的补丁,而是对例如PAL-A//B组件的宏代码的补丁。此类实施例可以应用于例如可从英特尔公司获得的基于Itanium或Itanium2处理器的系统。

对于此类备选实施例,在框108锁定补丁的机制可以不包括对MSR寄存器的直接写入。相反,可以响应受信的PAL调用来执行框108处的锁定。例如,可以利用称为PAL_PROC_DISABLE_PAL_UPDATE的新PAL过程来更改处理器的硬件状态,以便禁用通过PAL的后续微码更新。对于至少一个实施例,PAL_PROC_DISABLE_PAL_UPDATE过程可以具有77的索引(例如自变量0的值是索引77),并且可以是以物理模式可调用的。

图2是说明用于执行微码更新的锁定以便保留早期硬件配置状态的逻辑200的至少一个实施例的框图。这里参考图1来描述图2。

图2图示上文结合框108论述的锁定寄存器202的实施例。如上文论述,锁定寄存器202可以是为保存锁定指示符204而分配的任何寄存器或存储器存储空间。对于至少一个实施例,锁定指示符是单个位204。锁定指示符位204可以是模型专用寄存器、例如可从Intel公司获得的某些处理器的MSR#17h(IA31-Platform_ID)的指定位,。软件可以经由电路200的第一实施例的写MSR指令直接写该位。对于逻辑200的另一个实施例,例如为利用PAL的系统实施的那个实施例,例如上文论述的PAL_PROC_DISABLE_PAL_UPDATE过程的函数或过程可以写锁定指示符位。

图2图示可以作为对AND门208的输入提供锁定位的值。对于至少一个实施例,在将该值作为对AND门208的输入提供之前经由反相器206将该值反转。图2中所示的AND门208仅仅是可以生成补丁启用信号的逻辑部件的一个实施例。还可以利用任何其他逻辑、包括逻辑门、固件或软件来实现图2中的AND门208所表示的功能。AND门208所示的逻辑功能一般可以称为“补丁启用逻辑”。

图2图示对AND门208的另一个输入是触发值214,该触发值214指示期望引导后微码更新,如上文结合图1的框112论述的。可以由例如被写入时使微码补丁得以加载的MSR或其他寄存器提供触发值214。可以作为根据基于Int15h的接口的通信的结果设置触发值214,基于Int15h的接口是允许微码更新动态地添加到系统闪速存储器的BIOS接口。如上文所指示的,INT15h接口的进一步论述可以参阅IA-32IntelArchitecture Software Developer′s Manual第III卷的第9.11.4.4章以及下列等。

图2图示如果设置了锁定位204,则可以不考虑触发值214。然而,如果触发值214和锁定位204都为真,则AND门208产生“真”补丁启用信号211,“真”补丁启用信号211允许微码更新逻辑212从指定的BIOS暂存存储器将期望的补丁210加载到系统的闪速存储器中。

图3中示出闪速存储器350,图3是能够执行所公开的技术的系统300的第一实施例的框图。系统300可以包括一个或多个处理器370、380,它们耦合到北桥390。图3中虚线表示了附加处理器380的可选特性。

第一处理器370和任何其他处理器380(以及更确切地其中的核)可以包括根据本发明实施例的补丁防止逻辑200(参见图2的200)。

北桥390可以是芯片组或芯片组的一部分。北桥390可以与处理器370、380通信,并控制处理器370、380与存储器332之间的交互。北桥390还可以控制处理器370、380与加速图形端口(AGP)活动之间的交互。对于至少一个实施例,北桥390经由多节点总线(例如前端总线(FSB)395)与处理器370、380通信。

图3图示北桥390可以耦合到称为南桥318的另一个芯片组或芯片组的一部分。对于至少一个实施例,南桥318处理系统300的输入/输出(I/O)功能,从而控制与输入/输出组件的交互。在一个实施例中,可以将多种装置耦合到南桥318,包括例如键盘和/或鼠标322、通信装置326和可以包含代码BIOS代码355的闪速存储器350。而且,还可以将音频I/O324耦合到南桥318,如可以将其他I/O装置314耦合到南桥318那样。

可以采用许多不同系统类型实现实施例。现在参考图4,其中示出根据本发明实施例的多处理器系统的框图。如图4所示,多处理器系统是点到点互连系统,并且包括经由点到点互连450耦合的第一处理器470和第二处理器480。如图4所示,处理器470和480的每个处理器都可以是多核处理器,包括第一和第二处理器核(即处理器核474a和474b和处理器核484a和484b)。虽然为易于说明而未示出,但是第一处理器470和第二处理器480(以及更确切地其中的核)可以包括根据本发明实施例的补丁防止逻辑(参见图2的200)。

不具有上文结合图3示出的北桥和南桥,图4所示的系统400而是可以具有集线器体系结构。集线器体系结构可以包括集成到每个处理器470、480的集成的存储器控制器集线器Memory ControllerHub(MCH)472、482。芯片组490可以提供对图形和AGP的控制。

因此,第一处理器470还包括存储器控制器集线器(MCH)472和点到点(P-P)接口476和478。相似地,第二处理器480包括MCH482和P-P接口486和488。如图4所示,MCH472和482将处理器耦合到相应存储器、即存储器432和存储器434,它们可以是本地连接到相应处理器的主存储器的一部分。

虽然在图4中示出为集成到处理器470、480中,但是存储器控制器集线器472、482无需一定如此集成。对于至少一个备选实施例,MCH472和482的逻辑可以分别对于处理器470、480是外部的。对于对于此类实施例,可以将实施MCH472和482的逻辑的一个或多个存储器控制器分别耦合在处理器470、480和存储器432、434之间。对于此类实施例,例如存储器控制器可以是单独的逻辑或者可以集成到芯片组490中。

可以经由P-P互连452和454分别将第一处理器470和第二处理器480耦合到芯片组490。如图4所示,芯片组490包括P-P接口494和498。而且,芯片组490还包括将芯片组490与高性能图形引擎438耦合的接口492。在一个实施例中,可以使用高级图形端口(AGP)总线439将图形引擎438耦合到芯片组490。AGP总线439可以符合加州圣他克拉拉的英特尔公司在1998年5月4日发布的加速图形端口接口规范版本2.0(Accelerated Graphics Port InterfaceSpecification,Revision2.0)。或者点到点互连439可以耦合这些组件。

然后可以经由接口496将芯片组490耦合到第一总线416。在一个实施例中,第一总线416可以是1995年6月提交的PCI本地总线规范,生产版本,发行版2.1(PCI Local Bus Specification,ProductionVersion,Revision2.1)定义的外设互连(PCI)总线,或诸如PCI Express总线的总线或另外的第三代输入/输出(I/O)互连总线,虽然本发明的范围并不局限于此。

如图4所示,可以将多种I/O装置414耦合到第一总线416,以及将第一总线416耦合到第二总线420的总线桥418。在一个实施例中,第二总线420可以是低引脚数(LPC)总线。可以将多种装置耦合到第二总线420,在一个实施例中包括例如键盘/鼠标422、通信装置426和可以包含代码430的数据存储单元428。而且,还可以将音频I/O424耦合到第二总线420。注意其他体系结构也是可能的。例如,不实现图4的点到点体系结构,系统而是可以实现多节点总线或另一种此类体系结构。

可以在硬件、软件、固件或此类实现方式的组合中实现本文公开的机制的实施例。本发明的实施例可以实现为可编程系统上执行的计算机程序,该可编程系统包括至少一个处理器、数据存储系统(包括易失性和非易失性存储器和/或存储部件)、至少一个输入装置和至少一个输出装置。

可以将程序代码应用于输入数据以执行本文描述的功能并生成输出信息。因此,本发明的备选实施例还包括机器可访问介质,该机器可访问介质包含用于执行本发明的操作的指令或包含定义本文描述的结构、电路、设备、处理器和/或系统特征的设计数据(例如HDL)。此类实施例也可以称为程序产品。

此类机器可访问介质可以包括但不限于机器或装置制造或形成的有形粒子布置,包括诸如硬盘的存储介质、包括软盘、光盘、压缩光盘只读存储器(CD-ROM)、压缩光盘可写(CD-RW)和磁光盘的任何其他类型的盘、诸如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦写可编程只读存储器(EPROM)、闪速存储器、电可擦写可编程只读存储器(EEPROM)的半导体装置、磁卡或光卡、或者适用于存储电子指令的任何其他类型的介质。

可以采用公知的方式将该输出信息应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器的处理器的任何系统。

可以采用高级过程或面向对象的编程语言来实现这些程序以与处理系统通信。如果期望的话,还可以采用汇编或机器语言来实现这些程序。事实上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况中,该语言可以是编译或解释的语言。

虽然示出和描述了本发明的具体实施例,但是对于本领域技术人员来说,显然在不背离所附权利要求的范围的前提下可以进行更改和修改。例如,用于防止微码的引导后更新的前述机制可以等效地适用于用于更新不限于存储在闪速存储器中的微码的其他类型的代码的其他实施例中。对于一个此类备选实施例,例如可以利用本文描述的机制和方法来防止其他类型的代码补丁的引导后加载,其他类型的代码补丁包括宏代码或编码在主指令集中的指令的集合。

因此,本领域技术人员将认识到在更广的方面在不背离本发明的前提下可以进行更改和修改。所附权利要求将落在本发明真正范围内的所有此类更改和修改涵盖在其范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号