TWI489276B - 於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 - Google Patents
於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 Download PDFInfo
- Publication number
- TWI489276B TWI489276B TW101147176A TW101147176A TWI489276B TW I489276 B TWI489276 B TW I489276B TW 101147176 A TW101147176 A TW 101147176A TW 101147176 A TW101147176 A TW 101147176A TW I489276 B TWI489276 B TW I489276B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- cache
- pcm
- address
- msc
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
- G06F1/3225—Monitoring of peripheral devices of memory devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係關於電腦系統的領域。更特別地,本發明關於實施多層級記憶體階層之設備及方法。
今日電腦創新的限制因素之一是記憶體及儲存技術。在習知的電腦系統中,系統記憶體(也稱為主記憶體、主要記憶體、可執行的記憶體)典型地以動態隨機存取記憶體(DRAM)實施。由於DRAM為基礎的記憶體必須固地定充電內部電容器,所以,即使沒有發生記憶體讀取或寫入時,DRAM為基礎的記憶體仍然會消耗電力。DRAM為基礎的記憶體是依電性的,意指一旦電力被移除時,儲存於DRAM記憶體中的資料會未中。習知的電腦系統也依賴多層級快取以增進性能。快取記憶體是高速記憶體,位於處理器與系統記憶體之間,快取記憶體對於服務記憶體存取而言,比它們由系統記憶體服務還快。這些快取記憶體典型上由靜態隨機存取記憶體(SRAM)實施。快取記憶體管理協定可用以確保最經常被存取的資料及指令儲存在快取記憶體的多個層級中之一,藉以降低記憶體存取交易的數目及增進性能。
關於大量儲存器(也稱為二級儲存器或碟片儲存器),習知的大量儲存裝置典型上包含磁性媒體(例如,
硬碟機)、光學媒體(例如,光碟(CD)機、數位多樣式碟片(DVD)、等等)、全像媒體、及/或大量儲存快閃記憶體(例如,固態機(SSD)、可拆卸式快閃機、等等)。一般而言,這些儲存裝置由於被處理器經由各種實施各式各樣的I/O協定之I/O配接器存取,所以,它們被視為輸入/輸出(I/O)裝置。這些I/O配接器及I/O協定消耗可觀的電量及對晶粒面積和平台的形狀因素具有顯著的衝擊。當未連接至永久式電源供應時具有有限的電池壽命之可攜式或可移動裝置(例如,膝上型電腦、筆記型電腦、平板電腦、個人數位助理(PDA)、可攜式媒體播放器、可攜式遊戲機、數位相機、行動電話、智慧型電話、特色電話、等等)可以包含可拆卸式大量儲存裝置(例如,嵌入式多媒體卡(eMMC)、保全數位(SD)卡),可拆卸式大量儲存裝置典型上經由低功率互連及I/O控制器而耦合至處理器,以符合活動及閒置的功率預算。
關於韌體記憶體(例如開機記憶體(也稱為BIOS快閃)),習知的電腦系統典型上使用快閃記憶體裝置以儲存持久的系統資訊,系統資訊經常被讀取但很少(或從不)被寫入。舉例而言,初始指令在開機處理(基本輸入及輸出系統(BIOS)影像)期間由處理器執行以初始化關鍵的系統組件,初始指令典型上儲存在快閃記憶體裝置中。目前市場上可取得的快閃記憶體裝置通常具有有限的速度(例如50MHz)。此速度又因讀取協定的負擔(例如,2.5MHz)而進一步降低。為了使BIOS執行速度加
速,在開機處理的預先可延伸韌體介面(PEI)階段期間,習知的處理器通常快取一部份BIOS碼。處理器快取記憶體的大小會限制PEI階段(也稱為「PEI BIOS碼」)中使用的BIOS碼的大小。
相位改變記憶體(PCM)有時也稱為相位改變隨機存取記憶體(PRAM或PCRAM)、PCME、雙向聯合記憶體、或硫屬化物隨機存取記憶體(C-RAM),其是非依電性電腦記憶體型式,利用硫屬玻璃的獨特表現。由於電流通過產生的熱之結果,硫屬玻璃在二狀態之間切換:結晶及非晶。近來的PCM版本能取得二種增加的區別狀態。
由於PCM的記憶體元件能更快速地切換,所以,PCM比快閃記憶體提供更高的性能,不需要先抹除整個區塊的胞即可完成寫入(將個別位元改為1或0),以及,導因於寫入的劣化是緩慢的(PCM裝置在約100佰萬個寫入循環後仍能存活;PCM劣化是導因於程式化期間的熱膨脹、金屬(及其它材料)遷移、及其它機制)。
在下述說明中,揭示眾多具體細節,例如邏輯實施、編解碼、指定運算元的手段、資源分割/分享/複製實施、系統組件的型式及相互關係、及邏輯分割/整合選擇,以助於更完整瞭解本發明。但是,習於此技藝者將瞭解,沒
有這些特定細節,仍可實施本發明。在其它情形中,未詳細顯示控制結構、閘等級電路及全軟體指令序列,以免模糊本發明。習於此技藝者,根據所述說明,不用過度的實驗,即能夠實施適當的功能。
應瞭解,在本說明書中述及「一實施例」、「實施例」、「舉例說明的實施例」等等意指所述的實施例包含特定的特點、結構、或特徵,但是每一實施例不一定包含特定的特點、結構、或特徵。此外,這些詞言不一定意指相同的實施例。此外,配合實施例而說明特定的特點、結構、或特徵時,意指無論是否明確說明,習於此技藝者都知道配合其它實施例以實施這些特點、結構、或特徵。
在下述說明及申請專利範圍中,使用「耦合」及「連接」與它們的衍生詞。應瞭解,這些詞不是要作為彼此的同義字。「耦合」用以表示可以是或不是彼此直接實體或電接觸的二或更多元件彼此協力或互動。「連接」用以表示在彼此耦合的二或更多元件之間的通訊建立。
此處有時使用以虛線(例如,大虛線、小虛線、點虛線、點)括號的文字及方塊以顯示選加的操作/組件,其將增加的特點加入本發明的實施例。但是,這些記號不應被視為意指這些僅是選項或是選加的操作/組件、及/或具有實線邊線的方塊在本發明的某些實施例中不是選加的。
記憶體容量及性能需求隨著處理器核心的數目增加及
例如虛擬化等新的使用模式而持續增加。此外,記憶體功率及成本分別變成電子系統的整體功率及成本的顯著成分。
本發明的某些實施例聰明地細分多種記憶體技術之間的性能需求及容量需求。此方式的焦點在於以相對小量的相對更高速的記憶體(例如DRAM)來提供性能並使用顯著較便宜及較密集的非依電性隨機存取記憶體(NVRAM)來實施系統記憶體塊。下述本發明的實施例界定平台配置,使階層記憶體子系統組織能用於NVRAM的使用。如下詳述般,在記憶體階層中使NVRAM也能夠造成新用途,例如擴充開機空間及大量儲存實施。
圖1顯示根據本發明的實施例之快取及系統記憶體配置。具體而言,圖1顯示包含內部處理器快取記憶體120、表現如遠記憶體快取的「近記憶體」121、及「遠記憶體」122,「近記憶體」121包含內部快取記憶體106及外部快取記憶體107-109。可用於本發明的某些實施例中的「遠記憶體」之一特定型式的記憶體是非依電性隨機存取記憶體(NVRAM)。確切而言,於下提供NVRAM的概述,接者是遠記體及近記憶體的概述。
對於NVRAM有很多種可能的技術選擇,包含PCM、相位變化記憶體及開關(PCMS)(後者是前者的更特定實施)、位元組可定址持續記憶體(BPRAM)、通用記憶
體、Ge2
Sb2
Te5
、可編移金屬化胞(PMC)、電阻式記憶體(PRAM)、RESET(非晶)胞、SET(結晶)胞、PCME、奧夫辛斯基(Ovshinsky)記憶體、鐵電記憶體(也稱為聚合物記憶體及聚N-乙烯咔唑))、鐵磁記憶體(也稱為自旋電子、SPRAM(旋轉轉移扭力RAM)、STRAM(旋轉穿隧RAM)、磁阻記憶體、磁記憶體、磁性隨機存取記憶體(MRAM))、及半導體-氧化物-氮化物-氧化物-半導體(SONOS,也稱為介電記憶體)。
為了在用於本應用中所述的記憶體階層中,NVRAM具有下述特徵:
(1)即使電力移除時,其仍能保持其內容,類似於用於固態碟(SSD)中的快閃記憶體,但不同於依電性的SRAM及DRAM;
(2)當閒置時比例如SRAM及DRAM更低耗電;
(3)類似於SRAM及DRAM的隨機存取(也稱為隨機可定址)。
(4)以比見於SSD中所見的快閃記憶體(其僅能一次以「區塊」被重寫及抹除-對於非或(NOR)快閃記憶體為最小64K位元組,對於非及(NAND)快閃記憶體為最小16K位元組)更低階的粒度(例如,位元組層級)重寫及抹除;
(5)可作為記憶體及被分配所有或部份系統記憶體位址空間;
(6)使用交易協定(支援交易識別符(ID)以區別
不同的交易,以致於這些交失序地完成),能夠在匯流排上耦合至處理器,以及,允許以小至足以支援作為系統記憶體之NVRAM操作之粒度等級來存取(例如64或128位元組的快取線尺寸)。舉例而言,匯流排可以是記憶體匯流排(舉例而言,例如DDR3、DDR4等DDR匯流排),與一般使用的非交易協定相反,交易協定在記憶體匯流排上運行。關於另一實例,匯流排可以是一般運行交易協定(本地交易協定)的匯流排,例如快速PCI(PCIE)匯流排、桌上型管理介面(DMI)匯流排、或是使用交易協定及及小的足夠交易酬載尺寸(例如64或128位元組)的任何其它型式的匯流排;以及
(7)下述之一或更多:a)比例如快閃等非依電性記憶體電路/儲存技術更快的寫入速度;b)非常高的讀取速度(比快閃記憶體更快或等同於DRAM讀取速度)c)可直接寫入(而非像SSD中使用的快閃記憶體般在寫入資料前要求抹拭(以1覆寫));及/或d)在故障前更高的耐寫性量級(例如2或3)(比開機ROM及SSD中使用的快閃更高)。
如上所述,與必須一次「整塊」地被改寫及抹拭的快閃記憶體相反,在任何給定實施中用以存取NVRAM的粒度層級取決於NVRAM耦合之特定記憶體控制器及特定記憶體匯流排或其它型式的匯流排。舉例而言,在使用
NVRAM作為系統記憶體的某些實施中,由於快取線是記憶體子系統存取記憶體的層級,所以,儘管有以位元組粒度存取的固有能力,仍然以快取線(例如,64位元組或是128位元組快取線)粒度存取NVRAM。因此,當NVRAM布署在記憶體子系統之內時,可以以與用於相同記憶體子系統中的DRAM(例如「近記憶體」)相同的粒度層級來存取它。即使如此,由記憶體控制器及記憶體匯流排或是其定型式的匯流排存取NVRAM的粒度層級小於由快閃使用的區塊尺寸及I/O子系統的控制器和匯流排的存取尺寸更小。
NVRAM也包含磨損等級演繹法以負責儲存在遠記憶體層級的儲存胞在多次寫入存取後開始磨損的事實,特別是在例如系統記憶體實施中發生顯著的寫入次數之情形。由於高循環計數區塊最容易以此方式磨損,所以,以低循環計數區塊交換高循環計數區塊的位址,磨損等級化將寫入遍佈於遠記憶體胞。注意,由於大部份的位址交換是由硬體、較低階軟體(例如,低階驅動程式或作業系統)、或二者的組合所操作,所以它典型上對於應用程式是透明的。
本發明的某些實施例的遠記憶體122由NVRAM實施,但不一定限於任何特定記憶體技術。遠記憶體122以其特徵及/或其在記憶體中的應用/儲存階層的觀點而與其
它指令和資料記憶體/儲存技術區別。舉例而言,遠記憶體122不同於:
(1)靜態隨機存取記憶體(SRAM),可以用於分別用於各處理器核心101-104之0階及1階內部處理器快取記憶體101a-b、102a-b、103a-b、103a-b及104a-b、以及由處理器核心共用的較低階快取記憶體(LLC)105。
(2)動態隨機存取記憶體,配置為處理器100內部的快取記憶體106(例如,在與處理器100相同的晶粒上)及/或配置為處理器外部的一或更多快取記憶體107-109(例如,在與處理器100相同或不同的封裝中);以及
(3)快閃記憶體/磁碟/光碟,作為主儲存器(未顯示);以及
(4)例如快閃記憶體或其它唯讀記憶體(ROM)等記憶體,作為韌體記憶體(意指開機ROM、BIOS快閃記憶體、及/或TPM快閃記憶體)(未顯示)。
遠記憶體122可以作為指令及資料儲存器,可由處理器100直接定址及能夠充份地跟隨處理器100的速度,這與作為大量儲存器的快閃記憶體/磁碟/光碟是相反的。此外,如上所述及於下詳述般,遠記憶體122可以設於記憶體匯流排上及與記憶體控制器直接通訊,記憶體控制器接著與處理器100直接通訊。
遠記憶體122可以與其它指令及資料儲存技術(例如,DRAM)結合以形成混合記憶體(也稱為共位PCM及
DRAM:第一階記憶體及第二階記憶體;FLAM(快閃記憶體及DRAM)。注意,包含PCM/PCMS的至少某些上述技術可以用於大量儲存以取代或加至系統記憶體,且當依此方式應用時無需是可由處理器直接定址的、隨機可存取的、或位元組定址的。
為了便於說明,說明書其它部份的大部份將「NVRAM」或者更具體而言,「PCM」或「PCMS」視為用於遠記憶體122的技術選擇。更確切而言,在下述說明中,NVRAM、PCM、PCMS及遠記憶體等詞可以互用。但是,應瞭解,如上所述般,不同的技術也可用於遠記憶體。而且,NVRAM不限於作為遠記憶體。
「近記憶體」121中階的記憶體,配置在遠記憶體122之前,相對於遠記憶體具有較低的讀取/寫入存取潛時及/或更對稱的讀取/寫入存取潛時(亦即,具有約略等於寫入時間的讀取時間)。在某些實施例中,近記憶體121比遠記憶體122具有顯著較低的寫入潛時但具有類似的(例如,稍微較低或相等的)讀取潛時;舉例而言,近記憶體121可以是例如依電性動態隨機存取記憶體(VRAM)等依電性記憶體,以及包括DRAM或是其它高速電容器為基礎的記憶體。但是值得注意的是本發明的基本原理不限於這些特定記憶體型式。此外,近記憶體121比遠記憶體122具有相當低的密度及/或更貴的製造成
本。
在一實施例中,近記憶體121配置在遠記憶體122與內部處理器快取記憶體120之間。在下述某些實施例中,近記憶體121配置作為一或更多記憶體側快取記憶體(MSC)107-109以掩飾遠記憶體的性能及/或使用限制,舉例而言,包含讀/寫潛時限制及記憶體劣化限制。在這些實例中,MSC 107-109及遠記憶體122的結合以近似於、等於或超過僅使用DRAM作為系統記憶體的系統之性能等級操作。如下詳述般,雖然在圖1中顯示為「快取記憶體」,但是,近記憶體121可以包含除了執行快取記憶體的角色之外也執行其它角色、或執行其它角色以代表執行快取記憶體的角色等模式。
近記憶體121設於處理器晶粒(作為快取記憶體106)及/或位於處理器晶粒的外部(作為快取記憶體107-109)(例如,在位於CPU封裝上的、位於CPU封裝外部而以高頻寬鏈結至CPU封裝之分開的晶粒上,舉例而言,在記憶體雙排型記憶體模組(DIMM)、豎卡/小背板、或電腦機板上。)。近記憶體121可以使用單一或多個高頻寬鏈結而與處理器100通訊地耦合,舉例而言,高頻寬鏈結可為DDR或其它交易高頻寬鏈結(於下詳述)。
圖1顯示本發明的實施例中不同等級的快取記憶體
101-109如何相對於系統實體立址(SPA)空間而配置。如同所述,本實施例包括具有一或更多核心101-104的處理器100,各核心具有它自己的專用上階快取記憶體(L0)101a-104a以及中階快取記憶體(MLC)(L1)101b-104b。處理器100也包含共用的LLC 105。在下述中將良好地瞭解這些各式各樣的快取記憶體等級,於此不作詳述。
圖1中所示的快取記憶體107-109專用於特定的系統記憶體位址範圍或是非連續位址範圍集。舉例而言,快取記憶體107專用於作為用於系統記憶體位址範圍#1 116的MSC,快取記憶體108及109專用於作為用於系統記憶體位址範圍#2 117及#3 118的非重疊部份之MSC。後一實施可以用於由處理器100使用的SPA空間插入於由快取記憶體107-109(例如,當配置為MSC)使用的位址空間之系統。在某些實施例中,此後一位址空間被稱為記憶體通道位址(MCA)空間。在一實施例中,內部快取記憶體101a-106對整個SPA空間執行快取操作。
此處所使用的系統記憶體是處理器100上執行的軟體可看見及/或可直接存取的記憶體;而快取記憶體101a-109以它們不會形成系統位址空間的可直接定址部份之方式而對軟體透明地操作,但是,核心也可以支援指令的執行以允許軟體提供某些控制(配置、策略、暗示、等等)給某些或所有快取記憶體。人工地將系統記憶體再劃分為系統記憶體位址範圍116-119作為系統配置處理的一部份
(例如,以系統設計者執行)及/或由軟體自動地執行。
在一實施例中,使用遠記憶體(例如,PCM)以實施系統記憶體位址範圍116-119,以及,在某些實施例中,近記憶體配置為系統記憶體。系統記憶體位址範圍#4代表使用例如DRAM等更高速記憶體實施的位址範圍,所述更高速記憶體可以是以系統記憶體模式(與快取模式相反)配置的近記憶體。
圖2示根據本發明的實施例之記憶體/儲存器階層140以及用於近記憶體144和NVRAM的操作之不同的可配置模式。記憶體/儲存器階層140具有多層級,包含(1)快取記憶體150,包含處理器快取記憶體150A(例如,圖1中的快取記憶體101A-105)以及選加地包含近記憶體150B作為用於遠記憶體的快取記憶體(在此處所述的某些操作模式中),(2)系統記憶體151,當近記憶體存在時包含遠記憶體151B(舉例而言,例如PCM等NVRAM)(或是,當近記憶體不存在時僅有NVRAM作為系統記憶體174),以及,選加地包含作為系統記憶體的近記憶體151A(在此處所述的某些操作模式中),(3)大量儲存器152,包含快閃/磁性/光學大量儲存器152B及/或NVRAM大量儲存器152A(例如,NVRAM 142的一部份);以及,(4)韌體記憶體153,包含BIOS快閃記憶體170及/或BIOS NVRAM 172以及選加地包含受信任的平台模組(TPM)NVRAM 173。
如同所示,近記憶體144可以實施成以各種不同的模
式操作,這些模式包含:第一模式,其中,其操作成用於遠記憶體的快取記憶體(作為用於FM的快取記憶體之近記憶體105B);第二模式,操作成系統記憶體以及佔據部份SPA空間(有時稱為近記憶體「直接存取」模式);以及,操作為例如高速暫存記憶體192或寫入緩衝器193等一或更多其它模式。在本發明的某些實施例中,近記憶體是可分割的,其中,各分割同時以支援的模式中之不同的模式操作;以及,不同的實施例以硬體(例如,保險絲、插腳)、韌體、及/或軟體(例如,經由MSC控制器124之內的可編程範圍暫存器集,舉例而言,在控制器124之內,可以儲存不同的二進位碼以辨識各模式及分割)支援分割的組態(例如大小、模式)。
圖2中的系統位址空間A 190用以顯示當近記憶體150B配置為用於遠記憶體的MSC時的操作。在本配置中,系統位址空間A 190代表整個系統位址空間(以及,系統位址空間B 191不存在)。替代地,系統位址空間B 191用以顯示當全部或部份近記憶體被指派系統記憶體空間的一部份時的實施。在本實施例中,系統位址空間B 191代表被指派給近記憶體151A的系統位址空間,以及,系統位址空間A 190代表指派給NVRAM系統記憶體174的系統位址空間的範圍。
此外,當作為用於遠記憶體的快取記憶體時,近記憶體144在MSC控制器124的控制下以各種子模式操作。在這些模式的各模式中,近記憶體位址空間(NMA)以近
記憶體不形成系統位址空間的可直接定址部份的方式,而對軟體是透明的。這些模式包含但不限於下述:
(1)回寫快取模式;在此模式中,以表現成FM快取記憶體的所有或部份近記憶體150B作為用於NVRAM遠記憶體(FM)151B的快取記憶體。當在回寫模式中時,每一寫入操作初始地被導引至作為用於FM的快取記憶體150B(假定寫入被引至的快取線出現在快取記憶體中)。僅當在作為用於FM的快取記憶體之近記憶體150B內的快取線是要由另一快取線取代時(與下述的直接寫入模式相反,在直接寫入模式中,每一寫入操作立即被傳播至NVRAM FM 151B),才執行對應的寫入操作以更新NVRAM FM 151B。
(2)近記憶體旁通模式:在此模式中,所有讀取及寫入繞過作為FM快取記憶體的NM150B以及直接前進至NVRAM FM 151B。舉例而言,當應用不是快取友善或或是要求資料依快取線的粒度被付予持久性時,可以使用此模式。在一實施例中,由處理器快取記憶體150A執行的快取及作為FM快取記憶體的NM150B彼此獨立地操作。結果,資料可以在作為FM快取記憶體的NM150B中被快取,其在處理器快取記憶體150A中未被快取(以及,在某些情形中,不被允許在處理器快取記憶體150A中被快取),反之亦然。因此,在處理器快取記憶體中被標示為「不可快取」的某些資料可以在作為FM快取記憶體的NM150B之內被快取。
(3)近記憶體讀取-快取寫入旁通模式:這是上述模式的變異,其中,允許從NVRAM FM 151B讀取快取持久資料(亦即,對於唯讀操作,持久資料在記記憶體150B中被快取,作為用於遠記憶體的快取記憶體)。當大部份的持久資料是「唯讀」時及應用使用是快取友善時,這是有用的。
(4)近記憶體讀取-快取直接寫入模式:這是近記憶體讀取-快取寫入旁通模式的變異,其中,除了讀取快取之外,寫入命中也被快取。對於作為用於FM的快取記憶體之近記憶體150B之每一寫入造成對FM 151B寫入。因此,由於快取記憶體的直接寫入本質,所以,仍然確保快取線持久性。
當在近記憶體直接存取模式中作動時,所有或部份作為系統記憶體151A的近記憶體對於軟體是直接可見的且形成部份SPA空間。此記憶體可以完全在軟體控制之下。此設計可以產生用於軟體之不均勻記憶體位址(NUMA)記憶體,其中,相對於NVRAM系統記憶體174,其從近記憶體144得到更高的性能。舉例而言但非限定,此用途可以用於要求對某些資料結構非常快的存取之高性能計算(HPC)及圖形應用。
在替代實施例中,藉由將某些快取線「釘」在近記憶體中(亦即,具有也同時儲存在NVRAM 142中的資料之快取線),實施近記憶體直接存取模式。在較大的、多路、集合相聯快取記憶體中,有效地達此釘住。
圖2也顯示部份NVRAM 142可以作為韌體記憶體。舉例而言,BIOS NVRAM 172部份用以儲存BIOS影像(取代或加至儲存BIOS資訊於BIOS快閃記憶體170中)。BIOS NVRAM 172部份可以是SPA空間的一部份且是可由執行於處理器核心101-104上的軟體可直接定址的,而BIOS快閃記憶體170是經由I/O子系統115可定址的。關於另一實例,受信任的平台模組(TPM)NVRAM 173部份可以用以保護敏感的系統資訊(例如,加密鑰)。
因此,如同所示,NVRAM 142可以實施成在各式各樣的不同模式中操作,包括作為遠記憶體151B(例如,當近記憶體144存在/操作時,無論近記憶體是否經由MSC控制124而作為用於FM的快取記憶體(在快取記憶體101A-105後及無MSC控制124,被直接存取));僅有NVRAM系統記憶體174(由於沒有近記憶體存在/操作,所以未作為遠記憶體;及在沒有MSC控制124下存取);NVRAM大量儲存器152A;BIOS NVRAM 172;及TPM NVRAM 173。雖然不同實施例以不同方式明確說明NVRAM模式,但是,圖3說明解碼表333的使用。
圖3顯示電腦系統300,於其上實施本發明的實施例。電腦系統300包含處理器310及記憶體/儲存器子系統380,以NVRAM 142用於系統記憶體及大量儲存器以及選加地用於韌體記憶體。NVRAM 142包括由電腦系統300使用以儲存資料、指令、狀態、及其它持久的及非持
久的資訊之整個系統記憶體及儲存器階層。如先前所述般,NVRAM 142配置成實施系統記憶體、大量儲存器、韌體記憶體、TPM記憶體等等的典型記憶體及儲存器階層中的角色。在圖3的實施例中,NVRAM 142分割成FM 151B、NVRAM大量儲存器152A、BIOS NVRAM 172、及TMP NVRAM 173。也可以想到具有不同角色的儲存階層,且NVRAM 142的應用不限於上述的角色。
以舉例方式說明當作為用於FM的快取記憶體150B之近記憶體是在回寫快取中時的操作。在一實施例中,當作為用於FM的快取記憶體之近記憶體150B是在上述回寫快取模式中時,讀取操作將首先到達MSC控制器124,MSC控制器124將執行查詢以決定被請求的資料是否存在於作為用於FM 150B的快取記憶體之近記憶體中(例如,使用標籤快取記憶體342)。假使存在時,則其將資料經由I/O子系統115而歸返給請求的CPU、核心101-104或I/O裝置。假使資料不存在時,則MSC控制器124將請求與系統記憶體位址一起送至NVRAM控制器332。NVRAM控制器332將使用解碼表333,以將系統記憶體位址轉譯成NVRAM實體裝置位址(PDA)及將讀取操作導引至遠記憶體151B的此區域。在一實施例中,解碼表333包含位址間接表(AIT)組件,NVRAM控制器332使用位址間接表(AIT)組件以在系統記憶體位址與NVRAM PDA之間轉譯。在一實施例中,AIT被更新作為磨損等級演繹法,磨損等級演繹法被實施以散佈記憶體存取操作及藉以
降低NVRAM FM 151B上的磨損。替代地,AIT可以是儲存在NVRAM控制器332之內分別的表。
在從NVRAM FM 151B接收被請求的資料時,NVRAM控制器332將被請求的資料歸還給MSC控制器124,MSC控制器124將資料儲存在作為FM快取記憶體的MSC近記憶體150B中以及也將資料經由I/O子系統115送至請求處理器核心101-104、或I/O裝置。可以由作為FM快取記憶體的近記憶體150B直接服務對此資料的後續請求直到其由某些其它NVRAM FM資料取代為止。
如同所述,在一實施例中,記憶體寫入操作也首先進行至MSC控制器124,MSC控制器124將它寫入作為FM快取記憶體的MSC近記憶體150B。在回寫快取模式中,當收到寫入操作時,資料不會被直接送至NVRAM FM 151B。舉例而言,僅當儲存資料之作為FM快取記憶體的MSC近記憶體150B中的位置必須被再用於儲存用於不同的系統記憶體位址之資料時,資料可被送至NVRAM FM 151B。當此發生時,MSC控制器124注意資料不在NVRAM FM 151B中且將因而從作為FM快取記憶體的近記憶體150B中取出它以及將它送至NVRAM控制器332。NVRAM控制器332為了系統記憶體位址而查詢PDA,然後將資料寫至NVRAM FM 151B。
在圖3中,NVRAM控制器332顯示為使用三條分開的線而連接至FM 151B、NVRAM大量儲存器152A、及BIOS NVRAM 172。但是,這不一定意指有三個分開的實
體匯流排或是通訊通道以將NVRAM控制器332連接至這些部份NVRAM 142。相反地,在某些實施例中,使用共同匯流排或其它型式的匯流排(例如參考圖4A-M之下述中所述的匯流排)以將NVRAM控制器332通訊地耦合至FM 151B、NVRAM大量儲存器152A、及BIOS NVRAM 172。舉例而言,在一實施例中,在圖3中的三條線代表例如記憶體匯流排(例如,DDR3、DDR4、等等)等匯流排,在此匯流排上,NVRAM控制器332實施交易協定以與NVRAM 142通訊。NVRAM控制器332也在支援本地交易協定的匯流排上與NVRAM 142通訊,舉例而言,支援本地交易協定的匯流排可為快速PCI匯流排、桌上型管理介面(DMI)匯流排、或是使用交易協定及足夠小的交易酬載大小(舉例而言,例如64或128位元組等快取線)之任何其它型式的匯流排。
在一實施例中,電腦系統300包含整合記憶體控制器(IMC)331,為處理器310執行中央記憶體存取控制,耦合至:1)記憶體側快取(MSC)控制器124,以控制對作為遠記憶體快取記憶體的近記憶體(NM)150B之存取;以及,2)NVRAM控制器332,以控制對NVRAM 142的存取。雖然在圖3中顯示為分開的單元,MSC控制器124及NVRAM控制器332邏輯地形成IMC 331的一部份。
在所示的實施例中,MSC控制器124包含範圍暫存器集346,指明用於表現成遠記憶體快取記憶體的NM150B之操作模式(例如,上述回寫快取模式、近記憶體旁通模
式、等等)。在所示的實施例中,使用DRAM 144作為用於表現成用於遠記憶體的快取記憶體的NM150B之記憶體技術。為回應記憶體存取請求,MSC控制器124決定(取決於範圍暫存器336中指定的操作模式)請求是否由作為用於FM的快取記憶體之NM150B服務、或者請求是否必須送至NVRAM控制器332,NVRAM控制器332接著服務來自NVRAM 142的遠記憶體(FM)151B之請求。
在NVRAM 142由PCMS實施的實施例中,NVRAM控制器332是PCMS控制器,以符合PCMS技術的協定來執行存取。如同先前所述般,PCMS記憶體先天上能夠被以位元組的粒度存取。然而,NVRAM控制器332可以以例如快取線(例如,64位元或128位元快取線)之較低粒度等級、或是與記憶體子系統一致的任何其它等級的粒度,存取PCMS為基礎的遠記憶體151B。本發明的基本原理不限於用於存取PCMS為基礎的遠記憶體151B之任何特定等級的粒度。但是,一般而言,當PCMS為基礎的遠記憶體151B用以形成部份系統位址空間時,粒度等級將高於傳統上用於例如快閃等其它非依電性儲存器技術,非依電性儲存器技術僅以「區塊」等級執行重寫及抹拭操作(對於非或快閃記憶體,尺寸最小為64K位元組,對於反及快閃記憶體,尺寸最小為16K位元組)。
在所示的實施例中,NVRAM控制器332從解碼表333讀取配置資料以建立先前所述的用於NVRAM 142之模式、尺寸、等等,或者,替代地依賴從IMC 331及I/O
子系統315通過的解碼結果。
舉例而言,在製造時或是現場,電腦系統300將解碼表333程式化以將NVRAM 142的不同區域標記為系統記憶體、經由SATA介面曝露的大量儲存器、經由USB唯區塊傳輸(BOT)介面曝露的大量儲存器、支援TPM儲存器的加密儲存器、等等。將存取操控至NVRAM 142的不同分割之方式是經由解碼邏輯。舉例而言,在一實施例中,各分割的位址範圍是界定在解碼表333中。在一實施例中,當IMC 331接收存取請求時,請求的目標位址被解碼以透露請求是否被導引朝向記憶體、NVRAM大量儲存器、或是I/O。假使它是記憶體請求,則IMC 331及/或MSC控制器124又從目標位址決定請求是否被導引至作為用於FM的快取記憶體之NM 150B或是至FM 151B。對於FM 151B存取,請求被派送至NVRAM控制器332。假使此請求被導引至I/O(例如,非儲存及儲存I/O裝置),則IMC 331將請求傳遞給I/O子系統115。I/O子系統115又將位址解碼以決定位址是否指向NVRAM大量儲存器152A、BIOS NVRAM 172、或是其它非儲存或儲存I/O裝置。假使此位址指向NVRAM大量儲存器152A或BIOS NVRAM 172時,則I/O子系統115將請求派送至NVRAM控制器332。假使此位置指向TMP NVRAM 173,則I/O子系統115將請求傳遞給TPM 334以執行安全的存取。
在一實施例中,被派送至NVRAM控制器332的各請求有屬性伴隨(也稱為「交易型式」)以標示存取型式。
在一實施例中,NVRAM控制器332模擬用於被請求的存取型式之存取協定,以致於平台的其它部份維持不知道NVRAM 142在記憶體及儲存器階層中執行的多重角色。在替代實施例中,無論是那一交易型式,NVRAM控制器332均對NVRAM 142執行記憶體存取。可瞭解,解碼路徑可以不同於上述所述的路徑。舉例而言,IMC 331將存取請求的目標位址解碼以及決定其是否被導引NVRAM 142。假使其被導引至NVRAM 142,則IMC 331根據解碼表333而產生屬性。根據屬性,IMC 331接著派送請求給適當的下行邏輯(例如,NVRAM控制器332及I/O子系統115),以執行被請求的資料存取。在又另一實施例中,假使對應的屬性未從上行邏輯(例如,IMC 331及I/O子系統115)傳遞,則NVRAM控制器332將目標位址解碼。也可以實施其它解碼路徑。
例如此處所述的新記憶體架構的出現提供新可能性的資源。雖然於下述中又將以更多篇幅來說明,但是,緊隨於後的下述中將快速地突顯這些可能性中的某些可能性。
根據一可能實施,NVRAM 142完全取代或補充系統記憶體中傳統的DRAM技術。在一實施例中,NVRAM 142代表第二階系統記憶體的導入(例如,系統記憶體被視為具有包括作為快取記憶體的近記憶體150B的第一階系統記憶體(DRAM裝置340的一部份)以及包括遠記憶體(FM)151B(部份NVRAM 142)的第二階系統記憶體)。
根據某些實施例,NVRAM 142完全取代或補充快閃/磁性/光學大量儲存器152B。如上所述,在某些實施例中,即使NVRAM大量儲存器152A能夠具有位元等級的定址性,則NVRAM控制器332仍然能夠視實施(例如,64K位元組,128K位元組)而以多位元組的區塊來存取NVRAM大量儲存器152A。NVRAM控制器332用以從NVRAM大量儲存器152A存取資料的特定方式對於由處理器310執行的軟體是透明的。舉例而言,即使可以從快閃/磁性/光學大量儲存器152B不同地存取NVRAM大量儲存器152A,但是,作業系統仍可將NVRAM大量儲存器152A視為標準的大量儲存裝置(例如,序列ATA硬碟機或其它標準型式的大量儲存裝置)。
在NVRAM大量儲存器152A完全取代快閃/磁性/光學大量儲存器152B的實施例中,不需要為了區塊可定址的儲存器存取而使用儲存驅動器。從儲存器存取移除儲存驅動器負擔能增加存取速度及節省電力。在希望NVRAM大量儲存器152A以區塊可存取及與快閃/磁性/光學大量儲存器152B無法區別之方式呈現給OS及/或應用程式之替代實施例中,使用模擬的儲存驅動器以使區塊可存取介面(例如,通用序列匯流排(USB)唯區塊傳輸(BOT))1.0;序列先進技術附接(SATA)3.0;等等)曝露給用於存取NVRAM大量儲存器152A的軟體。
在一實施例中,NVRAM 142完全取代或補充例如BIOS快閃記憶體362及TMP快閃記憶體372等韌體記憶
體(在圖3中以虛線顯示以表示它們是選加的)。舉例而言,NVRAM 142包含BIOS NVRAM 172部份以補充或取代BIOS快閃記憶體362以及包含TPM NVRAM 173部份以補充或取代TPM快閃記憶體372。韌體記憶體也儲存由TMP 334使用的系統持久狀態以保護敏感的系統資訊(例如,加密鑰)。在一實施例中,以NVRAM 142用於韌體記憶體可以不需要第三方快閃記憶體部份來儲存對於系統操作重要的碼及資料。
繼續討論圖3的系統,在某些實施例中,電腦系統100的架構包含多處理器,但是,為了簡明起見,在圖3中顯示單一處理器310。處理器310可以是任何型式的資料處理器,包含一般用途或特別用途處理單元(CPU)、特定應用積體電路(ASIC)或數位訊號處理器(DSP)。舉例而言,處理器310可以是一般用途處理器,例如CoreTM
i3、i5、i7、2 Duo及Quad、XeonTM
、或ItaniumTM
處理器,所有這些處理器可以從位於加州聖克拉拉(Santa Clara)的英特爾(Intel)公司取得。替代地,處理器310可以來自其它公司,例如加州Sunnyvale的ARM Holdings,Ltd.,加州Sunnyvale的MIPS Technologies。處理器310是特別用途的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、副處理器、嵌入式處理器、等等。處理器310可以實施於包含在一或更多封裝之內的一或更多晶片。處理器310可以是使用例如BiCMOS、CMOS、或NMOS等多種處理技術中的任一技術
而實施於一或更多基底上以及/或其一部份。在圖3中所示的實施例中,處理器310具有系統晶片(SOC)配置。
在一實施例中,處理器310包含積體圖形單元311,其包含邏輯,用於執行例如3D或2D圖形命令等圖形命令。雖然本發明的實施例不限於任何特定的積體圖形單元311,但是,在一實施例中,圖形單元311能夠執行例如Open GL及/或Direct X應用程式化介面(API)(例如OpenGL 4.1及Direct X11)所指定的工業標準圖形命令。
處理器310也包含一或更多核心101-104,但是,為了簡明起見,在圖3中再度顯示為單一核心。在很多實施例中,核心101-104包含例如一或更多執行單元、收回單元、一般用途及特定用途暫存器等等內部功能區塊。假使核心是多緒或超緒的,則各硬體緒也被視為「邏輯」核心。以架構及/或指令集的觀點而言,核心101-104可以是同質的或是異質的。舉例而言,這些核心中的某些核心可以是依序的,而其它是未依序的。關於另一實例,這些核心中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或是不同的指令集。
處理器310也包含一或更多快取記憶體,例如,可以實施為SRAM及/或DRAM的快取記憶體313。在未顯示的很多實施例中,快取記憶體313以外的其它快取記憶體可以實施成多階快取記憶體存在於核心101-104中的執行單元與記憶體150B及151B之間。舉例而言,共用的快取記憶體單元集包含例如階1(L1)快取記憶體等上階快取
記憶體、例如階2(L2)、階3(L3)、階4(L4)等中階快取記憶體、或是其它階的快取記憶體(LLC)、及/或其不同組合。在不同實施例中,快取記憶體313可以以不同方式分配且在不同實施例中可以具有不同大小。舉例而言,快取記憶體313可以是8百萬位元組(MB)快取記憶體、16MB等等。此外,在不同實施例中,快取記憶體可以是直接對映快取記憶體、完全相聯快取記憶體、多路集合相聯快取記憶體、或是具有其它型式的對映之快取記憶體。在包含多核心的其它實施例中,快取記憶體313包含由所有核心之間共用的一大部份或是分成數個分別的功能片(例如,各核心一片)。快取記憶體313也包含所有核心之間共用的一部份以及每核心分別的功能片之數個其它部份。
處理器310也包含本地代理單元314,本地代理單元314包含協調及操作核心101-104的那些組件。舉例而言,本地代理單元314包含功率控制單元(PCU)及顯示單元。PCU可以是或包含調節核心101-104及積體圖形單元311所示的邏輯及組件。顯示單元是用於驅動一或更多外部連接的顯示器。
如上所述,在某些實施例中,處理器310包含整合記憶體控制器(IMC)331、近記憶體快取(MSC)控制器、及NVRAM控制器332,所有這些控制器與處理器310在相同晶片上、或是在分開的連接至處理器310的封裝及/或晶片上。DRAM 144是在與IMC 331及MSC控制器124
相同或不同的晶片上;因此,一晶片具有處理器310及DRAM 144;一晶片可以具有處理器310及另一DRAM 144以及(這些晶片可以在相同或不同的封裝中);一晶片具有核心101-104以及另一IMC 331、MSC控制器124及DRAM 144(這些晶片可以在相同或不同的封裝中);一晶片具有核心101-104、另一IMC 331及MSC控制器124、以及另一DRAM 144(這些晶片可以在相同或不同的封裝中);等等。
在某些實施例中,處理器310包含耦合至IMC 331的I/O子系統115。I/O子系統115使得處理器310與追隨的序列或並列I/O裝置之間能夠通訊;一或更多網路336(例如區域網路、廣域網路或網際網路)、儲存器I/O裝置(例如快閃/磁性/光學大量儲存器152B、BIOS快閃記憶體362、TPM快閃記憶體372)及一或更多非儲存器I/O裝置337(例如顯示器、鍵盤、揚音器、等等)之間能夠通訊。I/O子系統115包含平台控制器集線器(PCH)(未顯示),又包含數個I/O配接器338及其它I/O電路以提供對儲存器及非儲存器I/O裝置及網路的存取。為達成此點,I/O子系統115具有至少一整合的I/O配接器338以用於所使用的各I/O協定。I/O子系統115與處理器310在相同晶片上、或是在分開的連接至處理器310的封裝及/或晶片上。
I/O配接器338將處理器310之內使用的主通訊協定轉譯成與特定I/O裝置共容的協定。對於快閃/磁性/光
學大量儲存器152B,I/O配接器338轉譯的協定中的某些協定包含快速週邊組件互連(PCI)(PCI-E)3.0;USB 3.0;SATA 3.0;小電腦系統介面(SCSI)、超級-640;及電機電子工程師學會(IEEE)1394「韌體」等等。關於BIOS快閃記憶體362,I/O配接器338轉譯的協定中的某些協定包含序列週邊介面(SPI)、微線(Microwire)、等等。此外,有一或更多無線協定I/O配接器。無線協定的實例包含個人區域網路中使用的協定,例如IEEE 802.15及藍芽4.0、等等;例如IEEE 802.11為基礎的無線協定等無線區域網路;以及,蜂巢式協定。
在某些實施例中,I/O子系統115耦合至TPM334以控制對例如安全資料、加密鑰、平台配置資訊等系統持久狀態的存取。在一實施例中,這些系統持久狀態儲存在TMP NVRAM 173中以及經由NVRAM控制器332而被存取。
在一實施例中,TPM 334是具有密碼功能的安全微控制器。TPM 334具有一些與信任有關的能力;舉例而言,用於確保由TPM保護的資料之SEAL能力僅對相同的TPM是可利用的。TPM 334使用它的加密能力以保護資料及鑰(例如,機密)。在一實施例中,TPM 334具有獨特的及秘密的RSA鑰,允許其驗證硬體裝置及平台。舉例而言,TPM 334驗證對於儲存在電腦系統300中的資料之系統搜尋存取是所期望的系統。TPM 334也能夠報告平台(例如,電腦系統300)的整體性。這允許外部資源(例
如,網路上的伺服器)以決定平台的信賴度但未防止由使用者存取。
在某些實施例中,I/O子系統315也包含管理引擎(ME)335,管理引擎(ME)335微處理器,允許系統管理者監視、維持、更新、升級、及修復電腦系統300。在一實施例中,系統管理者經由網路336而藉由ME 335以編輯解碼表333,而遠端地配置電腦系統300。
為了便於說明,應用的其它部份有時意指作為PCMS裝置之NVRAM 142。PCMS裝置包含多層(垂直堆疊)PCM胞陣列,多層PCM胞陣列是非依電性的、具有低耗電、及可依位元等級修改的。確切而言,在下述說明中,NVRAM裝置及PCM裝置等詞可以互換地使用。但是,應瞭解,如上所述般,PCMS以外的不同的技術也可以用於NVRAM 142。
應瞭解,即使電腦系統的處理器未具有處理器310的所有上述組件、或是具有處理器310以外的更多組件,該電腦系統仍然能以NVRAM 142用於系統記憶體、大量儲存器、韌體記憶體及/或其它記憶體以及作為儲存之用。
在圖3中所示的特定實施例中,MSC控制器124及NVRAM控制器332也位於與處理器310相同的晶粒或封裝(稱為CPU封裝)上。在其它實施例中,MSC控制器124及/或NVRAM控制器332可以設置成離開晶粒或是離開CPU封裝、在例如記憶體匯流排(例如DDR匯流排(例如DDR3、DDR4、等等))、PCI匯流排、桌上型管
理介面(DMI)匯流排、或任何其它型式的匯流排等匯流排而耦合至處理器310或是CPU封裝。
圖4A-M顯示以不同方式配置及封裝處理器、近記憶體及遠記憶體之各式各樣的不同部置。特別地,圖4A-M中所示的平台記憶體配置能夠使用新的非依電性記憶體,例如PCM技術,更具體而言,PCMS技術。
雖然在圖4A-N中的多個圖式中使用某些相同的代號,但是,這不一定意指這些代號所標示的結構總是相同的。舉例而言,雖然在數個圖式中使用相同的代號以識別整合記憶體控制器(IMC)331及CPU封裝401,但是這些組件可以在不同的圖式中不同地實施。這些差異中的某些差異由於與瞭解本發明的基本原理無關,所以,它們未被突顯。
雖然下述中將說明數個不同的系統平台配置方式,但是,這些方式是落在二種寬廣的類別中:分裂架構、及聯合架構。簡而言之,在分裂架構設計中,記憶體側快取(MSC)控制器(例如,位於處理器晶粒中或是在CPU封裝中的分別晶粒上)攔截所有系統記憶體請求。有二個分開的介面,從離開CPU封裝而耦合至近記憶體及遠記憶體的該控制器「下行流動」。各介面為特定型式的記憶體而被修整且各記憶體以性能及容量的觀點而被獨立地比例化。
在聯合架構設計中,單一記憶體介面離開處理器晶粒或是CPU封裝且所有的記憶體請求被送至此介面。MSC控制器與近及遠記憶體子系統一起結合在此單一介面上。此記憶體介面必須被修整以符合處理器的記憶體性能要求,而且,由於PCMS裝置未依序處理讀取請求,所以必須支援交易、失序協定。根據上述一般分類,可以採用下述特定平台配置。
下述實施例包含各種型式的匯流排/通道。此處,同義地使用「匯流排」及「通道」等詞。每一DIMM插座的記憶體通道的數目將取決於電腦系統中使用的特定CPU封裝(具有某些CPU封裝支援,舉例而言,每一插座三記憶體通道)。
此外,在使用DRAM的下述實施例中,可以使用虛擬的任何型式的DRAM記憶體通道,舉例而言但非限定,包含DDR通道(例如,DDR3、DDR4、DDR5、等等)。因此,雖然DDR由於它在工業上的廣泛接收度、最終價格點、等等而為有利的,但是,本發明的基本原理不限於任何特定型式的DRAM或是依電性記憶體。
圖4A顯示分裂架構的一實施例,其包含在CPU封裝401中(在處理器晶粒或在分別的晶粒上)的一或更多DRAM 403-406以及設於作為遠記憶體的DIMM 450-451上之例如PCM記憶體等一或更多NVRAM裝置,DRAM裝置403-406操作成作為用於FM的快取記憶體(亦即,MSC)之近記憶體。在CPU封裝401上的高頻寬鏈結407
將單一或多個DRAM 403-406互連至處理器310,處理器310主管整合記憶體控制器(IMC)331及MSC控制器124。雖然在圖4A及其它下述圖式中顯示為分別的單元,但是,在一實施例中,MSC控制器124可以整合在記憶體控制器331之內。
DIMM 450-451使用DDR槽及電連接,以DDR位址、資料及控制線和電壓界定DDR通道440(例如,如同電子裝置工程聯合委員會(JEDEC)所界定的DDR3或DDR4標準)。在DIMM 450-451上的PCM裝置提供此分裂架構的遠記憶體容量,以通至CPU封裝401的DDR通道440能夠載送DDR及交易協定。與處理器310或CPU封裝之內的其它邏輯(例如IMC 331或MSC控制器124)傳送命令及接收立即響應之DDR協定相反,用以與PCM裝置通訊的交易協定允許CPU封裝401核發一系列交易,各交易以獨特交易ID識別。命令由PCM DIMM中之一的接收方上的PCM控制器服務,所述PCM控制器潛在失序地將響應送回至CPU封裝401。在CPU封裝401之內的處理器310或其它邏輯依各交易的交易ID而識別與響應一起被傳送的各交易。上述配置允許系統支援標準DDR DRAM為基礎的DIMM(在DDR電連接上使用DDR協定)及PCM為基礎的DIMM配置(在相同的DDR電連接上使用交易協定)。
圖4B顯示在DDR通道440上耦合之DDR DRAM為基礎的DIMM 452以形成作為MSC之近記憶體的分裂架
構。處理器310主管記憶體控制器331及MSC控制器124。例如PCM記憶體裝置等NVRAM裝置設於PCM為基礎的DIMM 453上,所述PCM為基礎的DIMM 453使用離開CUP封裝401的其它DDR通道442上之DDR槽及電連接。PCM為基礎的DIMM 453提供此分裂架構的遠記憶體容量,以連接至CPU封裝401的DDR通道442根據DDR電連接及能夠載送DDR及交易協定。這允許系統配置有不同數目的DDR DRAM DIMM 452(例如,DDR4 DIMM)及PCM DIMM 453以取得所需容量及/或性能點。
圖4C顯示主管CPU封裝401(在處理器晶粒上或是在分別的晶粒上)上作為記憶體側快取(MSC)的DRAM 403-406之分裂架構。如同分裂架構所界定般,在CPU封裝上的高頻寬鏈結407用以互連單一或多個DRAM 403-406至主管記憶體控制器331及MSC控制器124的處理器310。例如PCM記憶體裝置等NVRAM設於快速PCI卡或是豎卡455上,快速PCI卡或豎卡455係使用快速PCI電連接及在快速PCI匯流排454上使用快速PCI協定或不同的交易協定。快速PCI卡或豎卡455上的PCM裝置提供此分裂架構的遠記憶體容量。
圖4D是使用DDR DRAM為基礎的DIMM 452及DDR通道440以形成作為MSC的近記憶體之分裂架構。處理器310主管記憶體控制器331及MSC控制器124。例如PCM記憶體裝置455等NVRAM裝置設於快速PCI卡或豎卡上,快速PCI卡或豎卡係使用快速PCI電連接及在快速
PCI鏈結454上使用快速PCI協定或不同的交易協定。快速PCI卡或豎卡455上的PCM裝置提供此分裂架構的遠記憶體容量,以離開CPU封裝401的記憶體通道介面提供用於DDR DRAM DIMM 452的多個DDR通道440。
圖4E顯示主管快速PCI卡或豎卡456上作為MSC的近記憶體以及例如PCM等遠記憶體NVRAM之聯合架構,快速PCI卡或豎卡係使用快速PCI電連接及在快速PCI匯流排454上使用快速PCI協定或不同的交易協定。處理器310主管整合記憶體控制器331,但是,在此聯合架構情形中,MSC控制器124與DRAM近記憶體及NVRAM遠記憶體設於卡或豎卡456上。
圖4F顯示主管使用DDR通道457的DIMM 458上作為MSC的近記憶體以及例如PCM等遠記憶體NVRAM之聯合架構。在此聯合架構中的近記憶體包括在各DIMM 458上的DRAM,在各DIMM 458上的DRAM作為對於相同DIMM 458上形成該特定DIMM的遠記憶體的PCM裝置的記憶體側快取。MSC控制器124與近及遠記憶體設於各DIMM 458上。在本實施例中,DDR通道457的多個記憶體通道設置成離開CPU封裝。本實施例的DDR通道457在DDR電連接上實施交易協定。
圖4G顯示混合分裂架構,其中,MSC控制器124設於處理器310上且近記憶體及遠記憶體共用相同的DDR匯流排410。使用DDR槽及NVRAM(例如PCM記憶體裝置),此配置使用DRAM為基礎的DDR DIMM 411a作為
表現成MSC的近記憶體,而以PCM為基礎的DIMM 411b(亦即,遠記憶體)設於DDR匯流排410的相同記憶體通道上。本實施例的記憶體通道同時地載送DDR及交易協定以將近記憶體及遠記憶體DIMM 411a和411b分別定址。
圖4H顯示作為記憶體側快取的近記憶體461a以DRAM為基礎的DDR DIMM的形式設於小背板或豎卡461上。記憶體側快取(MSC)控制器124設於豎卡的DDR及PCM控制器460中,控制器460具有二或更多記憶體通道,連接至小背板/豎卡461上的DDR通道470以及在例如差異記憶體鏈結等高性能互連462上互連至CPU。相聯遠記憶體461b座落於相同的小背板/豎卡461上且由使用DDR通道470及有NVRAM聚集(例如PCM裝置)的DIMM形成。
圖4I顯示經由DDR匯流排471而擴充至連接至CPU封裝401的DDR記憶體子系統及DIMM 464之作為記憶體容量擴充的聯合架構。對於此配置中其它的NVM為基礎的容量,作為MSC的近記憶體以DRAM為基礎的DDR DIMM 463a的形式,設於小背板或豎卡463上。MSC控制器124位於豎卡的DDR及PCM控制器460中,控制器460具有二或更多記憶體通道,經由例如差異記憶體鏈結等高性能互連462而連接至小背板或豎卡上的DDR通道470及連接至CPU。相聯遠記憶體463b座落於相同的小背板/豎卡463上且由使用DDR通道470及有NVRAM聚
集(例如PCM裝置)的DIMM 463b形成。
圖4J是作為記憶體側快取記憶體(MSC)的近記憶體以DRAM的形式設於各別及每一DIMM 465上的聯合架構。DIMM 465是在例如差異記憶體鏈結等高性能互連/通道462上,將CPU封裝401與位於DIMM上的MSC控制器124耦合。相聯遠記憶體座落於相同的DIMM 465上且由NVRAM(例如PCM裝置)形成。
圖4K顯示作為MSC的近記憶體以DRAM形式設於每一DIMM 466上的聯合架構。DIMM是在DDR通道470上以設於DIMM上的MSC控制器124連接至CPU封裝401。相聯遠記憶體座落於相同的DIMM 466上且由NVRAM(例如PCM裝置)形成。
圖4L顯示在DDR匯流排471上使用DDR DRAM為基礎的DIMM 464以形成作為MSC的必要記憶體之分裂架構。處理器310主管整合記憶體控制器331及記憶體側快取控制器124。例如PCM記憶體等NVRAM形成位於卡或豎卡467上的遠記憶體,使用高性能互連468,高性能互連468使用交易協定而通至CPU封裝401。主管遠記憶體的卡或豎卡467主管單一緩衝器/控制器,緩衝器/控制器控制該豎卡上連接的多個PCM為基礎的記憶體或多個PCM為基礎的DIMM。
圖4M顯示使用卡或豎卡469上的DRAM以形成作為MSC之必要的近記憶體的聯合架構。例如PCM記憶體裝置等NVRAM形成也設於卡或豎卡469上的遠記憶體,卡
或豎卡469使用高性能互連468以連至CPU封裝401。主管遠記憶體的卡或豎卡469主管單一緩衝器/控制器,緩衝器/控制器控制該豎卡469上多個PCM為基礎的裝置或多個PCM為基礎的DIMM,也整合記憶體側快取控制器124。
在上述某些實施例中,例如圖4G中所述的實施例,DRAM DIMM 411a及PCM為基礎的DIMM 411b設於相同的記憶體通道上。結果,相同的位址/控制及資料線集合用以連接CPU至DRAM及PCM記憶體。為了降低經由CPU網互連的資料交通量,在一實施例中,與PCM為基礎的DIMM在共同記憶體通道上的DDR DIMM配置成作為用於儲存在PCM為基礎DIMM中的資料之單一MSC。在此配置中,儲存在PCM為基礎的DIMM中的遠記憶體僅在相同記憶體通道之內的DDR DIMM近記憶體中被快取,藉以將記憶體交易局部化在該特定記憶體通道。
此外,為了實施上述實施例,系統位址空間可以邏輯上被細分在不同的記憶體通道之間。舉例而言,假使有四個記憶體通道,則系統位址空間的1/4分配給各記憶體通道。假使各記憶體通道設有一PCMS為基礎的DIMM及一DDR DIMM時,則DDR DIMM配置成作為用於該系統位址空間的1/4部份的MSC。
系統記憶體及大量儲存裝置的選擇取決於使用本發明的實施例之電子平台的型式。舉例而言,在個人電腦、平板電腦、筆記型電腦、智慧型電話、行動電話、特色電
話、個人數位助理(PDA)、可攜式媒體播放器、可攜式遊戲機、遊戲機台、數位相機、交換機、集線器、路由器、機上盒、數位視頻記錄器、或是有相當小型的大量儲存需求之其它裝置中,單獨使用NVRAM大量儲存器152A、或是使用NVRAM大量儲存器152A與快閃/磁性/光學大量儲存器152B的結合,實施大量儲存器。在具有相當大量儲存需求的其它電子平台中(例如大型伺服器),使用磁性儲存器(例如,硬碟機)或是磁性儲存器、光學儲存器、全像儲存器、大量儲存快閃記憶體、及NVRAM大量儲存器152A的任何組合,以實施大量儲存器。在此情形中,負責儲存的系統硬體及/或軟體可以實施各式各樣的智慧型持久儲存分配技術,以有效率或是其它有用的方式,在FM 151B/NVRAM大量儲存器152A與快閃/磁性/光學大量儲存器152B之間分配持久的程式碼及資料的區塊。
舉例而言,在一實施例中,高電力伺服器配置有近記憶體(例如DRAM)、PCMS裝置、及用於大量持久儲存的磁性大量儲存裝置。在一實施例中,筆記型電腦配置有近記憶體及PCMS裝置,PCMS裝置執行遠記憶體及大量儲存裝置的角色(亦即,如圖3所示般,邏輯上被分割以執行這些角色)。家用或辦公室桌上型電腦的一實施例類似於筆記型電腦配置,但是,也包含一或更多磁性儲存裝置以提供大量的持久儲存能力。
平板電腦或蜂巢式電話裝置的一實施例配置有PCMS
記憶體,但是潛在地無近記憶體及無增加的大量儲存器(為了成本/省電)。但是,平板電腦/電話可以配置有可移除的大量儲存裝置,例如快閃或PCMS記憶體條。
各種其它型式的裝置可以如上所述地配置。舉例而言,可攜式媒體播放器及/或個人數位助理(PDA)可以以類似於上述平板電腦/電話的方式配置,遊戲機台可以以類似於桌上型或膝上型電腦的方式配置。可以類似地配置的其它裝置包含數位相機、路由器、機上盒、數位視頻記錄器、電視、及汽車。
在本發明的一實施例中,在系統記憶體中的DRAM區塊由PCM取代。如先前所述,相對於DRAM,PCM以顯著更低的成本提供顯著增進的記憶體容量且是非依電性的。但是,例如不對稱的讀取相對於寫入性能、寫入循環耐受性極限以及其非依電性本質等某些PCM特徵使得其挑戰直接取代DRAM,而不會造成主要的軟體改變。下述本發明的實施例提供軟體透明方式以整合PCM,而且經由軟體增強也能夠有更新的用途。這些實施例促進記憶體子系統架構中成功的轉換並提供使用單一PCM池以結合記憶體及儲存器的方式,因而減輕平台中分別的非依電性儲存器繫結之需求。
圖5A中所示的特定實施例包含一或更多核心501及一或更多內部CPU快取記憶體503,各核心設有用於產生
記憶體請求的內部記憶體管理單元(MMU)502,一或更多內部CPU快取記憶體503根據指定的快取管理策略而儲存資料和程式碼線。如先前所述般,快取管理策略包括專有的快取管理策略(其中,在階層中存在於一特定快取階中的任何線不會存在於任何其它快取階中)或是包含的快取管理策略(其中,複製快取線儲存在快取階層的不同階)。習於此技藝者可良好地瞭解用於管理CPU快取記憶體503的特定快取管理策略,因此,將不會於此說明。本發明的基本原理不限於任何特定的快取管理策略。
也顯示於圖5A中的是本地代理器505,藉由產生用於記憶體請求的記憶體通道位址(MCA),代理器505提供對MSC 510的存取。本地代理器505負責管理指定的記憶體位址空間以及解決與該記憶體空間有關的記憶體存取衝突。因此,假使任何核心需要存取給定的位址空間時,其將送出請求給本地代理器505,本地代理器505接著將請求送至該特定MMU 502。在一實施例中,每一MMU 502分配到一本地代理器505;但是,在某些實施例中,單一本地代理器505可以服務一個以上的記憶體管理單元502。
如圖5A所示般,MSC 510配置在PCM為基礎的遠記憶體519之前。MSC 510管理近記憶體518的存取,以及,於適當時(例如,當請求無法由近記憶體518服務時)遞送記憶體存取請求(例如,讀取及寫入)給遠記憶體控制器521。MSC 510包含快取控制單元512,快取控
制單元512操作以回應標籤快取記憶體511,標籤快取記憶體511儲存識別含於近記憶體518內的快取線。在操作上,當快取控制線512決定記憶體存取請求由近記憶體518服務時(例如,回應快取命中),其產生近記憶體位址(NMA)以識別儲存在近記憶體518之內的資料。近記憶體控制單元515解譯NMA以及回應地產生電訊號以存取近記憶體518。如先前所述,在一實施例中,近記憶體是動態隨機存取記憶體(DRAM)。在此情形中,電訊號包含列位址選通(RAS)及行位址選通(CAS)訊號。但是,應注意本發明的基本原理不限於DRAM用於近記憶體。
確保軟體透明記憶體應用的另一組件是最佳化的PCM遠記憶體控制器521,PCM遠記憶體控制器521管理PCM遠記憶體530特徵,並仍提供所需的性能。在一實施例中,PCM控制器521包含位址間接表520,位址間接表將快取控制單元512產生的MCA轉譯至PDA,PDA被用以將PCM遠記憶體530直接定地址。這些轉譯以典型上為5KB的「區塊」粒度發生。在一實施例中,當遠記憶體控制器521連續地移動PCM區塊穿過PCM裝置位址空間以確保沒有導因於對任何特定區塊的高頻率寫入之耗損的高熱點時,要求轉譯。如先前所述般,此技術有時於此稱為「磨損等級化」
因此,MSC 510由快取控制單元512管理,快取控制單元512允許MSC 510吸收、合併及過濾對PCM遠記憶
體530的交易(例如讀取及寫入)。快取控制單元512管理近記憶體518與PCM遠記憶體530之間所有的資料移動以及一致性需求。此外,在一實施例中,MSC快取控制器512對CPU接口以及提供傳統DRAM為基礎的記憶體子系統中使用的標準的同步載入/儲存介面。
現在在圖5A中所示的架構的環境之內,說明舉例說明的讀取及寫入操作。在一實施例中,讀取操作將首先抵達快取控制單元512,MSC控制器將執行查詢以決定被請求的資料是否存在(例如,使用標籤快取記憶體511)。假使存在時,則其將資料歸還給請求的CPU、核心501或I/O裝置(未顯示)。假使資料不存在時,則快取控制單元512將請求與系統記憶體位址(此處也稱為記憶體通道位址或MCA)傳送至PCM遠記憶體控制器521。PCM遠記憶體控制器521將使用位址間接表520以將位址轉譯成PDA以及引導讀取操作至PCM的此區域。在從PCM遠記憶體530接收請求的資料時,PCM遠記憶體控制器521將請求的資料歸還給快取控制單元512,快取控制單元512將資料儲存在MSC近記憶體518中,也將資料傳送給請求的核心501、或I/O裝置。對於此資料的後續請求可以從MSC近記憶體518直接服務直到其由某些其它的PCM資料取代為止。
在一實施例中,記憶體寫入操作也首先進行至快取控制單元512,快取控制單元512將其寫入MSC近記憶體518中。在本實施例中,當收到寫入操作時,資料不會被
直接傳送至PCM遠記憶體530。舉例而言,僅當儲存資料的MSC近記憶體518中的位置為了不同系統記憶體位址而必須再被用於儲存資料時,資料才會被送至PCM遠記憶體530。當此情形發生時,快取控制單元512公告資料目前不在PCM遠記憶體530中,並將因而從近記憶體518中取出它並將其送至PCM記憶體控制器521。PCM記憶體控制器521為了系統記憶體位址而查詢PDA,然後將資料寫至PCM遠記憶體530。
在一實施例中,由工作量記憶體需求以及近和遠記憶體性能規定MSC近記憶體518的大小。對於DRAM為基礎的MSC,大小可以設定為工作量記憶體覆蓋區或是PCM遠記憶體530大小的十分之一。相較於目前的處理器/系統架構中所見之習知的快取記憶體,此MSC是很大的。舉例而言而非限定,對於128GB的PCM遠記憶體大小而言,MSC近記憶體的大小大至16GB。
圖5B顯示MSC 510的一實施例有關的其它細節。本實施例包含負責命令及定址的邏輯單元集,邏輯單元集包含用於緩衝命令/位址之命令緩衝追蹤單元542以及快取存取模式檢查單元544,快取存取模式檢查單元544選取MSC操作模式以回應來自MSC範圍暫存器(RR)545的控制訊號。於下說明多個舉例說明的操作模式。簡而言之,這些包含近記憶體用於傳統的快取角色中的模式以及近記憶體518形成部份系統記憶體的模式。標籤檢查/命令排程器550使用來自標籤快取記憶體511的標籤以決定
特定的快取線是否儲存在近記憶體518中以及近記憶體控制器515是否產生通道位址訊號(例如,CAS及RAS訊號)。
本實施例也包含負責資料路由及處理的邏輯單元集,所述邏輯單元集包含用於儲存從近記憶體取出的資料或是儲存至近記憶體的資料之資料緩衝器546的集合。在一實施例中,也包含預取出資料快取記憶體547,以用於儲存從近記憶體及/或遠記憶體預取出的資料。但是,預取出資料快取記憶體547是選加的且對於遵守本發明的基本原理並非必須。
錯誤校正碼(ECC)產生器或檢查器單元552產生及檢查錯誤校正碼,以確保寫至或讀自記憶體的資料沒有錯誤。如下所述,在本發明的一實施例中,錯誤校正碼產生器或檢查器單元552被修改以儲存快取標籤。習於此技藝者瞭解特定的錯誤校正碼,因此,於此不作詳述。通道控制器553將近記憶體518的資料匯流排耦合至MSC 510以及產生用於存取近記憶體518所需的電發訊(例如,用於DRAM近記憶體的RAS及CAS發訊)。
也顯示於圖5B中的是遠記憶體控制器介面548,用於將MSC 510耦合至遠記憶體。特別地,遠記憶體控制介面548產生遠記憶體定址所需的MCA,以及在資料緩衝器546與遠記憶體之間傳輸資料。
如同所述,相較於目前的處理器/系統架構中所見的習知快取記憶體,在一實施例中採用的近記憶體518是非
常大的。結果,維持系統記憶體位址轉譯成近記憶體位址的標籤快取記憶體511也很大。儲存及查詢MSC標籤的成本是建立大快取記憶體的顯著障礙。因此,在本發明的一實施例中,使用創新的設計以解決此議題,所述設計將快取標籤儲存在分配在用於錯誤校正碼保護的MSC之儲存器之內,藉以基本地移除標籤儲存成本。
本實施例大致地顯示於圖5C中,圖5C顯示整合的標籤快取記憶體及錯誤校正碼產生/檢查單元554,其用於儲存/管理快取標籤、儲存錯誤校正碼資料、及執行錯誤校正碼操作。如同所示,當執行標籤檢查操作時(例如,決定特定的資料區塊是否儲存在近記憶體快取記憶體518之內),根據請求,儲存的標籤提供給標籤檢查/命令排程器550。
圖5D顯示舉例說明之資料524及對應的錯誤校正碼位元523和標籤522的集合之組織。如同所示,標籤522與錯誤校正碼位元523共同位於標籤快取/錯誤校正碼產生/檢查單元554的記憶體中(例如,在一實施例中之DDR DRAM)。在本實例中,全部64位元組的數個區塊被讀入標籤快取/錯誤校正碼產生/檢查單元554中。錯誤校正碼產生/檢查單元554a使用資料524而產生錯誤校正碼以及將產生的錯誤校正碼以及與資料相關連的現有錯誤校正碼位元523相比較。在本實例中,對64位元組的資料524產生4位元組錯誤校正碼。但是,本發明的基本原理不限於任何特定型式或大小的錯誤校正碼。此外,應注
意,此處廣泛地使用「資料」一詞以意指可執行的程式碼及資料,程式碼及資料都可以儲存在圖5D中所示的資料儲存器中。
在一實施例中,以圖5D中所示的位元指派,使用3位元組(24位元)標籤522。具體而言,位元00至16是提供快取線的上位址位元的位址位元。對於具有56位元(例如,SPA[55:00])的系統位址,位元00至16對映至系統位址的位元55-29,允許512MB的最小快取快取記憶體尺寸。返回至3位元組標籤,位元17-19保留;位元20-21是指示位址,提供快取線的遠端CPU快取有關的資訊(例如,提供關於線被快取的其它CPU之標示);位元21-22表示快取線的目前狀態(例如,00=乾淨;01=骯髒;10及11=未使用);以及,位元23表示快取線是否有效(例如,1=有效;0=無效)。
如上所述般使用直接對映快取架構,這允許從系統記憶體位址直接取出近記憶體位址或是免除MSC 510被讀取前查詢標籤儲存器的潛時成本,因而顯著地增進性能。此外,由於與讀自MSC的資料之錯誤校正碼檢查相平行地檢查快取標籤以決定MSC 510是否具有被要求的資料,所以,其耗費的時間也被免除。
在某些狀態之下,將標籤與資料一起儲存可以產生用於寫入的議題。寫入首先讀取第一資料,以確保其未對某些其它位址重寫資料。在每一寫入之前此讀取將變成昂貴的。本發明的一實施例使用維持最近被存取的近記憶體位
址(NMA)之骯髒線標籤快取記憶體。由於很多寫入目標最近存取位址,所以,合理的小標籤快取記憶體得到有效的命中率以在寫入之前過濾大部份的讀取。
圖5E顯示包含PCM遠記憶體控制器521及PCM裝置530a-i的集合之PCM DIMM遠記憶體519的一實施例之其它有關細節。在一實施例中,在系統記憶體與儲存器使用之間,動態地共用單一池的PCM裝置530a-i。在本實施例中,整個PCM裝置530a-i可以再分成4KB大小的「區塊」。PCM描述符表(PDT)565辨識使用各PCM區塊作為記憶體或儲存器。舉例而言,PDT的各列代表設有識別各區塊的使用(例如,1=記憶體;0=儲存器)之特定行的特定區塊。在本實施例中,初始系統配置在儲存器與記憶體使用之間分割PCM裝置530a-i之內的PCM區塊(亦即,藉由程式化PDT 565)。在一實施例中,使用相同的表以排除不良的區塊以及提供空白區塊用於磨損等級化操作。此外,PDT 565也包含各PCMS區塊對映至軟體使用的「邏輯」區塊位址。在系統記憶體的情形中,邏輯區塊位址與MCA或SPA相同。無論PCMS區塊是否因磨損等級化而被移除時,需要此關連性以更新位址間接表(AIT)563。當此發生時,由軟體使用的邏輯區塊位址必須被對映至不同的PCMS裝置位址(PDA)。在一實施例中,此對映被儲存在AIT中且在每一磨損等級移動時更新。
如同所述,PCM控制器521包含系統實體位址
(SPA)對PCM對映器556,對映器556操作以回應磨損管理單元555及位址間接單元563以將SPA對映至PCM區塊。在一實施例中,磨損管理單元555實施磨損等級化演繹法以負責PCM裝置530a-530i的儲存胞在太多寫入及/或抹拭存取之後開始磨耗之事實。舉例而言,藉由以低循環計數來強制資料區塊偶爾移動並因而允許高循環資料區塊被置於儲存低循環資料區塊的記憶體胞中,磨損等級化將寫入及抹拭散佈於PCM裝置的記憶體胞。典型地,大部份的區塊未循環,但是高循環計數區塊最可能故障且磨損等級化會交換高循環計數區塊與低循環計數區塊的位址。磨損管理單元555使用一或更多計數器及暫存器以追蹤循環計數(例如,每當偵測到循環時計數器增量一且結果儲存於暫存器集中)。
在一實施例中,位址間接表563包含位址間接表(AIT),位址間接表含有寫入操作應被導至的PCM區塊的標示。位址間接表被用以在記憶體與儲存器使用之間自動地移除區塊。從軟體觀點而言,對所有區塊的存取使用傳統的記憶體載入/儲存語義(亦即,磨損等級化及位址間接操作對軟體透明地發生)。在一實施例中,位址間接表用以轉譯由軟體產生的系統實體位址(SPA)至PCMS裝置位址(PDA)。當需要均勻地磨耗PCMS裝置時需要此轉譯,資料將需要在PCMS裝置位址(PDA)空間中四處移動以避免任何熱點。當此移動發生時,在系統實體位址(SPA)與PCMS裝置位址(PDA)之間的關係將改變
且AIT將被更新以反應此新的轉譯。
在系統實體位址(SPA)至PCM對映之後,排程器557將基本PCM操作(例如讀取及/或寫入)排程至PCM裝置530a-i,以及,PCM協定引擎558產生用於執行讀取/寫入操作所需的電發訊。錯誤校正碼562執行錯誤偵測及校正操作,以及,資料緩衝器561暫時地緩衝讀自或寫至PCM裝置530a-i的資料。即使在非預期的電力故障事件中,持久寫入緩衝器559被用以固持被確保回寫至PCMS的資料(例如,使用非依電性儲存器實施時)。包含清除支援560以週期地及/或根據指定的資料清除演繹法(舉例而言,在持久寫入緩衝器達到指定的臨界值時),將持久寫入緩衝器清除至PCMS。
在一實施例中,MSC 510自動地安排對PCM遠記憶體控制器521的儲存器存取以及對MSC快取控制單元512的記憶體存取之路徑。進至PCM控制器521的儲存器存取被視為規律讀取以及寫入,以及,通常應用此處所述的位址間接及磨損等級化機。當資料需要在儲存器與記憶體之間移動時,在實施的本發明的一實施例中,使用另外的最佳化。由於使用共同PCM裝置503a-i,所以,藉由簡單地改變轉譯表(例如AIT)中的指標,即可免除或延遲資料移動。舉例而言,當資料從儲存器傳送至記憶體時,識別特定實體PCM儲存器位置中的資料之指標被更新,以標示相同的實體PCM儲存位置現在是系統記憶體中的記憶體位置。在一實施例中,這是由硬體以軟體透明的方
式達成,以提供性能及功率優點。
除了操作的軟體透明模式之外,快取控制單元512的一實施例提供如MSC範圍暫存器(RR)545標示的操作之交替模式。這些操作模式包含但不限於下述:
1)用於儲存器等級應用之PCM記憶體的直接存取:此用途也將要求快取控制單元512確保呈交給PCM遠記憶體519的寫入被真正地付予持久狀態。
2)近記憶體518的混合使用,將其部份曝露給軟體直接使用,並將其餘部份維持為MSC。當部份近記憶體518曝露給軟體直接使用時,該部份在系統位址空間之內是直接可定址的。這允許某些應用將它們的記憶體分配在高性能小區(近記憶體518)與相對較低性能的區塊區(遠記憶體530)之間明確地分裂。相反地,在MSC之內被分配為快取記憶體的部份未形成部份系統位址空間(但是,如同此處所述地,取代地作為用於遠記憶體530的快取記憶體)。
如同先前所述般,MSC架構被界定為數個不同的系統分割方式是可能的。這些方式落在二寬廣的大類:
(1)分裂架構:在此設計中,快取控制單元512位於CPU中及攔截所有系統記憶體請求。有二個分開的介面,從離開CPU的MSC至近記憶體(例如,DRAM)及遠記憶體(例如,PCM)。各介面為特定型式的記憶體而被修整且各記憶體以性能及容量的觀點而被獨立地比例化。
(2)聯合架構:在此設計中,單一記憶體介面離開處理器且所有的記憶體請求被送至此介面。快取控制單元512與近記憶體(例如,DRAM)及遠記憶體(例如,PCM)子系統在此單一介面上一起結合在CPU外部。在一實施例中,此記憶體介面被修整以符合CPU的記憶體性能要求,以及支援交易、失序協定。在這些介面中的各介面上,以「聯合」方式符合近及遠記憶體的要求。
在上述分類的範圍之內,數種不同的部份選項是可行的,其中某些說明如下:
(1)分裂實例
近記憶體:DDR5 DIMM
近記憶體介面:一或更多DDR5通道
遠記憶體:快速PCI(PCIe)卡上的PCM控制器/裝置
遠記憶體介面:x16 PCIe,第3代
(2)聯合實例:
CPU記憶體介面:一或更多KTMI(或QPMI)通道在豎卡上設有MSC/PCM控制器的近/遠記憶體
離開MSC/PCM控制器的近記憶體介面:DDR5介面
離開MSC/PCM控制器的遠記憶體:PCM裝置介面
如上所述,二階記憶體階層可以用於導入例如PCM等快速非依電性記憶體作為系統記憶體並使用非常大的DRAM為基礎的近記憶體。近記憶體可以作為硬體管理的
快取記憶體。但是,某些應用不是硬體快取友善的,因此,將從使用此記憶體的替代方式得利。由於在任何時間有數種不同的應用在伺服器上運行,所以,本發明的一實施例允許多種使用模式同時被賦能。此外,一實施例對這些使用模式中的各模式提供控制近記憶體的分配之能力。
在一實施例中,快取控制單元512提供以下模式使用近記憶體。如同先前所述般,在一實施例中,目前的操作模式由儲存在MSC範圍暫存器(RR)545中的作業碼指定。
(1)回寫快取模式:在此模式中,所有或部份近記憶體518作為用於PCM遠記憶體530的快取記憶體。雖然在回寫模式中,每一寫入操作最初與近記憶體518有關(假定寫入被導至的快取線存在於快取記憶體中)。僅當在近記憶體518之內的快取線要由另一快取線取代時,才執行對應的寫入操作以更新PCM遠記憶體530(與下述的直接寫入模式相反,在直接寫入模式中,每一寫入操作立即被傳播至遠記憶體530)。
在一實施例中,讀取操作將首先抵達快取控制單元512,快取控制單元512將執行查詢以決定被請求的資料是否存在於近記憶體518中(例如,利用標籤快取記憶體511)。假使存在時,其將資料歸還給請求的CPU、核心501或I/O裝置(未顯示於圖5A中)。假使資料不存在時,則MSC快取控制單元512將請求與系統記憶體位址一起送至PCM遠記憶體控制器521。PCM遠記憶體控制
器521將系統記憶體位址轉譯成PCM實體裝置位址(PDA)及將讀取操作導引至遠記憶體530的此區域。如先前所述般,此轉譯利用位址間接表(AIT)563,PCM控制器521使用位址間接表(AIT)563以在系統記憶體位址與PCM實體裝置位址(PDA)之間轉譯。在一實施例中,位址間接表(AIT)被更新作為磨損等級化演繹法的一部份,以散佈記憶體存取操作及藉以降低PCM FM 530上的磨損。
在從PCM FM 530接收被請求的資料時,PCM FM控制器521將被請求的資料歸還給快取控制單元512,MSC控制器512將資料儲存在MSC近記憶體518中以及也將資料送至請求處理器核心501、或I/O裝置(未顯示於圖5A中)。由近記憶體518直接服務對此資料的後續請求直到其由某些其它PCM FM資料取代為止。
在一實施例中,記憶體寫入操作也首先進行至快取控制單元512,快取控制單元512將它寫入作為FM快取記憶體的MSC近記憶體518。在本實施例中,當收到寫入操作時,資料不會被直接送至PCM FM 530。舉例而言,僅當儲存資料之作為FM快取記憶體的MSC近記憶體518中的位置必須被再用於儲存用於不同的系統記憶體位址之資料時,資料被送至PCM FM 530。當此發生時,快取控制單元512注意資料目前不在PCM FM 530中且將因而從作為FM快取記憶體的近記憶體518中取出它以及將它送至PCM FM控制器521。PCM控制器512為了系統記憶體位
址而查詢實體裝置位址(PDA),然後將資料寫至PCMFM 530。
(2)近記憶體旁通模式:在此模式中,所有讀取及寫入繞過作為FM快取記憶體的NM518以及直接前進至PCM遠記憶體530。舉例而言,當應用不是快取友善或或是要求資料依快取線的粒度被付予持久性時,可以使用此模式。在一實施例中,由處理器快取記憶體503執行的快取及作為FM快取記憶體的NM518彼此獨立地操作。結果,資料可以在作為FM快取記憶體的NM518中被快取,其在處理器快取記憶體503中未被快取(以及,在某些情形中,不被允許在處理器快取記憶體503中被快取),反之亦然。因此,在處理器快取記憶體503中被標示為「不可快取」的某些資料可以在作為FM快取記憶體的NM518之內被快取。
(3)近記憶體讀取-快取旁通寫入模式:這是上述模式的變異,其中,允許從PCM遠記憶體519讀取持久資料的快取(亦即,對於唯讀操作,在MSC 510中持久資料被快取)。當大部份的持久資料是「唯讀」時及應用使用是快取友善時,這是有用的。
(4)近記憶體讀取-快取直接寫入模式:這是先前模式的變異,其中,除了讀取快取之外,寫入命中也被快取。對於MSC近記憶體518之每一寫入造成對PCM遠記憶體530寫入。因此,由於快取記憶體的直接寫入本質,所以,仍然確保快取線持久性。
(5)近記憶體直接存取模式:在此模式中,所有或部份近記憶體對軟體是直接可見的且形成部份系統記憶體空間。此記憶體完全在軟體控制之下。從PCM遠記憶體519至近記憶體的此區域之任何資料移動要求明確的軟體拷貝。此設計產生用於軟體之不均勻的記憶體位址(NUMA)記憶體域,其中,相對於PCM遠記憶體530,其從近記憶體518得到更高的性能。對於對某些資料結構要求很快速的存取之某些高性能計算(HPC)及圖形應用,採用此用途。此近記憶體直接存取模式等於將某些快取線「釘」在近記憶體中。在較大的、多路、集合相聯快取記憶體中,有效地達成此釘住。
下述表A總結各上述操作模式。
用以實施上述操作模式的處理器及晶片組組件包含下述:
(1)記憶體側快取控制單元512,管理二層記憶體(2LM)階層中的近記憶體。
(2)記憶體側快取記憶體510中的範圍暫存器545的集合(請參見圖5B),決定用於各上述操作模式的系統位址範圍。
(3)確認從PCM遠記憶體519至MSC控制單元515之寫入完成的機制。
(4)使近記憶體518中的線無效之機制。
(5)清除引擎,將骯髒線逐出至PCM及在近記憶體空間的指定區中無效。
在一實施例中,用於各使用模式的記憶體範圍在系統位址空間中是連續的。但是,多個、未連續的區域可以使用相同模式。在一實施例中,在MSC範圍暫存器545之內的各模式範圍暫存器提供下述資訊:(1)操作模式(例如,回寫、近記憶體旁通模式、等等)(2)在系統位址空間中的範圍基礎(例如,2MB粒度或更大);以及,(3)識別區域大小之範圍遮罩領域。
在一實施例中,被支援的模式數目是特定實施的,但假定僅有一連續的系統位址範圍可取得以用於各操作模式。假使指定近記憶體直接存取範圍暫存器時,則假定這將被對映至從近記憶體位址空間的底部開始之連續區。此連續區必須小於近記憶體的大小。此外,假使正使用任何
快取模式時,則直接存取區尺寸必須小於近記憶體大小以允許適當的快取記憶體大小用於所要求的性能。用於各種模式的此近記憶體分配必須可由使用者配置。
總結,根據下述操作集合,實施本發明的一實施例:
(1)當任何讀取或寫入存取到達記憶體側快取控制單元512時,其檢查範圍暫存器545(圖5B)以決定目前的操作模式。
(2)對於任何讀取快取/寫入旁通存取,快取控制單元512檢查以知道位址目前是否正被快取。假使是,則在將寫入完成回傳給來源時,其必須使線無效。
(3)對於任何寫入旁通直接PCM操作,快取控制單元512等待從PCMFM控制器521回來的完成,以確保寫被交付給全區可見緩衝器。
(4)對於近記憶體中直接存取模式空間的任何讀取或寫入被導引至適當的近記憶體區。沒有交易被送至PCM記憶體。
(5)增加或降低任何現有區域或是增加新區域之範圍暫存器配置中的任何改變將清求適當的被快取區清除至PCM。舉例而言,假使軟體希望藉由降低回寫快取區而增加直接存取模式區的大小,則藉由首先逐出及無效化近記憶體區的適當部份,然後改變近記憶體直接存取模式範圍暫存器,其可以如此執行。快取控制單元512將接著知道未來的快取將對較小的近記憶體位址空間執行。
圖6A中顯示本發明的一特定實施例,其中,在多個
MSC之中分割系統實體位址(SPA)空間。在所示的實施例中,MSC快取記憶體654及控制器656與SPA區667a相關連;MSC快取記憶體655及控制器657與SPA區667b相關連;MSC快取記憶體661及控制器663與SPA區667c相關連;以及,MSC快取記憶體660及控制器662與SPA區667d相關連。顯示二個CPU 670和671,各CPU分別具有四核心650和651、以及本地代理器652和653。二CPU 670和671分別經由遠記憶體介面659和665而耦合至共同遠記憶體控制器666。
因此,在圖6A中,整個SPA記憶體空間再分割成多個區域,而各區域與特定的MSC及控制器相關連。在本實施例中,給定的MSC具有非連續的SPA空間分配,但沒有二個MSC具有重疊的SPA空間。此外,MSC與非重疊的SPA空間相關連且不要求MSC之間的相干性技術。
在圖6A中所示的架構上,採用任何上述近記憶體模式。舉例而言,各MSC控制器656-657、662-663可以配置成以回寫快取模式、近記憶體旁通模式、近記憶體讀取-快取寫入旁通模式、近記憶體讀取-快取直接寫入模式、或是近記憶體直接存取模式操作。如同先前所述般,為各MSC 610,在快取記憶體655之內指定特定模式。
在一實施例中,不同的MSC同時地實施不同的操作模式。舉例而言,MSC控制器656的範圍暫存器指定近記憶體直接存取模式,MSC控制器657的範圍暫存器指定回寫快取模式,MSC控制器662的範圍暫存器指定讀取快取
/寫入旁通模式,MSC控制器663指定讀取快取/直接寫入模式。此外,在某些實施例中,各別的MSC同時實施不同的操作模式。舉例而言,MSC控制器656配置成對某些系統位址範圍實施近記憶體直接存取以及對其它系統位址範圍實施近記憶體旁通模式。
當然,前述結合僅是說明方式,其中,MSC控制器獨立地程式化。本發明的基本原理不限於這些或任何其它結合。
如同上述某些實施例有關的說明所述般(例如,參考圖4G所述的實施例),MSC及其MSC控制器配置成在與負責該特定SPA範圍之PCM DIMM相同的記憶體通道(例如,相同的實體DDR匯流排)上操作。結果,在本實施例中,發生在指定的SPA之內的記憶體交易會在相同的記憶體通道上之內區域化,藉以降低經由CPU網路互連的資料交通。
圖6B提供系統記憶體位址地圖620、近記憶體位址地圖621、及PCM位址地圖622如何根據本發明的實施例配置之圖形說明。如同先前所述,MSC控制器606以範圍暫存器(RR)605識別的模式操作。系統記憶體位址地圖620具有被分配用於近記憶體直接存取區602的第一區、被分配用於近記憶體旁通區603模式的第二區、以及被分配用於回寫快取區605的第三區。如同近記憶體位址地圖621所示般,MSC控制器606提供對近記憶體的存取,記憶體位址地圖621包含被分配給回寫快取區608的第一
區、被分配給近記憶體直接存取區609的第二區。如同所示,近記憶體快取旁通操作被直接提供給根據PCM位址地圖622操作的PCM控制器610,PCM位址地圖622包含近記憶體旁通區611(用於近記憶體旁通模式)以及回寫快取區612(用於回寫快取模式)。結果,根據MSC控制器實施的特定模式,系統記憶體位址地圖620、近記憶體地圖621以及PCM位址地圖622被再分割。
圖6C及6D顯示在本發明的一實施例中使用的定址技術(已大致地說明某些技術)。特別地,圖6C顯示系統實體位址(SPA)675如何對映至近記憶體位址(NMA)或PCM裝置位址(PDA)。特別地,SPA首先由處理器之內的解碼邏輯676解碼,以識別本地代理器605(例如,負責已解碼位址空間的本地代理器)。與被選取的本地代理器605相關連的解碼邏輯677又將SPA 675(或其部份)解碼,以產生識別被分配給該特定SPA空間的適當MSC快取控制器612的記憶體通道位址(MCA)。然後,在678,被選取的快取控制器612將記憶體存取請求對映至的近記憶體,在680的交插操作選加地跟隨在後,或者,替代地執行在679之選加的交插操作,將PCM遠記憶體控制器對映至PCM裝置位址PDA(例如,使用如上所述的間接位址及磨損管理)之681跟隨在後。
選加的交插處理的一實施例顯示在圖6D中,圖6D顯示如何使用交插以將軟體頁分散遍佈於多個MSC及PCM位址空間中。在圖6D中所示的實例中,在SPA空間
之內的記憶體頁682-683由快取線交插邏輯684交插以在MCA空間之內產生二組交插的線。舉例而言,來自記憶體頁682-683的所有奇數線(例如,線1、3、5、等等)被送至第一MCA空間685,以及,來自記憶體頁682-683的所有的偶數線(例如,線2、4、6、等等)被送至第二MCA空間686。在一實施例中,頁是5K位元組的頁,但是,本發明的基本原理不限於任何頁尺寸。然後,根據間接位址表(AIT)操作的PCM控制器687-688及磨損管理邏輯重新安排PCM裝置位址(PDA)記憶體空間內的快取線(如上所述)。此本質的交插可以用以將工作量分散至MSC及/或PCM裝置(例如,不均勻記憶體位址(NUMA)的替代)。
電腦系統的記憶體子系統消耗整個系統電力的可觀數量,特別是在具有大記憶體容量的伺服器中。在多階記憶體子系統(例如,如此處所述的具有MSC之2階子系統)中,由於MSC的尺寸是容納可在伺服器上執行的所有工作量中的最大工作量,所以,大部份的電力集中在例如PCM(或者,更具體而言,PCMS)等大的、快速NVM儲存器之前的依電性(例如,DRAM為基礎的)MSC中。由於被執行的工作量及快取需求隨著甚至是日的時程而顯著地改變,所以,使這些快取記憶體保持被供電將對負載
線具有大的衝擊。
下述某些實施例假定具有MSC的二階記憶體階層,包含清除引擎,(1)以特定方式逐出骯髒快取線以及使它們無效(但是,本發明的基本原理可以用在任何多階記憶體階層的環境中);(2)動態地監視快取使用;(3)允許軟體指定電力管理策略;及(4)使依電性記憶體為基礎的MSC的指定部份未作動。
在多階記憶體階層中的MSC是集合相聯的、回寫快取記憶體。當此快取記憶體中的路徑數目改變時,於此說明二特定實施例:(1)多路集合相聯快取記憶體具有8-16範圍的路徑數目;以及(2)1路集合聯集快取記憶體也稱為直接對映快取記憶體。
清除引擎701
如圖7A所示,在多階記憶體子系統中的清除引擎701的一實施例設於快取控制單元512中且具有數個不同的用途,其中一用途是如此處所述的動態快取電力管理。在本實施例中,軟體750致動清除引擎701以實施特定的電力管理策略。這些策略包含(但不限於)下述:
(1)軟體750識別為未作動或再作動的記憶體側快取記憶體510的特定部份。在一實施例中,所述部份被識別為特定數目的路徑。替代地,或者增加地,這被指定為
快取記憶體的特定部份(例如50%)。
(2)軟體750指定清除引擎701可監視及動態地決定要未作動或再作動的快取記憶體量之使用準則,例如平均未中率或佔有。例如,如果特定區的平均未中率上升超出特定臨限,則此區可以未動作。
雖然下述說明聚焦於部份快取記憶體的未作動,但是,習於此技藝者將瞭解使用相同的基本技術可以執行動態再致動。
在一實施例中,策略一旦由軟體750設定於清除引擎701上時,清除引擎藉由首先決定要被未作動的快取記憶體的特定部份(例如,使用如上所述的未中率或是清除軟體所識別的區域),而實施策略。然後,清除引擎701序地讀取此區域(或多個區域)、掃描各快取線、於需要時將骯髒快取線逐出至PCM記憶體、以及一旦各線被服務時使其無效。在一實施例中,清除引擎維持清除位址計數器702,清除位址計數器702維持目前正被未作動的MSC的區域的「設定位址」。如下所述,在一實施例中,設定位址導自軟體產生以存取記憶體的系統位址。
在一實施例中,MSC將具有計數器730以動態地監視快取記憶體的使用。舉例而言,藉由維持某些關鍵準則的運行平均而達成此監視,關鍵準則的某些實例包含快取記憶體佔有及運行平均未中率:
(1)快取記憶體佔有:快取記憶體分割成多個區域。在多路聯合快取記憶體中,舉例而言,區域被界定為路徑。每當新線被分配在區域中時,區域佔有計數器增量。當線在區域中位移或無效時,區域佔有計數器減量。
(2)運行平均未中率:對於指定的時間間隔,由清除引擎701計算區域的平均未中率。在本實施例中,軟體750提供未中率臨界值,清除引擎701使用此臨界值以使各快取記憶體區能夠未作動。
有各種特定實施設計能夠執行快取記憶體未作動。此處的主要的概念在於將快取記憶體的指定區置於可能的最低的電力狀態並仍然允許合理的快速再致動。典型地,這意指電力不會被斷電,但是,在一實施例中,時計會被禁能(或是減速)以及用於快取記憶體區的自行更新被未作動。注意,在這些情形中,再致動會花費一些時間,且在背景中進行,而快取記憶體的其它部份仍然是活動的。
未作動區的粒度將取決於特定實施,假使DRAM用於MSC時,則為DRAM架構。習於此技藝者將瞭解多個可能的設計,包含限制區域粒度至獨立「分級」。記憶體模組上的各單一「分級」形成與其它分級相同的記憶體組件配置。通常使用的記憶體模組具有單一分級記憶體、雙分級記憶體、或四分級記憶體(但是本發明的基本原理不限於任何特定數目的分級)。
現在將說明本發明的一特定實施例的操作細節。但是,應瞭解本發明的基本原理不限於此特定集合的作業參數。舉例而言,本發明的基本原理不限於任何特定的位址或資料格式。
在一實施例中,由軟體750指定快取記憶體未作動策略給清除引擎701。直接對映快取記憶體的特定情形是更複雜的情形,所以,於此說明此特定情形。習於此技藝者將容易使用此說明而衍生出用於多路聯合快取記憶體實施的配置。
(A)首先,如圖7A所示,識別(例如由軟體750)要被未作動的快取記憶體區740。假使一半的快取記憶體被指定時,則設定位址將下降1位元。舉例而言但非限定,在具有64B的線尺寸、及1TB或40b的系統位址空間之1GB直接對映快取記憶體的實例中,設定位址是24b寬且標籤(Tag)(用於64B線)將是10b寬。假使一半快取記憶體被未作動且其下降至512MB時,則設定位址現在將為23b且標籤尺寸將增加至11b。
(B)其次,指定用於未作動的區域粒度、平均間隔及未中臨界值。舉例而言但非限定,未中臨界值在100ms的平均間隔時為0.01,用於未作動的區域粒度為快取記憶體的1/4。再一次地,根據區域大小,設定位址及標籤將適當地改變。一旦策略設定且清除引擎701被賦能時,則其等待適當的觸發以啟動其工作。
圖7A顯示特定實施,其中,為了未作動而識別快取
記憶體的上1/2。根據此實施,清除引擎701執行下述操作:
(1)選取直接對映的MSC 510的上半部740以清除。
(2)將清除位址計數器702設定(設定位址)於快取記憶體的頂部,以及,開始連續地逐出及無效化各線。隨著它進行經過各線,清除位址計數器702將減量。圖7A提供特定實例,其中,對被識別為被清除區710的區域成功地執行未作動,以及,顯示仍然需要執行未作動之等候清除區711(也在MSC的上半部之內)。
(3)在一實施例中,為了確保在清除位址計數器上方的任何快取記憶體區710維持未被使用,遵守下述規則:
a.在清除位址計數器702上方的任何CPU讀取位址將使用精簡的設定位址(在我們的實施例中這將為23b設定位址)而自動地僅自動地查詢快取記憶體的下半部。這由圖7A中的紅線顯示。
b.儲存在標籤檢查單元550之內的標籤將是容納最小的快取記憶體之最大可能。在圖7A中所示的特定實例中,讀取位址操作將檢查11b標籤以確保正確的比對。
c.假使有回應操作之快取未中,則分配將僅發生在MSC的底部741。
d.假使讀取操作是在清除計數器位址702之下
但是在快取記憶體的底部上方(亦即,在等待清除區711中),在一實施例中,則將使用12b設定位址以執行一般的查詢以及使用10b標籤以執行一般比對。
e.假使有未中,則其將簡單地使用資料。假使有未中,則有二個選擇:(i)正常地分配(如圖7A中以#1圓圈標識的圓點虛線所標示般)但是期望清除最後消除此線,或者(ii)檢查用於線的快取記憶體的下半部以及假使其於其中未中,則僅在下半部中分配(如同圖7A中的#2圓圈標識的虛線所示般)。
f.在一實施例中,快取線寫入將遵守與上述(a)-(e)相同的規則。
(4)一旦清除引擎701到達選取區的尾端(在此情中為上半部740的底部),則此整個區域現在是無效的且被關閉。
(5)快取記憶體區未作動機制跳開及關閉MSC 510的此部份740。
(6)快取記憶體設定位址現將是23b且將僅指向MSC 510的下半部741。
如同上述中清楚可見般,對應用透明地執行部份MSC的未作動,而不會對快取記憶體使用有任何顯著衝擊。
圖7B中顯示多階記憶體階層中MSC的動態部份斷電之方法。以上述軟體750、清除引擎701、及快取控制單元512的環境,實施圖7B中所示的操作,但是,方法不必限於任何特定架構。
在760,初始化快取記憶體使用監視。在761,根據監視,為了未作動而識別部份快取記憶體。舉例而言,如上所述,每當新的快取線被分配在區域中時區域佔有計數器增量,以及,當快取線在區域中位移或無效時,佔有計數器減量。佔有計數器的值接著被用以決定是否要使區域未作動(亦即,在更高的佔有區之前使較低的佔據區無效化)。替代地,為了指定的時間間隔,計算快取記憶體區的平均未中率。在本實施例中,提供臨界未中率以使各快取記憶體區未作動。
在762,清除位址計數器被設定於經過識別的快取記憶體的部份。在763,各快取線被逐出且無效化,以及,在各無效之後,計數器降量。在764,初始化讀取或寫入操作,在765,決定是否將操作導引至被清除的區(F)、等候清除區(FP)、或是未被無效化的快取記憶體的部份(NI)。假使操作被導引至被清除區,則在768,其被導引至未被無效化的快取記憶體的部份。具體而言,在一實施例中,使用精簡的設定位址(例如,如上所述)以分配快取線。
假使操作被導至等候清除區(FP)時,則快取線被正常地分配,期望線最後被清除。替代地,使用簡精的設定位址(例如,如上所述),分配快取線。
假使操作被導引至未被有效化的快取記憶體的部份,則在766,以精簡設定位址,如常地執行讀/寫操作。
上述本發明的實施例可以用於伺服器以及其它型式的
電腦系統中,而顯著地降低耗電。除了如上所述地操縱直接對映的快取記憶體之外,本發明的實施例也能夠根據例如佔有及未中率等使用準則來動態地調整快取記憶體尺寸。
使用非常昂貴的不斷電(UPS)系統,典型地保護資料中心伺服器免於電力故障。這些系統被典型上用以使伺服器被供電夠長以將所有記憶體內容以及其它依電性系統狀態儲存至持久媒體。由於持久媒體典型上是可以在網路上的硬碟,所以,當執行記憶體傾印時,會耗費顯著的時間量及電力量。
在下述的本發明的實施例中,PCM或其它非依電性記憶體被用以解決這些問題時,藉以減少UPS系統的需求。當然,高端資料中心可以仍然為了可用度(而非為了確保記憶體狀態傾印)而使用UPS系統。
如圖8A中所示,本發明的實施例採用使用PCM記憶體530(例如PCMS)作為遠記憶體及揮發性MSC近記憶體510(例如DRAM)的多階記憶體架構。其它組件包含下述之一或更多:
(1)清除引擎701,用以將骯髒線從MSC回寫至PCM。清除引擎701也維持由CPU用於後續的讀取及寫入存取之清除位址計數器702。
(2)早期電力故障偵測單元830,將觸發清除引擎
701作動。
(3)備用電力單元820,當清除發生時用於維持電力。由於清除不會長時間發生,所以,此備用電力單元820無需使用非常昂貴的UPS系統。取代地,某些架式或伺服器等級電池背用模組即已足夠。
(4)在快取線被清除後切換至直接寫入操作模式的MSC 510的能力(在快取控制單元512的控制之下)。
(5)用於識別要被放棄的MSC 510之內的頁之軟體850的機制(例如如下所述標示這些頁)。這些頁無須被清除至PCMS。以當清除快取記憶體時H/W將存取此資訊之方式,必須達成這些頁的標記。
(6)PCMS間接位址表(AIT)563,其中,軟體標記要被放棄的頁(例如,以零來標記)。
(7)當完成清除時通知軟體850之方法。
在一實施例中,將MSC 510清除至PCM記憶體530所需的最大時間將取決於快取記憶體尺寸及PCM子系統的性能。在一實施例中,電力故障偵測單元830被修改至真實工作量使用,真實工作量使用被用以預測將累積在MSC 510中的骯髒線的平均數目。對於大部份的伺服器工作量,這將追蹤讀/寫比例以及正常上約為MSC尺寸的1/3。
此外,軟體850命令清除引擎701使來自MSC 510之「零」或「放棄的」頁無效。當稍後從PCM記憶體530讀取這些頁時,PCM控制器521在將這些頁歸還給MSC
510之前將它們零化。在一實施例中,PCM控制器521使用間接位址表(AIT)563,間接位址表維持表示各頁的狀態之頁等級元資料。在一實施例中,在每一讀取或寫入操作時,此資訊被存取。頁的狀態(及相關連的快取線)由軟體850設定。
在一實施例中,當電力故障偵測器單元830偵測電力故障狀態及產生警告給清除引擎701時,發生下述序列:
(1)為了骯髒線,清除引擎701被觸發以開始順序地越過MSC 510。
(2)這些骯髒線被PCM控制器521清除至PCM記憶體530以及各被清除的線被設定於「清潔」狀態。當各線被處理時,清除位址計數器702被更新(例如,如上所述)。
(3)後續的讀取仍然被允許在快取記憶體的被清除區中命中。
(4)但是,對快取記憶體的被清除區之任何寫入將造成直接寫入或旁通寫入操作。假使資料未同時在MSC 510中時,旁通寫入將發生。假使資料在MSC 510中時,其被更新。
(5)當整個MSC 510已被清除時,清除引擎701將明確的清除命令傳送至PCM控制器521。當成功地將所有先前的寫入推至PCM記憶體530時,PCM控制器521具將確認此命令。
(6)在此點,清除引擎701將清除事件成功完成通
知軟體850(例如,產生「清除完成」命令)。
(7)軟體850現在將開始有序地關閉系統或設定檢查點狀態,假使電力終止時從檢查點狀態重新開始。
(8)在電力恢復時,軟體850在PCM記憶體530中從檢查點狀態重新開始。不需要系統重開機。
圖8B顯示用於回應具有MSC及PCM記憶體的多階記憶體系統中的電力故障事件之省電方法的一實施例。以圖8A中所示的架構的環境,實施圖8B中所示的操作,但是,方法不必侷限於任何特定架構。
在801,偵測電力故障警告。舉例而言,電力故障偵測電路偵測下降至指定臨界值之下的輸入電力的電壓。在802,為了骯髒線,清除引擎被觸發以及開始順序地越過MSC(例如,如上所述地使用清除位址計數器702)。
在803,任何讀取的操作被允許命中MSC的被清除區,以及,在804,與被清除區有關的任何寫入產生直接寫入或旁通寫入操作(例如,旁通MSC)。一旦完整的MSC被清除時,則在805決定,明確的清除命令被送至PCM控制器。在此階段,通知命令也被送至系統軟體(亦即,將被清除的狀態告知系統)。
由於不再要求昂貴的UPS系統,所以,上述的技術被用以顯著地降低資料中心中的TCO。
在伺服器中進入冬眠及從冬眠返回的速度受限於從例
如硬碟機或SSD等儲存裝置儲存及取出記憶體狀態。由於DRAM記憶體是依電性的且在冬眠期間必須由電池支援且被置於自我更新,所以,更快速的記憶為基礎的冬眠無法取得相同的省電。
藉由例如此處所述的多階記憶體子系統,由於PCM記憶體是非依電性的及DRAM為基礎的快取記憶體無需電池支援,所以,取得每一快速的記憶體為基礎的冬眠。藉由此方式,伺服器更佳頻繁地進入冬眠,因而能夠在資料中心中顯著地省電及節能。
如圖9A所示,於下說明的本發明的實施例利用多階記憶體階層,其包含MSC 510及PCM(例如,PCMS)記憶體530以及採用硬體為基礎的清除引擎701。如同先前所述般,在多階架構中,PCM為基礎的非依電性記憶體提供軟體可見的記憶體位址空間。由於需要對直接軟體存取隱藏PCM性能特徵,所以,採用大的DRAM為基礎的回寫MSC 510,其受硬體管理(例如,經由MSC控制器512)以及對軟體是透明的。在正常系統操作期間,任何軟體記憶體存取從PCM取出資料至MSC中,在MSC中其被維持直到由另一存取逐出為止。在一實施例中,由於MSC 510是回寫,所以,隨著時間,一些快取記憶體位置將變成「骯髒的」-,亦即,在儲存在PCM記憶體530中的拷貝中不再反應之修改狀態。
根據軟體及硬體都受控制的各種政策,系統進入或離開冬眠狀態。習於此技藝者將良好地瞭解規劃系統以進入
冬眠之方式,於此不作詳述。當在冬眠時,記憶體狀態必須被保留但大部份的系統將被關閉電力以節省電力。一般而言,根據在「閒置」狀態中花費的時間,在軟體控制之下進入狀態。根據各種已知的觸發狀態,在硬體控制之下,離開狀態。
在一實施例中,以進入及離開冬眠狀態的速度決定進入冬眠的策略。主要成本是對某些非依電性儲存媒體儲存或取出所有記憶體狀態。假使儲存媒體是碟片時,則使用直接記憶體存取(DMA)以必須儲存或取出記憶體狀態。
在此處所述的多階記憶體架構中,大部份的記憶體狀態已經維持在非依電性PCM記憶體530中。僅有當進入冬眠時需要被傳送至PCM記憶體530的額外的記憶體狀態是MSC 510中的「骯髒」線。這是當使用清除引擎701以為了「骯髒」線而掃描過所有MSC時。這些線被非常快地取出及「清除」至PCM,而以最新資料更新原始位置。在快取記憶體中的「清潔」線無需被清除(亦即,由於清潔的拷貝已被儲存在PCM中)。一實施例的清除引擎701由執行用於系統的冬眠策略之軟體910(或是韌體)程式化。由於清除引擎701僅需要被告知取得所有骯髒線並將它們送至PCM記憶體530,所以,程式化是最小的。骯髒線的位置的位址已經被維持作為多層記憶體階層的部份且無需由軟體910明確地指明。
在一實施例中,當完成清除時,清除引擎701將通知能完成關機處理的其餘部份之軟體910。當從冬眠返回
時,不需要從非依電性PCM執行記憶體的明顯拷貝。用於從PCM記憶體530取出記憶體位置及將取出的快取線儲存在MSC 510中的一般多階記憶體技術將如所需地自動執行此點。結果,使用此處所述的多階記憶體架構從冬眠恢復是相當快速的。
當從冬眠恢復時,對多階記憶體階層執行某些基本初始化以開始作用。在一實施例中,由系統BIOS 170管理此點(例如圖2中所示)。在一實施例中,初始化包含設定位於SRAM或DRAM中的表,以使快速位址轉譯賦能。此處理也將是非常快速並因而最小地貢獻恢復負擔。
此處所述的冬眠技術的優點代表相對於目前的冬眠技術之巨大增進。舉例而言,由於使記憶體保持電力開啟的成本太高,所以,伺服器目前未使用記憶體為基礎的冬眠。取代地,冬眠要求對例如HDD或SSD儲存或取出記憶體狀態。這將典型地涉及軟體驅動程式,其使配接器程式化以在記憶體與儲存裝置之間進行DMA操作。這些操作具有高負擔及限制為了省電而使用冬眠的能力。軟體也重大地涉及產生用於儲存裝置的記憶體影像。
相對比地,此處所述的本發明的實施例使用具有非依電性記憶體(例如,PCM)的多階記憶體階層,以進行常駐記憶體冬眠。清除引擎701用以加速將骯髒線從MSC清除至PCMS,藉以顯著地增進性能。
圖8B顯示省電方法的一實施例,其用於回應具有MSC及PCM記憶體之多階記憶體系統中的電力故障事
件。以圖8A中所示的架構之環境,實施圖8B中所示的操作。但是方法不侷限於任何特定架構。
在801,偵測電力故障警告。舉例而言,電力故障偵測電路偵測掉至指定臨界值之下的輸入電力的電壓。在802,為了骯髒線,清除引擎被觸發且開始順序地越過MSC(例如,使用如上所述的清除位址計數器702)。
在803,允許任何讀取操作以命中MSC的被清除區,以及,在804,任何與被清除區有關的寫入產生直接寫入或旁通寫入操作(例如,旁通MSC)。一旦在805判定整個MSC被清除時,則明確的清除命令被送至PCM控制器。在此階段,通知命令也被送至系統軟體(亦即,通知被清除狀態的系統)。
本發明的實施例包含上述各式各樣的步驟。這些步驟可以具體實施於機器可執行的指令,這些指令用以促使一般用途或特別用途的處理器執行這些步驟。替代地,藉由含有用於執行這些步驟之硬體接線的邏輯之特定硬體組件、或是程式化的電腦組件及客製化硬體組件的任何組合,執行這些步驟。
如此處所述般,指令意指例如配置成執行某些操作或具有預定功能的特定應用積體電路(ASIC)等硬體特定配置、或是儲存在以非暫時性電腦可讀取的媒體中具體實施之記憶體中的軟體指令。因此,使用儲存於及執行於一或更多電子裝置上(例如,終端站、網路元件、等等)之碼及資料,實施圖式中所示的技術。使用電腦可讀取的媒
體,這些電子裝置儲存及傳輸(內部地及/或於網路上與其它電子裝置相通訊)碼和資料,舉例而言,電腦可讀取的媒體可為非暫時性電腦可讀取的儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相位改變記憶體)以及暫時性電腦可讀取的通訊媒體(例如電、光學、聲學或其它型式的傳播訊號,例如載波、紅外線訊號、數位訊號、等等)。此外,這些電子裝置典型地包含一或更多處理器集,一或更多處理器集耦合至例如一或更多儲存裝置(非暫時性電腦可讀取的儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕、及/或顯示器)、網路連接等一或更多其它組件。處理器集與其它組件的耦合典型上經由一或更多匯流排及橋接器(也稱為匯流排控制器)。儲存裝置及載送網路交通的訊號分別代表一或更多機器可讀取的儲存媒體以及機器可讀取的通訊媒體。因此,給定的電子裝置的儲存裝置典型地儲存用於在該電子裝置的一或更多處理器集上執行之碼及/或資料。當然,使用軟體、韌體、及/或硬體的不同組合,實施本發明的實施例之一或更多部份。經由為了說明之此詳細說明,揭示眾多具體細節以提供本發明的完整瞭解。但是,習於此技藝者將清楚,沒有這些特定細節仍可實施本發明。在某些情形中,未詳細習知的結構及功能,以避免模糊本發明的標的。因此,應以後附申請專利範圍的觀點,判斷本發明的範圍及精神。
100‧‧‧處理器
101-104‧‧‧處理器核心
105‧‧‧低階快取記憶體
105B‧‧‧近記憶體
106-109‧‧‧快取記憶體
116-119‧‧‧系統記憶體位址範圍
120‧‧‧內部處理器快取記憶體
121‧‧‧近記憶體
122‧‧‧遠記憶體
124‧‧‧控制器
140‧‧‧記憶體/儲存器階層
142‧‧‧NVRAM
144‧‧‧近記憶體
150‧‧‧快取記憶體
150B‧‧‧近記憶體
151‧‧‧系統記憶體
151B‧‧‧遠記憶體
152‧‧‧大量儲存器
152A‧‧‧大量儲存器
152B‧‧‧大量儲存器
170‧‧‧BIOS快閃記憶體
172‧‧‧BIOS NVRAM
173‧‧‧平台模組NVRAM
174‧‧‧NVRAM系統記憶體
190‧‧‧系統位址空間
191‧‧‧系統位址空間
192‧‧‧高速暫存記憶體
193‧‧‧寫入緩衝器
300‧‧‧電腦系統
310‧‧‧處理器
313‧‧‧快取記憶體
314‧‧‧本地代理單元
315‧‧‧I/O子系統
331‧‧‧整合記憶體控制器
332‧‧‧NVRAM控制器
333‧‧‧解碼表
334‧‧‧TPM
335‧‧‧管理引擎
336‧‧‧範圍暫存器
337‧‧‧非儲存器I/O裝置
338‧‧‧I/O配接器
340‧‧‧DRAM裝置
342‧‧‧標籤快取記憶體
346‧‧‧範圍暫存器集
362‧‧‧BIOS快閃記憶體
372‧‧‧TMP快閃記憶體
380‧‧‧記憶體/儲存器子系統
401‧‧‧CPU封裝
403-406‧‧‧DRAM
407‧‧‧高頻寬鏈結
411a‧‧‧近記憶體
411b‧‧‧遠記憶體
440‧‧‧DDR通道
450-453‧‧‧DIMM
454‧‧‧PCI匯流排
457‧‧‧DDR通道
458‧‧‧DIMM
460‧‧‧PCM控制器
465-466‧‧‧DIMM
468‧‧‧高性能互連
470‧‧‧DDR通道
471‧‧‧DDR匯流排
501‧‧‧核心
502‧‧‧記憶體管理單元
503‧‧‧CPU快取記憶體
505‧‧‧本地代理器
510‧‧‧MSC
511‧‧‧標籤快取記憶體
512‧‧‧快取控制單元
515‧‧‧近記憶體控制器
518‧‧‧近記憶體
519‧‧‧遠記憶體
520‧‧‧位址間接表
521‧‧‧PCM遠記憶體控制器
523‧‧‧錯誤校正碼位元
524‧‧‧資料
530‧‧‧PCM遠記憶體
542‧‧‧命令緩衝追蹤單元
544‧‧‧快取存取模式檢查單元
545‧‧‧MSC範圍暫存器
546‧‧‧資料緩衝器
547‧‧‧資料快取記憶體
548‧‧‧遠記憶體控制器介面
550‧‧‧標籤檢查/命令排程器
552‧‧‧ECC產生器或檢查器單元
553‧‧‧通道控制器
554‧‧‧標籤快取/錯誤校正碼產生/檢查單元
554a‧‧‧錯誤校正碼產生/檢查單元
554b‧‧‧標籤單元
555‧‧‧磨損管理單元
556‧‧‧對映器
557‧‧‧排程器
558‧‧‧PCM協定引擎
559‧‧‧持久寫入緩衝器
560‧‧‧清除支援
561‧‧‧資料緩衝器
562‧‧‧錯誤校正碼單
565‧‧‧PCM描述符表
605‧‧‧本地代理器
620‧‧‧系統記憶體位址地圖
621‧‧‧近記憶體地圖
622‧‧‧PCM位址地圖
650-651‧‧‧核心
652-653‧‧‧本地代理器
654‧‧‧快取記憶體
655‧‧‧快取記憶體
656‧‧‧控制器
657‧‧‧控制器
659‧‧‧遠記憶體介面
660-661‧‧‧快取記憶體
665‧‧‧遠記憶體介面
666‧‧‧遠記憶體控制器
670-671‧‧‧CPU
675‧‧‧系統實體位址
676‧‧‧解碼邏輯
677‧‧‧解碼邏輯
682-683‧‧‧記憶體頁
684‧‧‧快取線交插
685-686‧‧‧MCA空間
687-688‧‧‧MCA控制器
701‧‧‧清除引擎
702‧‧‧清除位址計數器
730‧‧‧計數器
750‧‧‧軟體
820‧‧‧備用電力
830‧‧‧電力故障偵測
下述說明及附圖用以顯示本發明的實施例。在圖式中:圖1顯示根據本發明的實施例之快取記憶體及系統記憶體;圖2顯示本發明的實施例中使用的記憶體及儲存器階層;圖3顯示電腦系統,於其上實施本發明的實施例;圖4A顯示根據本發明的實施例之包含PCM的第一系統階層;圖4B顯示根據本發明的實施例之包含PCM的第二系統階層;圖4C顯示根據本發明的實施例之包含PCM的第三系統階層;圖4D顯示根據本發明的實施例之包含PCM的第四系統階層;圖4E顯示根據本發明的實施例之包含PCM的第五系統階層;圖4F顯示根據本發明的實施例之包含PCM的第六系統階層;圖4G顯示根據本發明的實施例之包含PCM的第七系統階層;圖4H顯示根據本發明的實施例之包含PCM的第八系統階層;
圖4I顯示根據本發明的實施例之包含PCM的第九系統階層;圖4J顯示根據本發明的實施例之包含PCM的第十系統階層;圖4K顯示根據本發明的實施例之包含PCM的第十一系統階層;圖4L顯示根據本發明的實施例之包含PCM的第十二系統階層;圖4M顯示根據本發明的實施例之包含PCM的第十三系統階層;圖5A-5E顯示記憶體側快取(MSC)與相位改變記憶體(PCM)的不同實施例;圖6A-6D顯示用於近記憶體及遠記憶體的記憶體對映技術;圖7A-B顯示用於使MSC的區域解除作動之本發明的實施例;圖8A-B顯示用於清除MSC以回應電力故障狀態之本發明的實施例;圖9A-B顯示用於沖洗來自MSC的髒快取線以回應冬眠狀態之本發明的實施例。
100‧‧‧處理器
101‧‧‧核心
101a-b、102a-b、103a-b、104a-b‧‧‧內部處理器快取記憶體
102‧‧‧核心
103‧‧‧核心
104‧‧‧核心
105‧‧‧處理器核心共用的較低階快取記憶體(LLC)
106‧‧‧快取記憶體
107‧‧‧快取記憶體
108‧‧‧快取記憶體
109‧‧‧快取記憶體
116‧‧‧系統記憶體(位址範圍#1)
117‧‧‧系統記憶體(位址範圍#2)
118‧‧‧系統記憶體(位址範圍#3)
119‧‧‧系統記憶體(位址範圍#4)
120‧‧‧內部處理器快取記憶體
121‧‧‧近記憶體
122‧‧‧遠記憶體
Claims (20)
- 一種電腦系統,包括:記憶體子系統,包括非依電性系統記憶體及用於快取部份的該非依電性系統記憶體的依電性記憶體側快取記憶體(MSC);以及清除引擎,用於將該記憶體側快取記憶體的指定區清除至該非依電性系統記憶體,以回應與該記憶體側快取記憶體的該指定區相關連的未作動狀態。
- 如申請專利範圍第1項之系統,其中,選取該未作動狀態以回應用於該記憶體側快取記憶體的該指定區的快取記憶體佔有的測量。
- 如申請專利範圍第2項之系統,其中,該快取記憶體佔有由用於該指定的快取記憶體區的區域佔有計數器追蹤,每當新快取線被分配在該指定區內時,該區域佔有計數器增量,以及,每當在該指定的快取記憶體區內位移或被無效化該新快取線時減量。
- 如申請專利範圍第1項之系統,其中,選取該未作動狀態以回應該指定的快取記憶體區內平均未中率的測量。
- 如申請專利範圍第4項之系統,其中,該平均未中率被計算為指定時間間距內之運行平均。
- 如申請專利範圍第1項之系統,其中,該指定區被識別為該記憶體側快取記憶體的方向數量。
- 如申請專利範圍第1項之系統,其中,該指定區 以該記憶體側快取記憶體的指定部份識別。
- 如申請專利範圍第1項之系統,其中,該清除引擎包括清除位址計數器,該清除位址計數器維持目前未作動的該記憶體側快取記憶體的該指定區的設定位址。
- 如申請專利範圍第8項之系統,其中,該設定位址是自被產生以存取該系統記憶體的該系統記憶體位址導出。
- 如申請專利範圍第1項之系統,其中,該清除引擎包括清除位址計數器,該清除位址計數器被設定於要被清除的該記憶體側快取記憶體的該區域的頂部,當各連續的快取線從該記憶體側快取記憶體的該指定區被清除時,該清除位址計數器減量。
- 一種電腦實施方法,實施於記憶體子系統內,該記憶體子系統包括非依電性系統記憶體以及用於快取部份的該非依電性系統記憶體的依電性記憶體側快取記憶體(MSC),該方法包括:偵測與該記憶體側快取記憶體的指定區相關連的未作動狀態;以及將該記憶體側快取記憶體的該指定區清除至該非依電性記憶體,以回應與該記憶體側快取記憶體的該指定區相關連的該未作動狀態。
- 如申請專利範圍第11項之方法,又包括選取該未作動狀態以回應用於該記憶體側快取記憶體的該指定區之快取記憶體佔有的測量。
- 如申請專利範圍第12項之方法,又包括:使用用於該指定的快取記憶體區之區域佔有計數器,追蹤快取記憶體佔有,每當新快取線被分配在該指定區內時,該區域佔有計數器增量,以及,每當該新快取線在該指定的快取記憶體區內位移或被無效化時減量。
- 如申請專利範圍第11項之方法,其中,選取該未作動狀態以回應該指定的快取記憶體區內平均未中率的測量。
- 如申請專利範圍第14項之方法,其中,該平均未中率被計算為指定時間間距內之運行平均。
- 如申請專利範圍第11項之方法,其中,該指定區被識別為以該記憶體側快取記憶體的方向數量。
- 如申請專利範圍第11項之方法,其中,該指定區以該記憶體側快取記憶體的指定部份識別。
- 如申請專利範圍第11項之方法,其中,該清除引擎包括清除位址計數器,該清除位址計數器維持目前被未作動的該記憶體側快取記憶體的該指定區的設定位址。
- 如申請專利範圍第18項之方法,其中,該設定位址是自被產生以存取該系統記憶體的該系統記憶體位址導出。
- 如申請專利範圍第11項之方法,其中,該清除引擎包括清除位址計數器,該清除位址計數器被設定於要被清除的該記憶體側快取記憶體的該區域的頂部,當各連續的快取線從該記憶體側快取記憶體的該指定區被清除 時,該清除位址計數器減量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066302 WO2013095404A1 (en) | 2011-12-20 | 2011-12-20 | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346554A TW201346554A (zh) | 2013-11-16 |
TWI489276B true TWI489276B (zh) | 2015-06-21 |
Family
ID=48669062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147176A TWI489276B (zh) | 2011-12-20 | 2012-12-13 | 於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10795823B2 (zh) |
KR (2) | KR101915073B1 (zh) |
CN (2) | CN103988183B (zh) |
BR (1) | BR112014013390A2 (zh) |
DE (1) | DE112011105984B4 (zh) |
GB (1) | GB2510760B (zh) |
TW (1) | TWI489276B (zh) |
WO (1) | WO2013095404A1 (zh) |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
WO2013101201A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Home agent multi-level nvm memory architecture |
WO2013101209A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Thin translation for system access of non volatile semicondcutor storage as random access memory |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9003218B2 (en) * | 2012-05-21 | 2015-04-07 | International Business Machines Corporation | Power shifting in multicore platforms by varying SMT levels |
EP2915045B1 (en) * | 2012-11-02 | 2019-01-02 | Hewlett-Packard Enterprise Development LP | Selective error correcting code and memory access granularity switching |
US9098402B2 (en) | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US9239610B2 (en) * | 2013-02-28 | 2016-01-19 | Sandisk Technologies Inc. | Systems and methods for managing data in a system for hibernation states |
WO2015047348A1 (en) | 2013-09-27 | 2015-04-02 | Intel Corporation | Cache operations for memory management |
WO2015089488A1 (en) | 2013-12-12 | 2015-06-18 | Memory Technologies Llc | Channel optimized storage modules |
US9542336B2 (en) * | 2013-12-18 | 2017-01-10 | Intel Corporation | Isochronous agent data pinning in a multi-level memory system |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US9558120B2 (en) | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
WO2015147868A1 (en) * | 2014-03-28 | 2015-10-01 | Empire Technology Development Llc | Magnetoresistive random-access memory cache write management |
US9779025B2 (en) * | 2014-06-02 | 2017-10-03 | Micron Technology, Inc. | Cache architecture for comparing data |
US9536590B1 (en) * | 2014-09-03 | 2017-01-03 | Marvell International Ltd. | System and method of memory electrical repair |
US10928882B2 (en) * | 2014-10-16 | 2021-02-23 | Futurewei Technologies, Inc. | Low cost, low power high performance SMP/ASMP multiple-processor system |
WO2016099567A1 (en) * | 2014-12-19 | 2016-06-23 | Hewlett Packard Enterprise Development Lp | Flushing data content in response to a power loss event to a processor |
US9430396B2 (en) | 2014-12-22 | 2016-08-30 | Intel Corporation | Updating persistent data in persistent memory-based storage |
WO2016122549A1 (en) * | 2015-01-29 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Read only bufferpool |
US9690716B2 (en) * | 2015-02-13 | 2017-06-27 | Intel Corporation | High performance persistent memory for region-centric consistent and atomic updates |
US10013360B2 (en) | 2015-03-04 | 2018-07-03 | Cavium, Inc. | Managing reuse information with multiple translation stages |
US9720773B2 (en) | 2015-03-04 | 2017-08-01 | Cavium, Inc. | Managing reuse information in caches |
US20160259732A1 (en) * | 2015-03-04 | 2016-09-08 | Cavium, Inc. | Managing reuse information for memory pages |
CN105988735B (zh) * | 2015-03-06 | 2019-03-19 | 华为技术有限公司 | 数据写入控制装置及方法 |
US9866647B2 (en) * | 2015-03-26 | 2018-01-09 | Alcatel Lucent | Hierarchical cost based caching for online media |
US10152413B2 (en) | 2015-06-08 | 2018-12-11 | Samsung Electronics Co. Ltd. | Nonvolatile memory module and operation method thereof |
US9792190B2 (en) * | 2015-06-26 | 2017-10-17 | Intel Corporation | High performance persistent memory |
US10423330B2 (en) * | 2015-07-29 | 2019-09-24 | International Business Machines Corporation | Data collection in a multi-threaded processor |
US9959075B2 (en) | 2015-08-05 | 2018-05-01 | Qualcomm Incorporated | System and method for flush power aware low power mode control in a portable computing device |
US20170068304A1 (en) * | 2015-09-09 | 2017-03-09 | Mediatek Inc. | Low-power memory-access method and associated apparatus |
CN106547480B (zh) * | 2015-09-17 | 2019-04-12 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
US10185501B2 (en) * | 2015-09-25 | 2019-01-22 | Intel Corporation | Method and apparatus for pinning memory pages in a multi-level system memory |
US10120811B2 (en) | 2015-09-29 | 2018-11-06 | International Business Machines Corporation | Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage |
US10241918B2 (en) * | 2015-09-29 | 2019-03-26 | International Business Machines Corporation | Considering a frequency of access to groups of tracks to select groups of tracks to destage |
US10095628B2 (en) | 2015-09-29 | 2018-10-09 | International Business Machines Corporation | Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage |
US9824419B2 (en) * | 2015-11-20 | 2017-11-21 | International Business Machines Corporation | Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other |
US10152421B2 (en) | 2015-11-23 | 2018-12-11 | Intel Corporation | Instruction and logic for cache control operations |
CN106775436B (zh) * | 2015-11-24 | 2019-10-25 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元与存储器 |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
US10073790B2 (en) | 2015-12-03 | 2018-09-11 | Samsung Electronics Co., Ltd. | Electronic system with memory management mechanism and method of operation thereof |
US9934154B2 (en) | 2015-12-03 | 2018-04-03 | Samsung Electronics Co., Ltd. | Electronic system with memory management mechanism and method of operation thereof |
US10515016B2 (en) * | 2015-12-03 | 2019-12-24 | Hitachi, Ltd. | Method and apparatus for caching in software-defined storage systems |
US20170177482A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Computing system having multi-level system memory capable of operating in a single level system memory mode |
US9928168B2 (en) * | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
US9984009B2 (en) * | 2016-01-28 | 2018-05-29 | Silicon Laboratories Inc. | Dynamic containerized system memory protection for low-energy MCUs |
KR20170109133A (ko) * | 2016-03-17 | 2017-09-28 | 에스케이하이닉스 주식회사 | 하이브리드 메모리 장치 및 그의 데이터 관리 방법 |
KR101842764B1 (ko) * | 2016-03-18 | 2018-03-28 | 연세대학교 산학협력단 | 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법 |
US9798672B1 (en) * | 2016-04-14 | 2017-10-24 | Macom Connectivity Solutions, Llc | Data managment for cache memory |
US10282302B2 (en) | 2016-06-30 | 2019-05-07 | Hewlett Packard Enterprise Development Lp | Programmable memory-side cache management for different applications |
US10776216B2 (en) * | 2016-08-18 | 2020-09-15 | Red Hat, Inc. | Tiered cloud storage for different availability and performance requirements |
US10579560B2 (en) * | 2016-08-31 | 2020-03-03 | Futurewei Technologies, Inc. | Transaction-based hybrid memory |
US10318428B2 (en) | 2016-09-12 | 2019-06-11 | Microsoft Technology Licensing, Llc | Power aware hash function for cache memory mapping |
US20180091150A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Fused voltage level shifting latch |
US11216396B2 (en) * | 2016-09-29 | 2022-01-04 | Intel Corporation | Persistent memory write semantics on PCIe with existing TLP definition |
US10489313B2 (en) | 2016-10-31 | 2019-11-26 | Alibaba Group Holding Limited | Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture |
US10956325B2 (en) * | 2016-12-12 | 2021-03-23 | Intel Corporation | Instruction and logic for flushing memory ranges in a distributed shared memory system |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US10198354B2 (en) | 2017-03-21 | 2019-02-05 | Intel Corporation | Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory |
CN108664523B (zh) * | 2017-03-31 | 2021-08-13 | 华为技术有限公司 | 一种虚拟磁盘文件格式转换方法和装置 |
US10318417B2 (en) * | 2017-03-31 | 2019-06-11 | Intel Corporation | Persistent caching of memory-side cache content |
US11175853B2 (en) | 2017-05-09 | 2021-11-16 | Samsung Electronics Co., Ltd. | Systems and methods for write and flush support in hybrid memory |
US11449431B2 (en) | 2017-05-30 | 2022-09-20 | Seagate Technology Llc | Data storage device with rewritable in-place memory |
US10591978B2 (en) | 2017-05-30 | 2020-03-17 | Microsoft Technology Licensing, Llc | Cache memory with reduced power consumption mode |
US10068663B1 (en) | 2017-05-30 | 2018-09-04 | Seagate Technology Llc | Data storage device with rewriteable in-place memory |
US10090067B1 (en) | 2017-05-30 | 2018-10-02 | Seagate Technology Llc | Data storage device with rewritable in-place memory |
US10147501B1 (en) | 2017-05-30 | 2018-12-04 | Seagate Technology Llc | Data storage device with rewriteable in-place memory |
US10241561B2 (en) | 2017-06-13 | 2019-03-26 | Microsoft Technology Licensing, Llc | Adaptive power down of intra-chip interconnect |
US11126550B1 (en) | 2017-09-01 | 2021-09-21 | Crossbar, Inc | Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism |
US10853299B2 (en) | 2017-09-15 | 2020-12-01 | Dell Products L.P. | Hot-plugged PCIe device configuration system |
US10437499B2 (en) * | 2017-12-22 | 2019-10-08 | Nanya Technology Corporation | Hybrid memory system and method of operating the same |
KR20190088790A (ko) | 2018-01-19 | 2019-07-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN110297787B (zh) * | 2018-03-22 | 2021-06-01 | 龙芯中科技术股份有限公司 | I/o设备访问内存的方法、装置及设备 |
CN111971660A (zh) * | 2018-06-05 | 2020-11-20 | 拉姆伯斯公司 | 高速缓存动态随机存取存储器 |
US11086526B2 (en) * | 2018-06-07 | 2021-08-10 | Micron Technology, Inc. | Adaptive line width cache systems and methods |
US11556477B2 (en) * | 2018-06-15 | 2023-01-17 | Arteris, Inc. | System and method for configurable cache IP with flushable address range |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US10937961B2 (en) * | 2018-11-06 | 2021-03-02 | International Business Machines Corporation | Structure and method to form bi-layer composite phase-change-memory cell |
KR20200114481A (ko) | 2019-03-28 | 2020-10-07 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
US10860491B2 (en) | 2019-05-03 | 2020-12-08 | Mediate Inc. | Cache management method using object-oriented manner and associated microcontroller |
JP6796681B2 (ja) * | 2019-05-13 | 2020-12-09 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
KR102671743B1 (ko) * | 2019-05-31 | 2024-06-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR102671736B1 (ko) * | 2019-05-31 | 2024-06-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR102687354B1 (ko) | 2019-08-01 | 2024-07-22 | 삼성전자주식회사 | 스토리지 장치 |
US11526448B2 (en) * | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US20200125495A1 (en) * | 2019-12-19 | 2020-04-23 | Intel Corporation | Multi-level memory with improved memory side cache implementation |
US11656967B2 (en) * | 2020-02-13 | 2023-05-23 | MemRay Corporation | Method and apparatus for supporting persistence and computing device |
US20200226066A1 (en) * | 2020-03-27 | 2020-07-16 | Intel Corporation | Apparatus and method for efficient management of multi-level memory |
KR20220023598A (ko) | 2020-08-21 | 2022-03-02 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
WO2022086559A1 (en) * | 2020-10-23 | 2022-04-28 | Hewlett-Packard Development Company, L.P. | Access to volatile memories |
KR20220066741A (ko) | 2020-11-16 | 2022-05-24 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
US20210216452A1 (en) * | 2021-03-27 | 2021-07-15 | Intel Corporation | Two-level main memory hierarchy management |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100013B1 (en) * | 2002-08-30 | 2006-08-29 | Nvidia Corporation | Method and apparatus for partial memory power shutoff |
US7492656B2 (en) * | 2006-04-28 | 2009-02-17 | Mosaid Technologies Incorporated | Dynamic random access memory with fully independent partial array refresh function |
TW201108241A (en) * | 2009-01-23 | 2011-03-01 | Micron Technology Inc | Memory device power managers and methods |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105141A (en) * | 1998-06-04 | 2000-08-15 | Apple Computer, Inc. | Method and apparatus for power management of an external cache of a computer system |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
JP4034923B2 (ja) * | 1999-05-07 | 2008-01-16 | 富士通株式会社 | 半導体記憶装置の動作制御方法および半導体記憶装置 |
EP1182559B1 (en) * | 2000-08-21 | 2009-01-21 | Texas Instruments Incorporated | Improved microprocessor |
US6965970B2 (en) * | 2001-09-27 | 2005-11-15 | Intel Corporation | List based method and apparatus for selective and rapid cache flushes |
JP4056768B2 (ja) | 2002-03-04 | 2008-03-05 | 富士通株式会社 | マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法 |
US8392655B2 (en) * | 2003-09-30 | 2013-03-05 | Lenovo (Singapore) Pte Ltd. | Apparatus for reducing accesses to levels of a storage hierarchy in a computing system |
US7127560B2 (en) | 2003-10-14 | 2006-10-24 | International Business Machines Corporation | Method of dynamically controlling cache size |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US20050268022A1 (en) | 2004-05-26 | 2005-12-01 | Pelley Perry H | Cache line memory and method therefor |
US7590918B2 (en) | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
CN1787015A (zh) | 2004-12-07 | 2006-06-14 | 曾蒙汉 | 交通事故记录装置 |
US20060143397A1 (en) | 2004-12-29 | 2006-06-29 | O'bleness R F | Dirty line hint array for cache flushing |
US7620773B2 (en) * | 2005-04-15 | 2009-11-17 | Microsoft Corporation | In-line non volatile memory disk read cache and write buffer |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US7437510B2 (en) | 2005-09-30 | 2008-10-14 | Intel Corporation | Instruction-assisted cache management for efficient use of cache and memory |
US7752173B1 (en) | 2005-12-16 | 2010-07-06 | Network Appliance, Inc. | Method and apparatus for improving data processing system performance by reducing wasted disk writes |
US20070150663A1 (en) | 2005-12-27 | 2007-06-28 | Abraham Mendelson | Device, system and method of multi-state cache coherence scheme |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
WO2008040028A2 (en) | 2006-09-28 | 2008-04-03 | Virident Systems, Inc. | Systems, methods, and apparatus with programmable memory control for heterogeneous main memory |
US7774556B2 (en) * | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
US20080183968A1 (en) | 2007-01-30 | 2008-07-31 | Chi-Ting Huang | Computer system having cache system directly connected to nonvolatile storage device and method thereof |
US8427891B2 (en) | 2007-04-17 | 2013-04-23 | Rambus Inc. | Hybrid volatile and non-volatile memory device with a shared interface circuit |
US20080270811A1 (en) | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8156299B2 (en) * | 2007-10-19 | 2012-04-10 | Virident Systems Inc. | Managing memory systems containing components with asymmetric characteristics |
US8285940B2 (en) | 2008-02-29 | 2012-10-09 | Cadence Design Systems, Inc. | Method and apparatus for high speed cache flushing in a non-volatile memory |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US8145932B2 (en) * | 2008-06-30 | 2012-03-27 | Dell Products L.P. | Systems, methods and media for reducing power consumption in multiple controller information handling systems |
US8250310B2 (en) * | 2008-07-31 | 2012-08-21 | International Business Machines Corporation | Assigning data to NVRAM of shared access hybrid hard drives |
CN101673188B (zh) * | 2008-09-09 | 2011-06-01 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
US9003118B2 (en) | 2009-01-09 | 2015-04-07 | Dell Products L.P. | Systems and methods for non-volatile cache control |
US8195887B2 (en) | 2009-01-21 | 2012-06-05 | Globalfoundries Inc. | Processor power management and method |
US8195891B2 (en) | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
US8331857B2 (en) | 2009-05-13 | 2012-12-11 | Micron Technology, Inc. | Wireless interface to program phase-change memories |
US8250282B2 (en) | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US8504759B2 (en) | 2009-05-26 | 2013-08-06 | Micron Technology, Inc. | Method and devices for controlling power loss |
US20100306453A1 (en) | 2009-06-02 | 2010-12-02 | Edward Doller | Method for operating a portion of an executable program in an executable non-volatile memory |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
US8132045B2 (en) * | 2009-06-16 | 2012-03-06 | SanDisk Technologies, Inc. | Program failure handling in nonvolatile memory |
US8489814B2 (en) * | 2009-06-23 | 2013-07-16 | Mediatek, Inc. | Cache controller, method for controlling the cache controller, and computing system comprising the same |
US8516219B2 (en) * | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
KR20110048304A (ko) | 2009-11-02 | 2011-05-11 | 삼성전자주식회사 | 솔더 리플로우에서 코드 데이터의 손실을 방지할 수 있는 방법과 그 장치들 |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
US20110208900A1 (en) | 2010-02-23 | 2011-08-25 | Ocz Technology Group, Inc. | Methods and systems utilizing nonvolatile memory in a computer system main memory |
KR20110103258A (ko) * | 2010-03-12 | 2011-09-20 | 삼성전자주식회사 | 전력 소모 저감을 위한 하이브리드 메모리 장치 및 그 방법 |
KR20110131781A (ko) | 2010-05-31 | 2011-12-07 | 삼성전자주식회사 | 위치정보의 정확도 확인방법 및 장치 |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8649212B2 (en) | 2010-09-24 | 2014-02-11 | Intel Corporation | Method, apparatus and system to determine access information for a phase change memory |
US20120096295A1 (en) * | 2010-10-18 | 2012-04-19 | Robert Krick | Method and apparatus for dynamic power control of cache memory |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US8462577B2 (en) | 2011-03-18 | 2013-06-11 | Intel Corporation | Single transistor driver for address lines in a phase change memory and switch (PCMS) array |
US8462537B2 (en) | 2011-03-21 | 2013-06-11 | Intel Corporation | Method and apparatus to reset a phase change memory and switch (PCMS) memory cell |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US20120297147A1 (en) | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
US8605531B2 (en) | 2011-06-20 | 2013-12-10 | Intel Corporation | Fast verify for phase change memory with switch |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
US20130036270A1 (en) * | 2011-08-04 | 2013-02-07 | The Regents Of The University Of Michigan | Data processing apparatus and method for powering down a cache |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
-
2011
- 2011-12-20 KR KR1020157032928A patent/KR101915073B1/ko active IP Right Grant
- 2011-12-20 DE DE112011105984.1T patent/DE112011105984B4/de active Active
- 2011-12-20 CN CN201180075654.5A patent/CN103988183B/zh active Active
- 2011-12-20 CN CN201710343834.6A patent/CN107368433B/zh active Active
- 2011-12-20 GB GB1408834.8A patent/GB2510760B/en active Active
- 2011-12-20 BR BR112014013390A patent/BR112014013390A2/pt not_active Application Discontinuation
- 2011-12-20 US US13/994,726 patent/US10795823B2/en active Active
- 2011-12-20 WO PCT/US2011/066302 patent/WO2013095404A1/en active Application Filing
- 2011-12-20 KR KR1020147017055A patent/KR101571991B1/ko not_active IP Right Cessation
-
2012
- 2012-12-13 TW TW101147176A patent/TWI489276B/zh not_active IP Right Cessation
-
2020
- 2020-09-01 US US17/009,245 patent/US11200176B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100013B1 (en) * | 2002-08-30 | 2006-08-29 | Nvidia Corporation | Method and apparatus for partial memory power shutoff |
US7492656B2 (en) * | 2006-04-28 | 2009-02-17 | Mosaid Technologies Incorporated | Dynamic random access memory with fully independent partial array refresh function |
TW201108241A (en) * | 2009-01-23 | 2011-03-01 | Micron Technology Inc | Memory device power managers and methods |
Also Published As
Publication number | Publication date |
---|---|
KR101915073B1 (ko) | 2018-11-06 |
KR101571991B1 (ko) | 2015-11-25 |
CN103988183B (zh) | 2017-06-13 |
US20140304475A1 (en) | 2014-10-09 |
GB2510760A (en) | 2014-08-13 |
DE112011105984B4 (de) | 2024-10-17 |
DE112011105984T5 (de) | 2014-09-18 |
CN107368433B (zh) | 2021-06-22 |
US20210056035A1 (en) | 2021-02-25 |
KR20150138399A (ko) | 2015-12-09 |
BR112014013390A2 (pt) | 2017-06-13 |
CN103988183A (zh) | 2014-08-13 |
GB2510760B (en) | 2020-05-20 |
GB201408834D0 (en) | 2014-07-02 |
WO2013095404A1 (en) | 2013-06-27 |
TW201346554A (zh) | 2013-11-16 |
CN107368433A (zh) | 2017-11-21 |
US11200176B2 (en) | 2021-12-14 |
KR20140098167A (ko) | 2014-08-07 |
US10795823B2 (en) | 2020-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI489276B (zh) | 於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 | |
US10719443B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
US9317429B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
US9269438B2 (en) | System and method for intelligently flushing data from a processor into a memory subsystem | |
US20140006696A1 (en) | Apparatus and method for phase change memory drift management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |