TW201903614A - 使用反向快取表的基於硬體之映射加速 - Google Patents
使用反向快取表的基於硬體之映射加速 Download PDFInfo
- Publication number
- TW201903614A TW201903614A TW107110184A TW107110184A TW201903614A TW 201903614 A TW201903614 A TW 201903614A TW 107110184 A TW107110184 A TW 107110184A TW 107110184 A TW107110184 A TW 107110184A TW 201903614 A TW201903614 A TW 201903614A
- Authority
- TW
- Taiwan
- Prior art keywords
- mapping
- cache memory
- memory
- page
- cache
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/7201—Logical to physical mapping or translation of blocks or pages
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)
- Computer Security & Cryptography (AREA)
Abstract
用於管理資料儲存裝置中之映射資料的設備及方法。可程式化處理器發送尋找指令以定位映射結構之所請求之映射頁並將其放置至第一快取記憶體以服務所接收之主機指令。非可程式化硬體電路搜尋一正向表以判定所請求之映射頁是否在第二快取記憶體中,且若是,則將映射頁載入至第一快取記憶體。若否,硬體電路從後端處理器請求所請求之映射頁,後端處理器從非揮發性記憶體(NVM)(諸如快閃記憶體陣列)擷取所請求之映射頁。硬體電路搜尋反向表及第一快取記憶體以在第二快取記憶體中選定一候選位址用於從NVM擷取的所請求之映射頁,並引導所請求之映射頁之副本儲存於候選位置。
Description
本申請案依據35 U.S.C.119(e)主張2017年3月24日申請之美國臨時專利申請案第62/476,178號之優先權,其內容藉此以引用方式併入本文中。
本發明之各種實施例大致上關於資料儲存裝置中之資料管理。
在一些實施例中,一種設備具有一映射結構,其於一非揮發性記憶體(NVM)中儲存為複數個映射頁,該複數個映射頁將使用者資料區塊之邏輯位址與該等使用者區塊儲存於其中之該NVM中的實體位址關聯起來。一第一快取記憶體儲存該等映射頁之一第一子集的一副本,該等映射頁儲存於該NVM,且一第二快取記憶體儲存該等映射頁之該第一子集的一副本以及該等映射頁之一第二子集的一副本,該等映射頁儲存於該NVM。
一可程式化處理器具有儲存於一關聯之記憶體中的程式,當執行該程式時,發送一尋找指令以定位與一所接收之主機指令 關聯的一所請求之映射頁並將該所請求之映射頁放置進該第一快取記憶體。一非可程式化硬體電路經組態以回應於該尋找指令而引導該所請求之映射頁從該NVM之一擷取、存取一記憶體中之一反向表(reverse table)以識別儲存於該第二快取記憶體之一選定實體位址的一潛在替換映射頁、並回應於該非可程式化硬體電路判定該潛在替換映射頁未於該第一快取記憶體中之該等映射頁之該第一子集中而引導該所請求之映射頁之一副本至該第二快取記憶體之該選定實體位址的一寫入。
特徵化本揭露之各種實施例之其他特徵及優點可鑒於下列詳細討論及隨附圖式而理解。
100‧‧‧資料儲存裝置
102‧‧‧控制器
104‧‧‧記憶體模組
110‧‧‧固態硬碟/裝置/資料儲存裝置
112‧‧‧主機I/F控制器電路/控制器
114‧‧‧核心控制器電路/控制器
116‧‧‧裝置I/F控制器電路/控制器/後端控制器
118‧‧‧快閃記憶體
120‧‧‧SRAM記憶體
122‧‧‧DDR記憶體
124‧‧‧核心處理器/處理器
126‧‧‧映射硬體輔助管理器電路/MHA管理器
128‧‧‧本機記憶體/本機核心記憶體
130‧‧‧韌體程式
132‧‧‧系統映射/映射結構/映射
134‧‧‧映射表
138‧‧‧第一層次映射
140‧‧‧第二層次映射
142‧‧‧第二層次映射項目
144‧‧‧邏輯區塊位址欄
146‧‧‧實體區塊位址欄
148‧‧‧位移欄
150‧‧‧狀態欄
152‧‧‧映射頁
162‧‧‧第一層次映射項目/FLME/項目
164‧‧‧映射頁ID欄
166‧‧‧PBA欄/欄
168‧‧‧位移欄
170‧‧‧狀態欄
180‧‧‧第一層次快取記憶體/第一快取記憶體
182‧‧‧第二層次快取記憶體
184‧‧‧正向表
186‧‧‧反向表
188‧‧‧先進先出列表
190‧‧‧後端處理器
200‧‧‧資料處理程序
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
218‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
226‧‧‧步驟
228‧‧‧步驟
230‧‧‧步驟
232‧‧‧步驟
234‧‧‧步驟
236‧‧‧步驟
圖1提供根據本揭露之各種實施例的一例示性資料儲存裝置的一功能方塊表示。
圖2顯示根據一些實施例的經組態為一固態硬碟(Solid State Drive,SSD)之圖1之資料儲存裝置的態樣。
圖3係圖2之例示性SSD之一核心控制器的一功能方塊表示。
圖4顯示一些實施例中的一多層次映射結構之一例示性格式。
圖5顯示映射結構之一第二層次映射(Second Level Map,SLM)之一例示性格式。
圖6顯示映射結構之一第一層次映射(First Level Map,FLM)之一例示性格式。
圖7繪示一些實施例中的SSD的各種記憶體及記憶體之內容。
圖8係一些實施例中之一核心中央處理單元(Central Processing Unit,CPU)與圖3之核心控制器的非基於處理器之卸載映射硬體輔助(Map Hardware Assist,MHA)管理器之間的通訊的一功能方塊表示。
圖9A及圖9B提供一資料處理程序的一流程圖,其繪示根據本揭露之各種實施例實行的步驟。
本揭露大致上關於資料儲存,且更具體而言關於用於在資料儲存裝置中使用硬體電路來從可程式化處理器卸載快取記憶體管理工作以管理映射資料的方法及設備。
資料儲存裝置係用於以快速且有效的方式儲存並擷取使用者資料。映射結構通常用於追蹤儲存於儲存裝置之主記憶體中的使用者資料的實體位置,使裝置能夠定位並擷取先前儲存之資料。此種映射結構可將從主機接收之資料區塊的邏輯位址與媒體的實體位址關聯,以及與資料相關之其他狀態資訊關聯。
在服務來自主機裝置之存取指令(例如,讀取指令、寫入指令、狀態指令等)方面,映射結構的管理可對儲存裝置控制器造成顯著的處理瓶頸。對於快閃記憶體及其他形式之可抹除媒體尤是如此。在基於快閃記憶體之儲存裝置中(例如SSD),給定資料區塊的各後續接收版本將儲存至快閃記憶體內的不同位置。
本揭露之各種實施例大致上關於資料儲存裝置中之資料管理。如下所述,在一些實施例中,資料儲存裝置具備控制器電路及被表徵為]非揮發性記憶體或NVM的主記憶體。NVM可採取快閃記憶體陣列的形式。
控制器電路提供高層次控制器功能以引導NVM與主機裝置之間的使用者資料傳輸。儲存於NVM之使用者資料區塊係由具有複數個映射頁之映射結構描述,該複數個映射頁描述主機裝置所使用的邏輯位址與NVM的實體位址之間的關係。映射結構可以是多層次映射結構或者可以採取其他形式。
控制器電路包括可程式化處理器,可程式化處理器使用儲存於記憶體位置的程式(例如,韌體)來處理主機存取指令。用於資料且與各接收之存取指令關聯的一或多個映射頁需要在可服務指令之前載入至多快取記憶體結構的第一快取記憶體。
多快取記憶體結構包括第一快取記憶體及至少一第二快取記憶體。亦可使用額外的快取記憶體層次。映射頁的小(第一)子集係保持於第一快取記憶體中。第二快取記憶體儲存映射頁的較大子集,因此第一快取記憶體中之每個映射頁亦保持於第二快取記憶體中。換句話說,第一快取記憶體儲存映射頁的第一子集,且第一快取記憶體儲存映射頁的第一子集及第二子集。所有映射頁(例如,整個映射結構)亦保持於NVM。
可程式化處理器將特定操作卸載至非基於處理器之硬體電路以定位映射頁並將映射頁載入至第一快取記憶體。回應於來自處 理器的尋找指令,硬體電路首先執行搜尋(例如,存取操作)以判定所請求之(第一)映射頁是否已留駐於第一快取記憶體中。若是,則硬體電路將第一快取記憶體內之關聯位址(快取記憶體線路)通知給處理器。
在第一快取記憶體上發生快取未中(例如,所請求之映射頁未留駐於第一快取記憶體中)之事件中,硬體電路搜尋記憶體中的正向表(forward table),正向表識別與儲存於第二快取記憶體之映射頁之各者關聯的邏輯位址。若正向表指示所請求之映射頁在第二快取記憶體中,則硬體電路將所請求之映射頁從第二快取記憶體複製至第一快取記憶體並通知處理器。由於第一快取記憶體經常是滿的,至少一既存映射頁可能需要從第一快取記憶體被逐出(evicted)以騰出空間給所請求之映射頁。如有必要,處理器可將第一快取記憶體中的受害(替換)映射頁連同尋找指令識別為由所請求之映射頁替換。
在在第二快取記憶體上發生快取未中(例如,所請求之映射頁未位於第二快取記憶體中)之事件中,硬體電路引導二個並行操作:從NVM(例如,快閃記憶體)擷取所請求之映射頁、及在第二快取記憶體中選定將由所請求之映射頁替換的候選(第二)映射頁。
為了從NVM擷取所請求之映射頁,硬體電路存取映射結構之第一層次映射以定位所請求之映射頁的快閃記憶體位址,並且發送請求至控制器的後端處理器以將所請求之映射頁從NVM擷取至本機記憶體中。
為了識別第二快取記憶體中將被所請求之映射頁替換的潛在替換映射頁,硬體電路識別第二快取記憶體中選定之實體位址,並在本機記憶體中搜尋反向表。反向表識別該複數個映射頁之各者儲存於第二快取記憶體中的實體位址。因此,反向表識別儲存於選定之實體位址的潛在替換映射頁。硬體電路搜尋第一快取記憶體以判定潛在替換映射頁是否亦留駐於第一快取記憶體。若是,選定第二快取記憶體中之新實體位址,並重複此處理直到潛在替換映射頁被識別為替換候選者。先進先出(first-in-first-out,FIFO)列表或類似機制可用於追蹤並選定候選實體位址,用於從第二快取記憶體逐出該候選實體位址的內容(例如,在此位置上以新頁複寫)。潛在替換頁可自本機記憶體中之先進先出列表供給,本機記憶體由可程式化處理器管理。
先進先出機制可採取多種形式。在一些例子中,可用計數器從第一位置0繞(wrap)至最終位置N-1然後返回0。利用計數器值,使得系統替換位置0、然後位置1、然後位置2,諸如此類直到位置N-1,在位置N-1之後計數再次返回0。跳過任何判定為在第一快取記憶體中的位置。若給定操作於第一計數值結束(例如,更新位置3),則下一個評估循環於序列中下一個計數值(例如,位置4)開始。
前述操作係閉鎖且原子的。硬體電路可將映射頁實體地寫入各別的第一及第二快取記憶體,或者可建立指標,可程式化處理器可用該指標來定位並使用所請求之映射頁。如此一來,各種映射定位功能可由分開之硬體實行而沒有必要佔用可程式化處理器,使處理 器能夠執行較高優先順序的工作並加速儲存裝置的資料傳輸率I/O性能。
本揭露之上述以及其他特徵及優點可從檢視圖1開始理解,圖1提供資料儲存裝置100的簡化功能方塊表示。
裝置100包括控制器102及記憶體模組104。控制器102提供裝置100高層次控制,並可經組態為若干電路元件,該若干電路元件包括具有本機記憶體中之關聯程式的可程式化處理器以及一或多個非基於處理器之硬體電路。
記憶體模組104可經配置為一或多個非揮發性記憶體元件,例如可旋轉記錄媒體(磁碟)及固態記憶體陣列。雖然圖1中顯示分開的控制器102,但此非必然,由於替代實施例可將任何必要控制器功能直接併入記憶體模組。
記憶體模組104作用為來自主機裝置之使用者資料的主儲存。主機裝置可以是任何與儲存裝置100通訊的裝置。舉例而言但不侷限於此,可將儲存裝置實體地併入主機裝置,或者,主機裝置可透過使用任何合適協定之網路與主機裝置通訊。在一些實施例中,儲存裝置100經組態以形成大量儲存環境中之多裝置儲存殼體的一部份,大量儲存環境例如分布式物件儲存系統、基於雲端之計算環境、RAID(redundant array of independent disks)系統等。
圖2係根據一些實施例之資料儲存裝置110的功能方塊表示。裝置110大致上對應至裝置100並被表徵為固態硬碟(SSD),該固態硬碟將二維(2D)或三維(3D)NAND快閃記憶體用作主記憶體儲 存。此僅出於繪示之目的而非限制。可根據需求將其他電路及組件併入SSD 110,但為清楚之目的而在圖2中省略。可將圖2之電路併入至單一積體電路(integrated circuit,IC),例如系統單晶片(system on chip,SOC),或圖2之電路可涉及多個連結的IC裝置。
圖1之控制器功能由主機介面(interface,I/F)控制器電路112、核心控制器電路114、及裝置I/F控制器電路116實行。主機I/F控制器電路112有時可稱作前端控制器或處理器,且裝置I/F控制器電路116可稱作後端控制器或處理器。各控制器112、114、及116包括分開的可程式化處理器,可程式化處理器具有合適記憶體位置中之關聯的程式(例如,韌體,FW)以及各種硬體元件,以執行資料管理及傳輸功能。此僅繪示一實施例。在其他實施例中,單一可程式化處理器(或少於三個可程式化處理器)可經組態以用合適記憶體位置中之關聯FW實行前端處理、核心處理、及後端處理之各者。
前端控制器112處理與主機裝置(未分開顯示)的主機通訊。後端控制器116以快閃記憶體118管理資料讀取/寫入/抹除(R/W/E)功能。快閃記憶體118有時亦稱作非揮發性記憶體(NVM)或主記憶體,可由多個快閃晶片(flash die)組成以促進平行資料操作。核心控制器114亦稱作主控制器或中間控制器,執行裝置110的主要資料管理及控制。
圖3顯示一些實施例中的圖2之核心控制器114。可使用其他構形,此僅為繪示性而非限制性。SRAM記憶體120係專用為緩衝記憶體空間的揮發性記憶體,在與快閃記憶體118之資料傳輸操 作期間暫時地儲存使用者資料。DDR(DRAM/SDRAM)記憶體122係揮發性記憶體,其亦可用作緩衝記憶體以及儲存系統所使用的其他資料。各別記憶體120、122可實現為單一積體電路(IC)或可分布於多個實體記憶體裝置,當此等實體記憶體裝置結合時提供全面可用的記憶體空間。
核心處理器(中央處理單元,CPU)124係可程式化處理器,其提供核心控制器114之主處理引擎。映射硬體輔助(MHA)管理器電路126係非基於處理器之卸載硬體電路,其依照核心記憶體124引導而實行卸載功能,如下所述。
本機記憶體係大致上標示於128。此記憶體預想為包含一或多個離散的本機記憶體,該一或多個離散的本機記憶體可用於儲存核心控制器所使用的各種資料結構,包括核心處理器126所使用的韌體(FW)程式130、系統映射132、及各種映射表134。
此時區分用語「處理器(processor)」與例如「非基於處理器(non-processor based)」、「非可程式化(non-programmable)」、「硬體(hardware)」之用語將會有幫助。如本文中所使用,用語「處理器」意指CPU或類似的可程式化裝置,其執行指令(例如FW)以實行各種功能。用語「非處理器」、「非基於處理器」、「非可程式化」、「硬體」及類似者係以MHA管理器126例示,並意指不使用儲存於記憶體中之程式,但取而代之的是藉由各種硬體電路元件(邏輯閘、FPGA等)之方式來組態以操作的電路。MHA管理器126作用如狀態機或其他固線式裝置。管理器具有各種操作能力及功能,例如 直接記憶體存取(direct memory access,DMA)、搜尋、載入、比較等。
映射132在圖4中更完整地顯示為多層次映射,具有第一層次映射138及第二層次映射140。雖然SSD 110運用雙層次映射,但亦容易使用其他映射結構,包括單一層次映射或具有多於雙層次的多層次映射。
第二層次映射(SLM)140的實例配置係繪示於圖5。SLM 140由若干第二層次映射項目142(SLME或項目)組成,第二層次映射項目描述留駐於或可被寫入至快閃記憶體118的使用者資料的個別區塊。在本實例中,區塊亦稱作映射單元(map unit,MU),雖然亦可使用其他尺寸,區塊的長度設為4KB(4096位元組)。SLM 140描述可由SSD 110容納之區塊的邏輯位址之整個可能範圍,即使特定邏輯位址未曾被使用或未被使用。
各項目142包括若干欄,包括邏輯區塊位址(logical block address,LBA)欄144、實體區塊位址(physical block address,PBA)欄146、位移(offset)欄148、及狀態欄150。可使用其他格式。LBA值係從最小值至最大值之序列(例如從LBA 0至LBA N,其中N係由SDD之總資料容量判定的某個大數字)。可使用其他邏輯定址方案,例如關鍵值、虛擬區塊位址等。雖然LBA值可形成項目的一部份,在其他實施例中,LBA可替代地用作進入關聯之資料結構的索引,以定位各種項目。
在一般的快閃記憶體陣列中,資料區塊係配置為沿著特定抹除區塊中之快閃記憶體單元列而被寫入的頁。PBA可用陣列、晶元、廢料收集單元(garbage collection unit,GCU)、抹除區塊、頁等來表示。位移值可以是沿著記憶體之選定頁的位元位移。狀態值可指示關聯之區塊的狀態(例如有效、無效、零等等)。
項目142之群組係配置成較大的資料組,在此稱作映射頁152。某選定數目之項目(以變數A表示)係於各映射頁中提供。在本例子中,各映射頁144具有總共100個項目。可在各頁中進行項目的其他群組化,包括冪為2的數目。
第二層次映射(SLM)140構成系統中所有映射頁152的配置。預想會需要某大數目之映射頁B來描述SSD的整個儲存容量。各映射頁具有關聯之映射ID值,映射ID值可以是從0至B的連續數。SLM 140係儲存於NVM(快閃記憶體118)中,儘管SLM可能跨越不同組之各種晶片而寫入,而不是在快閃記憶體中的集中位置。
圖4之第一層次映射(FLM)138的配置係顯示於圖6。FLM 138使SSD 110能夠定位儲存至快閃記憶體的各種映射頁152。為此,FLM 138由第一層次映射項目162(FLME或項目)組成。各FLME 162具有映射頁ID欄164、PBA欄166、位移欄168、及狀態欄170。映射ID已於上列詳述。欄166中之PBA描述關聯之映射頁的位置。位移值運作為如先前之沿著特定頁或其他位置的位元位移。狀態值可與第二層次映射中之狀態值相同,或者根據需求可與映射頁本身的狀態有關。如先前,雖然圖6之格式顯示映射ID形成第一層次 映射中之各項目的一部分,在其他實施例中,映射ID可替代地用作進入資料結構的索引,以定位關聯之項目。
第一層次映射(FLM)138構成從項目0至項目C之所有項目162的配置。在一些例子中,雖然這些值可以不同,B會等於C。存取FLM 138允許藉由映射ID搜尋快閃記憶體118內所欲映射頁的位置。從快閃記憶體擷取所欲映射頁將提供該映射頁中的第二層次映射項目,且然後基於關聯之第二層次項目中之資訊可識別並擷取個別LBA。
圖7顯示一些實施例中之SSD 110所使用的各種記憶體位置的配置。這些包括上述圖2至圖3中的快閃記憶體118及本機核心記憶體128以及第一層次快取記憶體(FLC)180及第二層次快取記憶體(SLC)182。
第一層次快取記憶體180亦稱作第一快取記憶體及等級1快取記憶體,且預想為分開的記憶體位置,例如核心控制器的板上(on-board)記憶體。如上所述,待作用為服務暫停主機存取指令的映射頁係載入至第一快取記憶體。圖7顯示總數目D之映射頁係留駐於第一快取記憶體180中。預想D會是相對小的數目,例如D=128,儘管也可以使用其他數目。第一快取記憶體的大小是固定的。
第二層次快取記憶體182亦稱作第二快取記憶體及等級2快取記憶體,且預想為構成DDR記憶體122之至少一部分(參照圖2)。可使用其他記憶體位置。第二快取記憶體的大小可以是可變的或固定的。第二快取記憶體儲存至多最大數目之映射頁E,其中E是顯 著大於D的某數目(E>D)。如上所述,第一快取記憶體中之D個映射頁之各者亦儲存於第二快取記憶體。
快閃記憶體118主要用於儲存映射結構132所描述的使用者資料區塊,但此儲存並未在圖7中標示。圖7確實顯示快閃記憶體中儲存第一層次映射(FLM)138的一或多個備份副本,及第二層次映射(SLM)140的一完整副本。為了冗餘性,第二層次映射(SLM)140的備份副本亦可儲存至快閃記憶體,但在可直接存取此類冗餘副本之前,需要FLM 138的再組態。如上所述,FLM 138指向快閃記憶體中之SLM 140之映射頁的主要副本的位置。
本機核心記憶體128包括FLM 138的現用副本,(以下述之方法)當需要時,由HMA管理器(硬體電路)126存取該現用副本,以如所需地從快閃記憶體擷取映射頁。記憶體128亦儲存圖3之映射表134,該映射表在圖7中經配置為正向表及反向表。
正向表(亦稱作第一表)係一資料結構,其識別與儲存於第二快取記憶體182之映射頁之各者關聯的邏輯位址。反向表(亦稱為第二表)識別映射頁之各者儲存於第二快取記憶體中的實體位址。
正向表可大致上視為LBA至DDR之轉換表。藉由輸入選定之LBA(或與所欲邏輯位址關聯的其他輸入值),可定位該項目在第二快取記憶體(此例子中係DDR記憶體)中的關聯位置。反向表可大致上視為DDR至LBA之轉換表。藉由輸入第二快取記憶體 (DDR記憶體)內選定之實體位址,可定位關聯之LBA(或與所欲邏輯位址關聯的其他值)。
圖8係功能性表示,顯示圖3之核心CPU(處理器)124與MHA管理器(硬體電路)126之間的互動。預想圖8之操作係回應於接收到選定之主機存取指令(例如讀取指令)而實行,以從快閃記憶體118將特定使用者資料區塊(例如,LBA)擷取至SRAM緩衝區122(圖2),暫停傳輸至主機。
為了服務主機存取指令,用於所請求之使用者資料區塊的一或多個映射頁需要被載入至第一快取記憶體180。處理器124將此操作卸載至硬體電路126,此舉係藉由發送尋找指令至硬體電路以尋找選定之(第一)映射頁並確保所請求之映射頁於第一快取記憶體中。
在一些例子中,處理器124可識別第一快取記憶體中之替換映射頁,該替換映射頁必要時可由硬體電路126複寫以使所請求之映射頁進入第一快取記憶體。預想處理器會維持對第一快取記憶體中之映射頁逐出的最終控制,因為映射頁可能是已變更(dirty)而需要清理(例如,基於使用者資料位置的變化而更新至映射結構等),之後映射頁可安全地自第一快取記憶體釋放。
回應於尋找指令,硬體電路126可存取各種記憶體位置、資料結構、及處理器,包括第一層次快取記憶體(FLC)180、第二層次快取記憶體(SLC)182、第一層次映射(FLM)138、快閃記憶體 118、正向表(在圖8中以184標示)、反向表(以186標示)、先進先出(FIFO)列表188、及後端處理器190。
先進先出列表188可以是基於使用的第二快取記憶體位址列表,例如最近最少使用(lest recently used,LRU)方案。後端處理器190包含後端控制器116中的可程式化處理器,此可程式化處理器使用關聯之程式(FW)以實行快閃記憶體的程式化及讀取操作。硬體電路126會將讀取請求引導至後端處理器190,使得處理器可實行必要的資料調節(conditioning)(例如解碼、解壓縮、錯誤校正等)以從快閃記憶體存取選定之映射頁,而非直接對快閃記憶體存取所請求之映射頁。
核心處理器124維持第一層次快取記憶體180之內容的高層次控制,因為這些項目表示與持續存在且暫停之資料傳輸有關的最有價值的映射頁。取決於核心處理器124以決定第一層次快取記憶體中哪些頁維持在快取記憶體中而那些可供逐出。此類逐出直到核心處理器完成與映射頁關聯之所有剩餘工作才會發生。若核心處理器124將第一快取記憶體中之替換映射頁識別至硬體電路126,在一些例子中,硬體電路可在第一快取記憶體中以新的所請求之頁進行複寫替換頁,因此可程式化核心處理器不須執行此操作。
硬體電路126具有對第二層次快取記憶體182內容的某控制措施,取決於核心處理器授權此種權力的程度。回顧第一層次快取記憶體180中每一映射頁之副本亦儲存於第二層次快取記憶體182,但反之不亦然。將一新映射頁(從第二層次快取記憶體或從其他 快閃記憶體)晉升至第一層次快取記憶體通常會需要替換第一層次快取記憶體中一既存映射頁,因為出於效率的緣故,第一層次快取記憶體通常會是(或總是)滿的。新映射頁至第一層次快取記憶體的複寫由核心處理器控制,即使硬體電路是實際將新映射頁寫入至第一層次快取記憶體的實體,核心處理器告訴硬體電路將新映射頁放置於第一層次快取記憶體中的何處。
在此之前,從快閃記憶體擷取新映射頁需要將新映射頁寫入至第一層次快取記憶體及第二層次快取記憶體兩者。經引導至第一層次快取記憶體的副本係提供至核心處理器所識別的位址。經引導至第二層次快取記憶體的副本係寫入至由硬體電路基於圖8之FIFO列表188內容而最終判定的位址。
FIFO列表188係第二層次快取記憶體182中可供作為逐出候選之候選位置(位址)的資料結構的實例,該資料結構由核心控制器124維持。此列表係以任何數量之適當方式產生,例如以最近最少使用(LRU)為基礎。硬體電路126從FIFO列表識別一選定之位址、使用反向表186以識別儲存於該選定之位址的映射頁、搜尋第一層次快取記憶體180以查看位於該選定之位址的該映射頁是否留駐於第一層次快取記憶體中。若是,識別第二層次快取記憶體中不同的候選位址,並重複該過程。若否,硬體電路將該選定之位址識別為用於儲存新映射頁的位置,從而將新映射頁引導至寫入至此位置,此寫入由硬體電路或核心控制器實行。
圖9A及圖9B根據一些實施例提供一資料處理程序200,其繪示圖8之配置所實行的步驟。此程序僅是例示性而非限制性,而各種步驟可以經附加、省略、以不同順序或由不同模組實行等。通常程序中之各步驟係具備一「FW」或「HW」識別符。FW意指可程式化處理器透過執行韌體而實行的步驟,而為方便起見,其描述為由韌體實行。HW意指硬體電路126實行的步驟,因此描述為由硬體實行。
接收到主機存取指令後,程序藉由韌體在步驟202開始。回應於此,在步驟204發送第一指令至硬體以定位與指令關聯之選定之映射頁(「所請求之映射頁」)且必要時將該映射頁載入至第一快取記憶體180。如所需要,亦可將當前留駐於第一快取記憶體中的替換映射頁識別為逐出/複寫。
.在步驟206硬體針對所請求之映射頁進行搜尋第一層次快取記憶體(FLC或第一快取記憶體)。決定步驟208判定是否取得快取命中(例如,所請求之映射頁事實上留駐於第一快取記憶體)。若是,則流程走至步驟210,在步驟210,硬體將第一快取記憶體中之實體位址通知給韌體。然後在步驟212,韌體接著使用映射頁以服務指令,且流程結束於步驟214。
若步驟208判定為快取未中(例如,選定之映射頁並未留駐於第一快取記憶體),則在步驟216硬體繼續存取正向表184以判定選定之映射頁是否位於第二層次快取記憶體(SLC)。決定步驟218判定是否在第二快取記憶體上取得快取命中。若是,流程走至步驟 220,在步驟220,硬體將選定之映射頁複製至第一層次快取記憶體(FLC),複寫韌體所識別的替換映射頁。然後如先前實行步驟210及步驟212。
若判定在第二快取記憶體上快取未中(例如,選定之映射頁並未留駐於第二快取記憶體),則流程跟隨標示「A」至圖9B,圖9B中硬體採取二個並行路徑。
第一路徑開始於步驟222,在步驟222硬體存取第一層次映射(FLM)138以定位選定之映射頁的快閃記憶體位址(參照圖6)。在步驟224,硬體將快閃記憶體位址連同從快取記憶體位址之位置擷取之選定映射頁的請求供給至後端處理器190。在步驟226接收所擷取之映射頁。
第二路徑開始於步驟228,在步驟228,硬體選定第二層次快取記憶體(SLC)182中之潛在替換位置(實體位址)以容納從快閃記憶體擷取之映射頁。如上所述,此可利用FIFO列表188或類似資料結構來實現。在步驟230,硬體搜尋反向表186以識別哪個映射頁位於替換位置,並搜尋第一層次快取記憶體(FLC)180以判定是否此映射頁位於第一快取記憶體。若是,決定步驟234,選定新的潛在替換位置並且重複流程直到找到合適的替換位置候選。
之後,二個路徑在步驟236會聚,在步驟236,硬體將從快閃記憶體擷取之選定之映射頁複製至潛在替換映射頁中的候選替換位置,且程序跟隨標示「B」回至圖9A用於執行步驟220、步驟210、及步驟212。
應注意,若硬體經組態以實際執行第二快取記憶體中之逐出,則第二快取記憶體之內容的管理可視為在硬體的控制之下。替代地,第一快取記憶體及第二快取記憶體兩者之管理可由處理器(韌體)維持,致使韌體作出最終判定。在兩個例子中,通知是由硬體傳至第二快取記憶體中候選替換映射頁的韌體。
可見到,在第二快取記憶體中維持部分映射可顯著地增強映射頁至第一快取記憶體的載入,因為後端處理器不須涉入從快閃記憶體擷取映射頁。即使韌體最終決定哪些映射頁留在第二快取記憶體中,由硬體表使用反向表的評估可顯著地減少韌體作判定上的工作負擔。
上列敘述已將可程式化處理器設想為直接將尋找指令傳遞給硬體電路,但並非必需。其他實施例將指令處理設想為使用額外非可程式化硬體,使得硬體與硬體在處理中對話,儘管是在高層次韌體的控制下。
如上所述,硬體電路可經組態以從快閃記憶體直接擷取所請求之映射頁,而非發送請求至後端處理器(後端處理器可係與核心處理器相同之處理器)。
雖然已將使用者資料視為尋找指令的對象,但亦可擷取其他形式的資料,例如描述系統狀態的後設資料,例如但不侷限於與系統中之使用者資料有關的資訊。
硬體電路的一態樣係自動從第二快取記憶體選定逐出之適合候選的第二快取記憶體項目的能力。反向表可採取任何合適的格 式以識別此類候選,並可包括可提供所需資訊的鏈結列表或某其他簡單結構。因此,參考反向表未必侷限於一真實查找表,而可以是適合執行如上述按位址在第二快取記憶體中識別映射頁的後設資料的任何形式。在其他實施例中,逐出的候選可由硬體電路識別,且硬體電路可實際自動管理逐出而未必要通知可程式化處理器,諸如此類。
現在將了解到在本文中揭示的各種實施例可提供若干優點。使用一卸載硬體電路系統以在多層次快取記憶體中管理映射資料可以顯著地加速映射載入功能並增加處理器效率。雖然各種顯示例已設想具有快閃記憶體之固態硬碟的環境,但亦容易使用其他構形,包括不同形式的儲存記憶體、不同數目的快取記憶體等。
須了解的是,儘管上列敘述中已提出本揭露之各種實施例的眾多特徵及優點連同本揭露之各種實施例的結構及功能的細節,但此詳細說明僅是說明性,且可在細節上、尤其本揭露之原理內之部件之結構及配置方面作出改變,其變化範圍達表述附加之申請專利範圍所用之用語的廣泛通用意義所指示的全範圍。
Claims (20)
- 一種設備,其包含:一映射結構,其於一非揮發性記憶體(NVM)中儲存為複數個映射頁,該複數個映射頁將使用者資料區塊之邏輯位址與該等使用者區塊儲存於其中之該NVM中的實體位址關聯起來;一第一快取記憶體,其儲存該等映射頁之一第一子集的一副本,該等映射頁被儲存於該NVM;一第二快取記憶體,其儲存該等映射頁之該第一子集的一副本以及該等映射頁之一第二子集的一副本,該等映射頁儲存於該NVM;一可程式化處理器,其具有儲存於一關聯之記憶體中的程式,當執行該程式時,發送一尋找指令以定位與一所接收之主機指令關聯的一所請求之映射頁並將該所請求之映射頁放置進該第一快取記憶體;及一非可程式化硬體電路,其經組態以回應於該尋找指令而引導該所請求之映射頁從該NVM之一擷取、存取一記憶體中之一反向表(reverse table)以識別儲存於該第二快取記憶體之一選定實體位址的一潛在替換映射頁、並回應於該非可程式化硬體電路判定該潛在替換映射頁未於該第一快取記憶體中之該等映射頁之該第一子集中而引導該所請求之映射頁之一副本至該第二快取記憶體之該選定實體位址的一寫入。
- 如請求項1之設備,其進一步包含該第二快取記憶體中之實體位址的一先進先出(FIFO)列表,該FIFO列表作為一記憶體中之一資料結構,該非可程式化硬體電路進一步經組態以從該FIFO列表選定一第一實體位址為該選定實體位址、索引該反向表以將該潛在替換映射頁識別為儲存於該第一實體位址之一第一映射頁、並搜尋該第一快取記憶體以判定該第一映射頁並非儲存於該第一快取記憶體中之映射頁之該第一子集的一成員。
- 如請求項2之設備,其中回應於該非可程式化硬體電路判定該潛在替換映射頁是儲存於該第一快取記憶體中映射頁之該第一子集的一成員,該非可程式化硬體電路進一步經組態以從該FIFO列表選定一第二實體位址為該選定實體位址、索引該反向表以將該潛在替換映射頁識別為儲存於該第二實體位址之一第二映射頁、並搜尋該第一快取記憶體以判定該第二映射頁並非儲存於該第一快取記憶體中之映射頁之該第一子集的一成員。
- 如請求項1之設備,其中該非可程式化硬體電路藉由執行該所請求之映射頁之一副本至該第二快取記憶體之該選定實體位址的該寫入,引導該所請求之映射頁之該副本至該第二快取記憶體之該選定實體位址的該寫入。
- 如請求項1之設備,其中該非可程式化硬體電路藉由提供該選定實體位址之一通知至該可程式化處理器,引導該所請求之映射頁之一副本至該第二快取記憶體之該選定實體位址的該寫入,其後係藉由 該可程式化處理器之該所請求之映射頁之該副本至該選定實體位址的該寫入。
- 如請求項1之設備,其中該反向表係一轉換表,該轉換表藉由該第二快取記憶體中之實體位址來關聯邏輯位址,使得藉由將該第二快取記憶體之一選定實體位址輸入至該反向表,該反向表指示儲存於彼選定實體位置的對應的該映射頁。
- 如請求項1之設備,其中該非可程式化硬體電路進一步經組態以搜尋一記憶體中之一正向表(forward table),該正向表係儲存為一資料結構,該資料結構係配置為一轉換表,該轉換表將該第二快取記憶體中之實體位址關聯至與該等映射頁關聯之邏輯位址,使得藉由將一選定邏輯位址輸入至該正向表,該正向表指出與該選定邏輯位址關聯之該映射頁儲存於其中之該第二快取記憶體中的對應之該選定實體位址。
- 如請求項1之設備,其中該非可程式化硬體電路進一步經組態以回應於該尋找指令且回應於該第一快取記憶體之一快取命中,而搜尋該第一快取記憶體並將該所請求之映射頁儲存於其中之該第一快取記憶體的一實體位址通知該可程式化處理器。
- 如請求項1之設備,其中該可程式化處理器進一步經組態以將該第一快取記憶體中之一第二潛在替換映射頁結合該尋找指令識別至該非可程式化硬體電路,其中該非可程式化硬體電路進一步經組態以用該所請求之映射頁複寫該第一快取記憶體中之該第二潛在替換映射頁。
- 如請求項1之設備,其中該可程式化處理器係一核心可程式化處理器,該核心可程式化處理器提供一資料儲存裝置之整體處理控制,且該設備進一步包含一後端可程式化處理器,該後端可程式化處理器具有儲存於一關聯之記憶體中的程式,並經組態以引導程式化及讀取操作以在該NVM與一緩衝記憶體之間傳輸資料,其中該非可程式化硬體電路進一步經組態以回應於該第二快取記憶體對於該所請求之映射頁的一快取未中,而發送一讀取請求至該後端可程式化處理器以從該NVM擷取該所請求之映射頁。
- 如請求項1之設備,其中回應於一正向表指示該所請求之映射頁係於該第二快取記憶體中而根據該所請求之映射頁在該第二快取記憶體中的位置,該非可程式化硬體電路進一步經組態以執行下列之至少一選定者:將該所請求之映射頁從該第二快取記憶體複製至該第一快取記憶體、或將識別該所請求之映射頁在該第二快取記憶體中之實體位置的一指標提供至該可程式化記憶體。
- 一種資料儲存裝置,其包含:一非揮發性記憶體(NVM),其儲存一映射結構,該映射結構經配置為總數個映射頁,該總數個映射頁將使用者資料區塊之邏輯位址與該等使用者資料區塊儲存於其中之該NVM的實體位址關聯起來;一第一快取記憶體,其儲存少於該總數之第一數量個映射頁;一第二快取記憶體,其儲存少於該總數之第二數量個映射頁,該第二數量個映射頁包括該第一數量個映射頁之各者; 一正向表,其儲存為一記憶體中之一資料結構,該資料結構識別與儲存於該第二快取記憶體中之該第二數量個映射頁之各者關聯的邏輯位址;一反向表,其儲存為一記憶體中之一資料結構,該資料結構識別該第二數量個映射頁之各者儲存於其中之該第二快取記憶體的實體位址;一可程式化處理器,其具有儲存於關聯之一記憶體中的程式,經組態以回應於從一主機接收一主機存取指令而發送一尋找指令以尋找一所請求之映射頁;及一硬體電路,其表徵為一非基於處理器之映射硬體輔助管理器電路,經組態以:回應於該尋找指令,而搜尋該第一快取記憶體並將該所請求之映射頁儲存於其中之該第一快取記憶體的一實體位址通知該可程式化處理器;回應於該第一快取記憶體之一快取未中而搜尋該正向表,並回應於該正向表指示該所請求之映射頁係於該第二快取記憶體中而將該所請求之映射頁從該第二快取記憶體複製至該第一快取記憶體;及回應於該第二快取記憶體之一快取未中而搜尋該反向表以識別儲存於該選定實體位址的一第二映射頁、搜尋該第一快取記憶體以判定該第二映射頁未儲存在該第一快取記憶體 中、並將該潛在替換映射頁作為從該第二快取記憶體逐出之一候選而識別至該可程式化處理器。
- 如請求項12之資料儲存裝置,其中該可程式化處理器進一步經組態以將該第一快取記憶體中之一潛在替換映射頁結合該尋找指令識別至該非可程式化硬體電路,其中該硬體電路進一步經組態以用該所請求之映射頁複寫該第一快取記憶體中之該潛在替換映射頁。
- 如請求項12之資料儲存裝置,其中該可程式化處理器係一核心可程式化處理器,該核心可程式化處理器提供一資料儲存裝置之整體處理控制,且該資料儲存裝置進一步包含一後端可程式化處理器,該後端可程式化處理器具有儲存於一關聯之記憶體中的程式,並經組態以引導程式化及讀取操作以在該主記憶體與一緩衝記憶體之間傳輸資料,其中該硬體電路進一步經組態以回應於該第二快取記憶體對於該所請求之映射頁的一快取未中而存取該映射結構以識別該所請求之映射頁位於其中之該主記憶體中的一主記憶體實體位置,並將該主記憶體實體位置結合至該後端可程式化處理器的一讀取請求供應至該後端處理器以從該主記憶體擷取該所請求之映射頁。
- 如請求項12之資料儲存裝置,其進一步包含一先進先出(FIFO)列表,該FIFO列表作為一本機記憶體中之一資料結構,該資料結構由該硬體電路存取以將該第二快取記憶體中之該選定實體位址識別為至該反向表之一輸入,該FIFO列表以最近最少使用(LRU)為基礎配置該第二快取記憶體中之位置。
- 如請求項12之資料儲存裝置,其中該映射結構包含一多層次映射,該多層次映射包含一第一層次映射及一第二層次映射,該第二層次映射儲存於該主記憶體並包含複數個映射頁,該複數個映射頁包括該所請求之映射頁,該第一層次映射包含識別該複數個映射頁儲存於該主記憶體中之實體位置的項目,且其中第一數量個之該第二層次映射之該等映射頁儲存於該第一快取記憶體,第二、較大數量個之該第二層次之該等映射頁儲存於該第二快取記憶體,且儲存於該第一快取記憶體的各映射頁亦儲存於該第二快取記憶體。
- 如請求項12之資料儲存裝置,其表徵為一固態硬碟(SSD),其中該主記憶體包含一快閃記憶體陣列。
- 一種方法,包含:由一可程式化處理器發送一尋找指令以定位一映射結構之一所請求之映射頁並將該所請求之映射頁放置進一第一快取記憶體以服務一所接收之主機指令,該可程式化處理器具有儲存於一關聯之記憶體中的程式,該所請求之映射頁將一使用者資料區塊之一邏輯位址與該使用者資料區塊儲存於其中之一非揮發性記憶體(NVM)中的一實體位址關聯起來;使用一非可程式化硬體電路以:回應於一正向表指示該所請求之映射頁係於一第二快取記憶體中並回應於該第一快取記憶體之一快取未中,而搜尋該正向表並將該所請求之映射頁從該第二快取記憶體複製至該第一快取記憶體,該正向表係作為一資料結構儲存於一記 憶體,該資料結構識別與儲存於該第二快取記憶體之該映射結構之複數個映射頁之各者關聯的邏輯位址;及識別該第二快取記憶體中之一選定實體位址,搜尋一反向表以識別儲存於該選定實體位址之一潛在替換映射頁,搜尋該第一快取記憶體以判定該潛在替換映射頁是不儲存於該第一快取記憶體,並引導該所請求之映射頁至該第二快取記憶體中之該選定實體位址的複寫。
- 如請求項18之方法,其進一步包含使用該非可程式化硬體電路以回應於該尋找指令且回應於該第一快取記憶體之一快取命中而搜尋該第一快取記憶體並將該所請求之映射頁儲存於其中之該第一快取記憶體的一實體位址通知該可程式化處理器。
- 如請求項18之方法,其進一步包含操作該非可程式化硬體電路以:回應於該第二快取記憶體對於該所請求之映射頁的一快取未中而存取該映射結構以識別該所請求之映射頁位於其中之該NVM中的一實體位置,並將該實體位置連同一讀取請求供應至一後端處理器以從該NVM擷取該所請求之映射頁,該後端處理器包含一第二可程式化處理器,該第二可程式化處理器具有儲存於一記憶體中的關聯之程式以將資料程式化至該NVM及從該NVM讀取資料。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201762476178P | 2017-03-24 | 2017-03-24 | |
| US62/476,178 | 2017-03-24 | ||
| US15/605,442 US10126964B2 (en) | 2017-03-24 | 2017-05-25 | Hardware based map acceleration using forward and reverse cache tables |
| US15/605,442 | 2017-05-25 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201903614A true TW201903614A (zh) | 2019-01-16 |
| TWI673608B TWI673608B (zh) | 2019-10-01 |
Family
ID=63581054
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107110184A TWI673608B (zh) | 2017-03-24 | 2018-03-26 | 使用反向快取表的基於硬體之映射加速 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US10126964B2 (zh) |
| JP (1) | JP7046669B2 (zh) |
| KR (1) | KR20180108513A (zh) |
| CN (1) | CN108628772A (zh) |
| TW (1) | TWI673608B (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI771079B (zh) * | 2021-06-24 | 2022-07-11 | 群聯電子股份有限公司 | 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元 |
| TWI809504B (zh) * | 2020-09-18 | 2023-07-21 | 日商鎧俠股份有限公司 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
Families Citing this family (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10229052B2 (en) * | 2017-05-31 | 2019-03-12 | Seagate Technology Llc | Reverse map logging in physical media |
| US11138069B2 (en) | 2018-06-11 | 2021-10-05 | Seagate Technology, Llc | Providing additional parity for non-standard sized parity data sets |
| US10896002B2 (en) | 2018-06-29 | 2021-01-19 | Seagate Technology Llc | Reverse directory structure in a garbage collection unit (GCU) |
| KR102686749B1 (ko) * | 2018-11-14 | 2024-07-22 | 삼성전자주식회사 | 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치 |
| CN109684238A (zh) * | 2018-12-19 | 2019-04-26 | 湖南国科微电子股份有限公司 | 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘 |
| CN111475429B (zh) * | 2019-01-24 | 2023-08-29 | 爱思开海力士有限公司 | 存储器访问方法 |
| KR102818164B1 (ko) * | 2019-04-01 | 2025-06-10 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
| CN112835820B (zh) * | 2019-11-22 | 2025-09-30 | 北京忆芯科技有限公司 | 快速访问hmb的方法与存储设备 |
| US11016889B1 (en) | 2019-12-13 | 2021-05-25 | Seagate Technology Llc | Storage device with enhanced time to ready performance |
| CN111190835B (zh) * | 2019-12-29 | 2022-06-10 | 北京浪潮数据技术有限公司 | 一种数据写入方法、装置、设备及介质 |
| KR102901778B1 (ko) | 2020-03-25 | 2025-12-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
| US11726921B2 (en) | 2020-05-21 | 2023-08-15 | Seagate Technology Llc | Combined page footer for parallel metadata storage |
| US11392304B2 (en) | 2020-05-29 | 2022-07-19 | Seagate Technology Llc | Data storage device with adaptive object storage capabilities |
| CN111966298B (zh) * | 2020-08-24 | 2021-07-27 | 深圳三地一芯电子有限责任公司 | 一种基于Flash存储器的倒序编程实现方法及装置 |
| KR20220082509A (ko) * | 2020-12-10 | 2022-06-17 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
| JP2022144314A (ja) * | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム及びストレージ装置 |
| US11966336B2 (en) * | 2021-11-08 | 2024-04-23 | Sap Se | Caching data based on greenhouse gas data |
| US11669449B1 (en) | 2021-11-30 | 2023-06-06 | Dell Products L.P. | Ghost list cache eviction |
| CN114415966B (zh) * | 2022-01-25 | 2022-08-12 | 武汉麓谷科技有限公司 | 一种kv ssd存储引擎的构建方法 |
| US12105626B2 (en) | 2022-02-09 | 2024-10-01 | Dell Products L.P. | Method for optimized cache insertion |
| US12105627B2 (en) | 2022-02-09 | 2024-10-01 | Dell Products L.P. | Methods for cache insertion using ghost lists |
| US12169456B2 (en) | 2022-04-13 | 2024-12-17 | Dell Products L.P. | Methods for cache insertion and cache eviction using ghost list in a cache system that includes a reverse cache and a main cache |
| US12105639B2 (en) | 2022-05-17 | 2024-10-01 | Dell Products L.P. | Methods for cache insertion and cache eviction in a cache system that includes a reverse cache and a main cache |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2833062B2 (ja) * | 1989-10-30 | 1998-12-09 | 株式会社日立製作所 | キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置 |
| US5933857A (en) * | 1997-04-25 | 1999-08-03 | Hewlett-Packard Co. | Accessing multiple independent microkernels existing in a globally shared memory system |
| US6804741B2 (en) | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
| US7010645B2 (en) * | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
| US8533401B2 (en) | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
| US7613876B2 (en) * | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
| US7844778B2 (en) | 2006-07-11 | 2010-11-30 | International Business Machines Corporation | Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements |
| US8799586B2 (en) * | 2009-09-30 | 2014-08-05 | Intel Corporation | Memory mirroring and migration at home agent |
| WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
| US8495299B2 (en) | 2009-11-16 | 2013-07-23 | Microsoft Corporation | Non-blocking data transfer via memory cache manipulation |
| JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
| JP5295286B2 (ja) | 2011-02-23 | 2013-09-18 | 株式会社日立製作所 | 記憶装置およびそれを搭載した計算機 |
| US9218281B2 (en) | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
| US9250901B2 (en) | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
| WO2014209984A1 (en) * | 2013-06-25 | 2014-12-31 | Marvell World Trade Ltd. | Adaptive cache memory controller |
| US9405672B2 (en) | 2013-06-25 | 2016-08-02 | Seagate Technology Llc | Map recycling acceleration |
| US9880939B2 (en) | 2015-09-04 | 2018-01-30 | Toshiba Memory Corporation | Memory system and information processing system |
| US10282138B2 (en) * | 2016-09-27 | 2019-05-07 | International Business Machines Corporation | Secondary read cache optimization in data replication environments |
-
2017
- 2017-05-25 US US15/605,442 patent/US10126964B2/en active Active
-
2018
- 2018-03-23 JP JP2018056219A patent/JP7046669B2/ja active Active
- 2018-03-26 KR KR1020180034514A patent/KR20180108513A/ko not_active Ceased
- 2018-03-26 TW TW107110184A patent/TWI673608B/zh not_active IP Right Cessation
- 2018-03-26 CN CN201810255148.8A patent/CN108628772A/zh active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI809504B (zh) * | 2020-09-18 | 2023-07-21 | 日商鎧俠股份有限公司 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
| US11797452B2 (en) | 2020-09-18 | 2023-10-24 | Kioxia Corporation | Dynamic buffer caching of storage devices |
| TWI866331B (zh) * | 2020-09-18 | 2024-12-11 | 日商鎧俠股份有限公司 | 動態地管理儲存裝置之緩衝區的方法、儲存裝置、及非暫態性電腦可讀媒體 |
| TWI771079B (zh) * | 2021-06-24 | 2022-07-11 | 群聯電子股份有限公司 | 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP7046669B2 (ja) | 2022-04-04 |
| TWI673608B (zh) | 2019-10-01 |
| KR20180108513A (ko) | 2018-10-04 |
| CN108628772A (zh) | 2018-10-09 |
| JP2018163659A (ja) | 2018-10-18 |
| US10126964B2 (en) | 2018-11-13 |
| US20180275899A1 (en) | 2018-09-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI673608B (zh) | 使用反向快取表的基於硬體之映射加速 | |
| US10379746B2 (en) | Information processing apparatus, storage device, and computer program product | |
| US8688894B2 (en) | Page based management of flash storage | |
| CN103026346B (zh) | 用于从固态存储器设备读取及写入数据的方法及存储系统 | |
| JP5907739B2 (ja) | 不揮発性記憶装置 | |
| JP6224253B2 (ja) | フラッシュメモリ内に記憶されたデータの推測的プリフェッチ | |
| US9507719B2 (en) | Garbage collection in hybrid memory system | |
| US20200409856A1 (en) | Method and system for address table eviction management | |
| US8966155B1 (en) | System and method for implementing a high performance data storage system | |
| US10613985B2 (en) | Buffer management in a data storage device wherein a bit indicating whether data is in cache is reset after updating forward table with physical address of non-volatile memory and jettisoning the data from the cache | |
| CN117369715B (zh) | 基于存储设备中的引用更新使用回收单元的系统、方法和设备 | |
| TW201729105A (zh) | 混合模式存取固態硬碟驅動器之方法及裝置 | |
| US11733931B1 (en) | Software defined hybrid flash storage memory controller | |
| US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
| US11003580B1 (en) | Managing overlapping reads and writes in a data cache | |
| US20080147970A1 (en) | Data storage system having a global cache memory distributed among non-volatile memories within system disk drives | |
| KR20240173164A (ko) | 스토리지 장치에서 캐시 동작을 위한 시스템, 방법 및 장치 | |
| US20230019878A1 (en) | Systems, methods, and devices for page relocation for garbage collection | |
| US20240402924A1 (en) | Systems, methods, and apparatus for cache configuration based on storage placement | |
| CN117369718A (zh) | 在存储装置中形成和选择回收单元的系统、方法和装置 | |
| JP2022143762A (ja) | メモリシステム、制御方法およびメモリコントローラ | |
| CN120712556A (zh) | 在配置于数据存储装置的存储容量上的存储器服务中存储数据的性能优化 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |