TWI688859B - 記憶體控制器與記憶體頁面管理方法 - Google Patents

記憶體控制器與記憶體頁面管理方法 Download PDF

Info

Publication number
TWI688859B
TWI688859B TW107145910A TW107145910A TWI688859B TW I688859 B TWI688859 B TW I688859B TW 107145910 A TW107145910 A TW 107145910A TW 107145910 A TW107145910 A TW 107145910A TW I688859 B TWI688859 B TW I688859B
Authority
TW
Taiwan
Prior art keywords
page
target
memory
dram
list
Prior art date
Application number
TW107145910A
Other languages
English (en)
Other versions
TW202024918A (zh
Inventor
曹哲維
郭大維
張原豪
沈子傑
曾紹崟
Original Assignee
財團法人工業技術研究院
國立臺灣大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院, 國立臺灣大學 filed Critical 財團法人工業技術研究院
Priority to TW107145910A priority Critical patent/TWI688859B/zh
Priority to US16/425,969 priority patent/US11372779B2/en
Priority to CN201910478949.5A priority patent/CN111338561B/zh
Application granted granted Critical
Publication of TWI688859B publication Critical patent/TWI688859B/zh
Publication of TW202024918A publication Critical patent/TW202024918A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供一種記憶體頁面管理方法。所述方法包括接收對應狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來使所述狀態改變頁面自當前所屬的清單被分組至適應性頁面清單中的維持清單或適應性LRU清單;從中央處理單元接收存取指令以對對應一目標頁面的目標頁面資料執行一存取操作;根據對應所述目標頁面的目標NVM頁面位址來判斷對應的快取命中狀態為命中或未命中,並且根據快取命中狀態將所述目標頁面分組至所述適應性LRU清單;以及根據所述目標NVM頁面位址查找所述適應性頁面清單以獲得目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取指令。

Description

記憶體控制器與記憶體頁面管理方法
本發明是有關於一種記憶體控制器,且特別是有關於非揮發性雙列直插式記憶體模組(Non-Volatile Dual In-line Memory Module,NVDIMM)裝置的記憶體控制器與記憶體頁面管理方法。
隨著科技的演進,伺服器、個人電腦、手機等電子裝置對於主記憶體(如,動態隨機存取記憶體,DRAM)的需求也日益增大。
然而,由於DRAM在斷電時,會遺失所儲存的資料。因此,電子裝置需要常常將儲存於DRAM中的資料備份至不會因為斷電而丟失資料的非揮發性記憶體(NVM)裝置(如,硬碟或固態硬碟),進而造成了大量的存取操作,降低了電子裝置的工作效率。另一方面,為了要有效率地執行應用程式,電子裝置必須從非揮發性記憶體裝置載入相關的資料至主記憶體,以藉由主記憶體的高速運算效能來加快應用程式的運作速度。如此一來,亦會在電子裝置工作時,產生大量的存取操作。
基於上述問題,目前一般作法是在雙列直插式記憶體模組(DIMM)內結合DRAM與NVM,以嘗試發展出具有DRAM的快速存取特性與NVM的斷電資料不遺失特性的NVDIMM裝置。
但是,目前NVDIMM裝置在記憶體頁面快取的管理效能十分低落而且成本高昂,無法充分發揮DRAM的快速存取特性,對NVDIMM取代以DRAM為主的主記憶體形成了阻礙。
因此,要如何增進NVDIMM裝置的記憶體頁面管理的效率,同時降低NVDIMM裝置的運作的管理成本,為本領域人員致力發展的目標。
本發明提供一種記憶體控制器與記憶體頁面管理方法,可用極小的管理成本達到大幅增進NVDIMM裝置的運作效率。
本發明的一實施例一種記憶體控制器,用於控制一主機系統的一非揮發性雙列直插式記憶體模組(NVDIMM)裝置,其中所述NVDIMM裝置包括所述記憶體控制器、一動態隨機存取記憶體(DRAM)與一非揮發性記憶體模組(NVM),其中所述DRAM具有多個DRAM頁面,並且所述NVM具有多個NVM頁面。所述記憶體控制器包括NVDIMM介面、靜態隨機存取記憶體(SRAM)與處理器。所述NVDIMM介面用以耦接至所述主機系統的中央處理單元(CPU),其中所述中央處理單元用以存取所述NVM的所述多個NVM頁面,並且執行所述主機系統的作業系統(Operation System)。所述靜態隨機存取記憶體(SRAM)用以暫存資料。所述處理器耦接至所述動態隨機存取記憶體與所述非揮發性記憶體模組、所述NVDIMM介面與所述靜態隨機存取記憶體。所述處理器用以存取且執行儲存於所述非揮發性記憶體模組中的一記憶體頁面管理模組,以實現一記憶體頁面管理方法。所述記憶體頁面管理模組用以從所述中央處理單元接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來使分組所述狀態改變頁面自當前所屬的清單被分組至適應性頁面清單(Adaptive Adjusting List)中的維持清單(Keep List)或適應性LRU清單(Adaptive LRU List),其中所述狀態改變通知用以表示所述所述作業系統已改變所述狀態改變頁面的狀態為一活躍狀態或一不活躍狀態。此外,所述記憶體頁面管理模組更用以從所述中央處理單元接收一存取指令,其中所述存取指令指示對對應一目標頁面的目標頁面資料執行一存取操作。所述記憶體頁面管理模組更用以根據所述存取指令辨識所述目標頁面與對應所述目標頁面的一目標NVM頁面位址。所述記憶體頁面管理模組更用以根據對應所述目標NVM頁面位址來判斷對應所述目標頁面的快取命中狀態為命中或未命中,其中反應於判定對應所述目標頁面的所述快取命中狀態為命中,所述記憶體頁面管理模組更用以辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址,其中反應於所述目標頁面已被分組至所述適應性最近最少使用(LRU)清單的惰性清單(Lazy List),所述記憶體頁面管理模組更用以將所述目標頁面分組至所述適應性LRU清單的先進先出(FIFO)清單;以及反應於判定對應所述目標頁面的所述快取命中狀態為未命中,所述記憶體頁面管理模組更用以儲存對應所述目標NVM頁面的所述目標頁面資料至所述DRAM的目標DRAM頁面中,並且將所述目標DRAM頁面的目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單。所述記憶體頁面管理模組更用以根據所述存取指令,使用所述目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取操作。
本發明的一實施例另提供一種記憶體頁面管理方法,適用於用以控制一主機系統的一非揮發性雙列直插式記憶體模組(NVDIMM)裝置的記憶體控制器,其中所述NVDIMM裝置包括所述記憶體控制器、一動態隨機存取記憶體(DRAM)與一非揮發性記憶體模組(NVM),其中所述DRAM具有多個DRAM頁面,並且所述NVM具有多個NVM頁面。所述記憶體頁面管理方法包括:從一中央處理單元接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來使所述狀態改變頁面自當前所屬的清單被分組至適應性頁面清單中的維持清單或適應性LRU清單,其中所述中央處理單元執行所述主機系統的作業系統,其中所述狀態改變通知用以表示所述作業系統已改變所述狀態改變頁面的狀態為一活躍狀態或一不活躍狀態;從所述中央處理單元接收一存取指令,其中所述存取指令指示對對應一目標頁面的目標頁面資料執行一存取操作;根據所述存取指令辨識所述目標頁面與對應所述目標頁面的一目標NVM頁面位址;根據對應所述目標NVM頁面位址來判斷對應所述目標頁面的快取命中狀態為命中或未命中,其中反應於判定對應所述目標頁面的所述快取命中狀態為命中,辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址,其中反應於所述目標頁面已被分組至所述適應性最近最少使用(LRU)清單的惰性清單,更將所述目標頁面分組至所述適應性LRU清單的先進先出(FIFO)清單;以及反應於判定對應所述目標頁面的所述快取命中狀態為未命中,儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的目標DRAM頁面中,將所述目標DRAM頁面的目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單;以及根據所述存取指令,使用所述目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取操作。
基於上述,本發明所提供的記憶體控制器與記憶體頁面管理方法,可從主機系統所執行的作業系統來接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來精確地判斷所快取的記憶體頁面的所處的資料存取頻率分組,以藉此將所快取的記憶體頁面自目前的頁面清單移動至可保持快取狀態的另一組頁面清單(如,維持清單),並且增強所快取的記憶體頁面的快取準確度。此外,更可根據判斷對應存取指令的目標頁面的快取命中狀態為命中或未命中來進一步分組所快取的記憶體頁面,以讓更不常使用的記憶體頁面有較高的機率從DRAM的快取中移除,並且讓較常被使用的記憶體頁面具有較低的機率來避免從DRAM的快取中被移除。如此一來,本發明所提供的記憶體控制器與記憶體頁面管理方法,可使NVDIMM裝置在使用很少的管理成本就具有非常高的記憶體管理快取效率,以充分使用到DRAM的快速存取的效能,進而使NVDIMM裝置的資料存取速度可以接近DRAM,改善了傳統NVDIMM裝置的缺陷。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1是依據本發明的一實施例所繪示的以NVDIMM為主記憶體的電子裝置的方塊示意圖。
請參照圖1,在本實施例中,電子裝置1包括中央處理單元11、非揮發性雙列直插式記憶體模組(Non-Volatile Dual In-line Memory Module,NVDIMM)裝置12(以下亦稱,NVDIMM裝置12)、輸出單元13、輸入單元14、通訊單元15與電源供應單元16。所述中央處理單元(Central Process Unit,CPU)11耦接至NVDIMM裝置12,並且所述中央處理單元11經由匯流排連接至輸出單元13、輸入單元14、通訊單元15與電源供應單元16。所述電子裝置1例如是伺服器、個人電腦、筆記型電腦、平板電腦、手機等,本發明並不限於上述的電子裝置1的類型。
在本實施例中,所述中央處理單元11用以執行所述電子裝置1的作業系統,以管理電子裝置1的各個元件的整體互動與運作。所述中央處理單元11經由匯流排下達指令以控制輸出單元13、輸入單元14、通訊單元15與電源供應單元16。此外,所述中央處理單元11更利用所述NVDIMM裝置12來存取資料。應注意的是,在本實施例中,所述NVDIMM裝置12為所述電子裝置1的主記憶體。在一實施例中,所述NVDIMM裝置12同時為所述電子裝置1的主記憶體與主要資料儲存裝置。
在其他實施例中,所述中央處理單元11亦可被置換為其他形式的處理器,如,微處理器(micro-processor)、或是其他可程式化之處理單元(Programmable processor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似裝置。
所述輸出單元13用以接收所述中央處理單元11的指示來輸出影像或/及音訊。所述輸出單元13包括音訊輸出電路、顯示電路、顯示卡等電路元件,其耦接至對應的訊號輸出裝置(如,音訊輸出電路耦接至喇叭;顯示卡耦接至螢幕)。
所述輸入單元14用以接收使用者的輸入操作,以產生對應的資料與訊號給所述中央處理單元11,以讓使用者可藉由所述輸入操作來控制電子裝置1。所述輸入單元14包括用以耦接至鍵盤、滑鼠、觸控板等輸入裝置的電路元件或介面。
所述通訊單元15用以透過無線通訊或有線通訊的方式來傳輸或是接收資料。例如,通訊單元15可為支援無線相容認證(Wireless Fidelity,WiFi)系統、藍芽(bluetooth)等無線通訊協定的其中之一或其組合的通訊電路單元。又例如,通訊單元15可為網路介面卡(network interface card,NIC),其可支援有線通訊。
所述電源供應單元16例如是電源供應器,用以接收外部電源(如,市電)來提供電子裝置1運作時所需要的電力。所述電源供應單元16亦可包含電池,以在不接收外部電源的情況下,提供電力給電子裝置1。
如上述,所述NVDIMM裝置12可作為電子裝置1的主記憶體,用以暫存資料。此外,所述NVDIMM裝置12可作為電子裝置1的主要儲存裝置,用以儲存需要長時間存放的資料,如,管理電子裝置的軟體、韌體等系統資料,及使用者資料。以下利用圖2A來說明NVDIMM裝置12的構造的細節。
圖2A是依照本發明的一實施例所繪示的量測數據管理裝置的方塊示意圖。請參照圖2A,在本實施例中,所述NVDIMM裝置12包括NVDIMM控制器120、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)130以及非揮發性記憶體(Non-Volatile Memory,NVM)140。所述DRAM 130具有用以儲存資料的多個實體記憶體頁面(以下亦稱,DRAM頁面)。
所述NVM 140例如是快閃記憶體(Flash memory)、電可擦可規化唯讀記憶體(Electrically erasable programmable read only memory,EEPROM)、可擦可規化唯讀記憶體(Erasable programmable read only memory,EPROM)、磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)或可變電阻式記憶體(Resistive random-access memory,RRAM)。在本實施例中,所述NVM 140用以儲存系統資料141與使用者資料142。所述系統資料141例如是管理電子裝置1或NVDIMM裝置12的軟體或韌體(包括記憶體頁面管理模組200)。所述使用者資料142例如是電子裝置1的使用者儲存於所述NVDIMM裝置12的資料(如,音訊資料、影像資料、文字資料等)或所述使用者安裝於電子裝置1上的應用程式(如,作業系統、應用程式等)。所述NVM 140具有用以儲存資料的多個實體記憶體頁面(以下亦稱,NVM頁面)。
圖2B是依據本發明的一實施例所繪示的記憶體頁面管理模組的方塊示意圖。請參照圖2B,在一實施例中,記憶體頁面管理模組200包括作業系統溝通模組210、頁面清單管理模組220與快取管理模組230。在本實施例中,處理器122從NVM 140中載入記憶體頁面管理模組200並且執行所述記憶體頁面管理模組200以運行記憶體頁面管理程序,進而實現本實施例所提供的記憶體頁面管理方法。以下會藉由多個圖式來說明記憶體頁面管理模組200各部件的運作細節。
所述NVDIMM控制器120用以管理所述NVDIMM裝置12。所述NVDIMM控制器120包括NVDIMM介面121、處理器122與靜態隨機存取記憶體(Static Random Access Memory,DRAM,SRAM)123。所述NVDIMM控制器120的各個部件的運作可視為所述NVDIMM控制器120的整體運作。
所述處理器122為具備運算能力的硬體(例如晶片組、處理器等),所述處理器122為所述NVDIMM控制器120的核心元件。在本實施例中,處理器122,例如是一核心或多核心的中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Programmable processor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似裝置。
所述NVDIMM介面121用以耦接至中央處理單元11,即,所述處理器122可藉由所述NVDIMM介面接收來自所述中央處理單元11的資料或指令,或傳送指令或資料至所述中央處理單元11。
在本實施例中,所述SRAM 123用以接收處理器122的指示來暫存資料。所述SRAM 123可用以儲存適應性頁面清單(Adaptive Page List)310與轉譯後援緩衝區(Translation Lookaside Buffer,TLB)320。所述適應性頁面清單310用以記錄DRAM頁面位址與NVM頁面位址的映射關係。
圖3是依據本發明的一實施例所繪示的適應性頁面清單的示意圖。請參照圖3,所述適應性頁面清單310包括維持清單311、適應性最少最近使用清單(Adaptive Least Recently Used List,Adaptive LRU List)312(以下亦稱,適應性LRU清單)。所述適應性LRU清單312包括先進先出(First In First Out,FIFO)清單3121(以下亦稱,FIFO清單)與惰性清單3122。邊界B3用以指示適應性LRU清單312的前端;邊界B2用以指示適應性LRU清單312的後端;以及邊界B1用以指示適應性LRU清單312中FIFO清單3121與惰性清單3122之間的交界。也就是說,所述FIFO清單3121被配置且緊鄰於所述惰性清單3122的前方。所述處理器122(或記憶體頁面管理模組200)可使用對應的指標來標記/設定所述邊界B1~B3於SRAM 123中的記憶體位址,以設定FIFO清單3121與惰性清單3122的長度與空間。即,所述處理器122可經由改變所述所述邊界B1~B3的位置來改變所述FIFO清單3121與惰性清單3122的大小。在本實施例中,所述維持清單311的大小與記憶體位址亦可被預先設定。
在本實施例中,所述適應性LRU清單312用以記錄對應多個NVM頁面的多個條目(Entry)。所述多個條目的每一個條目可記錄對應一NVM頁面的NVM頁面位址及對應一DRAM頁面的DRAM頁面位址,其中所述DRAM頁面被設定映射至所述NVM頁面,以暫存對應所述NVM頁面的資料,即,所述DRAM頁面可暫存欲寫入至所映射之NVM頁面的資料或可暫存從所映射之NVM頁面所讀取的資料。也就是說,每一個條目會記錄NVM頁面位址與映射至所述NVM頁面位址的DRAM頁面位址。
此外,在一實施例中,所述多個條目的每一個條目更記錄所對應的NVM頁面的屬性資訊(attribute information)及所對應的DRAM頁面的屬性資訊。
在本實施例中,針對被映射至一個DRAM頁面的NVM頁面,所述處理器122(或記憶體頁面管理模組200)可根據對應所述NVM頁面的資料存取頻率,將所述一個NVM頁面分組至維持清單311、FIFO清單3121或惰性清單3122的其中之一。
如圖3所示,資料存取頻率高的記憶體頁面所儲存的資料可被視為熱資料,並且用以儲存所述熱資料的所述記憶體頁面被所述處理器122(或記憶體頁面管理模組200)分組至維持清單311;資料存取頻率低的記憶體頁面所儲存的資料可被視為冷資料,並且用以儲存所述冷資料的所述記憶體頁面被分組至惰性清單3122;資料存取頻率適中的記憶體頁面所儲存的資料可被視為暖資料,並且用以儲存所述暖資料的所述記憶體頁面被分組至FIFO清單3121。
值得一提的是,在本實施例中,所述處理器122(或記憶體頁面管理模組200)僅在分組一個NVM頁面至FIFO清單3121時,所述處理器122(或記憶體頁面管理模組200)可判斷將所述一個NVM頁面排列至FIFO清單3121的前端(即,配置所述NVM頁面為FIFO清單3121中的第一個FIFO頁面)或FIFO清單3121後端(配置所述NVM頁面為FIFO清單3121中的最後一個FIFO頁面);以及僅在分組一個NVM頁面至惰性清單3122時,所述處理器122(或記憶體頁面管理模組200)可判斷將所述一個NVM頁面排列至惰性清單3122的前端(即,配置所述NVM頁面為惰性清單3122中的第一個惰性頁面)或惰性清單3122的後端(配置所述NVM頁面為惰性清單3122中的最後一個惰性頁面)。除此之外,於其他時間點中,所述處理器122(或記憶體頁面管理模組200)並不調整被分組至所述維持清單311中的多個NVM頁面(亦可稱,多個維持頁面)的排列順序,不調整被分組至所述FIFO清單3121中的多個NVM頁面(亦可稱,多個FIFO頁面)的排列順序,並且不調整被分組至所述惰性清單3122中的多個NVM頁面(亦可稱,多個惰性頁面)的排列順序。如此一來,本發明所提供的記憶體頁面管理程序/記憶體頁面管理方法可限制(減少)因為調整被分組於所述適應性頁面清單的多個記憶體頁面的排列順序所導致的大量時間與運算資源的耗費。
以下會利用多個圖式與實施例來說明記憶體頁面管理模組200的運作與功能,及對應的記憶體頁面管理方法。
圖4A是依據本發明的一實施例所繪示的記憶體頁面管理方法的流程圖。請參照圖4A,對應接收狀態改變通知(步驟S40)與接收存取指令(步驟S42),記憶體頁面管理模組200會對應地執行不同的後續步驟。首先說明對應接收狀態改變通知(步驟S40)及其後續步驟。在步驟S40中,記憶體頁面管理模組200從主機系統的中央處理單元接收對應一狀態改變頁面的狀態改變通知。接著,在步驟S41中,記憶體頁面管理模組200根據所述狀態改變通知來使所述狀態改變頁面從當前所屬的清單被分組至適應性頁面清單中的維持清單或適應性LRU清單,其中所述狀態改變通知用以表示所述中央處理單元已改變所述狀態改變頁面的狀態為一活躍狀態或一不活躍狀態。
具體來說,本實施例所提供的記憶體頁面管理方法的一個主要精神為:監測執行於電子裝置1的作業系統所發生的記憶體頁面狀態改變事件,以作業系統的所述記憶體頁面狀態改變事件來發送對應的通知(即,狀態改變通知)至所述記憶體頁面管理模組200,進而藉由所述通知來分組被快取至DRAM中的記憶體頁面。如此一來,可非常有效率地利用對應記憶體頁面狀態改變事件的通知,來準確地掌握對應記憶體頁面狀態改變事件的記憶體頁面的重要性,進而應用在適應性頁面清單中的記憶體頁面的分組(即,根據所述狀態改變通知來分組所述狀態改變頁面至適應性頁面清單中的維持清單或適應性LRU清單)。
更詳細來說,在接收對應所述狀態改變頁面的所述狀態改變通知的運作之前,所述記憶體頁面管理模組200(或作業系統溝通模組210)對所述作業系統執行一對應所述NVDIMM裝置12的記憶體初始化操作,以安裝一作業系統通知模組110至所述作業系統,其中所述中央處理單元11執行所述作業系統通知模組110,以使所述作業系統通知模組110可監測作業系統所發生的記憶體頁面狀態改變事件,而發送對應的通知(亦稱,狀態改變通知)至作業系統溝通模組210。記憶體頁面狀態改變事件可區分為活躍事件與不活躍事件。當所述中央處理單元11(或作業系統)設定一個記憶體頁面(亦可稱為,狀態改變頁面)的狀態至活躍狀態(Active state),對應所述一個記憶體頁面的活躍事件發生;當所述中央處理單元11(或作業系統)設定一個記憶體頁面的狀態至不活躍狀態(Inactive state)時,對應所述一個記憶體頁面的不活躍事件發生。
所述作業系統通知模組110用以發送所述狀態改變通知至所述記憶體頁面管理模組。所述狀態改變通知包括一升級通知與一降級通知。當所述中央處理單元11(或作業系統)改變所述狀態改變頁面的狀態至所述活躍狀態(即,對應所述狀態改變頁面的活躍事件發生),所述作業系統通知模組110發送所述升級通知至所述記憶體頁面管理模組200(或作業系統溝通模組210),其中當所述中央處理單元11(或作業系統)改變所述狀態改變頁面的狀態至所述不活躍狀態(即,對應所述狀態改變頁面的不活躍事件發生),所述作業系統通知模組110發送所述降級通知至所述記憶體頁面管理模組200(或作業系統溝通模組210)。
圖5是依據本發明的一實施例所繪示的對應狀態改變通知的清單調整的示意圖。請參照圖5,在本實施例中,當所述記憶體頁面管理模組200(或作業系統溝通模組210)接收到對應所述狀態改變頁面的降級通知時,所述記憶體頁面管理模組200(或頁面清單管理模組220)將被分組至維持清單311中的所述狀態改變頁面分組至FIFO清單3121的前端。也就是說,當接收到被分組於維持清單311中的所述狀態改變頁面的降級通知時,所述狀態改變頁面不再被分組於維持清單311中,並且所述狀態改變頁面會被分組且排列至FIFO清單3121的最前方。應注意的是,若所接收的降級通知所對應的狀態改變頁面沒有被分組於維持清單311中,所述記憶體頁面管理模組200(或頁面清單管理模組220)並不會改變所述狀態改變頁面當前所屬的清單。若所接收的降級通知所對應的狀態改變頁面沒有被分組於維持清單311中且未被分組至適應性LRU清單312中,所述記憶體頁面管理模組200(或頁面清單管理模組220)不會將所述狀態改變頁面分組至適應性LRU清單312中。
另一方面,當所述記憶體頁面管理模組200(或作業系統溝通模組210)接收到對應所述狀態改變頁面的升級通知時,所述記憶體頁面管理模組200(或頁面清單管理模組220)將未被分組至維持清單311中的所述狀態改變頁面分組至維持清單311中(不設定所述狀態改變頁面於維持清單311中的排列順序)。也就是說,當接收所述狀態改變頁面的升級通知時,若所述狀態改變頁面並不被分組於維持清單311(如,已被分組至適應性LRU清單312中,或未被快取至DRAM 130)中,所述記憶體頁面管理模組200(或頁面清單管理模組220)會將所述狀態改變頁面會分組至維持清單311中(尚未被快取至DRAM 130中的所述狀態改變頁面會被快取至DRAM 130)。應注意的是,所述步驟S40、S41是獨立且平行地(相較於其他步驟,如,步驟S42~S48)被執行,即,每當所述記憶體頁面管理模組200(或作業系統溝通模組210)接收到所述狀態改變通知時,所述記憶體頁面管理模組200(或頁面清單管理模組220)會根據所對應的狀態改變頁面所屬的清單來判定是否調整所述狀態改變頁面所屬的清單。此外,被分組至維持清單311中的NVM頁面僅能基於所接收的對應的降級通知來從維持清單311中移除。換言之,在沒有接收到對應的降級通知的情況下,維持清單311中的NVM頁面皆會一直維持被快取於DRAM 130中的狀態。相對地,被分組至惰性清單3122中的NVM頁面具有一定的機率被移除。換言之,惰性清單3122中的NVM頁面有可能不繼續被快取於DRAM 130中。
另一方面。在步驟S42中,記憶體頁面管理模組200從所述中央處理單元接收一存取指令,其中所述存取指令指示對對應一目標頁面的目標頁面資料執行一存取操作。具體來說,當所述中央處理單元11欲執行存取主記憶體的記憶體存取操作時,所述中央處理單元11會經由記憶體管理模組111發送存取指令(包含對應的NVM頁面位址)至處理器122,以對所述NVDIMM裝置12進行記憶體存取操作(即,對對應一NVM頁面的目標頁面資料執行存取操作)。應注意的是,所述多個DRAM頁面並不被所述中央處理單元11所見/使用,即,所述中央處理單元11僅可發出對應一NVM頁面的存取指令,以對所述NVM頁面進行記憶體頁面存取操作。
例如,所述中央處理單元11欲寫入資料(亦稱,目標頁面資料)至一NVM頁面,所述中央處理單元11發送為對應記憶體寫入操作的存取指令,以指示所述處理器122(所述記憶體頁面管理模組200)將所述資料寫入至所述NVM頁面(亦稱,目標頁面)。又例如,所述中央處理單元11欲從一NVM頁面讀取資料(亦稱,目標頁面資料),所述中央處理單元11發送為對應記憶體寫入操作的存取指令,以指示所述處理器122從所述NVM頁面(亦稱,目標頁面)讀取所述資料。
接著,在步驟S43中,記憶體頁面管理模組200(或頁面清單管理模組220)根據所述存取指令辨識所述目標頁面與對應所述目標頁面的一目標NVM頁面位址。具體來說,所述存取指令可包括用以識別所述目標頁面的資訊(如,所述目標頁面的目標NVM頁面位址或頁面識別碼),並且記憶體頁面管理模組200(或頁面清單管理模組220)可根據所述資訊來辨識目標NVM頁面位址。
在辨識到對應目標頁面的目標NVM頁面位址後,在步驟S44中,記憶體頁面管理模組200(或快取管理模組230)可根據對應所述目標NVM頁面位址來判斷對應所述目標頁面的快取命中狀態為命中或未命中。反應於判定對應所述目標頁面的所述快取命中狀態為命中,接續至步驟S45;反應於判定對應所述目標頁面的所述快取命中狀態為未命中,接續至步驟S48。以下利用圖4B來詳細說明步驟S44、S45的細節。
圖4B是依據本發明的一實施例所繪示的圖4A的步驟S44、S45的流程圖。請參照圖4B,步驟S44包括步驟S441~S447,並且步驟S45包括S45-1、S45-2、S45-3。
在本實施例中,在步驟S441中,記憶體頁面管理模組200(或快取管理模組230)判斷對應所述存取指令的記憶體存取計數值是否為預定計數值。具體來說,所述中央處理單元11所發送的存取指令會遵循一個規則:所發送的存取指令會對應至一個快取線(cache line)。所述快取線具有M個存取指令,其中對應相同快取線的M個存取指令所對應的目標頁面為相同的記憶體頁面。所述M為預定正整數。基於此規則,每當記憶體頁面管理模組200(或快取管理模組230)處理一個存取指令時,記憶體頁面管理模組200(或快取管理模組230)會依據循環(round-robin)方式來累計一個記憶體存取計數值,以判定先後所接收的存取指令是否屬於相同的快取線/目標頁面。
例如,假設M為8。記憶體頁面管理模組200(或快取管理模組230)會依據循環(round-robin)方式來累計一個記憶體存取計數值為「0、1、2、3、4、5、6或7」。即,當記憶體頁面管理模組200(或快取管理模組230)接收到一個快取線的第一個存取指令時,所對應的記憶體存取計數值可被累計為「0」。接著,當記憶體頁面管理模組200(或快取管理模組230)接收到一個快取線的第二個存取指令時,所對應的記憶體存取計數值可被累計為「1」。以此類推,當記憶體頁面管理模組200(或快取管理模組230)接收到一個快取線的最後一個存取指令時,所對應的記憶體存取計數值可被累計為「7」,並且當記憶體頁面管理模組200(或快取管理模組230)接收到另一個快取線的第一個存取指令時,所對應的記憶體存取計數值可再被累計為「0」。所述「0」亦被稱為預定計數值。
也就是說,當對應一個存取指令的記憶體存取計數值被累計不為「0」(如,1~7的其中之一)時,記憶體頁面管理模組200(或快取管理模組230)可知道所述存取指令為舊的快取線。即,此存取指令是對應至前一個存取指令所對應的目標頁面,並且此存取指令是對應至前一個存取指令所對應的目標頁面的目標NVM頁面位址。換言之,記憶體頁面管理模組200(或快取管理模組230)可直接將前次所查找到的目標NVM頁面位址所映射的DRAM頁面位址(亦稱,前次DRAM頁面位址)作為對應本次存取指令的目標NVM頁面位址所映射的DRAM位址(亦稱,目標DRAM頁面位址)。如此一來,記憶體頁面管理模組200(或快取管理模組230)可不需要重新查找對應本次存取指令的目標NVM頁面位址,而節省了大量的時間。此外,由於前次存取指令與本次存取指令對應至相同的目標頁面,在處理前次存取指令時,所述目標頁面的資料應已被快取至DRAM 130中。即,記憶體頁面管理模組200(或快取管理模組230)可直接判定本次存取指令的所述目標頁面的所述快取命中狀態為命中(因對應的資料已被快取至DRAM 130中)。
另一方面,當對應一個存取指令的記憶體存取計數值被累計為「0」時,記憶體頁面管理模組200(或快取管理模組230)可知道所述存取指令為一個新的快取線。也就是說,記憶體頁面管理模組200(或快取管理模組230)不可直接將前次所查找到的目標NVM頁面位址作為對應本次存取指令的目標NVM頁面位址。值得一提的是,上述記憶體存取計數值與預定計數值是依據所述中央處理單元11所執行的記憶體存取操作的快取線的規格來預先設定的。
如上述,若在步驟S441中,記憶體頁面管理模組200(或快取管理模組230)判定記憶體存取計數值不為預定計數值,接續至步驟S442,記憶體頁面管理模組200(或快取管理模組230)判定對應所述目標頁面的所述快取命中狀態為命中。接著,在步驟S45-1中,記憶體頁面管理模組200(或快取管理模組230)直接將對應前次存取指令的前次DRAM頁面位址辨識為所述目標NVM頁面位址所映射的目標DRAM頁面位址。應注意的是,每次所查找到的目標DRAM頁面位址會獨立地被標記或記錄。
反之,若在步驟S441中,記憶體頁面管理模組200(或快取管理模組230)判定記憶體存取計數值為預定計數值,接續至步驟S443,記憶體頁面管理模組200(或快取管理模組230)查找轉譯後援緩衝區,以判斷所述轉譯後援緩衝區320中是否具有所述目標NVM頁面位址。其中,反應於判定所述轉譯後援緩衝區320中具有所述目標NVM頁面位址,接續至步驟S444,記憶體頁面管理模組200(或快取管理模組230)判定對應所述目標頁面的所述快取命中狀態為命中,並且執行步驟S45-2,即,記憶體頁面管理模組200(或快取管理模組230)經由所述轉譯後援緩衝區320中辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址。
需說明的是,在本實施例中,記憶體頁面管理模組200(或快取管理模組230)會記錄近期被存取過的多個目標NVM頁面位址與所映射的多個目標DRAM頁面位址的多個映射資訊至所述轉譯後援緩衝區320。所述轉譯後援緩衝區320的使用空間會小於所述適應性頁面清單310的使用空間。也就是說,若在步驟S441中,記憶體頁面管理模組200(或快取管理模組230)判定記憶體存取計數值為預定計數值,記憶體頁面管理模組200(或快取管理模組230)不能直接獲得對應的目標DRAM頁面位址,並且記憶體頁面管理模組200(或快取管理模組230)可先查找轉譯後援緩衝區320,以判斷對應本次存取指令的目標NVM頁面位址是否近期內被存取過。
如此一來,由於記憶體存取操作有存取近期內曾經被存取過的記憶體頁面的特性,記憶體頁面管理模組200(或快取管理模組230)可藉由查找較小的所述轉譯後援緩衝區320,以縮短查找目標NVM頁面位址的時間。也就是說,若記憶體頁面管理模組200(或快取管理模組230)可從所述轉譯後援緩衝區320中查找到目標NVM頁面位址(步驟S443à是),記憶體頁面管理模組200(或快取管理模組230)可利用所述轉譯後援緩衝區320所記錄的映射資訊來快速地找到映射至目標NVM頁面位址的(步驟S45-2)目標DRAM頁面位址。
反之,若記憶體頁面管理模組200(或快取管理模組230)不可從所述轉譯後援緩衝區320中查找到目標NVM頁面位址(步驟S443à否),接續至步驟S445,記憶體頁面管理模組200(或快取管理模組230)查找所述適應性頁面清單310,以判斷所述適應性頁面清單中是否具有所述目標NVM頁面位址。其中,反應於判定所述適應性頁面清單中具有所述目標NVM頁面位址(S445à是),記憶體頁面管理模組200(或快取管理模組230)判定對應所述目標頁面的所述快取命中狀態為命中,並且接續至步驟S45-3,即,記憶體頁面管理模組200(或快取管理模組230)經由所述適應性頁面清單310辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址。反應於判定所述適應性頁面清單中不具有所述目標NVM頁面位址(S445à否),接續至步驟S447,記憶體頁面管理模組200(或快取管理模組230)判定對應所述目標頁面的所述快取命中狀態為未命中。接著,流程會接續至步驟S48。
請再回到圖4A,反應於判定對應所述目標頁面的所述快取命中狀態為命中,接續至步驟S45,記憶體頁面管理模組200(或快取管理模組230)辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址。所被辨識的目標DRAM頁面位址可被用於處理所述存取指令。步驟S45的實施方式可依據步驟S44的判斷流程而改變,細節已經詳述於上,不贅述於此。
接著,在步驟S46中,記憶體頁面管理模組200(或頁面清單管理模組220)反應於所述目標頁面已被分組至所述適應性LRU清單312的惰性清單3122,將所述目標頁面分組至所述適應性LRU清單312的FIFO清單3121。
具體來說,在判定對應所述目標頁面的所述快取命中狀態為命中後,記憶體頁面管理模組200(或頁面清單管理模組220)會進一步檢查所述目標頁面當前所屬的清單是否為惰性清單。若是,記憶體頁面管理模組200(或頁面清單管理模組220)會將所述目標頁面分組至(調整命中的目標頁面的分組)FIFO清單3121。如此一來,可藉由調整被命中的目標頁面的分組從惰性清單3122至FIFO清單3121,而降低了所述目標頁面從DRAM 130中被移除的機率。在本實施例中,被分組至惰性清單3122中的記憶體頁面有可能會從DRAM 130中刪除(不被DRAM 130所快取)。
圖6是依據本發明的一實施例所繪示的對應快取命中於惰性清單的清單調整的示意圖。請參照圖6,舉例來說,假設被判定為命中的目標頁面為NVM頁面601。如,圖6右方所示,NVM頁面601所儲存的資料已經被快取至DRAM 130中。如圖6的圖例<6.1>所示,所述NVM頁面601被分組至惰性清單3122,即,對應所述NVM頁面601的條目e601已被記錄至惰性清單3122中。在被判定為命中的目標頁面為NVM頁面601的情況下,記憶體頁面管理模組200(或頁面清單管理模組220)會將條目e601從惰性清單3122移動至FIFO清單3121的前端(如,箭頭A61所示),並且記憶體頁面管理模組200(或頁面清單管理模組220)會將改變FIFO清單3121與惰性清單3122之間的邊界B61調整為邊界B61’(如,箭頭A62所示)。完成調整後的FIFO清單3121與惰性清單3122可參見圖6的圖例<6.2>。
請再回到4A,接著,在步驟S47中,記憶體頁面管理模組200根據所述存取指令,使用所述目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取操作。
具體來說,記憶體頁面管理模組200會根據存取指令的種類來進行不同的存取操作。例如,若所述存取指令對應記憶體寫入操作(即,所述存取指令指示所述處理器122將所述存取指令的所述目標頁面資料寫入至所述目標頁面),記憶體頁面管理模組200會將所述存取指令中的所述目標頁面資料寫入至對應所述目標DRAM頁面位址的目標DRAM頁面,以利用所述存取指令的所述目標頁面資料來更新已經被快取的所述目標DRAM頁面所儲存的資料。接著,記憶體頁面管理模組200可回應所述中央處理單元11所述存取操作已經完成。
另一方面,若所述存取指令對應記憶體讀取操作(即,所述存取指令指示所述處理器122從所述目標頁面讀取所述目標頁面資料),記憶體頁面管理模組200會從對應所述目標DRAM頁面位址的目標DRAM頁面中讀取所述目標頁面資料,並且傳送所讀取的目標頁面資料至所述中央處理單元11,並且回應所述中央處理單元11所述存取操作已經完成。
再回到步驟S44,如上述,若判定對應所述目標頁面的快取命中狀態為未命中,接續至步驟S48。在步驟S48中,儲存對應所述目標頁面的所述目標頁面資料至DRAM的目標DRAM頁面中,將所述目標DRAM頁面的目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單。以下利用圖4C來詳細說明。
圖4C是依據本發明的一實施例所繪示的圖4A的步驟S48的流程圖。請參照圖4C,在步驟S481中,記憶體頁面管理模組200(或快取管理模組230)判斷所述DRAM 130是否有空白空間(Empty space)。具體來說,若對應所述目標頁面的快取命中狀態為未命中,記憶體頁面管理模組200(或快取管理模組230)會開始執行對應所述目標頁面的快取操作,以將對應所述存取指令的所述目標頁面資料快取至DRAM 130中。
基此,記憶體頁面管理模組200(或快取管理模組230)會先執行步驟S481來確認DRAM 130是否有空白空間來儲存所述目標頁面資料。
反應於DRAM 130沒有空白空間(步驟S481à否),接續至步驟S482,記憶體頁面管理模組200(或快取管理模組230)辨識被分組至惰性清單中的多個惰性頁面中的末端惰性頁面,並且辨識所述末端惰性頁面的末端NVM頁面位址所映射的末端DRAM頁面位址。接著,記憶體頁面管理模組200(或快取管理模組230)從所述惰性清單中移除所述末端惰性頁面,並且從所述DRAM的對應所述末端DRAM頁面位址的DRAM頁面中刪除所儲存的資料。以下利用圖8來說明。
圖8是依據本發明的一實施例所繪示的快取未命中且DRAM沒有空白空間的清單調整的示意圖。請參照圖8,假設惰性清單8122中的最後一個條目為條目e802,並且條目e802對應NVM頁面802。即,所述NVM頁面802當前被分組至惰性清單的末端,並且所述NVM頁面802為被分組至惰性清單3122中的多個NVM頁面(亦稱,惰性頁面)中的末端惰性頁面。此外,假設目標頁面為NVM頁面801,並且對應NVM頁面801的快取命中狀態為未命中。
在此例子中,記憶體頁面管理模組200(或快取管理模組230)會從惰性清單3122中移除條目e802,並且將快取至DRAM 130中的對應NVM頁面802的資料刪除(若被快取至DRAM 130中的資料相同於原本於NVM 140中的資料),或是將快取至DRAM 130中的對應NVM頁面802的資料搬移回NVM 140中(若被快取至DRAM 130中的資料不相同於原本於NVM 140中的資料)。如此一來,DRAM 130可被清出一個空白空間以儲存NVM頁面801的資料,並且適應性LRU清單312也被清出空白空間以記錄一個條目。
在清出DRAM 130與適應性LRU清單312的空白空間後,接續至步驟S484,記憶體頁面管理模組200(或快取管理模組230)儲存對應所述目標頁面的所述目標頁面資料至所述DRAM中的所述目標DRAM頁面,並且辨識所述目標DRAM頁面的所述目標DRAM頁面位址。即,記憶體頁面管理模組200(或快取管理模組230)將對應空白空間的DRAM頁面作為目標DRAM頁面,並且寫入目標頁面資料至目標DRAM頁面。
具體來說,若所述存取指令對應記憶體寫入操作(即,所述存取指令指示所述處理器122將所述存取指令的所述目標頁面資料寫入至所述目標頁面),記憶體頁面管理模組200(或快取管理模組230)會將所述存取指令中的所述目標頁面資料寫入至DRAM 130中的目標DRAM頁面801,並且辨識DRAM頁面801的DRAM頁面位址為目標DRAM頁面位址。
另一方面,若所述存取指令對應記憶體讀取操作(即,所述存取指令指示所述處理器122從所述目標頁面讀取所述目標頁面資料),如圖8右方所示,記憶體頁面管理模組200(或快取管理模組230)會先從NVM 140中複製NVM頁面801的資料至DRAM 130中的DRAM頁面801,辨識DRAM頁面801的DRAM頁面位址為目標DRAM頁面位址,並且從對應所述目標DRAM頁面位址的目標DRAM頁面801中讀取所複製的目標頁面資料,並且傳送所讀取的目標頁面資料至所述中央處理單元11。
在完成步驟S484後,在步驟S485中,記憶體頁面管理模組200(或頁面清單管理模組220)判斷所述FIFO清單的大小與所述惰性清單的大小的比值是否大於預定比值。
反應於所述FIFO清單的大小與所述惰性清單的大小的比值大於預定比值(步驟S485à是),接續至步驟S486,記憶體頁面管理模組200(或頁面清單管理模組220)將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述所述適應性LRU清單的所述惰性清單的前端。
此外,反應於所述FIFO清單的大小與所述惰性清單的大小的比值不大於預定比值(步驟S485à否),接續至步驟S487,記憶體頁面管理模組200(或頁面清單管理模組220)將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的後端。
具體來說,記憶體頁面管理模組200(或頁面清單管理模組220)會記錄條目e801以設定目標DRAM頁面位址映射至目標NVM頁面位址,並且根據所述比值與所述預定比值來判斷將條目e801記錄至惰性清單3122中(如圖8的圖例<8.1>所示)或是FIFO清單3121中(如圖8的圖例<8.2>所示)。
更詳細來說,若比值大於預定比值,表示FIFO清單3121的大小大於預期大小,則記憶體頁面管理模組200(或頁面清單管理模組220)會將新增的條目e801記錄至惰性清單3122的前端(如,箭頭A81所示),以避免繼續增加FIFO清單3121的大小。反之,若比值大於預定比值,表示FIFO清單3121的大小沒有大於預期大小,則記憶體頁面管理模組200(或頁面清單管理模組220)可調整邊界B81至邊界B81’,以將新增的條目e801繼續記錄至FIFO清單3121(如,箭頭A82所示)。
然而,應注意的是,在另一實施例中,步驟S48不包括步驟S485、S486與S487,並且步驟S484會接續至步驟S489。在步驟S489中,記憶體頁面管理模組200(或頁面清單管理模組220)將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的前端。也就是說,在此另一實施例中,記憶體頁面管理模組200(或頁面清單管理模組220)不會依據所述FIFO清單3121與惰性清單3122之間的大小比值來判斷條目e801被記錄的位置,並且記憶體頁面管理模組200(或頁面清單管理模組220)會直接將條目e801記錄至FIFO清單3121的前端。
請再回到圖4C,在執行完步驟S481後,反應於DRAM 130有空白空間(步驟S481à是),流程接續至步驟S484,即,記憶體頁面管理模組200(或快取管理模組230)不需要執行步驟S482與步驟S483。並且接續至後續的步驟S485、S486、S487。
圖7是依據本發明的一實施例所繪示的對應快取未命中且DRAM有空白空間的清單調整的示意圖。請參照圖7,假設目標頁面為NVM頁面701,對應的快取命中狀態為未命中,並且DRAM有空白空間。執行步驟S484的期間,由於DRAM有空白空間可以直接用來儲存目標頁面資料,記憶體頁面管理模組200(或快取管理模組230)可將NVM 140中的NVM頁面701的資料複製至DRAM 130中的目標DRAM頁面,並且辨識對應所述目標DRAM頁面的目標DRAM頁面位址。
例如,若所述存取指令對應記憶體寫入操作(即,所述存取指令指示所述處理器122將所述存取指令的所述目標頁面資料寫入至所述目標頁面),記憶體頁面管理模組200(或快取管理模組230)會將所述存取指令中的所述目標頁面資料寫入至DRAM 130中的目標DRAM頁面701,並且辨識DRAM頁面701的DRAM頁面位址為目標DRAM頁面位址。
另一方面,若所述存取指令對應記憶體讀取操作(即,所述存取指令指示所述處理器122從所述目標頁面讀取所述目標頁面資料),如圖7右方所示,記憶體頁面管理模組200(或快取管理模組230)會先從NVM 140中複製NVM頁面701的資料至DRAM 130中的DRAM頁面701,辨識DRAM頁面701的DRAM頁面位址為目標DRAM頁面位址,並且從對應所述目標DRAM頁面位址的目標DRAM頁面701中讀取所複製的目標頁面資料,並且傳送所讀取的目標頁面資料至所述中央處理單元11。記憶體頁面管理模組200(或頁面清單管理模組220)產生條目e701以記錄目標DRAM頁面位址與目標NVM頁面位址的映射關係。
接著,在步驟S485中,記憶體頁面管理模組200(或頁面清單管理模組220)根據判斷所述FIFO清單的大小與所述惰性清單的大小的比值是否大於預定比值,以判斷將所述條目e701儲存至惰性清單3122或FIFO清單3121中。細節如同上方對於圖8的敘述,不贅述於此。其中,應注意的是,由於DRAM尚具有空白空間,適應性LRU清單312的惰性清單3122亦可繼續被新增條目。記憶體頁面管理模組200(或頁面清單管理模組220)可調整邊界B72至邊界B72’,以改變惰性清單3122的大小,進而使條目e701可被儲存至惰性清單3122中。
值得一提的是,在另一實施例中,為了進一步清出更多的DRAM 130的空白空間,在完成步驟S483後,記憶體頁面管理模組200更額外執行步驟S488。在所述步驟S488中,記憶體頁面管理模組200根據所述末端NVM頁面位址執行串行頁面刪除操作。以下利用圖4D與圖9來說明。
圖4D是依據本發明的一實施例所繪示的圖4B的步驟S488的流程圖。圖9是依據本發明的一實施例所繪示的串行頁面刪除操作的示意圖。請參照圖4D,於串行頁面刪除操作中,在步驟S4881,記憶體頁面管理模組200(或頁面清單管理模組220)根據所述末端NVM頁面位址辨識分組至所述惰性清單中的一或多個串行刪除頁面,其中所述一或多個串行刪除頁面的串行刪除NVM頁面位址與所述末端NVM頁面位址為連續的多個NVM頁面位址。
舉例來說,請參照圖9的圖例<9.1>,假設被分組至惰性清單3122的多個惰性頁面的對應的NVM頁面位址為「11、9、12、23、1、24、23、85、2、59、3、4」,其中對應NVM頁面位址「4」的為最後一個NVM頁面位址(亦稱,末端NVM頁面位址或末端惰性頁面位址),所述末端NVM頁面位址為被分組至惰性清單3122的末端惰性頁面的記憶體頁面位址。在本實施例中,記憶體頁面管理模組200(或頁面清單管理模組220)會利用預定檢查長度(如,4)來從末端NVM頁面位址往前檢查預定檢查長度的數目的NVM頁面位址,以判斷排列在末端NVM頁面位址之前的惰性清單3122中否具有可與末端NVM頁面位址組成連續的多個頁面位址的一或多個NVM頁面位址。在此圖例<9.1>的例子中,基於預定檢查長度「4」,於末端NVM頁面位址「4」與末端NVM頁面位址「4」之前三個NVM頁面位址(共四個NVM頁面位址),記憶體頁面管理模組200(或頁面清單管理模組220)查找到末端NVM頁面位址「4」與NVM頁面位址「2」、「3」可組成連續的多個NVM頁面位址。因此,記憶體頁面管理模組200(或頁面清單管理模組220)會將NVM頁面位址「2」、「3」設定為串行刪除NVM頁面位址,串行刪除NVM頁面位址「2」、「3」對應兩個串行刪除頁面。
在圖例<9.2>的例子中,基於預定檢查長度「8」,於末端NVM頁面位址「4」與末端NVM頁面位址「4」之前七個NVM頁面位址(共八個NVM頁面位址),記憶體頁面管理模組200(或頁面清單管理模組220)查找到末端NVM頁面位址「4」與NVM頁面位址「1」、「2」、「3」可組成連續的多個NVM頁面位址,因此記憶體頁面管理模組200(或頁面清單管理模組220)會將NVM頁面位址「1」、「2」、「3」設定為串行刪除NVM頁面位址,串行刪除NVM頁面位址「1」、「2」、「3」對應三個串行刪除頁面。
接著,在步驟S4882中,記憶體頁面管理模組200(或頁面清單管理模組220)辨識映射至一或多個串行刪除NVM頁面位址的一或多個串行刪除DRAM頁面位址,並且記憶體頁面管理模組200(或快取管理模組230)從所述DRAM的對應所述一或多個串行刪除DRAM頁面位址的一或多個串行刪除DRAM頁面中刪除所儲存的資料。舉例來說,對應圖例<9.1>,記憶體頁面管理模組200(或頁面清單管理模組220)經由惰性清單3122中對應多個串行刪除NVM頁面位址「2」、「3」的多個條目來辨識映射至多個串行刪除NVM頁面位址「2」、「3」的多個串行刪除DRAM頁面位址。接著,記憶體頁面管理模組200(或快取管理模組230)從所述DRAM的對應所述一或多個串行刪除DRAM頁面位址的一或多個串行刪除DRAM頁面中刪除所儲存的資料可根據所辨識的多個串行刪除DRAM頁面位址來刪除DRAM 130中對應串行刪除NVM頁面位址「2」、「3」的被快取的頁面資料或搬移DRAM 130中對應串行刪除NVM頁面位址「2」、「3」的被快取的頁面資料至NVM 140中。
接著,當快取的頁面資料從DRAM中被移除後,在步驟S4883中,記憶體頁面管理模組200(或頁面清單管理模組220)從所述惰性清單3122中移除所述一或多個串行刪除頁面。舉例來說,對應圖例<9.1>,記憶體頁面管理模組200(或頁面清單管理模組220)從所述惰性清單3122中移除對應串行刪除NVM頁面位址「2」、「3」的多個條目。如此一來,所述串行頁面刪除操作已完成。
上述的串行頁面刪除操作的精神在於,原本欲被移除的末端惰性頁面與頁面位址與末端惰性頁面連續的其他惰性頁面具有資料存取的關聯性。也就是說,頁面位址為連續的多個NVM頁面很有可能具有相同的資料存取機率/頻率。基此,由於欲被移除的惰性清單中的末端NVM頁面為最不可能再被存取的頁面,因此,與末端NVM頁面位址連續的其他頁面位址的NVM頁面也應該一併被移除(從DRAM 130中取消對應的快取)。
在另一實施例中,串行頁面刪除操作中被刪除的多個串行刪除頁面的數量還可經由預先設定的刪除個數門檻值來限制。即,串行頁面刪除操作中被刪除的多個串行刪除頁面的數量為刪除個數門檻值的數值減去一。如此一來,可保證每次清理DRAM的空間時,被刪除的記憶體頁面的總數量不會超過刪除個數門檻值。舉例來說,對應圖例<9.2>,由於刪除個數門檻值為3,即使經由預定檢查長度「8」,記憶體頁面管理模組200(或頁面清單管理模組220)找到共3個與末端NVM頁面位址連續的NVM頁面位址「1」、「2」、「3」,但對應NVM頁面位址「1」的NVM頁面會被保留,以使NVM頁面位址「4」、「2」、「3」共三個NVM頁面會被取消快取,而從惰性清單中被移除。
綜上所述,本發明所提供的記憶體控制器與記憶體頁面管理方法,可從主機系統所執行的作業系統來接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來精確地判斷所快取的記憶體頁面的所處的資料存取頻率分組,以藉此將所快取的記憶體頁面自目前的頁面清單移動至可保持快取狀態的另一組頁面清單(如,維持清單),並且增強所快取的記憶體頁面的快取準確度。此外,更可根據判斷對應存取指令的目標頁面的快取命中狀態為命中或未命中來進一步分組所快取的記憶體頁面,以讓更不常使用的記憶體頁面有較高的機率從DRAM的快取中移除,並且讓較常被使用的記憶體頁面具有較低的機率來避免從DRAM的快取中被移除。如此一來,本發明所提供的記憶體控制器與記憶體頁面管理方法,可使NVDIMM裝置在使用很少的管理成本就具有非常高的記憶體管理快取效率,以充分使用到DRAM的快速存取的效能,進而使NVDIMM裝置的資料存取速度可以接近DRAM,改善了傳統NVDIMM裝置的缺陷。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
1:電子裝置
11:中央處理單元
12:NVDIMM裝置
13:輸出單元
14:輸入單元
15:通訊單元
16:電源供應單元
110:作業系統通知模組
111:記憶體管理模組
120:NVDIMM控制器
121:NVDIMM介面
122:處理器
123:靜態隨機存取記憶體
310:適應性頁面清單
320:轉譯後援緩衝區
130:動態隨機存取記憶體
140:非揮發性記憶體
141:系統資料
142:使用者資料
200:記憶體頁面管理模組 210:作業系統溝通模組 220:頁面清單管理模組 230:快取管理模組 311:維持清單 312:適應性LRU清單 3121:FIFO清單 3122:惰性清單 B1、B2、B3、B51、B52、B53、B61、B61’、B71、B71’、B72、B72’、B82、B81、B81’:邊界 S41、S42、S43、S44、S45、S46、S47、S48:記憶體頁面管理方法的流程步驟 S441、S442、S443、S444、S445、S446、S447、S45-1、S45-2、S45-3:步驟S44、步驟S45的流程步驟 S481、S482、S483、S484、S485、S486、S487、S488、S489:步驟S48的流程步驟 S4881、S4882、S4883:步驟S48的流程步驟 A61、A62、A71、A72、A81、A82:箭頭 e601、e701、e801、e802:條目 601、701、801、802:記憶體頁面
圖1是依據本發明的一實施例所繪示的以NVDIMM為主記憶體的電子裝置的方塊示意圖。 圖2A是依據本發明的一實施例所繪示的NVDIMM裝置的方塊示意圖。 圖2B是依據本發明的一實施例所繪示的記憶體頁面管理模組的方塊示意圖。 圖3是依據本發明的一實施例所繪示的適應性頁面清單的示意圖。 圖4A是依據本發明的一實施例所繪示的記憶體頁面管理方法的流程圖。 圖4B是依據本發明的一實施例所繪示的圖4A的步驟S44、S45的流程圖。 圖4C是依據本發明的一實施例所繪示的圖4A的步驟S48的流程圖。 圖4D是依據本發明的一實施例所繪示的圖4B的步驟S488的流程圖。 圖5是依據本發明的一實施例所繪示的對應狀態改變通知的清單調整的示意圖。 圖6是依據本發明的一實施例所繪示的對應快取命中於惰性清單的清單調整的示意圖。 圖7是依據本發明的一實施例所繪示的對應快取未命中且DRAM有空白空間的清單調整的示意圖。 圖8是依據本發明的一實施例所繪示的快取未命中且DRAM沒有空白空間的清單調整的示意圖。 圖9是依據本發明的一實施例所繪示的串行頁面刪除操作的示意圖。
S41、S42、S43、S44、S45、S46、S47、S48:記憶體頁面管理方法的流程步驟

Claims (20)

  1. 一種記憶體控制器,用於控制一主機系統的一非揮發性雙列直插式記憶體模組(NVDIMM)裝置,其中所述NVDIMM裝置包括所述記憶體控制器、一動態隨機存取記憶體(DRAM)與一非揮發性記憶體(NVM),其中所述DRAM具有多個DRAM頁面,並且所述NVM具有多個NVM頁面,所述記憶體控制器包括:一NVDIMM介面,用以耦接至所述主機系統的一中央處理單元,其中所述中央處理器用以存取所述NVM的所述多個NVM頁面,並且執行所述主機系統的作業系統;一靜態隨機存取記憶體(SRAM),用以暫存資料;一處理器,耦接至所述動態隨機存取記憶體與所述非揮發性記憶體模組、所述NVDIMM介面與所述靜態隨機存取記憶體,其中所述處理器用以存取且執行儲存於所述非揮發性記憶體模組中的一記憶體頁面管理模組,以實現一記憶體頁面管理方法,其中所述記憶體頁面管理模組用以從所述中央處理單元接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來使所述狀態改變頁面自當前所屬的清單被分組至適應性頁面清單中的維持清單或適應性LRU清單,其中所述狀態改變通知用以表示所述作業系統已改變所述狀態改變頁面的狀態為一活躍狀態或一不活躍狀態,其中所述記憶體頁面管理模組更用以從所述中央處理單元接 收一存取指令,其中所述存取指令指示對對應一目標頁面的目標頁面資料執行一存取操作,其中所述記憶體頁面管理模組更用以根據所述存取指令辨識所述目標頁面與對應所述目標頁面的一目標NVM頁面位址,其中所述記憶體頁面管理模組更用以根據對應所述存取指令的記憶體存取計數值來判斷對應所述目標頁面的快取命中狀態為命中或未命中,其中反應於判定對應所述目標頁面的所述快取命中狀態為命中,所述記憶體頁面管理模組更用以辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址,其中反應於所述目標頁面已被分組至所述適應性最近最少使用(LRU)清單的惰性清單,所述記憶體頁面管理模組更用以將所述目標頁面分組至所述適應性LRU清單的先進先出(FIFO)清單,其中反應於判定對應所述目標頁面的所述快取命中狀態為未命中,所述記憶體頁面管理模組更用以儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的目標DRAM頁面中,將所述目標DRAM頁面的目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單, 其中所述記憶體頁面管理模組更用以根據所述存取指令,使用所述目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取操作。
  2. 如申請專利範圍第1項所述的記憶體控制器,其中在接收對應所述狀態改變頁面的所述狀態改變通知的運作之前,所述記憶體頁面管理模組對所述作業系統執行一對應所述NVDIMM裝置的記憶體初始化操作,以安裝一作業系統通知模組至所述作業系統,其中所述中央處理單元執行所述作業系統通知模組,其中所述作業系統通知模組用以發送所述狀態改變通知至所述記憶體頁面管理模組,並且所述狀態改變通知包括一升級通知與一降級通知,其中當所述作業系統改變所述狀態改變頁面的狀態至所述活躍狀態,所述作業系統通知模組發送所述升級通知至所述記憶體頁面管理模組,其中當所述作業系統改變所述狀態改變頁面的狀態至所述不活躍狀態,所述作業系統通知模組發送所述降級通知至所述記憶體頁面管理模組。
  3. 如申請專利範圍第2項所述的記憶體控制器,其中在所述根據所述狀態改變通知來使所述狀態改變頁面自當前所屬的清單被分組至所述適應性頁面清單中的所述維持清單或所述適應性LRU清單的運作中, 反應於所述狀態改變通知為所述降級通知且所述狀態改變頁面已被分組於所述維持清單中,所述記憶體頁面管理模組將所述狀態改變頁面分組至所述適應性LRU清單的所述FIFO清單的前端,其中反應於所述狀態改變通知為所述升級通知且所述狀態改變頁面已被分組於所述適應性LRU清單中,所述記憶體頁面管理模組將所述狀態改變頁面分組至所述維持清單中。
  4. 如申請專利範圍第1項所述的記憶體控制器,其中在所述記憶體頁面管理模組更用以儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的所述目標DRAM頁面中,將所述目標DRAM頁面的所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的運作中,所述記憶體頁面管理模組儲存對應所述目標頁面的所述目標頁面資料至所述DRAM中的所述目標DRAM頁面,並且辨識所述目標DRAM頁面的所述目標DRAM頁面位址。
  5. 如申請專利範圍4項所述的記憶體控制器,其中所述記憶體頁面管理模組更將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的前端。
  6. 如申請專利範圍4項所述的記憶體控制器,其中所述記憶體頁面管理模組更判斷所述FIFO清單的大小與所述惰性清單的大小的比值是否大於預定比值, 其中反應於所述FIFO清單的大小與所述惰性清單的大小的所述比值大於預定比值,所述記憶體頁面管理模組將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述所述適應性LRU清單的所述惰性清單的前端,其中反應於所述FIFO清單的大小與所述惰性清單的大小的所述比值不大於預定比值,所述記憶體頁面管理模組將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的後端。
  7. 如申請專利範圍第4項所述的記憶體控制器,其中反應於所述DRAM沒有空白空間,在所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM中的所述目標DRAM頁面,並且辨識所述目標DRAM頁面的所述目標DRAM頁面位址的運作之前,所述記憶體頁面管理模組辨識被分組至惰性清單中的多個惰性頁面中的末端惰性頁面,並且辨識所述末端惰性頁面的末端NVM頁面位址所映射的末端DRAM頁面位址,其中所述記憶體頁面管理模組從所述惰性清單中移除所述末端惰性頁面,並且從所述DRAM的對應所述末端DRAM頁面位址的DRAM頁面中刪除所儲存的資料。
  8. 如申請專利範圍第7項所述的記憶體控制器,其中反應於所述記憶體頁面管理模組從所述惰性清單中移除所述末端惰性 頁面,並且從所述DRAM的對應所述末端DRAM頁面位址的所述DRAM頁面中刪除所儲存的資料的運作完成後,所述記憶體頁面管理模組根據所述末端NVM頁面位址執行串行頁面刪除操作。
  9. 如申請專利範圍第8項所述的記憶體控制器,其中在所述串行頁面刪除操作中,所述記憶體頁面管理模組根據所述末端NVM頁面位址辨識分組至所述惰性清單中的一或多個串行刪除頁面,其中所述一或多個串行刪除頁面的串行刪除NVM頁面位址與所述末端NVM頁面位址為連續的多個NVM頁面位址,其中所述記憶體頁面管理模組辨識映射至一或多個串行刪除NVM頁面位址的一或多個串行刪除DRAM頁面位址,並且從所述DRAM的對應所述一或多個串行刪除DRAM頁面位址的一或多個串行刪除DRAM頁面中刪除所儲存的資料,其中所述記憶體頁面管理模組從所述惰性清單中移除所述一或多個串行刪除頁面。
  10. 如申請專利範圍第1項所述的記憶體控制器,其中在所述記憶體頁面管理模組根據對應所述存取指令的所述記憶體存取計數值來判斷對應所述目標頁面的所述快取命中狀態為命中或未命中的運作中,所述記憶體頁面管理模組判斷對應所述存取指令的所述記憶體存取計數值是否為預定計數值, 其中反應於所述對應所述存取指令的所述記憶體存取計數值不為所述預定計數值,所述記憶體頁面管理模組判定對應所述目標頁面的所述快取命中狀態為命中,並且在所述記憶體頁面管理模組更用以辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的運作中,所述記憶體頁面管理模組直接將對應前次存取指令的前次DRAM頁面位址辨識為所述目標NVM頁面位址所映射的所述目標DRAM頁面位址,其中反應於所述對應所述存取指令的所述記憶體存取計數值為所述預定計數值,所述記憶體頁面管理模組查找轉譯後援緩衝區,以判斷所述轉譯後援緩衝區中是否具有所述目標NVM頁面位址,其中反應於所述轉譯後援緩衝區中具有所述目標NVM頁面位址,所述記憶體頁面管理模組判定對應所述目標頁面的所述快取命中狀態為命中,並且在所述記憶體頁面管理模組更用以辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的運作中,所述記憶體頁面管理模組經由所述轉譯後援緩衝區中辨識所述目標NVM頁面位址所映射的所述目標DRAM頁面位址,其中反應於所述轉譯後援緩衝區中不具有所述目標NVM頁面位址,所述記憶體頁面管理模組查找所述適應性頁面清單,以判斷所述適應性頁面清單中是否具有所述目標NVM頁面位址, 其中反應於所述適應性頁面清單中具有所述目標NVM頁面位址,所述記憶體頁面管理模組判定對應所述目標頁面的所述快取命中狀態為命中,並且在所述記憶體頁面管理模組更用以辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的運作中,所述記憶體頁面管理模組經由所述適應性頁面清單辨識所述目標NVM頁面位址所映射的所述目標DRAM頁面位址,其中反應於所述適應性頁面清單中不具有所述目標NVM頁面位址,所述記憶體頁面管理模組判定對應所述目標頁面的所述快取命中狀態為未命中。
  11. 一種記憶體頁面管理方法,適用於用以控制一主機系統的一非揮發性雙列直插式記憶體模組(NVDIMM)裝置的記憶體控制器,其中所述NVDIMM裝置包括所述記憶體控制器、一動態隨機存取記憶體(DRAM)與一非揮發性記憶體模組(NVM),其中所述DRAM具有多個DRAM頁面,並且所述NVM具有多個NVM頁面,所述記憶體頁面管理方法包括:從一中央處理單元接收對應一狀態改變頁面的狀態改變通知,並且根據所述狀態改變通知來使所述狀態改變頁面自當前所屬的清單被分組至適應性頁面清單中的維持清單或適應性LRU清單,其中所述中央處理器執行所述主機系統的作業系統,其中所述狀態改變通知用以表示所述作業系統已改變所述狀態改變頁面的狀態為一活躍狀態或一不活躍狀態; 從所述中央處理單元接收一存取指令,其中所述存取指令指示對對應一目標頁面的目標頁面資料執行一存取操作;根據所述存取指令辨識所述目標頁面與對應所述目標頁面的一目標NVM頁面位址;根據對應所述存取指令的記憶體存取計數值來判斷對應所述目標頁面的快取命中狀態為命中或未命中,其中反應於判定對應所述目標頁面的所述快取命中狀態為命中,辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址,其中反應於所述目標頁面已被分組至所述適應性最近最少使用(LRU)清單的惰性清單,更將所述目標頁面分組至所述適應性LRU清單的先進先出(FIFO)清單;以及反應於判定對應所述目標頁面的所述快取命中狀態為未命中,儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的目標DRAM頁面中,將所述目標DRAM頁面的目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單;以及根據所述存取指令,使用所述目標DRAM頁面位址來完成對應所述目標頁面資料的所述存取操作。
  12. 如申請專利範圍第11項所述的記憶體頁面管理方法,其中在接收對應所述狀態改變頁面的所述狀態改變通知的步驟之前,執行一對應所述NVDIMM裝置的記憶體初始化操作,以安 裝一作業系統通知模組至所述作業系統,其中所述中央處理單元執行所述作業系統通知模組,其中所述作業系統通知模組用以發送所述狀態改變通知至所述記憶體頁面管理模組,並且所述狀態改變通知包括一升級通知與一降級通知,其中當所述狀態改變頁面的所述狀態被所述作業系統改變至所述活躍狀態,藉由所述作業系統通知模組發送所述升級通知至所述記憶體頁面管理模組;以及當所述狀態改變頁面的所述狀態被所述作業系統改變至所述不活躍狀態,藉由所述作業系統通知模組發送所述降級通知至所述記憶體頁面管理模組。
  13. 如申請專利範圍第12項所述的記憶體頁面管理方法,其中所述根據所述狀態改變通知來分組所述狀態改變頁面至所述適應性頁面清單中的所述維持清單或所述適應性LRU清單的步驟包括:反應於所述狀態改變通知為所述降級通知且所述狀態改變頁面已被分組於所述維持清單中,將所述狀態改變頁面分組至所述適應性LRU清單的所述FIFO清單的前端;以及反應於所述狀態改變通知為所述升級通知且所述狀態改變頁面已被分組於所述適應性LRU清單中,將所述狀態改變頁面分組至所述維持清單中。
  14. 如申請專利範圍第11項所述的記憶體頁面管理方法,其中所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的所述目標DRAM頁面中,將所述目標DRAM頁面的所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的步驟包括:儲存對應所述目標頁面的所述目標頁面資料至所述DRAM中的所述目標DRAM頁面,並且辨識所述目標DRAM頁面的所述目標DRAM頁面位址。
  15. 如申請專利範圍14項所述的記憶體頁面管理方法,其中所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的所述目標DRAM頁面中,將所述目標DRAM頁面的所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的步驟更包括:所述記憶體頁面管理模組更將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的前端。
  16. 如申請專利範圍14項所述的記憶體頁面管理方法,其中所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的所述目標DRAM頁面中,將所述目標DRAM頁面的所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的步驟更包括:判斷所述FIFO清單的大小與所述惰性清單的大小的比值是 否大於預定比值,其中反應於所述FIFO清單的大小與所述惰性清單的大小的所述比值大於預定比值,將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述所述適應性LRU清單的所述惰性清單的前端;反應於所述FIFO清單的大小與所述惰性清單的大小的所述比值不大於預定比值,將所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的所述FIFO清單的後端。
  17. 如申請專利範圍第14項所述的記憶體頁面管理方法,其中反應於所述DRAM沒有空白空間,在所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM中的所述目標DRAM頁面,並且辨識所述目標DRAM頁面的所述目標DRAM頁面位址的步驟之前,辨識被分組至惰性清單中的多個惰性頁面中的末端惰性頁面,並且辨識所述末端惰性頁面的末端NVM頁面位址所映射的末端DRAM頁面位址;以及從所述惰性清單中移除所述末端惰性頁面,並且從所述DRAM的對應所述末端DRAM頁面位址的DRAM頁面中刪除所儲存的資料。
  18. 如申請專利範圍第17項所述的記憶體頁面管理方法,其中反應於所述記憶體頁面管理模組從所述惰性清單中移除所述 末端惰性頁面,並且從所述DRAM的對應所述末端DRAM頁面位址的所述DRAM頁面中刪除所儲存的資料的步驟完成後,所述儲存對應所述目標頁面的所述目標頁面資料至所述DRAM的所述目標DRAM頁面中,將所述目標DRAM頁面的所述目標DRAM頁面位址映射至所述目標NVM頁面位址,並且將所述目標頁面分組至所述適應性LRU清單的步驟更包括:根據所述末端NVM頁面位址執行串行頁面刪除操作。
  19. 如申請專利範圍第18項所述的記憶體頁面管理方法,其中所述串行頁面刪除操作包括:根據所述末端NVM頁面位址辨識分組至所述惰性清單中的一或多個串行刪除頁面,其中所述一或多個串行刪除頁面的串行刪除NVM頁面位址與所述末端NVM頁面位址為連續的多個NVM頁面位址;辨識映射至一或多個串行刪除NVM頁面位址的一或多個串行刪除DRAM頁面位址,並且從所述DRAM的對應所述一或多個串行刪除DRAM頁面位址的一或多個串行刪除DRAM頁面中刪除所儲存的資料;以及從所述惰性清單中移除所述一或多個串行刪除頁面。
  20. 如申請專利範圍第11項所述的記憶體頁面管理方法,其中所述根據對應所述存取指令的所述記憶體存取計數值來判斷對應所述目標頁面的所述快取命中狀態為命中或未命中的步驟包括: 判斷對應所述存取指令的所述記憶體存取計數值是否為預定計數值,其中反應於所述對應所述存取指令的所述記憶體存取計數值不為所述預定計數值,判定對應所述目標頁面的所述快取命中狀態為命中,並且所述辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的步驟包括直接將對應前次存取指令的前次DRAM頁面位址辨識為所述目標NVM頁面位址所映射的所述目標DRAM頁面位址;以及反應於所述對應所述存取指令的所述記憶體存取計數值為所述預定計數值,查找轉譯後援緩衝區,以判斷所述轉譯後援緩衝區中是否具有所述目標NVM頁面位址,其中反應於所述轉譯後援緩衝區中具有所述目標NVM頁面位址,判定對應所述目標頁面的所述快取命中狀態為命中,並且所述辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的步驟包括所述記憶體頁面管理模組經由所述轉譯後援緩衝區中辨識所述目標NVM頁面位址所映射的所述目標DRAM頁面位址;以及反應於所述轉譯後援緩衝區中不具有所述目標NVM頁面位址,查找所述適應性頁面清單,以判斷所述適應性頁面清單中是否具有所述目標NVM頁面位址,其中反應於所述適應性頁面清單中具有所述目標NVM頁面位址,判定對應所述目標頁面的所述快取命中狀態為命 中,並且所述辨識所述目標NVM頁面位址所映射的目標DRAM頁面位址的運作中,經由所述適應性頁面清單辨識所述目標NVM頁面位址所映射的所述目標DRAM頁面位址;以及反應於所述適應性頁面清單中不具有所述目標NVM頁面位址,判定對應所述目標頁面的所述快取命中狀態為未命中。
TW107145910A 2018-12-19 2018-12-19 記憶體控制器與記憶體頁面管理方法 TWI688859B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW107145910A TWI688859B (zh) 2018-12-19 2018-12-19 記憶體控制器與記憶體頁面管理方法
US16/425,969 US11372779B2 (en) 2018-12-19 2019-05-30 Memory controller and memory page management method
CN201910478949.5A CN111338561B (zh) 2018-12-19 2019-06-03 存储器控制器与存储器页面管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW107145910A TWI688859B (zh) 2018-12-19 2018-12-19 記憶體控制器與記憶體頁面管理方法

Publications (2)

Publication Number Publication Date
TWI688859B true TWI688859B (zh) 2020-03-21
TW202024918A TW202024918A (zh) 2020-07-01

Family

ID=70767050

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107145910A TWI688859B (zh) 2018-12-19 2018-12-19 記憶體控制器與記憶體頁面管理方法

Country Status (3)

Country Link
US (1) US11372779B2 (zh)
CN (1) CN111338561B (zh)
TW (1) TWI688859B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822480B2 (en) 2021-08-31 2023-11-21 Apple Inc. Criticality-informed caching policies

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11151050B2 (en) * 2020-01-03 2021-10-19 Samsung Electronics Co., Ltd. Efficient cache eviction and insertions for sustained steady state performance
US11392499B2 (en) * 2020-09-18 2022-07-19 Kioxia Corporation Dynamic buffer caching of storage devices
WO2022177945A1 (en) * 2021-02-16 2022-08-25 Micron Technology, Inc. Controller for managing multiple types of memory
JP2023104400A (ja) * 2022-01-17 2023-07-28 富士通株式会社 データ管理方法およびデータ管理プログラム
US11977767B2 (en) * 2022-03-14 2024-05-07 Silicon Motion, Inc. Method and apparatus for caching address mapping information in flash memory based storage device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567551B (zh) * 2014-12-22 2017-01-21 英特爾公司 分配與配置持續記憶體之技術
TW201740278A (zh) * 2016-01-14 2017-11-16 三星電子股份有限公司 用於存取異質記憶體的方法及含異質記憶體的記憶體模組
TW201805811A (zh) * 2016-08-03 2018-02-16 三星電子股份有限公司 記憶體模組及其控制可程式化去重複率的方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385699B1 (en) * 1998-04-10 2002-05-07 International Business Machines Corporation Managing an object store based on object replacement penalties and reference probabilities
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US20070118695A1 (en) * 2005-11-18 2007-05-24 International Business Machines Corporation Decoupling storage controller cache read replacement from write retirement
TW201042648A (en) * 2009-05-25 2010-12-01 Novatek Microelectronics Corp Dynamic memory accessing method and memory controller
TWI441184B (zh) * 2010-02-09 2014-06-11 Silicon Motion Inc 非揮發性記憶裝置及其資料處理方法
KR101713051B1 (ko) 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
EP3346386B1 (en) 2011-09-30 2020-01-22 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9122631B2 (en) * 2011-11-07 2015-09-01 Peking University Buffer management strategies for flash-based storage systems
GB2514023B (en) 2011-12-21 2019-07-03 Intel Corp System and method for intelligently flushing data from a processor into a memory subsystem
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9348539B1 (en) 2013-03-12 2016-05-24 Inphi Corporation Memory centric computing
EP3028277A1 (en) 2013-07-31 2016-06-08 Hewlett Packard Enterprise Development LP Hybrid secure non-volatile main memory
CN104714891B (zh) * 2013-12-11 2017-12-15 华为技术有限公司 一种闪存数据管理方法及装置
US20150234669A1 (en) * 2014-02-17 2015-08-20 Strato Scale Ltd. Memory resource sharing among multiple compute nodes
US10083117B2 (en) * 2014-09-09 2018-09-25 Hua Zhong University of Technology Filtering write request sequences
US20170024326A1 (en) * 2015-07-22 2017-01-26 CNEX-Labs, Inc. Method and Apparatus for Caching Flash Translation Layer (FTL) Table
CN106469119B (zh) 2015-08-10 2020-07-07 北京忆恒创源科技有限公司 一种基于nvdimm的数据写缓存方法及其装置
TWI595356B (zh) * 2016-08-19 2017-08-11 大心電子(英屬維京群島)股份有限公司 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路
CN107870729B (zh) * 2016-09-23 2020-11-20 伊姆西Ip控股有限责任公司 一种用于缓存数据的方法、设备和系统
TWI596541B (zh) 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US10394719B2 (en) 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US10282294B2 (en) 2017-02-15 2019-05-07 Samsung Electronics Co., Ltd. Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter
US10810123B1 (en) * 2017-10-25 2020-10-20 EMC IP Holding Company, LLC Flush strategy for using DRAM as cache media system and method
US10691596B2 (en) * 2018-04-27 2020-06-23 International Business Machines Corporation Integration of the frequency of usage of tracks in a tiered storage system into a cache management system of a storage controller
US11068417B2 (en) * 2018-06-26 2021-07-20 International Business Machines Corporation Allocation of cache storage among applications that indicate minimum retention time for tracks in least recently used demoting schemes
US11074197B2 (en) * 2018-06-26 2021-07-27 International Business Machines Corporation Integration of application indicated minimum time to cache and maximum time to cache to least recently used track demoting schemes in a cache management system of a storage controller
US10909012B2 (en) * 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567551B (zh) * 2014-12-22 2017-01-21 英特爾公司 分配與配置持續記憶體之技術
TW201740278A (zh) * 2016-01-14 2017-11-16 三星電子股份有限公司 用於存取異質記憶體的方法及含異質記憶體的記憶體模組
TW201805811A (zh) * 2016-08-03 2018-02-16 三星電子股份有限公司 記憶體模組及其控制可程式化去重複率的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822480B2 (en) 2021-08-31 2023-11-21 Apple Inc. Criticality-informed caching policies
US11921640B2 (en) 2021-08-31 2024-03-05 Apple Inc. Mitigating retention of previously-critical cache lines
TWI835272B (zh) * 2021-08-31 2024-03-11 美商蘋果公司 控制快取原則的系統及方法,及快取區

Also Published As

Publication number Publication date
US11372779B2 (en) 2022-06-28
US20200201782A1 (en) 2020-06-25
CN111338561B (zh) 2023-05-30
CN111338561A (zh) 2020-06-26
TW202024918A (zh) 2020-07-01

Similar Documents

Publication Publication Date Title
TWI688859B (zh) 記憶體控制器與記憶體頁面管理方法
US8949544B2 (en) Bypassing a cache when handling memory requests
WO2018059361A1 (zh) 一种存储系统掉电保护方法、存储控制器及电子设备
US7552286B2 (en) Performance of a cache by detecting cache lines that have been reused
CN112272816B (zh) 存储器系统或子系统中的预取信令
RU2438165C2 (ru) Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша
US20050251630A1 (en) Preventing storage of streaming accesses in a cache
CN111414132B (zh) 带异构存储器的主存储设备、计算机系统及数据管理方法
US20110231598A1 (en) Memory system and controller
US10261901B2 (en) Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
CN112262365B (zh) 存储器系统或子系统中的等待时间指示
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
CN107797760B (zh) 一种访问缓存信息的方法、装置与固态驱动器
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
US10185619B2 (en) Handling of error prone cache line slots of memory side cache of multi-level system memory
KR20170109133A (ko) 하이브리드 메모리 장치 및 그의 데이터 관리 방법
US7844777B2 (en) Cache for a host controller to store command header information
US20240053917A1 (en) Storage device, operation method of storage device, and storage system using the same
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
CN111352865A (zh) 存储控制器的写缓存
US11403034B1 (en) Non-volatile storage class memory data flow with mismatched block sizes
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US20160162412A1 (en) Completion packet return