專利名稱:減少存儲(chǔ)器分段的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域,更具體地說(shuō),但不是排他地,涉及減少存儲(chǔ)器分段。
背景技術(shù):
在典型計(jì)算機(jī)體系結(jié)構(gòu)中,由基本輸入/輸出系統(tǒng)(BIOS)進(jìn)行的計(jì)算機(jī)系統(tǒng)的初始化和配置通常稱為預(yù)引導(dǎo)階段。預(yù)引導(dǎo)階段一般定義為在處理器復(fù)位和操作系統(tǒng)(OS)加載器之間運(yùn)行的固件。在預(yù)引導(dǎo)開(kāi)始,是由固件中的代碼將系統(tǒng)初始化到從介質(zhì)例如硬盤(pán)下載的操作系統(tǒng)可接管的那點(diǎn)。開(kāi)始OS加載就開(kāi)始了通常稱為OS運(yùn)行時(shí)間的時(shí)期。在OS運(yùn)行時(shí)間期間,固件可作為計(jì)算機(jī)系統(tǒng)的軟件和硬件組件之間的接口,以及處理與系統(tǒng)有關(guān)的任務(wù)。隨著計(jì)算機(jī)系統(tǒng)已變得更為復(fù)雜,OS級(jí)和硬件級(jí)之間的操作環(huán)境一般稱為固件或固件環(huán)境。
在預(yù)引導(dǎo)期間,形成一個(gè)預(yù)引導(dǎo)存儲(chǔ)器映像,它被傳遞給操作系統(tǒng)。預(yù)引導(dǎo)存儲(chǔ)器映像指明留給系統(tǒng)使用的存儲(chǔ)器地址以及OS可用的地址。OS使用該預(yù)引導(dǎo)存儲(chǔ)器映像形成其自己的存儲(chǔ)器管理方案。由于預(yù)引導(dǎo)階段日益復(fù)雜,預(yù)引導(dǎo)存儲(chǔ)器映像常有許多分段的部分。許多當(dāng)今的操作系統(tǒng)不能支持具有過(guò)多分段的預(yù)引導(dǎo)存儲(chǔ)器映像。
參閱以下附圖對(duì)本發(fā)明的非限制性和非排他性實(shí)施例加以說(shuō)明,其中除非另有規(guī)定,在所有視圖中相同的參考編號(hào)指相同的部件。
圖1的框圖示出按照本發(fā)明示教減少存儲(chǔ)器分段的一個(gè)實(shí)施例。
圖2的框圖示出按照本發(fā)明示教支持減少存儲(chǔ)器分段的環(huán)境的一個(gè)實(shí)施例。
圖3的流程圖示出按照本發(fā)明示教減少存儲(chǔ)器分段的邏輯和操作的一個(gè)實(shí)施例。
圖4的流程圖示出按照本發(fā)明示教減少存儲(chǔ)器分段的邏輯和操作的一個(gè)實(shí)施例。
圖5的流程圖示出按照本發(fā)明示教減少存儲(chǔ)器分段的邏輯和操作的一個(gè)實(shí)施例。
圖6的框圖示出實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例。
具體實(shí)施例方式
在以下說(shuō)明中,為對(duì)本發(fā)明的實(shí)施例提供透徹的理解,闡述了許多具體細(xì)節(jié)。但所屬領(lǐng)域的技術(shù)人員會(huì)理解,沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié),或用其他方法、組件、材料等,也可實(shí)現(xiàn)本發(fā)明的實(shí)施例。在其他情況下,眾所周知的結(jié)構(gòu)、材料或操作未予示出或詳細(xì)說(shuō)明,以免模糊了對(duì)本發(fā)明的理解。
在整個(gè)說(shuō)明書(shū)中提到“一個(gè)實(shí)施例”或“實(shí)施例”是指結(jié)合該實(shí)施例所述的特定特性、結(jié)構(gòu)或特征包含在本發(fā)明的至少一個(gè)實(shí)施例中。因此,在整個(gè)說(shuō)明書(shū)各個(gè)地方出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”或“在實(shí)施例中”不一定都指同一實(shí)施例。而且,該特定特性、結(jié)構(gòu)或特征可以用任何適合方式組合在一個(gè)或多個(gè)實(shí)施例中。
本文所述的固件環(huán)境實(shí)施例可基本上依照可擴(kuò)展固件接口(EFI)(Extensible Firmware Interface Specification,Version 1.10,December1,2002,可在http://developer.intel.com/technology/efi得到)來(lái)實(shí)現(xiàn)。EFI使形式為固件模塊諸如驅(qū)動(dòng)器的固件能夠從各種不同資源加載,包括閃存裝置、可選ROM(只讀存儲(chǔ)器)、其它存儲(chǔ)裝置,諸如硬盤(pán)、CD-ROM(光盤(pán)-只讀存儲(chǔ)器)等,或從計(jì)算機(jī)網(wǎng)絡(luò)上的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)加載。實(shí)現(xiàn)EFI規(guī)范的一個(gè)實(shí)施例在IntelPlaftormInnovation Framework for EFI Architecture Specification-Draft forReview(Version 0.9,September 16,2003)中作了說(shuō)明,以下稱為“框架”(可在www.intel.com/technology/framework得到)。應(yīng)理解,本發(fā)明的實(shí)施例不限于“框架”或依照EFI規(guī)范的實(shí)現(xiàn)。
現(xiàn)參閱圖1,圖中示出減少存儲(chǔ)器分段的實(shí)施例。預(yù)引導(dǎo)存儲(chǔ)器映像102說(shuō)明在預(yù)引導(dǎo)階段期間物理存儲(chǔ)器的存儲(chǔ)器地址0到X的分配,示為110。在一個(gè)實(shí)施例中,預(yù)引導(dǎo)存儲(chǔ)器映像102包括先進(jìn)配置與電源接口(ACPI)E820表(Advanced Configuration and PowerInterface Specification,version 2.0b,October 11,2002)。一般來(lái)說(shuō),E820表說(shuō)明什么物理存儲(chǔ)器OS可用、什么保留給系統(tǒng)、或不存在。
在預(yù)引導(dǎo)期間,將各種存儲(chǔ)器類型分配給固件模塊130-134。在一個(gè)實(shí)施例中,固件模塊可包括一組有關(guān)的指令,通常稱為代碼,和/或數(shù)據(jù)緩沖器。在圖1中,固件模塊130包括指令130A和數(shù)據(jù)緩沖器130B。數(shù)據(jù)緩沖器130B可由指令130A用于為各種目的存放和檢索各種數(shù)據(jù)。指令和數(shù)據(jù)緩沖器不一定被指派到鄰接的存儲(chǔ)器地址,而是可以在分離的存儲(chǔ)器地址塊中。固件模塊可包括驅(qū)動(dòng)器,諸如EFI驅(qū)動(dòng)器、函數(shù)調(diào)用、協(xié)議等等。固件模塊的一些實(shí)施例可能不會(huì)持續(xù)到OS運(yùn)行時(shí)間,而其它固件模塊在預(yù)引導(dǎo)和OS運(yùn)行時(shí)間期間都可用。
在固件模塊加載過(guò)程期間,固件模塊可向固件存儲(chǔ)器管理器106請(qǐng)求各種大小的一個(gè)或多個(gè)存儲(chǔ)器類型的存儲(chǔ)器分配。在一個(gè)實(shí)施例中,固件存儲(chǔ)器管理器106可持續(xù)到OS運(yùn)行時(shí)間。固件存儲(chǔ)器管理器106可指派對(duì)應(yīng)于所請(qǐng)求存儲(chǔ)器類型的固件模塊存儲(chǔ)器地址。
這種存儲(chǔ)器分配可導(dǎo)致預(yù)引導(dǎo)存儲(chǔ)器映像102的分段。在本文中使用的分段包括某種類型存儲(chǔ)器的鄰接塊。在圖1的實(shí)施例中,預(yù)引導(dǎo)存儲(chǔ)器映像102被分段為4種類型的存儲(chǔ)器,類型1-4。例如,分段120是由存儲(chǔ)器類型2構(gòu)成的。
在如103所示的聚結(jié)之后,預(yù)引導(dǎo)存儲(chǔ)器映像102被聚結(jié),如101所示。聚結(jié)是基于存儲(chǔ)器類型進(jìn)行的,以使同一存儲(chǔ)器類型移動(dòng)到一起形成鄰接塊。在一個(gè)實(shí)施例中,所有的存儲(chǔ)器分段都可被聚結(jié)。在另一實(shí)施例中,預(yù)引導(dǎo)存儲(chǔ)器映像被聚結(jié),一次一個(gè)固件模塊,直到存儲(chǔ)器分段低于預(yù)定閾值水平為止(以下討論)。例如,在圖1中,類型2存儲(chǔ)器的分段120和分段121被聚結(jié)成類型2存儲(chǔ)器的分段122。因此,兩個(gè)分段就已被聚結(jié)成一個(gè)分段。
在一個(gè)實(shí)施例中,存儲(chǔ)器類型包括ACPI規(guī)范所述的類型。這些ACPI存儲(chǔ)器類型示于下表1中。
表1
在依照ACPI的系統(tǒng)中,在預(yù)引導(dǎo)期間,固件將E820表報(bào)告給操作系統(tǒng)指導(dǎo)的配置和電源管理(OSPM)。簡(jiǎn)言之,OSPM是操作系統(tǒng)和ACPI功能之間的接口。當(dāng)OS取得控制時(shí),OS將使用E820表構(gòu)建它自己的存儲(chǔ)器映像。
在依照ACPI的系統(tǒng)中,有各種途徑供固件將存儲(chǔ)器映像傳送到OSPM。在一種方法中,在英特爾體系結(jié)構(gòu)(IA)系統(tǒng)中使用INT 15BIOS接口將預(yù)引導(dǎo)存儲(chǔ)器映像傳送到OS。在另一方法中,如果存儲(chǔ)器資源可被動(dòng)態(tài)添加或去除,則存儲(chǔ)器裝置定義在ACPI Namespace中,其傳送由存儲(chǔ)器資源所描述的資源信息。
在依照EFI的系統(tǒng)中,EFI引導(dǎo)業(yè)務(wù)函數(shù)(GetMemoryMap())可用來(lái)將預(yù)引導(dǎo)存儲(chǔ)器映像傳送到OS加載器。該映像然后由OS加載器傳送到OSPM。GetMemoryMap()返回各種EFI存儲(chǔ)器描述符。這些EFI存儲(chǔ)器描述符定義所有已安裝的隨機(jī)存取存儲(chǔ)器(RAM)以及由固件保留的物理存儲(chǔ)器范圍的系統(tǒng)存儲(chǔ)器映像。下表2示出EFI存儲(chǔ)器類型以及它們對(duì)應(yīng)的ACPI地址范圍類型的采樣。
表2
本文的實(shí)施例提供用于減少存儲(chǔ)器分段。例如,Red Hat Linux和Suse Linux可能不支持具有超過(guò)32個(gè)分段的預(yù)引導(dǎo)存儲(chǔ)器映像。在ACPI系統(tǒng)中,這對(duì)應(yīng)于32個(gè)E820表項(xiàng)。在另一實(shí)例中,Windows服務(wù)器操作系統(tǒng)可能不支持具有大于64個(gè)分段的預(yù)引導(dǎo)存儲(chǔ)器映像。隨著平臺(tái)復(fù)雜性增加,且固件環(huán)境變得更為健壯,分段可能超過(guò)32個(gè)分段。
本文的實(shí)施例提供用于動(dòng)態(tài)預(yù)引導(dǎo)存儲(chǔ)器映像碎片整理。在靜態(tài)方案下,存儲(chǔ)器類型的各種“桶”可以被預(yù)先分配。在預(yù)引導(dǎo)期間,每種存儲(chǔ)器類型的使用簡(jiǎn)檔可基于初始引導(dǎo)被存儲(chǔ)在非易失性儲(chǔ)存器中。然后,重新引導(dǎo)系統(tǒng),且基于使用簡(jiǎn)檔重新按比例分配“桶”。
但是,這種靜態(tài)方案是不切實(shí)際的。首先,這種靜態(tài)方案不提供系統(tǒng)配置的改變,而這種改變也可改變預(yù)引導(dǎo)存儲(chǔ)器映像的分段。
而且,有些平臺(tái),諸如服務(wù)器,必須滿足5-9’的“作業(yè)時(shí)間(up)”要求。5-9’是標(biāo)準(zhǔn)的客戶要求,即服務(wù)器必須在99.999%的時(shí)間內(nèi)可用。該5-9’的可用性等同于一年僅數(shù)分鐘的可接受停機(jī)時(shí)間。這種要求不能容忍過(guò)長(zhǎng)的重新引導(dǎo)過(guò)程以聚結(jié)預(yù)引導(dǎo)存儲(chǔ)器映像,諸如在靜態(tài)方案的情況下。本文的實(shí)施例不要求計(jì)算機(jī)系統(tǒng)的重新引導(dǎo)就允許預(yù)引導(dǎo)存儲(chǔ)器映像的碎片整理。
轉(zhuǎn)向圖2,示出支持減少存儲(chǔ)器分段的計(jì)算機(jī)系統(tǒng)200的實(shí)施例。固件204層疊在硬件202上。操作系統(tǒng)206層疊在固件204上。
硬件202包括處理器210、閃存212以及存儲(chǔ)器208。在一個(gè)實(shí)施例中,如本文所述用于減少存儲(chǔ)器分段的機(jī)器可存取指令被存儲(chǔ)在閃存212中。在另一實(shí)施例中,基本上依照EFI規(guī)范的減少存儲(chǔ)器分段的指令被存儲(chǔ)在閃存212中。在備選實(shí)施例中,代替閃存212或除閃存212之外,可使用其它類型的非易失性儲(chǔ)存器,諸如只讀存儲(chǔ)器(ROM)。
固件層204支持預(yù)引導(dǎo)存儲(chǔ)器映像102、固件存儲(chǔ)器管理器106、固件模塊130-134、調(diào)度器220以及閾值240。在圖2的實(shí)施例中,固件存儲(chǔ)器管理器106提供聚結(jié)協(xié)議216以及檢索分段協(xié)議218。在一個(gè)實(shí)施例中,支持固件存儲(chǔ)器管理器106、聚結(jié)協(xié)議216和檢索分段協(xié)議218的指令都存儲(chǔ)在閃存212中。固件存儲(chǔ)器管理器106、聚結(jié)協(xié)議216和檢索分段協(xié)議218將在以下詳述。
在一個(gè)實(shí)施例中,閾值240用于確定由預(yù)引導(dǎo)存儲(chǔ)器映像102所描述的存儲(chǔ)器是否需要被聚結(jié)。在一個(gè)實(shí)施例中,閾值240對(duì)應(yīng)于32個(gè)分段,而在另一實(shí)施例中,閾值240對(duì)應(yīng)于64個(gè)分段。在又一實(shí)施例中,閾值240和其它系統(tǒng)配置信息一起存儲(chǔ)在計(jì)算機(jī)系統(tǒng)200的非易失性儲(chǔ)存器中。這種非易失性儲(chǔ)存器可包括閃存212,或具有所存儲(chǔ)EFI變量的非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)。
在一個(gè)實(shí)施例中,調(diào)度器220可與以下結(jié)合圖4所述的減少分段的“選擇加入(opt-in)”實(shí)現(xiàn)方案一起使用。在“框架”的一個(gè)實(shí)施例中,調(diào)度器220包括引導(dǎo)裝置選擇(BDS)協(xié)議。
一般來(lái)說(shuō),調(diào)度器220接收來(lái)自固件模塊的“句柄”,它將選擇加入報(bào)告給聚結(jié)協(xié)議。句柄提供了用于由調(diào)度器220識(shí)別和聯(lián)系固件模塊的手段。調(diào)度器220登記支持聚結(jié)的固件模塊。
參閱圖3,示出減少存儲(chǔ)器分段的流程圖300的實(shí)施例。在框302開(kāi)始,計(jì)算機(jī)系統(tǒng)被啟動(dòng)或復(fù)位。進(jìn)到框304,在預(yù)引導(dǎo)期間,存儲(chǔ)器被固件存儲(chǔ)器管理器分配給固件(F/W)模塊。當(dāng)固件模塊被啟動(dòng)時(shí),固件模塊向固件存儲(chǔ)器管理器請(qǐng)求分配存儲(chǔ)器類型。固件存儲(chǔ)器管理器給固件模塊指派一個(gè)所請(qǐng)求類型的存儲(chǔ)器地址范圍。
繼續(xù)進(jìn)到判定框306,該邏輯確定固件是否準(zhǔn)備好引導(dǎo)操作系統(tǒng)。在依照EFI的實(shí)施例中,將ReadyToBoot事件發(fā)給系統(tǒng)。在EFI系統(tǒng)中,固件實(shí)體,諸如固件模塊,將進(jìn)行登記以注意給定的一組事件。當(dāng)事件觸發(fā)時(shí),諸如ReadyToBoot事件,一個(gè)實(shí)體將被告知,且該實(shí)體將執(zhí)行各種任務(wù)以作響應(yīng),諸如清除等。在一個(gè)實(shí)施例中,這些任務(wù)可包括本文所述的聚結(jié)。
如果對(duì)判定框306的回答是“否”,則該邏輯返回到框304,繼續(xù)給固件模塊分配存儲(chǔ)器。如果對(duì)判定框306的回答為“是”,則該邏輯繼續(xù)進(jìn)到框308。
在框308,對(duì)存儲(chǔ)器分段進(jìn)行檢索。在一個(gè)實(shí)施例中,檢索分段協(xié)議被調(diào)用,且檢索分段協(xié)議返回在預(yù)引導(dǎo)存儲(chǔ)器映像中的分段數(shù)。
進(jìn)到框310,該邏輯確定預(yù)引導(dǎo)存儲(chǔ)器映像的分段是否超過(guò)閾值。如果回答是“否”,則邏輯進(jìn)到框312,引導(dǎo)操作系統(tǒng)。如果回答為“是”,則邏輯進(jìn)到框314,聚結(jié)給固件模塊分配的存儲(chǔ)器。
在一個(gè)實(shí)施例中,聚結(jié)會(huì)將一部分固件模塊,諸如固件模塊的數(shù)據(jù)緩沖器,映像到類似存儲(chǔ)器類型的鄰接塊中,由此減少存儲(chǔ)器的分段。例如,在此特定實(shí)施例中,固件模塊的指令部分可留在原先分配的存儲(chǔ)器位置,但數(shù)據(jù)緩沖器部分可作為聚結(jié)的一部分而移到一個(gè)新位置。在另一實(shí)施例中,整個(gè)固件模塊將被聚結(jié)。
在一個(gè)實(shí)施例中,調(diào)用聚結(jié)協(xié)議以聚結(jié)固件模塊。聚結(jié)協(xié)議可返回一個(gè)指向固件模塊新存儲(chǔ)器位置的指針。應(yīng)理解,對(duì)存儲(chǔ)介質(zhì)諸如存儲(chǔ)器或硬盤(pán)進(jìn)行碎片整理的方法對(duì)所屬領(lǐng)域技術(shù)人員來(lái)說(shuō)是眾所周知的。
繼續(xù)進(jìn)到判定框316,該邏輯確定是否有更多的固件模塊要聚結(jié)。如果回答為“是”,則邏輯返回到框308。如果對(duì)判定框316的回答是“否”,則邏輯進(jìn)到框312,引導(dǎo)OS。
現(xiàn)轉(zhuǎn)向圖4,流程圖400示出減少存儲(chǔ)器分段的一個(gè)實(shí)施例。流程圖400示出固件模塊選擇加入方案,其中固件模塊登記它們是否被編碼以支持聚結(jié)。
在框402開(kāi)始,計(jì)算機(jī)系統(tǒng)被復(fù)位/啟動(dòng)。繼續(xù)進(jìn)到框404,由固件存儲(chǔ)器管理器向固件模塊通告聚結(jié)協(xié)議。在一個(gè)實(shí)施例中,為了通告聚結(jié)協(xié)議,固件存儲(chǔ)器管理器向固件模塊傳送一個(gè)指針,指明聚結(jié)協(xié)議的存儲(chǔ)器地址。
繼續(xù)進(jìn)到框405,存儲(chǔ)器被固件存儲(chǔ)器管理器分配給在預(yù)引導(dǎo)期間加載的固件模塊。繼續(xù)進(jìn)到框406,如果固件模塊支持聚結(jié),則該信息用調(diào)度器登記。
繼續(xù)進(jìn)到判定框408,該邏輯確定系統(tǒng)是否準(zhǔn)備好引導(dǎo)操作系統(tǒng)。如果對(duì)判定框408的回答是“否”,則邏輯返回到框405。如果對(duì)判定框408的回答為“是”,則邏輯繼續(xù)進(jìn)到框410。
在框410,使用檢索分段協(xié)議來(lái)檢索存儲(chǔ)器的分段。進(jìn)到判定框412,該邏輯確定分段是否高于閾值。如果回答是“否”,則邏輯繼續(xù)進(jìn)到框414,引導(dǎo)OS。如果對(duì)判定框412的回答為“是”,則邏輯繼續(xù)進(jìn)到框416,啟動(dòng)固件模塊的聚結(jié)協(xié)議。在一個(gè)實(shí)施例中,固件模塊調(diào)用聚結(jié)協(xié)議。在另一實(shí)施例中,調(diào)度器調(diào)用聚結(jié)協(xié)議。
繼續(xù)進(jìn)到判定框418,該邏輯確定是否有更多的固件模塊支持聚結(jié)協(xié)議。在一個(gè)實(shí)施例中,咨詢由調(diào)度器維護(hù)的、支持聚結(jié)的所登記固件模塊的列表。
如果對(duì)判定框418的回答是“否”,則邏輯進(jìn)到框414,引導(dǎo)OS。如果對(duì)判定框418的回答為“是”,則邏輯返回到框410,檢索存儲(chǔ)器的分段。
在圖4的實(shí)施例中,應(yīng)理解,固件模塊被編碼以利用聚結(jié),如本文所述的。本文的實(shí)施例可用于是聚結(jié)參與者和非參與者的混合體的一組固件模塊。流程圖400的選擇加入方案允許固件模塊提供者根據(jù)需要利用聚結(jié)。
轉(zhuǎn)向圖5,流程圖500示出減少存儲(chǔ)器分段的一個(gè)實(shí)施例。流程圖500示出的實(shí)施例中聚結(jié)由固件存儲(chǔ)器管理器指導(dǎo)。在該實(shí)施例中,固件存儲(chǔ)器管理器利用其存儲(chǔ)器分配的全能知識(shí)。
在框502開(kāi)始,計(jì)算機(jī)系統(tǒng)被啟動(dòng)/復(fù)位。繼續(xù)進(jìn)到框504,固件存儲(chǔ)器管理器給固件模塊分配存儲(chǔ)器。繼續(xù)進(jìn)到框505,固件存儲(chǔ)器管理器接收來(lái)自固件模塊的固件模塊接口,它使固件存儲(chǔ)器管理器能夠通知固件模塊其在聚結(jié)之后的新存儲(chǔ)器位置。
進(jìn)到判定框506,該邏輯確定系統(tǒng)是否準(zhǔn)備好引導(dǎo)OS。如果對(duì)判定框506的回答是“否”,則邏輯返回到框504。如果對(duì)判定框506的回答為“是”,則邏輯進(jìn)到框508。
在框508,由固件存儲(chǔ)器管理器使用檢索分段協(xié)議來(lái)檢索存儲(chǔ)器的分段。繼續(xù)進(jìn)到判定框510,該邏輯確定分段是否大于閾值。如果回答是“否”,則引導(dǎo)OS,如框512所示。如果回答為“是”,則邏輯繼續(xù)進(jìn)到框514。
在框514,固件存儲(chǔ)器管理器啟動(dòng)用于固件模塊的聚結(jié)協(xié)議。進(jìn)到判定框516,該邏輯確定是否有更多的固件模塊尚未通過(guò)聚結(jié)過(guò)程。如果對(duì)判定框516的回答為“是”,則邏輯返回到框508。
如果對(duì)判定框516的回答是“否”,則邏輯進(jìn)到框518,在此固件存儲(chǔ)器管理器通知已聚結(jié)的固件模塊它們的新存儲(chǔ)器位置。在一個(gè)實(shí)施例中,固件存儲(chǔ)器管理器給固件模塊傳送一個(gè)指向它們的數(shù)據(jù)緩沖器的新位置的指針。在一個(gè)實(shí)施例中,固件存儲(chǔ)器管理器可以使用在框505中傳送到固件存儲(chǔ)器管理器的固件模塊接口來(lái)通知固件模塊。
本文的實(shí)施例提供用于動(dòng)態(tài)減少存儲(chǔ)器分段且不需要計(jì)算機(jī)系統(tǒng)重新引導(dǎo)。一些IA32和擴(kuò)展存儲(chǔ)器64技術(shù)(EM64T)操作系統(tǒng)不支持多于32個(gè)E820表項(xiàng)。簡(jiǎn)言之,EM64T使32位系統(tǒng)能夠?qū)ぶ犯哂?千兆字節(jié)行的存儲(chǔ)器。在依照EFI的系統(tǒng)中,E820表實(shí)質(zhì)上是EFI存儲(chǔ)器映像的變換,因此E820表項(xiàng)數(shù)與EFI固件模塊的分段程度成比例。
圖6示出可在其上實(shí)現(xiàn)本發(fā)明實(shí)施例的示范計(jì)算機(jī)系統(tǒng)600的一個(gè)實(shí)施例。計(jì)算機(jī)系統(tǒng)600包括耦接到芯片組606的處理器602和存儲(chǔ)器(memory)604。儲(chǔ)存器(storage)612、非易失性儲(chǔ)存器(NVS)605、網(wǎng)絡(luò)接口614和輸入/輸出(I/O)裝置618也可耦接到芯片組606。
計(jì)算機(jī)系統(tǒng)600的實(shí)施例包括但不限于臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、服務(wù)器、個(gè)人數(shù)字助理、網(wǎng)絡(luò)工作站等等。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)600至少包括耦接到存儲(chǔ)器604的處理器602,處理器602執(zhí)行存儲(chǔ)在存儲(chǔ)器604中的指令。
處理器602可包括但不限于Intel Corporation x86、Pentium、Xeon或Itanium系列處理器等。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)600可包括多個(gè)處理器。存儲(chǔ)器604可包括但不限于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)、Rambus動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(RDRAM)等。
芯片組606可包括存儲(chǔ)器控制器集線器(MCH)、輸入/輸出控制器集線器(ICH)等。芯片組606還可包括系統(tǒng)時(shí)鐘支持、電源管理支持、音頻支持、圖形支持等。在一個(gè)實(shí)施例中,芯片組606耦接到包括用于處理器602和存儲(chǔ)器604的插座的板上。
計(jì)算機(jī)系統(tǒng)600的組件可用各種總線連接,包括外圍部件互連(PCI)總線、系統(tǒng)管理總線(SMBUS)、小管腳數(shù)(LPC)總線、串行外圍接口(SPI)總線、加速圖形端口(AGP)接口等等。I/O裝置618可包括鍵盤(pán)、鼠標(biāo)、顯示器、打印機(jī)、掃描器等等。
計(jì)算機(jī)系統(tǒng)600可通過(guò)網(wǎng)絡(luò)接口614與外部系統(tǒng)對(duì)接。網(wǎng)絡(luò)接口614可包括但不限于調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)、或用于將計(jì)算機(jī)系統(tǒng)耦接到其它計(jì)算機(jī)系統(tǒng)的其它接口。載波信號(hào)623由網(wǎng)絡(luò)接口614接收/發(fā)射。在圖6所示的實(shí)施例中,載波信號(hào)623用來(lái)使計(jì)算機(jī)系統(tǒng)600與網(wǎng)絡(luò)624對(duì)接,諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)、或它們的任何組合。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)624還耦接到計(jì)算機(jī)系統(tǒng)625上,以使計(jì)算機(jī)系統(tǒng)600和計(jì)算機(jī)系統(tǒng)625可在網(wǎng)絡(luò)624上通信。
計(jì)算機(jī)系統(tǒng)600還包括非易失性儲(chǔ)存器605,其上可存儲(chǔ)固件和/或數(shù)據(jù)。非易失性儲(chǔ)存裝置包括但不限于只讀存儲(chǔ)器(ROM)、閃存、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)等等。儲(chǔ)存器612包括但不限于磁硬盤(pán)、磁帶、光盤(pán)等等。應(yīng)理解,可由處理器602執(zhí)行的指令可駐留在儲(chǔ)存器612、存儲(chǔ)器604以及非易失性儲(chǔ)存器605中,或可經(jīng)由網(wǎng)絡(luò)接口614發(fā)射或接收。
應(yīng)理解,在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)600可執(zhí)行操作系統(tǒng)(OS)軟件。例如,本發(fā)明的一個(gè)實(shí)施例使用Microsoft Windows作為計(jì)算機(jī)系統(tǒng)600的操作系統(tǒng)。也可用于計(jì)算機(jī)系統(tǒng)600的其它操作系統(tǒng)包括但不限于Apple Macintosh操作系統(tǒng)、Linux操作系統(tǒng)、Unix操作系統(tǒng)等等。
出于本說(shuō)明書(shū)的目的,機(jī)器可存取介質(zhì)包括提供(即存儲(chǔ)和/或發(fā)射)以機(jī)器(例如計(jì)算機(jī)、網(wǎng)絡(luò)裝置、個(gè)人數(shù)字助理、制造工具、具有一組一個(gè)或多個(gè)處理器的任何裝置等)可讀或可存取形式的信息的任何機(jī)構(gòu)。例如,機(jī)器可存取介質(zhì)包括但不限于可記錄/不可記錄介質(zhì)(例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤(pán)存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存裝置等)。此外,機(jī)器可存取介質(zhì)可包括傳播的信號(hào),諸如電、光、聲或其它形式的傳播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào)等)。
本文說(shuō)明了本發(fā)明各種操作的實(shí)施例。這些操作可由機(jī)器使用處理器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)等來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,所描述的一個(gè)或多個(gè)操作可構(gòu)成存儲(chǔ)在機(jī)器可存取介質(zhì)上的指令,這些指令被機(jī)器執(zhí)行時(shí)會(huì)使機(jī)器執(zhí)行所述操作。說(shuō)明一些或全部操作的順序不應(yīng)被認(rèn)為這些操作必須按照一定的順序。所屬領(lǐng)域的技術(shù)人員也可采用具有本說(shuō)明書(shū)好處的備選排序。而且,應(yīng)理解,在本發(fā)明的每個(gè)實(shí)施例中并非所有操作都必須存在。
對(duì)本發(fā)明圖示實(shí)施例的以上說(shuō)明,包括摘要中所述的,并不旨在詳盡無(wú)遺,或是將實(shí)施例限制在所公開(kāi)的精確形式。雖然為了說(shuō)明的目,本文對(duì)本發(fā)明的具體實(shí)施例以及實(shí)例作了說(shuō)明,但可以有各種等效的修改,這是所屬領(lǐng)域技術(shù)人員會(huì)理解的。根據(jù)上述詳細(xì)說(shuō)明,可以對(duì)本發(fā)明的實(shí)施例作出這些修改。在以下權(quán)利要求書(shū)中使用的術(shù)語(yǔ)不應(yīng)被認(rèn)為是將本發(fā)明限制在說(shuō)明書(shū)中所公開(kāi)的具體實(shí)施例上。而是,以下權(quán)利要求書(shū)應(yīng)按照權(quán)利要求解釋的已建立學(xué)說(shuō)加以解釋。
權(quán)利要求
1.一種方法,包括在計(jì)算機(jī)系統(tǒng)的預(yù)引導(dǎo)階段期間給固件模塊分配存儲(chǔ)器,其中所述存儲(chǔ)器是基于多個(gè)存儲(chǔ)器類型進(jìn)行分配的;確定存儲(chǔ)器的分段,其中分段包括同一類型存儲(chǔ)器的鄰接塊;如果所述分段大于閾值,則基于所述多個(gè)存儲(chǔ)器類型聚結(jié)分配給所述固件模塊的至少一部分存儲(chǔ)器;以及由所述計(jì)算機(jī)系統(tǒng)引導(dǎo)操作系統(tǒng)。
2.如權(quán)利要求1所述的方法,其中在聚結(jié)分配給所述固件模塊的存儲(chǔ)器和引導(dǎo)所述操作系統(tǒng)之間所述計(jì)算機(jī)系統(tǒng)不復(fù)位。
3.如權(quán)利要求1所述的方法,其中如果所述固件模塊支持聚結(jié),則聚結(jié)分配給所述固件模塊的存儲(chǔ)器。
4.如權(quán)利要求3所述的方法,還包括如果所述固件模塊支持聚結(jié),則用調(diào)度器登記所述固件模塊,所述調(diào)度器跟蹤支持聚結(jié)的固件模塊。
5.如權(quán)利要求3所述的方法,其中所述聚結(jié)由所述固件模塊和所述調(diào)度器之一啟動(dòng)。
6.如權(quán)利要求1所述的方法,其中聚結(jié)分配給所述固件模塊的至少一部分存儲(chǔ)器包括由固件存儲(chǔ)器管理器啟動(dòng)所述聚結(jié);以及由所述固件存儲(chǔ)器管理器通知所述固件模塊至少一部分所述固件模塊的新存儲(chǔ)器位置,作為所述聚結(jié)的結(jié)果。
7.如權(quán)利要求1所述的方法,其中所述多個(gè)存儲(chǔ)器類型包括先進(jìn)配置與電源接口(ACPI)存儲(chǔ)器類型。
8.如權(quán)利要求1所述的方法,其中聚結(jié)分配給所述固件模塊的至少一部分存儲(chǔ)器包括聚結(jié)由所述固件模塊用作數(shù)據(jù)緩沖器的存儲(chǔ)器。
9.一件制品,包括機(jī)器可存取介質(zhì),包括多個(gè)指令,所述指令在被執(zhí)行時(shí)完成以下操作,所述操作包括在計(jì)算機(jī)系統(tǒng)的預(yù)引導(dǎo)階段期間由固件存儲(chǔ)器管理器給固件模塊分配存儲(chǔ)器,其中所述存儲(chǔ)器是基于多個(gè)存儲(chǔ)器類型進(jìn)行分配的;啟動(dòng)檢索分段協(xié)議,以確定由預(yù)引導(dǎo)存儲(chǔ)器映像所描述的存儲(chǔ)器分段,其中分段包括同一類型存儲(chǔ)器的鄰接塊;如果所述分段大于閾值,則啟動(dòng)聚結(jié)協(xié)議,以基于所述多個(gè)存儲(chǔ)器類型聚結(jié)分配給所述固件模塊的至少一部分存儲(chǔ)器;以及在所述計(jì)算機(jī)系統(tǒng)上引導(dǎo)操作系統(tǒng)。
10.如權(quán)利要求9所述的制品,其中在啟動(dòng)所述聚結(jié)協(xié)議和引導(dǎo)所述操作系統(tǒng)之間所述計(jì)算機(jī)系統(tǒng)不復(fù)位。
11.如權(quán)利要求9所述的制品,其中所述固件模塊包括指令部分和數(shù)據(jù)緩沖器部分,所述聚結(jié)協(xié)議聚結(jié)所述數(shù)據(jù)緩沖器部分。
12.如權(quán)利要求9所述的制品,其中如果所述固件模塊被編碼以支持所述聚結(jié)協(xié)議,則聚結(jié)分配給所述固件模塊的存儲(chǔ)器。
13.如權(quán)利要求12所述的制品,其中執(zhí)行所述多個(gè)指令還完成以下操作,所述操作包括如果所述固件模塊被編碼以支持所述聚結(jié)協(xié)議,則用調(diào)度器登記所述固件模塊。
14.如權(quán)利要求9所述的制品,其中啟動(dòng)所述聚結(jié)協(xié)議包括由所述固件存儲(chǔ)器管理器啟動(dòng)所述聚結(jié)協(xié)議;以及由所述固件存儲(chǔ)器管理器通知所述固件模塊至少一部分所述固件模塊的新存儲(chǔ)器位置,作為所述聚結(jié)的結(jié)果,其中所述固件存儲(chǔ)器管理器使用從所述固件模塊接收的固件模塊接口來(lái)通知所述固件模塊所述新存儲(chǔ)器位置。
15.如權(quán)利要求9所述的制品,其中所述多個(gè)存儲(chǔ)器類型包括先進(jìn)配置與電源接口(ACPI)存儲(chǔ)器類型。
16.如權(quán)利要求9所述的制品,其中所述多個(gè)指令基本上依照可擴(kuò)展固件接口規(guī)范。
17.一種計(jì)算機(jī)系統(tǒng),包括處理器;同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)單元,耦接到所述處理器;以及儲(chǔ)存單元,耦接到所述處理器,其中所述儲(chǔ)存單元包括多個(gè)指令,所述指令在被所述處理器執(zhí)行時(shí)完成以下操作,所述操作包括在所述計(jì)算機(jī)系統(tǒng)的預(yù)引導(dǎo)階段期間給固件模塊分配SDRAM,其中所述SDRAM是基于多個(gè)先進(jìn)配置與電源接口(ACPI)存儲(chǔ)器類型進(jìn)行分配的;啟動(dòng)檢索分段協(xié)議,以確定由預(yù)引導(dǎo)存儲(chǔ)器映像所描述的所述SDRAM分段,其中分段包括同一ACPI存儲(chǔ)器類型的SDRAM的鄰接塊;如果所述分段大于閾值,則啟動(dòng)聚結(jié)協(xié)議,以基于所述多個(gè)ACPI存儲(chǔ)器類型聚結(jié)分配給所述固件模塊的至少一部分SDRAM;以及在所述計(jì)算機(jī)系統(tǒng)上引導(dǎo)操作系統(tǒng)。
18.如權(quán)利要求17所述的系統(tǒng),其中在啟動(dòng)所述聚結(jié)協(xié)議和引導(dǎo)所述操作系統(tǒng)之間所述計(jì)算機(jī)系統(tǒng)不復(fù)位。
19.如權(quán)利要求17所述的系統(tǒng),其中如果所述固件模塊支持所述聚結(jié)協(xié)議,則聚結(jié)分配給所述固件模塊的SDRAM。
20.如權(quán)利要求17所述的系統(tǒng),其中啟動(dòng)所述聚結(jié)協(xié)議包括由所述固件存儲(chǔ)器管理器啟動(dòng)所述聚結(jié)協(xié)議;以及通知所述固件模塊至少一部分所述固件模塊的新存儲(chǔ)器位置,作為由所述聚結(jié)協(xié)議聚結(jié)的結(jié)果。
全文摘要
減少存儲(chǔ)器分段。在計(jì)算機(jī)系統(tǒng)的預(yù)引導(dǎo)階段期間分配存儲(chǔ)器,其中存儲(chǔ)器是基于多個(gè)存儲(chǔ)器類型進(jìn)行分配的。確定存儲(chǔ)器的分段,其中分段包括同一類型存儲(chǔ)器的鄰接塊。如果分段大于閾值,則基于多個(gè)存儲(chǔ)器類型聚結(jié)分配給固件模塊的至少一部分存儲(chǔ)器。由計(jì)算機(jī)系統(tǒng)引導(dǎo)操作系統(tǒng)。
文檔編號(hào)G06F9/445GK101088069SQ200580044889
公開(kāi)日2007年12月12日 申請(qǐng)日期2005年12月21日 優(yōu)先權(quán)日2004年12月30日
發(fā)明者M·A·羅思曼, V·J·齊默, M·布盧蘇 申請(qǐng)人:英特爾公司