TWI724550B - 資料儲存裝置以及非揮發式記憶體控制方法 - Google Patents
資料儲存裝置以及非揮發式記憶體控制方法 Download PDFInfo
- Publication number
- TWI724550B TWI724550B TW108133729A TW108133729A TWI724550B TW I724550 B TWI724550 B TW I724550B TW 108133729 A TW108133729 A TW 108133729A TW 108133729 A TW108133729 A TW 108133729A TW I724550 B TWI724550 B TW I724550B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- data
- volatile memory
- main source
- group
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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; 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
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 (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種非揮發式記憶體高效控制技術。一控制器自該非揮發式記憶體選擇一主要來源區塊,該主要來源區塊涉及的邏輯位址的一群組數量超過一閥值。該控制器自該主要來源區塊選定一目標群組,收集該目標群組的資料至該非揮發式記憶體提供的一目的區塊,以降低該主要來源區塊的該群組數量。
Description
本發明係有關於非揮發式記憶體之控制。
非揮發式記憶體有多種形式─例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM, STT-RAM)…等,用於長時間資料保存,可做為儲存媒體實現一資料儲存裝置。
非揮發式記憶體通常有其特殊的儲存特性。本技術領域需要相應非揮發式記憶體的儲存特性發展相應的控制技術。
本案揭露一種非揮發式記憶體高效控制技術。
根據本案一種實施方式實現的一資料儲存裝置包括一非揮發式記憶體以及控制該非揮發式記憶體的一控制器。該控制器自該非揮發式記憶體選擇一主要來源區塊,該主要來源區塊涉及的邏輯位址的一群組數量超過一閥值。該控制器自該主要來源區塊選定一目標群組,收集該目標群組的資料至該非揮發式記憶體提供的一目的區塊,以降低該主要來源區塊的該群組數量。
一種實施方式中,除了該主要來源區塊,該控制器更將該目標群組遍及該非揮發式記憶體中其他區塊的資料收集至該目的區塊。
一種實施方式中,該控制器反覆依照群組將資料自該主要來源區塊移出,直至該主要來源區塊的該群組數量不超過該閥值。
一種實施方式中,該控制器係在不回應一主機時,依照群組將資料自該主要來源區塊移出,使該主要來源區塊的該群組數量不超過該閥值。
一種實施方式中,該控制器更隨著該資料儲存裝置之使用動態調升該閥值。
一種實施方式中,該控制器將該目標群組的一目標群組映射表自該非揮發式記憶體載入一暫存記憶體。根據該暫存記憶體所載的該目標群組映射表,該控制器將該非揮發式記憶體中該目標群組的所有有效資料複製至該目的區塊。該控制器在該暫存記憶體上修正該目標群組映射表指向該目的區塊,並將該目標群組映射表自該暫存記憶體回存該非揮發式記憶體。
一種實施方式中,該控制器取該主要來源區塊中數據量最大的群組為該目標群組。
一種實施方式中,該控制器將一主機下達的寫入資料程式化至該非揮發式記憶體的一主動區塊,並計數該主動區塊之邏輯位址的一群組數量。該控制器在關閉該主動區塊時,判斷該主動區塊的該群組數量是否高於該閥值,以決定該主動區塊關閉後是否作為該主要來源區塊。
以上記憶體控制器對非揮發式記憶體之操作也可以由其他結構實現。本案更可以前述概念實現非揮發式記憶體的控制方法。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(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)端是以邏輯位址(例如,邏輯區塊位址LBA或全域主機頁編號GHP…等)來區別資料。至於資料實際儲存在快閃記憶體何處,則是以映射方式管理。
快閃記憶體之物理空間是劃分為複數個區塊(Blocks)配置使用。第1圖圖解快閃記憶體中區塊Blk之結構。區塊Blk包括複數頁面(Pages),例如,頁面0…頁面255。一種實施方式係根據頁編號─由低編號至高編號─循序使用一區塊的儲存空間。各頁面包括複數個區段(Sectors),例如32個區段,每一區段可儲存512B長度的使用者資料。一次寫入可能涉及多個區段。例如,在4KB資料管理模式下,可將8個區段視為一個資料單元,進行管理。一次寫入可能涵蓋8個區段長度。16KB長度的頁面可由四個資料單元(32個區段)所組成;四個資料單元的邏輯關係可能不連續。
特別是,同樣邏輯位址的資料更新並非覆寫至舊資料的儲存空間,新版本的資料須寫入閒置空間(空白的區段)。舊空間的內容則標示為無效。區塊可能僅零星留存有效資料。由於快閃記憶體的儲存空間需抹除(Erase)後方能再次使用,閒置區塊逐漸消耗。閒置區塊數量不足時(如,低於閥值),垃圾回收(Garbage Collection)需求產生。區塊留存的零星有效資料經垃圾回收集中到其他空間。徒留無效資料的區塊則抹除再利用,拉升閒置區塊數量,確保快閃記憶體之正常使用。垃圾回收也可能使得同區塊內容的邏輯關係更零散。
由前述內容可知,映射資訊的維護將顯著影響快閃記憶體控制效能。一種實施方式中,主機區別用的邏輯位址到底使用快閃記憶體何處空間是以邏輯-物理位址(Logical-to-Physical,L2P)映射表紀錄。一種實施方式中, L2P映射表的尺寸龐大,因應之,邏輯位址分為複數個邏輯位址的群組,每一群組對應至一個群組映射表L2P_G#,因此,L2P映射表可以劃分為複數個群組映射表L2P_G#,例如,2048個群組映射表L2P_G#。當進行資料存取時,被參考或更新的特定群組映射表L2P_G#才會被載出。相較於載出完整的L2P映射表,採用群組映射表L2P_G#具有存取快速以及管理方便的優點。
第2圖圖解群組映射表L2P_G#之定義。一種實施方式是以定量的邏輯位址切割L2P映射表,例如:1024個邏輯位址,例如:群組映射表L2P_G#0記錄LBA#0~LBA#1023所對應的物理位址,群組映射表L2P_G#1記錄LBA#1024~LBA#2047所對應的物理位址,每一物理位址例如以4B記錄。
在最理想的情況下,資料區塊依序儲存邏輯位址群組G#所對應的資料,例如,資料區塊#0儲存L2P_G#0~#1所對應的資料,資料區塊#1儲存L2P_G#2~#3所對應的資料,以此類推。在此情況下,當執行垃圾回收程序時,所需讀取以及更新的群組映射表L2P_G#的數量為最小值。然而,資料區塊並非依序儲存群組映射表L2P_G#所對應的資料,在最糟的情況下,資料區塊可能儲存對應至不同群組映射表L2P_G#的資料,例如,單一資料區塊所儲存的資料對應至1024個群組映射表L2P_G#。在此情況下,當執行垃圾回收程序時,讀取以及更新1024個群組映射表L2P_G#將嚴重地消耗系統資源及時間,造成系統效能的顯著降低。
為了解決上述問題以及增加垃圾回收程序的效率,本案揭露一種資料整理方法,此資料整理方法會監控單一資料區塊所涉及的群組映射表L2P_G#的數量,並將部份群組映射表L2P_G#所對應的資料搬移至另一區塊,如此一來,此資料區塊所涉及的群組映射表L2P_G#的數量有可效地降低。之後,當此區塊作為垃圾回收程序中的來源區塊時,可有效降低群組映射表L2P_G#的讀取及更新數量,進而達到增加/維持垃圾回收程序效率的目的。
第3圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置300,其中包括快閃記憶體302、控制器304以及暫存記憶體306。主機308係透過控制器304操作快閃記憶體302。資料儲存裝置300內部也可經控制器304發動快閃記憶體302之最佳化操作;整理快閃記憶體302空間,使其發揮最大儲存效能。控制器304進行運算時是以暫存記憶體306暫存資料。暫存記憶體306可為動態隨機存取記憶體(DRAM)或SRAM。
快閃記憶體302中的區塊可依據其使用狀態而給予不同的名稱,例如,區塊未寫入資料時則稱為備用區塊,區塊正在寫入資料時則稱為主動區塊,區塊寫滿資料後則稱為資料區塊。系統區塊池310中的系統資料區塊儲存所有的群組映射表L2P_G#。取自備用區塊池312的備用區塊可以作為主動區塊A0,用於儲存來自主機308的寫入指令的使用者資料(簡稱為資料)。對應主動區塊A0的物理空間配置狀況,控制器304在暫存記憶體306上記錄物理-邏輯位址(P2L,Physical-to-Logical address的簡寫)映射表,或是P2L映射表,記錄主動區塊A0物理空間所儲存的資料的邏輯位址,即資料的物理位址與邏輯位址的映射關係。控制器304可利用P2L映射表來更新L2P映射表的內容,並在P2L映射表寫入至主動區塊A0後(例如,區塊結尾資訊EOB之填寫),再將主動區塊A0推入資料區塊池314而成為資料區塊。此外,控制器304可依據P2L映射表、或根據隨主動區塊A0儲存資料而即時記錄/更新的資訊,得知一區塊(可已歸類為資料區塊,或尚為主動區塊)涉及的群組映射表L2P_G#編號G#以及數量Total_G#。一種實施方式中,一區塊涉及的群組映射表L2P_G#編號G#以及數量Total_G#也是在主動區塊A0關閉的區塊結尾資訊EOB填寫時,填入該區塊中。
當啟動本案資料整理方法後,控制器304會週期性或非週期性地檢查資料區塊所對應的群組映射表L2P_G#的群組數量Total_G#。若有資料區塊的群組數量Total_G#大於閥值,例如:第3圖中資料區塊BLK#1的群組數量Total_G#等於4,大於數值3,控制器304會自資料區塊BLK#1中選定一個目標群組映射表L2P_G#,例如:群組映射表L2P_G#2,從資料區塊BLK#1以及其他資料區塊(如,區塊Blk2以及Blk3,甚至主動區塊A0)中將群組映射表L2P_G#2所對應至的資料複製到主動區塊A1。當資料複製完成後,資料區塊BLK#1所儲存的群組映射表L2P_G#2所對應的資料不再有效,因此,資料區塊BLK#1的群組數量Total_G#減少至3,不再大於閥值。如果資料區塊BLK#1的群組數量Total_G#遠大於3時,控制器304可以重覆上次步驟,或是,一次選取多個目標群組映射表L2P_G#,例如:群組映射表L2P_G#2~#3,並進行上述的資料複製,令資料區塊BLK#1的群組數量Total_G#可以快速地減少,並小於等於閥值。由於主動區塊A1中是收集相關群組的完整資料,所涉及的群組數量Total_G#有限,必定小於閥值。最後,當主動區塊A1寫滿資料後,被推入資料區塊池314,也被歸類為資料區塊。
所述利用背景空閒時間對資料區塊進行整理,使資料區塊涉及的群組數量Total_G#有限的技術,也可以是在主動區塊A0推入資料區塊池314後,控制器304一有空閒時間即實行之。此方式無須掌握所有區塊的群組數量Total_G#資訊。控制器304除了動態紀錄當下主動區塊A0的群組數量Total_G#,僅需更掌握剛推入資料區塊池314而尚未整理的少數資料區塊的群組數量Total_G#即可。群組數量Total_G#無須作為區塊結束資訊EOB填入區塊尾端。
執行本案資料整理方法後,相同群組映射表L2P_G#的資料將被收集在同一個資料區塊,這使得連續邏輯位址的讀取要求可被迅速地執行及回覆,因此,可以增加資料儲存裝置300的讀取效能。而當執行垃圾回收程序時,如果資料區塊BLK#1被選取作為來源區塊,由於資料區塊BLK#1的群組數量Total_G#已減少,因此,控制器304僅需自系統區塊池310中讀取少量的群組映射表L2P_G#,再更新少量群組映射表L2P_G#的內容,如此一來,垃圾回收程序可以快速地執行並完成,達成本發明的目的。
在上述中,閥值可為固定值,或是非固定值。隨著時間過去,每一資料區塊所所對應的群組映射表L2P_G#數量可能會逐漸增加,因此,採用固定的閥值可能不符合實際的需求,或是造成顯著的寫入放大(Write Amplification)效應。因此,控制器304可以將固定值加上一個變數值而成為閥值,此變數值例如是所有資料區塊所對應的群組映射表L2P_G#數量的平均值,如此一來,閥值的設定能夠符合實際的需求。
第4圖為本發明一種資料整理方法的流程圖,較佳由資料儲存裝置300中的控制器304所執行。
步驟S402,控制器304選取群組數量Total_G#大於閥值的資料區塊作為主要來源區塊。控制器304記錄並更新資料區塊的群組映射表L2P_G#的編號,並週期性或非週期性地檢查資料區塊的群組數量Total_G#是否大於閥值。以第3圖為例,資料區塊BLK#1所儲存的資料分別對應至群組映射表L2P_G#0、#2、#3以及#4,因此,資料區塊BLK#1的群組數量Total_G#等於4,大於閥值3,因此,控制器304選取資料區塊BLK#1作為主要來源區塊。在主要來源區塊的選取上,控制器304可以選取第一個群組數量Total_G#大於閥值的資料區塊,亦可選取群組數量Total_G#為最大值的資料區塊,亦可選取最新或最舊且其群組數量Total_G#大於閥值的資料區塊。
步驟S404,控制器304選取來源區塊中多個群組映射表L2P_G#的其中一個作為目標群組映射表L2P_G#。例如,控制器304選取群組映射表L2P_G#2作為目標群組映射表L2P_G#。在目標群組映射表L2P_G#的選取上,控制器304可以選取記錄上的第一個或最後一個群組映射表L2P_G#2,亦可選取具有最多或最少有效資料數量的群組映射表L2P_G#2。
步驟S406,控制器304讀取目標群組映射表L2P_G#。控制器304自系統區塊池310中的系統區塊中讀取群組G2的群組映射表L2P_G#2。
步驟S408,控制器304依據目標群組映射表L2P_G#來選取其他來源區塊。控制器304讀取群組映射表L2P_G#2的內容即可得知資料的物理位置。例如:除了資料區塊BLK#1,群組映射表L2P_G#2記錄了對應至資料區塊BLK#2以及資料區塊BLK#3的物理位址,因此,控制器304選取資料區塊BLK#2以及資料區塊BLK#3作為其他來源區塊。
步驟S410,控制器304選取一個備用區塊作為目的區塊。控制器304選取備用區塊池312中的一個備用區塊作為主動區塊A1,作為資料整理的目的區塊。當然,控制器304亦可選取主動區塊A0作為目的區塊。
步驟S412,控制器304將目標群組映射表L2P_G#所對應的資料自主要來源區塊以及其他來源區塊複製至目的區塊,並更新目標群組映射表L2P_G#。控制器304依據群組映射表L2P_G#2所記錄的物理位址,將主要來源區塊或其他來源區塊所儲存的資料複製至主動區塊A1。當資料複製完成後,再以主動區塊A1的P2L映射表來更新群組映射表L2P_G#2所記錄的物理位址。在資料的選取上,控制器304可以依序讀取群組映射表L2P_G#2所記錄的物理位址的資料,並將資料複製至主動區塊A1,亦可讀取群組映射表L2P_G#2所記錄的主要來源區塊的物理位址,並將來自主要來源區塊的資料複製至主動區塊A1,之後,再讀取群組映射表L2P_G#2所記錄的其他來源區塊的物理位址,再將來自其他來源區塊的資料複製至主動區塊A1。
步驟S414,控制器304更新主要來源區塊的群組數量Total_G#。
如果主要來源區塊的群組數量Total_G#仍大於閥值,可重新本發明資料整理方法,直到群組數量Total_G#小於等於閥值,或是,在步驟S406中,控制器304可讀取複數個目標群組映射表L2P_G#,以加速主要來源區塊的群組數量Total_G#的減少。
第5圖圖解本案一種實施方式的功效。曲線502顯示各資料區塊的群組數量Total_G#,有部份資料區塊的群組數量Total_G#較大並大過閥值Th。經過垃圾回收程序後,反而造成資料區塊的群組數量Total_G#的增加(如曲線504)。原本群組數量Total_G#超過閥值Th的資料區塊,在執行本發明資料整理方法後,群組數量Total_G#可顯著地降低並小於等於閥值Th如曲線506所示。
以上記憶體控制器304對快閃記憶體302之操作設計也可以由其他結構實現。凡是根據前述概念限制各區塊群組數量的技術,都屬於本案欲保護範圍。本案更可以前述概念實現非揮發式記憶體的控制方法。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
300~資料儲存裝置;
302~快閃記憶體;
304~控制器;
306~暫存記憶體;
308~主機;
310~系統區塊池;
312~備用區塊池;
314~資料區塊池;
316~群組映射表暫存區;
502、504、506~顯示各區塊群組數量的曲線;
A0、A1~主動區塊;
Blk~區塊;
Blk1、Blk2、Blk3~資料區塊;
G0、G2、G4、G3~群組;
G#~主動區塊A0涉及群組的編號;
L2P_G0…L2P_G3~群組映射表;
P2L~主動區塊A0的物理-邏輯位址映射表;
S402…S414~步驟;
Total_G#~主動區塊A0的群組數量。
第1圖圖解快閃記憶體一區塊Blk之結構;
第2圖圖解群組映射表L2P_G#之定義;
第3圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置300;
第4圖為本發明一種資料整理方法的流程圖;以及
第5圖圖解本案一種實施方式的功效。
300~資料儲存裝置;
302~快閃記憶體;
304~控制器;
306~暫存記憶體;
308~主機;
310~系統區塊池;
312~備用區塊池;
314~資料區塊池;
316~群組映射表暫存區;
A0、A1~主動區塊;
Blk1、Blk2、Blk3~資料區塊;
G0、G2、G4、G3~群組;
G#~主動區塊A0涉及群組的編號;
P2L~主動區塊A0的物理-邏輯位址映射表;
Total_G#~主動區塊A0的群組數量。
Claims (14)
- 一種資料儲存裝置,包括:一非揮發式記憶體;以及一控制器,控制該非揮發式記憶體,其中:該控制器自該非揮發式記憶體選擇一主要來源區塊,該主要來源區塊涉及的邏輯位址的一群組數量超過一閥值;且該控制器自該主要來源區塊選定一目標群組,收集該目標群組的資料至該非揮發式記憶體提供的一目的區塊,以降低該主要來源區塊的該群組數量,其中,除了該主要來源區塊,該控制器更將該目標群組遍及該非揮發式記憶體中其他區塊的資料收集至該目的區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器反覆依照群組將資料自該主要來源區塊移出,直至該主要來源區塊的該群組數量不超過該閥值。
- 如申請專利範圍第2項所述之資料儲存裝置,其中:該控制器係在不回應一主機時,依照群組將資料自該主要來源區塊移出,使該主要來源區塊的該群組數量不超過該閥值。
- 如申請專利範圍第2項所述之資料儲存裝置,其中:該控制器更隨著該資料儲存裝置之使用動態調升該閥值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器將該目標群組的一目標群組映射表自該非揮發式記憶體載入一暫存記憶體; 根據該暫存記憶體所載的該目標群組映射表,該控制器將該非揮發式記憶體中該目標群組的所有有效資料複製至該目的區塊;且該控制器在該暫存記憶體上修正該目標群組映射表指向該目的區塊,並將該目標群組映射表自該暫存記憶體回存該非揮發式記憶體。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器取該主要來源區塊中數據量最大的群組為該目標群組。
- 如申請專利範圍第1項所述之資料儲存裝置,其中:該控制器將一主機下達的寫入資料程式化至該非揮發式記憶體的一主動區塊,並計數該主動區塊之邏輯位址的一群組數量;且該控制器在關閉該主動區塊時,判斷該主動區塊的該群組數量是否高於該閥值,以決定該主動區塊關閉後是否作為該主要來源區塊。
- 一種非揮發式記憶體控制方法,包括:自一非揮發式記憶體選擇一主要來源區塊,該主要來源區塊涉及的邏輯位址的一群組數量超過一閥值;且自該主要來源區塊選定一目標群組,收集該目標群組的資料至該非揮發式記憶體提供的一目的區塊,以降低該主要來源區塊的該群組數量,其中,除了該主要來源區塊,更將該目標群組遍及該非揮發式記憶體中其他區塊的資料收集至該目的區塊。
- 如申請專利範圍第8項所述之非揮發式記憶體控制方法,更包括:反覆依照群組將資料自該主要來源區塊移出,直至該主要來源區塊的該群組數量不超過該閥值。
- 如申請專利範圍第9項所述之非揮發式記憶體控制方法,其中係 在不回應一主機時,依照群組將資料自該主要來源區塊移出,使該主要來源區塊的該群組數量不超過該閥值。
- 如申請專利範圍第9項所述之非揮發式記憶體控制方法,更包括:隨著該資料儲存裝置之使用動態調升該閥值。
- 如申請專利範圍第8項所述之非揮發式記憶體控制方法,更包括:將該目標群組的一目標群組映射表自該非揮發式記憶體載入一暫存記憶體;根據該暫存記憶體所載的該目標群組映射表,將該非揮發式記憶體中該目標群組的所有有效資料複製至該目的區塊;且在該暫存記憶體上修正該目標群組映射表指向該目的區塊,並將該目標群組映射表自該暫存記憶體回存該非揮發式記憶體。
- 如申請專利範圍第8項所述之非揮發式記憶體控制方法,其中係取該主要來源區塊中數據量最大的群組為該目標群組。
- 如申請專利範圍第8項所述之非揮發式記憶體控制方法,更包括:將一主機下達的寫入資料程式化至該非揮發式記憶體的一主動區塊,並計數該主動區塊之邏輯位址的一群組數量;且在關閉該主動區塊時,判斷該主動區塊的該群組數量是否高於該閥值,以決定該主動區塊關閉後是否作為該主要來源區塊。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108133729A TWI724550B (zh) | 2019-09-19 | 2019-09-19 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN201911072549.0A CN112527692B (zh) | 2019-09-19 | 2019-11-05 | 数据储存装置以及非挥发式存储器控制方法 |
US16/902,475 US11269534B2 (en) | 2019-09-19 | 2020-06-16 | Data storage device and non-volatile memory control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108133729A TWI724550B (zh) | 2019-09-19 | 2019-09-19 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202113610A TW202113610A (zh) | 2021-04-01 |
TWI724550B true TWI724550B (zh) | 2021-04-11 |
Family
ID=74880863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108133729A TWI724550B (zh) | 2019-09-19 | 2019-09-19 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11269534B2 (zh) |
CN (1) | CN112527692B (zh) |
TW (1) | TWI724550B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190121726A1 (en) * | 2017-10-20 | 2019-04-25 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and electronic device |
US20190171559A1 (en) * | 2017-12-05 | 2019-06-06 | Silicon Motion Inc. | Method for accessing flash module, associated flash controller and electronic device |
US20190220396A1 (en) * | 2018-01-18 | 2019-07-18 | Silicon Motion, Inc. | Data Storage Device |
Family Cites Families (19)
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 | 富士通株式会社 | 階層ストレージシステム、制御方法及びプログラム |
JP2010287049A (ja) * | 2009-06-11 | 2010-12-24 | Toshiba Corp | メモリシステムおよびメモリシステムの管理方法 |
KR101638061B1 (ko) * | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
US8990477B2 (en) * | 2012-04-19 | 2015-03-24 | Sandisk Technologies Inc. | System and method for limiting fragmentation |
US8892815B2 (en) * | 2012-09-13 | 2014-11-18 | Sandisk Technologies Inc. | Optimized fragmented block compaction with a bitmap |
US9268682B2 (en) * | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US9436696B2 (en) * | 2013-10-02 | 2016-09-06 | International Business Machines Corporation | Data fragmentation tuning and candidacy persistence |
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 |
US20170300249A1 (en) * | 2016-04-15 | 2017-10-19 | Western Digital Technologies, Inc. | Validity tracking for garbage collection |
US11126544B2 (en) * | 2016-12-14 | 2021-09-21 | Via Technologies, Inc. | Method and apparatus for efficient garbage collection based on access probability of data |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
US10101942B1 (en) * | 2017-04-17 | 2018-10-16 | Sandisk Technologies Llc | System and method for hybrid push-pull data management in a non-volatile memory |
TWI634424B (zh) * | 2017-05-08 | 2018-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
KR20180135188A (ko) * | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102593757B1 (ko) * | 2018-09-10 | 2023-10-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN110895513A (zh) * | 2018-09-12 | 2020-03-20 | 华为技术有限公司 | 一种***垃圾回收方法和固态硬盘中的垃圾回收方法 |
US20200226064A1 (en) * | 2019-01-15 | 2020-07-16 | Western Digital Technologies, Inc. | Method of reverse mapping and data consolidation to enhance random performance |
-
2019
- 2019-09-19 TW TW108133729A patent/TWI724550B/zh active
- 2019-11-05 CN CN201911072549.0A patent/CN112527692B/zh active Active
-
2020
- 2020-06-16 US US16/902,475 patent/US11269534B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190121726A1 (en) * | 2017-10-20 | 2019-04-25 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and electronic device |
US20190171559A1 (en) * | 2017-12-05 | 2019-06-06 | Silicon Motion Inc. | Method for accessing flash module, associated flash controller and electronic device |
US20190220396A1 (en) * | 2018-01-18 | 2019-07-18 | Silicon Motion, Inc. | Data Storage Device |
Also Published As
Publication number | Publication date |
---|---|
US20210089223A1 (en) | 2021-03-25 |
CN112527692A (zh) | 2021-03-19 |
US11269534B2 (en) | 2022-03-08 |
CN112527692B (zh) | 2024-07-23 |
TW202113610A (zh) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10761780B2 (en) | Memory system | |
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
CN110955384B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
EP2565792B1 (en) | Block management schemes in hybrid SLC/MLC memory | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
CN111158579B (zh) | 固态硬盘及其数据存取的方法 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US20120131264A1 (en) | Storage device | |
CN111610930B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN116364148A (zh) | 一种面向分布式全闪存储***的磨损均衡方法及*** | |
CN113986773A (zh) | 基于固态硬盘的写放大优化方法、装置及计算机设备 | |
CN111610931B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI713032B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN111610929B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI705328B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TWI729674B (zh) | 資料儲存裝置及其垃圾蒐集方法 | |
US20230236964A1 (en) | Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same | |
KR20230115196A (ko) | 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 | |
CN116501655A (zh) | 将存储器块解除分配的存储控制器及其操作方法 | |
CN110609817A (zh) | 一种防止文件碎片化的文件存储*** |