TW201903612A - 記憶體模組及操作記憶體模組的方法 - Google Patents
記憶體模組及操作記憶體模組的方法 Download PDFInfo
- Publication number
- TW201903612A TW201903612A TW107108186A TW107108186A TW201903612A TW 201903612 A TW201903612 A TW 201903612A TW 107108186 A TW107108186 A TW 107108186A TW 107108186 A TW107108186 A TW 107108186A TW 201903612 A TW201903612 A TW 201903612A
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- write group
- volatile memory
- group table
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/1048—Scalability
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
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)
- Memory System (AREA)
- Static Random-Access Memory (AREA)
Abstract
一種記憶體模組包括記憶體控制器,其包括:主機層;媒體層,耦合至非揮發性記憶體;及邏輯核心,耦合至主機層、媒體層及揮發性記憶體,邏輯核心儲存包括多個列的第一寫入群組表,且邏輯核心被配置成:接收包括快取行位址及寫入群組辨識符的持久性寫入命令;接收與持久性寫入命令相關聯的資料;將資料在快取行位址處寫入揮發性記憶體;將快取行位址儲存於第二寫入群組表的多個緩衝器的所選擇緩衝器中,所選擇緩衝器對應於寫入群組辨識符;及更新第一寫入群組表的列以辨識所選擇緩衝器中包含有效表項的位置,所述列對應於寫入群組辨識符。
Description
本發明的實施例的態樣是有關於用於包括揮發性組件及非揮發性組件的混合電腦記憶體的記憶體控制器、以及其操作方法。
具有持久性記憶體的非揮發性雙直插記憶體模組(Non-Volatile Dual In-line Memory Module with Persistent memory,NVDIMM-P)是一種用於電腦系統的可包括在斷電時失去其內容的揮發性部分及即便在斷電(例如,意外功率損耗、系統崩潰、或標準關機)時亦保持其內容的非揮發性部分的隨機存取記憶體。在一些情形中,NVDIMM-P可包括記憶體映射快閃記憶體(例如,反及快閃(NAND flash)或Z型反及快閃(ZNAND flash))作為非揮發性記憶體且包括動態隨機存取記憶體(dynamic random access memory,DRAM)作為揮發性記憶體。在一些情形中,靜態隨機存取記憶體(static random access memory,SRAM)可充當揮發性部分,及/或相變記憶體(phase-change memory,PCM)可充當非揮發性部分。儲存於NVDIMM-P模組中的資料可被作為「持久性動態隨機存取記憶體」(例如,位元組可定址)來存取或者藉由與電腦系統存取例如硬驅動機及光學驅動機等旋轉媒體上的資料以及例如固態驅動機(solid state drive,SSD)等持久性儲存裝置上的資料的方式相似的區塊定向存取(block-oriented access)來存取。
NVDIMM-P裝置的標準是由JEDEC固態技術協會(JEDEC Solid State Technology Association)(即JEDEC)界定。該些標準包括用於存取NVDIMM-P適用裝置的一定數目的命令。
本發明的實施例的態樣是有關於用於包括揮發性部分及非揮發性部分的具有持久性記憶體的非揮發性雙直插記憶體模組(NVDIMM-P)的記憶體控制器。具體而言,本發明的實施例的態樣是有關於用於因應於自主機處理器接收的命令管理被寫入至NVDIMM-P的揮發性部分及非揮發性部分的資料的系統及方法。
根據本發明的一個實施例,一種記憶體模組包括:揮發性記憶體;非揮發性記憶體;以及記憶體控制器,包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成:經由所述主機層接收持久性寫入命令,所述持久性寫入命令包括快取行位址及寫入群組辨識符;經由所述主機層接收與所述持久性寫入命令相關聯的資料;以及因應于所述持久性寫入命令:將所述資料在所述快取行位址處寫入至所述揮發性記憶體;將所述快取行位址儲存於第二寫入群組表中的多個緩衝器中的所選擇緩衝器中,所述所選擇緩衝器對應於所述寫入群組辨識符;以及更新所述第一寫入群組表的多個列中的列以辨識所述所選擇緩衝器的含有有效表項的位置,所述列對應於所述寫入群組辨識符。
所述邏輯核心可更儲存第零個寫入群組表,所述第零個寫入群組表包括多個列,其中所述第零個寫入群組表的所述列中的每一者可與對應的寫入群組相關聯,且其中所述第零個寫入群組表的所述列中的每一者可包括列位元映射表,所述列位元映射表辨識與所述對應的寫入群組相關聯的所述第一寫入群組表及所述第二寫入群組表的列。
所述邏輯核心可更被配置成:在所述第零個寫入群組表中查找與所述寫入群組辨識符對應的列位元映射表,所述對應的列位元映射表辨識與所述寫入群組辨識符相關聯的所述第二寫入群組表的多個緩衝器;基於所述對應的列位元映射表來判斷與所述寫入群組辨識符相關聯的所述多個緩衝器中的緩衝器是否具有可用空間;因應於確定出所述多個緩衝器中的所述緩衝器具有可用空間,選擇所述緩衝器作為所述所選擇緩衝器;以及因應於確定出與所述寫入群組辨識符相關聯的所述多個緩衝器均不具有可用空間,判斷在所述第二寫入群組表中是否具有可用緩衝器;以及因應於確定出在所述第二寫入群組表中具有可用緩衝器:更新所述對應的列位元映射表以將所述可用緩衝器與所述寫入群組辨識符相關聯;以及選擇所述可用緩衝器作為所述所選擇緩衝器。
所述持久性寫入命令可更包括持久性旗標,且所述邏輯核心可更被配置成判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標:查找與所述寫入群組辨識符相關聯的所述第二寫入群組表中的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;以及對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
所述記憶體模組可更包括快取元資料記憶體,其中所述邏輯核心可被配置成將儲存於所述第二寫入群組表中的所述快取行位址中的每一者的持久性狀態儲存於所述快取元資料記憶體中。
所述持久性寫入命令可更包括持久性旗標,其中所述邏輯核心可更被配置成判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標:查找與所述寫入群組辨識符相關聯的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者:判斷是否已設定與所述快取行位址對應的所述持久性狀態;因應於確定出已設定與所述快取行位址對應的所述持久性狀態,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體;以及因應於確定出未設定與所述快取行位址對應的所述持久性狀態,禁止將所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
所述記憶體模組可為非揮發性雙直插記憶體模組。
根據本發明的一個實施例,一種記憶體模組包括:揮發性記憶體;非揮發性記憶體;以及記憶體控制器,包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成:經由所述主機層接收清空命令,所述清空命令包括寫入群組辨識符;查找與所述寫入群組辨識符對應的所述第一寫入群組表的一或多個列,所述一或多個列中的每一者包括用於辨識第二寫入群組表的對應的緩衝器中的有效表項的首部指針及尾部指針;查找與所述第二寫入群組表中的所述寫入群組辨識符相關聯的一或多個緩衝器,所述一或多個緩衝器中的每一者將一或多個快取行位址儲存於由所述第一寫入群組表的對應的列的所述首部指針及所述尾部指針辨識的所述有效表項處;以及對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體。
所述邏輯核心可更被配置成將與所述寫入群組辨識符對應的所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
根據本發明的一個實施例,一種記憶體模組包括:揮發性記憶體;非揮發性記憶體;以及記憶體控制器,包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成:經由所述主機層接收清空命令;對於所述第一寫入群組表中的每一列:查找第二寫入群組表中的對應的緩衝器,所述第一寫入群組表中的每一列包括用於辨識所述第二寫入群組表的所述對應的緩衝器中的有效表項的首部指針及尾部指針;對於所述對應的緩衝器的所述有效表項中的每一者,擷取對應的快取行位址並將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體;以及將所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
根據本發明的一個實施例,一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體以及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括:由所述記憶體控制器接收持久性寫入命令,所述持久性寫入命令包括快取行位址及寫入群組辨識符;由所述記憶體控制器接收與所述持久性寫入命令相關聯的資料;以及因應于所述持久性寫入命令:將所述資料在所述快取行位址處寫入至所述揮發性記憶體;由所述記憶體控制器將所述快取行位址儲存於第二寫入群組表中的多個緩衝器中的所選擇緩衝器中,所述所選擇緩衝器對應於所述寫入群組辨識符;以及由所述記憶體控制器更新所述第一寫入群組表的多個列中的列以辨識所述所選擇緩衝器的包含有效表項的位置,所述列對應於所述寫入群組辨識符。
所述邏輯核心可更儲存第零個寫入群組表,所述第零個寫入群組表包括多個列,其中所述第零個寫入群組表的所述列中的每一者與對應的寫入群組相關聯,且其中所述第零個寫入群組表的所述列中的每一者包括列位元映射表,所述列位元映射表辨識與所述對應的寫入群組相關聯的所述第一寫入群組表及所述第二寫入群組表的列。
所述方法可更包括:在所述第零個寫入群組表中查找與所述寫入群組辨識符對應的列位元映射表,所述對應的列位元映射表辨識與所述寫入群組辨識符相關聯的所述第二寫入群組表的多個緩衝器;基於所述對應的列位元映射表來判斷與所述寫入群組辨識符相關聯的所述多個緩衝器中的緩衝器是否具有可用空間;因應於確定出所述多個緩衝器中的所述緩衝器具有可用空間,選擇所述緩衝器作為所述所選擇緩衝器;以及因應於確定出所述多個緩衝器均不具有可用空間,判斷在所述第二寫入群組表中是否具有可用緩衝器;以及因應於確定出在所述第二寫入群組表中具有可用緩衝器,選擇所述可用緩衝器作為所述所選擇緩衝器。
所述持久性寫入命令可更包括持久性旗標,其中所述方法更包括判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標:查找與所述寫入群組辨識符相關聯的所述第二寫入群組表中的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;以及對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
所述記憶體模組可更包括快取元資料記憶體,其中所述方法可更包括將儲存於所述第二寫入群組表中的所述快取行位址中的每一者的持久性狀態儲存於所述快取元資料記憶體中。
所述持久性寫入命令可更包括持久性旗標,其中所述方法可更包括判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標:查找與所述寫入群組辨識符相關聯的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者:判斷是否已設定與所述快取行位址對應的所述持久性狀態;因應於確定出已設定與所述快取行位址對應的所述持久性狀態,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體;以及因應於確定出未設定與所述快取行位址對應的所述持久性狀態,禁止將所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
所述記憶體模組可為非揮發性雙直插記憶體模組。
根據本發明的一個實施例,一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括:由所述記憶體控制器接收清空命令,所述清空命令包括寫入群組辨識符;查找與所述寫入群組辨識符對應的所述第一寫入群組表的一或多個列,所述一或多個列中的每一者包括用於辨識第二寫入群組表的對應的緩衝器中的有效表項的首部指針及尾部指針;查找與所述第二寫入群組表中的所述寫入群組辨識符相關聯的一或多個緩衝器,所述一或多個緩衝器中的每一者將一或多個快取行位址儲存於由所述第一寫入群組表的對應的列的所述首部指針及所述尾部指針辨識的所述有效表項處;以及對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體。
所述方法可更包括:將與所述寫入群組辨識符對應的所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
根據本發明的一個實施例,一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括:由所述記憶體控制器接收清空命令;對於所述第一寫入群組表中的每一列:查找第二寫入群組表中的對應的緩衝器,所述第一寫入群組表中的每一列包括用於辨識所述第二寫入群組表的所述對應的緩衝器中的有效表項的首部指針及尾部指針;對於所述對應的緩衝器的所述有效表項中的每一者,擷取對應的快取行位址並將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體;以及將所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
在下文中,將參照附圖來更詳細地闡述示例性實施例,在所有附圖中相同的參考號碼指代相同的元件。然而,本發明可被實施為各種不同的形式,且不應被視為僅限於本文中所示的實施例。確切而言,提供該些實施例作為實例是為了使此揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本發明的態樣及特徵。因此,為了全面理解本發明的態樣及特徵,可不再闡述對於此項技術中具有通常知識者而言不必要的過程、元件、及技術。除非另外注明,否則在所有附圖及書面說明通篇中,相同的參考編號表示相同的元件,且因此將不再對其予以贅述。
應理解,儘管本文中可能使用用語「第零個(zeroth)」、「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、及/或區段,然而該些元件、組件、及/或區段不應受該些用語限制。該些用語用於區分各個元件、組件、或區段。因此,在不背離本發明的精神及範圍的條件下,可將以下所述的第一元件、組件、或區段稱為第二元件、組件、或區段。
本文中所使用的術語僅是為了闡述具體實施例,而非旨在限制本發明。除非上下文中清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises/comprising)」、及「包含(includes/including)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或增添。本文中所使用的用語「及/或(and/or)」包括相關所列項其中一或多個項的任意及所有組合。當例如「…中的至少一者(at least one of)」等表達位於一系列元件之前時,是修飾整個系列的元件,而並非修飾所述系列中的各別元件。
本文中所使用的用語「實質上(substantially)」、「大約(about)」及類似用語用作近似值用語、而並非作為程度用語,並且旨在慮及此項技術中具有通常知識者將知的量測值或計算值的固有偏差。此外,在闡述本發明的實施例時使用「可(may)」是指代「本發明的一或多個實施例」。本文中所使用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。此外,用語「示例性(exemplary)」旨在指代實例或例示。
根據本文中所述本發明的實施例的電子裝置或電裝置及/或任何其他相關裝置或組件可利用任何適合的硬體、韌體(例如,應用專用積體電路(application-specific integrated circuit))、軟體、或軟體、韌體、及硬體的組合來實作。舉例而言,可將該些裝置中的各種組件形成於一個積體電路(integrated circuit,IC)晶片上或單獨的多個積體電路晶片上。此外,可將該些裝置的各種組件實作於撓性印刷電路膜、膠帶載體封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或形成於一個基板上。
圖1是根據本發明一個實施例的與主機系統介接的具有持久性記憶體的非揮發性雙直插記憶體模組(NVDIMM-P)的示意圖。圖2A是根據本發明一個實施例的與主機系統介接的具有持久性記憶體的非揮發性雙直插記憶體模組的方塊圖。
如圖1及圖2A中所示,NVDIMM-P 100包括揮發性記憶體110、非揮發性記憶體(或持久性記憶體)120、及記憶體控制器130,記憶體控制器130被配置成往來於揮發性記憶體110及非揮發性記憶體120二者寫入及讀取資料。記憶體控制器130可包括主機層132(例如,列位址選通-行位址選通(Row Address Strobe-Column Address Strobe或RAS-CAS)介面)、邏輯核心134、及媒體層136,主機層132被配置成與主機處理器200介接,邏輯核心134被配置成控制NVDIMM-P模組,媒體層136被配置成與非揮發性記憶體120介接。在一些實施例中,記憶體控制器130可使用例如現場可程式化閘極陣列(field programmable gate array,FPGA)、應用專用積體電路(application specific integrated circuit,ASIC)、或微控制器來實作。
在以下論述中,揮發性記憶體110可被稱為「快取」,且邏輯核心134亦可被稱為「快取層」。舉例而言,靜態隨機存取記憶體(SRAM)揮發性記憶體110可充當相變記憶體(PCM)非揮發性記憶體120的寫入緩衝器。作為另一實例,動態隨機存取記憶體(DRAM)快取可與快閃記憶體(例如,Z型反及)耦合於一起以提高當讀取或寫入頻繁使用的資料或近期使用的資料時的效能。
圖2B是根據本發明一個實施例的包括邏輯核心134及揮發性記憶體110的NVDIMM-P的一部分的方塊圖。如圖2B中所示,邏輯核心134包括至主機層132的介面134h、至媒體層136的介面134m、快取控制器134c、預取器134p、元資料快取(其可被實作為或儲存於邏輯核心134內的靜態隨機存取記憶體即SRAM 134s中)、L1預取緩衝器(其可被實作成儲存於邏輯核心134內的靜態隨機存取記憶體134s中),且揮發性記憶體控制器134d被配置成與揮發性記憶體110(例如,位於邏輯核心134外部的動態隨機存取記憶體即DRAM)介接。
圖2B亦示出在本發明的一個實施例中可儲存於揮發性記憶體110中的各種類型的資料。該些資料包括經快取資料112、快取元資料114、L2讀取/寫入快取116、及L3寫入緩衝器118。
NVDIMM-P 100且具體而言,記憶體控制器130可被配置成經由匯流排250(參見圖1及圖2A)與主機處理器200通訊,匯流排250耦合至記憶體控制器130的主機層132。記憶體控制器130可經由主機層132自主機處理器200接收命令及資料以往來於NVDIMM-P寫入及讀取資料。記憶體控制器130可藉由例如向揮發性記憶體110及/或非揮發性記憶體120寫入資料或自揮發性記憶體110及/或非揮發性記憶體120讀取資料並經由匯流排250將所述資料提供至主機處理器200來對命令作出回應。可經由快取行介面(例如,記憶體映射快閃及動態隨機存取記憶體)以快取行為單位對NVDIMM-P 100寫入及讀取資料,所述資料可被作為「持久性動態隨機存取記憶體」來存取或者可經由區塊定向驅動機存取介面來存取。
針對與資料持久性有關的NVDIMM-P標準而界定的命令包括持久性寫入明令(例如,根據NVDIMM-P標準的PWRITE命令)及清空命令(例如,根據NVDIMM-P標準的FLUSH命令)。PWRITE命令的參數包括資料所寫入的快取行位址(或記憶體位址)、寫入群組辨識符(write group identifier,WGID)、及「持久性」旗標。因應於「持久性」旗標被設定成「關閉(off)」(例如,零或0)的PWRITE命令,記憶體控制器130將相關聯資料儲存於NVDIMM-P 100的揮發性記憶體110中,且藉由所述命令而寫入的資料的持久性沒有保證。
因應於「持久性」旗標被設定成「接通(on)」(例如,一或1)的PWRITE命令,則記憶體控制器130儲存(「清空」)NVDIMM-P 100的非揮發性記憶體120中的相關聯資料且亦儲存(例如,寫入或清空)在PWRITE命令中被自揮發性記憶體110供應至非揮發性記憶體120中的具有寫入群組辨識符WGID的所有其他資料(例如,先前使用PWRITE命令而寫入至NVDIMM-P 100且具有相同寫入群組辨識符的資料)。NVDIMM-P 100可以在持久性旗標被設定成「接通」的PWRITE命令完成時所作出的確認來回應主機處理器200。
FLUSH命令的參數可包括指示是否進行以下操作的設定:將所有寫入(例如,被寫入至揮發性記憶體110的所有資料)清空至非揮發性記憶體120;清空所有持久性寫入(例如,使用持久性位元被設定成0的PWRITE命令進行的所有寫入);或者清空與給定寫入群組辨識符相關聯的所有持久性寫入(例如,與PWRITE命令相似但無附加資料)。NVDIMM-P 100可在FLUSH操作完成時向主機處理器200提供確認。
當基於寫入群組辨識符因應于「持久性」被設定成「接通」的PWRITE命令或因應於FLUSH命令來清空資料時,記憶體控制器130辨識揮發性記憶體110中的欲被清空的資料(換言之,所有與給定寫入群組辨識符相關聯的資料)。
若揮發性記憶體110為小的,則可藉由對整個揮發性記憶體110掃描具有匹配的寫入群組辨識符的資料中的所有者來達成對揮發性資料的搜尋。舉例而言,靜態隨機存取記憶體寫入緩衝器(例如,L3寫入緩衝器118)可具有約256快取表項,基於當前的記憶體技術,所述約256快取表項足夠小而能在合理時間量內接受掃描(例如,不引入顯著的潛時或無顯著的開銷)。
然而,若揮發性記憶體110為大的,則掃描揮發性資料中的所有者可能變得不實際。舉例而言,8個吉位元組(GB)動態隨機存取記憶體快取可具有約4百萬快取行表項,且掃描所有4百萬快取行表項所需的時間可能過長且可能在NVDIMM-P 100中造成顯著的潛時(例如,記憶體控制器130可能阻擋活動或進行等待直至掃描完成,由此增大實行所可接收的且可能在記憶體控制器130的命令隊列上進行等待的後續命令的潛時)。
如此一來,本發明的實施例的態樣是有關於用於降低辨識針對特定寫入群組辨識符因應于例如持久性位元被設定成1的PWRITE命令或FLUSH命令而被清空至非揮發性記憶體120的揮發性記憶體110的表項的開銷的系統及方法。此藉由以下方式而顯著改善NVDIMM-P 100的回應時間:減少將寫入群組清空至非揮發性記憶體120所需的時間(此可提高通量),例如藉由使資料的清空加速(此亦會減小對命令隊列上的後續命令的阻擋)。
本發明的實施例的一些態樣是有關於使用專用資料結構來跟蹤被寫入至揮發性記憶體110的資料的狀態。本發明的實施例的另一態樣是有關於計算開銷顯著減少的使用儲存於資料結構中的資料來支援PWRITE命令及FLUSH命令、藉此使得能夠高效地實作例如PWRITE及FLUSH等NVDIMM-P命令的系統及方法。
在本發明的一個實施例中,資料結構包括第一寫入群組表(L1WGT)及第二寫入群組表(L2WGT)。圖3A及圖3B是根據本發明一個實施例的第一寫入群組表L1WGT 304及第二寫入群組表L2WGT 306的示意圖例。如圖3A及圖3B中所示,資料結構用於跟蹤屬於每一寫入群組辨識符的快取行,藉此簡化對哪些快取行與任意給定寫入群組辨識符相關聯的辨識過程。
第一寫入群組表(L1WGT)可儲存於記憶體控制器130內的靜態隨機存取記憶體(SRAM)134s,並自寫入群組辨識符(例如,64位元值)映射至頁面表項(例如,由第二寫入群組表L2WGT中的表項構成的位元映射表)。第一寫入群組表L1WGT可基於靜態隨機存取記憶體以進行更快的存取,儘管本發明的實施例並非僅限於此。第二寫入群組表(L2WGT)可儲存於NVDIMM-P 100的揮發性記憶體110中(或記憶體控制器130的單獨的動態記憶體(動態隨機存取記憶體)中)(例如儲存於L2讀取/寫入快取116中),且自頁面表項映射至NVDIMM-P 100的揮發性記憶體110內的快取行位址(或資料位址)。在一些實施例中,第二寫入群組表L2WGT是基於成本考慮、效能要求、及容量要求而儲存於靜態記憶體—靜態隨機存取記憶體中(例如,靜態隨機存取記憶體較動態隨機存取記憶體更快且更昂貴,且例如現場可程式化閘極陣列或應用專用積體電路內可用的記憶體的數量受限)。在本發明的一些實施例中,存在額外的間接層次,其中第二寫入群組表L2WGT映射至揮發性記憶體110的快取元資料區114內的記憶體位址或位置,且快取元資料區114儲存快取行位址。
圖3B是根據本發明一個實施例的第一寫入群組表L1WGT及第二寫入群組表L2WGT的更詳細的示意圖例。在圖3B中所示實例中,第一寫入群組表L1WGT包括64個表項,寫入群組辨識符被分別挨個地自0至63編號(WGID[0]、WGID[1]、…、WGID[63])。圖3B所示第一寫入群組表L1WGT中的每一表項對應於第二寫入群組表L2WGT的多個列中的一者且在第二寫入群組表L2WGT的對應列內包括用於首部(head)表項的指針(首部指針)及用於尾部(tail)表項的指針(尾部指針)(例如,第一寫入群組表L1WGT的每一表項可包括與第二寫入群組表L2WGT的對應列的Entry[0]的記憶體位置對應的暗含偏移且首部及尾部的具體位置可藉由指針算術(pointer arithmetic)來計算)。
如上所述,第二寫入群組表L2WGT可基於例如速度及容量等效能要求而被儲存於靜態隨機存取記憶體或動態隨機存取記憶體中。在一些實施例中,第二寫入群組表L2WGT包括多個環緩衝器(ring buffer),其中一個環緩衝器與對應的寫入群組相關聯。在圖3B中所示實例中,存在64個環緩衝器,所述64個環緩衝器中的每一者對應於被標記為WGID[0]至WGID[63]的所述64個寫入群組中的不同的一者。每一環緩衝器包括多個表項(在圖3B中所示實施例中,每一環緩衝器包括65個表項:Entry[0]至Entry[64]),其中每一表項儲存快取行位址(例如,28個位元位址)。在所示實施例中,有效表項是以首部及尾部為界(例如,處於首部至尾部-1範圍之外的表項被視為無效的)。
慮及例如圖3B中所示第零個寫入群組WGID[0],第一寫入群組表L1WGT儲存為1的首部指針及為3的尾部指針,此指示環緩衝器中的表項開始於Entry[1]處且結束於entry [3]處。慮及第二寫入群組表L2WGT的對應列,位於Entry[1]處的首部表項儲存快取行位址0×0000000,位於Entry[2]處的下一表項儲存快取行位址0×0000001,且位於Entry[3]處的下一表項為環緩衝器的尾部。
在本發明的另一實施例中,第二寫入群組表L2WGT可使用陣列來實作,其中首部表項總為第零個要件(例如,Entry[0])且第一寫入群組表L1WGT僅儲存尾部的位置。
儘管參照包括64個寫入群組(例如,64個寫入群組辨識符)的實施例闡述本發明的態樣,然而本發明的實施例並非僅限於此且可被實作成具有少於64個寫入群組或多於64個寫入群組。舉例而言,本發明的一些實施例可包括255個寫入群組或256個寫入群組。
儲存關於表項的狀態的資訊
若主機處理器200向NVDIMM-P 100傳輸用於將快取行自揮發性記憶體110清空至非揮發性記憶體120的命令但NVDIMM-P 100已將此快取行寫入至非揮發性記憶體120而未通知主機處理器200(例如,由於當快取已滿時進行的快取逐出(cache eviction)),則清空此快取行可能為多餘的。儘管此可能不會造成錯誤結果,然而額外操作可能傷及效能且額外寫入可能減少非揮發性記憶體120的壽命(例如,不必要地消耗快閃記憶體的有限數目的寫入循環)。如此一來,在本發明的一些實施例中,記憶體控制器130儲存用於判斷是否需要額外寫入的額外元資料,且此資料使得記憶體控制器130能夠辨識已被寫入至非揮發性記憶體120的資料,藉此使得記憶體控制器130能夠避免對非揮發性記憶體120實行不必要的寫入,且藉此增加非揮發性記憶體120的壽命。
在本發明的一些實施例中,記憶體控制器130儲存揮發性記憶體110的快取元資料區114中的每一表項的「持久性狀態」。持久性狀態指示對應快取行已被標記為持久性(例如,藉由PWRITE命令),但尚未變成持久性的(例如,藉由將所述快取行清空至非揮發性記憶體120)。此對應於例如藉由持久性被設定成0的PWRITE命令而寫入的資料。
表1示出儲存於揮發性記憶體110中的資料的各種可能狀態以及記憶體控制器130是否因應於快取逐出(不藉由PWRITE或FLUSH命令觸發)及因應於PWRITE或FLUSH命令來將資料自揮發性記憶體110寫入至非揮發性記憶體120中(實行回寫)。 表1
如表1中所見,當快取行的狀態為「無效」時,不因應於逐出或者PWRITE或FLUSH來對非揮發性記憶體120進行回寫,乃因記憶體控制器130無需將無效資料寫入至非揮發性記憶體120。
當狀態為「清潔」時,則揮發性記憶體110中的資料與非揮發性記憶體120中的對應的資料一致(例如,相同)。如此一來,再一次,記憶體控制器130無需將資料自揮發性記憶體110回寫至非揮發性記憶體120。
當狀態為「髒」時,則揮發性記憶體110中的資料已改變且與非揮發性記憶體120不一致。如此一來,當自快取(揮發性記憶體110)逐出此資料時,記憶體控制器130將資料寫入至非揮發性記憶體120以避免資料損失。然而,由於此資料未被標記為持久性,因此不因應於PWRITE或FLUSH命令來回寫資料。
當狀態為「持久性」時,在快取逐出(乃因持久性資料原本將丟失)的情形及PWRITE或FLUSH命令的情形二者中資料均被寫入至非揮發性記憶體120。在已被標記為持久性的資料已被寫入至非揮發性記憶體120之後,所述資料可在元資料中被設定成「清潔」狀態,使得後續的PWRITE或FLUSH命令不會使此資料被再次回寫。
由於存在以上表1中所示四種不同的狀態,因此在一些實施例中記憶體控制器130可跟蹤所述四種狀態(無效、清潔、髒、持久性)中的哪一者使用例如三個位元。表2示出對不同狀態的編碼,且根據本發明的一個實施例,該些狀態可針對L2讀取/寫入快取116及L3寫入緩衝器118而儲存於快取元資料114內。 表2
如以上表2中所示,可使用一或多個「有效」位元、「髒」位元、及「持久性」位元的組合來表示所述四種狀態。舉例而言,在讀取/寫入快取(RWC)的情形中,單一有效位元、單一髒位元[有效, 髒]、及單一持久性位元可表示所述四種狀態:[0, X, X]指示「無效」狀態(其中「X」指示所述值可被忽略(例如,0或1),換言之,有效位元為0足以證實所述狀態為「無效」),[1, 0, 0]指示「清潔」狀態,[1, 1, 0]指示「髒」但不是「持久性的」狀態,且[0, 1, 1]指示「持久性」或「髒且是持久性的」狀態。
相似地,在寫入緩衝器(WB)的情形中,可自多個有效位元(例如,32個位元)、髒位元、及持久性位元推斷所述狀態。當有效位元中的所有者均為0時,則資料處於「無效」狀態。當有效位元中的所有者均為1、髒位元為0、且持久性位元為0時,則資料處於「清潔」狀態。當並非所有有效位元均為0、髒位元為1、且持久性位元為0時,則資料處於「髒」狀態,且當並非所有有效位元均為0、髒位元為1、且持久性位元為1時,則所述資料處於「持久性」狀態。
如上所述,在自快取逐出資料之後,所述資料的狀態可例如藉由適宜地修改元資料的值而轉變成清潔。舉例而言,在讀取/寫入快取116的情形中,在實行自「持久性」狀態逐出資料之後,元資料的值可自[0, 1, 1](「持久性」狀態)改變成[1, 0, 0](「清潔」狀態)。
使用四種函數實作
PWRITE
及
FLUSH
本發明的實施例的態樣是有關於可與寫入群組表及快取行元資料結合使用以支援PWRITE及FLUSH命令的實作的四種函數。該些函數包括:
record(wgid, address)—將快取行位址記錄於寫入群組表中。
flush(wgid)—清空與特定寫入群組辨識符相關聯的快取行
flushPersist()—清空所有持久性快取行(例如,「持久性狀態」已被設定的快取行)
flushAll()—清空所有快取行(例如,無論是持久性的還是不是持久性的)。
圖4是根據本發明一個實施例的對第一寫入群組表及第二寫入群組表進行的「記錄」操作的效果的示意圖例。具體而言,圖4繪示調用函數record(wgid, address)的效果,其中wgid為參數WGID[1]且address(快取行位址)為0×0000004。寫入群組表的已相較於圖3B中所示狀態而改變的部分是以暗色或黑色背景繪示。
圖5是根據本發明一個實施例的「記錄」操作500的流程圖。圖5亦包括指示可如何實行各種操作的幾行C類假碼。
參照圖4及圖5,藉由寫入群組辨識符wgid及快取行位址來調用記錄操作。在操作502中,記憶體控制器自第一寫入群組表L1WGT查找與給定wgid對應的首部值及尾部值。在圖4中所示實例中,將WGID[1]的首部儲存於L1WGT的位置402中,且將尾部儲存於L1WGT的位置404中。重新參照圖3B,對於WGID[1],首部為0且尾部最初為1。
在操作504中,記憶體控制器130判斷與給定寫入群組辨識符相關聯的緩衝器是否已滿。舉例而言,若尾部的位置是位於首部的位置之前的一個位置(且可藉由(tail + 1) % ring_buf_size == head來計算),則可將環緩衝器確定為已滿。
若緩衝器已滿,則在操作506中記憶體控制器130可返回假(flase),假指示記錄操作失敗及所述記錄操作結束。
若緩衝器未滿,則在操作508中記憶體控制器130將給定位址儲存於與給定寫入群組對應的第二寫入群組表L2WGT的列的尾部位置中。在假碼中,此可為L2WGT[wgid][tail] = address,且在圖4中所示實例中,此對應於將位址0×0000004寫入至與和WGID[1]對應的第二寫入群組表L2WGT的列中的尾部(Entry[1])對應的位置406中。
在操作510中,記憶體控制器130對第一寫入群組表L1WGT中的尾部的位置進行遞增。如此一來,圖4中的位置404處所示尾部是自1遞增至2,且對應地,尾部現位於Entry[2](示出為圖4中的位置408)處。
在操作512中,記憶體控制器130返回真(true),真指示記錄操作成功及所述記錄操作結束。
圖6A是根據本發明一個實施例的「清空」操作600的流程圖。如圖6A中所示,「清空」函數可將寫入群組辨識符wgid視作輸入並利用回寫操作清空與所述wgid相關聯的快取行中的所有者,接著對緩衝器進行清除。更具體而言,在一個實施例中,在操作610中,記憶體控制器130在第一寫入群組表L1WGT中查找給定wgid的首部值及尾部值。在操作620中,記憶體控制器130開始對自首部至尾部的多個值進行循環迭代,其中所述循環中的當前位置是由「pos」指示。如上所示,在一些實施例中,緩衝器可被實作為環緩衝器,其中尾部位置可由小於首部的值指示。在此種情形中,操作610中的迭代可將此考慮在內以對緩衝器內的所有有效值進行迭代。
在操作630中,記憶體控制器130判斷在緩衝器的當前位置pos處的位址的元資料中是否已設定持久性狀態。若已設定持久性狀態,則在操作640中記憶體控制器130將所述位址處的資料寫入至非揮發性記憶體120(實行回寫)。若未設定持久性狀態(例如,假),則記憶體控制器130禁止將所述位址處的資料寫入至非揮發性記憶體120(例如,乃因所述資料已被儲存於非揮發性記憶體120中)。在任一種情形中,在操作660中,記憶體控制器判斷是否存在更多要評估的緩衝器位置(例如,若pos小於尾部)。若存在更多要評估的緩衝器位置,則記憶體控制器繼續至操作620以辨識自首部至尾部的下一位置。若已評估所述位置中的所有者,則在操作670中記憶體控制器藉由將首部及尾部設定成同一值而使緩衝器為空的(例如,將與給定寫入群組辨識符wgid對應的第一寫入群組表L1WGT的列中的首部及尾部的值設定成0)。
由於寫入群組表儲存與每一寫入群組辨識符相關聯的所有資料的記憶體位置,因此記憶體控制器130無需掃描整個揮發性記憶體110來辨識哪些資料屬於給定寫入群組。相反,辨識與給定寫入群組相關聯的資料中的所有者僅涉及查找儲存於與所述寫入群組相關聯的寫入群組表中的位址集合。
圖6B是根據本發明一個實施例的「回寫」操作640的流程圖。慮及快取行位址,記憶體控制器130藉由以下方式實行對與所述快取行位址相關聯的資料的回寫:辨識所述資料,將所辨識資料寫入至非揮發性記憶體120,及根據所述資料的經修改狀態來更新元資料。儘管圖6B中未示出,然而在本發明的一些實施例中,快取行位址被轉換成元資料位址,其中位於元資料位址處的元資料可辨識與快取行相關聯的元資料狀態(或「位元」)(例如,一或多個有效狀態、髒狀態、及持久性狀態),以及在適用時辨識所述資料在揮發性記憶體110中的對應位置及在非揮發性記憶體120中的對應位置。
在操作642中,記憶體控制器130檢查元資料以判斷在所述位址處是否存在任何無效資料(例如,所述一或多個有效位元中的任一者是否被設定成假)。若存在任何無效資料,則在操作644中以來自非揮發性記憶體120的資料更新揮發性記憶體110中的資料。在任一種情形中,在操作646中,記憶體控制器130將所述位置處的資料自揮發性記憶體110移動至非揮發性記憶體120,且在操作648中,記憶體控制器130更新元資料以將有效狀態設定成真(例如,均為1),將髒狀態設定成假(例如,0),且在適用時將持久性狀態設定成假(例如,0)。
如以下所更詳細闡述,本發明的一些實施例是有關於基於以上參照函數record(wgid, address)及flush(wgid)所述的技術及操作來實作PWRITE及FLUSH命令。
圖7是根據本發明一個實施例的PWRITE命令的實作方案的流程圖。當記憶體控制器130接收PWRITE命令時,除記憶體控制器130亦在元資料中將給定位址設定成「持久性」狀態且記錄函數被用於將PWRITE記錄至寫入群組表中以外,所有操作與正常寫入(XWRITE)實質上相同。在一個實施例中,PWRITE命令包括位址、寫入群組辨識符(WGID)、持久性旗標、及一些相關聯資料。在操作702中,記憶體控制器130將資料寫入至所述位址(與正常XWRITE命令相同)。在操作704中,記憶體控制器130將與所述位址對應的元資料設定成持久性狀態(例如,藉由將持久性狀態設定成真(例如,1)或者,在讀取/寫入快取的情形中藉由如以上表2中所示將有效狀態及髒狀態分別設定成0及1)。在操作706中,記憶體控制器使用以上參照圖5所述的記錄操作500將PWRITE記錄至寫入群組表(例如,L1WGT及L2WGT)中。在操作708中,記憶體控制器130判斷在PWRITE命令中是否已設定持久性旗標。若在PWRITE命令中已設定持久性旗標,則在操作710中記憶體控制器130使用以上參照圖6A所述的清空操作600將與給定寫入群組辨識符相關聯的資料中的所有者清空至非揮發性記憶體120。在任一種情形中,命令是完整的(例如,若在PWRITE命令中未設定持久性旗標,則無需實行清空操作)。
圖8是根據本發明一個實施例的FLUSH命令的實作方案的流程圖。如圖8中所示,依據被提供至FLUSH命令的參數,所述FLUSH命令可清空與特定寫入群組辨識符(wgid)相關聯的所有資料、清空持久性狀態被設定(例如,被設定成真)的所有資料、或清空揮發性記憶體110中的所有資料。在操作802中,記憶體控制器130根據其參數來判斷FLUSH命令是否欲清空特定寫入群組、是否欲清空被標記以持久性的所有資料、或是否欲清空揮發性記憶體110中的所有資料。
若記憶體控制器130確定FLUSH命令欲清空特定寫入群組,則在操作804中,所述記憶體控制器使用以上參照圖6A所述的清空函數來清空特定寫入群組,則執行FLUSH命令的過程完成。
若記憶體控制器130確定FLUSH命令欲清空被標記以持久性的資料,則所述記憶體控制器開始對寫入群組表中的(例如,L1WGT中的)所有寫入群組辨識符(wgid_i)進行循環迭代。在操作808中,記憶體控制器130使用以上參照圖6A所述的清空函數來清空當前寫入群組(例如,當前wgid_i)。在操作810中,記憶體控制器130判斷是否存在更多要處理的寫入群組。若存在更多要處理的寫入群組,則記憶體控制器130循環進行操作806以選擇下一寫入群組。若不存在更多要處理的寫入群組,則所述執行FLUSH命令的過程完成。
若記憶體控制器130確定FLUSH命令欲清空儲存於揮發性記憶體110中的所有資料,則在操作812中,記憶體控制器130藉由對元資料中的表項進行迭代來開始對揮發性記憶體110中的所有者進行循環迭代。對於元資料中的每一表項,在操作814中,記憶體控制器130判斷對應的資料是否是髒的。若對應的資料是髒的,則在操作816中,記憶體控制器130如以上在圖6B中所述對第i資料實行回寫操作640。在操作818中,記憶體控制器130判斷元資料中是否存在更多要處理的表項。若存在更多要處理的表項,則記憶體控制器130重新循環至操作812以選擇下一表項。若不存在更多要處理的表項(例如,在處理元資料的表項中的所有者之後),則在操作820中,記憶體控制器130開始對寫入群組表的表項進行循環以清空該些表項中的所有者(乃因所述資料中的所有者已被清空至非揮發性記憶體120)。具體而言,在操作822中,記憶體控制器130藉由例如將L1WGT中的首部及尾部設定成同一值(例如,將二者設定成0)而使當前寫入群組的緩衝器為空的。在操作824中,記憶體控制器130判斷是否存在更多要騰空的寫入群組。若存在更多要騰空的寫入群組,則記憶體控制器重新循環至操作820以選擇下一寫入群組。若不存在更多表項(例如,在使寫入群組中的所有者的緩衝器為空的之後),則所述執行FLUSH命令的過程完成。
如此一來,本發明的態樣實施例使得能夠藉由使用儲存關於儲存於揮發性記憶體110中的資料的持久性狀態的資訊的元資料及儲存關於與每一寫入群組相關聯的快取行位址的資訊的寫入群組表來高效地實作JEDEC NVDIMM-P規範的PWRITE命令及FLUSH命令,藉此執行涉及辨識與寫入群組相關聯的資料的命令的過程加速且降低執行所述命令的開銷。
本發明的實施例的一些態樣是有關於防止可能使寫入群組表變得不一致的競賽條件(race condition)。在一些實施例中,記憶體控制器130可能夠同時處理多個命令。然而,若同時實行兩次寫入,則視實行寫入操作的各種部分的特定次序而定,寫入群組表可能被留在與實際資料不一致的狀態中。一些此種競賽條件可藉由記憶體控制器130在實行回寫操作640的同時將揮發性記憶體110鎖定(例如,對寫入命令進行排隊)來防止。如此一來,在本發明的一些實施例中,儘管記憶體控制器130實行回寫操作640(例如,如圖6B中所示)以將資料自揮發性記憶體110移動至非揮發性記憶體120並更新元資料以指示所述資料已被移動至非揮發性記憶體120,所述記憶體控制器使所有其他寫入命令(例如,XWRITE命令及PWRITE命令)延遲直至回寫操作640完成。
在本發明的一個實施例中,記憶體控制器130可在實行回寫操作640的同時繼續對其他命令(例如,讀取命令或其他非寫入命令)作出回應。可將自主機處理器200接收的所有命令儲存於記憶體控制器130的命令隊列上直至所述所有指令被實行。在典型條件下,記憶體控制器130可以先進先出(first-in, first-out,FIFO)方式執行命令緩衝器中的命令,其中最早的命令被首先執行。然而,為在回寫操作期間實作對揮發性記憶體的鎖定,記憶體控制器130可在所述回寫操作期間僅執行來自命令緩衝器的非寫入命令(例如,讀取命令)。在回寫操作完成之後,記憶體控制器130可執行命令緩衝器中可能已在所述回寫操作期間被繞過的任意寫入命令。
本發明的實施例的另一態樣是有關於當用於特定寫入群組的緩衝器已滿時(例如,當第二寫入群組表的列已滿時)或由於片段儲存(fragmentation)而使得填充所述寫入群組表(例如,諸多寫入群組處於使用中,但在第二寫入群組表L2WGT中一些寫入群組的諸多槽位開放),將與所述特定寫入群組相關聯的快取行預清空(或垃圾收集)至非揮發性記憶體120。舉例而言,此可藉由在與wgid相關聯的緩衝器已滿時執行所述flush(wgid)來觸發。更詳言之,在本發明的一些實施例中,記憶體控制器130被配置成一旦緩衝器已滿便清空所述緩衝器。舉例而言,在將表項添加至緩衝器並更新第一寫入群組表L1WGT以辨識尾部的新位置之後,若所述尾部現在辨識出緊接在首部之前的位置(例如,(尾部+1) % ring_buf_size == 首部)),則所述緩衝器已滿。在此種情形中,可立即觸發flush(wgid)操作600以將已滿緩衝器清空至非揮發性記憶體120。在本發明的一些實施例中,記憶體控制器130藉由對第一寫入群組表L1WGT中的表項進行迭代及當找到已滿緩衝器時清空相關聯緩衝器來週期性地判斷所述緩衝器中的任意者是否已滿(例如,(tail+1) % ring_buf_size == head)。在本發明的此種實施例中,PWRITE命令可使得記憶體控制器130試圖將新表項記錄至已滿緩衝器。若所述緩衝器中的任意者已滿,則記憶體控制器130可在記錄新寫入之前首先清空所述緩衝器(以使所述緩衝器為空的)。
藉由
L0WGT
擴展寫入群組表
在以上所述實施例中,寫入群組中的每一者的緩衝器為相同大小。根據本發明的另一實施例,為提高緩衝器的大小的靈活性,可將第二寫入群組表L2WGT的零個列或更多個列指配至任意給定寫入群組。如此一來,與任意特定寫入群組相關聯的表項的數目可大於第二寫入群組表L2WGT的任意給定列中的表項的數目(例如,如圖3B中所示,65個表項)。
本發明的一個實施例包括第零個寫入群組表L0WGT。在本發明的一個實施例中,第零個寫入群組表L0WGT被儲存於靜態隨機存取記憶體(SRAM)中以提供更快的存取。第零個寫入群組表L0WGT是藉由寫入群組辨識符(wgid)來索引。每一寫入群組辨識符與位元映射表相關聯,位元映射表指示第一寫入群組表L1WGT及/或第二寫入群組表L2WGT的哪些列映射至此寫入群組辨識符。
圖9是根據本發明一個實施例的第零個寫入群組表902、第一寫入群組表904、及第二寫入群組表906的示意圖例。舉例而言,位元映射表中的每一位置對應於第一寫入群組表L1WGT與第二寫入群組表L2WGT的不同的列。在圖9中所示實例中,WGID[0]與位元映射表64b1100_..._000(「_..._」指示被設定成零的中間位元)相關聯,其中第零個位置及第一位置中的所述兩個1指示列0及列1被映射至WGID[0]。作為另一實例,WGID[1]與位元映射表64b0010_..._0000相關聯,此指示列2被映射至WGID[1]。作為第三個實例,WGID[2]與位元映射表64b0000_..._0001相關聯,此指示最後一列(列63)被映射至WGID[2]。作為第四個實例,WGID[63]與位元映射表64b0000_..._0000相關聯,此指示各所述列均不被映射至WGID[63]。
在本發明的一個實施例中,第一寫入群組表及第二寫入群組表中的每一列被映射至至多一個寫入群組(例如,每一列被映射至恰好零個寫入群組或恰好一個寫入群組,且各列均不被映射至多於一個寫入群組)。為跟蹤第一寫入群組表L1WGT及第二寫入群組表L2WGT的哪些列處於使用中,在一個實施例中,使用全域位元映射表908、藉由將全域位元映射表908的對應位置設定成1來跟蹤第一寫入群組表904及第二寫入群組表906的哪些列被指配至寫入群組。未被指配至寫入群組的列具有全域位元映射表的被設定成0的對應位置。在圖9中所示實例中,由於第零個列及第一列被指配至WGID[0]、第二列被指配至WGID[1]、且第六十三列被配置至WGID[2],因此全域位元映射表具有形式64b1110_..._0001,此亦為對各別位元映射表中的所有者的按位異或(bitwise XOR)或求和。
本發明的實施例的一些態樣是有關於適應於使用如圖9中所示第零個寫入群組表L0WGT的記錄操作及清空操作的經修改版本。
更詳言之,當包括第零個寫入群組表902時,記錄函數首先存取第零個寫入群組表L0WGT以找到被映射至此寫入群組辨識符的環緩衝器。可檢查每一此種環緩衝器的首部及尾部以找到具有可用空間的緩衝器。若所分配緩衝器中的所有者均已滿,則可將額外的緩衝器分配至此寫入群組辨識符(例如,藉由尋找全域位元映射表中的未被指配的列),且藉由更新第零個寫入群組表(包括與所述寫入群組辨識符相關聯的位元映射表及所述全域位元映射表)來指示此列被指配至所述寫入群組辨識符。
圖10是根據本發明一個實施例的在包括第零個寫入群組表、第一寫入群組表、及第二寫入群組表的系統中進行的「記錄」操作的實作方案的流程圖。如圖10中所示,記錄操作可仍將寫入群組辨識符wgid及位址視作參數。在操作1002中,記憶體控制器130在第零個寫入群組表L0WGT中查找與給定wgid對應的列位元映射表。在操作1004中,記憶體控制器130開始對被指配至所述寫入群組的第一寫入群組表及第二寫入群組表的列(如藉由位元映射表的非零位置辨識)進行循環迭代。在操作1006中,記憶體控制器130試圖使用與以上參照圖5所述的記錄函數500實質上相同但適應於取用列數目而非寫入群組的記錄函數來將給定位址記錄至所指配列的當前列中。如圖5中所見,記錄函數500返回布林值(例如,真或假),其中真指示記錄操作成功且假指示記錄操作失敗。若記錄操作成功(例如,位址被記錄於當前列中),則不需要進行進一步的動作且在操作1008中記憶體控制器130返回真,此指示所述記錄操作成功。
然而,若記錄操作失敗(例如,由於列已滿),則在操作1010中記憶體控制器130判斷存在更多要慮及的所指配列。若存在更多要慮及的所指配列,則記憶體控制器130重新循環至操作1004以選擇下一列且嘗試再次進行記錄。如此一來,記錄函數500判斷第二寫入群組表L2WGT的緩衝器中與特定寫入群組辨識符WGID相關聯的一者是否具有用於給定位址的可用空間且因應於確定出所述緩衝器中的一者具有可用空間而將所述給定位址記錄(儲存)於所辨識出的緩衝器中。
然而,若不存在更多要嘗試的所指配列,(例如,若所指配列中的所有者均已滿或若不存在所指配列),則記憶體控制器確定所述所指配列均不具有可用空間。如此一來,在操作1012中,記憶體控制器130藉由檢查全域位元映射表判斷是否存在任何未被指配的列。若不存在未被指配的列,則記錄操作已失敗且在操作1014中記憶體控制器130返回假。然而,若存在至少一個可用列(例如,尚未被指配至寫入群組中的任意者的列或緩衝器(如在全域位元映射表中藉由0來辨識)),則在操作1016中記憶體控制器130選擇該些可用列中的一者(例如,編號最低的列或緩衝器)作為「new_row」。在操作1018中,記憶體控制器130藉由將與所選擇列對應的位元設定成1來更新當前寫入群組的列位元映射表,藉此將所述所選擇列(「new_row」)指配至此寫入群組。在操作1020中,記憶體控制器130藉由將全域位元映射表的與所選擇列對應的位置更新成1來將所述所選擇列標記為處於使用中。在操作1022中,記憶體控制器130接著使用實質上相同的記錄函數500將位址記錄於所選擇列中並返回此結果。
相似地,當藉由第零個寫入群組表L0WGT實作flush(wgid)函數時,記憶體控制器130可首先存取L0WGT以找到被指配至此寫入群組辨識符的緩衝器並對儲存於該些緩衝器中的每一者的值進行迭代以對每一值實行回寫操作。另外,當緩衝器被解分配時(例如,當所述緩衝器藉由清空操作而騰空時)記憶體控制器130可更新第零個寫入群組表L0WGT以自寫入群組將寫入群組表的被騰空的列取消指配(例如,藉由在被清空的寫入群組辨識符的位元映射表與全域位元映射表之間實行按位異或且藉由接著將所述被清空的寫入群組辨識符的位元映射表的位元中的所有者設定成0)。
圖11是根據本發明一個實施例的在包括第零個寫入群組表、第一寫入群組表、及第二寫入群組表的系統中進行的「清空」操作的實作方案的流程圖。在操作1102中,記憶體控制器130在第零個寫入群組表L0WGT中查找與給定wgid對應的列位元映射表。在操作1104中,記憶體控制器130開始對被指配至所述寫入群組的第一寫入群組表及第二寫入群組表的列(如藉由位元映射表的非零位置辨識)進行循環迭代。在操作1106中,記憶體控制器130對被指配至寫入群組的當前列實行清空操作,其中所述清空操作是圖6A中所示清空操作600的經輕微修改的版本,其中清空將列數目而非寫入群組辨識符視作參數。在操作1108中,記憶體控制器130判斷是否存在任何要處理的額外列。若存在任何要處理的額外列,則在記憶體控制器130中重新循環至操作1104以選擇被指配至寫入群組的下一列。若不存在任何要處理的額外列,則記憶體控制器更新全域位元映射表以將先前被指配至當前寫入群組的列標記為現在是可用的。在操作1112中,記憶體控制器130亦在第零個寫入群組表L0WGT中將當前寫入群組的列位元映射表的位元中的所有者設定成零以指示各列均不被指配至所述當前寫入群組,在此之後所述寫入群組的清空完成。
如此一來,本發明的實施例的態樣是有關於用於將被寫入至NVDIMM-P模組的資料與特定寫入群組相關聯且藉由避免需要掃描整個揮發性記憶體中與所給定特定寫入群組匹配的資料及藉由若資料已被寫入至非揮發性記憶體則避免將此資料多餘地清空至非揮發性記憶體來提高根據寫入群組將資料自揮發性記憶體清空至非揮發性記憶體的效能的系統及方法。
除非另外定義,否則本文中所使用的全部用語(包括技術及科學用語)的含義皆與本發明所屬技術領域中具有通常知識者所通常理解的含義相同。更應理解,該些用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文及/或本說明書中的含義一致的含義,且除非本文中進行明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
儘管已示出及闡述了本發明的一些實施例,然而此項技術中具有通常知識者應理解,可在不背離如由以下申請專利範圍及其等效範圍界定的本發明的精神及範圍的條件下對所述實施例作出一些潤飾及變化。
100‧‧‧具有持久性記憶體的非揮發性雙直插記憶體模組(NVDIMM-P)
110‧‧‧揮發性記憶體/靜態隨機存取記憶體(SRAM)揮發性記憶體
112‧‧‧經快取資料
114‧‧‧快取元資料/快取元資料區
116‧‧‧讀取/寫入快取/L2讀取/寫入快取
118‧‧‧L3寫入緩衝器
120‧‧‧非揮發性記憶體/相變記憶體(PCM)非揮發性記憶體
130‧‧‧記憶體控制器
132‧‧‧主機層
134‧‧‧邏輯核心
134c‧‧‧快取控制器
134d‧‧‧揮發性記憶體控制器
134h、134m‧‧‧介面
134p‧‧‧預取器
136‧‧‧媒體層
200‧‧‧主機處理器
250‧‧‧匯流排
304、904、L1WGT‧‧‧第一寫入群組表
306、906、L2WGT‧‧‧第二寫入群組表
402、404、406、408‧‧‧位置
500‧‧‧記錄操作/記錄函數
502、504、506、508、510、512、610、620、630、642、644、646、648、660、670、702、704、706、708、710、802、804、806、808、810、812、814、816、818、820、822、824、1002、1004、1006、1008、1010、1012、1014、1016、1018、1020、1022、1102、1104、1106、1108、1110、1112‧‧‧操作
600‧‧‧清空操作
640‧‧‧操作/回寫操作
902、L0WGT‧‧‧第零個寫入群組表
908‧‧‧全域位元映射表
WGID、wgid‧‧‧寫入群組辨識符
WGID[0]‧‧‧第零個寫入群組
WGID[1]‧‧‧第一寫入群組
WGID[2]‧‧‧第二寫入群組
WGID[63]‧‧‧第六十三寫入群組
附圖與本說明書一起示出本發明的示例性實施例,且與本說明一起用於闡釋本發明的態樣及原理。
圖1是根據本發明一個實施例的與主機系統介接的非揮發性雙直插記憶體模組的示意圖。
圖2A是根據本發明一個實施例的與主機系統介接的非揮發性雙直插記憶體模組的方塊圖。
圖2B是根據本發明一個實施例的包括邏輯核心及揮發性記憶體的NVDIMM-P的一部分的方塊圖。
圖3A及圖3B是根據本發明一個實施例的第一寫入群組表及第二寫入群組表的示意圖例。
圖4是根據本發明一個實施例的對第一寫入群組表及第二寫入群組表進行的「記錄」操作的效果的示意圖例。
圖5是根據本發明一個實施例的「記錄」操作的流程圖。
圖6A是根據本發明一個實施例的「清空」操作的流程圖。
圖6B是根據本發明一個實施例的「回寫(writeback)」操作的流程圖。
圖7是根據本發明一個實施例的持久性寫入(PWRITE)命令的實作方案的流程圖。
圖8是根據本發明一個實施例的FLUSH命令的實作方案的流程圖。
圖9是根據本發明一個實施例的第零個寫入群組表、第一寫入群組表、及第二寫入群組表的示意圖例。
圖10是根據本發明一個實施例的在包括第零個寫入群組表、第一寫入群組表、及第二寫入群組表的系統中進行的「記錄」操作的實作方案的流程圖。
圖11是根據本發明一個實施例的在包括第零個寫入群組表、第一寫入群組表、及第二寫入群組表的系統中進行的「清空」操作的實作方案的流程圖。
Claims (20)
- 一種記憶體模組,包括: 揮發性記憶體; 非揮發性記憶體;以及 記憶體控制器,包括: 主機層; 媒體層,耦合至所述非揮發性記憶體;以及 邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成: 經由所述主機層接收持久性寫入命令,所述持久性寫入命令包括快取行位址及寫入群組辨識符; 經由所述主機層接收與所述持久性寫入命令相關聯的資料;以及 因應於所述持久性寫入命令: 將所述資料在所述快取行位址處寫入至所述揮發性記憶體; 將所述快取行位址儲存於第二寫入群組表中的多個緩衝器中的所選擇緩衝器中,所述所選擇緩衝器對應於所述寫入群組辨識符;以及 更新所述第一寫入群組表的列以辨識所述所選擇緩衝器的含有有效表項的位置,所述列對應於所述寫入群組辨識符。
- 如申請專利範圍第1項所述的記憶體模組,其中所述邏輯核心更儲存第零個寫入群組表,所述第零個寫入群組表包括多個列, 其中所述第零個寫入群組表的所述列中的每一者與對應的寫入群組相關聯,且 其中所述第零個寫入群組表的所述列中的每一者包括列位元映射表,所述列位元映射表辨識與所述對應的寫入群組相關聯的所述第一寫入群組表及所述第二寫入群組表的列。
- 如申請專利範圍第2項所述的記憶體模組,其中所述邏輯核心更被配置成: 在所述第零個寫入群組表中查找與所述寫入群組辨識符對應的列位元映射表,所述對應的列位元映射表辨識與所述寫入群組辨識符相關聯的所述第二寫入群組表的多個緩衝器; 基於所述對應的列位元映射表來判斷與所述寫入群組辨識符相關聯的所述多個緩衝器中的緩衝器是否具有可用空間; 因應於確定出所述多個緩衝器中的所述緩衝器具有可用空間,選擇所述緩衝器作為所述所選擇緩衝器;以及 因應於確定出與所述寫入群組辨識符相關聯的所述多個緩衝器均不具有可用空間, 判斷在所述第二寫入群組表中是否具有可用緩衝器;以及 因應於確定出在所述第二寫入群組表中具有可用緩衝器: 更新所述對應的列位元映射表以將所述可用緩衝器與所述寫入群組辨識符相關聯;以及 選擇所述可用緩衝器作為所述所選擇緩衝器。
- 如申請專利範圍第1項所述的記憶體模組,其中所述持久性寫入命令更包括持久性旗標, 其中所述邏輯核心更被配置成判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標: 查找與所述寫入群組辨識符相關聯的所述第二寫入群組表中的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;以及 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第1項所述的記憶體模組,更包括快取元資料記憶體, 其中所述邏輯核心被配置成將儲存於所述第二寫入群組表中的每一快取行位址中的持久性狀態儲存於所述快取元資料記憶體中。
- 如申請專利範圍第5項所述的記憶體模組,其中所述持久性寫入命令更包括持久性旗標, 其中所述邏輯核心更被配置成判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標: 查找與所述寫入群組辨識符相關聯的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址; 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者: 判斷是否已設定與所述快取行位址對應的所述持久性狀態; 因應於確定出已設定與所述快取行位址對應的所述持久性狀態,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體;以及 因應於確定出未設定與所述快取行位址對應的所述持久性狀態,禁止將所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第1項所述的記憶體模組,其中所述記憶體模組是非揮發性雙直插記憶體模組。
- 一種記憶體模組,包括: 揮發性記憶體; 非揮發性記憶體;以及 記憶體控制器,包括: 主機層; 媒體層,耦合至所述非揮發性記憶體;以及 邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成: 經由所述主機層接收清空命令,所述清空命令包括寫入群組辨識符; 查找與所述寫入群組辨識符對應的所述第一寫入群組表的一或多個列,所述一或多個列中的每一者包括用於辨識第二寫入群組表的對應的緩衝器中的有效表項的首部指針及尾部指針; 查找與所述第二寫入群組表中的所述寫入群組辨識符相關聯的一或多個緩衝器,所述一或多個緩衝器中的每一者將一或多個快取行位址儲存於由所述第一寫入群組表的對應的列的所述首部指針及所述尾部指針辨識的所述有效表項處;以及 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第8項所述的記憶體模組,其中所述邏輯核心更被配置成將與所述寫入群組辨識符對應的所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
- 一種記憶體模組,包括: 揮發性記憶體; 非揮發性記憶體;以及 記憶體控制器,包括: 主機層; 媒體層,耦合至所述非揮發性記憶體;以及 邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成: 經由所述主機層接收清空命令; 對於所述第一寫入群組表中的每一列: 查找第二寫入群組表中的對應的緩衝器,所述第一寫入群組表中的每一列包括用於辨識所述第二寫入群組表的所述對應的緩衝器中的有效表項的首部指針及尾部指針; 對於所述對應的緩衝器的所述有效表項中的每一者,擷取對應的快取行位址並將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體;以及 將所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
- 一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體以及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括: 由所述記憶體控制器接收持久性寫入命令,所述持久性寫入命令包括快取行位址及寫入群組辨識符; 由所述記憶體控制器接收與所述持久性寫入命令相關聯的資料;以及 因應於所述持久性寫入命令: 將所述資料在所述快取行位址處寫入至所述揮發性記憶體; 由所述記憶體控制器將所述快取行位址儲存於第二寫入群組表中的多個緩衝器中的所選擇緩衝器中,所述所選擇緩衝器對應於所述寫入群組辨識符;以及 由所述記憶體控制器更新所述第一寫入群組表的列以辨識所述所選擇緩衝器的包含有效表項的位置,所述列對應於所述寫入群組辨識符。
- 如申請專利範圍第11項所述的方法,其中所述邏輯核心更儲存第零個寫入群組表,所述第零個寫入群組表包括多個列, 其中所述第零個寫入群組表的所述列中的每一者與對應的寫入群組相關聯,且 其中所述第零個寫入群組表的所述列中的每一者包括列位元映射表,所述列位元映射表辨識與所述對應的寫入群組相關聯的所述第一寫入群組表及所述第二寫入群組表的列。
- 如申請專利範圍第12項所述的方法,更包括: 在所述第零個寫入群組表中查找與所述寫入群組辨識符對應的列位元映射表,所述對應的列位元映射表辨識與所述寫入群組辨識符相關聯的所述第二寫入群組表的多個緩衝器; 基於所述對應的列位元映射表來判斷與所述寫入群組辨識符相關聯的所述多個緩衝器中的緩衝器是否具有可用空間; 因應於確定出所述多個緩衝器中的所述緩衝器具有可用空間,選擇所述緩衝器作為所述所選擇緩衝器;以及 因應於確定出所述多個緩衝器均不具有可用空間, 判斷在所述第二寫入群組表中是否具有可用緩衝器;以及 因應於確定出在所述第二寫入群組表中具有可用緩衝器,選擇所述可用緩衝器作為所述所選擇緩衝器。
- 如申請專利範圍第11項所述的方法,其中所述持久性寫入命令更包括持久性旗標, 其中所述方法更包括判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標: 查找與所述寫入群組辨識符相關聯的所述第二寫入群組表中的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址;以及 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第11項所述的方法,其中所述記憶體模組更包括快取元資料記憶體, 其中所述方法更包括將儲存於所述第二寫入群組表中的每一快取行位址中的持久性狀態儲存於所述快取元資料記憶體中。
- 如申請專利範圍第15項所述的方法,其中所述持久性寫入命令更包括持久性旗標, 其中所述方法更包括判斷是否已設定所述持久性旗標,且因應於確定出已設定所述持久性旗標: 查找與所述寫入群組辨識符相關聯的一或多個緩衝器,所述緩衝器中的每一者儲存一或多個快取行位址; 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者: 判斷是否已設定與所述快取行位址對應的所述持久性狀態; 因應於確定出已設定與所述快取行位址對應的所述持久性狀態,將所述揮發性記憶體的所述快取行位址處的所述資料寫入至所述非揮發性記憶體;以及 因應於確定出未設定與所述快取行位址對應的所述持久性狀態,禁止將所述快取行位址處的所述資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第11項所述的方法,其中所述記憶體模組是非揮發性雙直插記憶體模組。
- 一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括: 由所述記憶體控制器接收清空命令,所述清空命令包括寫入群組辨識符; 查找與所述寫入群組辨識符對應的所述第一寫入群組表的一或多個列,所述一或多個列中的每一者包括用於辨識第二寫入群組表的對應的緩衝器中的有效表項的首部指針及尾部指針; 查找與所述第二寫入群組表中的所述寫入群組辨識符相關聯的一或多個緩衝器,所述一或多個緩衝器中的每一者將一或多個快取行位址儲存於由所述第一寫入群組表的對應的列的所述首部指針及所述尾部指針辨識的所述有效表項處;以及 對於與所述寫入群組辨識符相關聯的所述一或多個緩衝器的所述一或多個快取行位址中的每一者,將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體。
- 如申請專利範圍第18項所述的方法,更包括:將與所述寫入群組辨識符對應的所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
- 一種操作記憶體模組的方法,所述記憶體模組包括揮發性記憶體、非揮發性記憶體及記憶體控制器,所述記憶體控制器包括:主機層;媒體層,耦合至所述非揮發性記憶體;以及邏輯核心,耦合至所述主機層、所述媒體層及所述揮發性記憶體,所述邏輯核心儲存第一寫入群組表,所述第一寫入群組表包括多個列,且所述邏輯核心被配置成控制所述揮發性記憶體及所述非揮發性記憶體,所述方法包括: 由所述記憶體控制器接收清空命令; 對於所述第一寫入群組表中的每一列: 查找第二寫入群組表中的對應的緩衝器,所述第一寫入群組表中的每一列包括用於辨識所述第二寫入群組表的所述對應的緩衝器中的有效表項的首部指針及尾部指針; 對於所述對應的緩衝器的所述有效表項中的每一者,擷取對應的快取行位址並將所述揮發性記憶體的所述快取行位址處的資料寫入至所述非揮發性記憶體;以及 將所述第一寫入群組表的所述列的所述首部指針及所述尾部指針更新成同一值以使所述對應的緩衝器成為空的。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762503835P | 2017-05-09 | 2017-05-09 | |
US62/503,835 | 2017-05-09 | ||
US15/669,851 | 2017-08-04 | ||
US15/669,851 US11175853B2 (en) | 2017-05-09 | 2017-08-04 | Systems and methods for write and flush support in hybrid memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201903612A true TW201903612A (zh) | 2019-01-16 |
TWI771387B TWI771387B (zh) | 2022-07-21 |
Family
ID=64096702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107108186A TWI771387B (zh) | 2017-05-09 | 2018-03-12 | 記憶體模組及操作記憶體模組的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11175853B2 (zh) |
JP (1) | JP7115899B2 (zh) |
KR (1) | KR102506392B1 (zh) |
CN (1) | CN108874701B (zh) |
TW (1) | TWI771387B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216685B1 (en) * | 2017-07-19 | 2019-02-26 | Agiga Tech Inc. | Memory modules with nonvolatile storage and rapid, sustained transfer rates |
US11194524B2 (en) | 2017-09-15 | 2021-12-07 | Qualcomm Incorporated | Apparatus and method for performing persistent write operations using a persistent write command |
US10996888B2 (en) * | 2017-10-31 | 2021-05-04 | Qualcomm Incorporated | Write credits management for non-volatile memory |
KR102495539B1 (ko) * | 2018-07-16 | 2023-02-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10573391B1 (en) * | 2018-12-03 | 2020-02-25 | Micron Technology, Inc. | Enhanced flush transfer efficiency via flush prediction |
US10521383B1 (en) | 2018-12-17 | 2019-12-31 | Micron Technology, Inc. | Handling operation collisions in a non-volatile memory |
US11301393B2 (en) * | 2018-12-17 | 2022-04-12 | SK Hynix Inc. | Data storage device, operation method thereof, and storage system including the same |
CN114840452A (zh) * | 2018-12-24 | 2022-08-02 | 北京忆芯科技有限公司 | 一种控制部件 |
US10936496B2 (en) | 2019-06-07 | 2021-03-02 | Micron Technology, Inc. | Managing collisions in a non-volatile memory system with a coherency checker |
US11074181B2 (en) * | 2019-07-01 | 2021-07-27 | Vmware, Inc. | Dirty data tracking in persistent memory systems |
US10846222B1 (en) | 2019-07-01 | 2020-11-24 | Vmware, Inc. | Dirty data tracking in persistent memory systems |
KR102287774B1 (ko) * | 2019-11-01 | 2021-08-06 | 연세대학교 산학협력단 | 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법 |
US11526299B2 (en) * | 2019-12-19 | 2022-12-13 | Micron Technology, Inc. | Elastic buffer for media management of a memory sub-system |
KR102698959B1 (ko) * | 2020-01-29 | 2024-08-27 | 삼성전자주식회사 | 키-값 스토리지 장치들에 대한 입출력 성능을 향상을 위한 키 값 객체 입출력들 그룹화 |
CN111324306B (zh) * | 2020-02-16 | 2021-04-20 | 西安奥卡云数据科技有限公司 | 一种基于nvdimm的数据分类缓存分配方法 |
KR102591808B1 (ko) * | 2020-04-29 | 2023-10-23 | 한국전자통신연구원 | 컴퓨팅 시스템 및 그 동작 방법 |
CN111753337B (zh) * | 2020-07-02 | 2023-02-21 | 上海电器科学研究所(集团)有限公司 | 一种储能电池管理系统意外断电soc处理方法 |
WO2022086559A1 (en) * | 2020-10-23 | 2022-04-28 | Hewlett-Packard Development Company, L.P. | Access to volatile memories |
CN116724299A (zh) | 2021-03-01 | 2023-09-08 | 美光科技公司 | 支持写入命令的两阶段缓冲操作 |
US12073112B2 (en) * | 2021-03-08 | 2024-08-27 | Micron Technology, Inc. | Enabling memory access transactions for persistent memory |
CN113721839B (zh) * | 2021-07-23 | 2024-04-19 | 阿里巴巴达摩院(杭州)科技有限公司 | 用于处理图数据的计算系统和存储分层方法 |
US11687463B2 (en) * | 2021-10-29 | 2023-06-27 | Dell Products L.P. | Management of flushing working set based on barrier in page descriptor ring |
US20230251963A1 (en) * | 2022-02-04 | 2023-08-10 | National Technology & Engineering Solutions Of Sandia, Llc | Architectural support for persistent applications |
US11966590B2 (en) | 2022-02-25 | 2024-04-23 | Samsung Electronics Co., Ltd. | Persistent memory with cache coherent interconnect interface |
US20240143227A1 (en) * | 2022-10-26 | 2024-05-02 | Western Digital Technologies, Inc. | Data Storage Device and Method for Reducing Flush Latency |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
WO2008055270A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Writing to asymmetric memory |
US9223642B2 (en) | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
JP2011154547A (ja) * | 2010-01-27 | 2011-08-11 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
DE112012002622B4 (de) * | 2011-06-24 | 2017-01-26 | International Business Machines Corporation | Aufzeichnungseinheit für lineare Aufzeichnung zum Ausführen optimalen Schreibens beim Empfangen einer Reihe von Befehlen, darunter gemischte Lese- und Schreibbefehle, sowie Verfahren und Programm für dessen Ausführung |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
KR101915073B1 (ko) | 2011-12-20 | 2018-11-06 | 인텔 코포레이션 | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 |
WO2013100936A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | A method and device to distribute code and data stores between volatile memory and non-volatile memory |
WO2013101053A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Non-volatile ram disk |
US9552176B2 (en) | 2013-04-12 | 2017-01-24 | Microsoft Technology Licensing, Llc | Block storage using a hybrid memory device |
US9129674B2 (en) * | 2013-06-27 | 2015-09-08 | Intel Corporation | Hybrid memory device |
WO2015126518A2 (en) | 2014-02-20 | 2015-08-27 | Rambus Inc. | High performance persistent memory |
US9916185B2 (en) * | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
US9880754B2 (en) | 2014-07-09 | 2018-01-30 | Dell Products, Lp | System and method for enabling transportability of a non volatile dual inline memory module |
US10078448B2 (en) | 2015-07-08 | 2018-09-18 | Samsung Electronics Co., Ltd. | Electronic devices and memory management methods thereof |
KR102408613B1 (ko) * | 2015-08-27 | 2022-06-15 | 삼성전자주식회사 | 메모리 모듈의 동작 방법, 및 메모리 모듈을 제어하는 프로세서의 동작 방법, 및 사용자 시스템 |
JP6479608B2 (ja) * | 2015-08-28 | 2019-03-06 | 東芝メモリ株式会社 | メモリ装置およびメモリ制御方法 |
CN105468539B (zh) * | 2015-11-19 | 2018-10-23 | 上海新储集成电路有限公司 | 一种混合内存写操作的实现方法 |
-
2017
- 2017-08-04 US US15/669,851 patent/US11175853B2/en active Active
-
2018
- 2018-01-15 KR KR1020180004966A patent/KR102506392B1/ko active IP Right Grant
- 2018-03-12 TW TW107108186A patent/TWI771387B/zh active
- 2018-04-25 CN CN201810376289.5A patent/CN108874701B/zh active Active
- 2018-04-26 JP JP2018084819A patent/JP7115899B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CN108874701A (zh) | 2018-11-23 |
US11175853B2 (en) | 2021-11-16 |
KR102506392B1 (ko) | 2023-03-07 |
US20180329651A1 (en) | 2018-11-15 |
JP2018190412A (ja) | 2018-11-29 |
TWI771387B (zh) | 2022-07-21 |
JP7115899B2 (ja) | 2022-08-09 |
CN108874701B (zh) | 2023-04-28 |
KR20180123625A (ko) | 2018-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201903612A (zh) | 記憶體模組及操作記憶體模組的方法 | |
US11868618B2 (en) | Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits | |
EP3673377B1 (en) | Logical to physical mapping | |
US8688894B2 (en) | Page based management of flash storage | |
US20110231598A1 (en) | Memory system and controller | |
US20070094440A1 (en) | Enhanced data access in a storage device | |
CN111858404B (zh) | 地址转换的方法和系统、以及计算机可读介质 | |
JPS5845611A (ja) | 周辺メモリ・システム | |
EP3757800A1 (en) | Memory system, computing system, and methods thereof | |
US10223001B2 (en) | Memory system | |
US8549227B2 (en) | Multiprocessor system and operating method of multiprocessor system | |
US5287512A (en) | Computer memory system and method for cleaning data elements | |
US11782854B2 (en) | Cache architecture for a storage device | |
JP3974131B2 (ja) | キャッシュメモリを制御するための方法と装置 | |
US11354241B2 (en) | Memory system | |
JP6027479B2 (ja) | 半導体メモリ装置 |