TWI744457B - 對混合記憶體模組進行存取元資料的方法及混合記憶體模組 - Google Patents
對混合記憶體模組進行存取元資料的方法及混合記憶體模組 Download PDFInfo
- Publication number
- TWI744457B TWI744457B TW107100584A TW107100584A TWI744457B TW I744457 B TWI744457 B TW I744457B TW 107100584 A TW107100584 A TW 107100584A TW 107100584 A TW107100584 A TW 107100584A TW I744457 B TWI744457 B TW I744457B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- metadata
- random access
- dynamic random
- access memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- 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/068—Hybrid storage device
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/221—Static RAM
-
- 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/28—Using a specific disk cache architecture
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
根據一個實施例,一種方法包括:提供包括動態隨機存
取記憶體快取、快閃記憶體、及用於儲存元資料快取的靜態隨機存取記憶體的混合記憶體模組;藉由解碼自主機電腦接收的資料存取請求獲得主機位址,其中主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自動態隨機存取記憶體快取索引獲得元資料位址,其中元資料位址包括元資料快取標籤及元資料快取索引;基於在靜態隨機存取記憶體的元資料快取中存在匹配的元資料快取條目來確定元資料快取命中;在元資料快取命中的情形中,自動態隨機存取記憶體快取獲得資料且跳過對動態隨機存取記憶體快取的元資料的存取;以及使自動態隨機存取記憶體快取獲得的資料返回至主機電腦。
Description
[相關申請案的交叉參考]
本申請案主張於2017年2月15日提出申請的序列號為62/459,414的美國臨時專利申請案的權利及優先權,所述美國臨時專利申請案的揭露內容全文併入本案供參考。
本揭露大體而言是有關於一種混合記憶體模組,更具體而言是有關於一種使用SRAM元資料快取及布隆過濾器緩解對混合記憶體模組中的DRAM快取的元資料進行存取的負荷的系統及方法。
混合記憶體模組是指包含揮發性記憶體(例如,動態隨機存取記憶體(dynamic random-access memory,DRAM))及非揮發性記憶體(例如,快閃記憶體)兩者作為主要資料儲存裝置的記憶體模組。混合記憶體模組的實例為整合有DRAM及快閃記憶體的混合雙行記憶體模組(dual in-line memory module,DIMM)。在典型構型中,DRAM可用作用於儲存於快閃記憶體中的資料的
快取記憶體。為了達成對DRAM快取的快速存取,DRAM快取的元資料可儲存於混合記憶體模組的靜態隨機存取記憶體(static random-access memory,SRAM)中。
然而,DRAM快取的元資料的所需儲存大小可能大於SRAM的可用大小。整合於混合DIMM中的SRAM的儲存容量可因其成本而保持相對小。由於SRAM的有限的儲存大小,DRAM快取的全部元資料可能無法容納於SRAM中,且因此元資料的無法容納於SRAM中的剩餘部分必須儲存於DRAM中。在此種情形中,對儲存於DRAM中的元資料的存取速度緩慢可導致在存取資料時效能下降。
為補救此問題,已提出若干種方法。第一種方法是減小儲存於SRAM中的元資料的大小。舉例而言,可藉由減少儲存於SRAM中的快取列的數目來減小元資料的大小。在此種情形中,每一快取列的大小皆會減小。快取列的大小減小可對命中率(hit rate)產生負面影響,且在快取未中(cache miss)的情形中需要自快閃記憶體讀取多個頁面。在另一實例中,可藉由減少標籤位元及替換位元來減小快取關聯性,但此種方法亦可對命中率產生負面影響。在再一實例中,可對替換策略進行替換而無需替換位元。
然而,測試結果顯示出,減小元資料大小的該些效果的組合可達成所需元資料大小的僅一小部分減小。因此,隨著快閃記憶體的資料儲存容量及DRAM快取的大小增大,用於儲存元資
料的SRAM的有限大小問題可能仍存在。
根據一個實施例,一種方法包括:提供包括動態隨機存取記憶體(DRAM)快取、快閃記憶體、及用於儲存元資料快取的靜態隨機存取記憶體(SRAM)的混合記憶體模組,其中所述動態隨機存取記憶體快取包括儲存於所述快閃記憶體中的資料的快取副本及與資料的所述快取副本對應的元資料,且其中所述元資料快取包括所述動態隨機存取記憶體快取的所述元資料的一部分的快取副本;自主機電腦接收對儲存於所述混合記憶體模組中的資料的資料存取請求;藉由解碼所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的所述元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;在所述元資料快取命中的情形中,自所述動態隨機存取記憶體快取獲得所述資料且跳過對所述動態隨機存取記憶體快取的所述元資料的存取;以及使自所述動態隨機存取記憶體快取獲得的所述資料返回至所述主機電腦。
根據另一實施例,一種混合記憶體模組包括:快閃記憶體;動態隨機存取記憶體(DRAM)快取,其中所述動態隨機存
取記憶體快取包括儲存於所述快閃記憶體中的資料的快取副本及與資料的所述快取副本對應的元資料;靜態隨機存取記憶體(SRAM),用於儲存元資料快取,所述元資料快取包括所述動態隨機存取記憶體快取的所述元資料的一部分的快取副本;記憶體介面,用於為主機電腦提供介面;記憶體存取控制器,用於存取儲存於所述動態隨機存取記憶體快取及所述快閃記憶體中的資料;動態隨機存取記憶體控制器,用於控制對所述動態隨機存取記憶體快取的存取;快閃控制器,用於控制對所述快閃記憶體的存取;以及快取控制器,用於確定來自所述主機電腦的所請求資料的快取副本是否存在。
所述快取控制器被配置成:藉由解碼所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的所述元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;以及在所述元資料快取命中的情形中,指令所述動態隨機存取記憶體控制器跳過對所述動態隨機存取記憶體快取的元資料的存取而自所述動態隨機存取記憶體快取獲得所述資料。所述記憶體存取控制器被配置成使自所述動態隨機存取記憶體快取獲得的所述資料返回至所述主機電腦。
現在將參照附圖更具體地闡述並在申請專利範圍中指出以上及其他較佳特徵(包括事件的實作方式及組合的各種新穎細節)。應理解,本文所述特定系統及方法僅以舉例說明方式示出而非用於限制。如熟習此項技術者應理解,在不背離本揭露的範圍的條件下,可在各種諸多實施例中採用本文所述的原理及特徵。
100、200:混合記憶體模組
101、201:DRAM快取
102:元資料
103、203:讀取快取
104、204:寫入緩衝器
111、211:記憶體存取控制器
121、221:DRAM控制器
124、224:快取控制器
126、226:SRAM
127:快取/元資料快取
131、231:快閃控制器
140、240:記憶體介面
150、250:快閃流
151、251:快閃記憶體
202:元資料/DRAM元資料
227:元資料快取
229:布隆過濾器陣列
301:主機位址
302:標籤/主機標籤
303:索引
304:偏移
311:元資料位址
312:元資料(MDC)標籤
313:元資料(MDC)索引
327:SRAM元資料快取/元資料快取
332a、332b、332c、332d:DRAM快取標籤/標籤
333a、333b、333c、333d:MDC標籤
401:布隆過濾器陣列
501、502、503、504、505、506、507、508、509、510、511、512:操作
host:主機
test(w)、test(x)、test(z):測試函數
test(y):函數
insert(x)、insert(y):***函數
V:有效位元
w:標籤/快取標籤
x:快取標籤
y:第二快取標籤/快取標籤
z:標籤
作為本說明書的一部分而包括在內的附圖是當前較佳的實施例,且與以上所給出的大體說明及以下所給出的對較佳實施例的詳細說明一起用於闡釋及教示本文所述的原理。
圖1是傳統混合記憶體模組的架構。
圖2是根據一個實施例的示例性混合記憶體模組的架構。
圖3是根據一個實施例的示例性快取控制器操作的方塊圖。
圖4是根據一個實施例的實作於混合記憶體模組中的示例性布隆過濾器(Bloom filter)。
圖5是根據一個實施例的由快取控制器來執行資料請求的流程圖。
各圖未必按比例繪製,且在所有圖中具有相似結構或功能的元件一般是由相同的參考編號表示以用於說明目的。各圖僅旨在便於對本文所述的各種實施例的說明。各圖並不闡述本文所揭露教示內容的每一態樣且並不限制申請專利範圍的範圍。
本文所揭露的特徵及教示內容中的每一者可單獨地利用或與其他特徵及教示內容結合利用,以提供一種使用SRAM元資料快取(metadata cache)及布隆過濾器(Bloom filter)緩解對混合記憶體模組中的DRAM快取的元資料進行存取的負荷的系統及方法。參照附圖進一步詳細地闡述代表性實例,所述代表性實例單獨地使用及組合地使用該些附加特徵及教示內容中的諸多特徵及教示內容。此詳細說明僅旨在教示熟習此項技術者關於實踐本教示內容的態樣的進一步細節而並非旨在限制申請專利範圍的範圍。因此,以上在詳細說明中所揭露特徵的組合可能並非在最廣泛意義上實踐本教示內容所必需的,而是相反僅是為了具體闡述本教示內容的代表性實例而教示。
在以下說明中,僅出於闡釋目的來提出特定術語以提供對本揭露的透徹理解。然而,對於熟習此項技術者而言將顯而易見的是,無需該些特定細節便能實踐本揭露的教示內容。
本文中的詳細說明的一些部分是以對電腦記憶體內的資料位元進行的操作的演算法及符號表示法來呈現。該些演算描述及表示法是由熟習資料處理技術者用於向其他熟習此項技術者有效地傳達其工作的實質。演算法在此處且一般而言被視為能得到所期望結果的步驟的自洽序列(self-consistent sequence)。所述步驟是需要對物理量進行物理調處(physical manipulation)的步驟。通常(儘管並非必需),該些量會呈現能夠被儲存、傳遞、組
合、比較、及以其他方式被調處的電訊號或磁性訊號的形式。業已證明,主要出於通用的原因,將該些訊號稱為位元、值、元素、符號、字元、項、數字等有時是方便的。
然而,應記住,所有該些用語及相似用語皆欲與適宜的物理量相關聯且僅作為應用於該些量的便利標記。除非藉由閱讀以下論述顯而易見地另外具體闡明,否則應理解在本說明通篇中,使用例如「處理(processing)」、「計算(computing)」、「運算(calculating)」、「確定(determining)」、「顯示(displaying)」等用語進行的論述是指電腦系統或相似電子計算裝置的動作及過程,所述電腦系統或相似電子計算裝置調處在電腦系統的暫存器及記憶體內被表示為物理(電子)量的資料並將所述資料轉換成在電腦系統記憶體或暫存器或者其他此類資訊儲存裝置、資訊傳輸裝置或資訊顯示裝置內被相似地表示為物理量的其他資料。
本揭露闡述減少對DRAM元資料的存取的各種技術。舉例而言,可藉由使用隨機替換策略(random replacement policy)來減少DRAM元資料存取。在此種情形中,可能不需要替換位元,但可能對效能產生不利影響。在另一實例中,可藉由將部分DRAM快取元資料儲存於SRAM中來減少DRAM元資料存取。在此種情形中,僅SRAM匹配時會觸發DRAM搜索。然而,當元資料匹配可能頻繁地發生時,部分元資料方法可具有低的效能。一種替代方法是使用SRAM對元資料自身進行快取並使用布隆過濾器來高效地濾除DRAM快取未中,且僅當標籤匹配時執行DRAM搜索,
但布隆過濾器可觸發誤報(false positive)。然而,在SRAM中使用布隆過濾器可能一般為低效率的因為DRAM快取的低效能。
此外,代表性實例及附屬請求項的各個特徵可以並未具體地及明確地枚舉的方式加以組合以提供本教示內容的附加適用實施例。亦應明確注意,出於原始揭露內容的目的以及出於限制所主張主題的目的,所有值範圍或對實體的群組的指示皆揭露每個可能的中間值或中間實體。亦應明確注意,圖中所示各組件的尺寸及形狀被設計成有助於理解如何實踐本教示內容,而並非旨在限制實例中所示的尺寸及形狀。
本揭露提供一種使用SRAM元資料快取及布隆過濾器緩解對混合記憶體模組中的DRAM快取元資料進行存取的負荷的系統及方法。根據一個實施例,布隆過濾器與SRAM快取組合起來儲存DRAM快取的元資料。組合使用布隆過濾器與SRAM快取將彌補分別使用布隆過濾器及SRAM快取中的每一者的弱點,且對儲存於混合記憶體模組中的資料進行存取的效能提供改善。一般而言,布隆過濾器有利於快取未中,而元資料快取有利於快取命中。若對元資料快取及布隆過濾器二者並行地存取,則布隆過濾器錯誤(FALSE)意味著快取未中,因而無需進行DRAM存取。SRAM元資料快取命中被視為快速快取命中,因此無需進行DRAM元資料存取。
圖1是傳統混合記憶體模組的架構。混合記憶體模組100包括DRAM快取101、快閃記憶體151、記憶體存取控制器
111、DRAM控制器121、快取控制器124、用於儲存快取127的元資料的SRAM 126、及快閃控制器131。元資料快取127包括DRAM快取101的元資料102的快取版本。DRAM快取101儲存快閃記憶體151的快取資料,且包括元資料102、讀取快取103、及寫入緩衝器104。元資料102可包括標籤、有效位元、壞位元(dirty bit)等。應注意,除非另外明確闡明,否則項、元資料、及標籤可在本文中互換使用。讀取快取103儲存來自快閃記憶體151的快取資料。讀取快取103用於對資料進行快取。讀取快取103可減少對快閃記憶體151的記憶體存取的次數。待寫入至快閃記憶體151的資料可在寫入緩衝器104中緩衝。寫入緩衝器104可減少寫入至快閃記憶體151的通訊量。
主機電腦(圖中未示出)根據在主機電腦與混合記憶體模組100之間建立的記憶體主機/從機介面協定(例如,非揮發性雙行記憶體模組協定(non-volatile dual in-line memory module-protocol,NVDIMM-P))經由記憶體介面140發送記憶體存取請求以存取儲存於混合記憶體模組100中的資料。記憶體存取請求被轉發至記憶體存取控制器111。記憶體存取控制器111充當中間轉譯器並將來自主機的請求(經由NVDIMM-P協定)轉譯成可由混合記憶體模組100讀取的格式。在對來自主機的請求進行轉譯之後,記憶體存取控制器111將經轉譯的資訊轉發至快取控制器124。
快取控制器124對儲存於SRAM 126中的元資料快取
127進行檢查,並確定元資料快取命中還是未中。若為元資料快取命中,則快取控制器124確認到所請求資料儲存於DRAM快取101中,並請求DRAM控制器121使用儲存於元資料快取127中的元資料來存取DRAM快取101中的所請求資料,而不存取DRAM快取101中的元資料102。若為元資料快取未中,則快取控制器124請求DRAM控制器121存取儲存於DRAM快取101中的元資料102並確定DRAM快取命中還是未中。在對DRAM快取命中還是未中進行檢查之後,快取控制器124可確定所請求資料的確切目的地。若為DRAM快取命中,則快取控制器124請求DRAM控制器121存取儲存於DRAM快取101中的所請求資料。若為DRAM快取未中,則快取控制器124請求快閃控制器131存取儲存於快閃記憶體151中的所請求資料。
當快取控制器124確定所請求資料儲存於DRAM快取101中時,快取控制器124指令DRAM控制器121在元資料快取命中的情形中藉由參考儲存於SRAM 126中的元資料快取127,或者在DRAM快取命中的情形中藉由參考元資料102來存取DRAM快取101。當快取控制器124確定所請求資料儲存於快閃記憶體151中時,快閃控制器131經由快閃流(flash stream)150來存取及檢索儲存於快閃記憶體151中的資料。
圖2是根據一個實施例的示例性混合記憶體模組的架構。混合記憶體模組200包括DRAM快取201、快閃記憶體251、記憶體存取控制器211、DRAM控制器221、快取控制器224、SRAM
226、及快閃控制器231。
SRAM 226將DRAM快取201的元資料202的快取副本儲存於元資料快取227中。根據元資料快取227的可用大小,儲存於元資料快取227中的元資料202的快取副本可為元資料202的子集。SRAM 226更以布隆過濾器陣列229的形式儲存另一「組」快取元資料(元資料202的全集或元資料202的子集)。
元資料快取227包括DRAM快取201的元資料202的快取版本。DRAM快取201儲存快閃記憶體251的快取資料,且包括元資料202、讀取快取203、及寫入緩衝器204。元資料202可包括標籤、有效位元、壞位元等。應注意,除非另外明確闡明,否則項、元資料、及標籤可在本文中互換使用。讀取快取203儲存來自快閃記憶體251的快取資料。讀取快取203用於對資料進行快取。讀取快取203可減少對快閃記憶體251的記憶體存取的次數。待寫入至快閃記憶體251的資料可在寫入緩衝器204中緩衝。寫入緩衝器204可減少寫入至快閃記憶體251的通訊量。
主機電腦(圖中未示出)根據在主機電腦與混合記憶體模組200之間建立的記憶體主機/從機介面協定(例如,NVDIMM-P)經由記憶體介面240發送記憶體存取請求以存取儲存於混合記憶體模組200中的資料。記憶體存取請求被轉發至記憶體存取控制器211。記憶體存取控制器211充當中間轉譯器並將來自主機的請求(經由NVDIMM-P協定)轉譯成可由混合記憶體模組200讀取的格式。在對來自主機的請求進行轉譯之後,記憶
體存取控制器211將經轉譯的資訊轉發至快取控制器224。
快取控制器224對儲存於SRAM 226中的有關快取227的元資料進行檢查,並確定元資料快取命中還是未中。若為元資料快取命中,則快取控制器224確認到所請求資料儲存於DRAM快取201中,並請求DRAM控制器221使用儲存於元資料快取227中的元資料來存取DRAM快取201中的所請求資料,而不存取DRAM快取201中的元資料202。
根據一個實施例,快取控制器224提供各種函數來對儲存於SRAM 226中的元資料進行運算。此類函數的實例包括但不限於,對儲存於SRAM 226中的元資料進行管理的***函數(insert function)及測試函數(test function)。布隆過濾器可使用該些函數對儲存於SRAM 226中的布隆過濾器陣列229進行運算,以判斷DRAM快取命中還是未中。舉例而言,快取控制器224對布隆過濾器陣列229執行布隆過濾器測試函數(Bloom filter test function)。若布隆過濾器測試結果為否定,則意味著DRAM快取未中,表明資料未儲存於DRAM快取201中,且快取控制器224向快閃控制器231發送請求以獲得資料,而不存取DRAM快取201的元資料202。根據一個實施例,對元資料快取227進行的元資料快取檢查及對布隆過濾器進行的布隆過濾器測試可獨立地、同時地、或以特定的順序執行。
若為元資料快取未中且布隆過濾器的測試結果為肯定(即,表明DRAM快取命中,但其可能為誤報),則快取控制器
224請求DRAM控制器221存取DRAM快取201的元資料202,以判斷DRAM快取的確是命中還是未中。基於在DRAM快取201的元資料202中存在匹配的元資料,快取控制器224可確定所請求資料的確切目的地。若為DRAM快取命中,則快取控制器224請求DRAM控制器221存取儲存於DRAM快取201中的所請求資料。若為DRAM快取未中,則快取控制器224請求快閃控制器231存取儲存於快閃記憶體251中的所請求資料。
參照圖2,元資料快取227與布隆過濾器陣列229可具有獨立的資料結構且可儲存相同或不同的元資料。元資料快取227與布隆過濾器陣列229彼此獨立地在SRAM 226中具有其自己的專用區,以儲存其自己的元資料及對元資料進行運算的邏輯。根據一個實施例,SRAM 226僅包括元資料快取227及布隆過濾器陣列229中的一者,或者快取控制器224僅對元資料快取227及布隆過濾器陣列229中的一者進行操作。無論布隆過濾器陣列229存在還是運作,元資料快取227皆可以相同的方式運作。相似地,無論元資料快取227存在還是運作,布隆過濾器陣列229皆以相同的方式運作。根據元資料快取227的運作模式以及存在(或不存在),元資料快取227及布隆過濾器陣列229在SRAM 26中的分配區可動態地改變。本混合記憶體模組200對元資料快取227及布隆過濾器陣列229提供一或多個「封套資料(wrapper)」函數,以有利於確定快取命中還是未中,而不必相互依賴。
在元資料快取命中的情形中,即若SRAM 226中的元資
料快取227儲存有元資料的快取副本,則快取控制器224確定所請求資料儲存於DRAM快取201中,快取控制器224指令DRAM控制器221藉由參考儲存於SRAM 226中的元資料快取227來存取DRAM快取201。在DRAM快取命中的情形中,快取控制器224指令DRAM控制器221藉由參考元資料202來存取DRAM快取201。當快取控制器224確定所請求資料儲存於快閃記憶體251中時,快閃控制器231經由快閃流250來存取及檢索儲存於快閃記憶體251中的資料。
根據一個實施例,元資料快取227可得以高效地維持,乃因DRAM元資料202為包含性(inclusive)且為乾淨(clean)的。舉例而言,元資料快取227中的列亦儲存於DRAM快取201的元資料202中。對元資料快取227的任何存取類型始終被視為讀取存取。表1是由混合記憶體模組200的快取控制器224根據所請求資料的存取類型及位置執行的動作列表。
在讀取存取請求的情形中,快取控制器224可判斷所請求資料的快取副本是否可以以下方式在DRAM快取201中找到。首先,快取控制器224檢查在元資料快取227中是否存在匹配的元資料。若找到匹配,則由於元資料標籤及DRAM快取標籤被包括在內,快取控制器224可斷定讀取存取請求在DRAM快取201中命中。快取控制器224可接著使用在元資料快取227中命中的元資料自DRAM快取201請求目標資料,但不存取DRAM元資料202。除元資料快取檢查以外,快取控制器224可使用布隆過濾器陣列229來執行DRAM快取命中還是未中檢查。在藉由布隆過濾器測試確定的DRAM快取未中的情形中,快取控制器224可斷定目標資料不位於DRAM快取201中,並向快閃控制器231發送請求以獲得資料而不存取DRAM快取201的元資料202。若布隆過濾器測試結果表明DRAM快取命中,則快取控制器224在此階段無法確定DRAM快取真正命中還是未中,乃因藉由布隆過濾器確定的DRAM快取命中可能為誤報。在此種情形中,快取控制器224因此進一步請求DRAM控制器221存取DRAM元資料202,以確定DRAM快取真正命中還是未中。藉由將包含於資料存取請求中的DRAM快取標籤與DRAM元資料202進行比較,快取控制器224可精確地判斷資料請求是否在DRAM快取201中命中。若DRAM快取命中,則快取控制器224可自DRAM快取201請求目
標資料。若DRAM快取未中,則快取控制器224可自快閃記憶體251請求目標資料,將自快閃記憶體251獲得的資料***至DRAM快取201,並更新DRAM元資料202。無論DRAM快取命中還是未中,由於元資料快取未中,因此快取控制器224可使用自DRAM元資料202獲得的元資料來更新元資料快取227。
在寫入存取請求的情形中,如同在讀取存取請求的情形中一樣,快取控制器224可基於元資料快取227與DRAM快取201的匹配結果來執行等效動作。以下將進一步詳細地重點說明讀取存取操作與寫入存取操作之間的差異。
圖3是根據一個實施例的示例性快取控制器操作的方塊圖。參照圖3闡釋的快取控制器可為如圖2所示整合於混合記憶體模組200中的快取控制器224。在此種情形中,將省略對混合記憶體模組200以及整合於混合記憶體模組中的內部組件、模組、及裝置的重複闡釋。
因應於自主機電腦接收到資料存取請求,快取控制器解碼資料存取請求以獲得所請求資料的主機位址301,並辨識存取類型(例如,讀取、寫入)。主機位址301包括標籤302(在本文中亦被稱為DRAM快取標籤)、索引303(在本文中亦被稱為DRAM快取索引)、及偏移304。
根據一個實施例,DRAM快取中的快取列可大於主機所請求資料的大小。在此種情形中,偏移304用於確定快取列的與所請求資料對應的一部分。舉例而言,若快取列是2千位元組且
所請求資料大小是1位元組,則在需要總計2048個偏移數的快取列中存在2048(2千位元組/1位元組)件資料,以唯一地辨識主機位址所指代的資料件。舉例而言,偏移304為0是指快取列中的第一資料件,且偏移304為2047是指快取列中的最後資料件。
根據一個實施例,索引303可包括與DRAM快取相關聯的元資料資訊。快取控制器可更解碼索引303以獲得元資料位址311,並將元資料位址311與儲存於SRAM中的元資料快取327進行比較以確定元資料快取命中還是未中。根據一個實施例,元資料位址311包括元資料(MDC)標籤312及元資料(MDC)索引313。
首先,快取控制器使用元資料位址311的MDC索引313來選擇儲存於SRAM元資料快取327中的多個DRAM快取元資料中的匹配的元資料條目。儲存於SRAM元資料快取327中的每一匹配的元資料條目可具有包括MDC標籤333(例如MDC標籤333a-333d)、DRAM快取標籤332(例如DRAM快取標籤333a-333d)的一對標籤、以及有效位元V。有效位元V指示相關聯的快取列是否有效。舉例而言,若V=0,則具有匹配的元資料條目的快取列指示快取未中。若SRAM元資料快取327如在實例中所示被組織成多種方式(例如,方式0、方式1、方式2、及方式3),則MDC索引313可對應於方式ID。
為了確定元資料快取命中還是未中,快取控制器在元資料快取327中搜索匹配條目,並將元資料位址311的MDC標籤
312與所辨識的匹配條目的MDC標籤333進行比較。若元資料標籤312與MDC標籤333匹配,則自匹配條目讀取包含原始主機標籤的資料。將儲存於元資料快取327中的原始主機標籤與主機位址301的主機標籤302進行比較。若原始主機標籤與主機標籤302匹配,則快取控制器確定元資料快取命中並使用儲存於元資料快取327中的匹配的主機標籤來存取DRAM快取中的所請求資料,而不存取DRAM快取的元資料。
除元資料快取檢查以外,快取控制器可使用布隆過濾器執行布隆過濾器測試以確定在DRAM快取中存在(還是不存在)快取資料(即,DRAM快取命中還是未中)。布隆過濾器可以各種形式來實作,例如經由比較器來實作。快取控制器將主機位址301的標籤302與藉由元資料快取檢查而辨識出的匹配的元資料對的DRAM快取標籤332進行比較。若布隆過濾器測試表明DRAM快取未中(即,在元資料快取327中不存在與主機位址301的標籤302匹配的標籤332),則快取控制器可斷定在DRAM快取中不存在目標資料,並請求快閃控制器存取儲存於快閃記憶體中的資料。
在一些情形中,快取控制器在元資料快取327中未找到匹配的元資料條目(即,元資料快取未中),且布隆過濾器可能指示DRAM快取命中。然而,由布隆過濾器指示DRAM快取命中可為誤報,因此快取控制器繼續存取DRAM快取的元資料,以判斷目標資料是否的確儲存於DRAM快取中(DRAM快取真正命中還是未中)。基於主機位址301的標籤302與DRAM快取的元資料
之間的比較結果,快取控制器可精確地確定目標資料的位置。若在DRAM快取中不存在匹配的元資料(即,DRAM快取真正未中),則快取控制器可保證在DRAM中不存在所請求資料的快取副本。在此種情形中,快取控制器可跳過存取DRAM快取而直接存取快閃控制器以存取儲存於快閃記憶體中的資料。若在DRAM快取中存在匹配的元資料(即,DRAM快取真正命中),則快取控制器可存取DRAM控制器以存取儲存於DRAM快取中的資料。
圖4是根據一個實施例的實作於混合記憶體模組中的示例性布隆過濾器。快取控制器為布隆過濾器提供***函數及測試函數。根據一個實施例,***函數是散列函數(hash function)。快取控制器可根據布隆過濾器的設定而採用多於一個散列函數。舉例而言,***函數及測試函數的輸入被標示為x、y、z、及w,可為元資料快取標籤。
儲存於本混合記憶體模組的SRAM的專用區中的布隆過濾器的元資料可被實作為包括多個條目的陣列,在本文中亦被稱為布隆過濾器陣列。在本實例中,布隆過濾器陣列的每一條目為16位元,且存在三個散列函數。測試函數為全部的所述三個散列函數提供匹配的結果。應注意,該些僅為實例,且在不偏離本揭露的範圍的條件下,可使用不同長度的布隆過濾器陣列及不同數目個散列函數。
對於給定的快取標籤(例如,圖3中的標籤302),***函數(insert(x)與insert(y))根據散列演算法將位元***(或更新)
至布隆過濾器陣列401的所指出條目中。在本實例中,對於快取標籤x,散列函數***布隆過濾器陣列401的由快取標籤x所指出的條目(位元7、位元12、及位元14)集。隨後,當接收到資料存取請求時,調用測試函數test(x)以自布隆過濾器陣列401讀取由快取標籤x所指出的條目,且測試布隆過濾器陣列401是否包含快取標籤x。第二快取標籤y可利用散列函數***而被輸入至布隆過濾器陣列401的由快取標籤y所指出的條目(位元2、位元4、及位元11),且可使用函數test(y)來測試快取標籤y是否存在。
在本實例中,快取標籤x及y被示出為對布隆過濾器陣列401的輸入。布隆過濾器陣列401的每一條目可為0或1。***函數可基於一或多個散列函數,所述一或多個散列函數中的每一者可將快取標籤視為輸入。***函數的輸出是與布隆過濾器陣列401中的所指出條目對應的位元編號。應注意,本揭露並非僅限於特定散列函數及所使用的散列函數的數目。舉例而言,***函數可在接收到快取標籤作為輸入時,更新布隆過濾器陣列的四個條目。
應注意,標籤z及w未明確地輸入至布隆過濾器陣列401。當接收到具有快取標籤z的資料請求時,調用用於標籤z的測試函數test(z),且以否定返回,恰當地表明z不包含於布隆過濾器中(且因此不包含於DRAM快取中)。然而,當接收到具有快取標籤w的資料存取請求時,調用測試函數test(w)以讀取布隆過濾器陣列401的由快取標籤w所指出的條目,且測試在布隆過濾
器陣列401中存在還是不存在快取標籤w。在本實例中,測試函數test(w)表明在布隆過濾器陣列401中存在快取標籤w。因此,在本實例中,測試函數test(w)為誤報的實例。因此,布隆過濾器可用於確定無疑地辨識不位於快取中的快取標籤,但無法用於準確地預測何種快取標籤位於快取中。
根據一個實施例,本布隆過濾器可刪除布隆過濾器陣列的所選擇部分或整個部分。舉例而言,快取控制器可自行判定應用刪除函數(delete function)來擦除布隆過濾器陣列的一部分或整個布隆過濾陣列。刪除函數可適用於當DRAM快取中的快取列因快取列替換而不再存在或避開時。在此種情形中,刪除函數可擦除本布隆過濾器陣列中的對應的條目。在布隆過濾器陣列並非足夠大的情形中,快取控制器可刪除布隆過濾器陣列的一部分以為新的條目騰出空間。在替代實施例中,本布隆過濾器可使用能夠覆蓋整個標籤範圍的大的布隆過濾器陣列,或者快取控制器可在布隆過濾器充滿時重設布隆過濾器,以使得當布隆過濾器效率變低時不再添加陣列。
圖5是根據一個實施例的一種由快取控制器來執行資料請求的流程圖。因應於來自主機電腦的對資料存取的請求,混合記憶體模組的快取控制器解碼請求以獲得所請求資料的請求類型(例如,讀取、寫入)及主機位址(501)。主機位址可包括標籤(DRAM標籤)、索引、及偏移。快取控制器接著解碼主機位址的索引以獲得包括MDC標籤及MDC索引的元資料位址(502)。快
取控制器使用元資料位址的MDC索引自儲存於混合記憶體模組的SRAM中的元資料快取辨識匹配的快取列(503)。匹配的快取列儲存有一對MDC標籤與DRAM快取標籤。若在元資料快取中不存在匹配的快取列,則快取控制器請求DRAM控制器存取DRAM快取的元資料,並判斷在DRAM快取中是否存在所請求資料的快取副本(即,DRAM快取真正命中還是未中)。
另一方面,若在SRAM元資料快取中辨識出匹配的快取列,則快取控制器判斷匹配的快取列的MDC標籤是否與元資料位址的MDC標籤匹配,且進一步判斷由匹配的MDC標籤所參照的主機標籤是否與原始主機標籤匹配(504)。若主機標籤匹配(即,元資料快取命中),則快取控制器確定所請求資料是在DRAM快取中被快取(506),且請求DRAM控制器跳過對DRAM快取的元資料的存取,使用匹配的主機標籤來存取DRAM快取並自DRAM快取獲得所請求資料(511)。
另外,快取控制器使用匹配的快取列的DRAM標籤(或主機位址的DRAM標籤)來執行布隆過濾器測試,以確定DRAM快取命中還是未中(505)。若布隆過濾器的測試結果為否定,則快取控制器斷定所請求資料並非在DRAM快取中被快取(即,DRAM快取未中)(509),且請求快閃控制器存取快閃記憶體並獲得所請求資料(512)。在此種情形中,可跳過對DRAM快取的元資料的存取,且對快閃記憶體的資料存取的延遲得到改善。
若對於元資料快取不存在匹配(即,元資料快取未中)
且布隆過濾器測試結果為肯定(可能為DRAM快取命中的誤報),則快取控制器請求DRAM控制器存取DRAM快取的元資料(507)以判斷主機位址的標籤(DRAM標籤)是否與DRAM快取的元資料中的條目匹配(508)。若DRAM快取標籤匹配,則快取控制器確定所請求資料是在DRAM快取中被快取(即,DRAM快取命中)(510),且請求DRAM控制器存取DRAM快取中的所請求資料(511)。若DRAM快取標籤不匹配,則快取控制器確定所請求資料並非在DRAM快取中被快取(即,DRAM快取未中)(509),且請求快閃控制器存取快閃記憶體中的所請求資料(512)。
本快取控制器可被程式化成支援元資料快取及布隆過濾器中的任一者、兩者或皆不支援元資料快取及布隆過濾器。舉例而言,快取控制器監控快取命中率以確定對元資料快取及/或布隆過濾器進行停用/啟用。若元資料快取命中率高於第一預定臨限值,則快取控制器可停用布隆過濾器,乃因布隆過濾器在緩解對DRAM快取元資料進行存取的負荷方面所提供的有益效果甚微。在另一實例中,元資料快取命中率低於第二預定臨限值,快取控制器可停用元資料快取,僅留下布隆過濾器。若DRAM不用作快閃記憶體的快取,則快取控制器可停用元資料快取及布隆過濾器兩者。
根據一個實施例,快取控制器可並行地存取布隆過濾器及元資料快取以獲得快速比較結果。根據另一實施例,快取控制器可在低功率條件下串列地存取布隆過濾器及元資料快取。快取
控制器可首先對布隆過濾器進行檢查,且若布隆過濾器的結果是元資料快取未中,則快取控制器不啟動元資料快取。若布隆過濾器的結果是元資料快取命中,則快取控制器可啟動元資料快取以檢查DRAM快取命中還是未中。若布隆過濾器的結果是元資料快取命中但元資料快取返回一個錯誤,則快取控制器存取DRAM快取標籤。串列存取的次序可顛倒,即按照元資料快取、布隆過濾器、及DRAM快取標籤的次序進行存取。
根據一個實施例,一種方法包括:提供包括動態隨機存取記憶體(DRAM)快取、快閃記憶體、及用於儲存元資料快取的靜態隨機存取記憶體(SRAM)的混合記憶體模組,其中所述動態隨機存取記憶體快取包括儲存於所述快閃記憶體中的資料的快取副本及與資料的所述快取副本對應的元資料,且其中所述元資料快取包括所述動態隨機存取記憶體快取的元資料的一部分的快取副本;自主機電腦接收對儲存於所述混合記憶體模組中的資料的資料存取請求;藉由解碼所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;在所述元資料快取命中的情形中,自所述動態隨機存取
記憶體快取獲得所述資料且跳過對所述動態隨機存取記憶體快取的元資料的存取;以及使自所述動態隨機存取記憶體快取獲得的所述資料返回至所述主機電腦。
所述確定所述元資料快取命中可更包括:將所述元資料位址的元資料快取標籤與一或多個元資料快取條目的元資料快取標籤進行比較,以確定所述在所述元資料快取中存在所述匹配的元資料快取條目。
所述靜態隨機存取記憶體可更儲存布隆過濾器,且所述方法可更包括:基於在所述靜態隨機存取記憶體的元資料快取中不存在匹配的元資料快取條目來確定元資料快取未中;利用布隆過濾器來執行布隆過濾器測試;基於布隆過濾器測試的結果確定動態隨機存取記憶體快取可能未中還是動態隨機存取記憶體快取命中;在所述動態隨機存取記憶體快取未中的情形中,自所述快閃記憶體獲得資料;以及使自所述快閃記憶體獲得的資料返回至所述主機電腦。
所述元資料快取標籤的所述比較與所述布隆過濾器測試可同時執行。
所述方法可更包括:在所述元資料快取未中且所述動態隨機存取記憶體快取可能命中的情形中,存取所述動態隨機存取記憶體快取的元資料;基於所述主機位址的動態隨機存取記憶體標籤與所述動態隨機存取記憶體快取的元資料的比較來判斷所述資料是否儲存於所述動態隨機存取記憶體快取中;在所述動態隨
機存取記憶體快取的元資料中存在所述主機位址的動態隨機存取記憶體標籤的匹配條目的情形中,自所述動態隨機存取記憶體快取獲得資料且使自所述動態隨機存取記憶體快取獲得的資料返回至所述主機電腦;而在所述動態隨機存取記憶體快取的元資料中不存在所述主機位址的動態隨機存取記憶體標籤的匹配條目的情形中,自所述快閃記憶體獲得資料且使自所述快閃記憶體獲得的資料返回至所述主機電腦。
所述布隆過濾器可包括具有多個條目的布隆過濾器陣列,且所述布隆過濾器測試可藉由對所述布隆過濾器陣列應用散列函數來提供肯定結果或否定結果。
所述方法可更包括刪除所述布隆過濾器陣列或重設所述布隆過濾器陣列。
所述方法可更包括將快取控制器程式化成當元資料快取命中率高於臨限值時,停用所述布隆過濾器。
所述方法可更包括將快取控制器程式化成當元資料快取命中率低於臨限值時,停用所述元資料快取。
所述方法可更包括在低功率條件下串列地存取所述布隆過濾器及所述元資料快取。
根據另一實施例,一種混合記憶體模組包括:快閃記憶體;動態隨機存取記憶體(DRAM)快取,其中所述動態隨機存取記憶體快取包括儲存於所述快閃記憶體中的資料的快取副本及與資料的所述快取副本對應的元資料;靜態隨機存取記憶體
(SRAM),用於儲存元資料快取,所述元資料快取包括所述動態隨機存取記憶體快取的元資料的一部分的快取副本;記憶體介面,用於為主機電腦提供介面;記憶體存取控制器,用於存取儲存於所述動態隨機存取記憶體快取及所述快閃記憶體中的資料;動態隨機存取記憶體控制器,用於控制對所述動態隨機存取記憶體快取的存取;快閃控制器,用於控制對所述快閃記憶體的存取;以及快取控制器,用於確定來自所述主機電腦的所請求資料的快取副本是否存在。
所述快取控制器被配置成:藉由解碼所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;以及在所述元資料快取命中的情形中,指令所述動態隨機存取記憶體控制器跳過對所述動態隨機存取記憶體快取的元資料的存取而自所述動態隨機存取記憶體快取獲得所述資料。所述記憶體存取控制器被配置成使自所述動態隨機存取記憶體快取獲得的所述資料返回至所述主機電腦。
所述快取控制器可更被配置成將所述元資料位址的元資料快取標籤與一或多個元資料快取條目的所述元資料快取標籤
進行比較,以確定所述在所述元資料快取中存在所述匹配的元資料快取條目。
所述靜態隨機存取記憶體可更儲存布隆過濾器,且所述快取控制器可更被配置成:基於在所述靜態隨機存取記憶體的元資料快取中不存在匹配的元資料快取條目來確定元資料快取未中;利用所述布隆過濾器來執行布隆過濾器測試;基於布隆過濾器測試的結果確定動態隨機存取記憶體快取未中還是動態隨機存取記憶體快取可能命中;在所述動態隨機存取記憶體快取未中的情形中,指令所述快閃控制器跳過對所述動態隨機存取記憶體快取的元資料的存取而自所述快閃記憶體獲得資料;以及自所述快閃記憶體獲得資料,且所述記憶體存取控制器可被配置成使自所述快閃記憶體獲得的資料返回至所述主機電腦。
所述快取控制器可同時執行所述元資料快取標籤的所述比較與所述布隆過濾器測試。
在所述元資料快取未中且所述動態隨機存取記憶體快取可能命中的情形中,所述動態隨機存取記憶體控制器可被配置成:存取所述動態隨機存取記憶體快取的元資料;以及基於所述主機位址的動態隨機存取記憶體標籤與所述動態隨機存取記憶體快取的元資料的比較來判斷資料是否儲存於所述動態隨機存取記憶體快取中。在所述動態隨機存取記憶體快取的元資料中存在所述主機位址的動態隨機存取記憶體標籤的匹配條目的情形中,所述動態隨機存取記憶體控制器被配置成自所述動態隨機存取記憶
體快取獲得資料,且所述記憶體存取控制器被配置成使自所述動態隨機存取記憶體快取獲得的資料返回至所述主機電腦。在所述動態隨機存取記憶體快取的所述元資料中不存在所述主機位址的動態隨機存取記憶體標籤的匹配條目的情形中,所述快閃控制器被配置成自所述快閃記憶體獲得資料,且所述記憶體存取控制器被配置成使自所述快閃記憶體獲得的資料返回至所述主機電腦。
所述布隆過濾器可包括具有多個條目的布隆過濾器陣列,且所述布隆過濾器測試可藉由對所述布隆過濾器陣列應用散列函數來提供肯定結果或否定結果。
所述快取控制器可更被配置成刪除所述布隆過濾器陣列或重設所述布隆過濾器陣列。
所述快取控制器可程式化成當元資料快取命中率高於臨限值時,停用所述布隆過濾器。
所述快取控制器可程式化成當元資料快取命中率低於臨限值時,停用所述元資料快取。
所述快取控制器可被配置成在低功率條件下串列地存取所述布隆過濾器及所述元資料快取。
上文已闡釋了以上示例性實施例來說明實作一種系統及方法的各種實施例,所述系統及方法用於提供使用SRAM元資料快取及布隆過濾器緩解對混合記憶體模組中的DRAM快取的元資料進行存取的負荷的系統及方法。此項技術中具有通常知識者將會想到對所揭露示例性實施例的各種潤飾及相對於所揭露示例
性實施例的各種不同之處。在以下申請專利範圍中陳述旨在處於本發明的範圍內的主題。
501、502、503、504、505、506、507、508、509、510、511、512:操作
Claims (20)
- 一種對混合記憶體模組進行存取元資料的方法,包括:提供包括動態隨機存取記憶體快取、快閃記憶體、及用於儲存布隆過濾器及元資料快取的靜態隨機存取記憶體的所述混合記憶體模組,其中所述動態隨機存取記憶體快取包括儲存於所述快閃記憶體中的多個資料的快取副本及與所述多個資料的所述快取副本對應的元資料,且其中所述元資料快取包括所述動態隨機存取記憶體快取的所述元資料的一部分的快取副本;自主機電腦接收對儲存於所述混合記憶體模組中的資料的資料存取請求;藉由解碼所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的所述元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;基於元資料快取命中使用所述匹配的元資料快取條目的所述動態隨機存取記憶體快取標籤自包括於所述動態隨機存取記憶體快取中的資料的所述快取副本獲得資料且跳過對所述動態隨機存 取記憶體快取的所述元資料的存取;使自所述動態隨機存取記憶體快取獲得的資料的所述快取副本返回至所述主機電腦;基於在所述靜態隨機存取記憶體的所述元資料快取中不存在匹配的元資料快取條目來確定元資料快取未中;以及基於元資料快取未中利用所述布隆過濾器執行布隆過濾器測試,並且基於所述布隆過濾器測試的結果來確定動態隨機存取記憶體快取未中還是動態隨機存取記憶體快取可能命中。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,其中確定所述元資料快取命中更包括:將所述元資料位址的所述元資料快取標籤與一或多個元資料快取條目的所述元資料快取標籤進行比較,以確定在所述元資料快取中存在所述匹配的元資料快取條目。
- 如申請專利範圍第2項所述的對混合記憶體模組進行存取元資料的方法,更包括:基於動態隨機存取記憶體快取未中自儲存於所述快閃記憶體中的所述多個資料獲得資料,並且跳過對所述動態隨機存取記憶體快取的所述元資料的存取;以及使自所述快閃記憶體獲得的所述資料返回至所述主機電腦。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,其中所述元資料快取標籤的比較與所述布隆過濾器測試是同時執行。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,更包括:基於所述元資料快取未中及所述動態隨機存取記憶體快取可能命中存取所述動態隨機存取記憶體快取的所述元資料;基於所述主機位址的所述動態隨機存取記憶體快取標籤與包括於所述動態隨機存取記憶體快取中的所述元資料的比較來判斷資料是否儲存於所述動態隨機存取記憶體快取中;在所述動態隨機存取記憶體快取的所述元資料中存在所述主機位址的所述動態隨機存取記憶體快取標籤的匹配條目的情形中,自所述動態隨機存取記憶體快取獲得所快取的所述資料且使自所述動態隨機存取記憶體快取獲得的資料的所述快取副本返回至所述主機電腦;以及在所述動態隨機存取記憶體快取的所述元資料中不存在所述主機位址的所述動態隨機存取記憶體快取標籤的匹配條目的情形中,自所述快閃記憶體獲得資料且使自所述快閃記憶體獲得的所述資料返回至所述主機電腦。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,其中所述布隆過濾器包括具有多個條目的布隆過濾器陣列,且所述布隆過濾器測試藉由對所述布隆過濾器陣列應用散列函數來提供肯定結果或否定結果。
- 如申請專利範圍第6項所述的對混合記憶體模組進行存取元資料的方法,更包括刪除所述布隆過濾器陣列或重設所述 布隆過濾器陣列。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,更包括將所述混合記憶體模組的快取控制器程式化成,當元資料快取命中率高於臨限值時,停用所述布隆過濾器。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,其中所述混合記憶體模組包括快取控制器,並且所述方法更包括將所述快取控制器程式化成當元資料快取命中率低於臨限值時,停用所述元資料快取。
- 如申請專利範圍第1項所述的對混合記憶體模組進行存取元資料的方法,更包括在低功率條件下串列地存取所述布隆過濾器及所述元資料快取。
- 一種混合記憶體模組,包括:快閃記憶體;動態隨機存取記憶體快取,其中所述動態隨機存取記憶體快取包括儲存於所述快閃記憶體中的多個資料的快取副本及與所述多個資料的所述快取副本對應的元資料;靜態隨機存取記憶體,用於儲存布隆過濾器及元資料快取,所述元資料快取包括所述動態隨機存取記憶體快取的所述元資料的一部分的快取副本;記憶體介面,用於為主機電腦提供介面;記憶體存取控制器,用於存取儲存於所述動態隨機存取記憶 體快取中的所述快取副本及儲存於所述快閃記憶體中的所述多個資料;動態隨機存取記憶體控制器,用於控制對所述動態隨機存取記憶體快取的存取;快閃控制器,用於控制對所述快閃記憶體的存取;以及快取控制器,用於確定與來自所述主機電腦的資料存取請求中所請求資料對應的所述動態隨機存取記憶體快取中的快取資料的存在,其中所述快取控制器被配置成:藉由解碼經由所述記憶體介面自所述主機電腦所接收的所述資料存取請求獲得主機位址,其中所述主機位址包括動態隨機存取記憶體快取標籤及動態隨機存取記憶體快取索引;自所述動態隨機存取記憶體快取索引獲得元資料位址,其中所述元資料位址包括元資料快取標籤及元資料快取索引;基於在所述靜態隨機存取記憶體的所述元資料快取中存在匹配的元資料快取條目來確定元資料快取命中,其中所述匹配的元資料快取條目具有一對元資料快取標籤與動態隨機存取記憶體快取標籤;以及基於元資料快取命中使用所述匹配的元資料快取條目的所述動態隨機存取記憶體快取標籤指令所述動態隨機存取記憶體控制器跳過對所述動態隨機存取記憶體快取的所述元資料的存取而自包括於所述動態隨機存取記憶體快取中的所述 快取副本獲得資料,以及其中所述記憶體存取控制器被配置成使自所述動態隨機存取記憶體快取獲得的資料的所述快取副本返回至所述主機電腦,其中所述快取控制器更被配置成:基於在所述靜態隨機存取記憶體的所述元資料快取中不存在匹配的元資料快取條目來確定元資料快取未中;利用所述布隆過濾器來執行布隆過濾器測試;基於所述布隆過濾器測試的結果來確定動態隨機存取記憶體快取未中還是動態隨機存取記憶體快取可能命中。
- 如申請專利範圍第11項所述的混合記憶體模組,其中所述快取控制器更被配置成將所述元資料位址的所述元資料快取標籤與一或多個元資料快取條目的所述元資料快取標籤進行比較,以確定在所述元資料快取中存在所述匹配的元資料快取條目。
- 如申請專利範圍第12項所述的混合記憶體模組,其中所述快取控制器更被配置成:基於動態隨機存取記憶體快取未中指令所述快閃控制器跳過對所述動態隨機存取記憶體快取的所述元資料的存取而自儲存於所述快閃記憶體中的所述多個資料獲得資料,以及其中所述記憶體存取控制器被配置成使自所述快閃記憶體獲得的所述資料返回至所述主機電腦。
- 如申請專利範圍第11項所述的混合記憶體模組,其中 所述快取控制器同時執行所述元資料快取標籤的比較與所述布隆過濾器測試。
- 如申請專利範圍第11項所述的混合記憶體模組,其中,基於所述元資料快取未中且所述動態隨機存取記憶體快取可能命中,所述動態隨機存取記憶體控制器被配置成:存取包括於所述動態隨機存取記憶體快取中的所述元資料;以及基於所述主機位址的所述動態隨機存取記憶體快取標籤與所述動態隨機存取記憶體快取的所述元資料的比較來判斷資料是否儲存於所述動態隨機存取記憶體快取中;其中,在包括於所述動態隨機存取記憶體快取中的所述元資料中存在所述主機位址的所述動態隨機存取記憶體快取標籤的匹配條目的情形中,所述動態隨機存取記憶體控制器被配置成自所述動態隨機存取記憶體快取獲得所述快取資料,且所述記憶體存取控制器被配置成使自所述動態隨機存取記憶體快取獲得的資料的所述快取副本返回至所述主機電腦;並且其中,在包括於所述動態隨機存取記憶體快取中的所述元資料中不存在所述主機位址的所述動態隨機存取記憶體快取標籤的匹配條目的情形中,所述快閃控制器被配置成自所述快閃記憶體獲得資料,且所述記憶體存取控制器被配置成使自所述快閃記憶體獲得的所述資料返回至所述主機電腦。
- 如申請專利範圍第11項所述的混合記憶體模組,其中 所述布隆過濾器包括具有多個條目的布隆過濾器陣列,且所述布隆過濾器測試藉由對所述布隆過濾器陣列應用散列函數來提供肯定結果或否定結果。
- 如申請專利範圍第16項所述的混合記憶體模組,其中所述快取控制器更被配置成刪除所述布隆過濾器陣列或重設所述布隆過濾器陣列。
- 如申請專利範圍第11項所述的混合記憶體模組,其中所述快取控制器能夠程式化成當元資料快取命中率高於臨限值時,停用所述布隆過濾器。
- 如申請專利範圍第11項所述的混合記憶體模組,其中所述快取控制器能夠程式化成當元資料快取命中率低於臨限值時,停用所述元資料快取。
- 如申請專利範圍第11項所述的混合記憶體模組,其中所述快取控制器被配置成在低功率條件下串列地存取所述布隆過濾器及所述元資料快取。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762459414P | 2017-02-15 | 2017-02-15 | |
US62/459,414 | 2017-02-15 | ||
US15/587,286 | 2017-05-04 | ||
US15/587,286 US10282294B2 (en) | 2017-02-15 | 2017-05-04 | Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201832086A TW201832086A (zh) | 2018-09-01 |
TWI744457B true TWI744457B (zh) | 2021-11-01 |
Family
ID=63106399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107100584A TWI744457B (zh) | 2017-02-15 | 2018-01-08 | 對混合記憶體模組進行存取元資料的方法及混合記憶體模組 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10282294B2 (zh) |
JP (1) | JP6916751B2 (zh) |
KR (1) | KR102231792B1 (zh) |
CN (1) | CN108427647B (zh) |
TW (1) | TWI744457B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11397687B2 (en) * | 2017-01-25 | 2022-07-26 | Samsung Electronics Co., Ltd. | Flash-integrated high bandwidth memory appliance |
US10402337B2 (en) | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
KR20210045506A (ko) | 2018-09-17 | 2021-04-26 | 마이크론 테크놀로지, 인크. | 하이브리드 듀얼 인-라인 메모리 모듈에서의 캐시 작업 |
US10761986B2 (en) * | 2018-10-23 | 2020-09-01 | Advanced Micro Devices, Inc. | Redirecting data to improve page locality in a scalable data fabric |
WO2020102064A1 (en) * | 2018-11-12 | 2020-05-22 | Dover Microsystems, Inc. | Systems and methods for metadata encoding |
TWI688859B (zh) | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
CN109800185B (zh) * | 2018-12-29 | 2023-10-20 | 上海霄云信息科技有限公司 | 一种数据存储***中的数据缓存方法 |
KR20200092710A (ko) * | 2019-01-25 | 2020-08-04 | 주식회사 리얼타임테크 | 이기종 스토리지 기반의 데이터베이스 관리시스템에서 하이브리드 색인장치 |
US10853165B2 (en) * | 2019-02-21 | 2020-12-01 | Arm Limited | Fault resilient apparatus and method |
US11061670B2 (en) * | 2019-03-05 | 2021-07-13 | Marvell Asia Pte, Ltd. | Dual-interface flash memory controller with execute-in-place cache control |
US11537521B2 (en) | 2019-06-05 | 2022-12-27 | Samsung Electronics Co., Ltd. | Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM |
CN110688062B (zh) * | 2019-08-26 | 2021-03-30 | 华为技术有限公司 | 一种缓存空间的管理方法及装置 |
EP3812892B1 (en) | 2019-10-21 | 2022-12-07 | ARM Limited | Apparatus and method for handling memory load requests |
TWI739227B (zh) * | 2019-12-03 | 2021-09-11 | 智成電子股份有限公司 | 避免多餘記憶體存取的系統單晶片模組 |
GB2594732B (en) * | 2020-05-06 | 2022-06-01 | Advanced Risc Mach Ltd | Adaptive load coalescing |
CN113934361B (zh) * | 2020-06-29 | 2024-05-03 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法、设备和计算机程序产品 |
CN112084216B (zh) * | 2020-09-16 | 2021-05-11 | 上海嗨普智能信息科技股份有限公司 | 基于布隆过滤器的数据查询*** |
US11914517B2 (en) | 2020-09-25 | 2024-02-27 | Advanced Micro Devices, Inc. | Method and apparatus for monitoring memory access traffic |
CN113204370A (zh) * | 2021-03-16 | 2021-08-03 | 南京英锐创电子科技有限公司 | 指令缓存方法及装置 |
CN114095585B (zh) * | 2022-01-21 | 2022-05-20 | 武汉中科通达高新技术股份有限公司 | 数据传输方法、装置、存储介质及电子设备 |
US11886291B1 (en) * | 2022-07-21 | 2024-01-30 | Dell Products L.P. | Providing cache line metadata over multiple cache lines |
US12032479B2 (en) | 2022-08-10 | 2024-07-09 | Astera Labs, Inc. | Metadata-caching integrated circuit device |
KR20240087273A (ko) | 2022-12-12 | 2024-06-19 | 포항공과대학교 산학협력단 | 하이브리드 메모리 장치 및 그 관리 방법 |
CN116303126B (zh) * | 2023-03-22 | 2023-09-01 | 摩尔线程智能科技(北京)有限责任公司 | 缓存、数据的处理方法及电子设备 |
CN117217977B (zh) * | 2023-05-26 | 2024-07-19 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的数据访问处理方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920477B2 (en) * | 2001-04-06 | 2005-07-19 | President And Fellows Of Harvard College | Distributed, compressed Bloom filter Web cache server |
US20080155229A1 (en) * | 2006-12-21 | 2008-06-26 | Kevin Scott Beyer | System and method for generating a cache-aware bloom filter |
WO2013081937A1 (en) * | 2011-11-30 | 2013-06-06 | Advanced Micro Devices, Inc. | A hardware filter for tracking block presence in large caches |
US20130290607A1 (en) * | 2012-04-30 | 2013-10-31 | Jichuan Chang | Storing cache metadata separately from integrated circuit containing cache controller |
US20140289467A1 (en) * | 2013-03-22 | 2014-09-25 | Applied Micro Circuits Corporation | Cache miss detection filter |
US9396112B2 (en) * | 2013-08-26 | 2016-07-19 | Advanced Micro Devices, Inc. | Hierarchical write-combining cache coherence |
US20160246726A1 (en) * | 2014-08-20 | 2016-08-25 | Sandisk Technologies Inc. | Adaptive host memory buffer (hmb) caching using unassisted hinting |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276744A1 (en) | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8478934B2 (en) | 2010-07-19 | 2013-07-02 | Lsi Corporation | Managing extended RAID caches using counting bloom filters |
US20130173853A1 (en) | 2011-09-26 | 2013-07-04 | Nec Laboratories America, Inc. | Memory-efficient caching methods and systems |
US9268705B2 (en) * | 2012-02-23 | 2016-02-23 | Marvell International Ltd. | Data storage device and method of managing a cache in a data storage device |
US9110792B1 (en) | 2012-03-12 | 2015-08-18 | Emc Corporation | System and method for cache replacement using bloom filter lookahead approach |
US9552301B2 (en) * | 2013-07-15 | 2017-01-24 | Advanced Micro Devices, Inc. | Method and apparatus related to cache memory |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
CN104035887B (zh) * | 2014-05-22 | 2017-10-31 | 中国科学院计算技术研究所 | 一种基于精简配置***的块设备缓存装置及其方法 |
CN104090852B (zh) * | 2014-07-03 | 2017-04-05 | 华为技术有限公司 | 管理混合缓存的方法及设备 |
CA2876466C (en) | 2014-12-29 | 2022-07-05 | Ibm Canada Limited - Ibm Canada Limitee | Scan optimization using bloom filter synopsis |
KR102403202B1 (ko) | 2015-03-13 | 2022-05-30 | 삼성전자주식회사 | 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법 |
CN104809179B (zh) * | 2015-04-16 | 2018-10-02 | 华为技术有限公司 | 访问哈希表的装置和方法 |
-
2017
- 2017-05-04 US US15/587,286 patent/US10282294B2/en active Active
- 2017-09-19 KR KR1020170120595A patent/KR102231792B1/ko active IP Right Grant
- 2017-11-16 CN CN201711136385.4A patent/CN108427647B/zh active Active
-
2018
- 2018-01-08 TW TW107100584A patent/TWI744457B/zh active
- 2018-02-14 JP JP2018023874A patent/JP6916751B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920477B2 (en) * | 2001-04-06 | 2005-07-19 | President And Fellows Of Harvard College | Distributed, compressed Bloom filter Web cache server |
US20080155229A1 (en) * | 2006-12-21 | 2008-06-26 | Kevin Scott Beyer | System and method for generating a cache-aware bloom filter |
WO2013081937A1 (en) * | 2011-11-30 | 2013-06-06 | Advanced Micro Devices, Inc. | A hardware filter for tracking block presence in large caches |
US20130290607A1 (en) * | 2012-04-30 | 2013-10-31 | Jichuan Chang | Storing cache metadata separately from integrated circuit containing cache controller |
US20140289467A1 (en) * | 2013-03-22 | 2014-09-25 | Applied Micro Circuits Corporation | Cache miss detection filter |
US9396112B2 (en) * | 2013-08-26 | 2016-07-19 | Advanced Micro Devices, Inc. | Hierarchical write-combining cache coherence |
US20160246726A1 (en) * | 2014-08-20 | 2016-08-25 | Sandisk Technologies Inc. | Adaptive host memory buffer (hmb) caching using unassisted hinting |
Also Published As
Publication number | Publication date |
---|---|
TW201832086A (zh) | 2018-09-01 |
KR20180094469A (ko) | 2018-08-23 |
CN108427647A (zh) | 2018-08-21 |
JP6916751B2 (ja) | 2021-08-11 |
US20180232310A1 (en) | 2018-08-16 |
JP2018133086A (ja) | 2018-08-23 |
KR102231792B1 (ko) | 2021-03-25 |
US10282294B2 (en) | 2019-05-07 |
CN108427647B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI744457B (zh) | 對混合記憶體模組進行存取元資料的方法及混合記憶體模組 | |
US10241919B2 (en) | Data caching method and computer system | |
JP2018133086A5 (zh) | ||
US20170060434A1 (en) | Transaction-based hybrid memory module | |
US9507705B2 (en) | Write cache sorting | |
CN111858404B (zh) | 地址转换的方法和***、以及计算机可读介质 | |
WO2018090255A1 (zh) | 内存访问技术 | |
US10970208B2 (en) | Memory system and operating method thereof | |
US10936500B1 (en) | Conditional cache persistence in database systems | |
US20080301372A1 (en) | Memory access control apparatus and memory access control method | |
US20220398198A1 (en) | Tags and data for caches | |
US11042316B1 (en) | Reordered data deduplication in storage devices | |
US9329994B2 (en) | Memory system | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
TWI797354B (zh) | 快取記憶體、儲存系統和快取記憶體的逐出方法 | |
US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
US20230026824A1 (en) | Memory system for accelerating graph neural network processing | |
US11409665B1 (en) | Partial logical-to-physical (L2P) address translation table for multiple namespaces | |
US9165088B2 (en) | Apparatus and method for multi-mode storage | |
US20240220415A1 (en) | Tiered memory caching | |
TW202331494A (zh) | 在基於處理器的系統的經壓縮記憶體系統中基於優先順序的快取記憶體行裝入 |