非易失性隨機(jī)訪問存儲器中存儲bios的裝置、方法和系統(tǒng)的制作方法
【專利摘要】在計(jì)算機(jī)系統(tǒng)中使用一種非易失性隨機(jī)訪問存儲器(NVRAM)以在平臺存儲器層次結(jié)構(gòu)中執(zhí)行多個角色。該NVRAM是可通過處理器字節(jié)可重寫和字節(jié)可擦除的。該NVRAM耦合至該處理器以被該處理器直接訪問而不用通過I/O子系統(tǒng)。該NVRAM存儲基本輸入和輸出系統(tǒng)(BIOS)。在該啟動過程的可預(yù)擴(kuò)展固件接口(PEI)階段,在該處理器中的該高速緩存可被用在該BIOS執(zhí)行的寫回模式中。
【專利說明】非易失性隨機(jī)訪問存儲器中存儲BIOS的裝置、方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實(shí)施例涉及一種計(jì)算機(jī)系統(tǒng);并且更加具體地,涉及用于BIOS存儲器的 可按字節(jié)尋址的非易失性隨機(jī)訪問存儲器的使用。
【背景技術(shù)】
[0002] 相關(guān)領(lǐng)域的描述
[0003] A.當(dāng)前的存儲器和存儲配置
[0004] 當(dāng)今計(jì)算機(jī)創(chuàng)新的一個制約因素是存儲器和存儲技術(shù)。在傳統(tǒng)的計(jì)算機(jī)系統(tǒng)中, 系統(tǒng)存儲器通常由動態(tài)隨機(jī)訪問存儲器(DRAM)實(shí)現(xiàn)。基于DRAM的存儲器即使在無存儲器 讀取或?qū)懭氚l(fā)生時也要耗電,因?yàn)樗仨氝B續(xù)的為內(nèi)部電容再充電。基于DRAM的存儲器為 易失性的,其意味著只要移除了電源存儲在DRAM存儲器中的數(shù)據(jù)就會丟失。
[0005] 關(guān)于海量存儲,傳統(tǒng)的海量存儲裝置通常包含非易失性磁性媒介(例如,硬盤驅(qū) 動器)和/或閃存(也被稱為"閃盤(例如,固態(tài)驅(qū)動器(SSD))。這些存儲裝置是可塊尋 址的,其意味著存儲器的單一字節(jié)不能被個別地訪問。然而,字節(jié)都是以數(shù)據(jù)的多字節(jié)塊進(jìn) 行讀和寫(例如,16字節(jié))。通常,這些存儲裝置被認(rèn)作I/O裝置因?yàn)樗鼈冇商幚砥魍ㄟ^各 種I/O適配器進(jìn)行訪問,各種I/O適配器實(shí)現(xiàn)了各種I/O協(xié)議。這些I/O適配器和I/O協(xié) 議消耗大量的電能并且在平臺的電路小片區(qū)和形狀因素上具有顯著的影響。此外,對于已 限制了電池壽命的便攜式或移動裝置而言(例如,平板電腦、照相機(jī)和移動電話),它們的 存儲裝置(例如,嵌入式多媒體卡(eMMC))和安全數(shù)字(SD卡)通常通過低功率互連和1/ 0控制器耦合至該處理器以滿足活躍時和閑置時的電力預(yù)算。這些互連和I/O控制器不能 連續(xù)地為滿足用戶體驗(yàn)來傳遞所需的帶寬。
[0006] 關(guān)于固件存儲器,一種傳統(tǒng)的計(jì)算機(jī)系統(tǒng)通常使用閃存裝置來存儲經(jīng)常被讀取但 是很少(或從不)被寫入的持久性系統(tǒng)信息。例如,基本輸入和輸出系統(tǒng)(BIOS)映像通常 被存儲在閃存裝置中。現(xiàn)在市場中可得的閃存裝置通常已經(jīng)限制了速度(例如,50MHz)。這 個速度將被讀取協(xié)議的開銷而進(jìn)一步降低(例如,2. 5MHz)。為了提高該BIOS的執(zhí)行速度, 傳統(tǒng)的處理器通常在啟動過程的可預(yù)擴(kuò)展固件接口(PEI)階段期間緩存一部分的BIOS代 碼。然而,該處理器的高速緩存具有非常有限的容量。因此,被用于初始化系統(tǒng)配置的BIOS 代碼的數(shù)量也是非常有限的。該處理器高速緩存的大小限制對于在PEI階段中使用的該 BIOS代碼(也稱為"PEI BIOS代碼")的大小設(shè)置了明顯的約束。因此,該P(yáng)EI BIOS代碼 不能被簡單地擴(kuò)展以支持存儲器配置和多個處理器族的大型組合。隨著對于處理器初始化 的增長的需求,處理器互連了使用各種技術(shù)和多個處理器族實(shí)現(xiàn)的存儲器和存儲器,更多 樣化的PEI BIOS代碼的需求也增加了。一種解決方案是構(gòu)建較大的處理器高速緩存以緩 存該代碼。然而,處理器高速緩存的大小不能擺脫系統(tǒng)其余部分的消極影響而被簡單地增 加。
[0007] B.相奪存儲器(PCM)和相關(guān)摶術(shù)
[0008] 相變存儲器(PCM),有時也被稱作PCME、PRAM、PCRAM、雙向統(tǒng)一存儲器、硫?qū)倩?RAM和C-RAM,是一類非易失性計(jì)算機(jī)存儲器,其利用硫?qū)倩衔锊AУ莫?dú)特的性能。由于 電流通過生成的熱,這個材料可在兩個狀態(tài)之間被切換:結(jié)晶體和非結(jié)晶。最近版本的PCM 能獲得兩種其他不同的狀態(tài),高效地雙倍存儲器存儲容量。PCM是使用閃存在非易失性角色 中競爭的多個新存儲技術(shù)中的一種。閃存有多個實(shí)際問題,這些替換希望用于尋址。
[0009] 例如,PCM能在應(yīng)用程序中提供更好的性能,其中快速地寫是很重要的,部分是因 為該存儲元件能被更快地切換,并且也由于單獨(dú)的位可被變?yōu)橐词?要么是〇而不需要 首先對單元的整塊的擦除(通常是閃存的情況)。PCM的高性能使得其在非易失性存儲器 的角色中可能是非常有利的,該非易失性存儲器的當(dāng)前性能被存儲器訪問時間所限制。 [0010] 此外,當(dāng)PCM裝置降低使用(像閃存)時,它們更加緩慢地降低。PCM裝置可使用 大約1億寫周期。PCM生命周期受到機(jī)制的限制,比如在編程、金屬(或其他材料)遷移、和 其他機(jī)制期間由于GeSbTe (GST)熱膨脹導(dǎo)致的降低。
【專利附圖】
【附圖說明】
[0011] 通過參考下面的描述和附圖,本發(fā)明可被最好地理解,附圖可被用于圖示本發(fā)明 的實(shí)施例。在圖中:
[0012] 圖1根據(jù)本發(fā)明的一個實(shí)施例示出了計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)在該平臺存儲層 次結(jié)構(gòu)的一層或多層中使用非易失性存儲隨機(jī)訪問(NVRAM)。
[0013] 圖2根據(jù)本發(fā)明的一個實(shí)施例示出了一種計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)將NVRAM用 于傳統(tǒng)非易失性海量存儲器和固件存儲器的整體替換。
[0014] 圖3根據(jù)本發(fā)明的實(shí)施例示出了一種計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)使能該BIOS的壓 縮。
[0015] 圖4根據(jù)本發(fā)明的實(shí)施例示出了在啟動過程的PEI階段期間一種BIOS執(zhí)行順序 的方法。
[0016] 圖5根據(jù)本發(fā)明的實(shí)施例示出了一種計(jì)算機(jī)系統(tǒng)的實(shí)施例,該計(jì)算機(jī)系統(tǒng)支持大 BIOS映像和固件。
[0017] 圖6根據(jù)本發(fā)明的實(shí)施例示出了在啟動過程的PEI階段期間一種BIOS執(zhí)行順序 的方法。
【具體實(shí)施方式】
[0018] 在下面的描述中,提出了多個特定的細(xì)節(jié)。但是,可以理解的是本發(fā)明的實(shí)施例可 被實(shí)現(xiàn)而不用這些特定細(xì)節(jié)。在其他例子中,為了不模糊這個描述的理解,公知的電路、結(jié) 構(gòu)和技術(shù)不再詳細(xì)地顯示。
[0019] 參考說明書中的"實(shí)施例"、"一個實(shí)施例"、"一種示例性實(shí)施例"等,指示了被描述 的實(shí)施例可包含特定特征、結(jié)構(gòu)或特性,但是每個實(shí)施例可不必須包含該特定特征、結(jié)構(gòu)或 特性。此外,這些短語不是必須涉及相同的實(shí)施例。進(jìn)一步,當(dāng)特定的特征、結(jié)構(gòu)或特性聯(lián) 系實(shí)施例被描述時,它被視為在本領(lǐng)域技術(shù)人員的知識范疇內(nèi)來影響聯(lián)系到其他實(shí)施例的 這個特征、結(jié)構(gòu)或特性,而無論是否被明確地描述。
[0020] 在下面的描述和權(quán)利要求中,詞"耦合"和"連接",以及它們的衍生詞可被使用???以理解的是這些詞不試圖作為彼此的同義詞。"耦合"被用于指示兩個或多個元件,其可或 不可為彼此間直接物理或電氣接觸,彼此間互操作或交互。"連接"被用于指示兩個或者多 個彼此耦合的元件之間通信的建立。
[0021] 使用虛線邊框被括起來的文本和塊(例如,大破折號、小破折號、點(diǎn)劃線、點(diǎn))這里 有時被用來圖示可選操作/組件,這些可選操作/組件增加其他特征到本發(fā)明的實(shí)施例中。 然而,這樣的符號不應(yīng)被認(rèn)為意味著它們是唯一的選擇或可選操作/組件,和/或用實(shí)線框 起來的塊在本發(fā)明的某些實(shí)施例中不是可選的。
[0022] 下面描述的本發(fā)明的實(shí)施例定義了平臺配置,該平臺配置使能了用于NVRAM使用 的層次化存儲子系統(tǒng)組織。存儲器的層次結(jié)構(gòu)中NVRAM的使用也使能了新用途,比如,如下 面詳細(xì)描述的擴(kuò)展的啟動空間和海量存儲的實(shí)現(xiàn)。
[0023] 圖1是圖示了一種計(jì)算機(jī)系統(tǒng)100的框圖,該計(jì)算機(jī)系統(tǒng)100在該平臺的存儲層 次結(jié)構(gòu)的一層或多層中使用字節(jié)可尋址非易失性隨機(jī)訪問存儲器(NVRAM) 130。該詞"平臺 存儲層次結(jié)構(gòu)"這里指的是計(jì)算機(jī)系統(tǒng)1〇〇使用以存儲數(shù)據(jù)、指令、狀態(tài)和其他持久和非持 久的信息的整個存儲媒介。在一個實(shí)施例中,計(jì)算機(jī)系統(tǒng)100中所有的持久存儲器能以可 配置方式合并至一個NVRAM130中。此外,NVRAM130的一些部分能被分配作為系統(tǒng)存儲器 的DRAM的替換。NVRAM 130的多樣性促進(jìn)技術(shù)從具有在持久化面向塊文件系統(tǒng)上執(zhí)行的操 作系統(tǒng)(0S)的傳統(tǒng)平臺遷移到操作系統(tǒng),該操作系統(tǒng)理解完全持久化、字節(jié)可尋址、單層 數(shù)據(jù)存儲。
[0024] 在一個實(shí)施例中,NVRAM130能被配置為在典型平臺存儲層次結(jié)構(gòu)中實(shí)現(xiàn)角色為下 述的一個或者多個:高速緩存、系統(tǒng)存儲器(也稱作主存、主要存儲器、可執(zhí)行存儲器)、存 儲裝置(也被稱作第二存儲器和海量存儲器),以及固件存儲器(比如啟動存儲器(也被稱 作BIOS閃存)、可信任平臺模塊(TPM)等)。具有不同角色的平臺存儲層次結(jié)構(gòu)也被考慮 并且NVRAM130的應(yīng)用并不限于上述角色。
[0025] 依照他們在平臺存儲層次結(jié)構(gòu)中的特性和/或應(yīng)用,NVRAM130區(qū)別于其他指令和 數(shù)據(jù)存儲器/存儲技術(shù)。例如,NVRAM130不同于 :
[0026] 1)靜態(tài)隨機(jī)訪問存儲器(SRAM),其用作高速緩存,該高速緩存被分配至處理器核 或由多個處理器核共享;
[0027] 2)高速存儲器(例如,動態(tài)隨機(jī)訪問存儲器(DRAM)),其用作處理器內(nèi)(例如,與 處理器在同一電路小片中)和/或處理器外(例如,與處理器在相同或不同封裝中)的一 個或者多個高速緩存;
[0028] 3)閃存/磁盤/光盤,其用作驅(qū)動存儲器;以及如閃存或只讀存儲器(ROM)的用 作啟動ROM的存儲器。
[0029] 本發(fā)明一個實(shí)施例中的NVRAM(例如,NVRAM130)具有如下特性:
[0030] 1)非易失性(即使電源被移出它也維持它的內(nèi)容,類似于在固態(tài)磁盤(SSD)中使 用的閃存,并且不同于易失性的SRAM和DRAM);
[0031] 2)比易失性存儲器如SRAM和DRAM具有較低的功耗;
[0032] 3)隨機(jī)訪問(也被稱作可隨機(jī)尋址);
[0033] 4)比SSD中找到的閃存(其在一個時間僅能被重寫和擦除"塊"-NOR閃存大小最 小為64Kb以及NAND閃存為16Kb)具有較低粒度水平的可重寫及可擦除(例如,字節(jié)級);
[0034] 5)可用作系統(tǒng)存儲器以及可被分配全部或部分的該系統(tǒng)的地址空間;
[0035] 6)通過總線使用事務(wù)協(xié)議(支持事務(wù)標(biāo)識符(ID)的協(xié)議以區(qū)分不同的事務(wù)以使 得那些事務(wù)能無序地完成)能被耦合至該處理器并且允許以足夠小的粒度級訪問以支持 作為系統(tǒng)存儲器的該NVRAM的操作(例如,高速緩存線大小,比如64或128字節(jié))。例如, 該總線可為存儲總線(例如,DDR總線,比如DDR3、DDR4等。),并在該總線上運(yùn)行事務(wù)協(xié) 議而非正常使用的非事務(wù)性協(xié)議。作為另一例子,該總線可在其上正常地運(yùn)行事務(wù)性協(xié)議 (本地事務(wù)協(xié)議),比如外圍設(shè)備接口標(biāo)準(zhǔn)(PCIE)總線、桌面管理接口(DMI)總線或使用事 務(wù)協(xié)議和足夠小事務(wù)有效負(fù)荷大小(例如,高速緩存線大小,比如64或128字節(jié))的任意 其他類型的總線;以及
[0036] 7)下述一個或者多個:
[0037] a)比現(xiàn)有非易失性存儲器/存儲技術(shù)具有較快寫速度(比如閃存);
[0038] b)非常高的讀速度(比閃存快并且接近或等于DRAM的讀速度);
[0039] c)直接可寫(在寫數(shù)據(jù)類似于SSD中使用的閃存之前,而不是需要擦除(Is覆 蓋));和/或
[0040] d)故障前數(shù)量級(例如,2或3)較高的寫壽命(比SDD中使用的啟動ROM和閃存 要長)。
[0041] 如上所述,與閃存相反,其必須在一定時間被重寫和擦除完整的"塊",在任意給定 實(shí)現(xiàn)中NVRAM被訪問的粒度級可依賴于該NVRAM耦合的該特定存儲器控制器和該特定存儲 總線或其他類型總線。例如,在一些實(shí)現(xiàn)中,NVRAM 130被用作系統(tǒng)存儲器,NVRAM可在高速 緩存線的粒度上被訪問(例如,64字節(jié)或128字節(jié)高速緩存線),盡管固有能力可以字節(jié)粒 度被訪問,因?yàn)楦咚倬彺婢€位于該存儲器子系統(tǒng)訪問存儲器的級別。因此,當(dāng)NVRAM被用在 存儲器子系統(tǒng)中時,它可以在相同存儲器子系統(tǒng)中使用的DRAM(例如,"近存儲器")相同的 粒度級被訪問。即便如此,由該存儲器控制器和存儲總線或其他類型總線訪問NVRAM的粒 度級要小于閃存使用的塊大小以及該I/O子系統(tǒng)控制器和總線的訪問大小的粒度級。
[0042] NVRAM 130可用作指令和數(shù)據(jù)存儲裝置,其具有足夠短的訪問時間要求以使得對 處理器幾乎沒有影響。這里,程序指令和數(shù)據(jù)可在處理器執(zhí)行前從較深的快速/磁性/光 學(xué)海量存儲器152加載至NVRAM 130。而且,如下詳細(xì)描述的,NVRAM 130可被布置在存儲 器總線上并且可直接與存儲器控制器通信,該存儲器控制器又與處理器直接通信。
[0043] 用于NVRAM 130的新存儲技術(shù)的出現(xiàn)提供了大量新的可能。雖然下面將以更大篇 幅的進(jìn)一步討論,這些可能性中的一些將很快在下面立即被突出出來。
[0044] 根據(jù)一種可能的實(shí)現(xiàn),NVRAM 130充當(dāng)系統(tǒng)存儲器中傳統(tǒng)DRAM技術(shù)的整體替換或 補(bǔ)充。在一個實(shí)施例中,NVRAM 130表示了第二級系統(tǒng)存儲器(例如,系統(tǒng)存儲器為DRAM 140和一些或全部的NVRAM 130的組合)的介紹。同樣,該系統(tǒng)存儲器可被看做具有近存儲 器部分匪141A和遠(yuǎn)存儲器部分FM 142。可以預(yù)期的是,在不同實(shí)施例中,近存儲器能用作 存儲器端緩存(例如,近存儲器高速緩存141B)、便箋箋式存儲器和不同于系統(tǒng)存儲器的其 他角色。在這里描述的實(shí)施例中,NVRAM 130的該NM141A部分僅用作系統(tǒng)存儲器以簡化該 討論。
[0045] 根據(jù)一些實(shí)施例,NVRAM 130提供了 NVRAM存儲裝置,其作為傳統(tǒng)海量存儲裝置的 整體替換或補(bǔ)充,例如,快速/磁性/光學(xué)海量存儲器152。在該應(yīng)用中的詞"傳統(tǒng)的海量 存儲裝置"指的是基于光學(xué)、磁性和/或快速技術(shù)的海量存儲器,比如磁盤和閃存。為了簡 化該論述,快速/磁性/光學(xué)海量存儲器152也被指代為傳統(tǒng)海量存儲裝置152。因此,計(jì) 算系統(tǒng)100的非易失性海量存儲裝置可使用NVRAM、閃存、磁性存儲器或它們的任意組合而 被實(shí)現(xiàn)。在一實(shí)施例中,其中NVRAM存儲器150被用作傳統(tǒng)海量存儲裝置152的整體替換, 不是必須使用存儲驅(qū)動器以用于塊可尋址存儲器訪問。從存儲訪問移除存儲驅(qū)動器的開銷 能提高訪問速度和節(jié)約電能。在可選實(shí)施例中,其中可以期望的是NVRAM存儲裝置150看 起來好像該OS和/或應(yīng)用程序可作為塊可訪問和可區(qū)別于傳統(tǒng)海量存儲裝置152,模擬存 儲驅(qū)動器能被用于將塊可訪問接口(例如,通用串行總線(USB)僅傳遞大塊(BOT) 1. 0、串行 高級技術(shù)附件(SATA) 3. 0等)顯示給訪問NVRAM存儲裝置150的軟件。即,NVRAM 130的 字節(jié)可尋址性能由存儲驅(qū)動器使用以移動NVRAM存儲裝置150的塊以及模擬塊可訪問海量 存儲裝置而不用在這些備選實(shí)施例中產(chǎn)生I/O接口的花銷。
[0046]根據(jù)一些實(shí)施例,NVRAM 130 提供了 BIOS NVRAM 160 和 TPM NVRAM 170,其作為固 件存儲器的整體替換和補(bǔ)充,比如BIOS閃存162和TPM閃存172。固件存儲器通常用閃存 技術(shù)實(shí)現(xiàn)并且通常存儲由處理器執(zhí)行的初始化指令(例如,BIOS)以在啟動過程中初始化 關(guān)鍵的系統(tǒng)組件。固件存儲器也能存儲由TPM 134使用的系統(tǒng)持久狀態(tài)以保護(hù)敏感系統(tǒng)信 息(例如,加密密鑰)。在一些實(shí)施例中,用于固件存儲器的NVRAM 130的使月去除了對于 第三方閃存部分的需求,來存儲系統(tǒng)操作中關(guān)鍵的代碼和數(shù)據(jù)。
[0047] 存儲器和存儲器裝置的選擇可依賴于設(shè)備于其上被使用的平臺的類型。例如,在 個人計(jì)算機(jī)、平板電腦、筆記本電腦、移動裝置(例如,智能手機(jī)或PDA),該非易失性海量存 儲可單獨(dú)使用NVRAM存儲器150實(shí)現(xiàn),或使用NVRAM存儲器150組合快速/磁性存儲裝置來 實(shí)現(xiàn)。在其他實(shí)現(xiàn)中(例如,大型服務(wù)器),該非易失性海量存儲可使用磁性存儲器(例如, 硬盤驅(qū)動器)或磁性存儲器、閃存和NVRAM存儲器150的任意組合來實(shí)現(xiàn)。在這個情況下, 負(fù)責(zé)存儲的計(jì)算機(jī)系統(tǒng)硬件和/或軟件可實(shí)現(xiàn)各種智能持久存儲分配技術(shù)來在該FM142/ NVRAM存儲裝置150和傳統(tǒng)海量存儲裝置152之間以高效的或其他有用方式來分配持久程 序代碼和數(shù)據(jù)塊。在一些實(shí)施例中,NVRAM 130可成為單獨(dú)的存儲器/存儲裝置晶體外芯 片(例如,處理器芯片晶體外)。在一些實(shí)施例中,替代晶體外芯片DRAM 140,DRAM可被用 于提供晶體內(nèi)芯片高速緩存(例如,近存儲器高速緩存141B)。這些實(shí)施例可與非常小的平 臺(例如,智能手機(jī)或PDA)特定地相關(guān),其中多個存儲器類別/技術(shù)可是成本高昂并且更 多的晶體管(包含存儲裝置)能設(shè)置在芯片上。
[0048] 該NVRAM 130可包含"耗損平衡"算法來說明在遠(yuǎn)存儲器級的該存儲器存儲單元 在太多次寫訪問后將被耗盡的事實(shí)。由于高循環(huán)計(jì)數(shù)塊最可能以這種方式被耗盡,耗損均 衡通過將高循環(huán)計(jì)數(shù)塊的地址與低循環(huán)計(jì)數(shù)塊的地址進(jìn)行交換在該遠(yuǎn)存儲器存儲單元之 間擴(kuò)展寫操作。注意的是大多數(shù)地址交換通常是對終端用戶透明的,因?yàn)樗捎布?、軟?(例如,低級驅(qū)動器或操作系統(tǒng))或它們的組合來處理。
[0049] 在一個實(shí)施例中,NVRAM 130可用非易失性隨機(jī)訪問存儲器(NVRAM)實(shí)現(xiàn),比如 PCM或者更特別地PCMS (也被稱作(PRAM或PCRAM)、雙向通用存儲器(0UM)、(CRAM))。遠(yuǎn) 存儲器的其他可能技術(shù)的選擇包括,但不限于字節(jié)可尋址持久化存儲器(BPRAM)、存儲級 存儲器(SCM)、通用存儲器、Ge2Sb2Te5、可編程金屬化單元(PMC)、電阻性存儲器(RRAM)、 RESET (非晶)單元、SET (晶體)單元、PCME、奧弗辛斯基(Ovshinsky)、鐵電存儲器(也稱 作聚合物存儲器和聚(N-乙烯基咔唑))、鐵磁存儲器(也稱作自旋電子、SPRAM(自旋轉(zhuǎn)移 力矩RAM)、STRAM(自旋隧穿RAM)、磁阻的、磁性存儲器、和磁性隨機(jī)訪問存儲器(MRAM))、以 及半導(dǎo)體-氧化物-氮化物-氧化物-半導(dǎo)體(SONOS,也稱作介電存儲器)
[0050] 為了便于解釋,剩余的絕大部分的該應(yīng)用通常將"PCM"或"PCMS"指的是選擇用于 NVRAM 130的技術(shù)。如此,詞NVRAM、PCM和PCMS可在下面的討論中可交換地使用。然而, 應(yīng)該意識到的是,如上所述,不同的技術(shù)也可用于NVRAM 130。
[0051] 然后繼續(xù)討論圖1的該系統(tǒng),在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)100的體系結(jié)構(gòu)可包括 多個處理器,雖然圖1中為了簡便而圖示了單獨(dú)一個處理器110。處理器110可為任意類型 的數(shù)據(jù)處理器,其包含通用或?qū)S弥醒胩幚韱卧–PU)、特定用途集成電路(ASIC)或數(shù)字 信號處理器(03?)。例如,處理器110可為通用處理器,比如(:〇^\3、丨5、丨7、2011〇和0皿(1、 Xeon?、或者Itanium?處理器,上述所有都源自加州圣克拉拉的英特爾公司??蛇x地,處理 器110也可源自其他公司,比如,加州桑尼威爾的ARM控股有限公司、加州桑尼威爾的MIPS 技術(shù)公司等。處理器110可為專用處理器,比如,例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形 處理器、協(xié)處理器、嵌入式處理器等。處理器110可在一個或者多個芯片上實(shí)現(xiàn),該芯片被 包含在一個或者多個封裝中。處理器110可為一部分和/或可被實(shí)現(xiàn)在一個或者多個使用 任意多種處理技術(shù)的襯底上,比如,例如,BiCMOS、CMOS或者NM0S。
[0052] 在一個實(shí)施例中,該處理器110包含集成圖形單元111,其包含執(zhí)行圖形命令的邏 輯,比如3D或2D圖形命令。而本發(fā)明的實(shí)施例不限定于任意特定集成圖形單元111,在一 個實(shí)施例中,該圖形單元111能執(zhí)行工業(yè)標(biāo)準(zhǔn)圖形命令,比如,Open GL和/或Direct X應(yīng) 用程序接口(API)指定的那些(例如,Open GL 4. 1和Direct X 11)。
[0053] 該處理器110也可包含一個或者多個核112,雖然在圖1中再次為了清楚的目的僅 圖示了單核112。在一些實(shí)施例中,核112包含內(nèi)部功能塊,比如一個或者多個執(zhí)行單元、弓丨 退單元、一組通用和特定寄存器等。如果核112是多線程或超線程,然后每個硬件線程也可 被看作"邏輯的"核。該核112可為架構(gòu)和/或指令集方面同構(gòu)或異構(gòu)。例如,一些核可為 順序的而另一些核則是無序的。作為另一示例,兩個或者更多的核能執(zhí)行相同的指令集,而 另一些核能僅執(zhí)行那個指令集的子集或不同的指令集。
[0054] 處理器110也可包含一個或者多個高速緩存,比如高速緩存113,其可被實(shí)現(xiàn)為 SRAM和/或DRAM。在一些未示出的實(shí)施例中,除了高速緩存113還實(shí)現(xiàn)了其他高速緩存以 使得在核112中的該執(zhí)行單元與存儲裝置141A和142之間存在多級高速緩存。例如,共享 高速緩存單元集可包含上級高速緩存,比如1級(L1)高速緩存,中級高速緩存,比如:2級 (L2)、3級(L3)、4級(L4)、或其他級高速緩存,最后級高速緩存(LLC),和/或它們的不同組 合。在不同的實(shí)施例中,高速緩存113可以不同方式被分配并且可在不同實(shí)施例中具有一 些不同大小中的一個。例如,高速緩存113可為8兆字節(jié)(MB)高速緩存,16MB高速緩存等。 此外,在不同實(shí)施例中,該高速緩存可為一直接映射高速緩存、全關(guān)聯(lián)高速緩存、多路組相 連高速緩存、或具有另一映射類型的高速緩存。在包含多核的其他實(shí)施例中,高速緩存113 可包含在所有核之間共享的一大部分或者可被劃分為幾個單獨(dú)的功能片(例如,每個核一 片)。高速緩存113可包含在所有核之間共享的一部分以及一些其他部分,這些部分為每個 核的單獨(dú)的功能片。在一個實(shí)施例中,高速緩存113可包含DRAM近存儲器高速緩存141B。
[0055] 處理器110也可包含本地代理114,該本地代理包含協(xié)調(diào)和操作核112的那些組 件。該本地代理單元114可包含,例如,功率控制單元(PCU)和顯示單元。該P(yáng)⑶可為或包 含邏輯和組件,調(diào)節(jié)內(nèi)核112和集成圖形單元111的功率狀態(tài)需要這些邏輯或組件。該顯 示單元被用于驅(qū)動一個或者多個外部連接的顯示器。
[0056] 在一些實(shí)施例中,處理器110包含集成存儲器控制器(MC) 131以提供與存儲器 和存儲子系統(tǒng)180通信的接口。更具體地,在一個實(shí)施例中,IMC131包含讀取、寫入和刷新 DRAM裝置140所必須的邏輯。頂C131能與處理器110位于相同的電路小片上,或者在單獨(dú) 的電路小片上和/或與處理器110相連的封裝上。
[0057] 在一些實(shí)施例中,處理器110包含耦合至頂C131的I/O子系統(tǒng)115。I/O子系統(tǒng) 115使能處理器110和下述串行或并行I/O裝置之間的通信:一個或者多個網(wǎng)絡(luò)136 (比如 局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)),存儲I/O裝置(比如傳統(tǒng)的海量存儲裝置152、BIOS閃存162、 TPM閃存172)和一個或者多個非存儲I/O裝置137 (比如顯示器、鍵盤、揚(yáng)聲器等)。I/O子 系統(tǒng)115可包含平臺控制器集線器(PCH)(未示出),其進(jìn)一步包含若干I/O適配器138和 其他I/O電路以提供對該存儲和非存儲I/O裝置和網(wǎng)絡(luò)的訪問。為了實(shí)現(xiàn)這個,對于使用 的每個I/O協(xié)議,I/O子系統(tǒng)115可具有至少一個集成的I/O適配器138。I/O子系統(tǒng)115 能與處理器110位于相同的電路小片上,或者在單獨(dú)的電路小片上和/或在與處理器110 相連的封裝上。
[0058] I/O適配器138將在處理器110中使用的本地通信協(xié)議翻譯為與特定I/O設(shè)備兼 容的協(xié)議。對于傳統(tǒng)海量存儲裝置152而言,I/O適配器138可翻譯的一些協(xié)議包含外圍 設(shè)備互連(PCI)-標(biāo)準(zhǔn)3.0、通用串行總線(USB)3.0、串行高級技術(shù)附件(SATA) 3.0、小型計(jì) 算機(jī)系統(tǒng)接口(SCSI)、廉價磁盤的冗余陣列(RAID)以及1394 "火線"等。對于BIOS閃存 162而言,I/O適配器138可翻譯的一些協(xié)議包含串行外圍接口(SPI)、微細(xì)線等。此外,還 有一個或者多個無線協(xié)議I/O適配器。無線協(xié)議的例子為藍(lán)牙4. 0、基于IEEE 802. 11的無 線協(xié)議和蜂窩協(xié)議等。
[0059] 在一些實(shí)施例中,I/O子系統(tǒng)115也包含管理引擎(ME) 135,其為允許系統(tǒng)管理員 監(jiān)控、維持、更新、升級和修理計(jì)算機(jī)系統(tǒng)100的微處理器。在一個實(shí)施例中,系統(tǒng)管理員通 過ME 135經(jīng)由網(wǎng)絡(luò)136可遠(yuǎn)程地配置計(jì)算機(jī)系統(tǒng)100。在一個實(shí)施例中,該配置可被存儲 在處理器110中的解碼表133中。解碼表133可由頂C 131和I/O子系統(tǒng)115讀取,其然 后決定哪里的數(shù)據(jù)訪問請求應(yīng)該被控制。
[0060] 在一些實(shí)施例中,處理器110包含信任平臺模塊(TPM) 134來控制對系統(tǒng)持續(xù)狀態(tài) 的訪問,比如安全數(shù)據(jù)、加密密鑰、平臺配置信息等。在一個實(shí)施例中,這些系統(tǒng)持續(xù)狀態(tài)被 存儲在TPM NVRAM 170中,其能被基于PCM的存儲器實(shí)現(xiàn),比如PCMS。在圖1所示的實(shí)施例 中,TPM NVRAM 170 是 NVRAM 130 的一部分。
[0061] 在一個實(shí)施例中,TPM 134為具有加密功能的安全的微控制器。TPM134具有多個 信任相關(guān)的能力;例如,保證由TPM保護(hù)的數(shù)據(jù)僅對同一 TPM可用的"印章"能力。TPM 134 能使用它的加密能力來保護(hù)數(shù)據(jù)和密鑰(例如,秘密)。在一個實(shí)施例中,TPM 134具有唯 一且保密的RSA密鑰(其基于由Ron Rivest、Adi Shamir和Leonard Adleman研發(fā)的RSA 算法生成),其允許它鑒定硬件裝置和平臺。例如,TPM 134能驗(yàn)證試圖訪問計(jì)算機(jī)系統(tǒng)100 中存儲數(shù)據(jù)的系統(tǒng)是所預(yù)期的系統(tǒng)。TPM 134也能夠報告該平臺(例如,計(jì)算機(jī)系統(tǒng)100) 的完整度。這允許外部資源(例如,網(wǎng)絡(luò)上的服務(wù)器)來確定該平臺的可靠性但是并不阻 止用戶對該平臺的訪問。在實(shí)施例中,TPM134包含NVRAM接口以與NVRAM 130進(jìn)行通信。
[0062] 可以理解的是,計(jì)算機(jī)系統(tǒng)能使用NVRAM 130以用于系統(tǒng)存儲器、海量存儲裝置、 固件存儲器和/或其他存儲器以及存儲目的,即使它的處理器沒有上述處理器110的全部 組件或具有比處理器110多的組件。
[0063] 在一實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包含NVRAM控制器132以控制對NVRAM 130的數(shù) 據(jù)訪問。NVRAM控制器132被耦合至頂C131和I/O子系統(tǒng)115。NVRAM控制器132能從解 碼表133讀取該配置數(shù)據(jù),或者可選地,可依賴從MC131和I/O子系統(tǒng)115傳送來的解碼 結(jié)果。在實(shí)施例中,其中NVRAM 130用PCMS來實(shí)現(xiàn),NVRAM控制器132為PCMS控制器,其執(zhí) 行對符合該P(yáng)CMS技術(shù)的協(xié)議的字節(jié)級訪問。雖然IMC 131和NVRAM控制器132能為兩個 分離的控制器(如圖1中所示的用點(diǎn)線分開的兩個控制器),在一些實(shí)施例中,這兩個控制 器可實(shí)現(xiàn)為一個組合的控制器以控制對存儲器和存儲裝置的訪問。在可選實(shí)施例中,NVRAM 控制器132可位于NVRAM 130中以控制對該NVRAM存儲器單元的訪問。在這些可選實(shí)施例 中,NVRAM接口(未示出)能被提供在處理器電路小片上以與NVRAM 130接口連接。
[0064] 圖1中,NVRAM控制器132被示為使用三條單獨(dú)的線連接至FM 142、NVRAM海量存 儲裝置150和BIOS NVRAM 160。這并不必須意味著,但是,這里有三條單獨(dú)的將NVRAM控 制器132連接至NVRAM 130這些部分的物理總線或者通信信道。然而,在一些實(shí)施例中, 通用存儲總線或其他類型總線被用于通信地將NVRAM控制器132耦合至FM 142、NVRAM海 量存儲裝置150以及BIOS NVRAM 160。例如,在一個實(shí)施例中,圖1中的這三條線表示總 線,比如,存儲器總線(例如,DDR3、DDR4等),通過該總線NVRAM控制器132實(shí)現(xiàn)事務(wù)協(xié)議 以與NVRAM130通信。NVRAM控制器132也可通過支持本地事務(wù)協(xié)議的總線,比如PCI標(biāo) 準(zhǔn)(PCI-E)總線、桌面管理接口(DMI)總線或使用事務(wù)協(xié)議的任意其他類型總線,與NVRAM 130進(jìn)行通信。
[0065] 圖2是根據(jù)本發(fā)明的實(shí)施例圖示計(jì)算機(jī)系統(tǒng)200的框圖,該計(jì)算機(jī)系統(tǒng)200將 NVRAM 130用作傳統(tǒng)海量存儲裝置152和固件存儲器(例如,BIOS閃存162和TPM閃存172) 的整體替換。計(jì)算機(jī)系統(tǒng)200包含耦合至存儲器和存儲子系統(tǒng)280的處理器210。在這個 實(shí)施例中,存儲器和存儲子系統(tǒng)280僅包含DRAM裝置140和NVRAM 130。如上所述,NVRAM 130具有可配置部分,其包含系統(tǒng)存儲器(FM142)、海量存儲裝置(NVRAM存儲器150)和固 件存儲器(BIOS NVRAM 160和TPM NVRAM 170)。處理器210可與圖1的處理器110相同, 除了 I/O適配器238不必須包含圖1的用于訪問傳統(tǒng)海量存儲裝置和閃存的所有適配器 138。在這個情況下,負(fù)責(zé)存儲器和存儲裝置訪問的計(jì)算機(jī)系統(tǒng)硬件和/或軟件可實(shí)現(xiàn)各種 智能技術(shù)以從NVRAM 130的低延遲、高吞吐量和健壯性(與傳統(tǒng)閃存/磁性存儲裝置比較, 比如傳統(tǒng)的海量存儲裝置152、BIOS閃存162和TPM閃存172)獲益。
[0066] 該NVRAM的可配置分區(qū)
[0067] 如前所述,NVRAM 130能被劃分為多個分區(qū),其在平臺存儲層次結(jié)構(gòu)中扮演不同的 角色。如上所述,詞"平臺存儲層次結(jié)構(gòu)"指的是高速緩存、系統(tǒng)存儲器、海量存儲裝置和用 于不同目的的固件存儲器(例如,BIOS存儲器和TPM存儲器)。在一個實(shí)施例中,將訪問引 導(dǎo)至NVRAM 130不同分區(qū)的方法是通過解碼邏輯。例如,要么在制造時間或者在現(xiàn)場中,計(jì) 算機(jī)系統(tǒng)100能編程解碼表133以將NVRAM 130的不同區(qū)域標(biāo)識為系統(tǒng)存儲器、海量存儲 裝置、固件等。
[0068] 在圖1和2的實(shí)施例中,NVRAM 130被劃分為FM 142、NVRAM存儲器150、BIOS NVRAM 160和TPMNVRAM 170。每個分區(qū)的地址范圍可在解碼表133中被定義。在一個實(shí)施 例中,當(dāng)頂C 131接收到訪問請求時,該請求的目標(biāo)地址被解碼以顯示該請求是否是直接 面向存儲器或I/O的。如果它是存儲器請求,頂C 131進(jìn)一步從該目標(biāo)地址確定該請求是 直接面向匪141A還是FM 142的。對于FM 142的訪問,頂C 131將該請求轉(zhuǎn)至NVRAM控 制器132。如果該請求是直接面向I/O的(例如,非存儲和存儲I/O裝置),IMC 131將該 請求傳遞給該I/O子系統(tǒng)115。I/O子系統(tǒng)115進(jìn)一步解碼該地址以確定該地址是否指向 NVRAM存儲器150、BI0S NVRAM162、或其他非存儲和存儲I/O裝置。如果該地址指向NVRAM 存儲裝置150或BIOS NVRAM 162, I/O子系統(tǒng)115將該請求轉(zhuǎn)發(fā)給NVRAM控制器132。如 果該地址指向TPM NVRAM 170, I/O子系統(tǒng)115將該請求轉(zhuǎn)給TPM 134以執(zhí)行安全訪問。在 一個實(shí)施例中,每個轉(zhuǎn)發(fā)到NVRAM控制器132的請求都帶有屬性(也稱作"事務(wù)類型")來 指示訪問的類型。在一個實(shí)施例中,NVRAM控制器132可仿真所請求訪問類型的訪問協(xié)議, 以使得其他平臺對于由平臺存儲層次結(jié)構(gòu)中的NVRAM 130執(zhí)行的多個角色保持未知。在可 選實(shí)施例中,NVRAM控制器132可對NVRAM 130執(zhí)行存儲器訪問而不考慮它是哪個事務(wù)類 型??梢岳斫獾氖?,該解碼路徑可與上面描述的不同。例如,頂C 131可解碼訪問請求的目 標(biāo)地址并且確定它是否是指向NVRAM 130的。如果它是指向NVRAM 130, MC 131根據(jù)解碼 表133生成屬性。基于該屬性,頂C 131然后將該請求轉(zhuǎn)發(fā)給合適的下游邏輯(例如,NVRAM 控制器132和I/O子系統(tǒng)115)以執(zhí)行所請求的數(shù)據(jù)訪問。在另一實(shí)施例中,如果該對應(yīng)屬 性不是從上游邏輯(例如,頂C 131和I/O子系統(tǒng)115)傳遞而來,NVRAM控制器132可解碼 該目標(biāo)地址。其他解碼路徑也可被實(shí)現(xiàn)。
[0069] 俥能PEI BIOS代碼的壓縮
[0070] 如上所述,處理器提供小量的高速緩存以用于在啟動期間執(zhí)行預(yù)EFI (預(yù)擴(kuò)展固 件接口,也稱作PEI)BI0S代碼。該P(yáng)EI BIOS代碼通常以高級語言(例如,C編程語言)來 編寫,其在執(zhí)行期間使用棧和/或堆。該P(yáng)EI BIOS代碼負(fù)責(zé)初始化系統(tǒng)配置,比如,處理 器、芯片集、處理器與芯片集互連(比如,超傳輸3.0、快速路徑互連(0PI)1. 1)以及存儲器 和存儲子系統(tǒng)的初始化。該P(yáng)EI BIOS代碼也負(fù)責(zé)交叉存取存儲器以及切換至稱為驅(qū)動器 執(zhí)行環(huán)境(DXE)的高級BIOS模塊,如在統(tǒng)一 EFI (UEFI)標(biāo)準(zhǔn)中所定義的。
[0071] 在一些系統(tǒng)中,該處理器高速緩存在啟動過程中的PEI階段期間被設(shè)置為無遷出 模式(NEM)。該NEM也被稱作高速緩存RAM (CAR)模式,其意味著該高速緩存對于執(zhí)行的代 碼流而言如同以存儲器存儲以使得所有數(shù)據(jù)存儲器訪問都命中并且使得沒有發(fā)生高速緩 存遷移。"無遷移"在存儲器控制器和系統(tǒng)互聯(lián)被初始化之前避免了寫回至系統(tǒng)存儲器。在 一些場景中,寫回能造成錯誤情況,比如,機(jī)器檢查終止。
[0072] 在啟動過程的PEI階段(例如,當(dāng)該處理器執(zhí)行PEI BIOS代碼時),該處理器高 速緩存的主要部分被劃分為第一分區(qū),其被映射至BIOS閃存地址范圍,在其中存儲該P(yáng)EI BIOS代碼,以及用于棧和堆的第二分區(qū)。該處理器高速緩存的第一和第二分區(qū)的細(xì)合也能 稱作"NEM高速緩存",因?yàn)樗膬?nèi)容不能在PEI BIOS代碼執(zhí)行期間被遷移。該處理器高速 緩存的僅非常小的一部分(例如,幾千字節(jié))能被用于"常規(guī)"高速緩存目的;例如,用于緩 存在執(zhí)行期間生成的數(shù)據(jù)以及很可能在不久的將來被重用。
[0073] 由于在處理器和BIOS閃存裝置之間的1/0接口的速度較慢(例如,串行外圍設(shè)備 接口(SPI)),該P(yáng)EI BIOS代碼被復(fù)制到該NEM高速緩存的第一分區(qū)。在傳統(tǒng)的系統(tǒng)中,在 NEM高速緩存的第一分區(qū)和BIOS閃存中的該P(yáng)EI BIOS代碼區(qū)之間映射的地址范圍是1 : 1 以保證該P(yáng)EI BIOS代碼的任意取出能被高速緩存以提高該P(yáng)EI執(zhí)行的速度。因此,在這個 系統(tǒng)中,BIOS閃存中的PEIBI0S代碼不能被壓縮。在傳統(tǒng)的系統(tǒng)中,在兩個分區(qū)之間的NEM 高速緩存被劃分的通常大小比為2 : 1。在一系統(tǒng)中,其中該NEM高速緩存是1.5MB,這個 劃分意味著1MB被用于PEI BIOS代碼而0. 5MB被用于棧和堆。如前所述,該NEM高速緩存 的這個大小限制設(shè)置了該P(yáng)EI BIOS代碼的功能和執(zhí)行上的有效約束。
[0074] 圖3顯示了根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)300,其使能該BIOS的壓縮。計(jì)算機(jī) 系統(tǒng)300包括耦合至存儲器和存儲子系統(tǒng)380的處理器310。處理器510也被耦合至一個 或者多個其他處理器520以形成多處理器系統(tǒng)。在一個實(shí)施例中,處理器310可通過高速 并行互連或接口被耦合至其他處理器520,比如,超傳輸3. 0、快速路徑互連(QPI)或其他類 似的接口。
[0075] 在一個實(shí)施例中,計(jì)算機(jī)系統(tǒng)300在閃存裝置("BIOS閃存")162中存儲了壓縮 的BIOS映像582。BIOS閃存162通過1/0子系統(tǒng)115耦合至處理器310。BIOS閃存162的 使用允許處理器310在重啟時來尋找和在遺留系統(tǒng)中位于相同位置的BIOS ;S卩,在可通過 1/0子系統(tǒng)115訪問的閃存裝置中。壓縮的BIOS映像582存儲程序代碼、參數(shù)和在啟動期 間為計(jì)算機(jī)系統(tǒng)300建立BIOS的其他資源。該未壓縮的BIOS映像(在壓縮的BIOS映像 582后是未壓縮的)包含各種BIOS模塊。每個BIOS模塊,又包含程序指令、或者"代碼", 其能被計(jì)算機(jī)系統(tǒng)300的處理器310執(zhí)行。在一個實(shí)施例中,一個或者多個BIOS模塊包含 PEI BIOS代碼,其在被執(zhí)行時,允許處理器310在計(jì)算機(jī)系統(tǒng)的初始化啟動階段("PEI階 段")來檢測和初始化各種系統(tǒng)資源(例如,存儲器和存儲子系統(tǒng)380以及非存儲1/0裝置 137)。該P(yáng)EI BIOS代碼包含所需要的最小量的代碼來發(fā)現(xiàn)所需的最小量的存儲器以建立 該初始化系統(tǒng)資源。
[0076] 在一個實(shí)施例中,計(jì)算機(jī)系統(tǒng)300進(jìn)一步包括通過高速鏈接耦合至處理器310的 BIOS NVRAM 560,該高速鏈接遵守和處理器間協(xié)議相同的協(xié)議(例如,超傳輸3.0、快速路 徑互連(QPI)等)。由于它在讀取上較大的容量和較低的延遲(與BIOS閃存162相比), BIOS NVRAM 560能被用于存儲該未壓縮的PEI BIOS代碼(例如,BIOS映像570),提供了用 于棧和堆的空間以及存儲了在該代碼執(zhí)行期間生成的調(diào)試或錯誤或過程狀態(tài)信息。結(jié)果, 高速緩存113能被釋放并用于"常規(guī)"高速緩存目的;例如,用于高速緩存在執(zhí)行期間生成 的以及很可能在不久的將來被重用的數(shù)據(jù)。高速緩存113也能被用于緩存一些PEI BIOS 代碼以提高代碼的執(zhí)行速度。此外,BIOS NVRAM 560的使用允許PEI BIOS代碼的壓縮,因 為處理器310現(xiàn)在能將該代碼解壓至BIOS NVRAM 560并且從BIOS NVRAM 560直接執(zhí)行該 代碼。結(jié)果,PEI BIOS代碼的大小不再受到NEM高速緩存大小的約束,并且能容納更多功 能和建立更多的支持。
[0077] 在該P(yáng)EI階段期間,處理器310執(zhí)行操作序列,該操作能從BIOS閃存162中取回 壓縮的PEI BIOS映像582,將它解壓縮至BIOS NVRAM 560中的BIOS映像570,并從BIOS NVRAM 560執(zhí)行BIOS映像570。處理器310也將高速緩存113設(shè)置為寫回(WB)模式。因 此,處理器310能使用高速緩存113的全部容量來緩存在該P(yáng)EI BIOS代碼執(zhí)行期間生成的 該P(yáng)EI BIOS代碼和數(shù)據(jù)。當(dāng)高速緩存113滿了并且有新代碼和/或數(shù)據(jù)需要被緩存,利用 高容量的BIOS NVRAM 560和到BIOS NVRAM 560的高速度接口,高速緩存113的較舊內(nèi)容 可寫回至BIOS NVRAM 560。這與當(dāng)高速緩存113位于NEM中時有限的訪問能力(例如,用 于緩存目的的少量千字節(jié))相反。
[0078] 在一個實(shí)施例中,該BIOS NVRAM 560由與NVRAM 130相同的存儲器/存儲技術(shù)實(shí) 現(xiàn),比如PCMS或其他基于PCM的技術(shù)。PCMS裝置能以非常高的容量大約多個十億字節(jié)來構(gòu) 建并且能通過高速鏈接(例如,超傳輸3. 0鏈接、QPI鏈接等)而被耦合至處理器。該P(yáng)CMS 裝置的地址空間可被映射到常規(guī)系統(tǒng)地址空間。與基于DRAM存儲器相比較,使用PCMS或 其他基于PCM存儲器的好處已經(jīng)在上面進(jìn)行了論述。然而,可以理解的是其他大容量、低延 遲和字節(jié)可尋址的非易失性存儲器裝置能被用于實(shí)現(xiàn)BI0SNVRAM 560,這些存儲器裝置具 有對PCMS相似的讀和寫訪問特征。
[0079] 還可以理解的是,用于使能該P(yáng)EI BIOS代碼壓縮的BIOS NVRAM 560的使用依賴 于存儲器和存儲子系統(tǒng)380的配置。更特別地,BIOS NVRAM560能被使用而不用考慮NVRAM 130是否用在存儲器和存儲子系統(tǒng)380中。在圖3所示的實(shí)施例中,存儲器和存儲子系統(tǒng) 380包含被劃分為FM 142、NVRAM存儲器150和TMP NVRAM 160的NVRAM 130。在這個實(shí) 施例中,對于NVRAM 130而言不是必須包含BIOS NVRAM分區(qū),因?yàn)樵揃IOS可駐留在BIOS NVRAM 560和/或BIOS閃存162中。在可選實(shí)施例中,存儲器和存儲子系統(tǒng)380可不包含 NVRAM 130,或者可包含具有不同于圖3所示分區(qū)的NVRAM 130。進(jìn)一步,在實(shí)施例中,其中 存儲器和存儲子系統(tǒng)380不包含NVRAM 130,處理器310不必須包含NVRAM控制器132和解 碼表133,并且TPM數(shù)據(jù)能被存儲在塊可尋址非易失性裝置(例如,閃存裝置)。在下面的 描述中,計(jì)算機(jī)系統(tǒng)300和這些可選實(shí)施例全部指的是"計(jì)算機(jī)系統(tǒng)300及其變形"。
[0080] 圖4為根據(jù)本發(fā)明的實(shí)施例圖示了在啟動過程中的PEI階段期間BIOS執(zhí)行順序 的方法400的流程圖。方法400由計(jì)算機(jī)系統(tǒng)300及其變形執(zhí)行,如同之前聯(lián)系圖3所定 義的。為了簡化描述,處理器310在下面被描述為通過QPI鏈接與其他處理器520和BIOS NVRAM 560耦合(雖然可以理解到也可使用其他高速互連)。進(jìn)一步,為了簡化描述,圖4 的流程圖的操作將參照圖3的實(shí)施例被描述。然而,可以理解的是該流程圖的操作由除在 這些圖中所示的實(shí)施例之外的實(shí)施例執(zhí)行。此外,參照圖3討論的實(shí)施例能執(zhí)行不同于參 照圖4的流程圖的討論的那些操作。
[0081] 在一個實(shí)施例中,當(dāng)平臺(例如,計(jì)算機(jī)系統(tǒng)300)上電(塊401),該平臺生成上電 重啟信號以重啟處理器310 (塊402)。處理器310將該高速緩存模式設(shè)置為NEM并且初始 化高速緩存113中的該NEM空間(塊403)。在實(shí)施例中,其中PEI BIOS代碼執(zhí)行需要堆和 /或棧空間,處理器310也設(shè)置在高速緩存113中的該堆和/或棧空間。處理器310然后在 本地處理器套接口中初始化該QPI鏈接,其中該QPI鏈接將處理器310耦合至BIOS NVRAM 560 (塊 404)。
[0082] 在BIOS NVRAM 560裝置被定位后,處理器310初始化BIOS NVRAM560并且通過 從該QPI鏈接接收到的參數(shù)來確定BIOS NVRAM 560的大小。處理器310然后初始化BIOS NVRAM 560并且創(chuàng)建用于訪問BIOS NVRAM560的地址范圍(塊405)。在一個實(shí)施例中,處 理器310通過配置源地址解碼器(SAD) 540來創(chuàng)建該地址范圍以將BIOS NVRAM 560的大小 映射至該處理器存儲器地址空間。
[0083] 接下來,當(dāng)重啟被釋放時,處理器310從BIOS閃存162中預(yù)定義位置處復(fù)制PEI BIOS代碼相對小的一部分到BIOS NVRAM 560中(塊406)。在一個實(shí)施例中,該預(yù)定義位 置為系統(tǒng)地址空間中的4GB到4GB-16GB,其能被預(yù)配置到SAD 540中。該P(yáng)EI BIOS代碼的 這一小部分能解壓縮剩余的BIOS PEI代碼(例如,壓縮的BIOS映像582)。在這一點(diǎn)上,處 理器310也能將NEM數(shù)據(jù)(其為高速緩存在NEM高速緩存中的數(shù)據(jù))復(fù)制到BIOS NVRAM 560 (塊407),并且使用PEI BIOS代碼的一小部分將剩余的PEI BIOS代碼解壓縮至BIOS NVRAM 560中(塊408),該P(yáng)EI BIOS代碼的一小部分已經(jīng)較早地被復(fù)制到BIOS NVRAM 560。
[0084] 在復(fù)制后,處理器310跳轉(zhuǎn)到BIOS NVRAM 560的地址空間并且開始執(zhí)行該解壓 縮的PEI BIOS代碼(例如,BIOS映像570)(塊409)。處理器310在高速緩存113中禁用 (例如,關(guān)閉)NEM并且使能WB模式(塊410)。然后,處理器310在BIOS NVRAM 560外執(zhí) 行該解壓縮的PEI BIOS代碼,使用高速緩存113的全部容量來存儲代碼和數(shù)據(jù),在執(zhí)行期 間可能需要該代碼和數(shù)據(jù)。接下來,處理器310初始化剩余的QPI鏈接(例如,連接到其他 處理器520的鏈接),建立QPI鏈接路由(塊411),初始化每個處理器的套接口中的該存儲 器(例如,DIMM)(塊412)以及啟動全局系統(tǒng)存儲器地址路由(塊413)。處理器310進(jìn)一 步從BIOS NVRAM 560復(fù)制剩余的BIOS映像到系統(tǒng)存儲器中(例如,匪141A)并且跳轉(zhuǎn)到 BIOS執(zhí)行的下一階段的存儲器(塊414)。然后處理器310初始化該1/0裝置(例如,1/0 裝置137和其他1/0接口,如果有的話)(塊415),以及啟動該0S (塊416)。
[0085] 在一個實(shí)施例中,BIOS NVRAM 560的一部分能作為可寫的而被建立。因此,即使 DIMM存儲器初始化失敗了,在PEI BIOS執(zhí)行期間發(fā)生的錯誤能被記錄到這個可寫區(qū)域,調(diào) 試或錯誤或過程狀態(tài)消息也一樣。在一個實(shí)施例中,視頻和顯示錯誤消息也能在PEI BIOS 代碼執(zhí)行期間被初始化。
[0086] 支持大BIOS映像和固件
[0087] 在一些實(shí)施例中,BIOS映像能被存儲在大容量、低延遲和字節(jié)可尋址非易失性存 儲器裝置中,該裝置能被直接耦合至處理器而不用通過1/0子系統(tǒng)而被路由。在一個實(shí)施 例中,這個裝置能由與NVRAM 130相同的存儲器/存儲技術(shù)實(shí)現(xiàn),比如PCMS或其他基于PCM 的技術(shù)。這個裝置能用存儲具有其他新特征的大BIOS映像。該大BIOS映像可支持多個 平臺以降低支持花費(fèi)。這個裝置也能存儲對平臺固件的配置和更新,比如BIOS、管理引擎 (ME)、功率控制單元(PCU)、電壓控制單元(VCU)和微代碼的配置和更新。通過將平臺固件 聯(lián)合為單獨(dú)的、大型的持久化存儲器,本發(fā)明的實(shí)施例披露了高效平臺固件更新、平臺配置 和應(yīng)用管理支持的可能性。
[0088] 圖5圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)500的一個實(shí)施例,其支持大BIOS 映像和平臺固件。在這個實(shí)施例中,計(jì)算機(jī)系統(tǒng)500在BIOS NVRAM 560中存儲一個或者多 個的BIOS映像730。與圖3的實(shí)施例類似,BIOS NVRAM 560通過高速鏈接耦合至處理器 510,該高速鏈接遵守與處理器間協(xié)議相同的協(xié)議(例如,超級傳輸3. 0、QPI等)。
[0089] 在一個實(shí)施例中,作為一個選擇,計(jì)算機(jī)系統(tǒng)500也可包含BIOS閃存162。即,在 一個實(shí)施例中,計(jì)算機(jī)系統(tǒng)500包含BIOS閃存162和BIOS NVRAM 560兩者??蛇x地,計(jì)算 機(jī)系統(tǒng)500可包含BIOS NVRAM 560而不包含BIOS閃存162。在實(shí)施例中,其中計(jì)算機(jī)系統(tǒng) 500包含BIOS閃存162和BIOS NVRAM 560兩者,處理器510能被配置為要么從BIOS閃存 162要么從BIOS NVRAM 560中選擇執(zhí)行該P(yáng)EI BIOS代碼。該配置可通過處理器510的針 腳進(jìn)行設(shè)置。該帶子可以是軟性帶子,意味著默認(rèn)為BIOS閃存162;但是,ME 135或其他平 臺硬件能在啟動時釋放該處理器重啟之前將配置改變?yōu)锽IOS NVRAM 560。如果處理器510 被配置為選擇BIOS閃存162,然后BIOS NVRAM 560的存在可被忽視并且該P(yáng)EI BIOS代碼 將從BIOS閃存162被執(zhí)行。
[0090] 在一個實(shí)施例中,其中處理器510為硬編碼以在啟動時僅使用BIOS NVRAM 560, 對于計(jì)算機(jī)系統(tǒng)500而言必須要包含BIOS閃存162。移除BIOS閃存162的一個好處在于 降低了平臺的成本。
[0091] 類似于圖3的實(shí)施例,應(yīng)該理解的是,為了支持大量BIOS代碼和固件而使用BIOS NVRAM 560是依賴于存儲器和存儲子系統(tǒng)580的配置。更具體地,能使用BIOS NVRAM 560 而不考慮NVRAM 130是否被用作存儲器和/或存儲裝置。在圖5所示的實(shí)施例中,存儲器和 存儲子系統(tǒng)580包含被劃分為FM 142、NVRAM存儲器150和TMP NVRAM 160的NVRAM 130。 在這個實(shí)施例中,對于NVRAM130而言包含BIOS NVRAM分區(qū)不是必須的,因?yàn)樵揃IOS能駐 留在BIOS NVRAM 560或BIOS閃存162中。在可選實(shí)施例中,存儲器和存儲子系統(tǒng)580可 不包含NVRAM 130,或可包含具有不同于圖5所示分區(qū)的NVRAM 130。進(jìn)一步,在實(shí)施例中, 其中存儲器和存儲子系統(tǒng)580不包含NVRAM 130,處理器510不是必須包含NVRAM控制器 132和解碼表133,以及TPM數(shù)據(jù)能被存儲在塊尋址非易失性裝置(例如,閃存裝置)。在下 面描述中,計(jì)算機(jī)系統(tǒng)500和這些可選的實(shí)施例全部指代為"計(jì)算機(jī)系統(tǒng)500及其變形"。
[0092] 圖6為流程圖,其根據(jù)本發(fā)明的實(shí)施例圖示了啟動過程的PRI階段期間BIOS執(zhí)行 順序的方法600。方法600可由計(jì)算機(jī)系統(tǒng)500及其變形來執(zhí)行,如前面與圖5相連的所定 義的。為了簡化描述,處理器510在下面被描述為通過QPI鏈接耦合至其他處理器520和 BIOS NVRAM 560 (雖然它可以被理解為也可使用其他高速互連)。進(jìn)一步,為了簡化描述, 圖6的流程圖的操作將參照圖5的實(shí)施例來描述。然而,應(yīng)該理解的是該流程圖的操作能 由圖5的實(shí)施例來執(zhí)行,和由除了在這些附圖中所示的那些實(shí)施例之外的實(shí)施例執(zhí)行。此 夕卜,參照圖5所討論的實(shí)施例能執(zhí)行與參照圖6流程圖所討論的那些操作不同的操作。
[0093] 在一個實(shí)施例中,當(dāng)平臺(例如,計(jì)算機(jī)系統(tǒng)500)上電(塊601),計(jì)算機(jī)系統(tǒng)500 生成上電重啟信號以重啟處理器510 (塊602)。
[0094] 如前所述,在一個實(shí)施例中,處理器510支持BIOS閃存162和BIOS NVRAM 560, 并且能被配置為選擇兩個中的一個以用于PEI BIOS執(zhí)行。如果處理器510被配置為選擇 BIOS NVRAM 560以用于BIOS存儲器,ME 135或其他平臺硬件能在釋放該處理器重啟之前 設(shè)置BIOS NVRAM 569的配置。接下來,ME 135、硬件級代碼(例如,功率控制代碼(pcode) 或微代碼(ucode)),或其他平臺硬件能初始化耦合至BIOS NVRAM 560的QPI鏈接,通過檢 查QPI鏈接上交換的參數(shù)來確定BIOS NVRAM 560中固件分區(qū)740的大小,并且使用固件分 區(qū)740的地址配置SAD 540 (塊603)。SAD540需更被配置以使得落入固件分區(qū)地址空間的 該地址能被轉(zhuǎn)向至BIOS NVRAM 560。
[0095] 在實(shí)施例中(圖6中未示出),其中該處理器510為硬編碼以在啟動時間僅使用 BIOS NVRAM 560,處理器510能初始化耦合至BIOS NVRAM560的該QPI鏈接,通過檢查在 QPI鏈接上交換的參數(shù)確定在BIOS NVRAM560中固件分區(qū)740的大小,并且使用固件分區(qū) 740的地址來配置SAD 540。
[0096] 繼續(xù)塊803的操作,基于該重啟信號的釋放,處理器510在預(yù)定的BIOS訪問區(qū)域 處從固件接口表(FIT)720取回該信息(例如,該系統(tǒng)存儲地址空間的4GB到4GB-16MB區(qū) 域)(塊604)。這個區(qū)域位于BIOS NVRAM 560中。該區(qū)域(現(xiàn)在在BIOS NVRAM560中)包 含固件接口表(FIT)720和必要信息以使能對固件分區(qū)740的訪問。固件分區(qū)740能存儲 一個或者多個BIOS映像730和其他平臺固件代碼和數(shù)據(jù)750。在一個實(shí)施例中,F(xiàn)IT 720 包含固件分區(qū)740的每個分區(qū)的大小信息,以及作為NVRAM的分區(qū)。FIT720具有指定每個 BIOS映像730位置和對應(yīng)類型定義的機(jī)制。該類型定義能被用于指定BIOS映像的版本和 該BIOS映像意圖用于的平臺類型,以及其他。
[0097] 接著塊604的操作,處理器510編程MTRR存儲類型范圍寄存器(MTTR)以使得高速 緩存113被設(shè)置為寫回(WB)模式以用于執(zhí)行包含在一個BIOS映像730中的PEI BIOS代 碼(塊605)。處理器510然后跳轉(zhuǎn)至包含該P(yáng)EI BIOS代碼的固件分區(qū)并執(zhí)行該代碼(塊 606)。
[0098] 接下來,處理器510初始化剩余的QPI鏈接(例如鏈接至其他處理器520的鏈接) 并且建立QPI鏈接路由(塊607),初始化每個處理器套接字中的該存儲器(例如,該DIMM) (塊608)并且建立全局系統(tǒng)存儲地址路由(塊609)。處理器510進(jìn)一步從BIOS NVRAM 560 將剩余的BIOS映像復(fù)制到系統(tǒng)存儲器(例如,NM 141A)中并且跳轉(zhuǎn)到該存儲器以用于后 續(xù)BIOS執(zhí)行階段(塊610)。處理器510也初始化該1/0裝置(例如,1/0裝置137和其他 1/0接口,若有的話)(塊611),并且啟動該0S (塊612)。
[0099] 在該P(yáng)EI BIOS代碼執(zhí)行期間,如果最新的代碼版本啟動失敗,該失敗能被記錄在 BIOS NVRAM 560中的BIOS標(biāo)記區(qū)域中并且該啟動過程能以該代碼的較早版本被重啟,使 用在FIT720中定義的處理代碼。
[0100] 在一個實(shí)施例中,BIOS NVRAM 560的一部分能設(shè)置為可寫的。因此,在該P(yáng)EI BIOS 執(zhí)行期間發(fā)生的錯誤能被記錄在這個可寫區(qū)域,即使DIMM存儲器初始化失敗。在一個實(shí)施 例中,視頻和顯示錯誤信息也能在該TOI BIOS代碼執(zhí)行期間被初始化。
[0101] 一旦高速緩存113被設(shè)置為WB模式以用于在BIOS NVRAM 560外執(zhí)行該P(yáng)EI BIOS 代碼,該BIOS代碼具有將數(shù)據(jù)寫回到BIOS NVRAM 560中的能力。因此,到目前為止未被執(zhí) 行的部分BIOS代碼能作為壓縮代碼被存儲在BIOS NVRAM 560中。在高速緩存113被設(shè)置 為WB模式后,處理器510能解壓剩余的PEI BIOS代碼,將解壓縮的代碼寫入BIOS NVRAM 560中,并且在BIOS NVRAM 560的解壓縮區(qū)域外執(zhí)行。
[0102] 圖4和6的流程圖中所示的技術(shù)能使用存儲在非臨時性機(jī)器可讀或計(jì)算機(jī)可讀媒 介上的指令和數(shù)據(jù)來實(shí)現(xiàn),比如非臨時性機(jī)器可讀或計(jì)算機(jī)可讀存儲媒介(例如,磁盤;光 盤;隨機(jī)訪問存儲器;只讀存儲器;閃存裝置;以及相變存儲器)。
[0103] 本發(fā)明的實(shí)施例也可被提供為計(jì)算機(jī)程序產(chǎn)品,其可包含非臨時性機(jī)器可讀媒 介,該媒介上存儲有可用來編程計(jì)算機(jī)(或其他電子裝置)的指令以實(shí)現(xiàn)過程。該非臨 時性機(jī)器可讀媒介可包含,但不限制于,軟盤、光盤、CD-ROM以及磁光盤、ROM、RAM、EPR0M、 EEPR0M、磁性或光學(xué)卡、傳播媒體或適用于存儲電子指令的其他類型的媒介/機(jī)器可讀媒 介。本發(fā)明的實(shí)施例也可被作為計(jì)算機(jī)程序產(chǎn)品下載,其中該程序可通過在載波或其他傳 播媒介中嵌入的數(shù)據(jù)信號經(jīng)由通信連接(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)從遠(yuǎn)程計(jì)算機(jī) (例如,服務(wù)器)傳輸?shù)秸埱笥?jì)算機(jī)(例如,客戶機(jī))
[0104] 當(dāng)以若干個實(shí)施例形式描述本發(fā)明時,那些本領(lǐng)域技術(shù)人員將認(rèn)識到本發(fā)明不限 于描述的實(shí)施例,能在所附權(quán)利要求的精神和范圍內(nèi)以修改和替換進(jìn)行實(shí)現(xiàn)。因此該描述 被認(rèn)作是示意性而不是限制。
【權(quán)利要求】
1. 一種裝置包含: 包含一個或多個核的處理器; 由所述處理器通過I/O接口耦合至所述處理器的非易失性存儲器(NVM),NVM其上存儲 有壓縮的基本輸入和輸出系統(tǒng)(BIOS)映像; 位于所述處理器中的高速緩存;以及非易失性可隨機(jī)訪問存儲器(NVRAM),所述非易 失性可隨機(jī)訪問存儲器耦合至所述處理器并且通過所述處理器為字節(jié)可重寫和字節(jié)可擦 除的,NVRAM其上存儲有未壓縮的BIOS映像,所述未壓縮的BIOS映像由所述處理器在啟動 過程的PEI階段自所述壓縮的BIOS映像生成,其中所述未壓縮的BIOS映像的執(zhí)行在所述 啟動過程的所述PEI階段期間將所述高速緩存置于在寫回模式下。
2. 根據(jù)權(quán)利要求1所述的裝置,其中所述NVRAM包含相變存儲器(PCM)。
3. 根據(jù)權(quán)利要求1所述的裝置,其中所述NVRAM包含相變存儲器和開關(guān)(PCMS)。
4. 根據(jù)權(quán)利要求1所述的裝置,其中所述NVM通過I/O子系統(tǒng)而被耦合至所述處理器 并且所述NVRAM沒有經(jīng)過所述I/O子系統(tǒng)而被耦合至所述處理器。
5. 根據(jù)權(quán)利要求1所述的裝置,其中通過高速鏈接所述NVRAM耦合至所述處理器,所述 高速鏈接將相同協(xié)議實(shí)現(xiàn)為處理器間鏈接。
6. 根據(jù)權(quán)利要求1所述的裝置,其中所述NVM其上存儲代碼的第一部分被作為所述壓 縮的BIOS映像被復(fù)制至NVRAM以及所述代碼的第二部分被復(fù)制到所述NVRAM中以用于將 所述壓縮的BIOS映像解壓縮至所述NVRAM中。
7. 根據(jù)權(quán)利要求1所述的裝置,其中所述NVRAM包含可寫區(qū)域,所述可寫區(qū)域中可被寫 入在啟動過程中生成的調(diào)試或錯誤或過程狀態(tài)消息。
8. -種裝置含有: 包含一個或多個核的處理器; 非易失性可隨機(jī)訪問存儲器(NVRAM),耦合至所述處理器并且通過所述處理器為字節(jié) 可重寫和字節(jié)可擦除的,NVRAM其上存儲有多個BIOS映像,所述BIOS映像的一個由所述處 理器在啟動過程的可預(yù)擴(kuò)展固件接口(PEI)階段期間執(zhí)行;以及 在所述處理器中的高速緩存,所述高速緩存在寫回模式中操作以用于所述啟動過程的 所述PEI階段期間中所述BIOS映像中的一個的執(zhí)行。
9. 根據(jù)權(quán)利要求8所述的裝置,其中所述NVRAM包含相變存儲器(PCM)。
10. 根據(jù)權(quán)利要求8所述的裝置,其中所述NVRAM包含相變存儲器和開關(guān)(PCMS)。
11. 根據(jù)權(quán)利要求8所述的裝置,其中所述多個BIOS映像包含多個版本的BIOS。
12. 根據(jù)權(quán)利要求8所述的裝置,其中所述NVRAM存儲平臺固件。
13. 根據(jù)權(quán)利要求1所述的裝置,其中所述多個BIOS映像支持多個平臺或多個處理器 族。
14. 根據(jù)權(quán)利要求8所述的裝置,其中所述NVRAM包含可寫區(qū)域,所述可寫區(qū)域中可被 寫入在啟動過程期間生成的調(diào)試或錯誤或過程狀態(tài)消息。
【文檔編號】G06F12/00GK104115136SQ201180075111
【公開日】2014年10月22日 申請日期:2011年9月30日 優(yōu)先權(quán)日:2011年9月30日
【發(fā)明者】M·K·納基穆圖, M·庫馬 申請人:英特爾公司