TWI713032B - 資料儲存裝置以及非揮發式記憶體控制方法 - Google Patents
資料儲存裝置以及非揮發式記憶體控制方法 Download PDFInfo
- Publication number
- TWI713032B TWI713032B TW108128515A TW108128515A TWI713032B TW I713032 B TWI713032 B TW I713032B TW 108128515 A TW108128515 A TW 108128515A TW 108128515 A TW108128515 A TW 108128515A TW I713032 B TWI713032 B TW I713032B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- mapping table
- group mapping
- item
- patent application
- Prior art date
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
高效能之資料儲存裝置,具有一非揮發式記憶體載有依照邏輯位址群組劃分的複數個群組映射表,且具有一控制器與一暫存記憶體。該控制器令該非揮發式記憶體配置來儲存該等群組映射表的映射區塊之總量有一上限值x。該控制器自上述映射區塊選擇一來源區塊進行垃圾回收時,係分段將該來源區塊上有效的群組映射表載入該暫存記憶體、再自該暫存記憶體收集到一目標區塊。該暫存記憶體提供的儲存空間係重複利用於不同分段的群組映射表載入。
Description
本發明係有關於資料儲存裝置,特別有關於映射資訊之維護。
非揮發式記憶體有多種形式-例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(magnetoresistive RAM)、鐵電隨機存取記憶體(ferroelectric RAM)、電阻式隨機存取記憶體(resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,用於長時間資料保存。
非揮發式記憶體有其特殊之儲存特性,其操作以及管理需特殊設計。
根據本案一種實施方式實現的一資料儲存裝置包括一非揮發式記憶體、一控制器、與一暫存記憶體。該非揮發式記憶體載有依照邏輯位址群組劃分的複數個群組映射表。該控制器令該非揮發式記憶體配置來儲存該等群組
映射表的映射區塊之總量有一上限值x。該控制器自上述映射區塊選擇一來源區塊進行垃圾回收時,係分段將該來源區塊上有效的群組映射表載入該暫存記憶體、再自該暫存記憶體收集到一目標區塊。該暫存記憶體提供的儲存空間係重複利用於不同分段的群組映射表載入。本案最佳化非揮發式記憶體之映射資料管理;不只節省暫存記憶體的硬體成本,也避免非揮發式記憶體的操作效能被映射資料管理拖垮。
一種實施方式中,該控制器在上述映射區塊之總量達一臨界a時,選出該來源區塊進行垃圾回收。該控制器是根據該上限值x以及該臨界a決定一分段總數y。
一種實施方式中,該控制器令該分段總數y為(x-a)+1。
一種實施方式中,該控制器以該來源區塊上群組映射表的一有效數量VC、以及該分段總數y計算單分段的一群組映射表回收量M,M乃根據VC/y設置,為整數。
一種實施方式中,該控制器在該群組映射表回收量M不大於一回收量上限z時,以該群組映射表回收量M將該來源區塊上有效的群組映射表分段回收。該控制器在該群組映射表回收量M大於該回收量上限z時,以該回收量上限z將該來源區塊上有效的群組映射表分段回收。
一種實施方式中,該回收量上限z乃根據(Total_G/x)/y設置,為整數,Total_G為邏輯位址群組的總量。
一種實施方式中,第一分段之群組映射表收集到該目標區塊後、且第二分段之群組映射表載入該暫存記憶體之前,該控制器回應一主機之要求。
一種實施方式中,上述第二分段之群組映射表載入該暫存記憶體時,該控制器更確認該暫存記憶體上是否有更新版本,使收集到該目標區塊的群組映射表為最新版本。
一種實施方式中,該控制器在該暫存記憶體管理一映射區塊列表,指出用作上述映射區塊的實體區塊。該控制器是根據該映射區塊列表判斷上述映射區塊之數量。
一種實施方式中,該映射區塊列表亦指出經上述垃圾回收釋出備用的實體區塊。
以上控制器對非揮發式記憶體之操作也可以由其他結構實現。本案更可以前述概念實現非揮發式記憶體的控制方法,包括:令一非揮發式記憶體載有依照邏輯位址群組劃分的複數個群組映射表;令該非揮發式記憶體配置來儲存該等群組映射表的映射區塊之總量有一上限值x;自上述映射區塊選擇一來源區塊進行垃圾回收時,分段將該來源區塊上有效的群組映射表載入該暫存記憶體、再自該暫存記憶體收集到一目標區塊。該暫存記憶體提供的儲存空間係重複利用於不同分段的群組映射表載入。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
100:資料儲存裝置
102:快閃記憶體
104:控制器
106:暫存記憶體
108:主機
110:系統資訊區塊池
112:閒置區塊池
114:主動區塊
116:資料區塊池
118:實體-邏輯位址(P2L)映射表
120:群組映射表暫存區
402…406:頁面
502…506:空間
BLK:區塊
L2P:邏輯位址-實體空間映射表
L2P_G0、L2P_G1、L2P_G2、L2P_G3、L2P_G120、L2P_G121、L2P_G124、L2P_G125:群組映射表
MapBlk、MapBlk#0、MapBlk#7:映射區塊
MapBlkIndex:映射區塊列表
S602…S612、S702…S716:步驟
第1圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置100;第2圖圖解區塊BLK之結構;
第3圖圖解群組映射表L2P_G之定義;第4圖圖解快閃記憶體102上的群組映射表L2P_G#記錄方式;第5A圖以及第5B圖圖解垃圾回收程序的分段執行;第6圖為本案一種實施方式圖解映射區塊之垃圾回收方法的流程圖;且第7圖為流程圖,根據本案一種實施方式圖解映射區塊MapBlk之垃圾回收程序。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(Flash Memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式記憶體(Resistive RAM,RRAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,提供長時間資料保存之儲存媒體。以下特別以快閃記憶體為例進行討論。
現今資料儲存裝置常以快閃記憶體為儲存媒體,用以儲存來自於主機的使用者資料(簡稱為資料)。資料儲存裝置的種類眾多,包括記憶卡(Memory Card)、通用序列匯流排閃存裝置(USB Flash Device)、固態硬碟(SSD)...等產品。有一種應用是採多晶片封裝、將快閃記憶體與其控制器包裝在一起-稱為嵌入式快閃記憶體模組(如eMMC)。
以快閃記憶體為儲存媒體的資料儲存裝置可應用於多種電子裝置中。所述電子裝置包括智慧型手機、穿戴裝置、平板電腦、虛擬實境設備…等。
電子裝置的運算模塊可視為主機(Host),操作所使用的資料儲存裝置,以存取其中快閃記憶體。
以快閃記憶體為儲存媒體的資料儲存裝置也可用於建構數據中心。例如,伺服器可操作固態硬碟(SSD)陣列形成數據中心。伺服器即可視為主機(Host),操作所連結之固態硬碟,以存取其中快閃記憶體。
第1圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置100,其中包括快閃記憶體102、記憶體控制器104(或稱控制器)以及暫存記憶體106。主機108係透過記憶體控制器104操作快閃記憶體102。快閃記憶體102之物理空間是劃分為複數個區塊(Blocks)配置使用。第2圖圖解區塊BLK之結構,其中包括複數頁面(Pages),例如,頁面0…頁面255。各頁面包括複數個區段(Sectors),例如:16KB空間的頁面可包括32個區段來儲存資料,每一區段大小為512B。另外,在4KB資料管理模式下,可將8個區段作為最小的資料管理單位,此時,資料管理單位的大小為4KB,可儲存8個區段大小的資料。為了簡化說明,下述中將以4KB資料管理模式為例進行說明,但不以此為限。
快閃記憶體102的物理空間是動態地被配置使用。相較於主機(Host)端是以邏輯位址(例如,邏輯區塊位址LBA或全域主機頁編號GHP…等)區別資料,各邏輯位址究竟對應至快閃記憶體哪一個物理位址(哪一區塊BLK、哪一頁面、哪一區段)需以邏輯-物理位址(Logical-to-Physical Addresses,L2P)映射表管理,其中,邏輯位址例如是邏輯區塊位址(Logical Block Address,LBA)。
一種實施方式中,記憶體控制器104根據頁面編號,由低至高編號
(例如,頁面0至頁面255),而將資料儲存至區塊BLK。一種實施方式中,資料儲存裝置100採用多通道技術,係將不同通道之間的區塊BLK視為一個超級區塊(Super Block),將不同通道之間的頁面視為超級頁面(Super Page),再以超級區塊BLK或超級頁面的作為資料抹除(Erase)或資料寫入的單位,採用此架構下可提升資料儲存裝置100的數據吞吐量。
快閃記憶體102有其特殊的儲存特性。舊資料更新並非同空間複寫。新版的資料需被寫入閒置空間,而舊空間內容將被標為無效。區塊BLK可能零星留存有效資料,可以執行垃圾回收(garbage collection)程序將有效資料搬移到閒置空間。徒留無效資料的區塊BLK得以被抹除再利用。
記憶體控制器104在操作快閃記憶體102時都需參考或更新L2P映射表所記錄的映射資訊(物理位址),例如從快閃記憶體102中讀取資料時需要參考映射資訊,對快閃記憶體102寫入資料則需更新映射資訊。除了因應主機(Host)的讀取、寫入要求,記憶體控制器104還會主動或被動地對快閃記憶體102執行其他程序,例如:垃圾回收、空間修整、區塊資料搬移…等,以上操作也都涉及L2P映射表的映射資訊之參考或更新。
然而,隨著快閃記憶體102的儲存容量提升,L2P映射表的大小也跟著變大,因此,L2P映射表之維護變成一個重要的技術課題。一種實施方式中,一個資料管理單位(4KB)的資料的映射資訊以4B大小的數值來表示,如果資料儲存裝置100的儲存容量為1TB,則資料儲存裝置100需要1GB大小的L2P映射表來記錄映射資訊,換句話說,資料儲存裝置100需配置1GB大小的暫存記憶體106以暫存L2P映射表。
考量DRAM的採購成本或儲存容量的限制,本案將邏輯位址區分為多個邏輯位址群組,例如:1024個,據以將L2P映射表劃分為1024個群組映射表L2P_G,被呼叫到的群組映射表L2P_G才會被上載至暫存記憶體106的群組映射表暫存區120,作為參考或更新。第3圖圖解群組映射表L2P_G之定義。一種實施方式是以定量的邏輯位址切割L2P映射表,形成對應不同邏輯位址群組的1024個群組映射表L2P_G,例如:群組映射表L2P_G0包含LBA0~LBA1023之映射資訊,群組映射表L2P_G1包含LBA1024~LBA2047之映射資訊。相較於一整個L2P映射表,群組映射表暫存區120僅暫存局部數量,例如:64個群組映射表L2P_G,因此,僅佔用暫存記憶體106小量的暫存空間,因此,資料儲存裝置100只需配置低成本的小容量的暫存記憶體106即可,此種硬體特徵又稱為部份(Partial)DRAM。
第4圖圖解快閃記憶體102上的群組映射表L2P_G#記錄方式。用以儲存群組映射表L2P_G#的區塊BLK統稱為映射區塊MapBlk,可歸類為系統資訊區塊池110。如圖4所示,在映射區塊MapBlk中當有群組映射表L2P_G#更新時,原本的群組映射表L2P_G#則被無效化(打叉示意)。例如,頁面402儲存更新的(有效的)群組映射表L2P_G2、L2P_G3、L2P_G120以及L2P_G121,頁面404所儲存原本的群組映射表L2P_G2、L2P_G3以及頁面406所儲存原本的群組映射表L2P_G120、L2P_G121皆被無效化。另外,頁面404仍儲存有效的群組映射表L2P_G0、L2P_G1以及頁面406仍儲存有效的群組映射表L2P_G124、L2P_G125。隨著資料的儲存及更新,同一個映射區塊MapBlk上有效的群組映射表L2P_G#會越來越少,因此,如何最佳化映射區塊MapBlk之儲存空間成為一個重要的技術
課題。
為了最佳化映射區塊MapBlk之儲存空間,首先,本案對映射區塊MapBlk的數量設定上限值x,避免無限制的配置區塊BLK作為映射區塊MapBlk。另外,本案分段執行垃圾回收程序以回收有效的群組映射表L2P_G#數量最少的映射區塊MapBlk。藉由分段執行垃圾回收程序以降低每次垃圾回收程序所需處理的資料量,不僅減少硬體資源之使用,不同分段間記憶體控制器104還可以執行其他程序,例如:執行來自主機108的讀取、寫入要求,提升資料儲存裝置100的系統效能。
快閃記憶體102具有系統資訊區塊池110,系統資訊區塊池110包括一個以上的映射區塊MapBlk,映射區塊MapBlk可以選自於閒置區塊池112中的閒置區塊。另外,記憶體控制器104可以選取閒置區塊池112的閒置區塊作為主動區塊114,用於接收主機108要求的寫入資料。主動區塊114關閉後(例如,寫入區塊結尾(End Of Block,簡稱EOB)資訊後),將視為資料區塊,屬於資料區塊池116。主動區塊114也可以作為內部資料搬移程序中的目的區塊。另一種實施方式中,系統資訊區塊池110的映射區塊MapBlk選自於一個專屬的閒置區塊池(未顯示)中的閒置區塊,而非閒置區塊池112。
隨著資料寫入(編程)至主動區塊114,記憶體控制器104可在暫存記憶體106上維護實體-邏輯位址(Physical-Logical Addresses,P2L)映射表118,記錄主動區塊114之實體位址對應至邏輯位址的映射資料。記憶體控制器104可依據P2L映射表118的內容判斷出必需更新映射資訊的群組映射表L2P_G#(即目標群組映射表L2P_G#),接著,再將目標群組映射表L2P_G#自映射區塊
MapBlk中讀取並上載至暫存記憶體106。當目標群組映射表L2P_G#的映射資訊更新完成後,再將目標群組映射表L2P_G#儲存至映射區塊MapBlk(專屬映射資訊更新的主動區塊)中。
另一方面,快閃記憶體102為回應來自主機108的讀取要求、垃圾回收、空間修整或區塊資料搬移等程序,可將目標群組映射表L2P_G#自映射區塊MapBlk中讀取並上載至暫存記憶體106,便於參考目標群組映射表L2P_G#所記錄的映射資訊。
為了有效率地管理映射區塊MapBlk之儲存空間,記憶體控制器104可在暫存記憶體106中建立映射區塊列表MapBlkIndex,一個映射區塊列表MapBlkIndex對應至一個映射區塊MapBlk,映射區塊列表MapBlkIndex記錄對應的映射區塊MapBlk所儲存的群組映射表L2P_G#是否仍為有效,“1”例如是有效,“0”例如是無效。由於映射區塊MapBlk的數量不會超過上限值x,x例如8,所以記憶體控制器104可建立映射區塊列表MapBlkIndex#0~#7,分別對應至映射區塊MapBlk#0~#7。
記憶體控制器104可在前景或背景模式(背景模式無須應付主機108要求)下檢查映射區塊MapBlk的總量。若等於臨界值a,a例如7,記憶體控制器104啟動一種為映射區塊MapBlk設計的垃圾回收程序,並選擇其中一個映射區塊MapBlk#(例如:映射區塊MapBlk#0)當成來源區塊,閒置區塊或主動區塊(例如:映射區塊MapBlk#7)則作為垃圾回收程序中的目的區塊。另外,記憶體控制器104較佳選擇具有最小有效群組映射表L2P_G#的有效數量VC的映射區塊MapBlk#當成來源區塊。
執行垃圾回收程序時,記憶體控制器104先將來源區塊上有效群組映射表L2P_G#載入群組映射表暫存區120,再將有效群組映射表L2P_G#寫入至目的區塊。另外,垃圾回收程序較佳為分段執行,即分段回收來源區塊的有效群組映射表L2P_G#,例如,一個分段中只回收來源區塊的8筆有效群組映射表L2P_G#。在各分段間,記憶體控制器104可穿插回應主機108的讀取、寫入要求。當來源區塊中所有有效群組映射表L2P_G#回收完成後,來源區塊即可釋出而成為備用區塊。群組映射表暫存區120可重複利用於不同段的群組映射表L2P_G#載入上。
垃圾回收程序的分段總數y可由映射區塊總數MapBlk上限值x以及臨界值a所決定,例如,分段總數y可以是(x-a)+1,而每段垃圾回收程序執行的群組映射表回收量M可由有效群組映射表L2P_G#的有效數量VC以及分段總數y所決定,即M=VC/y。另外,也可以對每段垃圾回收程序執行的群組映射表回收量M設定回收上限值z,回收量上限z為(Total_G/x)/y,Total_G為有效邏輯位址群組G#的總量。記憶體控制器104在群組映射表回收量M不大於回收量上限z時,以群組映射表回收量M將來源區塊上有效的群組映射表L2P_G#依序分段回收。如果群組映射表回收量M大於回收量上限z時,則增加分段總數y的值,再以回收量上限z將來源區塊上有效的群組映射表L2P_G#依序分段回收。回收量上限z可確保垃圾回收程序中每段的資料處理量為可負擔,另外,由於回收上限值z的設定,群組映射表暫存區120無須過大尺寸,因此,資料儲存裝置100上僅需配置小容量的暫存記憶體106即可,如此一來,可降低暫存記憶體106的配置成本。
第5A圖以及第5B圖圖解垃圾回收程序的分段執行,其中,假設上限值x等於5,臨界值a等於4,映射區塊MapBlk#0作為來源區塊,有效群組映射表L2P_G#的有效數量VC等於16,分段總數y等於2,群組映射表回收量M等於8,回收量上限z等於12,群組映射表回收量M小於回收量上限z,映射區塊MapBlk#7作為目標區塊。
第一段垃圾回收程序中(第5A圖),記憶體控制器104將映射區塊MapBlk#0的頭8個有效群組映射表L2P_G#(標示V)上傳至群組映射表暫存區120,再儲存至映射區塊MapBlk#7的儲存空間502,如第5A圖所示。之後,記憶體控制器104可回應來自主機108的要求,例如,相應主機108的寫入要求並將群組映射表L2P_G#載至群組映射表暫存區120進行更新,再寫入映射區塊MapBlk#7的儲存空間504。
第二段垃圾回收程序中(第5B圖),記憶體控制器104將映射區塊MapBlk#0的末8個有效群組映射表L2P_G#(標示V)上傳至群組映射表暫存區120,再儲存至映射區塊MapBlk#7的儲存空間506,如第5B圖所示。之後,記憶體控制器104可再次回應來自主機108的要求,例如,相應主機108寫入要求並將群組映射表L2P_G#載至群組映射表暫存區120進行更新,再寫入映射區塊MapBlk#7的儲存空間508。
在一種實施方式中,記憶體控制器204將映射區塊MapBlk#0的末8個有效群組映射表L2P_G#(標示V)上傳至群組映射表暫存區120之後(或之前),會再確認是否已更新(例如,回應來自主機108的要求所造成群組映射表L2P_G#的更新)。例如,如果末8個有效群組映射表L2P_G#中的群組映射表L2P_G#100
已更新,則記憶體控制器104不將舊版本的群組映射表L2P_G#100寫入映射區塊MapBlk#7的儲存空間508。在另一種實施方式中,如果記憶體控制器104回應來自主機108的要求而更新群組映射表L2P_G#100,將群組映射表L2P_G#100寫入空間504時,可更將群組映射表L2P_G#100的編號記錄下來,如此一來,記憶體控制器104稍後可將群組映射表L2P_G#100的編號與映射區塊MapBlk#0的末8個有效群組映射表L2P_G#的編號比對,再依據比對的結果而決定是否將末8個有效群組映射表L2P_G#一一載入群組映射表暫存區120。
第6圖為本案一種實施方式圖解映射區塊之垃圾回收方法的流程圖,可用應於資料儲存裝置100,其中,映射區塊MapBlk的垃圾回收程序較佳在背景模式(沒有需要回應的主機108要求時)下執行,亦可執行於前景模式下。
步驟S602,記憶體控制器104判斷映射區塊MapBlk的總量是否等於或大於臨界值a,若否,則結束;若是,則執行步驟S604。例如:映射區塊MapBlk#0~#7皆儲存群組映射表L2P_G#,映射區塊MapBlk#7為主動區塊,映射區塊MapBlk#的總量等於7,剛好於臨界值a。
步驟S604,記憶體控制器104選取其中之一映射區塊MapBlk#作為來源區塊。例如:記憶體控制器104選取映射區塊MapBlk#0作為來源區塊,其中,映射區塊MapBlk#0在映射區塊MapBlk#0~#6之中乃具有最小的有效群組映射表L2P_G#的有效數量VC,有效數量VC例如等於16。
步驟S606,記憶體控制器104決定垃圾回收程序的分段總數以及每一段垃圾回收程序中的資料搬移量。垃圾回收程序乃分段執行,每一段垃圾回收程序中的資料搬移量較佳等於群組映射表回收量M,或是等於回收上限值z,
資料搬移量例如等於8(八個群組映射表L2P_G#)。另外,記憶體控制器104更決定垃圾回收程序的分段總數y,分段總數y例如等於2。
步驟S608,記憶體控制器104將資料搬移量自來源區塊搬移至目的區塊。映射區塊MapBlk#7作為垃圾回收程序中的目的區塊,第一段垃圾回收程序中,記憶體控制器104將映射區塊MapBlk#0的頭8個有效群組映射表L2P_G#上傳至群組映射表暫存區120,再儲存至映射區塊MapBlk#7。另外,記憶體控制器104可將剩餘段數減1。
步驟S610,記憶體控制器104回應來自主機108之要求,其中,主機108之要求例如是寫入或讀取要求。由於垃圾回收程序乃分段執行,分段之間仍可由記憶體控制器104回應來自主機108之要求,因此,資料儲存裝置100的系統效能得以維持。
步驟S612,記憶體控制器104判斷垃圾回收程序是否執行完成,若是,則結束本發明映射區塊MapBlk之垃圾回收方法執行,若否,則執行步驟S608。當步驟S608僅執行1次時,剩餘段數不等於0,這表示垃圾回收程序當未執行完成,因此,再度執行步驟S608時,在第二段垃圾回收程序中,記憶體控制器104將映射區塊MapBlk#0的末8個有效群組映射表L2P_G#上傳至群組映射表暫存區120,再儲存至映射區塊MapBlk#7。當步驟S608執行2次後,剩餘段數等於0,這表示垃圾回收程序已執行完成。
藉由分段執行垃圾回收程序以回收映射區塊MapBlk,並藉由設定每次回收的資料搬移量,如此一來,即使資料儲存裝置100僅配置低成本的小容量的暫存記憶體106,仍可順利地完成群組映射表L2P_G#的回收,達到本發明的
目的。
第7圖為流程圖,根據本案一種實施方式圖解映射區塊MapBlk之垃圾回收程序。
步驟S702,資料儲存裝置100進入背景模式。控制器104沒有需要回應的主機108要求,得以最佳化該快閃記憶體102之空間利用。
步驟S704,控制器104檢查該映射區塊列表MapBlkIndex(或其他記錄),確定已配置的映射區塊數量是否達臨界a。若否,則還無須耗費資源在映射區塊垃圾回收。若已達臨界a,流程進行映射區塊之垃圾回收。流程進入步驟S706,自該映射區塊列表MapBlkIndex指出的映射區塊中,擇一(例如,選擇有效數量VC最低者)作為來源區塊。
步驟S708,控制器104計算分段總數y中,單段回收的群組映射表回收量M(=VC/y),並將M與回收量上限z-(Total_G/x)/y-比較。若群組映射表回收量M不大於回收量上限z,流程採取步驟S710,回收M個群組映射表L2P_G#實現單一批次的垃圾回收。反之,若數值M大於上限z,流程採取步驟S712,回收z個群組映射表L2P_G#實現單一批次的垃圾回收。
步驟S710/S712單批次垃圾回收之後,控制器104進行步驟S714,穿插應付主機108之要求。
步驟S716,控制器104檢查來源區塊的垃圾回收是否完成。若未完成,相應的步驟S710/S712再次進行,實現下一批次的垃圾回收。
由於垃圾回收期間仍可應付主機108要求(步驟S714),資料儲存裝置100效能表現極佳。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100~資料儲存裝置;
102~快閃記憶體;
104~控制器;
106~暫存記憶體;
108~主機;
110~系統資訊區塊池;
112~閒置區塊池;
114~主動區塊;
116~資料區塊池;
118~實體-邏輯位址(P2L)映射表;
120~群組映射表暫存區;
MapBlkIndex~映射區塊列表。
Claims (20)
- 一種資料儲存裝置,包括:一非揮發式記憶體,載有依照邏輯位址群組劃分的複數個群組映射表;以及一控制器、與一暫存記憶體,其中:該控制器令該非揮發式記憶體配置來儲存該等群組映射表的映射區塊之總量有一上限值x;該控制器自上述映射區塊選擇一來源區塊進行垃圾回收時,係分段將該來源區塊上有效的群組映射表載入該暫存記憶體、再自該暫存記憶體收集到一目標區塊;且該暫存記憶體提供的儲存空間係重複利用於不同分段的群組映射表載入。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器在上述映射區塊之總量達一臨界a時,選出該來源區塊進行垃圾回收;且該控制器是根據該上限值x以及該臨界a決定一分段總數y。
- 如申請專利範圍第2項所述之資料儲存裝置,其中:該控制器令該分段總數y為(x-a)+1。
- 如申請專利範圍第2項所述之資料儲存裝置,其中:該控制器以該來源區塊上群組映射表的一有效數量VC、以及該分段總數y計算單分段的一群組映射表回收量M,M乃根據VC/y設置,為整數。
- 如申請專利範圍第4項所述之資料儲存裝置,其中:該控制器在該群組映射表回收量M不大於一回收量上限z時,以該群組映射表回收量M將該來源區塊上有效的群組映射表分段回收;且該控制器在該群組映射表回收量M大於該回收量上限z時,以該回收量上限z將該來源區塊上有效的群組映射表分段回收。
- 如申請專利範圍第5項所述之資料儲存裝置,其中:該回收量上限z乃根據(Total_G/x)/y設置,為整數,Total_G為邏輯位址群組的總量。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:第一分段之群組映射表收集到該目標區塊後、且第二分段之群組映射表載入該暫存記憶體之前,該控制器回應一主機之要求。
- 如申請專利範圍第7項所述之資料儲存裝置,其中:上述第二分段之群組映射表載入該暫存記憶體時,該控制器更確認該暫存記憶體上是否有更新版本,使收集到該目標區塊的群組映射表為最新版本。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器在該暫存記憶體管理一映射區塊列表,指出用作上述映射區塊的實體區塊;且該控制器是根據該映射區塊列表判斷上述映射區塊之數量。
- 如申請專利範圍第9項所述之資料儲存裝置,其中:該映射區塊列表亦指出經上述垃圾回收釋出備用的實體區塊。
- 一種非揮發式記憶體控制方法,包括: 令一非揮發式記憶體載有依照邏輯位址群組劃分的複數個群組映射表;令該非揮發式記憶體配置來儲存該等群組映射表的映射區塊之總量有一上限值x;且自上述映射區塊選擇一來源區塊進行垃圾回收時,分段將該來源區塊上有效的群組映射表載入該暫存記憶體、再自該暫存記憶體收集到一目標區塊,其中,該暫存記憶體提供的儲存空間係重複利用於不同分段的群組映射表載入。
- 如申請專利範圍第11項所述之非揮發式記憶體控制方法,更包括:在上述映射區塊之總量達一臨界a時,選出該來源區塊進行垃圾回收;且根據該上限值x以及該臨界a決定一分段總數y。
- 如申請專利範圍第12項所述之非揮發式記憶體控制方法,更包括:令該分段總數y為(x-a)+1。
- 如申請專利範圍第12項所述之非揮發式記憶體控制方法,更包括:以該來源區塊上群組映射表的一有效數量VC、以及該分段總數y,計算單分段的一群組映射表回收量M,M乃根據VC/y設置,為整數。
- 如申請專利範圍第14項所述之非揮發式記憶體控制方法,更包括:在該群組映射表回收量M不大於一回收量上限z時,以該群組映射表回收量 M將該來源區塊上有效的群組映射表分段回收;且在該群組映射表回收量M大於該回收量上限z時,以該回收量上限z將該來源區塊上有效的群組映射表分段回收。
- 如申請專利範圍第15項所述之非揮發式記憶體控制方法,其中:該回收量上限z乃根據(Total_G/x)/y設置,為整數,Total_G為邏輯位址群組的總量。
- 如申請專利範圍第11項所述之非揮發式記憶體控制方法,更包括:第一分段之群組映射表收集到該目標區塊後、且第二分段之群組映射表載入該暫存記憶體之前,回應一主機之要求。
- 如申請專利範圍第17項所述之非揮發式記憶體控制方法,更包括:上述第二分段之群組映射表載入該暫存記憶體時,確認該暫存記憶體上是否有更新版本,使收集到該目標區塊的群組映射表為最新版本。
- 如申請專利範圍第11項所述之非揮發式記憶體控制方法,更包括:在該暫存記憶體管理一映射區塊列表,指出用作上述映射區塊的實體區塊;且根據該映射區塊列表,判斷上述映射區塊之數量。
- 如申請專利範圍第19項所述之非揮發式記憶體控制方法,其中:該映射區塊列表亦指出經上述垃圾回收釋出備用的實體區塊。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910824188.4A CN111610930B (zh) | 2019-02-26 | 2019-09-02 | 数据储存装置以及非挥发式存储器控制方法 |
US16/747,109 US11055004B2 (en) | 2019-02-26 | 2020-01-20 | Data storage device and control method for non-volatile memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810422P | 2019-02-26 | 2019-02-26 | |
US62/810,422 | 2019-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202032563A TW202032563A (zh) | 2020-09-01 |
TWI713032B true TWI713032B (zh) | 2020-12-11 |
Family
ID=73643478
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108125218A TWI706250B (zh) | 2019-02-26 | 2019-07-17 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW108127457A TWI724483B (zh) | 2019-02-26 | 2019-08-02 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW108128179A TWI726381B (zh) | 2019-02-26 | 2019-08-08 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW108128515A TWI713032B (zh) | 2019-02-26 | 2019-08-12 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108125218A TWI706250B (zh) | 2019-02-26 | 2019-07-17 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW108127457A TWI724483B (zh) | 2019-02-26 | 2019-08-02 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW108128179A TWI726381B (zh) | 2019-02-26 | 2019-08-08 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Country Status (1)
Country | Link |
---|---|
TW (4) | TWI706250B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
US12117932B2 (en) | 2023-01-09 | 2024-10-15 | Silicon Motion, Inc. | Method and apparatus for performing data access management of memory device in predetermined communications architecture with aid of unbalanced table update |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180260132A1 (en) * | 2017-03-07 | 2018-09-13 | Silicon Motion, Inc. | Data Storage Device and Operating Method Thereof |
US20180357157A1 (en) * | 2017-06-12 | 2018-12-13 | SK Hynix Inc. | Memory system and operating method thereof |
US10203900B2 (en) * | 2016-05-04 | 2019-02-12 | SK Hynix Inc. | Memory system for selecting blocks for garbage selection and operating method thereof |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
JP4420351B2 (ja) * | 2005-09-30 | 2010-02-24 | 富士通株式会社 | 階層ストレージシステム、制御方法及びプログラム |
US8266409B2 (en) * | 2009-03-03 | 2012-09-11 | Qualcomm Incorporated | Configurable cache and method to configure same |
US8386747B2 (en) * | 2009-06-11 | 2013-02-26 | Freescale Semiconductor, Inc. | Processor and method for dynamic and selective alteration of address translation |
TWI521343B (zh) * | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
US9690695B2 (en) * | 2012-09-20 | 2017-06-27 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
US9256384B2 (en) * | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
US9383927B2 (en) * | 2014-05-28 | 2016-07-05 | SandDisk Technologies LLC | Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device |
KR20160118836A (ko) * | 2015-04-03 | 2016-10-12 | 에스케이하이닉스 주식회사 | 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법 |
TWI537728B (zh) * | 2015-09-23 | 2016-06-11 | 群聯電子股份有限公司 | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
US10552335B2 (en) * | 2015-09-25 | 2020-02-04 | Beijing Lenovo Software Ltd. | Method and electronic device for a mapping table in a solid-state memory |
TWI587214B (zh) * | 2016-04-21 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置、其控制單元及其任務排序方法 |
US10354716B2 (en) * | 2016-09-16 | 2019-07-16 | Aspiring Sky Co. Limited | SRAM based memory structures and methods thereof |
TWI659307B (zh) * | 2017-01-06 | 2019-05-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
TWI660346B (zh) * | 2018-09-07 | 2019-05-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
-
2019
- 2019-07-17 TW TW108125218A patent/TWI706250B/zh active
- 2019-08-02 TW TW108127457A patent/TWI724483B/zh active
- 2019-08-08 TW TW108128179A patent/TWI726381B/zh active
- 2019-08-12 TW TW108128515A patent/TWI713032B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203900B2 (en) * | 2016-05-04 | 2019-02-12 | SK Hynix Inc. | Memory system for selecting blocks for garbage selection and operating method thereof |
US20180260132A1 (en) * | 2017-03-07 | 2018-09-13 | Silicon Motion, Inc. | Data Storage Device and Operating Method Thereof |
US20180357157A1 (en) * | 2017-06-12 | 2018-12-13 | SK Hynix Inc. | Memory system and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
TW202032563A (zh) | 2020-09-01 |
TW202032374A (zh) | 2020-09-01 |
TW202032377A (zh) | 2020-09-01 |
TWI726381B (zh) | 2021-05-01 |
TW202032375A (zh) | 2020-09-01 |
TWI706250B (zh) | 2020-10-01 |
TWI724483B (zh) | 2021-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240938B (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
US7254668B1 (en) | Method and apparatus for grouping pages within a block | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
US10649661B2 (en) | Dynamically resizing logical storage blocks | |
US7039788B1 (en) | Method and apparatus for splitting a logical block | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
CN111610930B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US9201784B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TWI463313B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
WO2020007030A1 (zh) | 一种系统控制器和系统垃圾回收方法 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
JP7392080B2 (ja) | メモリシステム | |
TWI713032B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN111610931B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TW202036300A (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN112130750A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
US20240103733A1 (en) | Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device | |
US12067286B2 (en) | Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device |