2級存儲器分級結(jié)構(gòu)中的存儲器側(cè)高速緩存的動態(tài)部分斷電的制作方法
【專利摘要】描述用于刷新多級存儲器分級結(jié)構(gòu)中的存儲器側(cè)高速緩存(MSC)的所指定區(qū)域的系統(tǒng)和方法。例如,按照一個實施例的計算機系統(tǒng)包括:存儲器子系統(tǒng),包括非易失性系統(tǒng)存儲器和用于緩存非易失性系統(tǒng)存儲器的部分的易失性存儲器側(cè)高速緩存(MSC);以及刷新引擎,用于響應(yīng)與MSC的所指定區(qū)域關(guān)聯(lián)的停用條件而將MSC的所指定區(qū)域刷新到非易失性系統(tǒng)存儲器。
【專利說明】2級存儲器分級結(jié)構(gòu)中的存儲器側(cè)高速緩存的動態(tài)部分斷電
【技術(shù)領(lǐng)域】
[0001]一般來說,本發(fā)明涉及計算機系統(tǒng)領(lǐng)域。更具體來說,本發(fā)明涉及用于實現(xiàn)多級存儲器分級結(jié)構(gòu)的設(shè)備和方法。
【背景技術(shù)】
[0002]A.當(dāng)前存儲器和存儲配置
當(dāng)今計算機革新的限制因素之一是存儲器和存儲技術(shù)。在常規(guī)計算機系統(tǒng)中,系統(tǒng)存儲器(又稱作主要存儲器、主存儲器、可執(zhí)行存儲器)通常由動態(tài)隨機存取存儲器(DRAM)來實現(xiàn)?;贒RAM的存儲器甚至在沒有存儲器讀取或?qū)懭氚l(fā)生時也消耗功率,因為它必須不斷對內(nèi)部電容器再充電?;贒RAM的存儲器是易失性的,這意味著,一旦去除電力,則DRAM存儲器中存儲的數(shù)據(jù)丟失。常規(guī)計算機系統(tǒng)還依靠多級緩存來改進性能。高速緩存是定位在處理器與系統(tǒng)存儲器之間的高速存儲器,以便比可能從系統(tǒng)存儲器服務(wù)于存儲器存取請求更快地服務(wù)于存儲器存取請求。這類高速緩存通常采用靜態(tài)隨機存取存儲器(SRAM)來實現(xiàn)。高速緩存管理協(xié)議可用來確保將最頻繁存取的數(shù)據(jù)和指令存儲在高速緩存級之一內(nèi),由此減少存儲器存取事務(wù)的數(shù)量并且改進性能。
[0003]關(guān)于大容量存儲(又稱作輔助存儲或磁盤存儲),常規(guī)大容量存儲裝置通常包括磁介質(zhì)(例如硬盤驅(qū)動器)、光介質(zhì)(例如壓縮盤(⑶)驅(qū)動器、數(shù)字多功能光盤(DVD)等)、全息介質(zhì)和/或大容量閃速存儲器(例如固態(tài)驅(qū)動器(SSD)、可拆卸閃速驅(qū)動器等)。一般來說,這些存儲裝置被認為是輸入/輸出(I/O)裝置,因為它們由處理器經(jīng)過實現(xiàn)各種I/O協(xié)議的各種I/O適配器來存取。這些I/O適配器和I/O協(xié)議消耗大量功率,并且能夠?qū)β憔娣e和平臺的形狀因數(shù)具有顯著影響。在沒有連接到永久電源時具有有限電池使用壽命的便攜或移動裝置(例如膝上型計算機、上網(wǎng)本、平板計算機、個人數(shù)字助理(PDA)、便攜媒體播放器、便攜游戲裝置、數(shù)碼相機、移動電話、智能電話、特征電話等)可包括可拆卸大容量存儲裝置(例如嵌入式多媒體卡(eMMC)、安全數(shù)字(SD)卡)),其通常經(jīng)由低功率互連和I/O控制器來耦合到處理器,以便滿足活動和空閑功率預(yù)算。
[0004]關(guān)于固件存儲器(例如引導(dǎo)存儲器(又稱作BIOS閃存)),常規(guī)計算機系統(tǒng)通常使用閃速存儲器裝置來存儲經(jīng)常被讀取但很少(或者從不)被寫入的永久系統(tǒng)信息。例如,在引導(dǎo)過程(基本輸入和輸出系統(tǒng)(BIOS)鏡像)期間由處理器所運行、以初始化關(guān)鍵系統(tǒng)組件的初始指令通常存儲在閃速存儲器裝置中。市場上當(dāng)前可用的閃速存儲器裝置一般具有有限速度(例如50 MHz)。這個速度由于讀協(xié)議的開銷(例如2.5 MHz)而進一步減小。為了加速BIOS執(zhí)行速度,常規(guī)處理器一般在引導(dǎo)過程的預(yù)擴展固件接口(PEI)階段期間緩存BIOS代碼的一部分。處理器高速緩存的大小對PEI階段中使用的BIOS代碼(又稱作“PEI BIOS代碼”)的大小提出限制。
[0005]B.相變存儲器(PCM)及相關(guān)技術(shù)
有時又稱作相變隨機存取存儲器(PRAM或PCRAM)、PCME、奧式統(tǒng)一存儲器或硫?qū)倩颮AM(C-RAM)的相變存儲器(PCM)是一種類型的非易失性計算機存儲器,其利用硫?qū)倩锊AУ莫毺匦袨?。由于通過電流的經(jīng)過所產(chǎn)生的熱量,硫?qū)倩锊A軌蛟趦煞N狀態(tài)之間來切換:晶體和非晶。PCM的最近版本能夠?qū)崿F(xiàn)兩種附加的不同狀態(tài)。
[0006]PCM提供比閃存要高的性能,因為PCM的存儲器元件能夠更快速切換,寫入(將單獨位改變成I或O)能夠在無需首先擦除單元的整個塊的情況下進行,以及來自寫入的降級較慢(PCM裝置可經(jīng)受得住大約I億次寫循環(huán);PCM降級歸因于編程期間的熱膨脹、金屬(和其它材料)遷移和其它機制)。
【專利附圖】
【附圖說明】
[0007]以下描述和附圖用來說明本發(fā)明的實施例。附圖包括:
圖1示出按照本發(fā)明的實施例的高速緩存和系統(tǒng)存儲器布置;
圖2示出本發(fā)明的實施例中采用的存儲器和存儲分級結(jié)構(gòu);
圖3示出其上可實現(xiàn)本發(fā)明 的實施例的計算機系統(tǒng);
圖4A示出按照本發(fā)明的實施例、包括PCM的第一系統(tǒng)架構(gòu);
圖4B示出按照本發(fā)明的實施例、包括PCM的第二系統(tǒng)架構(gòu);
圖4C示出按照本發(fā)明的實施例、包括PCM的第三系統(tǒng)架構(gòu);
圖4D示出按照本發(fā)明的實施例、包括PCM的第四系統(tǒng)架構(gòu);
圖4E示出按照本發(fā)明的實施例、包括PCM的第五系統(tǒng)架構(gòu);
圖4F示出按照本發(fā)明的實施例、包括PCM的第六系統(tǒng)架構(gòu);
圖4G示出按照本發(fā)明的實施例、包括PCM的第七系統(tǒng)架構(gòu);
圖4H示出按照本發(fā)明的實施例、包括PCM的第八系統(tǒng)架構(gòu);
圖41示出按照本發(fā)明的實施例、包括PCM的第九系統(tǒng)架構(gòu);
圖4J示出按照本發(fā)明的實施例、包括PCM的第十系統(tǒng)架構(gòu);
圖4K示出按照本發(fā)明的實施例、包括PCM的第十一系統(tǒng)架構(gòu);
圖4L示出按照本發(fā)明的實施例、包括PCM的第十二系統(tǒng)架構(gòu);以及 圖4M示出按照本發(fā)明的實施例、包括PCM的第十三系統(tǒng)架構(gòu);
圖7A-B示出用于停用MSC的區(qū)域的本發(fā)明的實施例;
圖7A-B示出用于停用MSC的區(qū)域的本發(fā)明的實施例;
圖8A-B示出用于響應(yīng)電力故障條件而刷新(flush) MSC的本發(fā)明的實施例;
圖9A-B示出用于響應(yīng)休眠條件而從MSC來刷新臟(dirty)高速緩存線的本發(fā)明的實施例。
【具體實施方式】
[0008]在以下描述中,提出了諸如邏輯實現(xiàn)、操作碼、指定操作數(shù)的部件、資源劃分/共享/重復(fù)實現(xiàn)、系統(tǒng)組件的類型和相互關(guān)系以及邏輯劃分/集成選擇之類的許多具體細節(jié),以便提供對本發(fā)明的更透徹了解。然而,本領(lǐng)域的技術(shù)人員將會理解,即使沒有這類具體細節(jié),也可實施本發(fā)明。在其它情況下,沒有詳細示出控制結(jié)構(gòu)、門級電路和完整軟件指令序列,以免影響對本發(fā)明的理解。通過所包含的描述,本領(lǐng)域的技術(shù)人員將能夠?qū)崿F(xiàn)適當(dāng)?shù)墓δ苄远鵁o需過分實驗。[0009]說明書中提到“ 一個實施例”、“實施例”、“ 一個示例實施例”等表示所述的實施例可包括特定特征、結(jié)構(gòu)或特性,但可能不一定每一個實施例都包括該特定特征、結(jié)構(gòu)或特性。此外,這類詞語不一定指同一個實施例。此外,在結(jié)合一個實施例來描述特定特征、結(jié)構(gòu)或特性時,無論是否明確描述,均認為結(jié)合其它實施例來實現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領(lǐng)域的技術(shù)人員的知識范圍之內(nèi)的。
[0010]在以下描述和權(quán)利要求書中,可使用術(shù)語“耦合”和“連接”及其派生。應(yīng)當(dāng)理解,這些術(shù)語并不是要作為彼此的同義詞?!榜詈稀庇糜诒硎颈舜丝梢杂谢蛘呖梢詻]有直接物理或電接觸的兩個或更多元件相互配合或交互?!斑B接”用于表示相互耦合的兩個或更多元件之間的通信的建立。
[0011]加括號文本以及具有虛線邊界的框(例如長劃線、短劃線、點劃線、點)在本文中有時用來示出可選操作/組件,其對本發(fā)明的實施例添加附加特征。但是,這種標記法不應(yīng)當(dāng)被理解為意味著這些是唯一選項或者可選操作/組件,和/或具有實線邊界的框在本發(fā)明的某些實施例中不是可選的。
[0012]介紹
隨著不斷增加數(shù)量的處理器核和新使用模型(例如虛擬化),存儲器容量和性能要求持續(xù)增加。另外,存儲器功率和成本分別成為電子系統(tǒng)的總功率和成本的顯著成分。
[0013]本發(fā)明的一些實施例通過在存儲器技術(shù)之間智能地細分性能要求和容量要求,來解決上述難題。這種方式集中于采用較少量的較高速率存儲器、例如DRAM來提供性能,同時使用明顯更廉價和密集的非易失性隨機存取存儲器(NVRAM)來實現(xiàn)系統(tǒng)存儲器主體。下面所述的本發(fā)明的實施例定義平臺配置,其實現(xiàn)NVRAM的使用的分級存儲器子系統(tǒng)組織。存儲器分級結(jié)構(gòu)中的NVRAM的使用還實現(xiàn)新使用、例如擴展引導(dǎo)空間和大容量存儲實現(xiàn),如下面詳細描述。
[0014]圖1示出按照本發(fā)明的實施例的高速緩存和系統(tǒng)存儲器布置。具體來說,圖1示出存儲器分級結(jié)構(gòu),其中包括:一組內(nèi)部處理器高速緩存120 ;充當(dāng)遠存儲器高速緩存的“近存儲器”121,其可包括(一個或多個)內(nèi)部高速緩存106和外部高速緩存107-109 ;以及“遠存儲器”122。在本發(fā)明的一些實施例中可用于“遠存儲器”的一種特定類型的存儲器是非易失性隨機存取存儲器(“NVRAM”)。因此,下面提供NVRAM的概述,之后接著遠存儲器和近存儲器的概述。
[0015]A.非易失性隨機存取存儲器(“NVRAM”)
存在NVRAM的許多可能技術(shù)選擇,包括PCM、相變存儲器和開關(guān)(PCMS)(后者是前者的更具體實現(xiàn))、字節(jié)可尋址永久存儲器(BPRAM)、通用存儲器、Ge2Sb2Te5、可編程金屬化單元(PMC)、電阻存儲器(RRAM)、RESET (非晶)單元、SET (晶體)單元、PCME、奧氏(Ovshinsky)存儲器、鐵電存儲器(又稱作聚合物存儲器和聚(N-乙烯基咔唑))、鐵磁存儲器(又稱作自旋電子、SPRAM (自旋轉(zhuǎn)移矩RAM)、STRAM (自旋隧穿RAM)、磁阻存儲器、磁存儲器、磁隨機存取存儲器(MRAM))以及半導(dǎo)體-氧化物-氮化物-氧化物-半導(dǎo)體(S0N0S,又稱作介電存儲器)。
[0016]為了在本申請所述的存儲器分級結(jié)構(gòu)中使用,NVRAM具有下列特性:
(I)它即使在去除電力之后也保持其內(nèi)容,與固態(tài)硬盤(SSD)中使用的閃存存儲器相似,但是與易失性的SRAM和DRAM不同; (2)在空閑時比諸如SRAM和DRAM之類的易失性存儲器要低的功率消耗;
(3)與SRAM和DRAM相似的隨機存取(又稱作隨機可尋址);
(4)以比SSD中存在的閃存(其只能夠每次一個“塊”來重寫和擦除一在大小方面對NOR閃存最小為64千字節(jié)以及對NAND閃存為16千字節(jié))要低的粒度等級可重寫和可擦除;
(5)可用作系統(tǒng)存儲器并且分配有系統(tǒng)存儲器地址空間的全部或者一部分;
(6)能夠使用事務(wù)協(xié)議(支持區(qū)分不同事務(wù)以使得那些事務(wù)能夠無序完成的事務(wù)標識符(ID)的協(xié)議)、通過總線耦合到處理器,并且允許以足夠小的粒度等級的存取以支持作為系統(tǒng)存儲器的NVRAM的操作(例如,諸如64或128字節(jié)之類的高速緩存線大小)。例如,總線可以是存儲器總線(例如,諸如DDR3、DDR4等的DDR總線),通過其運行事務(wù)協(xié)議,與正常使用的非事務(wù)協(xié)議相反。作為另一個示例,總線可以是通過其正常運行事務(wù)協(xié)議(本地事務(wù)協(xié)議)的總線,例如PCI快速(PCIE)總線、桌面管理接口(DMI)總線或者利用事務(wù)協(xié)議和足夠小的事務(wù)有效載荷大小(例如,諸如64或128字節(jié)之類的高速緩存線大小)的任何其它類型的總線;以及
(7)下列一個或多個:
a)比非易失性存儲器/存儲技術(shù)、例如閃存要快的寫入速度;
b)極高的讀取速度(比閃存要快或者接近或相當(dāng)于DRAM讀取速度);
c)直接可寫(而不是像SSD中使用的閃存存儲器那樣要求在寫入數(shù)據(jù)之前進行擦除(以Is進行改寫));和/或
d)故障之前的若干數(shù)量級(例如2或3)更高的寫耐久性(超過SSD中使用的引導(dǎo)ROM和閃存)。
[0017]如上所述,與閃存存儲器(其必須每次一個完整“塊”來重寫和擦除)相對照,在任何給定實現(xiàn)中用以存取NVRAM的粒度等級可取決于特定存儲控制器和特定存儲器總線或者NVRAM與其耦合的其它類型的總線。例如,在NVRAM用作系統(tǒng)存儲器的一些實現(xiàn)中,盡管以一字節(jié)的粒度來存取的固有能力,但是NVRAM可以高速緩存線(例如64字節(jié)或128字節(jié)高速緩存線)的粒度來存取,因為高速緩存線是存儲器子系統(tǒng)存取存儲器的等級。因此,當(dāng)NVRAM部署在存儲器子系統(tǒng)中時,它可在與同一存儲器子系統(tǒng)中使用的DRAM (例如“近存儲器”)相同的粒度等級來存取。即使如此,由存儲控制器和存儲器總線或者其它類型的總線對NVRAM的存取的粒度等級也比由閃存所使用的塊大小以及I/O子系統(tǒng)的控制器和總線的存取大小要小。
[0018]NVRAM還可結(jié)合耗損均勻化算法,以考慮如下事實:在遠存儲器級的存儲單元在多個寫入存取之后開始耗損,特別是在大量寫入例如在系統(tǒng)存儲器實現(xiàn)中可發(fā)生的情況下。由于高循環(huán)計數(shù)塊最可能這樣耗損,所以耗損均勻化通過交換高循環(huán)計數(shù)塊與低循環(huán)計數(shù)塊的地址,來擴展跨遠存儲器單元的寫入。注意,大多數(shù)地址交換通常對應(yīng)用程序是透明的,因為它由硬件、低級軟件(例如低級驅(qū)動程序或操作系統(tǒng))或者兩者的組合來操控。
[0019]B.遠存儲器
本發(fā)明的一些實施例的遠存儲器122采用NVRAM但實現(xiàn),但是不一定局限于任何特定存儲器技術(shù)。遠存儲器122根據(jù)其特性和/或它在存儲器/存儲分級結(jié)構(gòu)中的應(yīng)用與其它指令和數(shù)據(jù)存儲器/存儲技術(shù)是可加以區(qū)分的。例如,遠存儲器122不同于: I)靜態(tài)隨機存取存儲器(SRAM),其可用于分別專門用于處理器核101-104的每個的第O級和第I級內(nèi)部處理器高速緩存101a-b、102a-b、103a-b、103a_b和104a_b以及由處理器核所共享的低級高速緩存(LLC) 105。
[0020]2)動態(tài)隨機存取存儲器(DRAM),配置為處理器100內(nèi)部(例如在與處理器100相同的裸晶上)的高速緩存106,和/或配置為處理器外部(例如在與處理器100相同或不同的封裝中)的一個或多個高速緩存107-109 ;以及
3)閃存存儲器/磁盤/光盤,作為大容量存儲(未示出)來應(yīng)用;以及
4)存儲器,例如閃存存儲器或者其它只讀存儲器(ROM),作為固件存儲器(其能夠表示引導(dǎo)ROM、BIOS閃存和/或TPM閃存)(未示出)來應(yīng)用。
[0021]遠存儲器122可用作指令和數(shù)據(jù)存儲,其是由處理器100直接可尋址的,并且與作為大容量存儲所應(yīng)用的閃存/磁盤/光盤相對照,能夠與處理器100保持足夠一致。此外,如上所述以及如以下詳細描述,遠存儲器122可放置于存儲器總線上,并且可與存儲控制器(其又與處理器100直接通信)直接通信。
[0022]遠存儲器122可與其它指令和數(shù)據(jù)存儲技術(shù)(例如DRAM)相結(jié)合,以形成混合存儲器(又稱作并存PCM和DRAM ;第一級存儲器和第二級存儲器;FLAM(閃存和DRAM))。注意,包括PCM/PCMS的上述技術(shù)的至少一部分可用作大容量存儲來作為對系統(tǒng)存儲器的替代或補充,并且在這樣應(yīng)用時無需是由處理器隨機可存取的、字節(jié)可尋址的或者直接可尋址。
[0023]為了便于說明,本申請的其余部分的大多數(shù)將提到作為遠存儲器122的技術(shù)選擇的“NVRAM”或者更具體來說是“PCM”或“PCMS”。因此,術(shù)語NVRAM、PCM、PCMS和遠存儲器可在下列論述中可互換地使用。但是,應(yīng)當(dāng)知道,如上所述,不同技術(shù)也可用于遠存儲器。NVRAM也并不局限于用作遠存儲器。
[0024]C.近存儲器
“近存儲器” 121是在遠存儲器122前面所配置的存儲器的中間級,其具有相對于遠存儲器的較低讀取/寫入存取等待時間,和/或更加對稱的讀取/寫入存取等待時間(即,具有大致相當(dāng)于寫入時間的讀取時間)。在一些實施例中,近存儲器121具有比遠存儲器122明顯要低的寫入等待時間但是具有相似(例如略低或相等)的讀取等待時間;例如,近存儲器121可以是易失性存儲器、例如易失性隨機存取存儲器(VRAM),并且可包括DRAM或者其它高速基于電容器的存儲器。但是要注意,本發(fā)明的基本原理并不局限于這些特定存儲器類型。另外,近存儲器121可具有較低密度,和/或可比遠存儲器122的制造費用要高。
[0025]在一個實施例中,近存儲器121配置在遠存儲器122與內(nèi)部處理器高速緩存120之間。在以下所述的實施例的一部分中,近存儲器121配置為一個或多個存儲器側(cè)高速緩存(MSC) 107-109,以掩蔽遠存儲器的性能和/或使用限制,包括例如讀取/寫入等待時間限制和存儲器降級限制。在這些實現(xiàn)中,MSC 107-109和遠存儲器122的組合以近似、相當(dāng)或超過僅使用DRAM作為系統(tǒng)存儲器的系統(tǒng)的性能等級進行操作。如下面詳細論述,雖然在圖1中示為“高速緩存”,但是近存儲器121可包括其中它執(zhí)行其它作用的模式,作為對執(zhí)行高速緩存的作用的補充或替代。
[0026]近存儲器121能夠位于處理器裸晶上(如(一個或多個)高速緩存106)和/或位于處理器裸晶外部(如高速緩存107-109)(例如在位于CPU封裝的獨立裸晶上,位于具有到CPU封裝的高帶寬鏈路的CPU封裝外部,例如存儲器雙列直插存儲器模塊(DIMM)、轉(zhuǎn)接卡/小背板或者計算機主板上)。近存儲器121可耦合成使用單個或多個高帶寬鏈路、例如DDR或其它事務(wù)高帶寬鏈路(如以下詳細描述)與處理器100進行通信。
[0027]示范系統(tǒng)存儲器分配方案
圖1示出在本發(fā)明的實施例中如何相對系統(tǒng)物理地址(SPA)空間116-119來配置各級高速緩存101-109。如所述,這個實施例包括具有一個或多個核101-104的處理器100,其中各核具有其自己的專用上級高速緩存(L0)101a-104a和中間級高速緩存(MLC) (LI)高速緩存101b-104b。處理器100還包括共享LLC 105。這各個高速緩存級的操作是完全被理解的,并且在這里不作詳細描述。
[0028]圖1所示的高速緩存107-109可專用于特定系統(tǒng)存儲器地址范圍或者一組非毗連地址范圍。例如,高速緩存107專用于充當(dāng)系統(tǒng)存儲器地址范圍#1 116的MSC,以及高速緩存108和109專用于充當(dāng)系統(tǒng)存儲器地址范圍#2 117和#3 118的非重疊部分部分的MSC。后一種實現(xiàn)可用于其中將由處理器100所使用的SPA空間交織為由高速緩存107-109所使用的地址空間(例如,當(dāng)配置為MSC時)的系統(tǒng)。在一些實施例中,這后一個地址空間稱作存儲器通道地址(MCA)空間。在一個實施例中,內(nèi)部高速緩存101a-106執(zhí)行整個SPA空間的緩存操作。
[0029]如本文所使用的系統(tǒng)存儲器是運行于處理器100的軟件可見的和/或直接可尋址的;而在高速緩沖存儲器101a-109沒有形成系統(tǒng)地址空間的直接可尋址部分的意義上它們可對軟件透明地操作,但是核還可支持指令的執(zhí)行,以允許軟件向(一個或多個)高速緩存的部分或全部提供某種控制(配置、策略、暗示等)。系統(tǒng)存儲器細分為區(qū)域116-119可作為系統(tǒng)配置過程的一部分手動執(zhí)行(例如由系統(tǒng)設(shè)計人員),和/或可由軟件自動執(zhí)行。
[0030]在一個實施例中,系統(tǒng)存儲器區(qū)域116-119使用遠存儲器(例如PCM)、以及在一些實施例中使用配置為系統(tǒng)存儲器的近存儲器來實現(xiàn)。系統(tǒng)存儲器地址范圍#4表示一個地址范圍,其使用高速存儲器、例如DRAM(其可以是按照系統(tǒng)存儲器模式(與緩存模式相反)所配置的近存儲器)來實現(xiàn)。
[0031]圖2示出按照本發(fā)明的實施例、存儲器/存儲分級結(jié)構(gòu)140以及近存儲器144和NVRAM的不同可配置操作模式。存儲器/存儲分級結(jié)構(gòu)140具有多級,其中包括:(I)高速緩存級150,其可包括處理器高速緩存150A(例如圖1中的高速緩存101A-105)和作為遠存儲器的高速緩存的可選近存儲器150B (按照如本文所述的某些操作模式);(2)系統(tǒng)存儲器級151,其可包括遠存儲器151B(例如,NVRAM、如PCM)(當(dāng)近存儲器存在時,或者當(dāng)近存儲器不存在時只是作為系統(tǒng)存儲器174的NVRAM)和作為系統(tǒng)存儲器151A進行操作的可選近存儲器(按照如本文所述的某些操作模式);(3)大容量存儲級152,其可包括閃速/磁/光大容量存儲152B和/或NVRAM大容量存儲152A (例如NVRAM 142的一部分);以及
(4)固件存儲器級153,其可包括BIOS閃存170和/或BIOS NVRAM 172和可選的置信平臺模式(TPM)NVRAM 173。
[0032]如所示,近存儲器144可實現(xiàn)成工作在多種不同模式,包括:第一模式,其中它作為遠存儲器的高速緩存進行操作(作為FM的近存儲器150B);第二模式,其中它作為系統(tǒng)存儲器151A進行操作,并且占用SPA空間的一部分(有時稱作近存儲器“直接存取”模式);以及一個或多個附加操作模式,例如暫存器192或者寫緩沖器193。在本發(fā)明的一些實施例中,近存儲器是可分區(qū)的,其中各分區(qū)可同時地工作在所支持模式的不同模式;以及不同實施例可通過硬件(例如熔絲、引腳)、固件和/或軟件(例如經(jīng)過MSC控制器124中的一組可編程范圍寄存器,其中可存儲不同的二進制代碼以識別各模式和分區(qū))來支持分區(qū)的配置(例如大小、模式)。
[0033]圖2中的系統(tǒng)地址空間A 190用來示出當(dāng)近存儲器配置為遠存儲器的MSC150B時的操作。在這種配置中,系統(tǒng)地址空間A 190表示整個系統(tǒng)地址空間(并且系統(tǒng)地址空間B 191不存在)。備選地,系統(tǒng)地址空間B 191用來示出在為近存儲器的全部或者一部分指配系統(tǒng)地址空間的一部分時的實現(xiàn)。在這個實施例中,系統(tǒng)地址空間B 191表示向近存儲器151A所指配的系統(tǒng)地址空間的范圍,以及系統(tǒng)地址空間A 190表示向NVRAM 174所指配的系統(tǒng)地址空間的范圍。
[0034]另外,在充當(dāng)遠存儲器150B的高速緩存時,近存儲器144可在MSC控制器124的控制下工作在各種子模式。在這些模式的每個中,在近存儲器沒有形成系統(tǒng)地址空間的直接可尋址部分的意義上,近存儲器地址空間(NMA)對軟件是透明的。這些模式包括但并不限于以下方面:
(I)回寫緩存模式:在這種模式中,充當(dāng)FM高速緩存的近存儲器150B的全部或部分用作NVRAM遠存儲器(FM) 15IB的高速緩存。在處于回寫模式時,每一個寫操作最初定向到作為的高速緩存的近存儲器FM 150B (假定對其定向?qū)懭氲母咚倬彺婢€存在于高速緩存中)。僅當(dāng)作為FM的高速緩存的近存儲器150B中的高速緩存線將由另一個高速緩存線來替代時,才執(zhí)行對應(yīng)寫操作以更新NVRAM FM 151B (與以下所述的直寫模式相反,其中每個寫操作立即傳播到NVRAM FM 151B)。
[0035](2)近存儲器旁路模式:在這種模式中,所有讀和寫繞過充當(dāng)FM高速緩存的匪150B,并且直接轉(zhuǎn)到NVRAM FM 151B。例如當(dāng)應(yīng)用不是高速緩存友好的或者要求數(shù)據(jù)以高速緩存線的粒度提交為持久化時,可使用這種模式。在一個實施例中,由處理器高速緩存150A和充當(dāng)FM高速緩存的匪150B所執(zhí)行的緩存相互無關(guān)地進行操作。因此,數(shù)據(jù)可緩存在充當(dāng)FM高速緩存的匪150B,其沒有緩存在處理器高速緩存150A中(并且其在一些情況下可能不準許被緩存在處理器高速緩存150A中),反過來也是一樣。因此,可將指定為在處理器高速緩存中“不可緩存的”某些數(shù)據(jù)緩存在充當(dāng)FM高速緩存150B的匪中。
[0036](3)近存儲器讀高速緩存寫旁路模式:這是上述模式的變化,其中允許來自NVRAMFM 151 B的永久數(shù)據(jù)的讀緩存(S卩,永久數(shù)據(jù)緩存在作為用于只讀操作的遠存儲器150B的高速緩存的近存儲器中)。當(dāng)永久數(shù)據(jù)的大多數(shù)是“只讀”并且應(yīng)用使用是高速緩存友好的時,這是有用的。
[0037](4)近存儲器讀高速緩存直寫模式:這是近存儲器讀高速緩存寫旁路模式的變化,其中除了讀緩存之外還緩存寫命中。對作為FM的高速緩存的近存儲器150B的每一個寫入引起對FM 151B的寫入。因此,由于高速緩存的直寫性質(zhì),高速緩存線持久化仍然得到保證。
[0038]在近存儲器直接存取模式中起作用時,作為系統(tǒng)存儲器151A的近存儲器的全部或部分是軟件直接可見的,并且形成SPA空間的部分。這種存儲器可完全在軟件控制之下。這種方案可創(chuàng)建軟件的非均勻存儲器地址(NUMA)存儲器域,其中它相對于NVRAM系統(tǒng)存儲器174從近存儲器144獲得更高性能。作為舉例而不是限制,這種使用可用于某些高性能計算(HPC)和圖形應(yīng)用(其要求對某些數(shù)據(jù)結(jié)構(gòu)的極快速存取。[0039]在一個備選實施例中,近存儲器直接存取模式通過“牽制(pinning)”近存儲器中的某些高速緩存線(即,具有也同時地存儲在NVRAM 142中的數(shù)據(jù)的高速緩存線)來實現(xiàn)。這種牽制可在較大的多路組關(guān)聯(lián)高速緩存中有效地進行。
[0040]圖2還示出NVRAM 142的一部分可用作固件存儲器。例如,BIOS NVRAM 172部分可用來存儲BIOS鏡像(作為對在BIOS閃存170中存儲BIOS信息的替代或補充)。BIOSNVRAM部分172可以是SPA空間的一部分,并且是由運行于處理器核101-104上的軟件直接可尋址的,而BIOS閃存170是經(jīng)過1/0子系統(tǒng)115可尋址的。作為另一個示例,置信平臺模塊(TPM)NVRAM 173部分可用來保護敏感系統(tǒng)信息(例如加密密鑰)。
[0041]因此,如所示,NVRAM 142可實現(xiàn)成工作在多種不同模式,包括作為遠存儲器151B (例如,當(dāng)近存儲器144存在/進行操作時,近存儲器是否經(jīng)由MSC控制124充當(dāng)FM的高速緩存(在(一個或多個)高速緩存101A-105之后并且在沒有MSC控制124的情況下直接存取))?’僅NVRAM系統(tǒng)存儲器174 (不是作為遠存儲器,因為沒有近存儲器存在/進行操作;并且在沒有MSC控制124的情況下存取);NVRAM大容量存儲152A ;B10S NVRAM 172 ;以及TPM NVRAM 173。雖然不同實施例可按照不同方式來指定NVRAM模式,但是圖3描述解碼表333的使用。
[0042]圖3示出其上可實現(xiàn)本發(fā)明的實施例的示范計算機系統(tǒng)300。計算機系統(tǒng)300包括處理器310以及具有用于系統(tǒng)存儲器、大容量存儲和可選固件存儲器的NVRAM 142的存儲器/存儲子系統(tǒng)380。在一個實施例中,NVRAM 142包括由計算機系統(tǒng)300用于存儲數(shù)據(jù)、指令、狀態(tài)和其它永久和非永久信息的整個系統(tǒng)存儲器和存儲分級結(jié)構(gòu)。如先前所述,NVRAM 142能夠配置成實現(xiàn)系統(tǒng)存儲器、大容量存儲和固件存儲器、TPM存儲器等的典型存儲器和存儲分級結(jié)構(gòu)中的作用。在圖3的實施例中,NVRAM 142分區(qū)為FM 151B、NVRAM大容量存儲152A、B10S NV RAM 173和TMP NVRAM 173。還預(yù)期具有不同作用的存儲分級結(jié)構(gòu),并且NVRAM 142的應(yīng)用并不局限于上述作用。
[0043]作為舉例,描述當(dāng)作為FM的高速緩存的近存儲器150B處于回寫緩存中的同時的操作。在一個實施例中,雖然作為FM的高速緩存的近存儲器150B處于上述回寫緩存模式中,但是讀操作將首先到達MSC控制器124,其將執(zhí)行查找以確定所請求數(shù)據(jù)是否存在于充當(dāng)FM的高速緩存的近存儲器150B中(例如利用標簽高速緩存342)。如果存在的話,則它將經(jīng)過1/0子系統(tǒng)115將數(shù)據(jù)返回到請求CPU、核101-104或1/0裝置。如果數(shù)據(jù)不存在的話,則MSC控制器124將向NVRAM控制器332發(fā)送請求連同系統(tǒng)存儲器地址。NVRAM控制器332將使用解碼表333來將系統(tǒng)存儲器地址轉(zhuǎn)換成NVRAM物理裝置地址(PDA),并且將讀操作定向到遠存儲器151B的這個區(qū)域。在一個實施例中,解碼表333包括地址間接尋址表(AIT)組件,NVRAM控制器551使用其在系統(tǒng)存儲器地址與NVRAM PDA之間進行轉(zhuǎn)換。在一個實施例中,作為實現(xiàn)成分配存儲器存取操作并且由此降低對NVRAM FM 151B的耗損的耗損均勻化算法的一部分,來更新AIT。備選地,AIT可以是NVRAM控制器332中存儲的獨立表。
[0044]在接收來自NVRAM FM 151B的所請求數(shù)據(jù)時,NVRAM控制器332將所請求數(shù)據(jù)返回給MSC控制器124,其將數(shù)據(jù)存儲在充當(dāng)FM高速緩存的MSC近存儲器150B中,并且還通過1/0子系統(tǒng)115將數(shù)據(jù)發(fā)送給請求處理器核101-104或1/0裝置。對這個數(shù)據(jù)的后續(xù)請求可直接從充當(dāng)FM高速緩存的近存儲器150B來服務(wù),直到它由其它某些NVRAM FM數(shù)據(jù)替代。
[0045]如所述,在一個實施例中,存儲器寫操作也首先轉(zhuǎn)到MSC控制器124,其將它寫入充當(dāng)FM高速緩存的MSC近存儲器150B中。在回寫緩存模式中,在接收寫操作時,數(shù)據(jù)可能沒有直接發(fā)送給NVRAM FM 151B。例如,僅當(dāng)其中存儲數(shù)據(jù)、充當(dāng)FM高速緩存的MSC近存儲器150B中的位置必須再用于存儲不同系統(tǒng)存儲器地址的數(shù)據(jù)時,數(shù)據(jù)才可發(fā)送給NVRAMFM 151B。當(dāng)這種情況發(fā)生時,MSC控制器124注意到數(shù)據(jù)在NVRAM FM 151B中不是最近當(dāng)前的,以及因此將從充當(dāng)FM高速緩存的近存儲器150B中對它進行檢索,并且將它發(fā)送給NVRAM控制器332。NVRAM控制器332查找系統(tǒng)存儲器地址的PDA,并且將數(shù)據(jù)寫到NVRAMFM 151B。
[0046]圖3中,NVRAM控制器332示為使用三個獨立線路連接到FM 15IB、NVRAM大容量存儲152A和BIOS NVRAM 172。但是,這不一定意味著,存在將NVRAM控制器332連接到NVRAM142的這些部分的三個獨立物理總線或通信通道。而是在一些實施例中,公共存儲器總線或者另一類型的總線(例如以下針對圖4A-M所述的那些總線)用來在通信上將NVRAM控制器332連接到FM 151B、NVRAM大容量存儲152A和BIOS NVRAM 172。例如,在一個實施例中,圖3中的三個線條表示總線、例如存儲器總線(例如DDR3、DDR4等總線),NVRAM控制器332通過其實現(xiàn)與NVRAM 142進行通信的事務(wù)協(xié)議。NVRAM控制器332還可通過支持本地事務(wù)協(xié)議的總線(例如PCI快速總線、桌面管理接口(DMI)總線或者利用事務(wù)協(xié)議和足夠小的事務(wù)有效載荷大小(例如,諸如64或128字節(jié)之類的高速緩存線大小)的任何其它類型的總線)來與NVRAM 142進行通信。
[0047]在一個實施例中,計算機系統(tǒng)300包括集成存儲控制器(MC) 331,其執(zhí)行處理器310的中央存儲器存取控制,并且耦合到:1)存儲器側(cè)高速緩存(MSC)控制器124,以控制對充當(dāng)遠存儲器高速緩存150B的近存儲器(匪)的存取;以及2) NVRAM控制器332,以控制對NVRAM 142的存取。雖然圖3中示為獨立單元,但是MSC控制器124和NVRAM控制器332可在邏輯上形成MC 331的部分。
[0048]在所示實施例中,MSC控制器124包括一組范圍寄存器336,其指定用于充當(dāng)遠存儲器高速緩存的匪150B的操作模式(例如,回寫緩存模式、近存儲器旁路模式等,以上所述)。在所示實施例中,DRAM 144用作用于充當(dāng)遠存儲器的高速緩存的匪150B的存儲器技術(shù)。響應(yīng)存儲器存取請求,MSC控制器124可確定(根據(jù)范圍寄存器336中指定的操作模式)該請求是否能夠從充當(dāng)FM的高速緩存的匪150B來服務(wù)或者該請求是否必須發(fā)送給NVRAM控制器332,其則可從NVRAM 142的遠存儲器(FM)部分151B來服務(wù)于該請求。
[0049]在NVRAM 142采用PCMS來實現(xiàn)的一個實施例中,NVRAM控制器332是PCMS控制器,其采用符合PCMS技術(shù)的協(xié)議來執(zhí)行存取。如先前所述,PCMS存儲器固有地能夠以字節(jié)的粒度來存取。然而,NVRAM控制器332可在較低粒度等級、例如高速緩存線(例如64位或128位高速緩存線)或者符合存儲器子系統(tǒng)的任何其它粒度等級來存取基于PCMS的遠存儲器151B。本發(fā)明的基本原理并不局限于用于存取基于PCMS的遠存儲器151B的任何特定粒度等級。但是,一般來說,當(dāng)基于PCMS的遠存儲器151B用來形成系統(tǒng)地址空間的一部分時,粒度等級將高于傳統(tǒng)上用于其它非易失性存儲技術(shù)(其只能以“塊”等級(在大小方面對NOR閃存最小為64 Kbyte以及對NAND閃存為16 Kbyte)來執(zhí)行重寫和擦除操作)、如閃存的粒度等級。[0050]在所示實施例中,NVRAM控制器332能夠讀取配置數(shù)據(jù),以從解碼表333來建立NVRAM 142的先前所述模式、大小等,或者備選地能夠依靠從MC 331和I/O子系統(tǒng)315所傳遞的解碼結(jié)果。例如,在制造時或者在現(xiàn)場,計算機系統(tǒng)300能夠?qū)⒔獯a表333編程為將NVRAM 142的不同區(qū)域標記為系統(tǒng)存儲器、經(jīng)由SATA接口所展示的大容量存儲、經(jīng)由USB僅大塊傳輸(BOT)接口所展示的大容量存儲、支持TPM存儲的加密存儲等等。將存取導(dǎo)向NVRAM裝置142的不同分區(qū)的方式是經(jīng)由解碼邏輯進行。例如,在一個實施例中,各分區(qū)的地址范圍在解碼表333中定義。在一個實施例中,當(dāng)MC 331接收存取請求時,請求的目標地址經(jīng)過解碼以揭示該請求是定向到存儲器、NVRAM大容量存儲還是I/O。如果它是存儲器請求,則MC 331和/或MSC控制器124還從目標地址來確定該請求是定向到作為FM的高速緩存的匪150B或者定向到FM 151B。對于FM 151B存取,將請求轉(zhuǎn)發(fā)到NVRAM控制器332。如果請求被定向到1/0(例如非存儲和存儲I/O裝置),則MC 331將這個請求傳遞給I/O子系統(tǒng)115。I/O子系統(tǒng)115還對地址進行解碼,以確定該地址是指向NVRAM大容量存儲152A、B10S NVRAM 172還是其它非存儲或存儲I/O裝置。如果這個地址指向NVRAM大容量存儲152A或BIOS NVRAM 172,則子系統(tǒng)115將該請求轉(zhuǎn)發(fā)到NVRAM控制器332。如果這個地址指向TMP NVRAM 173,則I/O子系統(tǒng)115將該請求傳遞給TPM 334以執(zhí)行安全存取。
[0051]在一個實施例中,轉(zhuǎn)發(fā)到NVRAM控制器332的各請求伴隨指示存取類型的屬性(又稱作“事務(wù)類型”)。在一個實施例中,NVRAM控制器332可模擬所請求存取類型的存取協(xié)議,使得平臺的其余部分仍然不知道由NVRAM 142在存儲器和存儲分級結(jié)構(gòu)中執(zhí)行的多個作用。在備選實施例中,NVRAM控制器332可執(zhí)行對NVRAM 142的存儲器存取,而與它是哪一種事務(wù)類型無關(guān)。要理解,解碼路徑能夠與以上所述的不同。例如,MC 331可對存取請求的目標地址進行解碼,并且確定它是否定向到NVRAM 142。如果它定向到NVRAM 142,則MC 331按照解碼表333來生成屬性。基于該屬性,MC 331則將請求轉(zhuǎn)發(fā)到適當(dāng)?shù)南掠芜壿?例如NVRAM控制器332和I/O子系統(tǒng)315),以執(zhí)行所請求數(shù)據(jù)存取。在又一個實施例中,如果對應(yīng)屬性沒有從上游邏輯(例如MC 331和I/O子系統(tǒng)315)來傳遞,則NVRAM控制器332可對目標地址進行解碼。也可實現(xiàn)其它解碼路徑。
[0052]諸如本文所述之類的新存儲器架構(gòu)的存在提供大量新的可能性。雖然在再一步的下面更為詳細地進行論述,但是下面立即快速強調(diào)這些可能性的一部分。
[0053]按照一個可能實現(xiàn),NVRAM 142充當(dāng)系統(tǒng)存儲器中的傳統(tǒng)DRAM技術(shù)的完全替代或補充。在一個實施例中,NVRAM 142表示引入第二級系統(tǒng)存儲器(例如,系統(tǒng)存儲器可被看作具有包括作為高速緩存(DRAM裝置340的一部分)的近存儲器150B的第一級系統(tǒng)存儲器)以及包括遠存儲器(FM) 15IB (NVRAM 142的一部分)的第二級系統(tǒng)存儲器)。
[0054]按照一些實施例,NVRAM 142充當(dāng)閃速/磁/光大容量存儲152B的完全替代或補充。如先前所述,在一些實施例中,即使NVRAM 152A能夠具有字節(jié)級可尋址性,NVRAM控制器332仍然可根據(jù)實現(xiàn)、按照多個字節(jié)的塊來存取在NVRAM大容量存儲152A(例如,64Kbyte、128 Kbyte等。)。由NVRAM控制器332從NVRAM大容量存儲152A來存取數(shù)據(jù)的特定方式可對處理器310所運行的軟件是透明的。例如,即使可從閃速/磁/光大容量存儲152A以不同方式來存取NVRAM大容量存儲152A,操作系統(tǒng)仍然可將NVRAM大容量存儲152A看作是標準大容量存儲裝置(例如串行ATA硬盤驅(qū)動器或者其它標準形式的大容量存儲裝置)。[0055]在NVRAM大容量存儲152A充當(dāng)閃速/磁/光大容量存儲152B的完全替代的一個實施例中,不需要將存儲驅(qū)動程序用于塊可尋址存儲存取。去除來自存儲存取的存儲驅(qū)動程序開銷能夠增加存取速度并且節(jié)省電力。在期望NVRAM大容量存儲152A對OS和/或應(yīng)用看來是作為塊可存取并且與閃速/磁/光大容量存儲152B是不可區(qū)分的備選實施例中,模擬存儲驅(qū)動程序能夠用來向用于存取NVRAM大容量存儲152A的軟件展示塊可存取接口(例如,通用串行總線(USB)僅大塊傳輸(BOT) 1.0、串行高級技術(shù)附連(SATA) 3.0等)。
[0056]在一個實施例中,NVRAM 142充當(dāng)固件存儲器、例如BIOS閃存362和TPM閃存372(圖3中以虛線示出,以指示它們是可選的)的完全替代或補充。例如,NVRAM 142可包括BIOS NVRAM 172部分以補充或替代BIOS閃存362,并且可包括TPM NVRAM 173部分以補充或替代TPM閃存372。固件存儲器還能夠存儲由TPM 334用來保護敏感系統(tǒng)信息(例如加密密鑰)的系統(tǒng)永久狀態(tài)。在一個實施例中,NVRAM 142用于固件存儲器消除了對于第三方閃存部件存儲對系統(tǒng)操作是關(guān)鍵的代碼和數(shù)據(jù)的需要。
[0057]然后繼續(xù)圖3的系統(tǒng)的論述,在一些實施例中,計算機系統(tǒng)100的架構(gòu)可包括多個處理器,但是為了簡潔起見,圖3中示出單個處理器310。處理器310可以是任何類型的數(shù)據(jù)處理器,包括通用或?qū)S弥醒胩幚砥?CPU)、專用集成電路(ASIC)或者數(shù)字信號處理器(DSP)。例如,處理器310可以是通用處理器,例如Core? i3、i5、i7、2 Duo和QuacUXeon ?或者Itanium?處理器,它們?nèi)伎蓮募永D醽喪タ死挠⑻貭柟镜玫健溥x地,處理器310可以來自另一公司,諸如加利福尼亞桑尼韋爾的ARM股份有限公司、加利福尼亞桑尼韋爾的MIPS技術(shù)公司等。處理器310可以是專用處理器,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器等。處理器310可在一個或多個封裝中包含的一個或多個芯片上實現(xiàn)。處理器310可以是一個或多個襯底的一部分和/或可使用多種工藝技術(shù)的任一種、例如BiCM0S、CM0S或NMOS在一個或多個襯底上實現(xiàn)。在圖3所示的實施例中,處理器310具有芯片上系統(tǒng)(SOC)配置。
[0058]在一個實施例中,處理器310包括集成圖形單元311,其包括用于運行圖形命令、例如3D或2D圖形命令的邏輯。雖然本發(fā)明的實施例并不局限于任何特定集成圖形單元311,但是在一個實施例中,圖形單元311能夠運行工業(yè)標準圖形命令,例如由Open GL和/或Direct X應(yīng)用編程接口 (API)(例如OpenGL 4.1和Direct X 11)所規(guī)定的那些命令。
[0059]處理器310還可包括一個或多個核101-104,但是再次為了清楚起見,圖3中示出單個核。在許多實施例中,(一個或多個)核101-104包括內(nèi)部功能塊,例如一個或多個執(zhí)行單元、退出單元、一組通用和專用寄存器等。如果(一個或多個)核是多線程或超線程的,則各硬件線程也可被認為是“邏輯”核。核101-104在架構(gòu)和/或指令集方面可以是同構(gòu)或異構(gòu)的。例如,一部分核可以是有序的,而其它核是無序的。作為另一個示例,兩個或更多核可以能夠運行同一指令集,而其它核可以能夠僅運行那個指令集的子集或者不同的指令集。
[0060]處理器310還可包括一個或多個高速緩存、例如高速緩存313,其可實現(xiàn)為SRAM和/或DRAM。在未示出的許多實施例中,除了高速緩存313之外的附加高速緩存實現(xiàn)成使得多級高速緩存存在于(一個或多個)核101-104中的執(zhí)行單元與存儲器裝置150BU51B之間。例如,共享高速緩存單元集合可包括上級高速緩存(例如第I級(LI)高速緩存)、中間級高速緩存(例如第2級(L2)、第3級(L3)、第4級(L4)或者其它級高速緩存)、(LLC)和/或它們的不同組合。在不同的實施例中,高速緩存313可按照不同方式來分配,并且在不同實施例中可以是許多不同大小其中之一。例如,高速緩存313可以是8兆字節(jié)(MB)高速緩存、16 MB高速緩存等。另外,在不同實施例中,高速緩存可以是直接映射高速緩存、全關(guān)聯(lián)高速緩存、多路組關(guān)聯(lián)高速緩存或者具有另一種類型的映射的高速緩存。在包括多個核的其它實施例中,高速緩存313可包括在所有核之間共享的一個大部分,或者可分為若干獨立功能層面(例如每個核一個層面)。高速緩存313還可包括在所有核之間共享的一個部分以及作為每個核的獨立功能層面的若干其它部分。
[0061]處理器310還可包括歸屬代理314,其包括協(xié)調(diào)和操作(一個或多個)核101-104的那些組件。歸屬代理單元314可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或者包括調(diào)節(jié)(一個或多個)核101-104和集成圖形單元311的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。
[0062]如所述,在一些實施例中,處理器310包括集成存儲控制器(頂0 331、近存儲器高速緩存(MSC)控制器和NVRAM控制器332,其全部能夠在與處理器310相同的芯片上或者在連接到處理器310的獨立芯片和/或封裝上。DRAM裝置144可以在與MC 331和MSC控制器124相同的芯片或者不同的芯片上;因此,一個芯片可具有處理器310和DRAM裝置144 ;一個芯片可具有處理器310和另一個DRAM裝置144并且(這些芯片可以在相同或不同的封裝中);一個芯片可具有(一個或多個)核101-104和另一個MC 331、MSC控制器124和DRAM 144(這些芯片可以在相同或不同的封裝中);一個芯片可具有(一個或多個)核101-104、另一個MC 331和MSC控制器124和另一個DRAM 144 (這些芯片可以在相同或不同的封裝中);等等。
[0063]在一些實施例中,處理器310包括耦合到MC 331的I/O子系統(tǒng)115。I/O子系統(tǒng)115實現(xiàn)處理器310與下列串聯(lián)或并行I/O裝置之間的通信:一個或多個網(wǎng)絡(luò)336 (例如局域網(wǎng)、廣域網(wǎng)或因特網(wǎng))、存儲I/O裝置(例如閃速/磁/光大容量存儲152B、BIOS閃存362,TPM閃存372)以及一個或多個非存儲I/O裝置337 (例如顯示器、鍵盤、喇叭等)。I/O子系統(tǒng)115可包括平臺控制器集線器(PCH)(未示出),其還包括若干I/O適配器338和其它I/O電路,以提供對存儲和非存儲I/O裝置和網(wǎng)絡(luò)的存取。為了實現(xiàn)這個方面,I/O子系統(tǒng)115可具有用于所使用的每個I/O協(xié)議的至少一個集成I/O適配器338。I/O子系統(tǒng)115能夠在與處理器310相同的芯片上或者在連接到處理器310的獨立芯片和/或封裝上。
[0064]I/O適配器338將處理器310中利用的主機通信協(xié)議轉(zhuǎn)換成與特定I/O裝置兼容的協(xié)議。對于閃速/磁/光大容量存儲152B,I/O適配器338可轉(zhuǎn)換的協(xié)議的一部分包括外設(shè)部件互連(PCI)-快速(PC1-E)3.0、USB 3.0、SATA 3.0、小型計算機系統(tǒng)接口(SCSI)Ultra-640以及電氣和電子工程師協(xié)會(IEEE) 1394 “防火墻”等等。對于BIOS閃存362,I/O適配器338可轉(zhuǎn)換的協(xié)議的一部分包括串行外設(shè)接口(SPI)、微絲(Microwire)等等。另外,可存在一個或多個無線協(xié)議I/O適配器。無線協(xié)議等等的示例用于個人區(qū)域網(wǎng)絡(luò)(例如IEEE 802.15和藍牙4.0)、無線局域網(wǎng)(例如基于IEEE 802.11的無線協(xié)議)和蜂窩協(xié)議中。
[0065]在一些實施例中,I/O子系統(tǒng)115耦合到TPM控制334,以控制對系統(tǒng)永久狀態(tài)、例如安全數(shù)據(jù)、加密密鑰、平臺配置信息等的存取。在一個實施例中,這些系統(tǒng)永久狀態(tài)存儲在TMP NVRAM 173中,并且經(jīng)由NVRAM控制器332來存取。[0066]在一個實施例中,TPM 334是具有密碼功能性的安全微控制器。TPM 334具有多個信任相關(guān)能力,例如用于確保由TPM所保護的數(shù)據(jù)只可用于同一 TPM的SEAL能力。TPM334能夠使用其加密能力來保護數(shù)據(jù)和密鑰(例如秘密)。在一個實施例中,TPM 334具有唯一和秘密的RSA密鑰,這允許它認證硬件裝置和平臺。例如,TPM 334能夠檢驗尋求對計算機系統(tǒng)300中存儲的數(shù)據(jù)的存取的系統(tǒng)是預(yù)計系統(tǒng)。TPM 334也能夠報告平臺(例如計算機系統(tǒng)300)的完整性。這允許外部資源(例如網(wǎng)絡(luò)上的服務(wù)器)確定平臺的置信度,但是不防止用戶對平臺的存取。
[0067]在一些實施例中,I/O子系統(tǒng)315還包括管理引擎(ME) 335,其是允許系統(tǒng)管理員監(jiān)測、維護、更新、升級和修復(fù)計算機系統(tǒng)300的微處理器。在一個實施例中,系統(tǒng)管理員能夠通過ME335經(jīng)由網(wǎng)絡(luò)336編輯解碼表333的內(nèi)容,由此來遠程配置計算機系統(tǒng)300。
[0068]為了便于說明,本申請的其余部分有時表示作為PCMS裝置的NVRAM 142。PCMS裝置包括多層(垂直堆疊)PCM單元陣列,其是非易失性的,具有低功率消耗,并且在比特級是可修改的。因此,術(shù)語“NVRAM裝置”和“PCMS裝置”可在下列論述中可互換地使用。但是,應(yīng)當(dāng)知道,如上所述,除了 PCMS之外的不同技術(shù)也可用于NVRAM 142。
[0069]應(yīng)當(dāng)理解,計算機系統(tǒng)能夠?qū)VRAM 142用于系統(tǒng)存儲器存儲器、大容量存儲、固件存儲器和/或其它存儲器和存儲目的,即使那個計算機系統(tǒng)的處理器沒有處理器310的所有上述組件,或者具有比處理器310要多的組件。
[0070]在圖3所示的具體實施例中,MSC控制器124和NVRAM控制器332位于與處理器310相同的裸晶或封裝(稱作CPU封裝)上。在其它實施例中,MSC控制器124和/或NVRAM控制器332可位于裸晶外或CPU封裝外,通過諸如存儲器總線(例如DDR總線(例如DDR3、DDR4等))、PCI快速總線、桌面管理接口(DMI)總線或者任何其它類型的總線之類的總線耦合到處理器310或CPU封裝。
[0071]示范PCM總線和封裝配置
圖4A-M示出多種不同部署,其中處理器、近存儲器和遠存儲器按照不同方式來配置和封裝。具體來說,圖4A-M所示的平臺存儲器配置系列實現(xiàn)新非易失性系統(tǒng)存儲器的使用,例如PCM技術(shù)或者更具體來說是PCMS技術(shù)。
[0072]雖然相同數(shù)字標號用于圖4A-N中的多個附圖,但是這不一定意味著,由那些數(shù)字標號所標識的結(jié)構(gòu)始終是相同的。例如,雖然相同標號在若干附圖中用來標識集成存儲控制器(MC)331和CPU 401,但是這些組件可在不同附圖中以不同方式來實現(xiàn)。沒有強調(diào)這些差別的一些,因為它們不是與了解本發(fā)明的基本原理相關(guān)的。
[0073]雖然下面描述若干不同系統(tǒng)平臺配置方式,但是這些方式分成兩大類別:分離架構(gòu),以及統(tǒng)一架構(gòu)。簡言之,在分離架構(gòu)方案中,存儲器側(cè)高速緩存(MSC)控制器(例如位于處理器裸晶中或者CPU封裝中的獨立裸晶上)截取所有系統(tǒng)存儲器請求。存在兩個獨立接口,其從那個控制器“向下游流動”(其離開CPU封裝),以耦合到近存儲器和遠存儲器。各接口設(shè)計用于特定類型的存儲器,并且各存儲器能夠在性能和容量方面獨立縮放。
[0074]在統(tǒng)一架構(gòu)方案中,單個存儲器接口離開處理器裸晶或CPU封裝,并且所有存儲器請求均發(fā)送給這個接口。MSC控制器連同近和遠存儲器子系統(tǒng)一起合并在這個單接口上。這個存儲器接口必須設(shè)計成滿足處理器的存儲器性能要求,并且必須支持事務(wù)、無序協(xié)議,至少因為PCMS裝置可能不是按順序處理讀取請求。按照上述一般類別,可采用下列特定平臺配置。
[0075]以下所述的實施例包括各種類型的總線/通道。術(shù)語“總線”和“通道”在本文中同義地使用。每個DIMM插槽的存儲器通道數(shù)量將取決于計算機系統(tǒng)(具有支持例如每個插槽三個存儲器通道的一些CPU封裝)中使用的特定CPU封裝。
[0076]另外,在使用DRAM的以下所述的實施例中,實際上可使用任何類型的DRAM存儲器通道,作為舉例而非限制包括DDR通道(例如DDR3、DDR4、DDR5等)。因此,雖然DDR因其在工業(yè)中的廣泛接受、所產(chǎn)生價格點等而是有利的,但是本發(fā)明的基本原理并不局限于任何特定類型的DRAM或易失性存儲器。
[0077]圖4A示出包括作為充當(dāng)CPU封裝401中(在處理器裸晶上或者在獨立裸晶上)的FM( BP,MSC)的高速緩存的近存儲器進行操作的一個或多個DRAM裝置403-406以及一個或多個NVRAM裝置(諸如駐留在DMM 450-451上、充當(dāng)遠存儲器的PCM存儲器)的分離架構(gòu)的一個實施例。CPU封裝401上的高帶寬鏈路407將單個或多個DRAM裝置403-406互連到處理器310,其包含集成存儲控制器(MC) 331和MSC控制器124。雖然圖4A和以下所述的其它附圖中示為獨立單元,但是在一個實施例中,MSC控制器124可集成在存儲控制器331中。
[0078]DIMM 450-451使用定義具有DDR地址、數(shù)據(jù)和控制線和電壓的DDR通道440 (例如,如電子器件工程聯(lián)合委員會(JEDEC)所定義的DDR3或DDR4標準)的DDR插槽和電連接。DIMM 450-451上的PCM裝置提供這個分離架構(gòu)的遠存儲器容量,其中到CPU封裝401的DDR通道440能夠攜帶DDR和事務(wù)協(xié)議。與其中處理器310或者CPU封裝中的其它邏輯(例如MC 331或MSC控制器124)傳送命令和接收立即響應(yīng)的DDR協(xié)議相對照,用來與PCM裝置進行通信的事務(wù)協(xié)議允許CPU 401發(fā)出各通過唯一事務(wù)ID來識別的一系列事務(wù)。命令由PCM DMM的接收PCM DMM上的PCM控制器來服務(wù),其向CPU封裝401潛在地?zé)o序回送響應(yīng)。處理器310或者CPU封裝401中的其它邏輯通過其事務(wù)ID (其隨響應(yīng)所發(fā)送)來識別各事務(wù)響應(yīng)。上述配置允許系統(tǒng)支持基于標準DDR DRAM的DIMM(通過DDR電連接使用DDR協(xié)議)和基于PCM的DI麗配置(通過相同DDR電連接使用事務(wù)協(xié)議)。
[0079]圖4B示出分離架構(gòu),其使用通過DDR通道440所耦合的基于DDR DRAM的DMM 452來形成近存儲器(其充當(dāng)MSC)。處理器310包含存儲控制器331和MSC控制器124。NVRAM裝置、例如PCM存儲器裝置駐留在基于PCM的DMM 453上,其使用CPU封裝401外的附加DDR通道442上的DDR插槽和電連接?;赑CM的DMM 453提供這個分離架構(gòu)的遠存儲器容量,其中到CPU封裝401的DDR通道442基于DDR電連接并且能夠攜帶DDR和事務(wù)協(xié)議。這允許系統(tǒng)采用變化數(shù)量的DDR DRAM DIMM 452(例如DD4 DIMM)和PCM DIMM 453來配置,以取得預(yù)期容量和/或性能點。
[0080]圖4C示出分離架構(gòu),其包含充當(dāng)CPU封裝401上(在處理器裸晶上或者在獨立裸晶上)的存儲器側(cè)高速緩存(MSC)的近存儲器403-406。CPU封裝上的高帶寬鏈路407用來將單個或多個DRAM裝置403-406互連到處理器310,其包含存儲控制器331和MSC控制器124,如分離架構(gòu)所定義。NVRAM、例如PCM存儲器裝置駐留在PCI快速卡或轉(zhuǎn)接卡455上,其通過PCI快速總線454來使用PCI快速電連接和PCI快速協(xié)議或者不同事務(wù)協(xié)議。PCI快速卡或轉(zhuǎn)接卡455上的PCM裝置提供這個分離架構(gòu)的遠存儲器容量。
[0081]圖4D是分離架構(gòu),其使用基于DDR DRAM的DIMM 452和DDR通道440來形成近存儲器(其充當(dāng)MSC)。處理器310包含存儲控制器331和MSC控制器124。NVRAM、例如PCM存儲器裝置455駐留在PCI快速卡或轉(zhuǎn)接卡上,其通過PCI快速鏈路454來使用PCI快速電連接和PCI快速協(xié)議或者不同事務(wù)協(xié)議。PCI快速卡或轉(zhuǎn)接卡455上的PCM裝置提供這個分離架構(gòu)的遠存儲器容量,其中CPU封裝401外的存儲器通道接口提供DDR DRAM DIMM452的多個DDR通道440。
[0082]圖4E示出統(tǒng)一架構(gòu),其包含充當(dāng)MSC的近存儲器以及遠存儲器NVRAM,例如PCI快速卡或轉(zhuǎn)接卡456 (其通過PCI快速總線454來使用PCI快速電連接和PCI快速協(xié)議或者不同事務(wù)協(xié)議)上的PCM。處理器310包含集成存儲控制器331,但是在這種統(tǒng)一架構(gòu)情況下,MSC控制器124連同DRAM近存儲器和NVRAM遠存儲器一起駐留在卡或轉(zhuǎn)接卡456上。
[0083]圖4F示出統(tǒng)一架構(gòu),其包含充當(dāng)MSC的近存儲器以及遠存儲器NVRAM、例如使用DDR通道457的DIMM 458上的PCM。這個統(tǒng)一架構(gòu)中的近存儲器包含各DIMM 458上充當(dāng)那個相同DI麗458上的PCM裝置(其形成那個特定DI麗的遠存儲器)的存儲器側(cè)高速緩存的DRAM。MSC控制器124連同近和遠存儲器一起駐留在各DIMM 458上。在這個實施例中,DDR總線457的多個存儲器通道設(shè)置在CPU封裝外。這個實施例的DDR總線457通過DDR電連接來實現(xiàn)事務(wù)協(xié)議。
[0084]圖4G示出混合分離結(jié)構(gòu),由此MSC控制器124駐留在處理器310上,以及近存儲器和遠存儲器接口共享同一 DDR總線410。這個配置使用基于DRAM的DDR DIMM 411a作為充當(dāng)MSC的近存儲器,其中基于PCM的DMM 411b ( S卩,遠存儲器)使用DDR插槽和NVRAM (例如PCM存儲器裝置)駐留在DDR總線410的同一存儲器通道上。這個實施例的存儲器通道同時攜帶DDR和事務(wù)協(xié)議,以便分別對近存儲器和遠存儲器DIMM 411a、411b進行尋址。
[0085]圖4H示出統(tǒng)一架構(gòu),其中充當(dāng)存儲器側(cè)高速緩存的近存儲器461a駐留在小背板或轉(zhuǎn)接卡461上,采取基于DRAM的DDR DIMM的形式。存儲器側(cè)高速緩存(MSC)控制器124位于轉(zhuǎn)接卡的DDR和PCM控制器460中,其可具有連接到小背板/轉(zhuǎn)接卡461上的DDR DIMM通道470并且通過(一個或多個)高性能互連462、例如差分存儲器鏈路互連到CPU的兩個或更多存儲器通道。關(guān)聯(lián)遠存儲器461b位于同一小背板/轉(zhuǎn)接卡461上,并且由使用DDR信道470并且裝載有NVRAM (例如PCM裝置)的DIMM來形成。
[0086]圖41示出統(tǒng)一架構(gòu),其能夠用作對通過DDR總線471連接到其DDR存儲器子系統(tǒng)上的CPU封裝401的DDR存儲器子系統(tǒng)和DIMM 464的存儲器容量擴展。對于這個配置中的附加的基于NVM的容量,充當(dāng)MSC的近存儲器駐留在小背板或轉(zhuǎn)接卡463上,采取基于DRAM的DDR DIMM 463a的形式。MSC控制器124位于轉(zhuǎn)接卡的DDR和PCM控制器460中,其可具有連接到小背板/轉(zhuǎn)接卡上的DDR DIMM通道470并且通過(一個或多個)高性能互連462、例如差分存儲器鏈路互連到CPU的兩個或更多存儲器通道。關(guān)聯(lián)遠存儲器463b位于同一小背板/轉(zhuǎn)接卡463上,并且由使用DDR信道470并且裝載有NVRAM(例如PCM裝置)的DIMM 463b來形成。
[0087]圖4J是統(tǒng)一架構(gòu),其中充當(dāng)存儲器側(cè)高速緩存(MSC)的近存儲器駐留在每一個DMM 465上,采取DRAM的形式。DMM 465在將CPU封裝401與位于DMM上的MSC控制器124耦合的高性能互連/通道462、例如差分存儲器鏈路上。關(guān)聯(lián)遠存儲器位于相同DIMM465上,并且由NVRAM (例如PCM裝置)來形成。[0088]圖4K示出統(tǒng)一架構(gòu),其中充當(dāng)MSC的近存儲器駐留在每一 DMM 466上,采取DRAM的形式。DMM在將CPU封裝401與位于DMM上的MSC控制器124連接的(一個或多個)高性能互連470上。關(guān)聯(lián)遠存儲器位于相同DMM 466上,并且由NVRAM(例如PCM裝置)來形成。
[0089]圖4L示出分離架構(gòu),其使用DDR總線471上的基于DDR DRAM的DMM 464來形成必要的近存儲器(其充當(dāng)MSC)。處理器310包含集成存儲控制器331和存儲器側(cè)高速緩存控制器124。NVRAM、例如PCM存儲器形成遠存儲器(其駐留在卡或轉(zhuǎn)接卡476上),其使用高性能互連468 (其使用事務(wù)協(xié)議向CPU封裝401進行傳遞)。包含遠存儲器的卡或轉(zhuǎn)接卡467包含單個緩沖器/控制器,其能夠控制多個基于PCM的存儲器或者在那個轉(zhuǎn)接卡上連接的多個基于PCM的DMM。
[0090]圖4M示出統(tǒng)一架構(gòu),其可使用卡或轉(zhuǎn)接卡469上的DRAM來形成必要的近存儲器(其充當(dāng)MSC)。NVRAM、例如PCM存儲器裝置形成遠存儲器,其也駐留在卡或轉(zhuǎn)接卡469 (其使用到CPU封裝401的高性能互連468)上。包含遠存儲器的卡或轉(zhuǎn)接卡469包含單個緩沖器/控制器,其能夠控制多個基于PCM的裝置或者在那個轉(zhuǎn)接卡469上的多個基于PCM的DIMM,并且還集成存儲器側(cè)高速緩存控制器124。
[0091]在上述實施例的一部分、例如圖4G所示的實施例中,DRAM DI麗411a和基于PCM的DIMM 411b駐留在同一存儲器通道上。因此,相同的地址/控制和數(shù)據(jù)線集合用來將CPU連接到DRAM和PCM存儲器。為了減少經(jīng)過CPU網(wǎng)格互連的數(shù)據(jù)業(yè)務(wù)量,在一個實施例中,與基于PCM的DI麗的公共存儲器通道上的DDR DI麗配置成充當(dāng)基于PCM的DI麗中存儲的數(shù)據(jù)的唯一 MSC。在這種配置中,基于PCM的DIMM中存儲的遠存儲器數(shù)據(jù)僅緩存在同一存儲器通道內(nèi)的DDR DIMM近存儲器中,由此將存儲器事務(wù)定位到那個特定存儲器通道。
[0092]另外,為了實現(xiàn)上述實施例,系統(tǒng)地址空間在邏輯上可在不同存儲器通道之間細分。例如,如果存在四個存儲器通道,則系統(tǒng)地址空間的%可分配給各存儲器通道。如果各存儲器通道提供有一個基于PCMS的DIMM和一個DDR DIMM JljDDR DIMM可配置成充當(dāng)系統(tǒng)地址空間的那個%部分的MSC。
[0093]系統(tǒng)存儲器和大容量存儲裝置的選擇可取決于其上采用本發(fā)明的實施例的電子平臺的類型。例如,在個人計算機、平板計算機、筆記本計算機、智能電話、移動電話、特征電話、個人數(shù)字助理(PDA)、便攜媒體播放器、便攜游戲裝置、游戲控制臺、數(shù)碼相機、開關(guān)、集線器、路由器、機頂盒、數(shù)字錄像機或者具有較小大容量存儲要求的其它裝置中,大容量存儲可單獨使用NVRAM大容量存儲152A或者使用NVRAM大容量存儲152A與閃速/磁/光大容量存儲152B相結(jié)合來實現(xiàn)。在具有較大容量存儲要求的其它電子平臺(例如大規(guī)模服務(wù)器)中,大容量存儲可使用磁存儲(例如硬盤驅(qū)動器)或者磁存儲、光存儲、全息存儲、大容量閃速存儲器和NVRAM大容量存儲152A的任何組合來實現(xiàn)。在這種情況下,負責(zé)存儲的系統(tǒng)硬件和/或軟件可實現(xiàn)各種智能永久存儲分配技術(shù),以按照有效或者有用的方式在FM151B/NVRAM存儲152A與閃速/磁/光大容量存儲152B之間分配永久程序代碼和數(shù)據(jù)塊。
[0094]例如,在一個實施例中,大功率服務(wù)器配置有近存儲器(例如DRAM)、PCMS裝置和用于大量永久存儲的磁大容量存儲裝置。在一個實施例中,筆記本計算機配置有近存儲器和PCMS裝置,其執(zhí)行遠存儲器和大容量存儲裝置的作用(即,其在邏輯上分區(qū)以執(zhí)行如圖3所示的這些作用)。家用或辦公臺式計算機的一個實施例與筆記本計算機相似地配置,但是還可包括一個或多個磁存儲裝置,以提供大量永久存儲能力。
[0095]平板計算機或蜂窩電話裝置的一個實施例配置有PCMS存儲器,但是潛在地沒有近存儲器并且沒有附加大容量存儲(為了成本/電力節(jié)省)。但是,平板/電話可配置有可拆卸大容量裝置,例如閃存或PCMS存儲棒。
[0096]各種其它類型的裝置可如上所述來配置。例如,便攜媒體播放器和/或個人數(shù)字助理(PDA)可按照與上述平板/電話相似的方式來配置,游戲控制臺可按照與臺式計算機或膝上型計算機相似的方式來配置??上嗨频嘏渲玫钠渌b置包括數(shù)碼相機、路由器、機頂盒、數(shù)字錄像機、電視機和汽車。
[0097]MSC架構(gòu)的實施例
在本發(fā)明的一個實施例中,系統(tǒng)存儲器中的DRAM的主體采用PCM來替代。如先前所述,PCM以相對于DRAM明顯要低的成本提供存儲器容量的顯著改進,并且是非易失性的。但是,某些PCM特性、例如不對稱讀-寫性能、寫循環(huán)耐久性極限以及其非易失性性質(zhì)使它對于在沒有引起主要軟件改變的情況下直接替代DRAM是棘手的。以下所述的本發(fā)明的實施例經(jīng)過軟件增強來提供集成PCM、同時還實現(xiàn)更新用途的軟件透明方式。這些實施例促進存儲器子系統(tǒng)架構(gòu)的成功轉(zhuǎn)變,并且提供使用單個PCM池來合并存儲器和存儲的方式,因而減輕對平臺中的獨立非易失性存儲層的需要。
[0098]圖5A所示的具體實施例包括:一個或多個處理器核501,每個具有內(nèi)部存儲器管理單元(MMU) 502,用于生成存儲器請求;以及一個或多個內(nèi)部CPU高速緩存503,用于按照所指定高速緩存管理策略來存儲程序代碼和數(shù)據(jù)線。如先前所述,高速緩存管理策略可包括排他的高速緩存管理策略(其中存在于分級結(jié)構(gòu)的一個特定高速緩存級中的任何線在任何其它高速緩存級中不存在)或者包含的高速緩存管理策略(其中復(fù)制高速緩存線存儲在高速緩存分級結(jié)構(gòu)的不同級)??捎糜诠芾韮?nèi)部高速緩存503的特定高速緩存管理策略是本領(lǐng)域的技術(shù)人員完全了解的,并且因此在這里將不作詳細描述。本發(fā)明的基本原理并不局限于任何特定高速緩存管理策略。
[0099]又在圖5A中所示的是歸屬代理505,其通過生成存儲器請求的存儲器通道地址(MCA)來提供對MSC 510的存取。歸屬代理505負責(zé)管理所指定存儲器地址空間,并且解析定向到那個存儲器空間的存儲器存取沖突。因此,如果任何核需要存取給定地址空間,則它將向那個歸屬代碼505發(fā)送請求,歸屬代理505則將向那個特定MMU 502發(fā)送請求。在一個實施例中,每個MMU 502分配一個歸屬代理505 ;但是,在一些實施例中,單個歸屬代理505可服務(wù)于一個以上存儲器管理單元502。
[0100]如圖5A所示,MSC 510配置在基于PCM的遠存儲器519前面。MSC 510管理對近存儲器518的存取,并且在適當(dāng)時(例如在無法從近存儲器518來服務(wù)請求時)向遠存儲控制器521轉(zhuǎn)發(fā)存儲器存取請求(例如讀和寫)。MSC 510包括高速緩存控制單元512,其響應(yīng)標簽高速緩存511而進行操作,標簽高速緩存511存儲識別近存儲器518中包含的高速緩存線的標簽。在操作中,當(dāng)高速緩存控制單元512確定存儲器存取請求能夠從近存儲器518來服務(wù)(例如響應(yīng)高速緩存命中)時,它生成近存儲器地址(NMA),以識別近存儲器518中存儲的數(shù)據(jù)。近存儲器控制單元515解釋NMA,并且響應(yīng)地生成電信號以存取近存儲器518。如先前所述,在一個實施例中,近存儲器是動態(tài)隨機存取存儲器(DRAM)。在這種情況下,電信號可包括行地址選通(RAS)和列地址選通(CAS)信號。但是應(yīng)當(dāng)注意,本發(fā)明的基本原理并不局限于DRAM用于近存儲器。
[0101 ] 確保軟件透明存儲器應(yīng)用的另一個組件是優(yōu)化PCM遠存儲控制器521,其管理PCM遠存儲器530特性,同時仍然提供所需的性能。在一個實施例中,PCM控制器521包括地址間接尋址表520,其將高速緩存控制單元515所生成的MCA轉(zhuǎn)換成用來對PCM遠存儲器530直接尋址的PDA。這些轉(zhuǎn)換可在通常為5 KB的“塊”粒度發(fā)生。要求轉(zhuǎn)換是因為在一個實施例中,遠存儲控制器521在整個PCM裝置地址空間連續(xù)移動PCM塊,以便確保沒有因?qū)θ魏翁囟▔K的高頻率寫入引起的耗損熱點。如先前所述,這種技術(shù)在本文中有時稱作“耗損均勻化”。
[0102]因此,MSC 510由高速緩存控制單元512來管理,高速緩存控制單元512允許MSC510吸收、聚合和過濾對PCM遠存儲器530的事務(wù)(例如讀和寫)。高速緩存控制單元512管理近存儲器518與PCM遠存儲器530之間的所有數(shù)據(jù)移動和一致性要求。另外,在一個實施例中,MSC高速緩存控制器512與(一個或多個)CPU進行接口,并且提供傳統(tǒng)基于DRAM的存儲器子系統(tǒng)中使用的標準同步加載/存儲接口。
[0103]現(xiàn)在將在圖5A所示架構(gòu)的上下文中描述示范讀和寫操作。在一個實施例中,讀操作將首先到達MSC控制器512,其將執(zhí)行查找,以確定所請求數(shù)據(jù)是否存在(例如利用標簽高速緩存511)。如果存在的話,則它將數(shù)據(jù)返回到請求CPU、核501或I/O裝置(未示出)。如果數(shù)據(jù)不存在的話,則MSC控制器512將向PCM遠存儲控制器521發(fā)送該請求連同系統(tǒng)存儲器地址(本文中又稱作存儲器通道地址或MCA)。PCM控制器521將使用地址間接尋址表520來將地址轉(zhuǎn)換成PDA,并且將讀操作定向到PCM的這個區(qū)域。在接收來自PCM遠存儲器530的所請求數(shù)據(jù)時,PCM控制器521將所請求數(shù)據(jù)返回到MSC控制器512,其將數(shù)據(jù)存儲在MSC近存儲器518中,并且還將數(shù)據(jù)發(fā)送給請求CPU核501或I/O裝置。對這個數(shù)據(jù)的后續(xù)請求可直接從MSC近存儲器518來服務(wù),直到它由另外某些PCM數(shù)據(jù)來替代。
[0104]在一個實施例中,存儲器寫操作還首先轉(zhuǎn)到MSC控制器512,其將它寫入MSC近存儲器518。在這個實施例中,當(dāng)接收寫操作時,數(shù)據(jù)不可直接發(fā)送給PCM遠存儲器530。例如,僅當(dāng)其中存儲數(shù)據(jù)的MSC近存儲器518中的位置必須再用于存儲不同系統(tǒng)存儲器地址的數(shù)據(jù)時,數(shù)據(jù)才可發(fā)送給PCM遠存儲器530。當(dāng)這種情況發(fā)生時,MSC控制器512注意到數(shù)據(jù)在PCM遠存儲器530中不是最近的,以及因而將從近存儲器518中對它進行檢索,并且將它發(fā)送給PCM控制器521。PCM控制器521查找系統(tǒng)存儲器地址的PDA,并且然后將數(shù)據(jù)寫到PCM遠存儲器530。
[0105]在一個實施例中,MSC近存儲器518的大小將通過工作負荷存儲器要求以及近和遠存儲器性能來規(guī)定。對于基于DRAM的MSC,大小可設(shè)置成工作負荷存儲器占用區(qū)(footprint)的大小或者PCM遠存儲器530大小的1/10。與當(dāng)前處理器/系統(tǒng)架構(gòu)中存在的常規(guī)高速緩存相比,這種MSC非常大。作為舉例而不是限制,對于128 GB的PCM遠存儲器大小,MSC近存儲器的大小能夠大至16 GB。
[0106]圖5B示出與MSC 510的一個實施例關(guān)聯(lián)的附加細節(jié)。這個實施例包括一組邏輯單元,其負責(zé)命令和尋址,其中包括:命令緩沖器跟蹤單元542,用于緩沖命令/地址;以及高速緩存取模式校驗單元544,其響應(yīng)來自MSC范圍寄存器(RR)單元545的控制信號而選擇MSC操作模式。下面描述若干示范操作模式。簡言之,這些可包括近存儲器用于傳統(tǒng)緩存作用中的模式以及近存儲器518形成系統(tǒng)存儲器的一部分的模式。標簽校驗/命令調(diào)度器550使用來自標簽高速緩存511的標簽,來確定特定高速緩存線是否存儲在近存儲器518中,并且近存儲控制器515生成通道地址信號(例如CAS和RAS信號)。
[0107]這個實施例還包括負責(zé)數(shù)據(jù)路由選擇和處理的一組邏輯單元,其中包括一組數(shù)據(jù)緩沖器546,以用于存儲從近存儲器所取的或者存儲到近存儲器的數(shù)據(jù)。在一個實施例中,還包括預(yù)取數(shù)據(jù)高速緩存547,以用于存儲從近存儲器和/或遠存儲器所預(yù)取的數(shù)據(jù)。但是,預(yù)取數(shù)據(jù)高速緩存547是可選的,并且不是遵照本發(fā)明的基本原理必要的。
[0108]糾錯碼(ECC)生成器/校驗器單元552生成和校驗ECC,以確保寫到近存儲器或者從其中讀取的數(shù)據(jù)沒有差錯。如以下所述,在本發(fā)明的一個實施例中,ECC生成器/校驗器單元552修改成存儲高速緩存標簽。特定ECC是本領(lǐng)域的技術(shù)人員完全了解的,并且因此在這里不作詳細描述。通道控制器553將近存儲器518的數(shù)據(jù)總線耦合到MSC 510,并且生成存取近存儲器518的必要電信令(例如DRAM近存儲器的RAS和CAS信令)。
[0109]又在圖5B中示出的是用于將MSC 510耦合到遠存儲器的遠存儲器控制接口 548。具體來說,遠存儲器控制接口 548生成對遠存儲器進行尋址所需的MCA,并且在數(shù)據(jù)緩沖器546與遠存儲器之間傳遞數(shù)據(jù)。
[0110]如所述,與當(dāng)前處理器/系統(tǒng)架構(gòu)中存在的常規(guī)高速緩存相比,一個實施例中采用的近存儲器518非常大。因此,保持到近存儲器地址的系統(tǒng)存儲器地址轉(zhuǎn)換的標簽高速緩存511也可能非常大。存儲和查找MSC標簽的成本能夠是對構(gòu)建大高速緩存的明顯阻礙。因此,在本發(fā)明的一個實施例中,這個問題使用新方案來解決,新方案將高速緩存標簽存儲于MSC中分配的存儲中供ECC保護,由此基本上消除標簽的存儲成本。
[0111]這個實施例在圖5C中一般示出,圖5示出集成標簽高速緩存和ECC單元554,其用于存儲/管理高速緩存標簽、存儲ECC數(shù)據(jù)并且執(zhí)行ECC操作。如所示,當(dāng)執(zhí)行標簽校驗操作(例如以確定特定的數(shù)據(jù)塊是否存儲在近存儲器高速緩存518中)時,所存儲標簽根據(jù)請求而提供給標簽校驗/命令調(diào)度器550。
[0112]圖示出一組示范數(shù)據(jù)524的組織以及對應(yīng)ECC 523和標簽522。如所示,標簽522與ECC 523并存于標簽高速緩存/ECC單元544的存儲器(例如在一個實施例中的DDRDRAM)中。在這個示例中,總共64字節(jié)的若干數(shù)據(jù)塊已經(jīng)讀入標簽高速緩存/ECC單元554中。ECC校驗/生成器單元554a使用數(shù)據(jù)525來生成ECC,并且將所生成ECC與關(guān)聯(lián)數(shù)據(jù)的現(xiàn)有ECC 523進行比較。在這個示例中,對64字節(jié)的數(shù)據(jù)525生成4字節(jié)ECC。但是,本發(fā)明的基本原理并不局限于ECC的任何特定類型或大小。另外應(yīng)當(dāng)注意,術(shù)語“數(shù)據(jù)”在本文中廣義地用來表示可執(zhí)行程序代碼和數(shù)據(jù),其均可存儲在圖所示的數(shù)據(jù)存儲525中。
[0113]在一個實施例中,3字節(jié)(24位)標簽522與圖所示的位指配配合使用。具體來說,位00至16是地址位,其提供高速緩存線的高地址位。對于具有56位的系統(tǒng)地址(例如SPA[55:00]),位00至16映射到系統(tǒng)地址的位55-29,從而允許512 MB的最小高速緩存大小。返回到3字節(jié)標簽,保留位17-19 ;位20-21是目錄位,其提供關(guān)于高速緩存線的遠程CPU緩存的信息(例如提供關(guān)于其上緩存該線的其它CPU的指示);位21-22指示高速緩存線的當(dāng)前狀態(tài)(例如,00=清潔;01=臟;10和11=未使用);以及位23指示高速緩存是否有效(例如,1=有效;0=無效)。
[0114]利用如上所述的直接映射高速緩存架構(gòu)(其允許近存儲器地址從系統(tǒng)存儲器地址直接被提取)降低或消除在MSC 510能夠讀取之前查找標簽存儲的等待時間成本,由此顯著改進性能。此外,也消除校驗高速緩存標簽以判定MSC 510是否具有所需數(shù)據(jù)的時間,因為它與從MSC讀取的數(shù)據(jù)的ECC校驗并行地進行。
[0115]在某些條件下,存儲具有數(shù)據(jù)的標簽可對寫入造成問題。寫入首先讀取數(shù)據(jù),以便確保它沒有改寫另外某些地址的數(shù)據(jù)。每一個寫入之前的這種讀取可能變?yōu)楦哔M用的。本發(fā)明的一個實施例采用臟線標簽高速緩存,其保持最近存取的近存儲器地址(NMA)的標簽。由于許多寫入定向到最近存取的地址,所以適當(dāng)?shù)男撕灨咚倬彺婺軌颢@得有效命中率,以在寫入之前過濾大多數(shù)讀取。
[0116]與包括PCM遠存儲控制器521和一組PCM遠存儲器模塊530a-1的PCM DIMM 519的一個實施例關(guān)聯(lián)的附加細節(jié)在圖5E中示出。在一個實施例中,單個PCM遠存儲器池530a-1在系統(tǒng)存儲器與存儲用途之間共享。在這個實施例中,整個PCM池530a-1可細分為4 KB大小的“塊”。PCM描述符表(PDT) 565將每個PCM塊的使用識別為存儲器或存儲。例如,TOT的每行可表示具有識別每個塊的使用的特定列的特定塊(例如,1=存儲器;0=存儲)。在這個實施例中,初始系統(tǒng)配置能夠?qū)CM 530a-1中的PCM塊在存儲與存儲器使用之間分區(qū)(即,通過對TOT 565編程)。在一個實施例中,同一個表用來排除不良塊,并且為耗損均勻化操作提供共享塊。另外,PDT 565還可包括將每個PCMS塊映射到由軟件所使用的“邏輯”塊地址。在系統(tǒng)存儲器的情況下,邏輯塊地址與MCA或SPA是相同的。每當(dāng)因耗損均勻化而移動PCMS塊時,需要這種關(guān)聯(lián)以更新地址間接尋址表(AIT) 563。當(dāng)這種情況發(fā)生時,由軟件所使用的邏輯塊地址必須映射到不同的PCMS裝置地址(PDA)。在一個實施例中,這種映射存儲在AIT中,并且對每一耗損均勻化移動來更新。
[0117]如所示,PCM控制器521包括系統(tǒng)物理地址(SPA)-至-PCM映射器556,其響應(yīng)耗損管理單元555和地址間接尋址單元563而進行操作,以將SPA映射到PCM塊。在一個實施例中,耗損管理邏輯555實現(xiàn)耗損均勻化算法,以考慮PCM 530a-530i的存儲單元在過多寫入和/或擦除存取之后開始耗損的事實。耗損均勻化通過例如迫使具有低循環(huán)計數(shù)的數(shù)據(jù)塊移動,并且由此允許高循環(huán)數(shù)據(jù)塊被放置在存儲了低循環(huán)數(shù)據(jù)塊的存儲單元中,來將寫入和擦除跨PCM裝置的存儲器單元散布。通常,塊的大多數(shù)沒有循環(huán),但是高循環(huán)計數(shù)塊最可能出故障,并且耗損均勻化將高循環(huán)計數(shù)塊的地址與低循環(huán)計數(shù)塊交換。耗損管理邏輯555可使用一個或多個計數(shù)器和寄存器來跟蹤循環(huán)計數(shù)(例如,每次檢測到循環(huán)時可使計數(shù)器遞增一,并且結(jié)果可存儲在寄存器集合中)。
[0118]在一個實施例中,地址間接尋址邏輯563包括地址間接尋址表(AIT),其包含應(yīng)當(dāng)將寫操作定向到其中的PCM塊的指示。AIT可用來在存儲器與存儲使用之間自動移動塊。從軟件角度來看,對所有塊的存取使用傳統(tǒng)存儲器加載/存儲語義(即,耗損均勻化和地址間接尋址操作對軟件透明地發(fā)生)。在一個實施例中,AIT用來將軟件所生成的SPA轉(zhuǎn)換成PDA。要求這種轉(zhuǎn)換是因為均勻耗損PCMS裝置的需要,數(shù)據(jù)將需要繞PDA空間移動以避免任何熱點。當(dāng)這種移動發(fā)生時,SPA與PDA之間的關(guān)系將發(fā)生變化,以及AIT將被更新以反映這種新轉(zhuǎn)換。
[0119]接著SPA到PCM映射,調(diào)度器單元557將基本PCM操作(例如讀取和/或?qū)懭?調(diào)度到PCM裝置530a-1,并且PCM協(xié)議引擎558生成執(zhí)行讀/寫操作所需的電信令。ECC單元562執(zhí)行檢錯和糾錯操作,以及數(shù)據(jù)緩沖器561暫時緩沖從PCM裝置530a_I所讀取或者寫到PCM裝置530a-1的數(shù)據(jù)。永久寫緩沖器559用來保存被保證回寫到PCMS的數(shù)據(jù),甚至在非預(yù)計電力故障的情況下(例如,它使用非易失性存儲來實現(xiàn))。包括刷新支持邏輯560,以便周期地和/或按照所指定數(shù)據(jù)刷新算法(例如在永久寫緩沖器達到所指定閾值之后)將永久寫緩沖器刷新到PCMS。
[0120]在一個實施例中,MSC 510自動將存儲存取直接路由到PCM遠存儲控制器521以及將存儲器存取路由到MSC高速緩存控制單元512。到達PCM遠存儲控制器521的存儲存取被看作是常規(guī)讀取和寫入,以及如常應(yīng)用本文所述的地址間接尋址和耗損均勻化機制。在本發(fā)明的一個實施例中采用附加優(yōu)化,其能夠當(dāng)數(shù)據(jù)需要在存儲與存儲器之間移動時實現(xiàn)。由于使用公共PCM池530a-1,所以數(shù)據(jù)移動能夠通過只改變轉(zhuǎn)換表(例如AIT)中的指針來消除或推遲。例如,當(dāng)數(shù)據(jù)從存儲傳遞到存儲器時,識別特定物理PCM存儲位置中的數(shù)據(jù)的指針可更新成指示同一物理PCM存儲位置這時是系統(tǒng)存儲器中的存儲器位置。在一個實施例中,這由硬件按照軟件透明的方式進行,以提供性能和功率有益效果。
[0121]除了軟件透明操作模式之外,MSC控制器512的一個實施例還提供如MSC范圍寄存器(RR) 545所指示的備選操作模式。這些操作模式可包括但并不限于以下方面:
1)存儲類應(yīng)用的PCM存儲器的直接存取。這種使用還將要求MSC控制器512確保提交給PCM 519的寫入實際上交付到永久狀態(tài)。
[0122]2)近存儲器518的混合使用,向軟件展示其用于直接使用的部分,同時將其余部分保持為MSC。在向軟件展示近存儲器518的一部分供直接使用時,那個部分在系統(tǒng)地址空間中是直接可尋址的。這允許某些應(yīng)用在高性能小區(qū)域(近存儲器518)與較低性能塊區(qū)(遠存儲器530)之間顯式劃分其存儲器分配。相比之下,作為MSC中的高速緩存所分配的部分沒有形成系統(tǒng)地址空間的部分(而是充當(dāng)遠存儲器530的高速緩存,如本文所述)。
[0123]如先前所述,MSC架構(gòu)定義成使得若干不同系統(tǒng)分區(qū)方式是可能的。這些方式分成兩大類:
(I)分離架構(gòu):在這個方案中,MSC控制器512位于CPU中,并且截取所有系統(tǒng)存儲器請求。存在來自退出CPU的MSC的兩個單獨接口以連接到近存儲器(例如DRAM)和遠存儲器(例如PCM)。各接口設(shè)計用于特定類型的存儲器,并且各存儲器能夠在性能和容量方面獨立縮放。
[0124](2)統(tǒng)一架構(gòu):在這個方案中,單個存儲器接口退出CPU,并且將所有存儲器請求發(fā)送給這個接口。MSC控制器512連同近存儲器(例如DRAM)和遠存儲器(例如PCM)子系統(tǒng)在CPU外部合并在這個單接口上。在一個實施例中,這個存儲器接口設(shè)計成滿足CPU的存儲器性能要求,并且支持事務(wù)無序協(xié)議。近和遠存儲器要求在這些接口的每個上按照“統(tǒng)一”方式來滿足。
[0125]在上述存儲桶(bucket)的范圍之內(nèi),若干不同劃分選項是可行的,下面描述其中一部分。
[0126](I)分離示例:
近存儲器:DDR5 DIMM
近存儲器接口:一個或多個DDR5通道
遠存儲器:PCI快速(PCIe)卡上的PCM控制器/裝置
遠存儲器接口:xl6 PCIe, Gen 3
2)統(tǒng)一示例: CPU存儲器接口:一個或多個KTMI (或QPMI)通道 轉(zhuǎn)接卡上具有MSC/PCM控制器的近/遠存儲器 MSC/PCM控制器外的近存儲器接口:DDR5接口 MSC/PCM控制器外的遠存儲器接口:PCM裝置接口 具有不同近存儲器操作模式的實施例
如上所述,兩級存儲器分級結(jié)構(gòu)可用于引入快速非易失性存儲器、例如作為系統(tǒng)存儲器的PCM,同時使用非常大的基于DRAM的近存儲器。近存儲器可用作硬件管理高速緩存。但是,一些應(yīng)用不是硬件高速緩存友好的,并且因此會獲益于使用這種存儲器的備選方式。因為在任何給定時間可存在運行于服務(wù)器上的若干不同應(yīng)用,所以本發(fā)明的一個實施例允許同時地實現(xiàn)多種使用模式。另外,一個實施例提供控制為這些使用模式的每個分配近存儲器的能力。
[0127]在一個實施例中,MSC控制器512提供使用近存儲器的下列模式。如先前所述,在一個實施例中,當(dāng)前操作模式可通過MSC范圍寄存器(RR) 545中存儲的操作碼來指定。
[0128](I)回寫緩存模式:在這種模式中,近存儲器518的全部或部分用作PCM存儲器530的高速緩存。在處于回寫模式時,每一個寫操作最初定向到近存儲器518 (假定對其定向?qū)懭氲母咚倬彺婢€存在于高速緩存中)。僅當(dāng)近存儲器518中的高速緩存線將由另一個高速緩存線來替代時,才執(zhí)行對應(yīng)寫操作以更新PCM遠存儲器530 (與以下所述的直寫模式相反,其中每個寫操作立即傳播到遠存儲器530)。
[0129]在一個實施例中,讀操作將首先到達MSC高速緩存控制器512,其將執(zhí)行查找,以確定所請求數(shù)據(jù)是否存在于PCM遠存儲器518中(例如利用標簽高速緩存511)。如果存在的話,則它將數(shù)據(jù)返回到請求CPU核、501或I/O裝置(圖5A中未示出)。如果數(shù)據(jù)不存在的話,則MSC高速緩存控制器512將向PCM遠存儲控制器521發(fā)送請求連同系統(tǒng)存儲器地址。PCM遠存儲控制器521將系統(tǒng)存儲器地址轉(zhuǎn)換成PCM物理裝置地址(PDA),并且將讀操作定向到遠存儲器530的這個區(qū)域。如先前所述,這種轉(zhuǎn)換可利用地址間接尋址表(AIT) 563,PCM控制器521使用其在系統(tǒng)存儲器地址與PCM PDA之間進行轉(zhuǎn)換。在一個實施例中,作為實現(xiàn)成分配存儲器存取操作并且由此降低對PCM FM 530的耗損的耗損均勻化算法的一部分,來更新AIT。
[0130]在接收來自PCM FM 530的所請求數(shù)據(jù)時,PCM FM控制器521將所請求數(shù)據(jù)返回到MSC控制器512,其將數(shù)據(jù)存儲在MSC近存儲器518中,并且還將數(shù)據(jù)發(fā)送給請求處理器核501或I/O裝置(圖5A中未示出)。對這個數(shù)據(jù)的后續(xù)請求可直接從MSC近存儲器518來服務(wù),直到它由另外某個PCM FM數(shù)據(jù)來替代。
[0131]在一個實施例中,存儲器寫操作也首先轉(zhuǎn)到MSC控制器512,其將它寫入充當(dāng)FM高速緩存的MSC近存儲器518中。在這個實施例中,當(dāng)接收寫操作時,數(shù)據(jù)不可直接發(fā)送給PCM FM 530。例如,僅當(dāng)其中存儲數(shù)據(jù)、充當(dāng)FM高速緩存的MSC近存儲器518中的位置必須再用于存儲不同系統(tǒng)存儲器地址的數(shù)據(jù)時,數(shù)據(jù)才可發(fā)送給PCM FM 530。當(dāng)這種情況發(fā)生時,MSC控制器512注意到數(shù)據(jù)在PCM FM 530中不是最近的,以及因此將從充當(dāng)FM高速緩存的近存儲器518中對它進行檢索,并且將它發(fā)送給PCM FM控制器521。PCM控制器521查找系統(tǒng)存儲器地址的PDA,并且然后將數(shù)據(jù)寫到PCM FM 530。
[0132](2)近存儲器旁路模式:在這種模式中,所有讀和寫繞過充當(dāng)FM高速緩存的匪518,并且直接轉(zhuǎn)到PCM遠存儲器530。例如當(dāng)應(yīng)用不是高速緩存友好的或者要求數(shù)據(jù)以高速緩存線的粒度提交為持久化時,可使用這種模式。在一個實施例中,由處理器高速緩存503和充當(dāng)FM高速緩存的NM 518所執(zhí)行的緩存相互獨立地進行操作。因此,數(shù)據(jù)可緩存在充當(dāng)FM高速緩存的NM 518,其沒有緩存在處理器高速緩存503中(并且其在一些情況下可能不準許被緩存在處理器高速緩存503中),反過來也是一樣。因此,可指定為在處理器高速緩存503中“不可緩存的”某些數(shù)據(jù)可緩存在充當(dāng)FM高速緩存的匪518中。
[0133] (3)近存儲器讀高速緩存寫旁路模式:這是上述模式的變化,其中允許來自PCM519的永久數(shù)據(jù)的讀緩存(即,永久數(shù)據(jù)緩存在用于只讀操作的MSC 510中)。當(dāng)永久數(shù)據(jù)的大多數(shù)是“只讀”并且應(yīng)用使用是高速緩存友好的時,這是有用的。
[0134](5)近存儲器讀高速緩存直寫模式:這是前一種模式的變化,其中除了讀緩存之外還緩存寫命中。對MSC近存儲器518的每一個寫入引起對PCM遠存儲器530的寫入。因此,由于高速緩存的直寫性質(zhì),高速緩存線持久化仍然得到保證。
[0135](5)近存儲器直接存取模式:在這種模式中,近存儲器的全部或部分是軟件直接可見的,并且形成系統(tǒng)存儲器地址空間的部分。這種存儲器可完全在軟件控制之下。從PCM存儲器519到近存儲器的這個區(qū)域的任何數(shù)據(jù)移動要求顯式軟件副本。這種方案可創(chuàng)建軟件的非均勻存儲器地址(NUMA)存儲器域,其中它相對于PCM遠存儲器530從近存儲器518獲得高許多的性能。這種使用可用于某些高性能計算(HPC)和圖形應(yīng)用(其要求對某些數(shù)據(jù)結(jié)構(gòu)的極快速存取。這種近存儲器直接存取模式相當(dāng)于“牽制”近存儲器中的某些高速緩存線。這種牽制可在較大的多路組關(guān)聯(lián)高速緩存中有效地進行。
[0136]下表A概括上述操作模式的每個。
[0137]表A
模式讀寫
m寫高速鍰存對Si逐出的表命+回寫對蛀逐出的表命中寫進
進行分?+己行分配
高速緩存旁路旁路到遠存鍺器旁路到逸存11器
讀高速緩存:寫旁路對未奮中進行分配旁路到遠存?器使緩存線
失效
讀高速緩.Φ+直寫對未命+進行分配.漢在侖中時更新
Ji寫到遠存德s
?接存取從近存儲Sit接讀取直接寫到近存儲器
沒有遠存儲器存取沒有遠存儲器存取 用來實現(xiàn)上述操作模式的處理器和芯片組組件包括以下方面: (I)存儲器側(cè)高速緩存控制器512,其管理兩層存儲器(2LM)分級結(jié)構(gòu)中的近存儲器。
[0138](2)存儲器側(cè)高速緩存510中的一組范圍寄存器545 (參見圖5B),其確定上述操作模式的每個的系統(tǒng)地址范圍。
[0139](3)確認從PCM存儲器子系統(tǒng)519到MSC控制器515的寫完成的機制。
[0140](5)使近存儲器518中的線失效的機制。
[0141](5)將臟線逐出到PCM并且使近存儲器地址空間的所指定區(qū)域失效的刷新引擎。
[0142]在一個實施例中,使用模式的每個的存儲器范圍在系統(tǒng)地址空間中是毗連的。但是,多個分離區(qū)域可使用同一模式。在一個實施例中,MSC RR 545集合中的各模式范圍寄存器提供下列信息:
(1)操作模式(例如回寫、近存儲器旁路模式等);
(2)系統(tǒng)地址空間中的范圍基址(rangebase)(例如以2 MB粒度或更大);以及
(3)識別區(qū)域的大小的范圍掩碼字段。
[0143]在一個實施例中,所支持模式的數(shù)量是實現(xiàn)特定的,但是假定只有一個毗連系統(tǒng)地址范圍可用于各操作模式。如果指定近存儲器直接存取范圍寄存器,則假定這將映射到毗連區(qū)域,開始于近存儲器地址空間的底部。這種毗連區(qū)域必須小于近存儲器的大小。另夕卜,如果使用緩存模式的任一個,則直接存取區(qū)域大小必須小于近存儲器大小,以允許所需性能的充分高速緩存大小。各種模式的近存儲器的這種分配可由用戶來配置。
[0144]總之,本發(fā)明的一個實施例按照下列操作集合來實現(xiàn):
(I)當(dāng)任何讀或?qū)懘嫒〉竭_存儲器側(cè)高速緩存控制器512時,它檢查范圍寄存器545 (圖5B),以確定當(dāng)前操作模式。
[0145](2)對于任何讀高速緩存/寫旁路存取,MSC控制器512檢查當(dāng)前是否緩存了地址。如果是的話,則它必須在向源回送寫完成之前使該線失效。
[0146](3)對于任何寫旁路直接PCM操作,MSC控制器512等待從PCM控制器521返回的完成,以確保將寫入提交到全局可見緩沖器。
[0147](4)對近存儲器中的直接存取模式空間的任何讀或?qū)懚ㄏ虻浇鎯ζ鞯倪m當(dāng)區(qū)域。沒有事務(wù)發(fā)送給PCM存儲器。
[0148](5)范圍寄存器配置中增加或減小任何現(xiàn)有區(qū)域或者添加新區(qū)域的任何變化將要求將適當(dāng)緩存區(qū)域刷新到PCM。例如,如果軟件想要通過減小回寫高速緩存區(qū)域來增加直接存取模式區(qū)域的大小,則它可通過首先逐出近存儲器區(qū)域的適當(dāng)部分并且使其失效,然后改變近存儲器直接存取模式范圍寄存器,來進行這種操作。MSC控制器510則將知道對較小近存儲器地址空間進行將來的緩存。
[0149]圖6A中示出本發(fā)明的一個具體實施例,其中系統(tǒng)物理地址(SPA)空間在多個MSC之間劃分。在所示實施例中,MSC高速緩存654和控制器656與SPA區(qū)域667a關(guān)聯(lián)、MSC高速緩存655和控制器657與SPA區(qū)域667b關(guān)聯(lián);MSC高速緩存661和控制器663與SPA區(qū)域667c關(guān)聯(lián);以及MSC高速緩存660和控制器662與SPA區(qū)域667d關(guān)聯(lián)。示出兩個CPU、即670和671,各分別具有四個核650和651以及歸屬代理652和653。兩個CPU 670和671分別經(jīng)由存儲器接口 659和665耦合到公共遠存儲控制器666。
[0150]因此,圖6A中,整個SPA存儲器空間細分為區(qū)域,其中各區(qū)域與特定MSC和控制器關(guān)聯(lián)。在這個實施例中,給定MSC可具有非毗連SPA空間分配,但是沒有兩個MSC將具有重疊SPA空間。此外,MSC與非重疊SPA空間關(guān)聯(lián),并且不要求MSC間相干性技術(shù)。
[0151]可在圖6A所示的架構(gòu)上采用上述近存儲器模式的任一種。例如,每個MSC控制器656-657、662-663可配置成工作在回寫緩存模式、近存儲器旁路模式、近存儲器讀高速緩存寫旁路模式、近存儲器讀高速緩存直寫模式或者近存儲器直接存取模式。如先前所述,特定模式在范圍寄存器(RR) 655中為每個MSC 610來指定。
[0152]在一個實施例中,不同MSC可同時地實現(xiàn)不同操作模式。例如,MSC控制器656的范圍寄存器可指定近存儲器直接存取模式,MSC控制器657的范圍寄存器可指定回寫高速緩存模式,MSC控制器662的范圍寄存器可指定讀高速緩存/寫旁路模式,以及MSC控制器663可指定讀高速緩存/直寫模式。另外,在一些實施例中,單獨MSC可同時地實現(xiàn)不同操作模式。例如,MSC控制器656可配置成對某些系統(tǒng)地址范圍實現(xiàn)近存儲器直接存取模式,以及對其它系統(tǒng)地址范圍實現(xiàn)近存儲器旁路模式。
[0153]上述組合當(dāng)然只是說明可對MSC控制器單獨編程的方式。本發(fā)明的基本原理并不局限于這些或任何其它組合。
[0154]如針對上述實施例的一部分(例如針對圖4G所述)所述,MSC及其MSC控制器配置成在與負責(zé)那個特定SPA范圍的PCM DIMM相同的存儲器通道(例如相同的物理DDR總線)上進行操作。因此,在這個實施例中,在所指派SPA范圍之內(nèi)發(fā)生的存儲器事務(wù)定位在同一存儲器通道中,由此降低經(jīng)過CPU網(wǎng)格互連的數(shù)據(jù)業(yè)務(wù)。
[0155]圖6B提供按照本發(fā)明的實施例、可如何配置系統(tǒng)存儲器地址映射620、近存儲器地址映射621和PCM地址映射622的圖形表示。如先前所述,MSC控制器606工作在由范圍寄存器(RR) 605所識別的模式。系統(tǒng)存儲器映射620具有為近存儲器直接存取模式所分配的第一區(qū)域602、為近存儲器旁路模式所分配的第二區(qū)域603以及為回寫高速緩存模式所分配的第三區(qū)域605。MSC控制器606如近存儲器地址映射621所示來提供對近存儲器的存取,近存儲器地址映射621包括對回寫高速緩存模式所分配的第一區(qū)域608以及對近存儲器直接存取模式所分配的第二區(qū)域609。如所示,近存儲器高速緩存旁路操作直接提供給按照PCM地址映射622進行操作的PCM控制器610,PCM地址映射622包括近存儲器旁路區(qū)域611 (對于近存儲器旁路模式)和回寫高速緩存區(qū)域612 (對于回寫高速緩存模式)。因此,系統(tǒng)存儲器映射620、近存儲器地址映射621和PCM地址映射622可基于由MSC控制器所實現(xiàn)的特定模式來細分。
[0156]圖6C和圖6D示出本發(fā)明的一個實施例中采用的尋址技術(shù)(其中一部分可能已經(jīng)一般地進行了描述)。具體來說,圖6C示出系統(tǒng)物理地址(SPA)675如何映射到近存儲器(NMA)或PCM裝置地址(PDA)。具體來說,SPA首先由處理器中的解碼邏輯676來解碼,以識別歸屬代理605 (例如負責(zé)解碼地址空間的歸屬代理)。與所選歸屬代理605關(guān)聯(lián)的解碼邏輯677還對SPA 675 (或者其部分)進行解碼,以生成識別對那個特定SPA空間所分配的適當(dāng)MSC高速緩存控制器612的存儲器通道地址(MCA)。所選高速緩存控制器612則或者在678將存儲器存取請求映射到近存儲器地址、之后是可選的接著在680的交織操作(下面描述),或者備選地在679執(zhí)行可選交織操作、之后接著由PCM遠存儲控制器映射681到PCM裝置地址PDA (例如使用如上所述的地址間接尋址和耗損管理)。
[0157]可選交織過程的一個實施例在圖6D中示出,圖6D示出如何能夠跨多個MSC和PCM地址空間使用交織來分解軟件頁。在圖6D所示的示例中,SPA空間中的兩個頁682-683由高速緩存線交織邏輯685來交織,以生成MCA空間中的兩組交織線685-686。例如,來自存儲器頁682-683的所有奇數(shù)線(例如線1、3、5等)可發(fā)送給第一 MCA空間685,以及來自存儲器頁682-683的所有偶數(shù)線(例如線2、5、6等)可發(fā)送給第二 MCA空間686。在一個實施例中,該頁是5千字節(jié)頁,盡管本發(fā)明的基本原理不限于任何頁的大小。按照地址間接尋址表(AIT)進行操作的PCM控制器687-688和耗損管理邏輯然后重新排列PCM裝置地址(PDA)存儲器空間中的高速緩存線(如上所述)。這種性質(zhì)的交織可用來將工作負荷分配于MSC 610和/或PCM裝置619 (例如,作為對非均勻存儲器地址(NUMA)的替代)。
[0158]用于多級存儲器分級結(jié)構(gòu)中的MSC的動態(tài)部分斷電的系統(tǒng)和方法的實施例 計算機系統(tǒng)的存儲器子系統(tǒng)消耗大量總系統(tǒng)功率,特別是在具有大存儲器容量的服務(wù)
器中。在多級存儲器子系統(tǒng)(例如具有如本文所述的MSC的2級子系統(tǒng))中,因為MSC確定大小為適應(yīng)所有工作負荷(其可運行于服務(wù)器)的最大工作負荷,所以許多功率集中于易失性(例如基于DRAM的)MSC,其面臨大的快速NVM存儲、例如PCM(或者更具體來說是PCMS)。由于被運行的工作負荷和緩存要求甚至對于一天的過程可顯著改變,所以保持這類大高速緩存被供電將對負荷線具有大影響。
[0159]以下所述實施例的一部分假定具有包括刷新引擎的MSC的兩級存儲器分級結(jié)構(gòu),其中刷新引擎:(1)逐出臟高速緩存線,并且按照所指定方式使其失效(但是本發(fā)明的基本原理可用于任何多級存儲器分級結(jié)構(gòu)的上下文中);(2)動態(tài)監(jiān)測高速緩存使用;(3)允許軟件指定電源管理策略;以及(4)停用基于易失性存儲器的MSC的所指定部分。
[0160]多級存儲器分級結(jié)構(gòu)中的MSC可以是組關(guān)聯(lián)回寫高速緩存。雖然這種高速緩存中的路數(shù)可改變,但是本文中將描述兩個具體實施例:
(1)具有8_16范圍中的路數(shù)的多路組關(guān)聯(lián)聞速緩存;以及
(2)I路組關(guān)聯(lián)高速緩存,又稱作直接映射高速緩存。
[0161]2.刷新引擎701
如圖7A所示,多級存儲器子系統(tǒng)中的刷新引擎701的一個實施例駐留在MSC控制器512中,并且具有若干不同的用途,其中之一是動態(tài)高速緩存電源管理,如本文所述。在這個實施例中,軟件750可激活刷新引擎701,以實施特定電源管理策略。這些策略可包括(但是并不限于)以下方面:
(I)軟件750識別高速緩存740中將要停用或重新激活的特定部分。在一個實施例中,該部分識別為特定路數(shù)。作為替代或補充,這可指定為高速緩存的特定百分率(fraction)(例如50%)。
[0162](2)軟件750指定刷新引擎701能夠監(jiān)測并且動態(tài)判定要停用或重新激活的高速緩存量的使用量度、例如平均未命中率或占用率。例如,如果特定區(qū)域的平均未命中率上升到高于所指定閾值,則可被停用這個區(qū)域。
[0163]雖然以下論述集中于高速緩存的部分的停用,但是本領(lǐng)域的技術(shù)人員將會理解,動態(tài)重新激活可使用相同基本技術(shù)來執(zhí)行。
[0164]在一個實施例中,一旦由軟件750對刷新引擎701設(shè)置策略,則刷新引擎通過首先判定高速緩存中將要停用的特定區(qū)域(例如使用如上所述的未命中率或者刷新軟件所識別的區(qū)域),來實現(xiàn)該策略。然后,刷新引擎701依次讀取這個區(qū)域(或者多個區(qū)域),掃描各高速緩存線,根據(jù)需要將臟高速緩存線逐出到PCM存儲器,并且在各高速緩存線被服務(wù)時使其失效。在一個實施例中,刷新引擎保持刷新地址計數(shù)器702,其保持當(dāng)前被停用的MSC的區(qū)域的“組地址(Set-Address)”。如以下所述,在一個實施例中,組地址從軟件所生成以存取存儲器的系統(tǒng)地址來得出。
[0165]3.高速緩存使用監(jiān)測
在一個實施例中,MSC將具有計數(shù)器730,以動態(tài)監(jiān)測高速緩存的使用。例如,這種監(jiān)測可通過保持某些關(guān)鍵量度的移動平均進行,其部分示例包括高速緩存占用率和移動平均未命中率:
(I)高速緩存占用率:高速緩存分為多個區(qū)域。在多路關(guān)聯(lián)高速緩存中,例如,區(qū)域可定義為路。每次在區(qū)域中分配新線時,區(qū)域占用率計數(shù)器遞增。在區(qū)域中置換線或者使其失效時,區(qū)域占用率計數(shù)器遞增。
[0166](2)移動平均未命中率:對于所指定時間間隔,區(qū)域的平均未命中率由刷新引擎701來計算。在這個實施例中,軟件750可提供刷新引擎701用來實現(xiàn)各高速緩存區(qū)域的停用的未命中率的閾值。
[0167]4.高速緩存停用機制
各種實現(xiàn)特定方案對執(zhí)行高速緩存停用是可能的。這里的主要思路是使高速緩存的所指定區(qū)域進入可能的最低功率狀態(tài),同時仍然允許適當(dāng)?shù)目焖僦匦录せ?。通常,這暗示電力沒有切斷,而是在一個實施例中,可禁用(或減慢)時鐘,并且可停用高速緩存區(qū)域的自行刷新。注意,在這類情況下,重新激活可花費一些時間,并且可在高速緩存的其它部分仍然為活動的同時在后臺進行。
[0168]停用區(qū)域的粒度將取決于特定實現(xiàn),以及如果DRAM用于MSC,則為DRAM架構(gòu)。本領(lǐng)域的技術(shù)人員將會理解,若干方案是可能的,包括將區(qū)域粒度限制到獨立的“列(rank)”。存儲器模塊上的每個單“列”形成與其它列的存儲器組件的相同布置。常用的存儲器模塊具有存儲器的單列、存儲器的雙列或者存儲器的四列(但是本發(fā)明的基本原理并不局限于任何特定列數(shù))。
[0169]現(xiàn)在將描述本發(fā)明的一個具體實施例的操作細節(jié)。但是應(yīng)當(dāng)注意,本發(fā)明的基本原理并不局限于操作參數(shù)的這個特定集合。例如,本發(fā)明的基本原理并不局限于任何特定地址或數(shù)據(jù)格式。
[0170]在一個實施例中,高速緩存停用的策略由軟件750向刷新引擎701指定。在這里描述直接映射高速緩存的特定情況,因為它是更復(fù)雜的情況。本領(lǐng)域的技術(shù)人員可易于使用這個描述來得出多路關(guān)聯(lián)高速緩存實現(xiàn)的配置。
[0171](A)首先,如圖7A所示,識別(例如由軟件750)將要停用的高速緩存區(qū)域740。如果指定高速緩存的一半,則組地址將下降一位。作為舉例而不是限制,在線大小為64 B并且系統(tǒng)地址空間為I TB或40 b的I GB直接映射高速緩存的示例中,組地址為24 b寬,并且標簽(對于64 B線)將為10 b寬。如果停用一半高速緩存并且它下降到512 MB,則組地址這時將為23 b,并且標簽大小將增加到11 b。
[0172](B)其次,指定停用的未命中閾值、平均間隔和區(qū)域粒度。作為舉例而不是限制,未命中閾值對100 ms的平均間隔可能為0.01,以及停用的區(qū)域粒度可能是高速緩存的1/4。再次基于區(qū)域大小,組地址和標簽將適當(dāng)?shù)匕l(fā)生變化。一旦設(shè)置策略并且啟用刷新引擎701,則等待適當(dāng)觸發(fā)以開始其工作。[0173]圖7A示出其中對停用識別高速緩存的上1/2的一個具體實現(xiàn)。按照這個實現(xiàn),刷新引擎701可執(zhí)行下列操作:
(I)選擇直接映射MSC 510的上半部740進行刷新。
[0174](2)將刷新地址計數(shù)器702 (組地址)設(shè)置到高速緩存的頂部,并且開始接連逐出每個線并且使其失效。當(dāng)它經(jīng)過每個線前進時,刷新地址計數(shù)器702將遞減。圖7A提供一個具體示例,其中對識別為刷新區(qū)域710的區(qū)域成功執(zhí)行停用,并且示出其中仍然需要執(zhí)行停用的刷新掛起區(qū)域711 (也在MSC的上半部中)。
[0175](3)在一個實施例中,為了確保高于刷新地址計數(shù)器的任何高速緩存區(qū)域710保持未使用,遵循下列規(guī)則:
a.高于刷新地址計數(shù)器702的任何CPU讀地址將自動地僅使用簡化組地址(在本例中,這是23 b組地址)查找高速緩存的下半部。這在圖7A中通過紅線示出。
[0176]b.標簽檢查單元550中存儲的標簽將具有適應(yīng)最小高速緩存的最大可能性。在圖7A所示的具體示例中,讀地址操作將檢查11 b標簽,以確保正確匹配。
[0177]c.如果存在響應(yīng)操作的高速緩存未命中,則分配將僅在MSC 741的下半部中發(fā)生。
[0178]d.如果讀操作低于刷新計數(shù)器地址702但是高于高速緩存的下半部(即,在刷新掛起區(qū)域711中),則在一個實施例中,它將使用12 b組地址來執(zhí)行正常查找,并且使用10b標簽來執(zhí)行正常匹配。
[0179]e.如果存在命中,則它將簡單地使用數(shù)據(jù)。如果存在未命中,則存在兩種選擇:(i)如常進行分配(如圖7A中通過#1圓圈所標識的圓形虛線所示),但是預(yù)計刷新最終免除這個線,或者(ii)檢查高速緩存的下半部的線,以及如果它在其中未命中,則僅在下半部中進行分配(如圖7A中通過#2圓圈所標識的虛線所示)。
[0180]f.在一個實施例中,高速緩存線寫入將遵循與以上(a)-(e)所述相同的規(guī)則。
[0181](4) 一旦刷新引擎701達到所選區(qū)域的結(jié)束(在這種情況下為上半部740的底部),則這里使這整個區(qū)域失效并且可將其關(guān)斷。
[0182](5)高速緩存區(qū)域停用機制突跳(kick)并且關(guān)斷MSC 510的這個部分740。
[0183](6)高速緩存組地址這時將為23 b,并且僅將指向MSC 510的下半部741。
[0184]如上述方案中顯而易見,MSC的一部分的停用對應(yīng)用透明地執(zhí)行,而對高速緩存使用沒有顯著影響。
[0185]用于多級存儲器分級結(jié)構(gòu)中的MSC的動態(tài)部分斷電的方法的一個實施例在圖7B中示出。圖7B所示的操作可采用上述軟件750、刷新引擎701和MSC控制器512的上下文來實現(xiàn),但是該方法不一定局限于任何特定架構(gòu)。
[0186]在760,發(fā)起高速緩存使用監(jiān)測?;谠摫O(jiān)測,在760,識別用于停用的高速緩存的一部分。例如,如上所述,區(qū)域占用率計數(shù)器每次在區(qū)域中分配新高速緩存線時遞增,而在區(qū)域中置換高速緩存線或者使其失效時遞減。占用率計數(shù)器的值然后可用來確定是否停用該區(qū)域(即,其中在較高占用率區(qū)域之前使較低占用率區(qū)域失效)。備選地,可對所指定時間間隔來計算高速緩存區(qū)域的平均未命中率。在這個實施例中,可提供閾值未命中率,以實現(xiàn)各高速緩存區(qū)域的停用。
[0187]在762,刷新地址計數(shù)器設(shè)置到高速緩存的所識別部分。在763,逐出各高速緩存線并且使其失效,以及計數(shù)器在各失效之后遞減。在764,發(fā)起讀或?qū)懖僮?,以及?65,確定操作是定向到刷新區(qū)域(F)、刷新掛起區(qū)域(FP)還是未失效的高速緩存的部分(NI)。如果操作定向到刷新區(qū)域,則在768,將它重定向到未被停用的高速緩存的部分。具體來說,在一個實施例中,高速緩存線使用簡化組地址(例如,如上所述)來分配。
[0188]如果操作定向到刷新掛起區(qū)域(FP),則可正常分配高速緩存線,其中預(yù)計最終將刷新該線。備選地,高速緩存線可使用簡化組地址(例如,如上所述)來分配。
[0189]如果操作定向到未失效的高速緩存的部分,則在766,讀/寫操作采用簡化組地址如常執(zhí)行。
[0190]如上所述的本發(fā)明的實施例可在服務(wù)器和其它類型的計算機系統(tǒng)中用來顯著降低功率消耗。除了操控如上所述的直接映射高速緩存之外,本發(fā)明的實施例還實現(xiàn)基于使用量度、例如占用率和未命中率來動態(tài)調(diào)整高速緩存大小的方式。
[0191]使用多級存儲器分級結(jié)構(gòu)的省電存儲器系統(tǒng)和方法
通常使用非常昂貴的不間斷電源(“UPS”)系統(tǒng)來保護數(shù)據(jù)中心服務(wù)器免于電源故障。這類系統(tǒng)通常用來使服務(wù)器保持被供電足夠長時間,以將所有存儲器內(nèi)容和易失性系統(tǒng)狀態(tài)保存到永久介質(zhì)。由于永久介質(zhì)通常為硬盤(其可以在網(wǎng)絡(luò)上),所以在執(zhí)行存儲器轉(zhuǎn)儲時消耗大量時間和功率。
[0192]在以下所述的本發(fā)明的實施例中,PCM或其它非易失性存儲器用來解決這些問題,由此緩解對UPS系統(tǒng)的需要。當(dāng)然,高端數(shù)據(jù)中心為了可用性而仍然可使用UPS系統(tǒng)(而不是為了確保存儲器狀態(tài)轉(zhuǎn)儲)。
[0193]如圖8A所示,本發(fā)明的實施例采用將PCM 530 (例如PCMS)用作遠存儲器和易失性MSC近存儲器510 Uf^BDRAM)的多級存儲器分級結(jié)構(gòu)。其它組件包括下列一個或多個:
(I)刷新引擎701,其能夠用來將臟線從MSC回寫到PCM。刷新引擎701還保持用于由CPU進行的后續(xù)讀和寫存取的刷新地址計數(shù)器702。
[0194](2)早期電源故障檢測單元830,其將觸發(fā)刷新引擎701起作用。
[0195](3)備用電源單元820,用于在刷新正發(fā)生時保持電力。由于刷新沒有花費長時間,所以這個備用電源單元820無需使用非常昂貴的UPS系統(tǒng)。反而,某個機架或服務(wù)器級電池備用模塊就是充分的。
[0196](4)MSC 510在高速緩存線被刷新之后切換到直寫操作模式的能力(在MSC控制器512的控制下)。
[0197](5)使軟件850識別MSC 510中將要丟棄的頁(例如通過如以下所述來標記頁)的機制。這類頁無需刷新到PCMS。這些頁的標記必須按照使得H/W將在刷新高速緩存時有權(quán)訪問這個信息的方式進行。
[0198] (6) PCMS地址間接尋址表(AIT) 563,其中軟件能夠標記將要丟棄的頁(例如標以零)。
[0199](7)當(dāng)刷新完成時通知軟件850的方法。
[0200]在一個實施例中,將MSC 510刷新到PCM 530所需的最大時間將取決于PCM子系統(tǒng)的高速緩存大小和性能。在一個實施例中,電源故障檢測系統(tǒng)830按實際工作負荷使用設(shè)計,其能夠用來預(yù)測將在MSC 510中積聚的臟線的平均數(shù)量。對于大多數(shù)服務(wù)器工作負荷,這將跟蹤讀/寫比率,并且通常將是MSC大小的大約1/3。[0201]另外,軟件850能夠命令刷新引擎701使來自MSC 510的“零”或“丟棄”頁失效。當(dāng)這些頁以后從PCM 530來讀取時,PCM控制器521在將頁返回給MSC 510之前使其歸零。在一個實施例中,PCM控制器521使用AIT 563,其保持指示每個頁的狀態(tài)的頁級元數(shù)據(jù)。在一個實施例中,對每一個讀或?qū)懖僮鱽碓L問這個信息。頁(及關(guān)聯(lián)高速緩存線)的狀態(tài)可由軟件850來設(shè)置。
[0202]在一個實施例中,當(dāng)電源故障檢測器單元830檢測電源故障狀態(tài)并且對刷新引擎701生成告警時,下列序列發(fā)生:
(I)觸發(fā)刷新引擎701,以開始依次遍歷MSC 510的臟線。
[0203](2)這些臟線由PCM控制器521刷新到PCM 530,以及各刷新線設(shè)置成“清潔”狀態(tài)。當(dāng)每個線被處理(例如,如上所述)時,更新刷新地址計數(shù)器702。
[0204](3)仍然允許后續(xù)讀取在高速緩存的刷新區(qū)域中命中。
[0205](4)但是,對高速緩存的刷新區(qū)域的任何寫入將引起直寫或?qū)懪月凡僮鳌H绻麛?shù)據(jù)當(dāng)前不在MSC 510中,則寫旁路操作將發(fā)生。如果數(shù)據(jù)處于MSC 510中,則它被更新。
[0206](5)當(dāng)已經(jīng)刷新整個MSC 510時,刷新引擎701將向PCM控制器521發(fā)送顯式刷新命令。PCM控制器521在成功地將所有先前寫入推送到PCM 530時確認這個命令。
[0207]6)在這點上,刷新引擎701能夠通知軟件850刷新事件的成功完成(例如生成“刷新完成”命令)。
[0208](7)軟件850這時可開始系統(tǒng)的有序關(guān)機或者設(shè)置在電力終止時重新開始的檢查點狀態(tài)。
[0209](8)在電力恢復(fù)時,軟件850能夠從PCM存儲器530中的檢查點進行恢復(fù)。不要求系統(tǒng)重新引導(dǎo)。
[0210]用于響應(yīng)具有MSC和PCM存儲器的多級存儲器系統(tǒng)中的電源故障事件的省電方法的一個實施例在圖8B中示出。圖8B所示的操作可采用圖8A所示的架構(gòu)的上下文來實現(xiàn),但是該方法不一定局限于任何特定架構(gòu)。
[0211]在801,檢測電源故障告警。例如,電源故障檢測電路可檢測輸入電力的電壓下降到低于所指定閾值。在802,刷新引擎被觸發(fā),并且開始依次遍歷MSC的臟線(例如使用如上所述的刷新地址計數(shù)器702)。
[0212]在803,準許任何讀操作命中MSC的刷新區(qū)域,以及在804,定向到刷新區(qū)域的任何寫入生成直寫或?qū)懪月凡僮?例如繞過MSC)。一旦在805所確定已經(jīng)刷新整個MSC,則向PCM控制器發(fā)送顯式刷新命令。在這個階段,通知命令也可發(fā)送給系統(tǒng)軟件(即,通知系統(tǒng)關(guān)于刷新條件)。
[0213]上述技術(shù)可用來顯著降低數(shù)據(jù)中心中的TC0,因為將不再需要昂貴的UPS系統(tǒng)。
[0214]用于采用多級存儲器分級結(jié)構(gòu)的快速休眠的系統(tǒng)和方法
服務(wù)器中進入休眠或者從休眠返回的速度受到對諸如硬盤驅(qū)動器或SSD之類的存儲裝置保存和檢索存儲器狀態(tài)限制。較快的基于存儲器的休眠不能實現(xiàn)相同的電力節(jié)省,因為DRAM存儲器是易失性的,以及必須通過電池來備用并且在休眠期間進入自行刷新。
[0215]通過諸如本文所述之類的多級分級存儲器子系統(tǒng),能夠?qū)崿F(xiàn)極快的基于存儲器的休眠,因為PCM存儲器是非易失性的,并且基于DRAM的高速緩存無需經(jīng)過電池備用。通過這種方式,服務(wù)器能夠更為頻繁地進入休眠,因而實現(xiàn)數(shù)據(jù)中心中的顯著電力和能量節(jié)省。[0216]如圖9A所示,以下所述的本發(fā)明的實施例利用多級存儲器分級結(jié)構(gòu),其包括MSC510和PCM(例如PCMS)主存儲器530,并且采用基于硬件的刷新引擎701。如先前所述,在多級架構(gòu)中,基于PCM的非易失性存儲器提供軟件可見存儲器地址空間。由于對直接軟件存取隱藏PCM性能特性,采用基于大DRAM的回寫MSC 510,其經(jīng)過硬件管理(例如經(jīng)由MSC控制器512),并且可對軟件是透明的。在正常系統(tǒng)操作期間,任何軟件存儲器存取將數(shù)據(jù)從PCM檢索到MSC中,其中它被保持,除非通過另一個存取逐出。在一個實施例中,由于MSC510是回寫,所以隨著時間推移,多個高速緩存位置將變“臟” 一即在PCM 530所存儲的副本中不再反映的修改狀態(tài)。
[0217]基于軟件和硬件控制的各種策略,系統(tǒng)可進入或退出休眠的狀態(tài)。系統(tǒng)可配置成進入休眠的特定方式是本領(lǐng)域的技術(shù)人員完全了解的,并且在這里不作詳細描述。處于休眠時,必須保存存儲器狀態(tài),但是系統(tǒng)的大部分將斷電以節(jié)省電力。通常,在軟件控制下、基于“空閑”狀態(tài)中花費的時間來進入該狀態(tài)。在硬件控制下、基于各種眾所周知的觸發(fā)條件來退出該狀態(tài)。
[0218]在一個實施例中,進入休眠的策略通過進入和退出休眠狀態(tài)的速度來確定。主要成本是對某個非易失性存儲介質(zhì)來存儲或檢索全部存儲器狀態(tài)的開銷。如果存儲介質(zhì)為磁盤,則存儲器狀態(tài)必須使用直接存儲器存取(DMA)來存儲或檢索。
[0219]在本文所述的多級存儲器架構(gòu)中,存儲器狀態(tài)的大部分已經(jīng)保持在非易失性PCM存儲器530中。在進入休眠時需要傳遞給PCM 530的唯一附加存儲器狀態(tài)是MSC 510中的“臟”線。這是當(dāng)刷新引擎701用來掃描全部MSC的“臟”線。這些線非??焖俚乇粰z索,并且“刷新”到PCM,以采用最新數(shù)據(jù)來更新原始位置。高速緩存“清潔”線無需刷新(即,因為清潔副本已經(jīng)存儲在PCM中)。一個實施例的刷新引擎701由軟件910 (其運行系統(tǒng)的休眠策略)來編程。編程是最小的,因為刷新引擎701只需要被告知取所有臟線并且將其發(fā)送給PCM 530。臟線的位置的地址已經(jīng)作為多層存儲器分級結(jié)構(gòu)的部分來保持,并且無需由軟件910顯式指定。
[0220]在一個實施例中,當(dāng)刷新完成時,刷新引擎701將通知軟件910,其能夠完成關(guān)機過程的其余部分。在從休眠返回時,不需要執(zhí)行從非易失性PCM的存儲器狀態(tài)的顯式復(fù)制。用于從PCM 530取存儲器位置并且將所取高速緩存線存儲在MSC 510中的正常多級存儲器技術(shù)將根據(jù)需要自動進行這個操作。因此,使用本文所述的多級存儲器架構(gòu)從休眠恢復(fù)是極快的。
[0221]對多級存儲器分級結(jié)構(gòu)執(zhí)行某種基本初始化,以便在從休眠恢復(fù)時開始起作用。在一個實施例中,這由系統(tǒng)BIOS 170(例如圖2所示)來管理。在一個實施例中,初始化包括建立表,其常駐SRAM或DRAM中,以實現(xiàn)快速地址轉(zhuǎn)換。這個過程也將是非??斓?,并且因此最小地貢獻于恢復(fù)開銷。
[0222]本文所述的休眠技術(shù)的有益效果表示對當(dāng)前休眠技術(shù)的巨大改進。例如,服務(wù)器當(dāng)前沒有使用基于存儲器的休眠,因為保持存儲器加電的成本過高。而是休眠要求對諸如HDD或SSD之類的存儲裝置存儲或檢索存儲器狀態(tài)。這通常將涉及軟件驅(qū)動程序,其將適配器編程為進行存儲器與存儲裝置之間的DMA操作。這類操作具有極高開銷,并且限制將休眠用于節(jié)省電力的適用性。軟件也極大地涉及到創(chuàng)建存儲裝置的存儲器鏡像中。
[0223]相比之下,本文所述的本發(fā)明的實施例使用具有非易失性存儲器(例如PCM)的多級存儲器分級結(jié)構(gòu)進行存儲器常駐休眠。刷新引擎701用來加速臟線從MSC清理到PCMS,由此顯著改進性能。
[0224]用于響應(yīng)具有MSC和PCM存儲器的多級存儲器系統(tǒng)中的電源故障事件的省電方法的一個實施例在圖8B中示出。圖8B所示的操作可采用圖8A所示的架構(gòu)的上下文來實現(xiàn),但是該方法不一定局限于任何特定架構(gòu)。
[0225]在801,檢測電源故障告警。例如,電源故障檢測電路可檢測輸入電力的電壓下降到低于所指定閾值。在802,刷新引擎被觸發(fā),并且開始依次遍歷MSC的臟線(例如使用如上所述的刷新地址計數(shù)器702)。
[0226]在803,準許任何讀操作命中MSC的刷新區(qū)域,以及在804,定向到刷新區(qū)域的任何寫入生成直寫或?qū)懪月凡僮?例如繞過MSC)。一旦在805所確定已經(jīng)刷新整個MSC,則向PCM控制器發(fā)送顯式刷新命令。在這個階段,通知命令也可發(fā)送給系統(tǒng)軟件(即,通知系統(tǒng)關(guān)于刷新條件)。
[0227]本發(fā)明的實施例可包括以上所述的各種步驟。步驟可包含在機器可執(zhí)行指令中,其中指令可用來使通用或?qū)S锰幚砥鲌?zhí)行步驟。備選地,這些步驟可由包含用于執(zhí)行步驟的硬連線邏輯的特定硬件組件來執(zhí)行,或者由已編程計算機組件和定制硬件組件的任何組合來執(zhí)行。
[0228]如本文所述,指令可表示諸如配置成執(zhí)行某些操作或具有預(yù)定功能性的專用集成電路(ASIC)之類的硬件的特定配置或者非暫時計算機可讀介質(zhì)中包含的存儲器中存儲的軟件指令。因此,附圖所示的技術(shù)能夠使用在一個或多個電子裝置(例如端站、網(wǎng)絡(luò)元件等)上存儲和運行的代碼及數(shù)據(jù)來實現(xiàn)。這類電子裝置使用諸如非暫時計算機機器可讀存儲介質(zhì)(例如磁盤、光盤、隨機存取存儲器、只讀存儲器、閃速存儲器裝置、相變存儲器)和暫時計算機機器可讀通信介質(zhì)(例如電、光、聲或其它形式的傳播信號一如載波、紅外信號、數(shù)字信號等)之類的計算機機器可讀介質(zhì)來存儲和傳遞(內(nèi)部通信和/或通過網(wǎng)絡(luò)與其它計算裝置進行通信)代碼和數(shù)據(jù)。另外,這類電子裝置通常包括一組一個或多個處理器,處理器耦合到諸如一個或多個存儲裝置(非暫時機器可讀存儲介質(zhì))、用戶輸入/輸出裝置(例如鍵盤、觸摸屏和/或顯示器)和網(wǎng)絡(luò)連接之類的一個或多個其它組件。該組處理器和其它組件的耦合通常通過一個或多個總線和橋接器(又稱作總線控制器)進行。存儲裝置以及攜帶網(wǎng)絡(luò)業(yè)務(wù)的信號分別表示一個或多個機器可讀存儲介質(zhì)和機器可讀通信介質(zhì)。因此,給定電子裝置的存儲裝置通常存儲代碼和/或數(shù)據(jù),供那個電子裝置的該組一個或多個處理器上執(zhí)行。當(dāng)然,本發(fā)明的一個實施例的一個或多個部分可使用軟件、固件和/或硬件的不同組合來實現(xiàn)。在本詳細描述中,為了便于說明,提出大量具體細節(jié),以便透徹地了解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員十分清楚,即使沒有這些具體的詳細資料其中的一部分,也可以實現(xiàn)本發(fā)明。在某些情況下,沒有詳細描述眾所周知的結(jié)構(gòu)和功能,以免影響對本發(fā)明的主題的理解。相應(yīng)地,本發(fā)明的范圍和精神應(yīng)當(dāng)根據(jù)以下權(quán)利要求書來判定。
【權(quán)利要求】
1.一種計算機系統(tǒng),包括: 存儲器子系統(tǒng),包括非易失性系統(tǒng)存儲器和用于緩存所述非易失性系統(tǒng)存儲器的部分的易失性存儲器側(cè)高速緩存(MSC);以及 刷新引擎,用于響應(yīng)與所述MSC的所指定區(qū)域關(guān)聯(lián)的停用條件而將所述MSC的所指定區(qū)域刷新到所述非易失性系統(tǒng)存儲器。
2.如權(quán)利要求1所述的系統(tǒng),其中,所述停用條件響應(yīng)所述MSC的所指定區(qū)域的高速緩存占用率的測量而選擇。
3.如權(quán)利要求2所述的系統(tǒng),其中,所述高速緩存占用率通過所指定高速緩存區(qū)域的區(qū)域占用率計數(shù)器來跟蹤,所述區(qū)域占用率計數(shù)器每次在所指定區(qū)域中分配新高速緩存線時遞增,而每次在所指定高速緩存區(qū)域中被置換或失效時遞減。
4.如權(quán)利要求1所述的系統(tǒng),其中,所述停用條件響應(yīng)所指定高速緩存區(qū)域中的平均未命中率的測量而選擇。
5.如權(quán)利要求4所述的系統(tǒng),其中,所述平均未命中率計算為對所指定時間間隔的移動平均。
6.如權(quán)利要求1所述的系統(tǒng),其中,所指定區(qū)域識別為所述MSC的路數(shù)。
7.如權(quán)利要求1所述的系統(tǒng),其中,所指定區(qū)域識別為所述MSC的所指定百分率。
8.如權(quán)利要求1所述的系統(tǒng),其中,所述刷新引擎包括刷新地址計數(shù)器,其保持當(dāng)前被停用的所述MSC的所指定區(qū)域的組地址。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述組地址從所生成以存取所述系統(tǒng)存儲器的所述系統(tǒng)存儲器地址來得出。
10.如權(quán)利要求1所述的系統(tǒng),其中,所述刷新引擎包括刷新地址計數(shù)器,其設(shè)置到將要刷新的所述MSC的區(qū)域的頂部,隨著每個連續(xù)高速緩存線從所述MSC的所指定區(qū)域被刷新,所述刷新地址計數(shù)器遞減。
11.一種在包括非易失性系統(tǒng)存儲器和用于緩存所述非易失性系統(tǒng)存儲器的部分的易失性存儲器側(cè)高速緩存(MSC)的存儲器子系統(tǒng)中實現(xiàn)的計算機實現(xiàn)方法,所述方法包括: 檢測與所述MSC的所指定區(qū)域關(guān)聯(lián)的停用條件;以及 響應(yīng)與所述MSC的所指定區(qū)域關(guān)聯(lián)的所述停用條件而將所述MSC的所指定區(qū)域刷新到所述非易失性系統(tǒng)存儲器。
12.如權(quán)利要求11所述的方法,還包括響應(yīng)所述MSC的所指定區(qū)域的高速緩存占用率的測量而選擇所述停用條件。
13.如權(quán)利要求12所述的方法,還包括: 使用所指定高速緩存區(qū)域的區(qū)域占用率計數(shù)器來跟蹤高速緩存占用率,所述區(qū)域占用率計數(shù)器每次在所指定區(qū)域中分配新高速緩存線時遞增,而每次在所指定高速緩存區(qū)域中被置換或失效時遞減。
14.如權(quán)利要求11所述的方法,其中,所述停用條件響應(yīng)所指定高速緩存區(qū)域中的平均未命中率的測量而選擇。
15.如權(quán)利要求14所述的方法,其中,所述平均未命中率計算為對所指定時間間隔的移動平均。
16.如權(quán)利要求11所述的方法,其中,所指定區(qū)域識別為所述MSC的路數(shù)。
17.如權(quán)利要求11所述的方法,其中,所指定區(qū)域識別為所述MSC的所指定百分率。
18.如權(quán)利要求11所述的方法,其中,所述刷新引擎包括刷新地址計數(shù)器,其保持當(dāng)前被停用的所述MSC的所指定區(qū)域的組地址。
19.如權(quán)利要求18所述的方法,其中,所述組地址從所生成以存取所述系統(tǒng)存儲器的所述系統(tǒng)存儲器地址來得出。
20.如權(quán)利要求11所述的方法,其中,所述刷新引擎包括刷新地址計數(shù)器,其設(shè)置到將要刷新的所述MSC的區(qū)域的頂部,隨著每個連續(xù)高速緩存線從所述MSC的所指定區(qū)域被刷新,所述刷新地址計數(shù)器遞減。
【文檔編號】G06F12/08GK103988183SQ201180075654
【公開日】2014年8月13日 申請日期:2011年12月20日 優(yōu)先權(quán)日:2011年12月20日
【發(fā)明者】R.K.拉馬努詹, G.J.欣頓, D.J.齊默曼 申請人:英特爾公司