首页> 中国专利> 在基本输入/输出系统的多个阶段中操作的方法和设备

在基本输入/输出系统的多个阶段中操作的方法和设备

摘要

描述了在基本输入/输出系统(BIOS)的多个阶段中操作的方法和设备。在一个示例方法中,一个初始化驱动程序从一个初始化库中获取与BIOS的多个阶段相关联的资源以初始化一个平台。根据这些资源,初始化驱动程序在BIOS的第一阶段和第二阶段被执行。

著录项

  • 公开/公告号CN1542606A

    专利类型发明专利

  • 公开/公告日2004-11-03

    原文格式PDF

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

    申请/专利号CN03156080.6

  • 发明设计人 陈乐翀;汪磊;马翔;

    申请日2003-08-29

  • 分类号G06F9/06;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人李辉

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 15:39:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-10-19

    未缴年费专利权终止 IPC(主分类):G06F9/06 授权公告日:20060614 终止日期:20150829 申请日:20030829

    专利权的终止

  • 2006-06-14

    授权

    授权

  • 2005-01-05

    实质审查的生效

    实质审查的生效

  • 2004-11-03

    公开

    公开

说明书

技术领域

本发明总体上涉及固件,尤其是涉及在基本输入/输出系统(BIOS)的多个阶段中操作的方法和设备。

背景技术

紧随电源开启或者重启之后的计算机或者处理器系统操作的初始阶段(即,在处理器系统引导操作系统之前),是由基本输入/输出系统(BIOS)来控制的。通常,BIOS被实现为形式为机器可读指令的软件或固件,这些指令存储在与处理器耦合的非易失存储器中。在重启操作或者对处理器进行加电之后,处理器就会执行BIOS指令。典型情况下,在引导操作系统前,BIOS将完成一个或多个硬件和软件的配置和测试工作。由BIOS完成的配置工作负责建立与处理器系统相关联的硬件设备(例如,磁盘驱动器、视频控制器、键盘、鼠标,等)和由处理器系统执行的操作系统之间进行交互的方式。测试工作收集后面可能要用到的系统配置信息,例如,操作系统可用收集到的系统配置信息来确定与系统关联的硬件或设备已准备就绪,以及便利于调试工作、配置管理工作等的进行。

附图说明

图1是一个示例处理器系统的框图。

图2是图1中所示的示例处理器系统的示例体系架构层次的典型框图。

图3是可以在BIOS的多个阶段中运行的示例机器可读指令的典型流程图。

图4是可以在BIOS的多个阶段中运行的可选的另一种机器可读指令的典型流程图。

具体实施方式

尽管以下内容揭示的是除去其他组件之外,包括在硬件上执行的软件的示例系统,需要明白的是,这样的系统仅仅是说明性的,不应看作对本发明的限制。例如,可以预期,所揭示的硬件、软件与(或)固件组件中的任何一个或者全部都可以只用专用硬件来实现,也可以只用软件来实现,还可以只用固件来实现,或者用硬件、软件和(或)固件的某种结合来实现。

为了辅助BIOS管理数据流,采用一个可扩展固件接口(EFI)来定义一个操作系统和平台固件之间的接口。EFI由包含平台相关信息的数据表组成。EFI还包括可用于操作系统的引导和运行时服务调用。这样,EFI就为操作系统的引导和预引导应用程序的运行提供了一个标准的环境。与EFI有关的其他信息可从http://developer.intel.com/technology/efi获取。

基于EFI的BIOS将以分阶段模式来初始化一个平台(即,包括硬件和操作系统在内的计算机或者处理器系统)。运行在个人计算机上的Windows XP就是一个平台的例子。基于EFI的BIOS分两个阶段来初始化该平台:预EFI初始化(PEI)阶段和驱动程序执行环境(DXE)阶段。在PEI阶段,PEI模块(PEIM)用能够启动DXE阶段的最少资源来配置平台。由PEI进行的配置完成之后,DXE驱动程序使用DXE服务来配置平台进入最终的预引导状态。例如,在一个拥有1吉字节(GB)存储器的平台上的存储器初始化过程中,可将存储器PEIM配置为初始化256兆字节(MB),这些存储器对于启动DXE阶段已经足够。因此,可以在引导操作系统前的DXE阶段,配置存储器DXE驱动程序以启用剩余的存储器(即,744MB)。

通常,PEIM和DXE驱动程序是由不同厂商生产的。而且,PEIM和DXE驱动程序提供了不同的服务并且在不同的执行环境(例如,不同的BIOS阶段)中运行。结果,PEIM和DXE驱动程序彼此不兼容,许多模块和驱动程序需要在不同BIOS阶段中运行。

图1是适于实现这里所揭示的方法和设备的一个示例处理器系统100的框图。处理器系统100可能是台式计算机、膝上型计算机、笔记本计算机、个人数字助理(PDA)、服务器、互联网设备,或者任何其他类型的计算设备。

图1中所示的处理器系统100包括一个芯片集110,该芯片集包括一个存储器控制器112和一个输入/输出(I/O)控制器114。众所周知,芯片集通常提供存储器和I/O管理功能,并且还有许多通用和(或)专用寄存器、定时器等,这些组件可由处理器120访问或者使用。处理器120采用一个或多个顺序处理器(In-order processor)来实现。例如,处理器120可以用一个或多个IntelPentium系列微处理器、IntelItanium系列微处理器和(或)IntelXScale系列处理器来实现。作为选择,其他处理器或者其他系列处理器也可用来实现处理器120。

与传统上一样,存储器控制器112使处理器120可以通过总线140来访问主存储器130(包括易失存储器132和非易失存储器134)并与之通信。易失存储器132可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM),以及(或)任何其他类型的随机存取存储器件来实现。非易失存储器134可以采用闪存、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),以及(或)任何其他希望类型的存储器件来实现。

处理器系统100还包括一个与总线140耦联的常规接口电路150。接口电路150可以采用任何公知类型的接口标准(诸如以太网接口、通用串行总线(USB)、第三代输入/输出接口(3GIO),以及(或)任何其他合适的接口类型)来实现。

一个或多个输入设备160与接口电路150相连接。输入设备160使用户可以将数据和命令输入到处理器120中。举例来说,输入设备160可以由键盘、鼠标、触摸屏显示器、跟踪板、跟踪球,isopoint,以及(或)语音识别系统来实现。

一个或多个输出设备170也与接口电路150相连接。举例来说,输出电路170可以由显示设备(例如,发光二极管显示器(LED)、液晶显示器(LCD)、阴极射线管(CRT)显示器、打印机,以及(或)扬声器)来实现。因此,除去其他东西,接口电路150通常还包括一个图形驱动器卡。

处理器系统100还包括一个或多个大容量存储设备180,用以存储软件和数据。这样的大容量存储设备180包括软盘及其驱动器、硬盘驱动器、光盘及其驱动器、数字视频光盘(DVD)及其驱动器等。

接口电路150还有一个诸如调制解调器或者网络接口卡之类的通信设备,用于方便和外部计算机通过网络来交换数据。处理器系统100和网络之间的通信链路可以是任何类型的网络连接,比如:以太网连接、数字用户线(DSL)、电话线、蜂窝电话系统、同轴电缆等。

对输入设备160、输出设备170、大容量存储设备180和(或)网络的访问,通常由I/O控制器114以常规方式来控制。特别是,I/O控制器114将执行一定功能以使处理器120可以通过总线140和接口电路150与输入设备160、输出设备170、大容量存储设备180以及(或)网络进行通信。

尽管图1中所示的组件被描述为处理器系统100内的分立功能模块,由其中一些模块执行的功能却可以集成在一个单一的半导体电路中,或者可用两个或以上分立集成电路来实现。例如,尽管存储器控制器112和I/O控制器114被描述为芯片集110内的分立功能模块,本领域内具有普通技术水准的人易知,存储器控制器112和I/O控制器114可以集成在一个单一的半导体电路中。

在图2的示例中,所示的处理器系统100的体系架构层次200包括硬件210、一个BIOS 220、一个可扩展固件接口(EFI)230、一个操作系统(OS)加载器240,以及一个操作系统(OS)250。

本领域内具有普通技术水准的人易知,硬件210可以包括处理器系统100的任何物理形态,诸如处理器120和主存储器130。硬件210还包括接口电路150、输入设备160、输出设备170,以及(或)大容量存储设备180。基本上,硬件210可以是图1中所示的组件的任意一个或者全部。BIOS 220可以用常规方式实现为配置来引导(即,启动)处理器系统100的软件、固件或机器可读指令。为了引导操作系统250(例如,Microsoft Windows)并运行预引导应用程序,BIOS 220通过EFI 230来管理OS加载器240和计算机系统100的硬件210之间的数据流。

在图2的示例中,BIOS 220包括一个EFI组合库(ECL)260和一个EFI组合驱动程序(ECD)270。举例来说,ECL 260可以是一个静态链接库,配置它来执行多种操作,例如输入/输出(I/O),存储器、外围组件互连(PCI)访问,特殊中央处理单元(CPU)指令运行和EFI内核服务,以及(或)协议访问。ECL 260还可以动态解析不同的驱动程序执行环境,并提供一个和ECD 270相连的通用接口。ECL 260可以是平台中立的(即,平台不可知),从而其不具有特殊的平台特性。而且,ECL 260是阶段自适应的,以便提供跨平台系统服务。作为这些概念的举例说明,ECL 260可以通过利用PEI阶段中的PEI服务,执行诸如输入/输出、存储器和PCI访问等操作。除去这些PEI阶段的操作,ECL 260还可以通过利用DXE阶段中的DXE服务来执行上述操作。这样,ECL 260就提供了针对ECD 270的跨阶段服务。

ECD 270既可以在PEI阶段运行,又可以在DXE阶段运行,以完成平台初始化。这就是说,ECD 270在PEI阶段可以作为一个PEIM运行,而在DXE阶段作为一个DXE驱动程序运行。

如上所述,ECL 260提供了诸如PCI配置访问、I/O访问和(或)存储器操作等在内的功能。通过和ECL 260通信,ECD 270不必直接使用特定阶段提供的任何特殊服务,而是链接和使用ECL 260的功能。ECD 270获取由ECL 260提供的服务调用的结果。例如,ECD 270可以通过调用由ECL 260提供的服务,来请求对特定的PCI配置空间的一次读操作。在这一操作中,ECL 260执行该请求,并获得用于ECD 270的值。结果,ECD270就可以在BIOS 220的不同阶段中(例如,PEI阶段和DXE阶段)运行。

图3中的流程图显示了示例的由处理器系统100(例如,通过处理器120)执行的机器可读指令。本领域内具有普通技术水准的人应该明白,可以利用存储在任何计算机可读介质(诸如易失或非易失存储器,或者其他大容量存储设备(例如,软盘、CD和DVD))上的任意一种不同的程序设计代码,以任何不同的方法来实现机器可读指令。而且,尽管图3中显示的是特定顺序的指令,本领域内具有普通技术水准的人应该明白,这些指令可以按照其他时间序列来执行。另外,流程图300仅是作为一种对处理器120编程使其在基于EFI的BIOS 220的多个阶段中操作的方法的一个例子而已。

在图3的示例中,基于EFI的BIOS 220依次在所示的标准引导路径300(即,PEI→DXE→OS)的PEI阶段和DXE阶段运行。在PEI阶段,基于EFI的BIOS 220首先调度一个PEIM(块310),在此期间,基于EFI的BIOS 220可以用能够启动DXE阶段的最少资源来初始化一个平台(即,包括硬件和诸如Window XP等操作系统在内的计算机或者处理器系统)。在PEI阶段,基于EFI的BIOS 220可以采用使DXE阶段可以运行的配置来初始化该平台,而DXE驱动程序将生成最终的预引导状态。因此,DXE驱动程序可以继续或者覆盖由PEIM初始化的平台设置。例如,在一个安装有1吉字节(GB)存储器的平台的存储器初始化期间,可将存储器PEIM配置为初始化256兆字节(MB)以启动DXE阶段。因此,存储器DXE驱动程序可以被配置为在DXE阶段启用剩余的存储器(即,744MB)。

ECD 270与ECL 260通信来获得诸如驱动程序执行环境和接口等初始化资源(块320)。接着,ECD 270将作为PEIM来运行,以便部分并(或)暂时地配置硬件210(例如,键盘或鼠标)和(或)与处理器系统100相关联的其他设备(块330)。由于基于EFI的BIOS 220是以连续方式在PEI阶段和DXE阶段运行的,接下来,基于EFI的BIOS 220将转入DXE阶段(块340)。在DXE阶段,基于EFI的BIOS调度一个DXE驱动程序(块350)。然后ECD 270在DXE阶段被再次调用(块360)。具体地说,ECD 270是作为一个DXE驱动程序运行,来把与处理器系统100相关联的硬件和(或)设备完全初始化到最终的预引导阶段(块370)。初始化平台之后,基于EFI的BIOS 220将控制权移交给操作系统250,以便将文件和(或)配置加载到主存储器130中来以常规方式启动处理器系统100(块380)。

另一种选择是,ECD 270可以先在DXE阶段运行,然后在PEI阶段运行。在这种情况下,ECD 270将使处理器系统100可以尽可能高效地运行。具体地说,基于EFI的BIOS 220可以包括一个高级配置和电源接口(ACPI),这是一个基于BIOS的电源管理系统。ACPI采用设备工作超时设定来确定何时将处理器系统100转入一个或多个低功耗或者休眠状态,在此状态下处理器系统100将在低电流下运行。例如,ACPI规范(即,高级配置和电源接口规范,2.0b版,2002年10月11日出版)定义了5个休眠状态,分别为S1、S2、S3、S4和S5。

尽管本领域内具有普通技术水准的人易知各种处理器休眠状态的细节,为方便起见,这里仍然提供了每种休眠状态的一个简要描述。S1休眠状态是低唤醒潜伏期休眠状态。在S1状态下,处理器或任何相关处理器芯片集中的系统环境信息都没有丢失,并且硬件保持着所有的系统环境信息。

S2休眠状态和S1休眠状态类似,只是在S2休眠状态下,处理器和系统高速缓存的环境信息丢失了,由操作系统来负责维护处理器和高速缓存的环境信息。当处于S2休眠状态下的处理器检测到一个唤醒事件时,处理器从其唤醒向量开始运行。

S3休眠状态是低唤醒潜伏期休眠状态,在该状态下,系统存储器之外的所有系统环境信息都丢失了。处理器、高速缓存和芯片集的环境信息在此状态下都丢失了。不过,硬件保持了存储器环境信息,并能恢复一些处理器以及其他配置的环境信息。和在S2休眠状态中一样,发生唤醒事件后,控制将从处理器的唤醒向量开始启动。

S4休眠状态是ACPI支持的最低功率、最长唤醒潜伏期的休眠状态。为了将功耗降至最低,在S4休眠状态下,硬件平台关闭了所有的设备。平台环境信息仍然被保持。

S5休眠状态和S4休眠状态类似,所不同的是,操作系统不再保存任何环境信息。系统处于“软”关闭的状态下,唤醒时需要完全的引导。软件使用在S5状态和S4状态间加以区分的不同状态值,以允许BIOS内的初始引导操作来判断引导是否从保存的存储器映像中唤醒。

如将要在下面详述的那样,所揭示的系统可以使处理器系统100休眠(即,进入低功耗状态)并从低功耗状态下唤醒。尽管所揭示的系统与S3休眠状态结合使用时具有特殊的优越性,低功耗状态可以是ACPI规范定义的S1到S5中的任何一种状态。在S3状态下,例如,处理器系统100近乎关闭,因为电源处于低功率模式下,同时易失存储器132(例如,RAM)刷新很慢。

在图4的示例中,ECD 270首先在所示标准引导路径的DXE阶段中运行,然后在PEI阶段中运行。基于EFI的BIOS 220通过调度一个PEIM,用能够启动DXE阶段的最少资源来开始处理器系统100的初始化过程(块410)。基于EFI的BIOS 220接下来转入DXE阶段(块420),并调度一个DXE驱动程序(块430)。正如上面所提到的那样,ECD 270通过与ECL 260通信来获得初始化资源(即,跨阶段系统服务)(块440)。这样,ECD 270在标准引导路径中作为DXE驱动程序运行(块450)。而且,ECD 270将配置的一份拷贝保存到了一个非易失存储器(例如,一个ACPI再生存储器)中以备下面所述的步骤之用(块455)。通过将ECD 270中的一个单一组件配置为既可作为PEIM运行,又可作为DXE驱动程序运行,一大规模代码的一个拷贝就可以在基于EFI的BIOS 220的不同阶段得以重用。而且,由于ECD 270重用相同的代码来运行,其代码量也可减少。接下来,基于EFI的BIOS 220就过渡到操作系统250,将文件和(或)配置加载到主存储器130中,按照常规方式来启动处理器系统100(块460)。

处理器系统100可能会进入ACPI规范所定义的休眠状态(例如,S3状态)。发生一个唤醒事件(例如,按下键盘上的一个键)后,基于EFI的BIOS 220将调度一个PEI模块(块510),并且确定处理器系统100是否从S3状态继续(块520)。如果处理器系统100不是从S3状态继续,那么基于EFI的BIOS 220就进入标准引导路径运行(例如,按照图3中所示的流程图300那样进行)(块530)。另一种选择是,按照S3继续引导路径,基于EFI的BIOS 220将PEI阶段和DXE阶段执行的配置都加以恢复(块540)。由于S3继续引导路径所需的时间限制,调用所有的DXE驱动程序是低效的。例如,MicrosoftWindows硬件质量实验室(WHQL)的测试证明用于外围和其他组件的硬件与Microsoft Windows操作系统是兼容的。尤其是,WHQL规定从S3状态启动的时间要小于或者等于0.5秒。基于保存在非易失存储器中的配置信息,在PEI阶段调用ECD 270来恢复系统配置。这样,DXE驱动程序所需的任何操作均由ECD 270来实现以满足这样的需求(块550)。结果,由于ECD 270使用了非易失存储器中的配置信息,在DXE阶段避免了对DXE驱动程序的调度,从而节约了引导时间。接下来,基于EFI的BIOS 220就过渡到操作系统250,按照常规方式,将文件和(或)配置加载到主存储器130中,以启动处理器操作系统100(块560)。

这里所揭示的方法和设备尤其适合用于Microsoft Windows。尽管如此,在不偏离本发明的范围或精神的情况下,本发明的主旨也可用于其他平台。由于ECL 260和ECD 270是与平台无关的,二者可在不同的平台和处理器体系上实现。

尽管这里所描述的方法和设备尤其适合用于一个基于EFI的BIOS,处理器系统100可以包括一个非基于EFI的BIOS。例如,处理器系统100可以包括一个按照阶段模式(phase fashion)初始化平台的非基于EFI的BIOS。

虽然这里描述的是特定的示例方法、设备和产品,本专利所覆盖的范围却不限于这些。相反,本专利将覆盖无论是在文字上,还是在实际意思上,明确落入附加权利要求范围内的所有方法、设备和产品。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号