TWI706250B - 資料儲存裝置以及非揮發式記憶體控制方法 - Google Patents
資料儲存裝置以及非揮發式記憶體控制方法 Download PDFInfo
- Publication number
- TWI706250B TWI706250B TW108125218A TW108125218A TWI706250B TW I706250 B TWI706250 B TW I706250B TW 108125218 A TW108125218 A TW 108125218A TW 108125218 A TW108125218 A TW 108125218A TW I706250 B TWI706250 B TW I706250B
- Authority
- TW
- Taiwan
- Prior art keywords
- mapping table
- group mapping
- node
- link series
- volatile memory
- 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
高效能之資料儲存裝置。一非揮發式記憶體載有複數個群組映射表組成的一映射表,記錄一主機辨識用的邏輯位址如何映射至該非揮發式記憶體的物理空間。一記憶體控制器運用一暫存記憶體操作該非揮發式記憶體。該記憶體控制器在該暫存記憶體上規劃一群組映射表暫存區,對應複數個節點,供自該非揮發式記憶體載出的群組映射表暫存。該等節點是以鏈結串列方式管理,以靈活使用有限的群組映射表暫存區。
Description
本發明係有關於資料儲存裝置,特別有關於非揮發式記憶體之邏輯位址-物理空間映射表(L2P table)的維護。
非揮發式記憶體有多種形式-例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(magnetoresistive RAM)、鐵電隨機存取記憶體(ferroelectric RAM)、電阻式隨機存取記憶體(resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,用於長時間資料保存。
非揮發式記憶體有其特殊之儲存特性,其操作以及管理需特殊設計。
根據本案一種實施方式實現的一資料儲存裝置包括一非揮發式記憶體、一記憶體控制器以及一暫存記憶體。該非揮發
式記憶體載有複數個群組映射表組成的一映射表,記錄一主機辨識用的邏輯位址如何映射至該非揮發式記憶體的物理空間。該記憶體控制器運用該暫存記憶體操作該非揮發式記憶體。該記憶體控制器在該暫存記憶體上規劃一群組映射表暫存區,對應複數個節點供自該非揮發式記憶體載出的群組映射表暫存,且以鏈結串列方式管理該等節點,以靈活使用有限的群組映射表暫存區。
一種實施方式中,該記憶體控制器以一待封存鏈結串列使該群組映射表暫存區中經過更新而待封存的群組映射表與其他沒有被更新的群組映射表區別。
一種實施方式中,該記憶體控制器初始化以一自由鏈結串列管理該群組映射表暫存區對應的所有節點。更新無節點對應的一第一群組映射表時,該記憶體控制器將該自由鏈結串列的尾端節點改動為該待封存鏈結串列的頭端節點,並自該非揮發式記憶體將該第一群組映射表載至該群組映射表暫存區,由該待封存鏈結串列的頭端節點管理。
一種實施方式中,該記憶體控制器更管理一無更新鏈結串列。根據該主機的讀取要求呼叫無節點對應的一第二群組映射表時,該記憶體控制器將該自由鏈結串列的尾端節點改動為該無更新鏈結串列的頭端節點,並自該非揮發式記憶體將該第二群組映射表載至該群組映射表暫存區,由該無更新鏈結串列的頭端節點管理。
一種實施方式中,若非該主機要求而呼叫無節點對應、且不更新的一第三群組映射表,該記憶體控制器將該自由鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點,並自該非揮發式記憶體將該第三群組映射表載至該群組映射表暫存區,由該自由鏈結串列的頭端節點管理。
一種實施方式中,更新該無更新鏈結串列管理的一第四群組映射表時,該記憶體控制器將其節點改動為該待封存鏈結串列的頭端節點。
一種實施方式中,更新該自由鏈結串列管理的一第五群組映射表時,該記憶體控制器將其節點改動為該待封存鏈結串列的頭端節點。
一種實施方式中,非該主機要求而呼叫該自由鏈結串列管理的一第六群組映射表、且不更新該第六群組映射表時,該記憶體控制器將其節點改動為該自由鏈結串列的頭端節點。
一種實施方式中,該自由鏈結串列的節點總數低於一第一定量、且該無更新鏈結串列的節點總數不低於一第二定量時,該記憶體控制器將該無更新鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點。
一種實施方式中,該自由鏈結串列的節點總數低於該第一定量、且該無更新鏈結串列的節點總數低於該第二定量時,
該記憶體控制器將該待封存鏈結串列的尾端節點所管理的群組映射表封存回該非揮發式記憶體後,改動為該自由鏈結串列的頭端節點。
以上控制器對非揮發式記憶體之操作也可以由其他結構實現。本案更可以前述概念實現非揮發式記憶體的控制方法,包括:令一非揮發式記憶體載有複數個群組映射表組成的一映射表,記錄一主機辨識用的邏輯位址如何映射至該非揮發式記憶體的物理空間;運用一暫存記憶體操作該非揮發式記憶體;且在該暫存記憶體上規劃一群組映射表暫存區,對應複數個節點供自該非揮發式記憶體載出的群組映射表暫存,且以鏈結串列方式管理該等節點。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
302…314:節點
400:資料儲存裝置
402:快閃記憶體
404:記憶體控制器
405:記憶體控制器404的內部記憶體
406:暫存記憶體
408:主機
410:系統資訊區塊池
412:閒置區塊池
414:主動區塊
416:資料區塊池
418:主動區塊映射表
420:群組映射表暫存區
500:節點
802、804、806:鏈結改動
902、904、906:鏈結改動
1102:群組映射表L2P_G#封存
1104:鏈結改動
BLK:區塊
G#:節點資訊,節點對應到的邏輯位址群組
G2N:邏輯群-節點映射表
L2P:邏輯位址-物理空間映射表
L2P_G#:群組映射表,#為數字
LLFree:自由鏈結串列
LLUnchanged:無更新鏈結串列
LLUnsaved:待封存鏈結串列
next_node:節點資訊,指向串接的下一個節點
node_Addr:節點資訊,節點對應到群組映射表暫存區420哪個位置
node_ID:節點資訊,節點隸屬哪個鏈結串列
pre_node:節點資訊,指向串接的前一個節點
S610…S660、S710…S760:步驟
第1圖圖解快閃記憶體的物理架構,圖示為一區塊BLK;第2圖圖解快閃記憶體操作用的映射資訊,圖示為複數個群組映射表L2P_G#;第3圖圖解一種鏈結串列技術,用於快閃記憶體映射資訊的暫存管理;第4圖為方塊圖,圖解根據本案一種實施方式所實施的一資料儲存裝置400;
第5圖圖解鏈結串列技術中節點500的資料結構;第6圖為本發明以鏈結串列來管理群組映射表L2P_G方法的流程圖;第7圖為本發明以鏈結串列來封存群組映射表L2P_G方法的流程圖;第8圖圖解加入或移除鏈結串列的節點;第9圖圖解一般節點的加入或移除;第10圖圖解一種補足鏈結串列LLFree節點數量的技術;以及第11圖圖解另一種補足鏈結串列LLFree節點數量的技術。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(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圖圖解快閃記憶體的物理架構,圖示為一區塊BLK。第2圖圖解快閃記憶體操作用的映射資訊,圖示為包括複數個群組映射表L2P_G#。第3圖圖解一種鏈結串列技術,用於快閃記憶體映射資訊的暫存管理。第4圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置400。
參閱第4圖,其中包括快閃記憶體402、記憶體控制器404以及暫存記憶體406。主機408可透過記憶體控制器404間接地存取快閃記憶體402中的資料。另外,記憶體控制器404可對快閃記憶體402進行最佳化操作,例如:垃圾回收(Garbage Collection)、耗
損平均(Wear Leveling)、區塊資料搬移(Block Data Transfer)…等。記憶體控制器404可利用暫存記憶體406來暫存資料,以加速資料的存取。暫存記憶體406可為DRAM。
快閃記憶體402之物理空間是劃分為複數個區塊(Blocks)配置使用。第1圖圖解區塊BLK之結構,其中包括複數頁面(Pages),例如,頁面0…頁面255。各頁面包括複數個區段(Sectors)。例如,圖示各頁面包括4個區段。16KB空間的頁面可由四個4KB的區段組成。一種實施方式中,一區塊係根據頁面編號,由低至高編號(例如,頁面0至頁面255)配置來儲存使用者資料。一種實施方式中,資料儲存裝置採用多通道技術,係以跨通道的超級區塊(Super Block)、超級頁面(Super Page)管理儲存空間,將可提升資料儲存裝置的數據吞吐量。另外,如果再採用交錯式(Interleaving)存取方式,資料儲存裝置的數據吞吐量可再進一步提升。
快閃記憶體402有其特殊的儲存特性。舊資料更新並非同空間複寫。新版的資料需被寫入閒置空間,而舊空間內容將被標為無效。區塊可能零星留存有效資料,可以垃圾回收(Garbage Collection)技術搬移到閒置空間。徒留無效資料的區塊得以被抹除(Erase)再利用。快閃記憶體402的物理空間是動態地被配置使用。相較於主機(Host)端是以邏輯位址(例如,邏輯區塊位址LBA或全域主機頁編號GHP…等)區別資料,各邏輯位址究竟對應至快閃記憶
體哪一個物理空間(哪一區塊、哪一頁面、哪一區段)需以邏輯位址-物理空間映射表(Logical-to-Physical mapping table,L2P映射表,如載於系統資訊區塊池410)管理,其中,邏輯位址例如是邏輯區塊位址(Logical Block Address,LBA)。
快閃記憶體402多種操作都需參考、或可能牽動映射資訊。快閃記憶體402之讀取需要參考L2P映射表(410所記錄的映射資訊)。資料寫入快閃記憶體402之後則會更新L2P映射表(存於410)。除了因應主機408的讀、寫要求,資料儲存裝置400可能還會啟動其他程序,例如:垃圾回收(Garbage Collection)、耗損平均(Wear Leveling)…等。以上操作也都涉及L2P映射表(存於410)之參考或更新。因應之,資料儲存裝置400通常需要配置暫存記憶體406(如DRAM),將全部或部份L2P映射表(存於410)上載至暫存記憶體406,以加速映射資訊之參考或更新。
然而,隨著快閃記憶體402的儲存容量提升,L2P映射表(存於410)的大小也跟著變大,因此,L2P映射表(存於410)之維護變成一個重要的技術課題。一種實施方式中,4KB大小的資料的物理位址以4B大小數值來表示,如果資料儲存裝置400的儲存容量為1TB,則資料儲存裝置400需要1GB大小的L2P映射表(存於410)來管理1TB大小的資料,因此,資料儲存裝置400需配置至少1GB大小的暫存記憶體406。
考量DRAM的採購成本或儲存容量的限制,本案將邏輯位址區分為多個邏輯位址群組,例如:1024個,據以將L2P映射表(存於410)劃分為複數個群組映射表L2P_G,被呼叫到的群組映射表L2P_G才會被上載至DRAM,作為參考或更新。第2圖圖解群組映射表L2P_G之定義。一種實施方式是以定量的邏輯位址切割L2P映射表(存於410),形成對應不同邏輯位址群組的複數個群組映射表L2P_G,例如:群組映射表L2P_G0包含LBA0~LBA1023之映射資訊,群組映射表L2P_G1包含LBA1024~LBA2047之映射資訊。相較於上載一整個L2P映射表(存於410),僅上載局部數量,例如:16個,群組映射表L2P_G僅需小量的儲存空間,因此,只需採購低成本的小容量的DRAM即可,此種硬體特徵又稱為部份(Partial)DRAM。
快閃記憶體402的區塊可依據不同的使用目的而有所區分,例如:儲存群組映射表L2P_G集合之L2P映射表的區塊稱為系統區塊,並推入至系統資訊區塊池410。取自閒置區塊池412的閒置區塊可作為主動區塊414,並用於接收來自主機408的使用者資料(簡稱為資料)。主動區塊414關閉後(例如,寫入區塊結尾(End Of Block,簡稱EOB)資訊後),將變更為資料區塊,並推入至資料區塊池416。當資料區塊不再包含有效的資料後,資料區塊變更為閒置區塊並推入至閒置區塊池412。另外,主動區塊414也可作為最佳化操作時的目的區塊。
如何有效率地管理DRAM中的群組映射表L2P_G成為一門重要的技術課題。本案揭露以鏈結串列(Linked List)來管理暫存在DRAM(406)的群組映射表L2P_G。DRAM(406)的儲存空間劃分成N個儲存空間以暫存N個群組映射表,N例如是16,每一儲存空間可由起始位址所表示,每一儲存空間的大小於1個群組映射表L2P_G的大小,鏈結串列則具有N個節點(Nodes),每個節點對應至一個儲存空間,即每個節點記錄一個起始位址,因此,可以利用鏈結串列的節點來實現群組映射表L2P_G的管理。
如第3圖所示,本案採用三條鏈結串列,每一鏈結串列具有不同的識別碼,扮演不同的功能。第一種鏈結串列用以記錄可使用的自由節點(Free Nodes),例如:共計有16個可使用的自由節點,稱為自由鏈結串列,以下將標號LLFree。另一種鏈結串列用以記錄已更新、需封存(Unsaved)的群組映射表L2P_G,稱為待封存鏈結串列,以下將標號LLUnsaved。第三種鏈結串列用以記錄沒有被更新(Unchanged)的群組映射表L2P_G,稱為無更新鏈結串列,以下將標號LLUunchanged。待封存鏈結串列LLUnsaved以及無更新鏈結串列LLUnchanged的節點數量一開始為0,之後,可將自由鏈結串列LLFree的節點變更成自身的節點。各鏈結串列的複數個節點自頭端(Head)節點一路串接到尾端(Tail)節點。節點的先後順序可表示其對應的群組映射表L2P_G的使用頻率。例如:頭端(Head)節點又稱為熱節點,這表示其對
應的群組映射表L2P_G近期有使用;相對的,尾端節點則稱為冷節點,這表示其對應的群組映射表L2P_G近期未使用。
第5圖圖解鏈結串列技術中節點500的資料結構,較佳包括以下資訊:pre_node:指標(Pointer)指向前一個節點的位址;next_node:指標指向下一個節點的位址;node_Addr:群組映射表L2P_G在暫存記憶體406的儲存位址;G#:群組映射表L2P_G的編號;node_ID:鏈結串列的識別碼,例如:自由鏈結串列LLFree、待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged。
記憶體控制器404可利用DRAM 406或內部記憶體405,例如:SRAM,來暫存前述自由鏈結串列LLFree、待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged,以加速群組映射表暫存區420中的群組映射表L2P_G的管理。此外,DRAM406或內部記憶體405更可暫存邏輯位址群組-節點映射表(G2N映射表),用以記錄邏輯群組映射表L2P_G編號與節點的映射關係。G2N映射表為可選擇的(Optional),記憶體控制器404亦可依序讀取自由鏈結串列LLFree、待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged中節點的內容來得知群組映射表
L2P_G的位址,或判斷群組映射表L2P_G是否記錄在自由鏈結串列LLFree、待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged的節點中。
第6圖為本發明以鏈結串列來管理群組映射表L2P_G方法的流程圖。步驟S610,記憶體控制器404建立具有複數個節點的自由鏈結串列LLFree,例如;記憶體控制器404在DRAM(406)上建立16個節點的自由鏈結串列LLFree。
步驟S620,記憶體控制器404將暫存記憶體406的儲存空間劃分成複數個群組儲存空間,例如;記憶體控制器404將DRAM(406)的儲存空間劃分成16個群組儲存空間,每一群組儲存空間用以儲存一個群組映射表L2P_G。
步驟S630,記憶體控制器404將複數個群組儲存空間的複數個起始位址分別記錄至複數個節點的儲存位址。記憶體控制器404將16個群組儲存空間在DRAM(406)上的位址(起始位址)一一記錄至16個節點的資訊node_Addr中。
步驟S640,記憶體控制器404將目標群組映射表L2P_G儲存至自由鏈結串列LLFree的尾端節點所記錄的儲存位址。記憶體控制器404可依據主機指令(讀、寫要求)或最佳化操作而存取目標群組映射表L2P_G,目標群組映射表L2P_G例如是群組映射表L2P_G13,則記憶體控制器404將群組映射表L2P_G13
自快閃記憶體402中讀出,並暫存至自由鏈結串列LLFree的尾端節點所記錄的儲存位址。
步驟S650,記憶體控制器404將目標群組映射表L2P_G的編號記錄至自由鏈結串列LLFree的尾端節點中。以群組映射表L2P_G13為例,記憶體控制器404將目標群組映射表L2P_G的編號13記錄至自由鏈結串列LLFree的尾端節點的資訊G#中。
步驟S660,記憶體控制器404將自由鏈結串列LLFree的尾端節點變更為待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged的頭端節點。記憶體控制器404依據主機408的讀、寫要求來變更目標群組映射表L2P_G所在的鏈結串列。回到第3圖,為了回應主機408的讀、寫要求,假設記憶體控制器404需要存取7個群組映射表L2P_G,分別為群組映射表L2P_G10、L2P_G11、L2P_G1、L2P_G12、L2P_G3、L2P_G20、L2P_G21。其中,群組映射表L2P_G10、L2P_G11用以回應主機408的讀要求,即僅作為參考而不做映射資訊更新,因此,執行完本發明以鏈結串列來管理群組映射表L2P_G方法的步驟後,記憶體控制器404依序將記錄在自由鏈結串列LLFree尾端節點的群組映射表L2P_G10、L2P_G11變更至無更新鏈結串列LLUnchanged的節點302、304。群組映射表L2P_G1、L2P_G12、L2P_G3用以回應主機408的寫要求,需要進行映射資訊的更新,因此,執行完本發明以鏈結串列來管理群組映射表L2P_G方法的步驟後,記憶體控制器
404依序將記錄在自由鏈結串列LLFree尾端節點的群組映射表L2P_G1、L2P_G12、L2P_G3依序上傳至待封存鏈結串列LLUnsaved的節點306、308以及310(頭端)。群組映射表L2P_G20、L2P_G21用以回應主機408的讀要求,因此,執行完本發明以鏈結串列來管理群組映射表L2P_G方法的步驟後,記憶體控制器404依序將記錄在自由鏈結串列LLFree尾端節點的群組映射表L2P_G20、L2P_G21變更至無更新鏈結串列LLUnchanged的節點312、314(頭端)。
由於7個自由節點已被使用,包括待封存鏈結串列LLUnsaved使用了3個自由節點以及無更新鏈結串列LLUnchanged使用了4個自由節點,所以自由鏈結串列LLFree中可使用的自由節點只剩下9個。
當欲存取目標群組映射表L2P_G時,例如:無更新鏈結串列LLUnchanged的節點302所對應的群組映射表L2P_G10,記憶體控制器404可依據群組映射表L2P_G10的編號10來查詢G2N映射表,若編號10記錄在G2N映射表中,則讀取G2N映射表中編號10所對應的節點,即節點302,記憶體控制器404再依據節點302中的資訊node_Addr即可取得群組映射表L2P_G10,接著,記憶體控制器404可參考或更新目標群組映射表L2P_G所記錄的映射資訊,以回應主機408的讀、寫要求。若目標群組映射表L2P_G為群組映射表L2P_G9,編號9未記錄在G2N映
射表中,這表示群組映射表L2P_G9並未記錄在任一鏈結串列中,則記憶體控制器404執行本發明以鏈結串列來管理群組映射表L2P_G方法以取得群組映射表L2P_G9。
當資料開始寫入至主動區塊414,記憶體控制器404可在暫存記憶體406上維護物理-邏輯(Physical to Logical Addresses,P2L)映射表418,顯示主動區塊414之物理空間究竟儲存那些邏輯位址的資料,即記錄物理空間至邏輯位址的映射資訊。之後,記憶體控制器404可利用P2L映射表418來更新群組映射表L2P_G的內容。
記憶體控制器404將待封存鏈結串列LLUnsaved的節點所對應的群組映射表L2P_G寫入至快閃記憶體402,應該自待封存鏈結串列LLUnsaved中移除,以免被重覆寫入至快閃記憶體402。為了滿足上述需求,本發明揭露一種以鏈結串列來封存群組映射表L2P_G方法,如第7圖,其中,多種觸發條件皆可啟動本發明以鏈結串列來封存群組映射表L2P_G方法,例如:閥值時間(例如:100ms)、封存閥值(例如:數值等於4)、自由鏈結串列LLFree的節點數目小於等於節點閥值(例如:數值等於2)、發生掉電事件等等。
步驟S710,記憶體控制器404判斷群組映射表的封存條件是否滿足,如果是則執行步驟S720,如果否則持續監控群組映射表的封存條件是否滿足。
步驟S720,記憶體控制器404選取第一鏈結串列中的複數節點。一種實施方式中,所述第一鏈結串列為待封存鏈結串列LLUnsaved。記憶體控制器404選取待封存鏈結串列LLUnsaved的複數節點,例如:從尾端倒數的4個節點,分別對應至群組映射表L2P_G1、L2P_G12、L2P_G3以及L2P_G30。
步驟S730,記憶體控制器404依據所選取的節點所記錄的複數儲存位址取得複數群組映射表。如前述第一鏈結串列為待封存鏈結串列LLUnsaved的例子,記憶體控制器404依據4個節點所記錄的4個儲存位址即可取得群組映射表L2P_G1、L2P_G12、L2P_G3以及L2P_G30。
步驟S740,記憶體控制器404將複數群組映射表寫入快閃記憶體。記憶體控制器404以預設編程模式,例如:TLC或QLC編程模式,或非預設編程模式,例如:SLC編程模式,將群組映射表L2P_G1、L2P_G12、L2P_G3以及L2P_G30寫入快閃記憶體402,其中,4個群組映射表L2P_G較佳寫入系統區塊的同一頁面中。
步驟S750,記憶體控制器404將所選取的複數節點自第一鏈結串列中的移除。如前述第一鏈結串列為待封存鏈結串列LLUnsaved的例子,記憶體控制器404將被選取的4個節點自待封存鏈結串列LLUnsaved中的移除,此時,待封存鏈結串列LLUnsaved中原尾端倒數的第5個節點將成為新的尾端節點。
步驟S760,記憶體控制器404將所選取的複數節點加入至第二鏈結串列的頭部。基於前述第一鏈結串列為待封存鏈結串列LLUnsaved的例子,一種實施方式更令所述第二鏈結串列為無更新鏈結串列LLUnchanged。記憶體控制器404將4個節點加入至無更新鏈結串列LLUnchanged的頭部,此時,待封存鏈結串列LLUnsaved中原尾端倒數的第4個節點將成為無更新鏈結串列LLUnchanged的新的頭部節點。
在上述中,記憶體控制器404藉由改變節點的資訊pre_node、next_node以及node_ID的值來改變節點位置。另外,當一個節點被移除或加入時,記憶體控制器404也需要改變其他節點的內容,例如:被移除或加入節點的上一個以及下一個節點的內容,以保持鏈結串列的完整性。
第8圖圖解加入或移除鏈結串列的節點。假設自由鏈結串列LLFree尾端節點記錄群組映射表L2P_G13,此時,記憶體控制器404欲更新群組映射表L2P_G13的內容,則自由鏈結串列LLFree尾端節點,如箭頭802,自自由鏈結串列LLFree中移除,並加入至待封存鏈結串列LLUnsaved而成為頭端節點,之後,記憶體控制器404可更新群組映射表L2P_G13的內容。另一方面,如果記憶體控制器404欲參考更新群組映射表L2P_G13的內容,則自由鏈結串列LLFree尾端節點,如箭頭806,自自由鏈結串列LLFree中移除,並加入至無更新鏈結串列LLUnchanged而成為頭端節點,之後,
記憶體控制器404可參考群組映射表L2P_G13的內容。如果記憶體控制器404欲參考更新群組映射表L2P_G13的內容以完成最佳化操作,則自由鏈結串列LLFree尾端節點,如箭頭804,在自由鏈結串列LLFree中移動,成為自由鏈結串列LLFree頭端節點,之後,記憶體控制器404可參考群組映射表L2P_G13的內容。
另外,記憶體控制器404可依據其需求而改變節點的位置,如第9圖所示,假設自由鏈結串列LLFree其中之一節點記錄群組映射表L2P_G13,此時,記憶體控制器404欲更新群組映射表L2P_G13的內容,則此節點,如箭頭902,自自由鏈結串列LLFree中移除,並加入至待封存鏈結串列LLUnsaved而成為頭端節點,之後,記憶體控制器404可更新群組映射表L2P_G13的內容。如果記憶體控制器404欲參考更新群組映射表L2P_G13的內容以完成最佳化操作,則此節點,如箭頭906,在自由鏈結串列LLFree中移動,搬移至自由鏈結串列LLFree頭端,之後,記憶體控制器404可參考群組映射表L2P_G13的內容。假設群組映射表L2P_G13並非記錄在自由鏈結串列LLFree,而是記錄在無更新鏈結串列LLUnchanged其中之一節點,記憶體控制器404欲更新群組映射表L2P_G13的內容,則此節點,如箭頭904,自無更新鏈結串列LLUnchanged中移除,並加入至待封存鏈結串列LLUnsaved而成為頭端節點,之後,記憶體控制器404可更新群組映射表L2P_G13的內容。
另外,為了減輕記憶體控制器404的運算負擔,已暫存在群組映射表暫存區420的群組映射表L2P_G13再次利用時,也可設計成不改動其鏈結管理。例如,群組映射表L2P_G13需再次被參考以回應主機408的讀取要求或完成最佳化操作,如果記錄群組映射表L2P_G13的節點已置於待封存鏈結串列LLUnsaved或無更新鏈結串列LLUnchanged,則不改動節點位置以減輕記憶體控制器404的運算負擔。一種實施方式中,群組映射表L2P_G13需再次被更新以回應主機408的寫入指令或完成最佳化操作,如果記錄群組映射表L2P_G13的節點屬於待封存鏈結串列LLUnsaved,則不改動節點位置以減輕記憶體控制器404的運算負擔。
自由鏈結串列LLFree須維持不小於節點閥值的節點數量,如果自由鏈結串列LLFree的節點數量等於或小於節點閥值,如第10圖所示,記憶體控制器404將無更新鏈結串列LLUnchanged尾端節點加入至自由鏈結串列LLFree並成為頭端節點,如此一來,自由鏈結串列LLFree的節點數量即可大於節點閥值。或者,如第11圖所示,記憶體控制器404依據待封存鏈結串列LLUnsaved尾端節點的內容以取得已更新的群組映射表L2P_G13的儲存位址,再將已更新的群組映射表L2P_G13寫入至快閃記憶體402,完成L2P映射表(存於410)的更新,如箭頭1102所示。接著,記憶體控制器404將待封存鏈結串列LLUnsaved尾端節點加入至自
由鏈結串列LLFree並成為頭端節點,如此一來,自由鏈結串列LLFree的節點數量即可大於節點閥值,如箭頭1104所示。
根據本案自由鏈結串列LLFree、待封存鏈結串列LLUnsaved或無更新鏈結串列LLUunchanged,暫存記憶體406的群組映射表暫存區420的使用可被最佳化,因此,即使僅配置部份DRAM,資料儲存裝置仍可提供不錯的系統效能。
以上記憶體控制器404對快閃記憶體402之操作設計也可以由其他結構實現。凡是使用多個鏈結串列來管理群組映射表L2P_G的技術,都屬於本案欲保護範圍。本案更可以前述概念實現非揮發式記憶體的控制方法。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
400:資料儲存裝置
402:快閃記憶體
404:記憶體控制器
405:記憶體控制器404的內部記憶體
406:暫存記憶體
408:主機
410:系統資訊區塊池
412:閒置區塊池
414:主動區塊
416:資料區塊池
418:主動區塊映射表
420:群組映射表暫存區
G2N:邏輯群-節點映射表
LLFree:自由鏈結串列
LLUnchanged:無更新鏈結串列
LLUnsaved:待封存鏈結串列
Claims (18)
- 一種資料儲存裝置,包括:一非揮發式記憶體,載有複數個群組映射表組成的一映射表,記錄一主機辨識用的邏輯位址如何映射至該非揮發式記憶體的物理空間;以及一記憶體控制器以及一暫存記憶體,其中:該記憶體控制器運用該暫存記憶體操作該非揮發式記憶體;該記憶體控制器在該暫存記憶體上規劃一群組映射表暫存區,對應複數個節點供自該非揮發式記憶體載出的群組映射表暫存,且以鏈結串列方式管理該等節點;且該記憶體控制器以一待封存鏈結串列使該群組映射表暫存區中經過更新而待封存的群組映射表與其他沒有被更新的群組映射表區別。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該記憶體控制器初始化以一自由鏈結串列管理該群組映射表暫存區對應的所有節點;且更新無節點對應的一第一群組映射表時,該記憶體控制器將該自由鏈結串列的尾端節點改動為該待封存鏈結串列的頭端節點,並自該非揮發式記憶體將該第一群組映射表載至該群組映射表暫存區,由該待封存鏈結串列的頭端節點管理。
- 如申請專利範圍第2項所述之資料儲存裝置,其中:該記憶體控制器更管理一無更新鏈結串列;根據該主機的讀取要求呼叫無節點對應的一第二群組映射表時,該記憶體控制器將該自由鏈結串列的尾端節點改動為該無更新鏈結串列的頭端節點,並自該非揮發式記憶體將該第二群組映射表載至該群組映射表暫存區,由該無更新鏈結串列的頭端節點管理。
- 如申請專利範圍第3項所述之資料儲存裝置,其中:若非該主機要求而呼叫無節點對應、且不更新的一第三群組映射表,該記憶體控制器將該自由鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點,並自該非揮發式記憶體將該第三群組映射表載至該群組映射表暫存區,由該自由鏈結串列的頭端節點管理。
- 如申請專利範圍第4項所述之資料儲存裝置,其中:更新該無更新鏈結串列管理的一第四群組映射表時,該記憶體控制器將其節點改動為該待封存鏈結串列的頭端節點。
- 如申請專利範圍第5項所述之資料儲存裝置,其中:更新該自由鏈結串列管理的一第五群組映射表時,該記憶體控制器將其節點改動為該待封存鏈結串列的頭端節點。
- 如申請專利範圍第6項所述之資料儲存裝置,其中:非該主機要求而呼叫該自由鏈結串列管理的一第六群組映射表、且不更新該第六群組映射表時,該記憶體控制器將其節點改動為該自由鏈結串列的頭端節點。
- 如申請專利範圍第7項所述之資料儲存裝置,其中:該自由鏈結串列的節點總數低於一第一定量、且該無更新鏈結串列的節點總數不低於一第二定量時,該記憶體控制器將該無更新鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點。
- 如申請專利範圍第8項所述之資料儲存裝置,其中:該自由鏈結串列的節點總數低於該第一定量、且該無更新鏈結串列的節點總數低於該第二定量時,該記憶體控制器將該待封存鏈結串列的尾端節點所管理的群組映射表封存回該非揮發式記憶體後,改動為該自由鏈結串列的頭端節點。
- 一種非揮發式記憶體控制方法,包括:令一非揮發式記憶體載有複數個群組映射表組成的一映射表,記錄一主機辨識用的邏輯位址如何映射至該非揮發式記憶體的物理空間;運用一暫存記憶體操作該非揮發式記憶體;在該暫存記憶體上規劃一群組映射表暫存區,對應複數個節點供自該非揮發式記憶體載出的群組映射表暫存,且以鏈結串列方式管理該等節點;且以一待封存鏈結串列使該群組映射表暫存區中經過更新而待封存的群組映射表與其他沒有被更新的群組映射表區別。
- 如申請專利範圍第10項所述之非揮發式記憶體控制方法,更包括: 初始化以一自由鏈結串列管理該群組映射表暫存區對應的所有節點;且更新無節點對應的一第一群組映射表時,將該自由鏈結串列的尾端節點改動為該待封存鏈結串列的頭端節點,並自該非揮發式記憶體將該第一群組映射表載至該群組映射表暫存區,由該待封存鏈結串列的頭端節點管理。
- 如申請專利範圍第11項所述之非揮發式記憶體控制方法,更包括:管理一無更新鏈結串列;根據該主機的讀取要求呼叫無節點對應的一第二群組映射表時,將該自由鏈結串列的尾端節點改動為該無更新鏈結串列的頭端節點,並自該非揮發式記憶體將該第二群組映射表載至該群組映射表暫存區,由該無更新鏈結串列的頭端節點管理。
- 如申請專利範圍第12項所述之非揮發式記憶體控制方法,更包括:若非該主機要求而呼叫無節點對應、且不更新的一第三群組映射表,將該自由鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點,並自該非揮發式記憶體將該第三群組映射表載至該群組映射表暫存區,由該自由鏈結串列的頭端節點管理。
- 如申請專利範圍第13項所述之非揮發式記憶體控制方法,更包括: 更新該無更新鏈結串列管理的一第四群組映射表時,將其節點改動為該待封存鏈結串列的頭端節點。
- 如申請專利範圍第14項所述之非揮發式記憶體控制方法,更包括:更新該自由鏈結串列管理的一第五群組映射表時,將其節點改動為該待封存鏈結串列的頭端節點。
- 如申請專利範圍第15項所述之非揮發式記憶體控制方法,更包括:非該主機要求而呼叫該自由鏈結串列管理的一第六群組映射表、且不更新該第六群組映射表時,將其節點改動為該自由鏈結串列的頭端節點。
- 如申請專利範圍第16項所述之非揮發式記憶體控制方法,更包括:該自由鏈結串列的節點總數低於一第一定量、且該無更新鏈結串列的節點總數不低於一第二定量時,將該無更新鏈結串列的尾端節點改動為該自由鏈結串列的頭端節點。
- 如申請專利範圍第17項所述之非揮發式記憶體控制方法,更包括:該自由鏈結串列的節點總數低於該第一定量、且該無更新鏈結串列的節點總數低於該第二定量時,將該待封存鏈結串列的尾端節點 所管理的群組映射表封存回該非揮發式記憶體後,改動為該自由鏈結串列的頭端節點。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910782955.XA CN111610929B (zh) | 2019-02-26 | 2019-08-23 | 数据储存装置以及非挥发式存储器控制方法 |
US16/585,583 US11182286B2 (en) | 2019-02-26 | 2019-09-27 | 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 |
---|---|
TW202032377A TW202032377A (zh) | 2020-09-01 |
TWI706250B true TWI706250B (zh) | 2020-10-01 |
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 After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Country Status (1)
Country | Link |
---|---|
TW (4) | TWI706250B (zh) |
Families Citing this family (1)
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 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587427B2 (en) * | 2005-09-30 | 2009-09-08 | Fujitsu Limited | Hierarchical storage system, and control method and program therefor |
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 |
TW201413453A (zh) * | 2012-09-20 | 2014-04-01 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
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 |
TW201826126A (zh) * | 2017-01-06 | 2018-07-16 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 | 慧榮科技股份有限公司 | 資料儲存裝置、其控制單元及其任務排序方法 |
KR102615593B1 (ko) * | 2016-05-04 | 2023-12-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10559344B2 (en) * | 2016-09-16 | 2020-02-11 | Aspiring Sky Co. Limited | Hybrid non-volatile memory devices with static random access memory (SRAM) array and non-volatile memory (NVM) array |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
KR20180135188A (ko) * | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
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 (5)
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 |
US7587427B2 (en) * | 2005-09-30 | 2009-09-08 | Fujitsu Limited | Hierarchical storage system, and control method and program therefor |
TW201413453A (zh) * | 2012-09-20 | 2014-04-01 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
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 |
TW201826126A (zh) * | 2017-01-06 | 2018-07-16 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202032377A (zh) | 2020-09-01 |
TW202032375A (zh) | 2020-09-01 |
TW202032563A (zh) | 2020-09-01 |
TWI713032B (zh) | 2020-12-11 |
TWI724483B (zh) | 2021-04-11 |
TW202032374A (zh) | 2020-09-01 |
TWI726381B (zh) | 2021-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196226B (zh) | 固态驱动器中的分区命名空间 | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
KR101759811B1 (ko) | 솔리드 스테이트 메모리를 포멧팅하기 위한 메모리 제어기, 방법, 및 솔리드 스테이트 메모리 시스템 | |
CN110955384B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US8626987B2 (en) | Flash memory system and defragmentation method | |
US8239639B2 (en) | Method and apparatus for providing data type and host file information to a mass storage system | |
US10061710B2 (en) | Storage device | |
KR20080032636A (ko) | 논리 어드레스 공간 전반에 걸쳐 그리고 직접 데이터 파일기반 위에서 동작하는 인터페이싱 시스템 | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP2009503743A (ja) | データファイルを直接記憶するメモリブロックの管理 | |
KR102656959B1 (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
CN114730282A (zh) | Zns奇偶校验交换到dram | |
CN112130749A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN111610931B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け | |
CN111610929B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI706250B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN117616377A (zh) | 跨zns ssd中的超级设备的超级块分配 | |
TWI705328B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN114730291A (zh) | 具有分区的ssd的数据停放 | |
TW202127258A (zh) | 多階層映射資訊管理之資料儲存裝置以及非揮發式記憶體控制方法 | |
US11809747B2 (en) | Storage system and method for optimizing write-amplification factor, endurance, and latency during a defragmentation operation | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
CN117369715A (zh) | 基于存储设备中的引用更新使用回收单元的系统、方法和设备 |