CN101258467B - 用于预启动计算机系统的方法和装置 - Google Patents
用于预启动计算机系统的方法和装置 Download PDFInfo
- Publication number
- CN101258467B CN101258467B CN200680032817.0A CN200680032817A CN101258467B CN 101258467 B CN101258467 B CN 101258467B CN 200680032817 A CN200680032817 A CN 200680032817A CN 101258467 B CN101258467 B CN 101258467B
- Authority
- CN
- China
- Prior art keywords
- memory
- processor
- computer system
- speed cache
- ram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
在启动模式中配置计算机系统的暂时存储器。生成所述暂时存储器的页面表。初始化计算机系统的系统存储器。将暂时存储器的内容迁移到系统存储器。
Description
技术领域
本发明的实施例涉及计算机系统领域,特别是但不专门涉及计算机系统的预启动(preboot)存储器。
背景技术
在典型的计算机体系结构中,通过固件、如系统基本输入/输出系统(BIOS)的计算机系统的初始化和配置通常称作预启动阶段。预启动阶段一般定义为处理器重置与操作系统(OS)的加载之间的时间。在预启动开始时,是由固件中的代码将平台初始化到从媒体、如硬盘加载的操作系统可接管的点。
发起OS加载会开始通常称作OS运行时间的周期。在OS运行时间,固件可充当软件与计算机系统的硬件组件之间的接口,以及处理系统相关的任务。随着计算机系统变得更为复杂,OS级与硬件级之间的操作环境一般称作固件或固件环境。
当今的系统正朝64位计算环境发展。64位计算实现高于4千兆字节(GB)的虚拟存储器的存储器寻址。存储器分页(paging)用于将虚拟存储器映射到系统的物理存储器。在64位系统中,预启动还可包括64位进程。例如,在预启动期间,控制和状态寄存器可在4GB线之上映射。但是,当前的设计无法有效地支持预启动阶段中的64位存储器寻址。
发明内容
根据第一实施例,提供了一种用于预启动计算机系统的方法,包括:
在启动模式中配置计算机系统的暂时存储器;
在初始化所述计算机系统的系统存储器之前在所述暂时存储器中建立存储器分页;
在初始化所述计算机系统的系统存储器之前启用所述计算机系统的处理器的64位存储器寻址模式;初始化所述计算机系统的系统存储器;以及
将所述暂时存储器的内容迁移到所述系统存储器,其中,建立存储器分页的步骤包括:通过参照所述计算机系统的处理器的寄存器中保存的信息,来生成所述暂时存储器的页面表。
根据第二实施例,提供了一种用于预启动计算机系统的装置,包括:
在计算机系统的预启动阶段配置处理器的“作为随机存取存储器(RAM)的高速缓存”的部件;
在初始化所述计算机系统的系统存储器之前生成“作为RAM的高速缓存”的页面表的部件,其中,所述页面表存储在所述“作为RAM的高速缓存”中;
在初始化所述计算机系统的系统存储器之前启用所述处理器的64位存储器寻址模式的部件;
初始化所述计算机系统的系统存储器的部件;以及
将所述“作为RAM的高速缓存”的内容迁移到所述系统存储器的部件,
其中,生成所述“作为RAM的高速缓存”的页面表的部件包括:将所述处理器的控制寄存器设置成指向所述暂时存储器中的页面目录的部件。
根据第三实施例,提供了一种用于预启动计算机系统的方法,所述计算机系统包括:
处理器;
耦合到所述处理器的同步动态随机存取存储器(SDRAM)单元;以及
耦合到所述处理器的存储器,其中,所述存储器包括由所述处理器运行的多条指令,
所述方法包括:
在所述计算机系统的预启动阶段配置所述处理器的“作为随机存取存储器(RAM)的高速缓存”;
在初始化所述SDRAM单元之前生成所述“作为RAM的高速缓存”的页面表,其中,所述页面表存储在所述“作为RAM的高速缓存”中;
在初始化所述SDRAM单元之前启用所述处理器的64位存储器寻址模式;
初始化所述SDRAM单元;以及
将所述“作为RAM的高速缓存”的内容迁移到所述SDRAM单元,
其中,生成所述“作为RAM的高速缓存”的页面表的步骤包括:从所述处理器的存储器类型范围寄存器中检索存储器类型信息,其中,存储器类型范围寄存器描述所述SDRAM单元的地址范围的存储器类型。
附图说明
参照以下附图来描述本发明的非限制且非穷举的实施例,其中,相似的参考标号在各个视图中表示相似的部件,除非另有说明。
图1是框图,说明根据本发明的一个实施例的计算机系统。
图2是框图,说明根据本发明的一个实施例的可扩展固件接口(EFI)实现的阶段。
图3A是流程图,说明根据本发明的一个实施例的预EFI初始化(PEI)阶段的逻辑和操作。
图3B是框图,说明根据本发明的一个实施例的固件卷(volume)。
图4是流程图,说明使用根据本发明的一个实施例的预启动存储器的逻辑和操作。
图5是框图,说明根据本发明的一个实施例的多处理器系统中的预启动存储器。
图6是流程图,说明使用根据本发明的一个实施例的预启动存储器的逻辑和操作。
图7是框图,说明根据本发明的一个实施例的预启动存储器。
具体实施方式
在以下描述中,提出大量具体细节,以便提供对本发明的实施例的充分理解。但是,本领域的技术人员会知道,可在没有这些具体细节的一个或多个的情况下或者采用其它方法、组件、材料等来实施本发明的实施例。在其它情况下,没有详细说明或描述公知的结构、材料或操作,以免影响对描述的理解。
本说明中提到“一个实施例”或“一实施例”表示结合该实施例描述的具体特征、结构或特性包含在本发明的至少一个实施例中。因此,在本说明的各个位置中出现的词组“在一个实施例中”或“在一实施例中”不一定都表示同一个实施例。此外,具体特征、结构或特性可通过任何适当方式结合在一个或多个实施例中。
在以下描述和权利要求中,可采用术语“耦合”及其派生词。“耦合”可表示两个或两个以上元件处于(物理、电气、磁、光等)直接接触。“耦合”还可表示两个或两个以上元件不是相互直接接触,而是仍然相互配合或交互。
参照图1,示出根据本发明的实施例的计算机系统100的体系结构。大家会理解,本发明的实施例不限于图1所示的体系结构。与计算机系统100有关的其它细节在本说明书的结尾处讨论。
在一个实施例中,计算机系统100是包括处理器101、102、103和104的微处理器系统。每个处理器可包括高速缓存,例如处理器101的高速缓存101A。高速缓存101A可包括L1高速缓存、L2高速缓存或者L3高速缓存。
虽然图1示出四个处理器,但是大家会理解,计算机系统100的实施例可包括四个以下或以上的处理器。在其它实施例中,处理器可支持超线程技术。在采用多核处理器的一备选实施例中,图1的每个处理器101-104可表示一个核心。
在一个实施例中,处理器101-104通过链路耦合。例如,处理器101通过链路105耦合到处理器104。链路提供又称作节点的两个端点之间的点对点互连。在一个实施例中,链路包括串行发送信息的两个单向物理连接。在另一个实施例中,命令和/或数据采取分组的形式通过链路传输。链路的实施例包括但不限于公司发布的通用系统接口(CSI)等。
在一个实施例中,每个处理器101-104分别耦合到对应的存储器105-108。在一个实施例中,每个存储器105-108通过链路分别耦合到处理器101-104。在一个实施例中,每个处理器101-104包括存储控制器。
在一个实施例中,每个处理器101-104有权访问其它所有处理器的存储器105-108。在这个具体实施例中,存储器作为单个虚拟块提供。但是,这个单虚拟块可映射到各个物理存储器105-108。在一个实施例中,存储器105-108构成计算机系统100的系统存储器。
处理器101和102耦合到输入/输出集线器(IOH)110,以及处理器103和104各耦合到IOH 112。在图1的实施例中,IOH 110用作主IOH。
处理器的实施例包括具有64位存储器寻址模式的32位处理器。这种处理器的实施例包括但不限于结合了Extended Memory(扩展存储器)64技术(EM64T)的体系结构(IA)-32处理器等。64位存储器寻址模式使IA-32体系结构的存储器寻址能力扩展到超过4GB,同时使IA-32系统能够继续运行基于32位x86的应用程序。Pentium 4和Xeon处理器可包括EM64T。
各种装置可耦合到IOH 110和112。在计算机系统100中,非易失性存储装置(NVS)114、如闪速存储器可耦合到IOH 110。NVS 114可能已存储了系统固件116。
可基本上按照可扩展固件接口(EEI)(Extensible Firmware InterfaceSpecification(可扩展固件接口规范),Version 1.10(1.10版),2002年12月1日)来实现本文描述的系统固件116的实施例。EFI使采取固件模块、如驱动器的形式的固件能够从包括闪速存储设备,option ROM(只读存储器),诸如硬盘、CD-ROM(光盘只读存储器)之类的其它存储装置在内的各种不同资源加载,或者通过计算机网络从一个或多个计算机系统加载。在EFI体系结构规范的平台创新框架(以下称作“框架”)(Draft for Review,Version 0.9,2003年9月16日)中描述了EFI规范的实现的一个实施例。大家会理解,本发明的实施例不限于符合EFI规范的框架或实现。
IOH 112耦合到输入/输出(I/O)端口124以及一个或多个网络接口126。I/O端口124可用来连接I/O装置,例如键盘、鼠标、监视器、打印机等。网络接口(I/F)126可通过网络128发送和接收通信。
本发明的实施例提供在系统存储器初始化之前的暂时存储器中的存储器分页。本发明的实施例还提供计算机系统100的预启动阶段中的64位寻址。在系统存储器105-108初始化之前执行的系统固件116可使用能够进行64位寻址的暂时存储器。这种暂时存储器的实施例包括高速缓存101A和非易失性存储装置114。在存储器105-108初始化之后,暂时存储器的内容迁移(migrate)到系统存储器。
图2是框图,说明根据本发明的一个实施例的框架的阶段。阶段包括安全(SEC)阶段202、预EFI初始化(PEI)阶段204、驱动运行环境(DXE)阶段206、启动设备选择(BDS)阶段208、瞬时系统加载(TSL)阶段210、操作系统运行时间(RT)阶段212以及最后(After-Life)(AL)阶段214。这些阶段相互依赖,以便为OS和平台提供适当的运行时环境。图2的下部示出预启动216、OS运行时间218和关机219。
SEC阶段202支持要在计算机系统上执行的初始操作码的安全校验。SEC阶段202包括计算机系统的加电序列,并在允许PEI基础执行之前认证PEI基础(下面讨论)。
PEI阶段204提供加载和调用处理器222、芯片组224和主板226的特定初始(INIT)配置例程的标准化方法。PEI阶段负责充分初始化系统,以便为后续阶段提供稳定基础。包括处理器、芯片组和主板在内的平台核心组件的初始化在PEI阶段中执行。PEI阶段发现存储器,并准备移交给DXE阶段的资源分布图。通过称作移交块(HOB)的数据结构的列表将PEI阶段结束时的系统状态传递给DXE阶段。下面更详细地讨论PEI阶段204。
DXE阶段216是执行大部分系统初始化的阶段。DXE阶段116通过若干组件来推动,其中包括DXE核心、DXE分配器228和一组DXE驱动器221。DXE核心产生一组启动/运行时服务230以及DXE服务。DXE分配器228负责发现并以正确顺序执行DXE驱动器221。DXE驱动器221负责初始化处理器、芯片组和平台组件,以及为控制台和启动装置提供软件抽象。这些组件共同工作以便初始化平台,并提供启动操作系统所需的服务。
BDS阶段208进一步准备计算机系统,以便加载操作系统。
TSL阶段210允许服务在OS被允许控制计算机系统之前可由OS装载程序234使用。一旦成功加载OS,OS可进行ExitBootService(退出启动服务)调用,它结束启动服务,并释放启动服务资源供OS使用。
在RT阶段212,固件将某个硬件的控制权移交给操作系统236。EFI运行时服务231继续进行到RT阶段212。
在AL阶段114,固件可在OS终止之后继续起作用。
结合图3A和图3B来讨论根据本发明的一个实施例的PEI阶段204的细节。在图3A中,示出说明框架的PEI阶段的逻辑和操作的一个实施例的流程图300。
在框302开始,PEI阶段发起。支持PEI阶段的代码存储在固件卷(FV)350中,如图3B所示。FV 350包括启动固件卷(BFV)352和主固件卷(MFV)354。BFV 352包括没有先前的固件干预而出现在系统的存储器地址空间中的代码。主固件卷354包括各种固件模块、驱动器和数据。在其它实施例中,计算机系统可包括一个或多个固件卷。在一个实施例中,FV 350作为系统固件116的一部分存储在非易失性存储设备114中。
在PEI开始时,系统存储器仍未初始化。将BFV 352加载到暂时存储器中用于执行。一旦系统存储器在PEI中初始化,则将固件进程加载到系统存储器中用于执行。
PEI逻辑还可确定计算机系统的启动模式。启动模式的实施例包括:常规预启动,从符合高级配置和电源接口(ACPI)规范(参见Advanced Configuration and Power Interface Specification,revision 2.0b,2002年10月11日)的睡眠状态、如S3状态唤醒;以及恢复模式,用于重构被破坏的固件。
大家会理解,本发明的实施例可在S3恢复启动模式中使用。在从S3状态恢复时,通常启动DXE初始程序装载程序(IPL)的PEIM改用硬件保存表来使硬件恢复到启动配置。在恢复该硬件之后,PEIM将控制权传递给OS提供的恢复向量。本发明的实施例允许系统在从S3状态恢复时保持为64位模式,而不是必需在从S3恢复时执行32位到64位转换。
在一个实施例中,大部分PEI代码通过高级语言、如C语言来编写。PEI代码的其余部分可通过汇编语言来编写。本文的实施例考虑到通过C代码进行64位寻址。在一实施例中,PEI代码的单个二进制位用于系统的各处理器(下面结合图5进行讨论)。
继续看流程图300,对PEI基础和PEI基础分配器进行初始化,如框304所示。参照图3B,PEI基础356采用分配器357来提供PEIM(预EFI初始化模块)358的分配。分配器357还可提供一组PEIM服务供PEIM 358使用。PEIM又可称作固件模块。
继续进行到框306,分配器357分配PEIM 358。在一个实施例中,分配器357检查各PEIM的相关性表达,以便确定是否可运行PEIM。如果PEIM的相关性表达不能满足,则PEIM的执行将向后延迟。
PEIM还可提供PEIM到PEIM接口(PPI),它允许其它PEIM与该PEIM或该PEIM抽象的硬件进行通信。当PEIM执行时,PEIM的PPI向管理PPI的数据库的PEI基础356登记。当PEIM希望使用特定PPI时,PEIM向PEI基础356请求PPI的位置。大家会理解,PEIM可能不一定生成PPI。
回来看图3A,在PEI基础356确认分配器357已经启动所有PEIM之后,逻辑则进入框308,以便分配DXE阶段初始程度装载程序,从而开始预启动的DXE阶段。
来看图4,示出使用根据本发明的一个实施例的预启动存储器的流程图400。在一个实施例中,系统固件116执行流程图400的逻辑。在框402开始,启动或重置系统。处理器引用指向非易失性存储装置中的启动代码的重置向量。在一个实施例中,SEC代码是在加电之后执行的第一代码。SEC代码可能预先知道BFV的位置,因此SEC代码可认证PEI基础。
在多处理器系统中,一个处理器被预指定为初始启动处理器。在发现其它处理器之后,每个处理器执行它自己的PEI序列(下面结合图5进一步进行讨论)。
在启动期间,IA-32处理器以实时模式开始。实时模式提供高达1MB的虚拟存储器的存储器寻址。在框403,处理器进入保护模式。保护模式使IA-32处理器能够对高达4千兆字节的存储器进行寻址。
继续进行到框404,配置暂时存储器。可在初始化系统存储器之前使用暂时存储器。在一个实施例中,处理器高速缓存、如高速缓存101A配置成用作暂时存储器。这又可称作“作为随机存取存储器(RAM)的高速缓存”或“假RAM”。
在关于处理器的一个实施例中,处理器高速缓存可设置在无出差模式(NEM),以便提供“作为RAM的高速缓存”。IA-32处理器高速缓存可具有4路组关联。高速缓存的四分之一可保留用作“作为RAM的高速缓存”。例如,如果处理器具有512千字节(KB)高速缓存,则128KB可用于“作为RAM的高速缓存”。处理器高速缓存的一个实施例包括L2高速缓存。
在另一个实施例中,非易失性存储装置可配置为暂时存储器。SEC代码可预先设计成在非易失性存储装置、如闪速存储器中生成页面目录和页面表。在采用非易失性存储装置的一个实施例中,可使处理器进入一种模式,其中处理器不引用页面表的访问位字段。页面表可包括表明页面是否已经被访问的各页面的访问位。但是,如果页面表保存在非易失性存储装置中,则在页面已经被访问之后设置访问位可能不实际。在这种情况下,如果处理器尝试在非易失性存储装置中设置访问位,则处理器可能被挂起。为了消除这个问题,在一个实施例中,在将非易失性存储装置用于暂时存储器时,不可引用访问位。
继续进行到框406,为暂时存储器生成页面表。在一个实施例中,页面表从存储器类型范围寄存器(MTRR)中生成(下面结合图6和图7进行讨论)。
在另一个实施例中,页面表采用预定义的数据结构从固件代码中生成。例如,SEC代码可设计成建立暂时存储器,以便在3千兆字节存储器地址上开始映射。
在框406之后,逻辑进入框407,以便启用处理器的64位存储器寻址模式。在一个实施例中,处理器进入EM64T模式。为了启用EM64T,将启用存储器分页。这样,在暂时存储器中建立页面表,以便满足这种EM64T要求。在IA-32的实施例中,控制寄存器3(CR3)设置成指向暂时存储器中的页面目录。在一个实施例中,EM64T需要启用物理地址扩展(PAE)。
继续进行到框408,将预启动执行移交给PEI阶段。在一个实施例中,SEC代码将BFV的地址和暂时存储器的大小传递到PEI阶段。
当PEI阶段开始运行时,PEI代码可采用暂时存储器运行,因为系统存储器仍未初始化。在PEI期间,至少一个PEIM初始化系统存储器,如框410所示。
在框410之后,逻辑进入框412,以便将暂时存储器的内容迁移到系统存储器。这种迁移可包括至少部分根据暂时存储器的页面表来生成系统存储器的页面表。PEI代码然后可继续采用系统存储器执行。
继续进行到框414,PEI阶段将预启动运行移交给DXE阶段。PEI阶段使用HOB将状态信息传递到DXE阶段。HOB可在存储器中设置在HOB列表中。HOB列表可包括阶段移交信息表,它描述由PEI阶段所使用的物理存储器以及在PEI阶段中发现的启动模式。
大家会理解,本发明的实施例从系统启动的最早阶段就为64位存储器寻址创造了条件。另外,在系统存储器初始化之前的存储器分页还提供了堆和堆栈来执行用于早期启动固件的高级语言、如C语言,而不是限制为“无栈”低级语言、如汇编语言。
来看图5,示出多处理器系统中的PEI阶段500的一实施例。大家会理解,图5的实施例可在其中各处理器101-104代表不同核心的多核系统中实现。
PEI阶段500在初始化系统存储器之前开始。各个处理器101-104分别具有其关联的暂时存储器506-509。为了清楚起见,在图5中,每个暂时存储器使用虚拟存储器地址0-9。在系统存储器初始化之前,每个处理器执行它自己的PEI代码,并使用它自己的暂时存储器。大家会理解,每个处理器可使用重叠存储器映射,因为这种重叠在将内容移动到系统存储器中时会得到调和。
一旦系统存储器510经过初始化,PEIM可“堆叠”暂时存储器506-509的内容。如图5所示,暂时存储器的存储器寻址经过重组,以便在系统存储器510中存储。来自暂时存储器506-509的页面表用于构造系统存储器510的页面表。在一个实施例中,暂时存储器页面表可包括处理器标识字段,以便表明在堆叠存储器的内容时,哪个页面与哪个处理器相关联。
一旦暂时存储器506-509在系统存储器510中得到调和,PEI阶段的执行就作为单个进程继续进行。一旦完成了PEI,执行就移交到DXE阶段,如520所示。
来看图6,流程图600说明根据本发明的一个实施例来配置暂时存储器中的页面表的逻辑和操作。参照图7,在高速缓存704中形成暂时存储器。暂时存储器中的页面目录708和页面表710至少部分根据存储器类型范围寄存器(MTRR)714来构造。在一个实施例中,流程图600的逻辑和操作通过系统固件116的32位代码来构造。在另一个实施例中,源代码用高级语言、如C语言来编写。
在框602开始,从处理器702中检索可变和固定MTRR 714。在一个实施例中,处理器702包括具有MTRR的P6系列处理器。MTRR 714将系统存储器的存储器类型描述为与高速缓存的方法相关,例如强无高速缓存、无高速缓存、写组合、写直达、回写以及写保护。
MTRR用来确定物理存储区的高速缓存性。在一个实施例中,MTRR可定义物理存储器的总共96个存储器地址区。一部分MTRR描述“固定”存储器范围和存储器类型,而其它MTRR则可认为是“可变的”,因为软件可设置对应的可变存储器范围的存储器类型。
继续进行到框604,检索与指定物理存储器地址对应的MTRR的存储器类型。
进入判定框606,逻辑判定从在框604中检索的指定地址开始的2兆字节(MB)地址范围是否可映射到2MB页面。逻辑判定2MB地址范围是否具有所有与MTRR中描述的相同的存储器类型。在一个实施例中,策略是使用2MB页面来映射处理器地址空间中的所有内容。如果需要更大粒度,则可将2MB页面转换成多个4KB页面。
MTRR用于在暂时存储器中建立页面表,使得一个以上存储器类型不映射到单个页面。这使到系统存储器的页面表的迁移更容易。
如果对判定框606的回答为“是”,则地址范围可映射到2MB页面。2MB页面的存储器类型可从MTRR中收集。然后,逻辑继续进行到框610(下面进行描述)。如果对判定框606的回答为“否”,则逻辑进入框608,在其中,将地址范围分为多个4KB页面表条目。在一个实施例中,将单个2MB地址范围(即页面)转换为512个4KB页面表条目。4KB页面的存储器类型从MTRR寄存器中读取。然后,逻辑继续进行到框610。
在框610,逻辑分配及填充页面目录和页面表条目,以便建立从0到4GB或更高的存储器的虚拟到物理映射。在一个实施例中,映射为1∶1虚拟到物理映射。
将高速缓存704中存储的信息放入由页面目录(DIR)708和页面表710引用的页面712。这种早期分页允许在系统存储器的初始化之前使用堆栈。然后,逻辑继续进行到框612,以便将CR3706设置成指向暂时存储器中的页面目录。
参照图7,一旦初始化系统存储器732,高速缓存704中的暂时存储器的内容可迁移到系统存储器732。至少部分根据来自高速缓存704的页面目录708、页面表710和页面712来生成页面目录734、页面表736和页面738。CR3706也可设置为指向页面目录734。
本发明的实施例为在系统存储器初始化之前的64位存储器寻址创造了条件。创建已经分页的暂时存储器,以便支持64位存储器寻址。因此,在系统存储器初始化之前执行的固件可具有完全的64位机器访问。这实现早期预启动执行的更大编程自由度。另外还可使堆栈和堆可用于从系统启动的最早阶段开始执行高级代码、如C。
本发明的实施例采用具有实现64位存储器寻址的模式的32位处理器。因此,固件、如EFI固件可能是允许64位存储器寻址的32位代码。此外,在具有64位存储器寻址的IA-32位处理器上执行的32位固件代码使系统能够运行32位和/或64位操作系统。
现在讨论图1中的计算机系统100的其它实施例。处理器101-104可包括但不限于Corporation或系列处理器等。存储器105-108可包括但不限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、存储器总线式动态随机存储器(RDRAM)等。在一个实施例中,存储器105-108可包括无需刷新的一个或多个存储单元。
计算机系统100可包括例如存储控制器集线器(MCH)等的存储控制器、例如输入/输出控制器集线器(ICH)等的输入/输出控制器。在一个实施例中,存储器105-108的一个或多个存储控制器可与处理器101-104驻留在相同芯片中。计算机系统100还可包括系统时钟支持、电源管理支持、音频支持、图形支持等。计算机系统100可包括I/O设备,例如键盘、鼠标、显示器、打印机、扫描仪等。
计算机系统100的组件可通过各种互连进行连接。在一个实施例中,互连可能是两个组件之间的点对点,而在其它实施例中,互连可连接两个以上组件。这类互连可包括例如PCI Express等的外设部件互连(PCI)、系统管理总线(SMBUS)、低引脚数(LPC)总线、串行外围接口(SPI)总线、加速图形端口(AGP)接口等。
计算机系统100可通过网络接口126与外部系统相接口。网络接口126可包括但不限于调制解调器、网络接口卡(NIC)或者用于将一计算机系统耦合到其它计算机系统的其它接口。载波信号可由网络接口126接收/发送。在一个实施例中,载波信号可用于将计算机系统100与网络128相接口。网络128可包括局域网(LAN)广域网(WAN)、因特网或者它们的任意结合。在一个实施例中,网络128还耦合到另一个计算机系统(未示出),使得计算机系统100可通过网络128与该另一个计算机系统进行通信。
计算机系统100还包括在其上可存储固件和/或数据的非易失性存储装置114。非易失性存储设备包括但不限于只读存储器(ROM)、闪速存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、非易失性随机存取存储器(NVRAM)等。
存储装置118包括但不限于磁盘驱动器、磁带驱动器、光盘驱动器等。大家会理解,可由处理器101-104执行的指令可驻留在存储装置118、存储器105-108、非易失性存储装置114中,或者可经由网络接口126发送或接收。
为了便于说明,机器可读介质包括以机器(例如计算机、网络设备、个人数字助理、制造工具、具有一个或多个处理器集合的任何设备等)可读或可访问的形式提供(即存储和/或发送)信息的任何机构。例如,机器可访问介质包括但不限于可记录/不可记录媒体(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光存储媒体、闪速存储设备等)。另外,机器可访问介质可包括诸如电、光、声等传播信号或者其它形式的传播信号(例如载波、红外线信号、数字信号等)。
本文描述了本发明的实施例的各种操作。这些操作可通过采用处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等的机器来实现。在一个实施例中,所描述的一个或多个操作可构成机器可访问介质上存储的指令,这些指令在由机器执行时使机器执行所描述的操作。描述部分或全部操作的顺序不应当解释为暗示这些操作必须是顺序相关的。获益于本描述的本领域的技术人员会知道备选的排序。此外,大家会理解,并非所有操作都必须出现在本发明的每个实施例中。
对本发明的所述实施例的以上描述,包括“摘要”中所描述的,不是穷举性的或者将实施例限于所公开的精确形式。虽然本文为了说明的目的而描述了本发明的具体实施例和实例,但相关领域的技术人员会知道,各种等效修改是可行的。可根据以上详细的描述来对本发明的实施例进行这些修改。以下权利要求中使用的术语不应当解释为将本发明限于说明书中公开的具体实施例。而是,以下权利要求将按照权利要求解释的已建立的规则来解释。
Claims (18)
1.一种用于预启动计算机系统的方法,包括:
在启动模式中配置计算机系统的暂时存储器;
在初始化所述计算机系统的系统存储器之前在所述暂时存储器中建立存储器分页;
在初始化所述计算机系统的系统存储器之前启用所述计算机系统的处理器的64位存储器寻址模式;初始化所述计算机系统的系统存储器;以及
将所述暂时存储器的内容迁移到所述系统存储器,
其中,建立存储器分页的步骤包括:通过参照所述计算机系统的处理器的寄存器中保存的信息,来生成所述暂时存储器的页面表。
2.如权利要求1所述的方法,其特征在于,将所述暂时存储器的内容迁移到所述系统存储器的步骤包括:
至少部分根据所述暂时存储器的页面表来生成所述系统存储器的页面表。
3.如权利要求1所述的方法,其特征在于,配置所述暂时存储器的步骤包括:
配置与所述计算机系统的第一处理器相关联的第一暂时存储器;以及
配置与所述计算机系统的第二处理器相关联的第二暂时存储器。
4.如权利要求3所述的方法,其特征在于,迁移所述暂时存储器的内容的步骤包括:将来自所述第一暂时存储器的内容以及来自所述第二暂时存储器的内容堆叠到所述系统存储器中。
5.如权利要求1所述的方法,其特征在于,所述暂时存储器包括所述计算机系统的处理器的高速缓存或者所述计算机系统的非易失性存储器这两者其中之一。
6.如权利要求1所述的方法,其特征在于,还包括在所述暂时存储器中维持堆栈。
7.如权利要求6所述的方法,其特征在于,所述堆栈可利用所述计算机系统的全部存储器寻址空间。
8.如权利要求1所述的方法,其特征在于,建立存储器分页的步骤包括:通过参照定义所述暂时存储器的页面表的数据结构,来生成所述暂时存储器的页面表。
9.如权利要求1所述的方法,其特征在于,所述启动模式包括所述计算机系统的预启动阶段。
10.如权利要求1所述的方法,其特征在于,所述启动模式包括从睡眠状态进行恢复,所述睡眠状态符合高级配置和电源接口规范。
11.一种用于预启动计算机系统的装置,包括:
在计算机系统的预启动阶段配置处理器的“作为随机存取存储器(RAM)的高速缓存”的部件;
在初始化所述计算机系统的系统存储器之前生成“作为RAM的高速缓存”的页面表的部件,其中,所述页面表存储在所述“作为RAM的高速缓存”中;
在初始化所述计算机系统的系统存储器之前启用所述处理器的64位存储器寻址模式的部件;
初始化所述计算机系统的系统存储器的部件;以及
将所述“作为RAM的高速缓存”的内容迁移到所述系统存储器的部件,
其中,生成所述“作为RAM的高速缓存”的页面表的部件包括:将所述处理器的控制寄存器设置成指向所述“作为RAM的高速缓存”中的页面目录的部件。
12.如权利要求11所述的装置,其特征在于,生成所述“作为RAM的高速缓存”的页面表的部件包括:从所述处理器的存储器类型范围寄存器中检索存储器类型信息的部件,存储器类型范围寄存器描述系统存储器的地址范围的存储器类型。
13.如权利要求12所述的装置,其特征在于,生成所述“作为RAM的高速缓存”的页面表的部件包括:
将所述地址范围映射到所述“作为RAM的高速缓存”中的页面表条目的部件。
14.如权利要求12所述的装置,其特征在于,生成所述“作为RAM的高速缓存”的页面表的部件包括:
将所述地址范围转换为多个地址范围,并将所述多个地址范围映射到所述“作为RAM的高速缓存”中对应的多个页面表条目的部件。
15.如权利要求11所述的装置,其特征在于,所述“作为RAM的高速缓存”是可寻址的64位存储器。
16.一种用于预启动计算机系统的方法,所述计算机系统包括:
处理器;
耦合到所述处理器的同步动态随机存取存储器(SDRAM)单元;以及
耦合到所述处理器的存储器,其中,所述存储器包括由所述处理器运行的多条指令,
所述方法包括:
在所述计算机系统的预启动阶段配置所述处理器的“作为随机存取存储器(RAM)的高速缓存”;
在初始化所述SDRAM单元之前生成所述“作为RAM的高速缓存”的页面表,其中,所述页面表存储在所述“作为RAM的高速缓存”中;
在初始化所述SDRAM单元之前启用所述处理器的64位存储器寻址模式;
初始化所述SDRAM单元;以及
将所述“作为RAM的高速缓存”的内容迁移到所述SDRAM单元,
其中,生成所述“作为RAM的高速缓存”的页面表的步骤包括:从所述处理器的存储器类型范围寄存器中检索存储器类型信息,其中,存储器类型范围寄存器描述所述SDRAM单元的地址范围的存储器类型。
17.如权利要求16所述的方法,其特征在于,生成所述“作为RAM的高速缓存”的页面表的步骤包括:
如果所述地址范围具有相同的存储器类型,则将所述地址范围映射到所述“作为RAM的高速缓存”的页面表条目;
如果所述地址范围包括一个以上存储器类型,则将所述地址范围转换为多个地址范围,并将所述多个地址范围映射到所述“作为RAM的高速缓存”中对应的多个页面表条目;以及
将所述处理器的控制寄存器设置成指向所述“作为RAM的高速缓存”的页面目录。
18.如权利要求16所述的方法,其特征在于,所述处理器包括具有64位存储器寻址模式的32位处理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/220,422 | 2005-09-07 | ||
US11/220,422 US7493460B2 (en) | 2005-09-07 | 2005-09-07 | Preboot memory of a computer system |
PCT/US2006/030181 WO2007030241A1 (en) | 2005-09-07 | 2006-08-03 | Preboot memory of a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101258467A CN101258467A (zh) | 2008-09-03 |
CN101258467B true CN101258467B (zh) | 2012-12-05 |
Family
ID=37398929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680032817.0A Expired - Fee Related CN101258467B (zh) | 2005-09-07 | 2006-08-03 | 用于预启动计算机系统的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7493460B2 (zh) |
EP (1) | EP1922617B1 (zh) |
CN (1) | CN101258467B (zh) |
AT (1) | ATE431586T1 (zh) |
DE (1) | DE602006006846D1 (zh) |
WO (1) | WO2007030241A1 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493460B2 (en) | 2005-09-07 | 2009-02-17 | Intel Corporation | Preboot memory of a computer system |
US8352718B1 (en) * | 2005-11-29 | 2013-01-08 | American Megatrends, Inc. | Method, system, and computer-readable medium for expediting initialization of computing systems |
CN100504779C (zh) * | 2006-06-30 | 2009-06-24 | 联想(北京)有限公司 | 一种加速bios运行的方法 |
US8078637B1 (en) * | 2006-07-28 | 2011-12-13 | Amencan Megatrends, Inc. | Memory efficient peim-to-peim interface database |
US7873807B1 (en) * | 2006-07-28 | 2011-01-18 | American Megatrends, Inc. | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware |
US7698547B1 (en) * | 2006-07-28 | 2010-04-13 | American Megatrends, Inc. | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware |
US20080059720A1 (en) * | 2006-09-05 | 2008-03-06 | Rothman Michael A | System and method to enable prioritized sharing of devices in partitioned environments |
US7627718B2 (en) * | 2006-12-13 | 2009-12-01 | Intel Corporation | Frozen ring cache |
US7987348B2 (en) * | 2007-03-30 | 2011-07-26 | Intel Corporation | Instant on video |
US7840792B2 (en) * | 2007-04-25 | 2010-11-23 | American Megatrends, Inc. | Utilizing hand-off blocks in system management mode to allow independent initialization of SMBASE between PEI and DXE phases |
KR101430687B1 (ko) * | 2007-09-28 | 2014-08-18 | 삼성전자주식회사 | 다이렉트 억세스 부팅동작을 갖는 멀티 프로세서 시스템 및그에 따른 다이렉트 억세스 부팅방법 |
US8145893B2 (en) * | 2007-10-26 | 2012-03-27 | Intel Corporation | Hot-plugging a memory device |
US8103862B2 (en) * | 2008-06-25 | 2012-01-24 | Dell Products L.P. | Self test initialization |
US8726364B2 (en) * | 2008-06-30 | 2014-05-13 | Intel Corporation | Authentication and access protection of computer boot modules in run-time environments |
US20100083365A1 (en) * | 2008-09-30 | 2010-04-01 | Naga Gurumoorthy | Apparatus and method to harden computer system |
US8132267B2 (en) * | 2008-09-30 | 2012-03-06 | Intel Corporation | Apparatus and method to harden computer system |
US8495601B2 (en) | 2010-06-09 | 2013-07-23 | Lear Corporation | Shared memory architecture |
US8539472B2 (en) | 2010-06-09 | 2013-09-17 | Lear Corporation | Method and system of updating shared memory |
US8522066B2 (en) | 2010-06-25 | 2013-08-27 | Intel Corporation | Providing silicon integrated code for a system |
US8312258B2 (en) * | 2010-07-22 | 2012-11-13 | Intel Corporation | Providing platform independent memory logic |
US20140089573A1 (en) * | 2012-09-24 | 2014-03-27 | Palsamy Sakthikumar | Method for accessing memory devices prior to bus training |
US9128824B2 (en) * | 2012-12-24 | 2015-09-08 | Intel Corporation | In-place change between transient and persistent state for data structures on non-volatile memory |
US9230081B2 (en) | 2013-03-05 | 2016-01-05 | Intel Corporation | User authorization and presence detection in isolation from interference from and control by host central processing unit and operating system |
US9705869B2 (en) | 2013-06-27 | 2017-07-11 | Intel Corporation | Continuous multi-factor authentication |
US9563437B2 (en) * | 2014-06-27 | 2017-02-07 | Intel Corporation | Technologies for pre-memory phase initialization of a computing device |
CN104573529B (zh) * | 2015-01-28 | 2018-04-17 | 加弘科技咨询(上海)有限公司 | 一种bios固件的划分、更新方法和系统 |
US9875189B2 (en) * | 2015-06-12 | 2018-01-23 | Intel Corporation | Supporting secure memory intent |
US10073964B2 (en) | 2015-09-25 | 2018-09-11 | Intel Corporation | Secure authentication protocol systems and methods |
US10203893B2 (en) | 2015-10-22 | 2019-02-12 | American Megatrends, Inc. | Memory channel storage device detection |
US10558468B2 (en) * | 2015-10-22 | 2020-02-11 | American Megatrends International, Llc | Memory channel storage device initialization |
JP2017162283A (ja) * | 2016-03-10 | 2017-09-14 | 富士通株式会社 | スマート装置、スワップ方法及びスワッププログラム |
CN106293620B (zh) * | 2016-08-09 | 2019-05-14 | 浪潮电子信息产业股份有限公司 | intel平台检测Flash Rom中参数的方法 |
US10346177B2 (en) | 2016-12-14 | 2019-07-09 | Intel Corporation | Boot process with parallel memory initialization |
US10108800B1 (en) | 2017-01-10 | 2018-10-23 | Gbs Laboratories, Llc | ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods |
CN110069336A (zh) * | 2018-01-22 | 2019-07-30 | 合肥杰发科技有限公司 | 内存资源分配方法、分配装置、芯片和存储装置 |
US11550592B2 (en) * | 2018-06-29 | 2023-01-10 | Intel Corporation | Methods and apparatus to utilize non-volatile memory for computer system boot |
CN115129384A (zh) * | 2021-03-25 | 2022-09-30 | 华为技术有限公司 | 一种电子设备的启动程序的运行方法和电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809531A (en) * | 1992-09-21 | 1998-09-15 | Intel Corporation | Computer system for executing programs using an internal cache without accessing external RAM |
US6374338B1 (en) * | 1999-06-25 | 2002-04-16 | International Business Machines Corporation | Method for performing configuration tasks prior to and including memory configuration within a processor-based system |
US7082509B2 (en) * | 2003-02-06 | 2006-07-25 | Intel Corporation | Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time |
US7127600B2 (en) * | 2003-09-30 | 2006-10-24 | Intel Corporation | Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting |
US7149890B2 (en) * | 2003-11-21 | 2006-12-12 | Intel Corporation | Initializing system memory |
US7493460B2 (en) | 2005-09-07 | 2009-02-17 | Intel Corporation | Preboot memory of a computer system |
-
2005
- 2005-09-07 US US11/220,422 patent/US7493460B2/en not_active Expired - Fee Related
-
2006
- 2006-08-03 EP EP06789241A patent/EP1922617B1/en not_active Not-in-force
- 2006-08-03 CN CN200680032817.0A patent/CN101258467B/zh not_active Expired - Fee Related
- 2006-08-03 WO PCT/US2006/030181 patent/WO2007030241A1/en active Application Filing
- 2006-08-03 DE DE602006006846T patent/DE602006006846D1/de active Active
- 2006-08-03 AT AT06789241T patent/ATE431586T1/de not_active IP Right Cessation
Non-Patent Citations (2)
Title |
---|
Intel.Intel Platform Innovation Framework for EFI Architecture Specification.《Intel Platform Innovation Framework for EFI Architecture Specification》.2003,第16页第2段,第19页2.2,第20页2.3.1,第23页3.1,第25页3.2.1,第30页3.4.4-3.4.5,第31页3.4.6-3.4.7、第16页图1-2. * |
Intel.System Programming Guide.《IA-32 Intel Architecture Software Developer"s Manual》.2004,第3卷第10-10页10.5,第10-24页10.11,第10-41至10-42页10.12.3-10.12.4. * |
Also Published As
Publication number | Publication date |
---|---|
WO2007030241A1 (en) | 2007-03-15 |
CN101258467A (zh) | 2008-09-03 |
EP1922617B1 (en) | 2009-05-13 |
EP1922617A1 (en) | 2008-05-21 |
DE602006006846D1 (de) | 2009-06-25 |
US20070055856A1 (en) | 2007-03-08 |
US7493460B2 (en) | 2009-02-17 |
ATE431586T1 (de) | 2009-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101258467B (zh) | 用于预启动计算机系统的方法和装置 | |
CN101346706B (zh) | 虚拟转换后备缓冲器 | |
CN101364189B (zh) | 在操作系统协助下实现运行时间处理器迁移的方法和装置 | |
US7302517B2 (en) | Apparatus and method for controlling execute-in-place (XIP) in serial flash memory, and flash memory chip using the same | |
CN100456272C (zh) | 利用快闪存储器引导的系统和方法 | |
CN101421701B (zh) | 用于引导非易失性存储器的方法、设备和系统 | |
KR100907722B1 (ko) | 메모리 단편화를 감소시키는 방법, 제조물 및 컴퓨터시스템 | |
US5522076A (en) | Computer system having BIOS (basic input/output system)-ROM (Read Only Memory) writing function | |
US7082509B2 (en) | Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time | |
CN100454273C (zh) | 用于块内页面分组的方法及设备 | |
US4511964A (en) | Dynamic physical memory mapping and management of independent programming environments | |
CN1258702C (zh) | 为不同的指令集结构所编写的固件之间进行通信的方法 | |
RU2509347C2 (ru) | Гибкое увеличение страниц памяти | |
US20170109089A1 (en) | Method and Apparatus for Providing Hybrid Mode to Access SSD Drive | |
CN102754076A (zh) | 用于在虚拟化环境中处理i/o操作的方法和设备 | |
EP1891533B1 (en) | Translating loads for accelerating virtualized partition | |
US7516297B2 (en) | Memory management | |
CN101091163B (zh) | 系统固件的可管理扩展方法、装置和系统 | |
JPH09282111A (ja) | 半導体メモリ装置及びその制御方法 | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US20060087885A1 (en) | Memory card, semiconductor device, and method of controlling memory card | |
JPH11161547A (ja) | データ処理装置用記憶装置、および記憶場所にアクセスする方法 | |
CN101477496A (zh) | 基于分布式内存虚拟化的numa结构的实现方法 | |
US5822784A (en) | Mechanism supporting execute in place read only memory applications located on removable computer cards | |
US10324867B2 (en) | Systems and devices having a scalable basic input/output system (BIOS) footprint and associated methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20180803 |