TW201710910A - 交易式混合記憶體模組及其操作方法 - Google Patents
交易式混合記憶體模組及其操作方法 Download PDFInfo
- Publication number
- TW201710910A TW201710910A TW105115915A TW105115915A TW201710910A TW 201710910 A TW201710910 A TW 201710910A TW 105115915 A TW105115915 A TW 105115915A TW 105115915 A TW105115915 A TW 105115915A TW 201710910 A TW201710910 A TW 201710910A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- dram
- cache
- controller
- flash
- Prior art date
Links
Classifications
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
-
- 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
-
- 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/0877—Cache access modes
-
- 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/061—Improving I/O performance
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
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
一種混合記憶體模組包含動態隨機存取記憶體(DRAM)快取記憶體、快閃儲存器以及記憶體控制器。DRAM快取記憶體包含一或多個DRAM裝置以及DRAM控制器,且快閃儲存器包含一或多個快閃裝置以及快閃控制器。記憶體控制器與DRAM控制器以及快閃控制器介接。
Description
本揭露內容大體上是關於記憶體模組,且更特定而言,是關於交易式混合記憶體模組。
固態磁碟機(solid-state drive;SSD)將資料儲存於諸如動態隨機存取記憶體(dynamic random-access memory;DRAM)以及快閃記憶體(flash memory)的非旋轉儲存媒體(non-rotating storage medium)中。DRAM快速,對於重複性讀取/寫入循環具有低潛時以及高持久性。快閃記憶體通常較便宜,不需要再新,且消耗較少功率。歸因於DRAM以及快閃記憶體的相異特性,DRAM通常用以儲存操作指令(operating instruction)以及過渡資料(transitional data),而快閃記憶體用於儲存應用程式(application)以及使用者資料(user data)。
DRAM以及快閃記憶體可一起用於各種計算環境中。舉例而言,資料中心(datacenter)需要高容量、高效能、低功率以及低成本的記憶體解決方案(memory solution)。現今用於資料中心的記憶體解決方案是主要基於DRAM。DRAM提供高效能,但快閃記憶體較緻密,消耗較少功率,且比DRAM便宜。
歸因於操作原理的差異,單獨的記憶體控制器(memory controller)用以控制DRAM以及快閃記憶體。舉例而言,DRAM為位元組可定址的(byte addressable),而快閃記憶體為區塊可定址的(block addressable)。快閃記憶體需要耗損均衡(wear-leveling)以及廢料收集(garbage collection),而DRAM記憶體需要再新。此外,舉例而言,包含DRAM以及快閃記憶體兩者的混合記憶體系統(hybrid memory system)需要用於DRAM與快閃記憶體之間的資料傳輸的介面。另外,混合記憶體需要用於DRAM與快閃記憶體之間的資料傳輸的映射表(mapping table)。當保存以及傳輸資料時,DRAM與快閃記憶體之間的位址映射(address mapping)可造成額外負擔。因此,混合記憶體系統的效能可歸因於額外負擔而降級。
根據一個實施例,一種混合記憶體模組包含動態隨機存取記憶體(DRAM)快取記憶體、快閃儲存器(flash storage)以及記憶體控制器。DRAM快取記憶體包含一或多個DRAM裝置以及DRAM控制器,且快閃儲存器包含一或多個快閃裝置以及快閃控制器。記憶體控制器與DRAM控制器以及快閃控制器介接。
根據一個實施例,揭露一種用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法。方法包含:自主機記憶體控制器(host memory controller)接收記憶體交易請求;將記憶體交易請求儲存於混合記憶體模組的緩衝器中;檢查混合記憶體模組的快取標籤(cache tag)且判定記憶體交易請求包含用以存取DRAM快取記憶體的請求;以及基於快取標籤來執行記憶體交易請求。
現在將參考附圖來更特定地描述且在申請專利範圍中指出以上較佳特徵以及其他較佳特徵,包含事件的實施以及組合的各種新穎細節。將理解,本文中所描述的特定系統以及方法是僅作為說明而非限制予以展示。在本領域具有知識者將理解,可在各種實施例以及眾多實施例中採用本文中所描述的原理以及特徵而不脫離本揭露內容的範疇。
可單獨地或結合其他特徵以及教示來利用本文中所揭露的特徵以及教示中的每一者以提供交易式混合記憶體模組以及其操作方法。參考附圖來進一步詳細地描述既單獨地又組合地利用此等額外特徵以及教示中的許多者的代表性實例。此詳細描述僅僅意欲向在本領域具有知識者教示用於實踐本發明的教示的態樣的另外細節,且並不意欲限制申請專利範圍的範疇。因此,詳細描述中所揭露的特徵的組合可未必在最廣泛的意義上實踐此等教示,而是被教示以僅僅特定地描述本發明的教示的代表性實例。
在以下描述中,僅出於解釋的目的,闡述特定命名法以提供對本揭露內容的透徹理解。然而,對於在本領域具有知識者而言將顯而易見,不需要此等特定細節以實踐本揭露內容的教示。
本文中的詳細描述的一些部分是在對電腦記憶體內的資料位元的操作的演算法以及符號表示方面予以呈現。此等演算法描述以及表示被在資料處理領域具有知識者用以將其工作的主旨有效地傳達至其他在本領域具有通常知識者。演算法在此處且通常被設想為產生所要結果的自相一致步驟序列。此等步驟為需要物理量的物理操縱的步驟。通常,但未必,此等量採取能夠被儲存、傳送、組合、比較以及以其他方式操縱的電信號或磁信號的形式。主要出於常見使用的原因,時常已證實為便利的是將此等信號稱作位元、值、元素、符號、字元、術語、數字或類似者。
然而,應牢記,所有此等術語以及相似術語皆將與適當物理量相關聯,且僅僅為應用於此等量的便利標號。除非另有如自以下論述顯而易見的特定陳述,否則應瞭解,貫穿描述,利用諸如「處理」、「計算」、「運算」、「判定」、「顯示」或類似者的術語的論述是指電腦系統或相似電子計算裝置的動作以及程序,電腦系統或相似電子計算裝置將被表示為電腦系統暫存器以及記憶體內的物理(電子)量的資料操縱以及變換成被相似地表示為電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示裝置內的物理量的其他資料。
用於多種此等系統的所需結構將自以下描述顯現。將瞭解,多種程式設計語言可用以實施如本文中所描述的本揭露內容的教示。
此外,可以未被特定地以及明確地列舉的方式來組合代表性實例以及附屬申請專利範圍的各種特徵,以便提供本發明的教示的額外有用實施例。亦應明確地注意,出於原始揭露內容的目的,以及出於限定所主張主題的目的,實體群組的所有值範圍或指示皆揭露每一可能中間值或中間實體。亦應明確地注意,諸圖中所展示的組件的尺寸以及形狀經設計以有助於理解如何實踐本發明的教示,但並不意欲限制實例中所展示的尺寸以及形狀。
本揭露內容提供一種包含揮發性記憶體(例如,DRAM)以及非揮發性記憶體(例如,快閃記憶體)的交易式混合記憶體模組以及其操作方法。在一個實施例中,本發明的交易式混合記憶體模組包含DRAM快取記憶體以及快閃儲存器。就此而言,混合記憶體模組在本文中亦被稱作DRAM快閃(DRAM-flash)或DRAM快閃記憶體模組(DRAM-flash memory module)。DRAM快取記憶體用作前端快取記憶體(front-end memory cache),且快閃儲存器用作後端儲存器(back-end storage)。主機記憶體控制器可具有至混合記憶體模組的交易式記憶體介面(transaction-based memory interface)。可在交易基礎上異步地處理來自主機電腦(或主機電腦的CPU)的記憶體存取請求。記憶體存取請求可儲存於緩衝器中且可一次一個被處理。DRAM快取記憶體以及快閃儲存器兩者可駐留於同一記憶體模組上,且在單一記憶體位址空間中操作。本發明的交易式混合記憶體模組可提供類快閃的記憶體容量、功率、成本以及類DRAM的效能。
混合記憶體模組可包含動態隨機存取記憶體(DRAM)快取記憶體、快閃儲存器以及記憶體控制器。DRAM快取記憶體可包含一或多個DRAM裝置以及DRAM控制器,且快閃儲存器可包含一或多個快閃裝置以及快閃控制器。記憶體控制器可與DRAM控制器以及快閃控制器介接,且可包含緩衝器以及快取標籤。交易式記憶體介面可經組態以耦接記憶體控制器與主機記憶體控制器。記憶體控制器的緩衝器可儲存自主機記憶體控制器接收的記憶體交易請求,且快取標籤可指示自主機記憶體控制器接收的記憶體交易請求包含用以存取DRAM快取記憶體的請求。
圖1展示根據一個實施例的實例混合記憶體模組的架構。混合記憶體模組100可包含:DRAM前端快取記憶體110,可包含DRAM裝置131;快閃後端儲存器120,包含快閃裝置141;以及主控制器150,可與DRAM快取記憶體110的DRAM控制器130以及快閃儲存器120的快閃控制器140介接。混合記憶體模組100可經由交易式(亦即,異步)記憶體介面155而與主機記憶體控制器160介接。不同於同步記憶體介面,本發明的交易式介面可將混合記憶體模組100自主機記憶體控制器160解耦,從而允許設計靈活性。當經耦接的記憶體模組的記憶體存取潛時具非確定性時,可使用交易式記憶體介面155。
主控制器150可含有快取標籤151,以及用於暫時儲存快取記憶體的緩衝器152。主控制器150負責快取管理(cache management)以及流程控制(flow control)。DRAM控制器130可充當DRAM裝置131的記憶體控制器,且管理記憶體交易以及命令排程,以及諸如記憶體再新的DRAM維護活動。快閃控制器140可充當用於快閃裝置141的固態磁碟機(SSD)控制器,且管理位址轉譯、廢料收集、耗損均衡以及排程。
將參考關聯操作流程在四種使用狀況下解釋主機記憶體控制器160與混合記憶體模組100之間的記憶體交易以及介面。用於快閃記憶體的讀取/寫入粒度可取決於快閃產品而變化,例如,4KB。列緩衝器(或分頁)的大小亦可取決於DRAM產品而變化,例如,2KB。在以下實例中,假定用於DRAM快取記憶體110以及快閃儲存器120的存取粒度分別為64B以及4KB,且記憶體控制器讀取/寫入請求的大小為64B。然而,應理解,此等者僅僅為實例大小,且可使用用於DRAM快取記憶體110以及快閃儲存器120的存取粒度的其他大小以及記憶體控制器讀取/寫入請求的大小而不偏離本揭露內容的範疇。
圖2A為根據一個實施例的用於讀取命中操作的實例流程圖。當經由交易式記憶體介面155自主機記憶體控制器160接收請求(步驟201)時,主控制器150可檢查快取標籤151(步驟202)。自主機記憶體控制器160接收的請求可儲存於緩衝器152中。緩衝器152亦可儲存用於DRAM快取記憶體110與快閃儲存器120之間以及主控制器150與主機記憶體控制器160之間的資料傳輸的瞬間資料。快取標籤151可指示請求是否含有至以及自DRAM快取記憶體110的記憶體交易。
當在緩衝器152中存在未決請求(pending request)時,主控制器150可解碼請求以判定與請求相關聯的記憶體位址或記憶體位址範圍。主控制器150可在DRAM快取記憶體中保留某些資料(例如,頻繁使用的資料),且設定快取標籤151以指示與所保留的資料相關聯的記憶體位址。快取標籤151可為來自記憶體位址的經解碼的數字,且用以判定所請求的資料是否在快取記憶體中。快取記憶體可包含多個快取行(cache line)。每一快取行可具有其唯一的索引以及標籤。當記憶體請求進入時,主控制器150的解碼器(未圖示)可判定與記憶體位址相關聯的索引以及快取標籤。基於索引以及快取標籤,主控制器150的快取記憶體控制器(未圖示)可判定是否任一快取行具有相同索引以及快取標籤。當存在匹配時,其被稱作快取命中(cache hit)。當不存在匹配時,其被稱作快取未命中(cache miss)。當主控制器150藉由參考快取標籤151而判定請求包含讀取命令,且DRAM快取記憶體110含有與讀取位址相關聯的資料(在本文中被稱作讀取命中(步驟203))時,主控制器150可指示DRAM控制器130存取DRAM快取記憶體110。DRAM控制器130可存取DRAM快取記憶體110(步驟204)且自DRAM快取記憶體110接收64B資料(步驟205)。DRAM控制器130可接著將64B資料傳回至主控制器150(步驟206),且主控制器150可經由鏈路匯流排將64B資料發送至主機記憶體控制器160(步驟207)。自DRAM快取記憶體110的資料傳回的時序可具非確定性,此是因為主機記憶體控制器160與記憶體模組100之間的介面為交易式的。自DRAM快取記憶體110以及快閃儲存器120傳回的資料的延遲可不同,如下文將進一步詳細地所解釋。
圖2B為根據一個實施例的用於讀取未命中操作的實例流程圖。當快取標籤151指示來自主機記憶體控制器160的請求含有不儲存於DRAM快取記憶體中的讀取記憶體交易,接著可自快閃儲存器120獲得資料(在本文中被稱作讀取未命中(圖2A中的步驟211))時,主控制器150可判定資料儲存於快閃儲存器120中且指示快閃控制器140自快閃儲存器120上的對應記憶體位址讀取資料。快閃控制器140可存取快閃儲存器120(步驟212)且自快閃儲存器120接收4KB資料(快閃儲存器120的存取粒度)(步驟213)。快閃控制器140可接著將4KB資料傳回至主控制器150(步驟214)。主控制器150可自所接收的4KB資料選擇相關的64B,且經由鏈路匯流排將彼64B(DRAM快取記憶體110的存取粒度)發送至主機記憶體控制器160(步驟215)。
主控制器150可進一步尋找待收回的DRAM快取記憶體分頁(4KB)。若對應於4KB資料的DRAM快取記憶體分頁未變更(步驟216),則主控制器150可將4KB資料寫入至DRAM控制器130,且隨後,DRAM控制器130可將4KB資料寫入至DRAM快取記憶體110(步驟217)。DRAM快取記憶體110可運用儲存於快閃儲存器120中的4KB資料被更新。快取記憶體中的多個快取行中的每一者可具有索引、標籤以及已變更位元(dirty bit)。主控制器150可藉由參考已變更位元來判定快取行的變更度(dirtiness)。起初,所有已變更位元皆被設定為0,此意謂快取行未變更。快取記憶體中的資料為快閃儲存器120中的資料子集。未變更意謂:對於相同位址,快取記憶體中的資料與快閃儲存器120中的資料相同。相反地,已變更意謂:對於相同位址,快取記憶體中的資料相對於快閃儲存器120中的資料被更新,因此,快閃儲存器120中的資料陳舊。當收回已變更快取行時,必須更新快閃儲存器120中的對應資料。當收回未變更快取行時,不需要更新。
若DRAM快取記憶體已變更(步驟216),則主控制器150可指示DRAM控制器130自DRAM快取記憶體110讀取4KB已變更資料。DRAM控制器130可自DRAM快取記憶體110存取以及接收4KB已變更資料(步驟218)。DRAM控制器130可接著將4KB已變更資料傳回至主控制器150,且主控制器150可指示快閃控制器140將4KB已變更資料回寫至快閃儲存器120(步驟219)。主控制器150可接著將新4KB資料寫入至DRAM控制器130,且DRAM控制器130可將新4KB資料寫入至DRAM快取記憶體110(步驟220)。DRAM快取記憶體110可運用儲存於快閃儲存器120中的新4KB資料被更新。
接下來,將參考圖1的本發明的混合記憶體模組100的架構來解釋寫入命中操作以及寫入未命中操作。參考圖3A以及圖3B所描述的實例流程圖採用直寫式快取記憶體策略(write-through cache policy)。然而,應理解,本揭露內容可採用其他快取記憶體策略而不偏離本揭露內容的範疇。對於直寫式快取記憶體策略,對DRAM前端快取記憶體110以及快閃後端儲存器120兩者同步地處理寫入請求。圖3A為根據一個實施例的用於寫入命中操作的實例流程圖。當經由交易式記憶體介面155自主機記憶體控制器160接收請求(步驟301)時,主控制器150可檢查快取標籤151(步驟302),且判定自主機記憶體控制器160接收的請求包含至DRAM快取記憶體110的寫入命令(步驟303),在本文中被稱作寫入命中。在寫入命中的狀況下,記憶體交易可按以下序列發生。主控制器150可將自主機記憶體控制器160接收的64B資料寫入至DRAM控制器130(步驟304)。DRAM控制器130可接著將64B資料寫入至DRAM快取記憶體110(步驟305)。主控制器150可將快取記憶體分頁標記為已變更,且可更新DRAM快取記憶體110中的資料(步驟306)。當在圖2B的步驟218至步驟220中發生至被標記為已變更的快取記憶體分頁的後續讀取未命中操作時,可收回此快取記憶體分頁。
圖3B為根據一個實施例的用於寫入未命中操作的實例流程圖。主控制器150可檢查快取標籤151以判定自主機記憶體控制器160接收的請求包含至快閃儲存器120的寫入命令(步驟311),在本文中被稱作寫入未命中。在寫入未命中的狀況下,記憶體交易可按以下序列發生。首先,主控制器150可判定DRAM快取記憶體分頁未變更抑或已變更(步驟312)。若DRAM快取記憶體分頁已變更,則主控制器150可指示DRAM控制器130自DRAM快取記憶體110讀取4KB已變更資料。DRAM控制器130可自DRAM快取記憶體110存取以及接收4KB已變更資料,且將4KB已變更資料傳回至主控制器150(步驟313)。主控制器150可接著將4KB已變更資料回寫至快閃控制器140,且快閃控制器140可將4KB已變更資料寫入至快閃儲存器120(步驟314)。
當主控制器150判定DRAM快取記憶體分頁未變更(步驟312)時,或在將已變更資料寫入至快閃儲存器(步驟314)之後,主控制器150準備好更新快取記憶體分頁中自主機記憶體控制器160接收的資料。主控制器150可將自主機記憶體控制器160接收的64B資料寫入至DRAM控制器130(步驟315)。DRAM控制器130可接著將64B資料寫入至DRAM快取記憶體110(步驟316)。主控制器150可將快取記憶體分頁標記為已變更(步驟317)。
根據一些實施例,主控制器150可採用各種快取記憶體策略而不偏離本揭露內容的範疇。在一個實施例中,主控制器150可採用回寫式快取記憶體策略(write-back cache policy)。當主控制器150採用回寫式快取記憶體策略時,主控制器150起初寫入至DRAM前端快取記憶體110,且可推遲至快閃後端儲存器120的寫入直至含有資料的快取記憶體區塊(cache block)被修改或被新資料替換為止。為了追蹤資料已運用新資料被覆寫的位址,主控制器150將彼等經覆寫位址標記為「已變更」,且在自DRAM前端快取記憶體110收回資料時將新資料寫入至快閃後端儲存器120。
在另一實施例中,主控制器150可採用繞寫式快取記憶體策略(write-around cache policy)。繞寫式快取記憶體策略與直寫式快取記憶體策略相似,但資料繞過DRAM前端快取記憶體110而直接地寫入至快閃後端儲存器120。此可縮減被充滿隨後將被重新讀取的寫入請求的快取記憶體。
為了達成較佳效能以及較快回應,本發明的混合記憶體模組可將快閃分頁(flash page)映射至DRAM分頁。DRAM快取記憶體與快閃儲存器之間的分頁映射可允許本發明的混合記憶體模組採用開放式分頁策略(open-page policy)。開放式分頁策略在存取DRAM快取記憶體中的分頁時實現較快記憶體存取。舉例而言,當自DRAM快取記憶體110讀取資料或將資料寫入至DRAM快取記憶體110時,本發明的混合記憶體模組僅需要進行一次DRAM列啟動,從而使DRAM列緩衝器保持開放,且接著可發出利用開放式分頁策略的行存取序列。對於DRAM記憶體,當使用開放式分頁策略時,若在同一列上發生存取序列(在本文中被稱作列緩衝器命中),則本發明的交易式混合記憶體模組可避免關閉以及重新開放列的額外負擔,因此可達成較佳以及較快效能。
對於包含DRAM記憶體以及快閃記憶體兩者的本發明的混合記憶體架構,DRAM記憶體可充當快閃記憶體的快取記憶體。可將經較頻繁存取的資料自快閃記憶體移動至DRAM快取記憶體,且可將經較不頻繁存取的資料自DRAM快取記憶體移動至快閃記憶體。DRAM快取記憶體與快閃記憶體之間的資料的頻繁移動可為成本高的。為了最小化成本,本發明的混合記憶體可藉由將快閃分頁映射至DRAM分頁而採用開放式分頁策略。舉例而言,可將4KB的快閃分頁映射至2KB的兩個DRAM分頁。
根據一個實施例,本發明的混合記憶體模組可支援檢查點設定(checkpointing)。只要產生檢查點(例如,自DRAM位置至快閃位置的複本資料),主控制器150就可執行自DRAM快取記憶體110至快閃儲存器120的資料回寫。
根據一個實施例,本發明的混合記憶體模組可支援預提取(prefetching)。主控制器150可提前將與特定分頁高度地相關聯的多個快閃分頁提取至DRAM快取記憶體110以改良效能。
根據一個實施例,一種記憶體模組包含:動態隨機存取記憶體(DRAM)快取記憶體,包含一或多個DRAM裝置以及DRAM控制器;快閃儲存器,包含一或多個快閃裝置以及快閃控制器;記憶體控制器,與DRAM控制器以及快閃控制器介接;以及交易式記憶體介面,經組態以耦接記憶體控制器與主機記憶體控制器。
記憶體控制器可包含經組態以儲存暫時快取記憶體資料以及快取標籤的緩衝器。快取標籤可指示自主機記憶體控制器接收的記憶體交易請求包含用以存取DRAM快取記憶體的請求。
記憶體控制器可基於快取標籤來判定來自主機記憶體控制器的記憶體交易請求為讀取命中、讀取未命中、寫入命中,或寫入未命中。
記憶體控制器可將來自快閃儲存器的快閃分頁映射至DRAM快取記憶體的一或多個DRAM分頁。
交易式介面可允許主機記憶體控制器在記憶體模組的記憶體存取潛時具非確定性時存取記憶體模組。
記憶體控制器可基於快取標籤來判定自主機記憶體控制器接收的記憶體交易請求為來自DRAM快取記憶體的讀取請求或至DRAM快取記憶體的寫入請求,且DRAM控制器可回應於記憶體交易請求而管理用於DRAM快取記憶體的記憶體交易以及命令排程。
記憶體控制器可基於快取標籤來判定自主機記憶體控制器接收的記憶體交易請求為來自快閃儲存器的讀取請求或至快閃儲存器的寫入請求,且快閃控制器可回應於記憶體交易請求而管理用於快閃儲存器的位址轉譯、廢料收集、耗損均衡以及排程。
根據一個實施例,一種用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法可包含:自主機記憶體控制器異步地接收記憶體交易請求;將記憶體交易請求儲存於混合記憶體模組的緩衝器中;檢查混合記憶體模組的快取標籤且判定記憶體交易請求包含用以存取儲存於DRAM快取記憶體中的資料的請求;以及基於快取標籤來執行記憶體交易請求。
方法可更包含:基於快取標籤來判定記憶體交易請求為來自DRAM快取記憶體的讀取請求;自DRAM快取記憶體接收對應於記憶體交易請求的DRAM資料;以及將DRAM資料提供至主機記憶體控制器。
方法可更包含:將記憶體交易請求以及快取標籤儲存於緩衝器中。
方法可更包含:將來自快閃儲存器的快閃分頁映射至DRAM快取記憶體的一或多個DRAM分頁。
方法可更包含:基於快取標籤來判定記憶體交易請求為來自DRAM快取記憶體的讀取請求或至DRAM快取記憶體的寫入請求;以及回應於記憶體交易請求而管理用於DRAM快取記憶體的記憶體交易以及命令排程。
方法可更包含:基於快取標籤來判定記憶體交易請求為來自快閃儲存器的讀取請求或至快閃請求的寫入請求;以及回應於記憶體交易請求而管理用於快閃儲存器的位址轉譯、廢料收集、耗損均衡以及排程。
方法可更包含:判定DRAM快取記憶體分頁已變更;自DRAM快取記憶體分頁讀取已變更資料;以及將已變更資料寫入至快閃儲存器。
方法可更包含:將自主機記憶體控制器接收的資料寫入至DRAM快取記憶體;以及將DRAM快取記憶體標記為已變更。
方法可更包含:使DRAM快取記憶體的DRAM快取記憶體分頁保持開放;以及執行對開放式DRAM快取記憶體分頁的一系列行存取。
方法可更包含:判定儲存於快閃儲存器中的由主機記憶體控制器頻繁地請求的資料;以及基於主機記憶體控制器的資料請求頻率將儲存於快閃儲存器中的資料映射至DRAM快取記憶體。
DRAM快取記憶體以及快閃儲存器的存取潛時具非確定性。
上文中已描述以上實例實施例,以說明實施用於經由主記憶體系統而介接共處理器與輸入/輸出裝置的系統以及方法的各種實施例。在本領域具有通常知識者將想到各種修改以及與所揭露的實例實施例的偏離。以下申請專利範圍中闡述意欲在本揭露內容的範疇內的主題。
100‧‧‧(混合)記憶體模組
110‧‧‧DRAM(前端)快取記憶體
120‧‧‧快閃(後端)儲存器
130‧‧‧DRAM控制器
131‧‧‧DRAM裝置
140‧‧‧快閃控制器
141‧‧‧快閃裝置
150‧‧‧主控制器
151‧‧‧快取標籤
152‧‧‧緩衝器
155‧‧‧交易式記憶體介面
160‧‧‧主機記憶體控制器
201~207、211~220、301~306、311~317‧‧‧步驟
110‧‧‧DRAM(前端)快取記憶體
120‧‧‧快閃(後端)儲存器
130‧‧‧DRAM控制器
131‧‧‧DRAM裝置
140‧‧‧快閃控制器
141‧‧‧快閃裝置
150‧‧‧主控制器
151‧‧‧快取標籤
152‧‧‧緩衝器
155‧‧‧交易式記憶體介面
160‧‧‧主機記憶體控制器
201~207、211~220、301~306、311~317‧‧‧步驟
作為本說明書的部分而被包含的隨附圖式說明目前較佳實施例,且連同上文所給出的一般描述以及下文所給出的較佳實施例的詳細描述一起用來解釋以及教示本文中所描述的原理。 圖1展示根據一個實施例的實例混合記憶體模組的架構。 圖2A為根據一個實施例的用於讀取命中操作的實例流程圖。 圖2B為根據一個實施例的用於讀取未命中操作的實例流程圖。 圖3A為根據一個實施例的用於寫入命中操作的實例流程圖。 圖3B為根據一個實施例的用於寫入未命中操作的實例流程圖。 諸圖未必按比例繪製,且貫穿諸圖,出於說明性目的,相似結構或功能的元件通常是由類似圖式元件符號表示。諸圖僅意欲促進對本文中所描述的各種實施例的描述。諸圖並不描述本文中所揭露的教示的每一態樣且並不限制申請專利範圍的範疇。
100‧‧‧(混合)記憶體模組
110‧‧‧DRAM(前端)快取記憶體
120‧‧‧快閃(後端)儲存器
130‧‧‧DRAM控制器
131‧‧‧DRAM裝置
140‧‧‧快閃控制器
141‧‧‧快閃裝置
150‧‧‧主控制器
151‧‧‧快取標籤
152‧‧‧緩衝器
155‧‧‧交易式記憶體介面
160‧‧‧主機記憶體控制器
Claims (19)
- 一種記憶體模組,包括: 動態隨機存取記憶體(DRAM)快取記憶體,包含一或多個DRAM裝置以及DRAM控制器; 快閃儲存器,包含一或多個快閃裝置以及快閃控制器; 記憶體控制器,與所述DRAM控制器以及所述快閃控制器介接;以及 交易式記憶體介面,經組態以耦接所述記憶體控制器與主機記憶體控制器。
- 如申請專利範圍第1項所述的記憶體模組,其中所述記憶體控制器包含經組態以儲存暫時快取記憶體資料以及快取標籤的緩衝器。
- 如申請專利範圍第2項所述的記憶體模組,其中所述快取標籤指示自所述主機記憶體控制器接收的記憶體交易請求包含用以存取所述DRAM快取記憶體的請求。
- 如申請專利範圍第3項所述的記憶體模組,其中所述記憶體控制器基於所述快取標籤來判定來自所述主機記憶體控制器的所述記憶體交易請求為讀取命中、讀取未命中、寫入命中、或寫入未命中。
- 如申請專利範圍第1項所述的記憶體模組,其中所述記憶體控制器將來自所述快閃儲存器的快閃分頁映射至所述DRAM快取記憶體的一或多個DRAM分頁。
- 如申請專利範圍第1項所述的記憶體模組,其中所述交易式介面允許所述主機記憶體控制器在所述記憶體模組的記憶體存取潛時具非確定性時存取所述記憶體模組。
- 如申請專利範圍第1項所述的記憶體模組,其中所述記憶體控制器基於快取標籤來判定自所述主機記憶體控制器接收的記憶體交易請求為來自所述DRAM快取記憶體的讀取請求或至所述DRAM快取記憶體的寫入請求,且所述DRAM控制器回應於所述記憶體交易請求而管理用於所述DRAM快取記憶體的記憶體交易以及命令排程。
- 如申請專利範圍第1項所述的記憶體模組,其中所述記憶體控制器基於快取標籤來判定自所述主機記憶體控制器接收的記憶體交易請求為來自所述快閃儲存器的讀取請求或至所述快閃儲存器的寫入請求,且所述快閃控制器回應於所述記憶體交易請求而管理用於所述快閃儲存器的位址轉譯、廢料收集、耗損均衡以及排程。
- 一種用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,所述方法包括: 自主機記憶體控制器異步地接收記憶體交易請求; 將所述記憶體交易請求儲存於所述混合記憶體模組的緩衝器中; 檢查所述混合記憶體模組的快取標籤且判定所述記憶體交易請求包含用以存取儲存於所述DRAM快取記憶體中的資料的請求;以及 基於所述快取標籤來執行所述記憶體交易請求。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 基於所述快取標籤來判定所述記憶體交易請求為來自所述DRAM快取記憶體的讀取請求; 自所述DRAM快取記憶體接收對應於所述記憶體交易請求的DRAM資料;以及 將所述DRAM資料提供至所述主機記憶體控制器。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 將所述記憶體交易請求以及所述快取標籤儲存於所述緩衝器中。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 將來自所述快閃儲存器的快閃分頁映射至所述DRAM快取記憶體的一或多個DRAM分頁。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 基於所述快取標籤來判定記憶體交易請求為來自所述DRAM快取記憶體的讀取請求或至所述DRAM快取記憶體的寫入請求;以及 回應於所述記憶體交易請求而管理用於所述DRAM快取記憶體的記憶體交易以及命令排程。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 基於所述快取標籤來判定記憶體交易請求為來自所述快閃儲存器的讀取請求或至所述快閃請求的寫入請求;以及 回應於所述記憶體交易請求而管理用於所述快閃儲存器的位址轉譯、廢料收集、耗損均衡以及排程。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 判定DRAM快取記憶體分頁已變更; 自所述DRAM快取記憶體分頁讀取已變更資料;以及 將所述已變更資料寫入至所述快閃儲存器。
- 如申請專利範圍第15項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 將自所述主機記憶體控制器接收的資料寫入至所述DRAM快取記憶體;以及 將所述DRAM快取記憶體標記為已變更。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 使所述DRAM快取記憶體的DRAM快取記憶體分頁保持開放;以及 執行對所述開放式DRAM快取記憶體分頁的一系列行存取。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,更包括: 判定儲存於所述快閃儲存器中的由所述主機記憶體控制器頻繁地請求的資料;以及 基於所述主機記憶體控制器的資料請求頻率將儲存於所述快閃儲存器中的所述資料映射至所述DRAM快取記憶體。
- 如申請專利範圍第9項所述的用於操作包含DRAM快取記憶體以及快閃儲存器的混合記憶體模組的方法,其中所述DRAM快取記憶體以及所述快閃儲存器的存取潛時具非確定性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562210939P | 2015-08-27 | 2015-08-27 | |
US14/947,145 US20170060434A1 (en) | 2015-08-27 | 2015-11-20 | Transaction-based hybrid memory module |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201710910A true TW201710910A (zh) | 2017-03-16 |
Family
ID=58104058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105115915A TW201710910A (zh) | 2015-08-27 | 2016-05-23 | 交易式混合記憶體模組及其操作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170060434A1 (zh) |
JP (1) | JP2017045457A (zh) |
KR (1) | KR20170026114A (zh) |
CN (1) | CN106484628A (zh) |
TW (1) | TW201710910A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI741357B (zh) * | 2018-09-12 | 2021-10-01 | 美商美光科技公司 | 用於記憶體操作之運算系統及其操作方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016053313A1 (en) * | 2014-09-30 | 2016-04-07 | Hewlett Packard Enterprise Development Lp | Page modification |
US10387315B2 (en) * | 2016-01-25 | 2019-08-20 | Advanced Micro Devices, Inc. | Region migration cache |
US9830086B2 (en) * | 2016-03-03 | 2017-11-28 | Samsung Electronics Co., Ltd. | Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group |
EP3639145B1 (en) | 2017-06-15 | 2024-03-20 | Rambus Inc. | Hybrid memory module |
KR102319189B1 (ko) | 2017-06-21 | 2021-10-28 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법 |
CN107844436B (zh) * | 2017-11-02 | 2021-07-16 | 郑州云海信息技术有限公司 | 一种缓存中脏数据的组织管理方法、系统及存储系统 |
US10929291B2 (en) * | 2017-12-06 | 2021-02-23 | MemRay Corporation | Memory controlling device and computing device including the same |
KR102101622B1 (ko) * | 2017-12-06 | 2020-04-17 | 주식회사 멤레이 | 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스 |
CN108052296B (zh) * | 2017-12-30 | 2021-02-19 | 惠龙易通国际物流股份有限公司 | 一种数据读取方法、设备及计算机存储介质 |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102538679B1 (ko) | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11199991B2 (en) | 2019-01-03 | 2021-12-14 | Silicon Motion, Inc. | Method and apparatus for controlling different types of storage units |
TWI739075B (zh) * | 2019-01-03 | 2021-09-11 | 慧榮科技股份有限公司 | 閃存的資料寫入方法及電腦程式產品 |
CN109960471B (zh) * | 2019-03-29 | 2022-06-03 | 深圳大学 | 数据存储方法、装置、设备以及存储介质 |
KR102560109B1 (ko) | 2023-03-20 | 2023-07-27 | 메티스엑스 주식회사 | 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101085406B1 (ko) * | 2004-02-16 | 2011-11-21 | 삼성전자주식회사 | 불 휘발성 메모리를 제어하기 위한 컨트롤러 |
JP2006127110A (ja) * | 2004-10-28 | 2006-05-18 | Canon Inc | Dramメモリアクセス制御手法、および手段 |
US8397013B1 (en) * | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US20070136523A1 (en) * | 2005-12-08 | 2007-06-14 | Bonella Randy M | Advanced dynamic disk memory module special operations |
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
US7730268B2 (en) * | 2006-08-18 | 2010-06-01 | Cypress Semiconductor Corporation | Multiprocessor system having an input/output (I/O) bridge circuit for transferring data between volatile and non-volatile memory |
US7554855B2 (en) * | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
JP2011118469A (ja) * | 2009-11-30 | 2011-06-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
US8612809B2 (en) * | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
JP2011198133A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Corp | メモリシステムおよびコントローラ |
CN102289414A (zh) * | 2010-06-17 | 2011-12-21 | 中兴通讯股份有限公司 | 内存数据保护装置及方法 |
JP2012033047A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム |
EP3382556A1 (en) * | 2011-09-30 | 2018-10-03 | INTEL Corporation | Memory channel that supports near memory and far memory access |
US9063864B2 (en) * | 2012-07-16 | 2015-06-23 | Hewlett-Packard Development Company, L.P. | Storing data in presistent hybrid memory |
US9367262B2 (en) * | 2013-02-26 | 2016-06-14 | Seagate Technology Llc | Assigning a weighting to host quality of service indicators |
CN104346293B (zh) * | 2013-07-25 | 2017-10-24 | 华为技术有限公司 | 混合内存的数据访问方法、模块、处理器及终端设备 |
-
2015
- 2015-11-20 US US14/947,145 patent/US20170060434A1/en not_active Abandoned
-
2016
- 2016-05-23 TW TW105115915A patent/TW201710910A/zh unknown
- 2016-07-06 KR KR1020160085591A patent/KR20170026114A/ko not_active Application Discontinuation
- 2016-08-23 JP JP2016162674A patent/JP2017045457A/ja active Pending
- 2016-08-26 CN CN201610738928.9A patent/CN106484628A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI741357B (zh) * | 2018-09-12 | 2021-10-01 | 美商美光科技公司 | 用於記憶體操作之運算系統及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106484628A (zh) | 2017-03-08 |
JP2017045457A (ja) | 2017-03-02 |
US20170060434A1 (en) | 2017-03-02 |
KR20170026114A (ko) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201710910A (zh) | 交易式混合記憶體模組及其操作方法 | |
US10628326B2 (en) | Logical to physical mapping | |
KR101636634B1 (ko) | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 | |
JP5580894B2 (ja) | Tlbプリフェッチング | |
US20130275699A1 (en) | Special memory access path with segment-offset addressing | |
CN106062724B (zh) | 管理存储器模块上的数据的方法、存储器模块及存储介质 | |
US11016905B1 (en) | Storage class memory access | |
US10552045B2 (en) | Storage operation queue | |
JP2007048296A (ja) | 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム | |
CN114063934B (zh) | 数据更新装置、方法及电子设备 | |
US11573743B2 (en) | Pointer dereferencing within memory sub-system | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
US11604735B1 (en) | Host memory buffer (HMB) random cache access | |
US10331385B2 (en) | Cooperative write-back cache flushing for storage devices | |
US20150026394A1 (en) | Memory system and method of operating the same | |
Yoon et al. | Access characteristic-based cache replacement policy in an SSD | |
EP4328755A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages |