用于標記需要寫回持久存儲的非事務代碼區(qū)的開頭和結束的指令的制作方法
【專利摘要】提供了用于標記需要寫回持久存儲的非事務代碼區(qū)的開頭和結束的指令。所描述的處理器具有到非易失性隨機存取存儲器的接口和邏輯電路。該邏輯電路用于標識事務所修改的高速緩存行,該事務將易失性隨機存取存儲器看作該事務的持久存儲。該邏輯電路還用于標識與事務不同的軟件進程所修改的高速緩存行,該軟件進程也將所述非易失性隨機存取存儲器看作持久存儲。
【專利說明】用于標記需要寫回持久存儲的非事務代碼區(qū)的開頭和結束的指令發(fā)明領域
[0001]本發(fā)明一般涉及計算機系統領域。更具體而言,本發(fā)明涉及一種用于實現包括非易失性存儲器層的多級存儲器分層結構的裝置和方法。
[0002]相關技術描述
[0003]A.當前存儲器和存儲配置
[0004]當今,計算機創(chuàng)新的限制因素之一是存儲器和存儲技術。在常規(guī)計算機系統中,系統存儲器(也稱為主要存儲器、主存儲器、可執(zhí)行存儲器)通常由動態(tài)隨機存取存儲器(DRAM)來實現?;贒RAM的存儲器甚至在沒有存儲器讀或寫發(fā)生時也消耗功率,因為它必須不斷地對內部電容再充電?;贒RAM的存儲器是易失性的,這意味著一旦移除電源,存儲在DRAM存儲器中的數據就丟失。常規(guī)計算機系統還依賴于多級高速緩存來提高性能。高速緩存是置于處理器與系統存儲器之間的高速存儲器,與從系統存儲器對存儲器訪問請求進行服務相比,所述高速存儲器對這些請求進行更快服務。這樣的高速緩存通常用靜態(tài)隨機存取存儲器(SRAM)來實現。高速緩存管理協議可被用來確保最頻繁訪問的數據和指令被存儲在各級高速緩存之一內,從而降低了存儲器訪問操作的數量并提高了性能。
[0005]至于大容量存儲(也被稱為次級存儲或盤存儲),常規(guī)大容量存儲設備通常包括磁介質(例如,硬盤驅動器)、光學介質(例如,光盤(⑶)驅動器、數字多功能盤(DVD),等等)、全息介質、和/或大容量存儲閃存(例如,固態(tài)驅動器(SSD)、可移動閃存驅動器,等等)。一般而言,這些存儲設備被認為輸入/輸出(I/O)設備,因為它們由處理器通過實現各I/O協議的各I/O適配器來訪問。這些I/O適配器和I/O協議消耗大量功率并且可對管芯面積和該平臺的形狀因子具有顯著影響。在沒有連接到持久電源時具有有限電池壽命的便攜式或移動設備(例如,膝上型計算機、上網本、平板計算機、個人數字助理(PDA)、便攜式媒體播放器、便攜式游戲設備、數碼相機、移動電話、智能電話、功能電話等)可包括通常經由低功率互連和I/O控制器耦合到處理器以滿足活動和空閑功率預算的可移動大容量存儲設備(例如,嵌入式多媒體卡(eMMC)、安全數字(SD)卡)。
[0006]對于固件存儲器(諸如,引導存儲器(也被稱為BIOS閃存)),常規(guī)計算機系統通常使用閃存設備來存儲被頻繁讀取但極少(或從不)被寫入的持久系統信息。例如,處理器在引導過程(基本輸入輸出系統(BIOS)鏡像)期間執(zhí)行來初始化關鍵系統組件的初始指令通常被存儲在閃存設備中。當前市場上可獲得的閃存設備通常具有有限的速度(例如,50MHz)。這一速度通過讀協議的開銷而進一步降低(例如,2.5MHz)。為了加快BIOS執(zhí)行速度,常規(guī)處理器通常在引導過程的預擴展固件接口階段對BIOS代碼的一部分進行高速緩存。處理器高速緩存的大小對PEI階段中使用的BIOS代碼(也被稱為“PEI BIOS代碼”)的大小形成約束。
_7] B.相變存儲器(PCM)以及相關技術
[0008]相變存儲器(PCM)(有時也稱為相變隨機存取存儲器(PRAM或PCRAM)、PCME、奧弗辛斯基統一存儲器、或硫族RAM (C-RAM))是采用硫屬化物玻璃的獨特行為的一種類型的非易失性計算機存儲器。作為電流穿過所產生的熱的結果,硫屬化物玻璃可在兩個狀態(tài)之間切換:晶體和無定形。PCM的最近版本可以達到兩個附加區(qū)別狀態(tài)。
[0009]PCM提供比閃存更高的性能,因為PCM的存儲器元件可更快速地切換,寫入(將單獨的位改變成I或O)可以無需首先擦除整個單元塊來完成,并且因寫入而造成的降級被降低(PCM設備可以保留大約100百萬寫入周期;PCM降級是由于編程、金屬(以及其他材料)遷移、以及其他機制期間的熱擴散)。
【專利附圖】
【附圖說明】
[0010]以下的描述和附圖用于圖示本發(fā)明的實施例。在附圖中:
[0011]圖1示出了根據本發(fā)明的一個實施例的高速緩存和系統存儲器安排;
[0012]圖2示出了本發(fā)明的一個實施例中采用的存儲器和存儲分層結構;
[0013]圖3示出了可在其上實現本發(fā)明的各實施例的計算機系統;
[0014]圖4示出了事務過程;
[0015]圖5示出了具有用于跟蹤對高速緩存的改變的特殊硬件的處理器;
[0016]圖6示出了使用圖5的特殊硬件來將非事務數據改變寫入持久存儲的過程;
[0017]圖7示出了集成過程,該過程示出了圖5的特殊硬件可被用來由事務退回和非事務寫入持久存儲來支持;
[0018]圖8示出了編譯過程。
【具體實施方式】
[0019]在以下描述中,陳述了諸如邏輯實現、操作碼、指定操作數的手段、資源劃分/共享/復制實現、系統組件的類型和相互關系、以及邏輯劃分/整合選擇之類的多個具體細節(jié),以提供對本發(fā)明的更透徹理解。然而,本領域技術人員應當領會,沒有這些具體細節(jié)也可實踐本發(fā)明。在其它實例中,未詳細示出控制結構、門級電路以及完整軟件指令序列,以免使本發(fā)明難以理解。本領域技術人員利用所包括的描述將能在無需過度實驗的情況下實現適當的功能。
[0020]在說明書中對“一個實施例”、“一實施例”、“示例實施例”等的引用指示所描述的實施例可以包括特定特征、結構或特性,但并不一定每個實施例都需要包括該特定特征、結構或特性。此外,這樣的短語不一定是指同一個實施例。此外,當參考一個實施例描述特定特征、結構或特性時,認為在本領域技術人員學識范圍內,可以與其他實施例一起實施這樣的特征、結構或特性,不論是否有明確描述。
[0021]在以下描述和權利要求書中,可使用術語“耦合”和“連接”及其衍生詞。應當理解,這些術語不旨在作為彼此的同義詞?!榜詈稀庇糜谥甘緝蓚€或多個元件彼此合作或相互作用,但它們可能或可能不直接物理或電接觸?!斑B接”被用來指示在彼此耦合的兩個或更多個元件之間建立通信。
[0022]用括號括起來的文本以及具有虛線邊界的框(例如,大虛線、小虛線、點虛線、點線)在此有時被用來示出向本發(fā)明的實施例添加附加特征的可任選操作/組件。然而,這些記號不應當被認為是意味著它們是唯一的選項或可任選操作/組件和/或具有實線邊界的框在一些實施例中不是可任選的。
[0023]介紹
[0024]存儲器容量和性能要求隨著處理器核以及新使用模型(如虛擬化)的數量的增加而繼續(xù)增加。另外,存儲器功率和成本已分別變成電子系統的總體功率和成本的重要組成部分。
[0025]一些實施例通過在各存儲器技術之間智能地細分性能要求和容量要求來解決以上挑戰(zhàn)。這一方法的焦點在于用相對少量的相對高速存儲器(如DRAM)來提供性能,同時使用非常密集的非易失性隨機存取存儲器(NVRAM)來實現系統存儲器體。以下描述的本發(fā)明的各實施例定義使得能夠將分層存儲器子系統組織用于NVRAM的平臺配置。在存儲器分層結構中使用NVRAM還啟用了新用途,如擴展的引導空間和大容量存儲實現。
[0026]圖1示出了根據本發(fā)明的實施例的高速緩存和系統存儲器安排。具體而言,圖1示出了包括一組內部處理器高速緩存120、擔當遠存儲器高速緩存121的“近存儲器”以及“遠存儲器”122的存儲器分層結構,近存儲器可包括內部高速緩存106和外部高速緩存107-109兩者。在本發(fā)明的一些實施例中,可被用于“遠存儲器”的一種特定類型的存儲器是非易失性隨機存取存儲器(“NVRAM”)。如此,以下提供了 NVRAM的概覽,此后是遠存儲器和近存儲器的概覽。
[0027]A.非易失性隨機存取存儲器(“NVRAM”)
[0028]存在用于NVRAM的許多可能的技術選擇,包括PCM、相變存儲器和開關(PCMS)(后者是前者的更具體實現)、字節(jié)可尋址的持久存儲器(BPRAM)、存儲類存儲器(SCM)、通用存儲器、Ge2Sb2Te5、可編程金屬化單元(PMC)、電阻存儲器(RRAM)、RESET (無定形)單元、SET(晶體)單元、PCME、奧弗辛斯基存儲器、鐵電存儲器(也被稱為聚合物存儲器和聚(N-乙烯基咔唑)、鐵磁存儲器(也稱為自旋電子、SPRAM (自旋傳遞轉矩RAM))、STRAM (自選隧穿RAM)、磁阻存儲器、磁性存儲器、磁隨機存取存儲器(MRAM)、以及半導體-氧化物-氮化物-氧化物-半導體(SONOS,也稱為介電存儲器)。
[0029]NVRAM具有以下特性:
[0030](I)即使移除了電源它也維護其內容,類似于固態(tài)盤(SSD)中使用的閃存,且不同于SRAM和DRAM (它們是易失性的);
[0031](2)比諸如SRAM和DRAM等易失性存儲器更低的功耗;
[0032](3)隨機存取類似于SRAM和DRAM (也稱為隨機可尋址);
[0033](4)按比SSD中的閃存(一次只可重寫和擦除一“塊”一對NOR閃存而言最小64千字節(jié)且對NAND閃存而言最小16千字節(jié))更低級的粒度(例如,字節(jié)級)可重寫和可擦除;
[0034](5)用作系統存儲器并被分配了系統存儲器地址空間的全部或一部分;
[0035](6)能夠使用支持用于支持無序操作的標識符(ID)的協議通過總線耦合到處理器,并允許按足夠小以支持NVRAM作為系統存儲器的操作的粒度級(例如,高速緩存行大小,如64或128字節(jié))訪問。例如,總線可以是非無序存儲器總線(例如,DDR總線,如DDR3、DDR4,等等)。作為另一示例,總線可以是PCI快速(PCIE)總線、桌面管理接口(DMI)總線、或利用無序協議和足夠小的凈荷大小(例如,高速緩存行大小,如64或128字節(jié))的任何其他類型的總線;以及
[0036](7)以下中的一個或多個:
[0037]a)比諸如閃存等非易失性存儲器/存儲技術更快的寫入速度;
[0038]b)非常高的讀取速度(比閃存快并且接近或等于DRAM讀取速度);
[0039]c)可直接寫入(而非要求如SSD中使用的閃存那樣在寫入數據之前進行擦除(用I蓋寫));
[0040]d)在失敗之前更大數量的寫入(超過引導ROM和SSD中使用的閃存);和/或
[0041]如上所述,與一次必須被重寫和擦除一完整“塊”的閃存對比,在任何給定實現中訪問NVRAM的粒度級可依賴于特定存儲器控制器和特定存儲器總線或NVRAM耦合到的其他類型的總線。例如,在NVRAM被用作系統存儲器的一些實現中,NVRAM可按高速緩存行的粒度(例如,64字節(jié)或128字節(jié)高速緩存行)被訪問,盡管也有能按字節(jié)粒度訪問的內在能力,因為高速緩存行是存儲器子系統訪問存儲器的級別。因而,在NVRAM被部署在存儲器子系統中時,它可按與同一存儲器子系統中使用的DRAM (例如,“近存儲器”)相同的粒度級被訪問。雖然如此,存儲器控制器和存儲器總線或其他類型的總線對NVRAM訪問的粒度級小于閃存所使用的塊大小和I/O子系統的控制器和總線的訪問大小。
[0042]NVRAM還可包括磨損均衡算法來計入以下事實:在多個寫入訪問之后,遠存儲器級的存儲單元開始磨損,尤其是在可發(fā)生大量寫入的情況下,如在系統存儲器實現中。因為高周期計數塊最可能以此方式磨損,所以磨損均衡通過將高周期計數塊的地址與低周期計數塊對換來將各個寫入分散在各遠存儲器單元中。注意,大多數地址對換通常對應用程序而言是透明的,因為它是由硬件、低級軟件(例如,低級驅動程序或操作系統)、或這兩者的組合來處理的。
[0043]B.遠存儲器
[0044]本發(fā)明的一些實施例的遠存儲器122被用NVRAM來實現,但不必限于任何特定存儲器技術。按照其特性和/或其在存儲器/存儲分層結構中的應用,遠存儲器122可與其他指令和數據存儲器/存儲技術區(qū)分開。例如,遠存儲器122與以下不同:
[0045]可被用于分別專用于處理器核101-104中的每一個的O級和I級內部處理器高速緩存101a-b、102a-b、103a-b、以及104a_b的靜態(tài)隨機存取存儲器(SRAM),以及各處理器核共享的較低級高速緩存(LLC) 105 ;
[0046]被配置成處理器100內部(例如,與處理器100在同一管芯上)的高速緩存106和/或被配置成處理器外部(例如,在與處理器100相同或不同的封裝中)的一個或多個高速緩存107-109的動態(tài)隨機存取存儲器(DRAM);以及
[0047]用作大容量存儲(未示出)的閃存/磁盤/光盤;以及
[0048]用作固件存儲器(可以指引導ROM、BIOS閃存、和/或TPM閃存)(未示出)的諸如閃存或其他只讀存儲器(ROM)之類的存儲器。
[0049]遠存儲器122可被用作可由處理器100直接尋址并能夠足以跟上處理器100的指令和數據存儲,與用作大容量存儲的閃存/磁盤/光盤形成對比。此外,如以上討論并在下文描述的,遠存儲器122可被置于存儲器總線上并且可與存儲器控制器直接通信,存儲器控制器進而與處理器100直接通信。
[0050]遠存儲器122可以與其他指令和數據存儲技術(例如,DRAM)相組合,以形成混合存儲器(也被稱為共址PCM和DRAM ;第一級存儲器和第二級存儲器;FLAM (閃存和DRAM))。注意,以上技術(包括PCM/PCMS)中的至少一些可被用于大容量存儲來作為系統存儲器的替換或補充,并且在以此方式應用時不必是可隨機存取、可字節(jié)尋址、或可由處理器直接尋址的。
[0051]為便于解釋,該申請的其余部分中的大部分將引用“NVRAM”,或更具體地“PCM”或“PCMS”,作為遠存儲器122的技術選擇。如此,術語NVRAM、PCM、PCMS以及遠存儲器可在以下討論中互換地使用。然而,應當意識到,如上所述,不同的技術也可被用于遠存儲器。同樣,NVRAM不限于用作遠存儲器。
[0052]C.近存儲器
[0053]“近存儲器”121是配置在遠存儲器122前方的具有相對于遠存儲器的較低讀/寫訪問等待時間和/或更對稱的讀/與訪問等待時間(即,具有大致等于與時間的讀時間)的中間級存儲器。在一些實施例中,近存儲器121具有比遠存儲器122顯著更低的寫等待時間但具有類似(例如,稍低于或等于)的讀等待時間;例如,近存儲器121可以是諸如易失性隨機存取存儲器(VRAM)等易失性存儲器并且可包括DRAM或其他高速的基于電容的存儲器。然而,注意,本發(fā)明的底層原理不限于這些具體的存儲器類型。另外,近存儲器121可具有比遠存儲器122相對更低的密度和/或可能制造起來更昂貴。
[0054]在一個實施例中,近存儲器121被配置在遠存儲器122和內部處理器高速緩存120之間。在下文描述的各實施例中的一些實施例中,近存儲器121被配置成一個或多個存儲器側高速緩存(MSC) 107-109,以對遠存儲器的性能和/或使用限制(包括例如讀/寫等待時間限制和存儲器降級限制)進行掩碼。在這些實現中,MSC107-109與遠存儲器122的組合以近似于、等于或超過只使用DRAM作為系統存儲器的系統的性能水平來操作。如下文詳細討論的,雖然在圖1中被示為“高速緩存”,但近存儲器121可包括它執(zhí)行其他角色(作為執(zhí)行高速緩存角色的補充或替換)的模式。
[0055]近存儲器121可位于處理器管芯上(作為高速緩存106)和/或位于處理器管芯外部(作為高速緩存107-109)(例如,在位于CPU封裝上的分開的管芯上、位于CPU封裝外部并具有到CPU封裝的高帶寬鏈路,例如在存儲器雙內聯存儲器模塊(DIMM)上、riser/mezzanine(插槽/夾層)、或計算機主板)。近存儲器121可使用單個或多個高帶寬鏈路(如DDR或其他高帶寬鏈路(如下文詳細描述的))與處理器100通信地耦合。
[0056]示例性系統存儲器分配方案
[0057]圖1示出了在本發(fā)明的各實施例中相對于系統物理地址(SPA)空間116-119如何配置各級高速緩存101-109。如上所述,這一實施例包括具有一個或多個核101-104的處理器100,其中每一個核具有它自己的專用上級高速緩存(LO) 101a-104a和中間級高速緩存(MLC) (LI)高速緩存101b-104b。處理器100還包括共享的LLC105。這些各高速緩存級的操作很好理解并且在此不再贅述。
[0058]圖1中示出的高速緩存107-109可專用于特定系統存儲器地址范圍或一組非連續(xù)地址范圍。例如,高速緩存107專用于擔當系統存儲器地址范圍#1116的MSC,且高速緩存108和109專用于擔當系統存儲器地址范圍#2117和#3118的非重疊部分的MSC。后一實現可被用于其中處理器100所使用的SPA空間交織到與高速緩存107-109(例如,在被配置成MSC時)所使用的地址空間的系統。在一些實施例中,該后一地址空間被稱為存儲器信道地址(MCA)空間。在一個實施例中,內部高速緩存101a-106執(zhí)行整個SPA空間的高速緩存操作。
[0059]在此所使用的系統存儲器是對在處理器100上執(zhí)行的軟件可見和/或可由該軟件直接尋址的存儲器;而在它們不形成該系統地址空間的可直接尋址部分的意義上,高速緩存存儲器101a-109可對該軟件而言透明地操作,但各核還可支持指令的執(zhí)行以允許軟件提供對高速緩存中的一些或全部的一些控制(配置、策略、提示,等等)。系統存儲器在各區(qū)域116-119中的細分可作為系統配置過程的一部分來手動地執(zhí)行(例如由系統設計者)和/或可由軟件自動執(zhí)行。
[0060]在一個實施例中,該系統存儲器區(qū)域116-119是使用遠存儲器(例如,PCM)實現的,并且在一些實施例中,近存儲器被配置成系統存儲器。系統存儲器地址范圍#4表示使用諸如DRAM等更高速存儲器來實現的地址范圍,它可以是配置成系統存儲器模式(與高速緩存模式相對)的近存儲器。
[0061]圖2示出了根據本發(fā)明的各實施例的存儲器/存儲分層結構140和用于近存儲器144和NVRAM的不同的可配置操作模式存儲器/存儲分層結構140具有多級,包括(I)高速緩存級150,它可包括處理器高速緩存150A (例如,圖1的高速緩存101A-105)且可任選地包括作為遠存儲器的高速緩存150B的近存儲器(在此描述的某些操作模式中),(2)系統存儲器級151,它可包括在存在近存儲器的情況下(或在不存在近存儲器時只有NVRAM作為系統存儲器174)的遠存儲器151B (例如,諸如PCM等NVRAM)且可任選地包括用作系統存儲器的近存儲器151A (在此描述的某些操作模式中),(3)大容量存儲級152,它可包括閃存/磁/光學大容量存儲152B和/或NVRAM大容量存儲152A (例如,NVRAM142的一部分);以及(4)固件存儲器級153,它可包括BIOS閃存170和/或BIOS NVRAMl72且可任選地包括可信平臺模塊(TPM) NVRAMl73ο
[0062]如圖所示,近存儲器144可被實現成按各種不同的模式來操作,包括:第一模式,其中它作為遠存儲器的高速緩存來操作(作為FM的高速緩存150B的近存儲器);第二模式,其中它作為系統存儲器151A來操作并占據SPA空間的一部分(有時稱為近存儲器“直接訪問”模式);以及一個或多個附加操作模式,如暫存存儲器192或作為寫緩沖器193。在本發(fā)明的一些實施例中,近存儲器是可分區(qū)的,其中每一分區(qū)可并發(fā)地按所支持的模式中的一個不同模式來操作;并且不同的實施例可以由硬件(例如,熔絲、引腳)、固件、和/或軟件(例如,通過MSC控制器124內的一組可編程范圍寄存器,在這些寄存器內例如可以儲存不同的二進制代碼來標識每一模式和分區(qū))來支持分區(qū)的配置(例如大小、模式)。
[0063]圖2中的系統地址空間A190被用來示出在近存儲器被配置成遠存儲器的MSCl50B的情況下的操作。在這一配置中,系統地址空間A190表示整個系統地址空間(且系統地址空間B191不存在)?;蛘撸到y地址空間B191被用來示出在近存儲器的全部或部分被分配了系統地址空間的一部分的情況下的實現。在這一實施例中,系統地址空間B191表示分配給近存儲器151A的系統地址空間范圍且系統地址空間A190表示分配給NVRAM174的系統地址空間的范圍。
[0064]另外,在擔當遠存儲器的高速緩存150B時,近存儲器144可在MSC控制器124的控制下按各子模式操作。在這些模式中的每一個中,在近存儲器不形成系統地址空間的可直接尋址部分的意義上,近存儲器地址空間(NMA)對軟件是透明的。這些模式包括但不限于以下:
[0065](I)寫回(write-back)高速緩存模式:在這一模式中,擔當FM高速緩存150B的近存儲器的全部或部分被用作NVRAM遠存儲器(FM)的高速緩存。當處于寫回模式中時,每一寫操作被最初定向到作為FM的高速緩存150B的近存儲器(假定該寫入被定向到的高速緩存行存在于高速緩存中)。只有在作為FM的高速緩存150B的近存儲器內的高速緩存行要由另一高速緩存行替換(與以下描述的在其中每一寫入操作被立即傳播到NVRAM FM151B的寫透(write-through)模式形成對比)時,對應的寫入操作被執(zhí)行以更新NVRAM FM151B。
[0066](2)近存儲器繞過模式:在這一模式中,所有讀和寫繞過擔當FM高速緩存150B的匪并直接去往NVRAM FM151B。例如在應用不是高速緩存友好的或要求數據以高速緩存行的粒度被提交給持久存儲的情況下,這樣的模式可被使用。在一個實施例中,處理器高速緩存150A和擔當FM高速緩存150B的匪上執(zhí)行的高速緩存彼此獨立地操作。因此,未被高速緩存在處理器高速緩存150A中的數據可被高速緩存在擔當FM高速緩存150B的匪中(并且,在一些情況下,該數據可能不被準許高速緩存在處理器高速緩存150A中),且反之亦然。因而,可被指定為“不可高速緩存”在處理器高速緩存中的某些數據可被高速緩存在擔當FM高速緩存150B的匪內。
[0067](3)近存儲器讀高速緩存寫繞過模式:這是以上模式的變型,其中對來自NVRAMFM151B的持久數據的讀高速緩存被允許(即,持久數據被高速緩存在擔當遠存儲器的高速緩存150B的近存儲器中以用于只讀操作)。在持久數據的大部分是“只讀”的并且應用使用是高速緩存友好的情況下,這是有用的。
[0068](4)近存儲器讀高速緩存寫透模式:這是近存儲器讀高速緩存寫繞過模式的變型,其中除了讀高速緩存之外,寫命中也被高速緩存。對作為FM的高速緩存150B的近存儲器的每一個寫入造成對FM151B的寫入。因而,由于高速緩存的寫透性質,高速緩存行持久性仍然得到保證。
[0069]在按近存儲器直接訪問模式操作時,作為系統存儲器151A的近存儲器的全部或部分對軟件是直接可見的并且形成SPA空間的一部分。這樣的存儲器可以完全在軟件控制下。這樣的方案可為軟件創(chuàng)建非統一存儲器地址(NUMA)存儲器域,其中相對于NVRAM系統存儲器174它從近存儲器144得到更高性能。作為示例而非限制,這樣的使用可被用于需要對某些數據結構的非??焖俚脑L問的某些高性能計算(HPC)和圖形應用。
[0070]在一替換實施例中,近存儲器直接訪問模式通過“固定(pin)”近存儲器中的某些高速緩存行(即,具有也同時存儲在NVRAM142中的數據的高速緩存行)來實現。這樣的固定可以在較大、多路、組相關聯高速緩存中有效地完成。
[0071]圖2還示出了 NVRAM142的一部分可被用作固件存儲器。例如,B1S NVRAMl72部分可被用來存儲B1S鏡像(作為在B1S閃存170中存儲B1S信息的替換或補充)。B1SNVRAM部分172可以是SPA空間的一部分并且可由在處理器核101-104上執(zhí)行的軟件直接尋址,而B1S閃存170可通過1/0子系統115來尋址。作為另一示例,可信平臺模塊(TPM)NVRAMl73部分可被用來保護敏感系統信息(例如,加密密鑰)。
[0072]因而,如圖所示,NVRAM142可被實現成按各自不同的模式來操作,包括作為遠存儲器151B (例如,在近存儲器144存在/操作時,近存儲器經由MSC控制124來擔當FM的高速緩存還是不經由(在高速緩存101A-105后直接訪問且無需MSC控制124));只有NVRAM系統存儲器174 (不作為遠存儲器,因為沒有近存儲器存在/操作;并在無需MSC控制124的情況下被訪問);NVRAM大容量存儲152A ;B10S NVRAMl72 ;以及TPM NVRAMl73?在不同的實施例可以按不同的方式指定NVRAM模式時,圖3描述了解碼表333的使用。
[0073]圖3示出了其上可實現本發(fā)明的實施例的示例性計算機系統300。計算機系統300包括處理器310和存儲器/存儲子系統380,其中NVRAM142用作系統存儲器、大容量存儲以及可任選地用作固件存儲器。在一個實施例中,NVRAM142構成了計算機系統300用來存儲數據、指令、狀態(tài)、以及其他持久和非持久信息的整個系統存儲器和存儲分層結構。如上所述,NVRAM142可被配置成實現系統存儲器、大容量存儲、以及固件存儲器、TPM存儲器等的典型的存儲器和存儲分層結構中的角色,在圖3的實施例中,NVRAM142被分區(qū)成FM151B、NVRAM大容量存儲152A、B10S NVRAMl73以及TMP NVRAMl73?還構想了具有不同角色的存儲分層結構,并且NVRAM142的應用不限于上述角色。
[0074]作為示例,描述了在擔當FM的高速緩存150B的近存儲器處于寫回高速緩存時的操作。在一個實施例中,在擔當FM的高速緩存150B的近存儲器處于上述寫回高速緩存模式時,讀操作將首先到達MSC控制器124,MSC控制器124將執(zhí)行查找以確定所請求的數據是否存在于擔當FM的高速緩存150B的近存儲器中(例如,利用標簽高速緩存342)。如果存在,則它將該數據返回給發(fā)出請求的CPU、核101-104或通過I/O子系統115返回給I/O設備。如果數據不存在,則MSC控制器124將該請求連同系統存儲器地址一起發(fā)送給NVRAM控制器332。NVRAM控制器332將使用解碼表333來將系統存儲器地址轉換成NVRAM物理設備地址(PDA)并將該讀操作定向到遠存儲器151B的這一區(qū)域。在一個實施例中,解碼表333包括地址迂回表(AIT)分量,NVRAM控制器332使用該AIT分量來在系統存儲器地址和NVRAM PDA之間進行轉換。在一個實施例中,AIT作為被實現成分發(fā)存儲器訪問操作并從而降低NVRAM FM151B的磨損的磨損均衡算法的一部分來更新?;蛘?,AIT可以是存儲在NVRAM控制器332內的單獨的表。
[0075] 在從NVRAM FM151B接收到所請求的數據后,NVRAM控制器332將所請求的數據返回給MSC控制器124,MSC控制器124將該數據存儲在擔當FM高速緩存150B的MSC近存儲器中并且還將該數據發(fā)送給發(fā)出請求的處理器核101-104或通過I/O子系統115發(fā)送給I/O設備。對這一數據的后續(xù)請求可直接從擔當FM高速緩存150B的近存儲器進行服務,直至它被某一其他NVRAM FM數據所替換。
[0076]如上所述,在一個實施例中,存儲器寫操作也首先去往MSC控制器124,MSC控制器124將它寫入擔當FM高速緩存150B的MSC近存儲器中。在寫回高速緩存模式中,在接收到寫入操作時,數據可被直接發(fā)送給NVRAM FMl50B。例如,只有擔當FM高速緩存150B的MSC近存儲器中存儲該數據的位置必須被重新使用來存儲不同系統存儲器地址的數據時,該數據才可被發(fā)送給NVRAM FMl5IB。當這一點發(fā)生時,MSC控制器124通知該數據當前不在NVRAMFM151B中并且因而將從擔當FM高速緩存150B的近存儲器檢索它并將它發(fā)送給NVRAM控制器332。NVRAM控制器332查找該系統存儲器地址的PDA并隨后將數據寫到NVRAM FM151B。
[0077]在圖3中,NVRAM控制器332被示為使用三條分開的線路連接到FM151B、NVRAM大容量存儲152A、以及B1S NVRAMl72ο然而,這不一定意味著存在將NVRAM控制器332連接到NVRAM142的這些部分的三條分開的物理總線或通信信道。相反,在一些實施例中。共用存儲器總線或其他類型的總線被用來將NVRAM控制器332通信耦合到FM151B、NVRAM大容量存儲152A以及B10SNVRAM172。例如,在一個實施例中,圖3中的三條線路表示NVRAM控制器332在其上實現用于與NVRAM142通信的(例如,無序)協議的總線,如存儲器總線(例如,DDR3、DDR4等總線)。NVRAM控制器332還可通過支持本機協議的總線(如PCI express總線、桌面管理接口(DMI)總線、或利用無序協議和足夠小的凈荷大小(例如,高速緩存行大小,如64或128字節(jié))的任何其他類型的總線)與NVRAM142通信。
[0078]在一個實施例中,計算機系統300包括為處理器310執(zhí)行中央存儲器訪問控制的集成存儲器控制器(MC)331,它耦合到:1)用于控制對擔當遠存儲器高速緩存150B的近存儲器NM的訪問的存儲器側高速緩存(MSC)控制器124 ;以及2)用于控制對NVRAM142的訪問的NVRAM控制器332。雖然在圖3中示為分開的單元,但MSC控制器124和NVRAM控制器332可在邏輯上形成MC331的一部分。
[0079]在所示實施例中,MSC控制器124包括指定用于擔當遠存儲器高速緩存150B的匪的操作模式(例如,上述寫回高速緩存模式、近存儲器繞過模式等)的一組范圍寄存器336。在所示實施例中,DRAM144被用作擔當遠存儲器的高速緩存150B的匪的存儲器技術。響應于存儲器訪問請求,MSC控制器124可以確定(取決于范圍寄存器336中指定的操作模式)該請求是否可從擔當FM的高速緩存150B的NM來服務或該請求是否必須被發(fā)送給NVRAM控制器332,NVRAM控制器332隨后可從NVRAM142的遠存儲器(FM)部分151B來對該請求進行服務。
[0080]在其中NVRAM142是用PCM來實現的實施例中,NVRAM控制器332是用根據PCMS技術的協議來執(zhí)行訪問的PCMS控制器。如上所述,PCMS存儲器固有地能夠以字節(jié)粒度被訪問。然而,NVRAM控制器332可以按較低粒度水平(如高速緩存行(例如,64位或128位高速緩存行))或與存儲器子系統相一致的任何其他粒度水平來訪問基于PCMS的遠存儲器151B。本發(fā)明的底層原理不限于用于訪問基于PCMS的遠存儲器151B的任何特定粒度水平。然而,一般而言,在基于PCMS的遠存儲器151B被用于形成系統地址空間的一部分時,粒度水平將高于傳統上用于其他非易失性存儲技術(如閃存,它們只可在“塊”(對于NOR閃存最小64千字節(jié)大小且對于NAND閃存最小16千字節(jié)大小)的水平上執(zhí)行重寫和擦除操作)的粒度水平。
[0081]在所示實施例中,NVRAM控制器332可以從解碼表333讀取配置數據來為NVRAM142確立上述模式、大小等,或者另選地可以依賴于從MC331和I/O子系統315傳遞的解碼結果。例如,在制造時或在現場,計算機系統300可以對解碼表333編程以將NVRAM142的不同區(qū)域標記為系統存儲器、經由SATA接口展示的大容量存儲、經由USB BulkOnly Transport(B0T,單批量傳輸)接口展示的大容量存儲、支持TPM存儲的加密存儲,以及其他。這意味著將訪問定向到NVRAM設備142的不同分區(qū)的方式是經由解碼邏輯。例如,在一個實施例中,每一分區(qū)的地址范圍被定義在解碼表333中。在一個實施例中,在MC331接收到訪問請求時,該請求的目標地址被解碼以揭示該請求定向到存儲器、NVRAM大容量存儲、還是I/O。如果它是存儲器請求,則MC331和/或MSC控制器124根據目標地址進一步確定該請求定向到FM的高速緩存150B還是FM151B。對于FM151B訪問,該請求被轉發(fā)給NVRAM控制器332。如果該請求定向到I/O (例如,非存儲和存儲I/O設備),則IMC331將該請求傳遞給I/O子系統115。I/O子系統115進一步解碼該地址以確定該地址是指向NVRAM大容量存儲152A、B10S NVRAMl72還是其他非存儲或存儲I/O設備。如果該地址指向NVRAM大容量存儲152A或BIOS NVRAMl72,則I/O子系統115將該請求轉發(fā)給NVRAM控制器332。如果這一地址指向TMP NVRAMl73,則I/O子系統115將該請求傳遞給TPM334以執(zhí)行安全訪問。
[0082]新存儲器體系結構(如在此描述的)的存在允許很多新可能性。雖然下文以更多篇幅進一步進行了討論,但這些可能性中的一些在下文被快速突出。
[0083]根據一個可能的實現,但NVRAM142擔當系統存儲器中傳統DRAM技術的總替換或補充。在一個實施例中,NVRAM142表示二級系統存儲器的引入(例如,系統存儲器可被看做具有包括作為高速緩存150B (DRAM器件340的一部分)的近存儲器的第一級系統存儲器和包括遠存儲器(FM) 151B (NVRAM142的一部分)的第二級系統存儲器)。
[0084]根據一些實施例,NVRAM142擔當閃存/磁/光學大容量存儲152B的總替換或補充。如上所述,在一些實施例中,即使NVRAM152A能夠具有字節(jié)級可尋址性,NVRAM控制器332也仍然可按多個字節(jié)的塊(取決于實現(例如,64千字節(jié)、128千字節(jié)等等))來訪問NVRAM大容量存儲152A。NVRAM控制器332從NVRAM大容量存儲152A訪問數據的具體方式對處理器310上執(zhí)行的軟件而言可以是透明的。例如,即使NVRAM大容量存儲152A可與閃存/磁/光學大容量存儲152A不同地訪問,操作系統也仍然可以將NVRAM大容量存儲152A看作標準大容量存儲設備(例如,串行ATA硬盤驅動器或其他標準形式的大容量存儲設備)。
[0085]在其中NVRAM大容量存儲152A擔當閃存/磁/光學大容量存儲152B的總替換的實施例中,不必將存儲驅動程序用于塊可尋址的存儲訪問。從存儲訪問移除存儲驅動程序開銷可以提高訪問速度并節(jié)省功率。在其中需要NVRAM大容量存儲152A對OS和/或應用看起來是塊可訪問且與閃存/磁/光學大容量存儲152B可區(qū)分的替換實施例中,所模擬的存儲驅動程序可被用來向軟件展示塊可訪問的接口(例如,通用串行總線(USB)單批量傳輸(BOT) 1.0 ;串行高級技術附件(SATA) 3.0 ;等等)以訪問NVRAM大容量存儲152A。
[0086]在一個實施例中,NVRAM142擔當諸如BIOS閃存362和TPM閃存372 (在圖3中用虛線示出以指示它們是可任選的)等固件存儲器的總替換或補充。例如,NVRAM142可包括用于補充或替換BIOS閃存362的BIOS NVRAMl72分區(qū)并且可包括用于補充或替換TPM閃存372的TPM NVRAMl73分區(qū)。固件存儲器還可存儲TPM334用來保護敏感系統信息(例如,加密密鑰)的系統持久狀態(tài)。在一個實施例中,NVRAM142用作固件存儲器消除了對第三方閃存部分存儲對于系統操作來說很關鍵的代碼和數據的需求。
[0087]繼續(xù)圖3的系統的討論,在一些實施例中,計算機系統100的體系結構可包括多個處理器,但為簡明起見,在圖3中示出了單個處理器310。處理器310可以是包括任何類型的數據處理器,包括通用或專用中央處理單元(CPU)、專用集成電路(ASIC)或數字信號處理器(DSP)。例如,處理器310可以是通用處理器,諸如酷睿(Core?) i3、i5、i7、2Duo和Quad,至強(Xeon?),或安騰(Itanium?)處理器,這些均可以從加利福尼亞圣克拉拉市的英特爾公司獲得?;蛘?,處理器310可以來自另一公司,如加州桑尼維爾的ARM控股有限公司、加州桑尼維爾的MIPS技術公司,等等。處理器310可以是專用處理器,諸如,例如,網絡或通信處理器、壓縮引擎、圖形處理器、協處理器、嵌入式處理器、或類似物。處理器310可被實現在一個或多個封裝內包括的一個或多個芯片上。處理器310可以是一個或多個襯底的一部分,和/或可以使用若干種處理技術中的任何一種,諸如,例如,BiCM0S、CM0S,或NM0S,在一個或多個襯底上實現。在圖3所示的實施例中,處理器310具有片上系統(SOC)配置。
[0088]在一個實施例中,處理器310包括包含用于執(zhí)行諸如3D或2D圖形命令等圖形命令的邏輯的集成圖形單元311。盡管本發(fā)明的各實施例不限于任何特定的集成圖形單元311,但在一個實施例中,圖形單元311能夠執(zhí)行工業(yè)標準圖形命令,如Open GL和/或Direct X應用編程接口(API)(例如,0penGL4.1和Direct XII)所指定的那些。
[0089]處理器310還可包括一個或多個核101-104,但同樣為清楚起見在圖3中示出了單個核。在許多實施例中,核101-104包括內部功能塊,如一個或多個執(zhí)行單元、退役單元、一組通用和專用寄存器,等等。如果核是多線程的或超線程的,則每一硬件線程也可被認為是“邏輯”核。核101-104可以是在體系結構和/或指令集上同構的或異構的。例如,核中的一些可以是有序的,而另一些是無序的。作為另一示例,核中的兩個或多個核能夠執(zhí)行相同的指令集,而其他核只能夠執(zhí)行該指令集中的一個子集或執(zhí)行不同的指令集。
[0090]處理器310還可包括一個或多個高速緩存,如可被實現成SRAM和/或DRAM的高速緩存313。在許多未示出的實施例中,除了高速緩存313之外還采用附加的高速緩存,以使核101-104內的執(zhí)行單元與存儲器設備150B和151B之間存在多個高速緩存級。例如,共享高速緩存單元組可以包括上級高速緩存(如I級(LI)高速緩存)、中級緩存(諸如2級(L2)、3級(L3)、4級(L4)、或其他級別的高速緩存)、(LLC),和/或其不同組合。在不同的實施例中,高速緩存313可按不同的方式分配并且在不同的實施例中可以是許多不同大小之一。例如,高速緩存313可以是8兆字節(jié)(MB)高速緩存、16MB高速緩存等。另外,在不同實施例中,高速緩存可以是直接映射的高速緩存、全相聯高速緩存、多路組相聯高速緩存或具有另一類型映射的高速緩存。在包括多個核的其他實施例中,高速緩存313可包括在所有核之間共享的一個較大部分或者可被分成若干個獨立功能片(例如,每個核一片)。高速緩存313也可包括在所有核之間共享的一部分和作為每個核的獨立功能片的若干個其他部分。
[0091]處理器310還可包括包含協調并操作核101-104的那些組件的本地代理314。本地代理單元314可以包括,例如,功率控制單元(P⑶)和顯示單元。P⑶可以是或包括管理核101-104和集成圖形單元311的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅動一個或多個從外部連接的顯示器。
[0092]如上所述,在一些實施例中,處理器310包括集成存儲器控制器(MO331、近存儲器高速緩存(MSC)控制器、以及NVRAM控制器332,它們全部可以在與處理器310相同的芯片上,或在連接到處理器310的分開芯片和/或封裝上。DRAM器件144可以指與MC331和MSC控制器124相同或不同的芯片上;因而,一個芯片可具有處理器310和DRAM器件144 ;一個芯片可以具有處理器310和另一 DRAM器件144 (且這些芯片可在相同或不同的封裝中);一個芯片可以具有核101-104且另一芯片具有MC331、MSC控制器124和DRAM144 (這些芯片可以在相同或不同的封裝中);一個芯片可以具有核101-104,另一芯片具有MC331和MSC控制器124,且又一芯片具有DRAM144(這些芯片可以在相同或不同的封裝中);等等。
[0093]在一些實施例中,處理器310包括耦合到MC331的I/O子系統115。I/O子系統115啟用處理器310與以下串行或并行I/O設備之間的通信:一個或多個網絡336 (如局域網、廣域網、或因特網)、存儲I/O設備(如閃存/磁/光學大容量存儲152B、B10S閃存362、TPM閃存372)以及一個或多個非存儲I/O設備337 (如顯示器、鍵盤、揚聲器等等)。I/O子系統115可包括平臺控制器中樞(PCH)(未示出),該PCH進一步包括用于提供對存儲和非存儲I/O設備及網絡的訪問的若干I/O適配器338和其他I/O電路。為了實現這一點,I/O子系統115可具有用于所利用的每一 I/O協議的至少一個集成I/O適配器338。I/O子系統115可以在與處理器310相同的芯片上,或在連接到處理器310的分開的芯片和/或封裝上。
[0094]I/O適配器338將處理器310中利用的主機通信協議轉換成兼容特定I/O設備的協議。對于閃存/磁/光學大容量存儲152B,I/O適配器338可以轉換的協議中的一些包括外圍部件互連(PCI) Express (PC1-E) 3.0 ;USB3.0 ;SATA3.0 ;小型計算機系統接口(SCSI)Ultra-640 ;以及電氣電子工程師協會(IEEE)1394 “火線”,以及其他。對于BIOS閃存362,I/O適配器338可以轉換的協議中的一些包括串行外圍接口(SPI)、微線(Microwire),以及其他。另外,可存在一個或多個無線協議I/O適配器。無線協議(以及其他)的各示例被用于個域網中,如IEEE802.15和藍牙4.0 ;無線局域網,如基于IEEE802.11的無線協議;以及蜂窩協議。
[0095]在一些實施例中,I/O子系統115耦合到用于控制對系統持久狀態(tài)(如安全數據、加密密鑰、平臺配置信息等)的訪問的TPM控制334。在一個實施例中,這些系統持久狀態(tài)被存儲在TMP NVRAMl73中并經由NVRAM控制器332來訪問。
[0096]在一個實施例中,TPM334是具有密碼功能的安全微控制器。TPM334具有多個信任相關的能力;例如,用于確保TPM所保護的數據只可用于該同一 TPM的SEAL能力。TPM334可以使用其加密能力來保護數據和密鑰(例如,秘密)。在一個實施例中,TPM334具有唯一且秘密的RSA密鑰,這允許它認證硬件設備和平臺。例如,TPM334可以驗證尋求訪問存儲在計算機系統300中的數據的系統是預期系統。TPM334還能夠報告平臺(例如,計算機系統300)的完整性。這允許外部資源(例如,網絡上的服務器)確定平臺的可信賴性但不阻止用戶對該平臺的訪問。
[0097]在一些實施例中,I/O子系統315還包括管理引擎(ME) 335,這是允許系統管理員監(jiān)視、維護、更新、升級、以及修理計算機系統300的微處理器。在一個實施例中,系統管理員可以通過經由網絡336通過ME335編輯解碼表333的內容來遠程地配置計算機系統300。
[0098]為便于解釋,本申請有時將NVRAM142稱為PCMS設備。PCMS設備包括非易失性的、具有低功耗的、且可在位級修改的多層(垂直堆疊的)PCM單元陣列。如此,術語NVRAM設備和PCMS設備可在以下討論中互換地使用。然而,應當意識到,如上所述,除PCMS以外的不同技術也可被用于NVRAM142。
[0099]應當理解,計算機系統可以利用NVRAM142作為系統存儲器、大容量存儲、固件存儲器和/或其他存儲器和存儲目的,即使該計算機系統的處理器不具有處理器310的全部上述組件或具有比處理器310更多的組件。
[0100]在圖3中示出的特定實施例中,MSC控制器124和NVRAM控制器332與處理器310位于同一管芯或封裝上(稱為CPU封裝)。在其他實施例中,MSC控制器124和/或NVRAM控制器332可以位于管芯外或CPU封裝外,通過諸如存儲器總線(像DDR總線(例如,DDR3、DDR4等))、PCI express總線、桌面管理接口(DMI)總線或任何其他類型的總線等總線I禹合到處理器310或CPU封裝。
[0101]用于事務多線程軟件和非事務軟件的遠側存儲器
[0102]處理器設計者當前正在設計啟用對多線程軟件的“事務”支持的增強型指令集。在常規(guī)(即,非事務)多線程軟件中,程序用“鎖”來保護數據。在任何一個時刻只有一個線程可以持有鎖,所以它可以確保沒有其他線程在同一時刻修改該數據。這往往是悲觀的:具有鎖的線程阻止任何線程取走該鎖,即使它們只想讀取該數據或對它作出非沖突的更新。
[0103]有了事務支持,參考圖4,在操縱數據時,各線程不再需要取得鎖。它們開始事務401,作出它們的改變402,并且在它們已經完成時,提交事務403或在不能提交該事務的情況下退回在步驟402作出的改變404。盡管線程在事務的過程期間作出其改變402,參考圖5,處理器510內的特殊硬件570記錄該線程讀取和寫入的任何/所有高速緩存5113和近存儲器550B位置。
[0104]通常,事務所作出的任何/所有數據寫入僅僅存在于高速緩存中,因為高速緩存保持系統的最新近改變。即,如果事務需要改變數據項,則該數據項從較深存儲中提取出(如果它尚未處于高速緩存中),并隨后被寫入高速緩存。因而,假定事務所作出的數據改變的量被限制成小于可用于每一數據地址的高速緩存大小,則事務所作出的所有改變將存在于高速緩存中。處理器內的硬件阻止這些經改變的數據項寫回到持久存儲,直至該事務的提交為止。在第一實施例中,以上引用的高速緩存包括處理器高速緩存和近存儲器。在第二實施例中,以上引用的高速緩存只包括處理器高速緩存(即,不包括近存儲器)。為簡明起見,本文的其余部分將主要指該第一實施例。
[0105]在一實施例中,處理器510的每一 CPU核501-504和/或處理器510內的每一 CPU核內的每一指令執(zhí)行流水線存在特殊硬件570的實例。在此,如上所述,執(zhí)行事務線程的核/流水線的特殊硬件570實例(例如,用邏輯電路來實現)記錄該事務的高速緩存和近存儲器讀和寫。注意,處理器510內的一些高速緩存級可以服務多個核(例如,末級高速緩存),而處理器510內的其他高速緩存級可只服務單個核(例如,核的LI高速緩存)。
[0106]在事務準備好提交時,特殊硬件570檢查在該事務執(zhí)行時沒有其他線程對這些相同位置作出任何改變或從這些相同位置讀取。如果滿足這一條件,則該事務被提交403并且該線程繼續(xù)。在此,提交改變意味著這些改變被寫入持久存儲。如果不滿足這一條件,則該事務被放棄,并且所有它的改變被撤消404。在一個實施例中,為了“撤消”改變,表示在該事務作出任何改變之前的數據狀態(tài)的新鮮數據從持久存儲中提取出并被重寫到高速緩存中,或者使被改變的高速緩存行無效。該線程隨后可重試該操作,嘗試不同的策略(例如,使用鎖的策略),或完全放棄。
[0107]在一實現中,NVRAM遠存儲器551B對應于在提交事務時所提交的數據改變要存儲在其中的“持久”存儲,而近存儲器550B和近存儲器以上的任何/全部高速緩存513對應于線程能夠在提交其事務之前作出改變的高速緩存位置。
[0108]然而,在各種情況下,持久存儲的概念可以擴展到在技術上不滿足上述事務的定義的其他類型的軟件進程。根據各種不同的信息處理范例,持久存儲可以是可寫數據存儲,它的各個記錄反映一些進程或數據結構的正式識別的狀態(tài)(并且因此是全局可見的,例如)和/或具有在擴展的時間跨度內(例如,計算系統的多個開/關周期)被需要的某一預期。注意,許多這樣的軟件進程還可選擇在NVRAM遠存儲器551B中實現持久存儲。
[0109]對于意識到持久存儲的存在的那些非事務軟件進程,該軟件必須具有確保需要被持久地存儲的經修改的數據在對它進行任何后續(xù)改變之前被從高速緩存轉儲清除并被存儲到持久存儲的嵌入的預防措施。在此,例如,如果對數據項作出改變,并且該軟件認為該改變需要被反映在持久存儲中,則該軟件將插入高速緩存行轉儲清除指令(例如,CLFLUSH)其后伴有存儲器防護指令(例如,MFENCE)0高速緩存行轉儲清除指令將使得新改變的數據被寫回持久存儲551B。存儲器防護指令將阻止同一線程的其他操作訪問該數據,直至它已被寫回持久存儲55IB為止。
[0110]在更復雜的方法中,該線程的軟件包括用于跟蹤高速緩存中的什么數據項需要被持久儲存到持久存儲551B的復雜的簿記(book keeping)任務。在此,例如,某些數據項可被該線程的軟件識別為需要持久儲存,則簿記軟件將跟蹤這些數據項并且在代碼執(zhí)行中的適當時間,執(zhí)行適當的高速緩存行和存儲器防護指令。
[0111]圖6示出了經改進的方法,其中圖5的特殊硬件570也被使用,不僅支持以上參考圖4描述的事務的退回,還消除了對上述軟件簿記功能的需求。
[0112]如在圖6中觀察到的,只要求該軟件定義代碼的持久區(qū)域。這一定義在該區(qū)域的開頭用PBEGIN指令來標記601并在該區(qū)域的結尾用PEND指令來標記604。PBEGIN指令實際上“打開”特殊硬件570的功能602。當代碼在PBEGIN指令之后執(zhí)行時,特殊硬件570跟蹤哪些高速緩存行被改變603。在PEND指令執(zhí)行時604,它使得特殊硬件570所標識的高速緩存行被轉儲清除605到持久存儲551B并關閉特殊硬件570。在PEND指令后不允許任何其他指令執(zhí)行,直至所有高速緩存行被轉儲清除以實現存儲器防護。
[0113]因而,特殊硬件570不僅在事務操作期間還在非事務操作期間跟蹤高速緩存訪問。圖5示出了耦合到特殊硬件570的核內的指令執(zhí)行流水線580的表示。在此,耦合被用來響應于PBEGIN指令打開特殊硬件570并響應于PEND指令關閉該特殊硬件。該指令執(zhí)行流水線還使用用于阻止發(fā)出下一指令直至高速緩存轉儲清除完成的邏輯來設計。高速緩存轉儲清除邏輯也耦合到該指令執(zhí)行流水線和該特殊硬件,但為方便起見未示出。高速緩存轉儲清除邏輯由PEND指令來觸發(fā)進入動作并且引用特殊硬件570來了解哪些高速緩存行需要被轉儲清除。圖5的其他特征如以上參考圖3描述的一樣。
[0114]圖7示出了描繪特殊硬件的這兩個功能的綜合方法。除非事務操作開始或PBEGIN指令被執(zhí)行,否則特殊硬件551B保持空閑701。
[0115]如果事務操作開始,則特殊硬件570被啟用并且開始跟蹤哪些高速緩存行被該事務修改702。在事務完成時,處理器內的事務硬件571檢查以查看任何其他事務是否已經對這些相同的高速緩存行703進行了寫或讀。如果沒有,則這些改變被提交704給遠存儲器NVRAM551B,否則用來自持久存儲NVRAM551B的內容來替換這些高速緩存行或使這些高速緩存行無效705。
[0116]如果執(zhí)行了 PBEGIN指令,則特殊硬件570被啟用并且開始跟蹤哪些高速緩存行被該軟件進程修改706。在執(zhí)行PEND指令時,所有經修改的高速緩存數據被寫回持久存儲NVRAM551B并且沒有其他指令被準許執(zhí)行直至寫回完成707。
[0117]圖8示出了要由編譯器執(zhí)行的編譯過程。如在圖8中觀察到的,編譯過程標識801代碼區(qū)的開頭,在該開頭之后由該代碼作出的任何數據改變要被持久儲存到持久存儲中。響應于標識801,編譯代碼向該程序代碼中插入802PBEGIN指令或標記代碼中的要插入PBEGIN指令的位置。編譯過程還標識803代碼區(qū)的開頭,在開頭之后插入(或要插入)PBEGIN指令,該代碼區(qū)的數據改變不必被持久儲存。響應于第二代碼區(qū)的標識803,編譯過程將PEND指令插入程序代碼中(或標記要插入PEND指令的位置),在需要被持久儲存的最后數據改變之后但在不需要被持久儲存的第一數據改變之前。
[0118]以上討論所教導的過程可以用程序代碼來執(zhí)行,程序代碼諸如使機器(諸如“虛擬機”、放置在半導體芯片上的通用CPU處理器或處理核或放置在半導體芯片上的專用處理器)執(zhí)行某些功能的機器可執(zhí)行指令。另選地,這些功能可由包含用于執(zhí)行這些功能的硬連線邏輯的專用硬件組件來執(zhí)行,或由編程的計算機組件和自定義的硬件組件的任何組合來執(zhí)行。
[0119]存儲介質可用于存儲程序代碼。存儲程序代碼的存儲介質可體現為但不限于一個或多個存儲器(例如,一個或多個閃存、隨機存取存儲器(靜態(tài)、動態(tài)或其它))、光盤、CD-ROM、DVD ROM、EPROM、EEPR0M、磁或光卡或適于存儲電子指令的其它類型的機器可讀介質。還可從遠程計算機(例如,服務器)將程序代碼作為體現在傳播介質中的數據信號(例如,經由通信鏈路(例如,網絡連接))下載至請求計算機(例如,客戶機)。
[0120]在上述說明書中,已參考本發(fā)明具體示例實施例描述了本發(fā)明。然而,顯然可對這些實施例作出各種修改和改變,而不背離如所附權利要求所述的本發(fā)明的更寬泛精神和范圍。因此,應當以說明性而非限制性的意味看待說明書和附圖。
【權利要求】
1.一種處理器,包括: 到非易失性隨機存取存儲器的接口 ;以及 用于以下操作的邏輯電路: 標識事務所修改的要被持久儲存到所述非易失性隨機存取存儲器的高速緩存行;以及 標識軟件進程所修改的要被持久儲存到所述非易失性隨機存取存儲器的高速緩存行。
2.如權利要求1所述的處理器,其特征在于,所述非易失性隨機存取存儲器是相變存儲器。
3.如權利要求2所述的處理器,其特征在于,所述非易失性隨機存取存儲器是相變存儲器和開關。
4.如權利要求1-3中的任一項所述的處理器,其特征在于,還包括用于執(zhí)行所述軟件進程的標識所述軟件進程的起始點的第一指令和執(zhí)行所述軟件進程的標識所述軟件進程的結束點的第二指令的指令執(zhí)行流水線,其中所述軟件進程在所述起始點和所述結束點之間作出的數據改變要被持久儲存到所述非易失性隨機存取存儲器,所述指令執(zhí)行流水線耦合到所述邏輯電路以響應于所述第一指令來啟用所述邏輯電路并響應于所述第二指令來禁用所述邏輯電路。
5.如權利要求4所述的處理器,其特征在于,還包括耦合到所述指令執(zhí)行流水線和所述邏輯電路的高速緩存轉儲清除電路。
6.如權利要求5所述的處理器,其特征在于,所述指令執(zhí)行流水線阻止任何其他指令的執(zhí)行,直至所述高速緩存轉儲清除電路完成了對所述邏輯電路所標識的高速緩存行的轉儲清除。
7.一種方法,包括: 在處理器上執(zhí)行事務,其中所述事務的執(zhí)行包括作出對一個或多個高速緩存級中的數據改變、跟蹤所述改變駐留在所述一個或多個高速緩存級中的位置、確定所述數據改變是否要被持久儲存到非易失性隨機存取存儲器、以及將所述事務作出的所述數據改變持久儲存到所述非易失性隨機存取存儲器;以及 在所述處理器上執(zhí)行軟件進程,標記所述軟件進程作出的數據改變要被持久儲存的所述軟件進程的區(qū)域的開頭和結尾、跟蹤所述軟件進程在所述開頭和所述結尾之間作出的數據改變、以及在到達所述區(qū)域的所述結尾時將所述軟件進程作出的所述數據改變持久儲存到所述非易失性隨機存取存儲器。
8.如權利要求7所述的方法,其特征在于,所述開頭是用第一指令來標記的且所述結尾是用第二指令來標記的。
9.如權利要求7所述的方法,其特征在于,所述非易失性隨機存取存儲器是用相變存儲器來實現的。
10.如權利要求9所述的方法,其特征在于,所述非易失性隨機存取存儲器是用相變存儲器和開關來實現的。
11.如權利要求8所述的方法,其特征在于,所述方法還包括響應于所述第一指令來啟用所述處理器的硬件。
12.如權利要求11所述的方法,其特征在于,所述方法還包括響應于所述第二指令來禁用所述硬件。
13.一種其上儲存有程序代碼的機器可讀存儲介質,所述程序代碼在由計算系統處理時使得如權利要求7-12中的任一項所述的方法被執(zhí)行。
14.一種方法,包括: 標識其數據改變要被持久儲存到持久存儲的代碼區(qū);以及 分別用第一指令和第二指令來標記所述區(qū)域的開頭和結尾。
15.如權利要求14所述的方法,其特征在于,所述第一指令使得處理器啟用跟蹤所述數據改變的硬件。
16.如權利要求15所述的方法,其特征在于,所述第二指令禁用所述硬件。
17.如權利要求14所述的方法,其特征在于,所述第二指令使得所述數據改變被從一個或多個高速緩存級轉儲清除并儲存到所述持久存儲。
18.如權利要求17所述的方法,其特征在于,所述第二指令阻止任何其他指令被執(zhí)行,直至所述數據改變已完成從所述一個或多個高速緩存級的轉儲清除以及儲存到所述持久存儲。
19.如權利要求14所述的方法,其特征在于,所述持久存儲是非易失性隨機存取存儲器。
20.如權利要求19所述的方法,其特征在于,所述非易失性隨機存取存儲器是相變存儲器。
21.如權利要求20所述的方法,其特征在于,所述非易失性隨機存取存儲器是相變存儲器和開關。
22.—種其上儲存有程序代碼的機器可讀存儲介質,所述程序代碼在由計算系統處理時使得如權利要求14-21中的任一項所述的方法被執(zhí)行。
【文檔編號】G06F12/08GK104050112SQ201410098020
【公開日】2014年9月17日 申請日期:2014年3月17日 優(yōu)先權日:2013年3月15日
【發(fā)明者】T·威爾豪姆 申請人:英特爾公司