TWI742698B - 資料儲存裝置以及非揮發式記憶體控制方法 - Google Patents
資料儲存裝置以及非揮發式記憶體控制方法 Download PDFInfo
- Publication number
- TWI742698B TWI742698B TW109117977A TW109117977A TWI742698B TW I742698 B TWI742698 B TW I742698B TW 109117977 A TW109117977 A TW 109117977A TW 109117977 A TW109117977 A TW 109117977A TW I742698 B TWI742698 B TW I742698B
- Authority
- TW
- Taiwan
- Prior art keywords
- trimming
- length
- cell
- bit
- controller
- Prior art date
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
資料儲存裝置之高效修整,其中一控制器根據一主機發出的一修整指令,編寫一暫存記憶體上一快取區反映修整狀況,使上述修整狀況得以自該快取區沖至該非揮發式記憶體,而一主機-裝置映射表耗費資源的更新得以擱置。
Description
本案係有關於資料儲存裝置之修整(trimming)技術。
非揮發式記憶體有多種形式─例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM, STT-RAM)…等,用於長時間資料保存,可做為儲存媒體實現一資料儲存裝置。
非揮發式記憶體通常有其特殊的儲存特性。本技術領域需要相應非揮發式記憶體的儲存特性發展相應的控制技術。例如,符合非揮發式記憶體儲存特性的修整(trimming)技術。
本案提出一種修整指令執行技術。
根據本案一種實施方式實現的一資料儲存裝置包括一非揮發式記憶體、以及耦接該非揮發式記憶體的一控制器以及一暫存記憶體。該控制器係建構來根據一主機發出的一修整指令,編寫該暫存記憶體上一快取區反映修整狀況,使上述修整狀況得以自該快取區沖至該非揮發式記憶體。該修整指令要求一大量修整,該大量修整對齊一第一長度之分界、且為該第一長度之N倍,N為正整數。該控制器令該快取區載有N個位元標示該大量修整。
一種實施方式中,該控制器更在該暫存記憶體上管理一修整位元總表,該修整位元總表包括複數個修整位元子表。上述N個位元對應到該等修整位元子表其中M個修整位元子表,M為正整數。該快取區載有上述M個修整位元子表,藉以載有上述N個位元。
一種實施方式中,該控制器更在該暫存記憶體上管理一修整資訊旗標表,對應該快取區的上述複數個儲存格,標示該快取區中載有上述M個修整位元子表的儲存格。該控制器更令該修整資訊旗標表,隨著該快取區沖至該非揮發式記憶體。
一種實施方式中,該控制器更在該暫存記憶體上管理一儲存資訊表,對應該快取區的複數個儲存格,在對應之儲存格儲存使用者資料時記錄一邏輯位址,且在對應之儲存格載有上述修整位元子表時記錄對應的子表編號。該控制器更令該儲存資訊表,隨著該快取區沖至該非揮發式記憶體。
一種實施方式中,一個修整位元子表的尺寸為該快取區一個儲存格之一半容量。一個儲存格的前半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該個修整位元子表之子表編號。一個儲存格的後半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該個修整位元子表之子表編號。
一種實施方式中,該修整指令更要求一中等長度修整。該中等長度修整不超過該第一長度,且對齊一第二長度之分界。該控制器更對應該中等長度修整,將虛置映射資料填入一主機-裝置映射表。該控制器在該快取區記錄該中等長度修整之起始邏輯位址以及長度。
一種實施方式中,該控制器更以該修整資訊旗標表標示該快取區中載有該中等長度修整之起始邏輯位址以及長度的儲存格。
一種實施方式中,該控制器更令該儲存資訊表,在對應之儲存格載有該中等長度修整之起始邏輯位址以及長度時,記錄一中等長度修整代號。
一種實施方式中,該中等長度修整之起始邏輯位址以及長度結合虛置資料佔據一個儲存格的一半容量。一個儲存格以前半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該中等長度修整代號。一個儲存格以後半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該中等長度修整代號。
一種實施方式中,該修整指令更要求一少量修整。該少量修整短於該第二長度。該少量修整包含於該第二長度的一邏輯位址區間中。該控制器對應該少量修整,將虛置資料與該邏輯位址區間不修整的資料結合,快取於該快取區的一局部修整儲存格。該控制器更新該主機-裝置映射表,使該邏輯位址區間指向該局部修整儲存格。
一種實施方式中,相應該主機發下的一讀取指令,該控制器查詢該修整位元總表。該讀取指令要求讀取的邏輯位址區間在該修整位元總表內標示為已修整時,該控制器以已修整回應該讀取指令。該讀取指令要求讀取的邏輯位址區間在該修整位元總表內未標示為已修整時,該控制器更查詢該主機-裝置映射表回應該讀取指令。
一種實施方式中,該主機-裝置映射表包括複數個映射子表。各映射子表管理該第一長度之邏輯位址區間的映射資料。各儲存格長度為該第二長度。
以上控制該非揮發式記憶體的控制器也可以由其他架構實現。本案更可以前述概念實現非揮發式記憶體的控制方法。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(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長度的使用者資料;一頁面可供應16KB儲存空間。一種實施方式係根據頁面編號─由低編號至高編號─循序使用一區塊(Blk)的儲存空間。或者,某些實施方式使用的是數據吞吐量大幅提升的多通道技術,係將不同通道存取的區塊視為一個超級區塊(Super Block),將不同通道之間的頁面視為超級頁面(Super Page)。多通道技術可根據超級頁面編號─由低編號至高編號─循序使用一超級區塊的儲存空間。以下討論所指區塊也可以是超級區塊。
一種實施方式中,一區段(512B) 可對應一個邏輯區塊位址LBA。以4KB資料管理模式為例,八個連續區段組成的4KB空間為一資料管理單元,對應八個連續邏輯區塊位址LBAs之數據儲存,即對應一個全域主機頁編號GHP。一頁面的四段資料管理單元(共16KB)可對應四個全域主機頁編號GHPs。如第1圖所示,區塊Blk包括一閒置區域(spare area)Spare_Area,由各頁末端閒置空間組成,其中可標註對應頁面的四段資料管理單元所對應的四個全域主機頁編號GHPs。一種實施方式是在閒置區域Spare_Area為各段4KB資料管理單元規劃4B的全域主機頁編號GHP欄位(GHP entry)。除了載於該閒置區域Spare_Area,整個區塊Blk空間所映射的全域主機頁編號GHPs也可編排為區塊結尾資訊(end-of-block information,簡稱EoB),載於該區塊Blk最末的頁面255。閒置區域Spare_Area、或區塊結尾資訊(EoB)之全域主機頁編號GHPs記錄就是用於追蹤物理空間以及邏輯位址之間複雜的映射關係。
特別是,快閃記憶體有一項重要特性,就是同樣邏輯位址的資料更新並非覆寫至舊資料的儲存空間。新版本的資料須寫入空白的空間。舊空間的內容無效。一區塊可能僅零星留存有效資料。由於快閃記憶體的儲存空間需抹除(erase)後方能再次使用,備用區塊逐漸消耗。備用區塊數量不足時(如,低於閥值),垃圾回收(Garbage Collection)需求產生。一區塊留存的零星有效資料經垃圾回收集中到其他空間。徒留無效資料的區塊則抹除釋出,拉升備用區塊數量,確保快閃記憶體之正常使用。垃圾回收也可能使得同區塊內容的邏輯順序更跳躍。
由前述內容可知,快閃記憶體的空間配置相當複雜。一種實施方式是除了維護前述物理至邏輯映射的資訊外(例如,為各4KB資料管理單元所儲存的4B全域主機頁編號GHP),更反向建立一主機-裝置映射表;如,一主機-快閃記憶體映射表(host-to-flash mapping table,H2F映射表),顯示主機操作用之全域主機頁編號GHP是映射到快閃記憶體哪些實體位址。
然而,隨著製程進步,快閃記憶體尺寸越來越大。4TB的快閃記憶體,其主機-快閃記憶體映射表H2F會達4GB。8TB的快閃記憶體,其主機-快閃記憶體映射表H2F會達8GB。過分龐大的主機-快閃記憶體映射表H2F不容易動態管理。
一種解決方案是將主機-快閃記憶體映射表H2F切分為較小尺寸的映射子表,例如,對應不同邏輯位址群組G#(#為編號)的映射子表H2F_G#。被呼叫到的映射子表H2F_G#才載出參考或更新。相較於完整的主機-快閃記憶體映射表H2F,映射子表H2F_G#的動態更新只耗費少量系統資源。
本案特別討論快閃記憶體的修整(trim)操作。修整操作是用於無效所指定之邏輯位址區間。由於修整的邏輯位址區間常常尺寸可觀,涉及數量龐大的映射子表H2F_G#更新(載出填入虛置映射資料),非常耗時。本案提出一種新的修整方案,使得該主機-快閃記憶體映射表H2F可部分在修整完成後,再以背景方式更新。以下討論之。
第2圖圖解根據本案一種實施方式所實現的一資料儲存裝置200,包括一快閃記憶體202、一控制器204以及一動態隨機存取記憶體(DRAM)206。主機208透過控制器204操作快閃記憶體202。資料儲存裝置200內部也可經控制器204發動快閃記憶體202之最佳化操作;例如,整理快閃記憶體202空間,使其發揮最大儲存效能。控制器204進行運算時是以動態隨機存取記憶體206暫存資料。動態隨機存取記憶體206也可以其他暫存記憶體取代,如靜態隨機存取記憶體SRAM,或其他控制器204得以高速存取的儲存空間。
動態隨機存取記憶體206有多種規劃,包括提供快取區Data_Cache,將資料收集成資料管理單元4KB大小後,再一一沖至(flush)快閃記憶體202的主動區塊A_Blk中。主動區塊A_Blk係選自閒置區塊,待完成寫入則視為資料區塊。完整的主機-快閃記憶體映射表H2F一般保存在快閃記憶體202的系統資訊區塊Info_Blk。資料自快取區Data_Cache沖至主動區塊A_Blk時,相關的映射子表H2F_G#自快閃記憶體202載出修正,再回存快閃記憶體202更新總表H2F。傳統修整也包括映射子表H2F_G#的載出修正以及回存。但大量修整涉及到複數個映射子表H2F_G#更新,非常耗時。本案提出替代方案。根據主機208發出的一修整指令(trim command),控制器204編寫該快取區Data_Cache快取一修整標籤Trim_Tag,反映修整狀況,使修整狀況也會沖至主動區塊A_Blk作非揮發式儲存。修整標籤Trim_Tag註明主機-快閃記憶體映射表H2F還有哪些部分沒有隨著修整指令更新。控制器204可以在填寫指令完成佇列(completion queue)回報主機208修整指令完成後,再找機會,根據修整標籤Trim_Tag,將映射子表H2F_G#一一載出更新,符合修整需求。如此一來,控制器204不會被修整指令困住。資料儲存裝置200效能顯著提升。
為了幫助解讀該修整標籤Trim_Tag,控制器204更在該動態隨機存取記憶體206上維護修整資訊旗標表TIFM、修整代號Trim_Code、以及修整位元總表TBM。修整資訊旗標表TIFM以及修整代號Trim_Code的內容也會沖至主動區塊A_Blk的閒置區域210作非揮發式儲存,後續若有復電重建需求,就可以根據閒置區域210解讀出快閃記憶體202相對頁面是儲存修整標籤Trim_Tag。修整位元總表TBM是以簡單位元方式標註主機-快閃記憶體映射表H2F中未同步處,使控制器204正確回復主機208讀、寫指令。
本案將修整分為三種類型:大量修整;中等長度修整;以及少量修整。大量修整對齊一第一長度之分界、且為該第一長度之N倍,N為正整數。中等長度修整不超過該第一長度,且對齊一第二長度之分界。少量修整短於該第二長度。一種實施方式中,映射子表H2F_G#管理的邏輯位址長度即該第一長度,例如2MB。一種實施方式中,資料管理單元尺寸(即快取區Data_Cache各儲存格尺寸)即該第二長度,例如4KB。三種尺寸的修整技術不同。少量修整是直接填虛置資料(dummy data)代表該段邏輯位址區間已修整。中等長度修整是快取起始邏輯位址以及長度。大量修整是快取該修整位元總表TBM的相關部分。
以下以邏輯區塊位址LBA 5~LBA 100664323之修整為例,討論本案控制器204之操作細節。
第3圖圖解修整之分類。主機208對邏輯區塊位址LBA 5~LBA 100664323發出修整指令。控制器204分類該修整指令指定的修整範圍LBA 5~LBA 100664323,將之分為區間302、304、306、308以及310。區間306為大量修整,位於邏輯區塊位址LBA 4096~LBA 100663295,對齊2MB分界,儘可能的在整體修整範圍中,切出2MB倍數的最大修整。區間306之前包括:小於4KB的區間302,位於邏輯區塊位址LBA 5~LBA 7,對應首位少量修整;以及對齊4KB分界、但不足2MB的區間304,位於邏輯區塊位址LBA 8~LBA 4095,對應首位中等長度修整。區間306之後包括:對齊4KB分界但不足2MB的區間308,位於邏輯區塊位址LBA 100663296~LBA 100664319,對應末位中等長度修整;以及小於4KB的區間310,位於邏輯區塊位址LBA 100664320~LBA 100664323,對應末位少量修整。
第4圖圖解首位少量修整(302),其中修整邏輯區塊位址LBA 5~LBA 7,包括:步驟1,填寫4KB內容進快取區Data_Cache;以及,步驟2,更新主機-快閃記憶體映射表H2F。
步驟1,控制器204將邏輯區塊位址LBA 0~LBA 4(不修整區間)的原本資料填入快取區Data_Cache的區間402,並對應要修整的邏輯區塊位址LBA 5~LBA 7填寫虛置資料(dummy data例如,零)至快取區Data_Cache的區間404。區間402中關於邏輯區塊位址LBA 0~LBA 4的2.5KB不修整資料、以及區間404中1.5KB的虛置資料組合成4KB資料,符合4KB資料管理單元,由快取區Data_Cache一個儲存格快取。
步驟2,控制器204在動態隨機記憶體206上更新邏輯區塊位址LBA 0~LBA 7(即GHP 0)對應的映射子表H2F_G0,以更新該主機-快閃記憶體映射表H2F。控制器204將全域主機頁編號GHP 0的映射資料指向該快取區Data_Cache上述區間402以及404組成的該4KB儲存格。如此一來,全域主機頁編號GHP 0的映射綁定此4KB內容。虛置資料代表邏輯區塊位址LBA 5~LBA 7的修整狀態。對應該快取區Data_Cache的複數個儲存格,控制器204會在動態隨機存取記憶體206上更維護一儲存資訊表(未繪製在此圖),在對應儲存格快取的是使用者資料時,記錄一邏輯位址;此例即記錄全域主機編號GHP 0,將與快取區Data_Cache儲存格內容一起沖至主動區塊A_Blk作為儲存資訊,例如,用作日後主機-快閃記憶體映射表H2F重建。後面討論的應用中,快取區Data_Cache儲存格儲存的可以不是使用者資訊,而是修整資訊,則該儲存資訊表可對應儲存其他內容,例如:修整代號。
第5圖圖解首位中等長度修整(304) ,其中修整邏輯區塊位址LBA 8~LBA 4095,包括:步驟1,更新主機-快閃記憶體映射表H2F;步驟2,編寫修整資訊旗標表TIFM、以及修整代號Trim_Code;以及,步驟3,將修整資訊填入快取區Data_Cache。
步驟1,控制器204在動態隨機記憶體206上更新邏輯區塊位址LBA 8~LBA 4095 (即GHP 1~GHP 511)對應的映射子表H2F_G0,以更新該主機-快閃記憶體映射表H2F。控制器204填入虛置映射資料(如,零)作為全域主機頁編號GHP 1~GHP 511的映射資料。不同於少量修整是填充虛置資料,中等長度資料修整是填充虛置映射資料。
步驟2,控制器204編寫修整資訊旗標表TIFM、以及修整代號Trim_Code。修整資訊旗標表TIFM各位元對應該快取區Data_Cache一個4KB儲存格。修整代號Trim_Code則是填入前述儲存資訊表中。接續在區間404後的4KB儲存格所對應的修整資訊旗標表TIFM位元設立為”1”,表示該儲存格4KB內容要解讀為修整資訊,不可當使用者資料解讀。控制器204是在上述儲存資訊表對應填寫4B的修整代號Trim_Code,包括:2B的數據”0xAAAA”;以及2B的虛置代號(例如全零)。此實施方式中,修整代號Trim_Code是以2B編寫。快取區Data_Cache是以切半的儲存格,用2KB空間儲存修整資訊。2KB”0xAAAA”代表2KB區間502所填寫的修整資訊係中等長度修整的起始邏輯位址以及長度。
步驟3,控制器204將修整資訊填入快取區Data_Cache,在2KB區間502中填入起始邏輯位址GHP 1以及修整長度511,註明修整範圍為GHP 1~GHP 511,即首位中等長度修整(304)要求修整的邏輯區塊位址LBA 8~LBA 4095。如圖所示,2KB區間502其他未使用到的地方是填入虛置資料。
大量修整(306)則用到修整位元總表(trim bit map,TBM),其中每1位元對應邏輯空間上2MB長度;”1”代表修整。4TB容量的裝置需建構256KB(=4TB/2MB)的修整位元總表TBM。如此龐大的修整位元總表TBM更可以2KB為單位分組,分為128個修整位元子表TBM_G#(#為子表編號)。完整256KB修整位元總表TBM可載於動態隨機存取記憶體206上動態管理。但寫入快取區 Data_Cache作為修整資訊沖至主動區塊A_Blk的可以只是修整位元子表TBM_G#。
第6A圖以及第6B圖圖解大量修整(306),其中修整邏輯區塊位址LBA 4096~LBA 100663295,包括:步驟1,更新修整位元總表TBM;步驟2,編寫修整資訊旗標表TIFM、以及修整代號Trim_Code;以及,步驟3,將修整資訊填入快取區Data_Cache。
步驟1,控制器204對動態隨機記憶體206上暫存的256KB修整位元總表TBM進行更新。邏輯區塊位址LBA 4096~LBA 100663295即LBA 2MB~49152MB,對應修整位元總表TBM中的位元1~24596,屬修整位元總表TBM前3KB的內容。如圖所示,控制器204將修整位元總表TBM中的位元1~24596翻成”1”,其中涉及兩個修整位元子表:TBM_G0(第一段2KB內容);以及TBM_G1(第二段2KB內容)。
步驟2,控制器204編寫修整資訊旗標表TIFM、以及修整代號Trim_Code。控制器204是規劃修整位元子表TBM_G0(第一段2KB內容)、以及TBM_G1(第二段2KB內容)分別由快取區Data_Cache的2KB區間602、以及2KB區間604快取。區間602所屬該4KB空間(包括區間502以及602)早已由修整資訊旗標表TIFM中對應位元標示(“1”)。控制器204在此步驟是對接續4KB快取空間(包括區間604)進行標示,使修整資訊旗標表TIFM中對應位元也為“1”。控制器204編寫修整代號Trim_Code。對應區間502的0xAAAA之後是對應區間602填寫一子表編號0x0000(為修整位元子表TBM_G0之編號),再對應區間604填寫一子表編號0x0001(為修整位元子表TBM_G1之編號)。
步驟3,控制器204將修整資訊填入快取區Data_Cache,在2KB區間602填入修整位元子表TBM_G0,並在2KB區間604填入修整位元子表TBM_G1。
第6B圖圖解填入快取區Data_Cache區間602、604的修整位元子表TBM_G0、TBM_G1。2KB的修整位元子表TBM_G0中,只有第一個位元(對應首位少量、以及中等長度修整已經處理的GHP 0~GHP 511)為零,其餘位元都是1。2KB的修整位元子表TBM_G1中,頭1KB位元為1,其餘位元都是0。邏輯區塊位址範圍LBA 2MB~49152MB即(LBA 4096~LBA 100663295)被修整。
大量修整(306)後,控制器204進行末位中等長度修整(308)。隨後,控制器204進行末位少量修整(310)。
第7圖圖解末位中等長度修整(308)。修整邏輯區塊位址LBA 100663296~LBA 100664319,對應全域主機頁編號GHP 0xC00000~GHP 0xC0007F,技術同首位中等長度修整(304)。
步驟1,控制器204在動態隨機記憶體206上更新邏輯區塊位址LBA 100663296~LBA 100664319 (即GHP 0xC00000~GHP 0xC0007F)對應的映射子表H2F_G48,以更新該主機-快閃記憶體映射表H2F。控制器204填入虛置映射資料作為全域主機頁編號GHP 0xC00000~GHP 0xC0007F的映射資料。
步驟2,控制器204編寫修整資訊旗標表TIFM、以及修整代號Trim_Code。快取區Data_Cache上,2KB的區間702對應末位中等長度修整(308)。區間702所屬該4KB空間(包括區間604以及702)早已由修整資訊旗標表TIFM中對應位元標示(“1”),故此步驟沒有變動之。至於修整代號Trim_Code,在相應區間604的修整位元子表TBM_G1編號0x0001之後,控制器204相應區間702填上”0xAAAA”,代表2KB區間702所快取的是中等長度修整之修整資訊。
步驟3,控制器204將修整資訊填入快取區Data_Cache,在2KB區間702中填入起始邏輯位址GHP0xC0000以及修整長度0x80,註明修整範圍為GHP C0000~GHP 0xC0007F,即末位中等長度修整(308)要求修整的邏輯區塊位址LBA 100663296~LBA 100664319。
第8圖圖解末位少量修整(310),其中修整邏輯區塊位址LBA 100664320~LBA 100664323,對應全域主機頁編號GHP 0xC00080。技術同首位少量修整(302)。
步驟1,控制器204對應修整邏輯區塊位址範圍LBA 100664320~LBA 100664323填寫虛置資料至快取區Data_Cache的區間802,並將邏輯位址LBA 100664324~LBA 100664327(不修整區間)的原本資料填入快取區Data_Cache的區間804。區間802的2KB虛置資料、以及區間804中關於邏輯位址LBA 100664324~LBA 100664327的2KB資料組合成4KB資料,符合4KB資料管理單元,由快取區Data_Cache一個儲存格快取。
步驟2,控制器204在動態隨機記憶體206上更新邏輯區塊位址LBA 100664320~LBA 100664327 (即GHP 0xC00080)對應的映射子表H2F_G48,以更新該主機-快閃記憶體映射表H2F。如此一來,全域主機頁編號GHP 0xC00080的映射綁定此4KB內容。虛置資料代表邏輯區塊位址LBA 100664320~LBA 100664323的修整狀態。
第9圖整理LBA 5~LBA 100664323修整指令執行後,動態隨機存取記憶體206上存在內容。
快取區Data_Cache上,修整標籤Trim_Tag佔4個儲存格。區間402以及404相應首位少量修整(302),為原始資料(LBA 0~LBA4)以及虛置資料結合的4KB內容。區間502佔2KB,相應首位中等長度修整(304),所載為起始邏輯位址GHP 1以及長度511。區間602以及604各佔2KB,相應大量修等(306),所載為修整位元子表TBM_G0以及TBM_G1。區間702佔2KB,相應末位中等長度修整(308),所載為起始邏輯位址GHP 0xC00000以及修整長度0x80。區間802以及804相應末位少量修整(310),為虛置資料以及LBA 100664324~LBA 100664327原始資料結合的4KB內容。
相應該修整標籤Trim_Tag,修整資訊旗標表TIFM載有四個位元”0”、”1”、”1”、”0”。 中間的兩個”1”使得儲存資訊表上對應的8B全域主機頁編號GHP#儲存區域轉而儲存修整代號Trim_Code,為[0xAAAA; 0x0000; 0x0001; 0xAAAA]。
至於主機-快閃記憶體映射表H2F,動態隨機存取記憶體206上只載有最末少量修整(310)時處理到的映射子表H2F_G48。但結合已封存到系統資訊區塊Info_Blk的主機-快閃記憶體映射表H2F,可知前述修整過程中,映射資訊僅有部分更新,包括:GHP0指向區間402以及404所在4KB空間;GHP1~GHP511、GHP0xC0000~0xC0007F填虛置映射資料;且GHP 0xC00080指向區間802以及804所在4KB空間。未來得及更新的映射資訊載明在修整位元總表TBM。
如圖所示,修整位元總表TBM則在前3KB處,標示出LBA 2M~49152MB的已修整狀況,彌補主機-快閃記憶體映射表H2F未同步更新的部分。
一種實施方式中,主機208發出讀取要求時,控制器204可根據主機208要求讀取的邏輯區塊位址區間查詢該修整位元總表TBM。”1”代表對應的2MB已修整。若為”0”,控制器204需再查詢該主機-快閃記憶體映射表H2F。虛置映射資料代表該段空間已修整。若指向虛置資料(如404、802),其解讀同修整空間。
圖示佔據4個4KB快取儲存格的修整標籤Trim_Tag,需與其相應的修整資訊旗標[0, 1, 1, 0]、以及8B的修整代號Trim_Code([0xAAAA, 0x0000, 0x0001, 0xAAAA])沖 (flush)至快閃記憶體202主動區塊A_Blk做非揮發式儲存,以應付非預期斷電後,於復電程序重建修整狀況的需求。修整標籤Trim_Tag可寫入一頁的資料區。修整代號Trim_Code([0xAAAA, 0x0000, 0x0001, 0xAAAA])可以該頁之閒置區域210中,原本規劃來儲存映射之全域主機頁編號GHP#的地方。修整資訊旗標[0, 1, 1, 0]可在閒置區域210中另外儲存,也可另外編碼結合在修整代號Trim_Code中。
以下討論控制器204冗閒時,如何完成主機-快閃記憶體映射表H2F之更新。主機-快閃記憶體映射表H2F更新會一併維護快閃記憶體202各區塊的一有效頁數(valid page count)表。即使以修整位元總表TBM暫時應付修整指令,修整對有效頁數表的影響也能在控制器204冗閒時反應在有效頁數表上。
一種實施方式中,控制器204將該修整位元總表TBM的”1”值逐位元翻成”0”。每位元翻轉對應 2MB,係以前述中等長度修整技術(第5或7圖),將此2MB的修整反應在對應的映射子表H2F_G#、以及快取區Data_Cache上,並以前述大量修整區間的修整技術(第6A、6B圖),將有逐位元翻轉的修整位元子表TBM_G#一一快取於快取區Data_Cache。
第10A、10B以及10C圖圖解該修整位元總表TBM一位元之”1”至”0”翻轉。
第10A圖顯示翻轉的目標位元,即目標修整位元子表TBM_G0頭一個”1”位元,將之翻成”0”,即目標修整GHP 512~GHP 1023。
第10B圖採用前述中等長度修整技術(第5或7圖),將目標位元相應的2MB目標修整(GHP 512~GHP 1023)更新至該主機-快閃記憶體映射表H2F,並包括快取區Data_Cache、修整資訊旗標表TIFM、以及修整代號Trim_Code的編寫。
步驟1,控制器204在動態隨機記憶體206上更新該2MB目標修整(GHP 512~GHP 1023)對應的映射子表H2F_G1,以更新該主機-快閃記憶體映射表H2F。控制器204填入虛置映射資料(如,零)作為全域主機頁編號GHP 512~GHP 1023的映射資料。
步驟2,控制器204編寫修整資訊旗標表TIFM、以及修整代號Trim_Code。修整資訊旗標表TIFM的一位元設定“1”,標示此次目標位元翻轉會使用到的快閃區Data_Cache儲存格。控制器204是規劃快取區Data_Cache的2KB區間1002(半個儲存格)儲存此目標修整(GHP 512~GHP 1023)的起始邏輯位址GHP 512以及長度512。對應的4B修整代號Trim_Code即以”0xAAAA”指示區間1002內容的解讀方式。剩餘2B修整代號Trim_Code則暫填虛置數據。
步驟3,對應”0xAAAA”修整代號,控制器204將目標修整(GHP 512~GHP 1023)起始邏輯位址GHP 512以及長度512填入快取區Data_Cache的2KB半個儲存格1002。
第10C圖採用前述大量區間修整技術(第6A、6B圖),將目標位元已翻轉的目標修整位元子表TBM_G0載入快取區Data_Cache。
步驟1,控制器204對動態隨機記憶體206上暫存的256KB之修整位元總表TBM進行更新。即第二位元翻”0”。
步驟2,控制器204編寫修整資訊旗標表TIFM、以及修整代號Trim_Code。控制器204是規劃區間1004快取該目標修整位元子表TBM_G0。區間1004所屬該4KB空間(包括區間1002以及1004)早已由修整資訊旗標表TIFM中對應位元標示(“1”),此處不再調整。但該修整代號Trim_Code中,控制器204在對應區間1002的0xAAAA之後的2B填寫該目標修整位元子表TBM_G0之目標子表編號0x0000。
步驟3,控制器204在2KB區間1004中填入最新版本的該目標修整位元子表TBM_G0。
整理之,控制器204是在填寫一指令完成佇列(completion queue)回報主機208一第一指令完成後,但尚未自一指令佇列(command queue)獲得主機208發出的一第二指令時,利用此閒冗區間,逐位元將修整位元總表TBM狀況更新到主機-快閃記憶體映射表H2F。每位元翻轉指涉及一個映射子表H2F_G#更新,不會過度耗時。
以下更討論主機208的寫入指令。倘若要求寫入的邏輯位址是由該修整位元總表TBM標示成已修整,控制器204需要以前述修整位元總表TBM翻轉技術更新該主機-快閃記憶體映射表H2F(第10A~10C圖),再進行寫入動作。
第11圖圖解LBA 10240(5MB)起始的12KB寫入如何被回應。
快取區Data_Cache以2KB區間1102以及2KB區間1104反映該修整位元總表TBM相應位元之翻轉。此例中,該修整位元總表TBM的第三個位元(對應5MB,屬修整位元子表TBM_G0)為翻轉的目標位元,對應2MB目標修整GHP 1024~1535,其映射資訊屬映射子表H2F_G3。控制器204將映射子表H2F_G3為全域主機頁GHP 1024~1535全數填上虛置映射資料,並在快取區Data_Cache半個儲存格的2KB空間1102儲存目標修整GHP 1024~1535的起始邏輯位址GHP 1024、以及長度512。隨後,控制器204翻轉該修整位元總表TBM,並將翻轉後的該修整位元子表TBM_G0填入儲存格1104。同前述技術,雖未繪製在圖中,但對應區間1102、1104的填寫,控制器204還將修整資訊旗標表TIFM對應位元設立為”1”,且修整代號Trim_Code為[0xAAAA, 0x0000]。
映射子表H2F_G3反映出GHP 1024~1535修整狀況後,控制器204就可以安心進行其上12KB的使用者資料寫入。如圖所示,控制器204將12KB寫入資料快取於區間1106所標示的三個儲存格。此時,本全為虛置映射資料的映射子表H2F_G3,其中全域主機頁編號GHP1279~1281會改成指向區間1106。全域主機頁編號GHP 1024~1278、以及GHP 1282~1535的修整狀態仍可由其虛置映射資訊觀察而得。
一種實施方式中,非預期斷電事件發生時,為了善用裝置電力,控制器204可能只會挽救動態隨機存取記憶體206部分內容,例如,只將快取區Data_Cache內容、快取區Data_Cache各儲存格對應資訊(包括標示邏輯位址、或修整代號的各儲存格儲存資訊、以及修整資訊旗標表TIFM)沖至快閃記憶體202。修整位元總表TBM會遺失。主機-快閃記憶體映射表H2F部分內容可能也來不及更新。因此,非預期斷電之復電(sudden power-off recovery,SPOR)需要一個重建機制,重建修整位元總表TBM、以及主機-快閃記憶體映射表H2F。
第12A、12B、12C圖根據本案一種實施方式圖解表格重建機制。
參閱第12A圖,復電時,控制器204掃描快閃記憶體202(例如,根據系統資訊區塊Info_Blk所載的區塊使用順序),於各區塊的區塊結尾資訊EoB中收集到一串修整資訊旗標1202。各位元對應所屬區塊相對位置的4KB資料、以及該4KB資料的4B儲存資訊(為全域主機頁編號GHP#、或是修整代號Trim_Code)。位元值”0”,則對應的該4KB資料被解讀為使用者資料,對應的4B儲存資訊乃映射之全域主機頁編號GHP#。位元值”1”,則對應的該4KB資料被解讀為修整資訊,對應的4B儲存資訊乃修整代號Trim_Code。該串修整資訊旗標1202對應五段各為4KB的資料,且對應的五段各為4B的儲存資訊1204。儲存資訊1204也可以是自區塊結尾資訊EoB取得。
如圖所示,該串修整資訊旗標1202中,第一個”1”值對應儲存資訊1204內的4B儲存資訊[0xAAAA, 0X0003],表示其在區塊中對應的4KB資料乃兩種類型的修整資訊。”0xAAAA”表示前端2KB資料乃一中等長度修整的起始邏輯位址、以及長度。非”0xAAAA”的”0x0003”則應當解讀為一子表編號,表示後端2KB資料乃一大量修整的修整位元子表TBM_G3。該串修整資訊旗標1202另有第二個”1”值,對應儲存資訊1204內的4B儲存資訊[0xAAAA, 虛置資料],表示其在區塊中對應的4KB資料只有前端2KB資料有意義。”0xAAAA”表示前端2KB資料乃一中等長度修整的起始邏輯位址、以及長度。以下特別討論該串修整資訊旗標1202中第一個”1”值所涉及的表格重建。
參閱第12B圖,根據”0xAAAA”,區塊中對應的2KB資料乃一中等長度修整的起始邏輯位址GHP0x100、以及長度0x80。控制器204在動態隨機存取記憶體206上,將相應的映射子表H2F_G0載出,令全域主機頁編號GHP0x100~GHP0x17F的映射資料都填虛置映射資料。因此,主機-快閃記憶體映射表H2F更新,確實反映出全域主機頁編號GHP0x100~GHP0x17F的修整狀態。
參閱第12C圖,根據” 0x0003”, 區塊中對應的2KB資料乃一大量修整的修整位元子表TBM_G3。控制器204會將此2KB修整位元子表TBM_G3更新到動態隨機存取記憶體206上完整維護的修整位元總表TBM中,重建修整位元總表TBM。
第13圖根據本案一種實施方式圖解修整指令(trim command)處理方法。步驟S1302接收一修整指令。步驟S1304分類該修整範圍(第3圖)。步驟S1306進行首位少量修整(第4圖),若不存在首位少量修整可跳過此步驟。步驟S1308進行首位中等長度修整(第5圖),若不存在首位中等長度修整可跳過此步驟。步驟S1310進行大量修整(第6A、6B圖),若不存在大量修整可跳過此步驟。步驟S1312進行末位中等長度修整(第7圖),若不存在末位中等長度修整可跳過此步驟。步驟S1314進行末位少量修整(第8圖),若不存在末位少量修整可跳過此步驟。各分類修整完畢後,該修整指令即完成。如,控制器204可回填指令完成佇列(completion queue)告知主機208修整完成,控制器204可再接收主機208其他指令。如前述,流程中大量修整(S1310)並不會耗費資源在主機-快閃記憶體映射表H2F更新上。控制器204以第13圖修整程序快速回應修整指令,進而執行主機208接續其他要求。
第13圖修整程序後,動態隨機存取記憶體206所維護的內容可如第9圖所示。關於主機208再發出的讀取指令,控制器204會參考該修整位元總表TBM進行,避免漏掉尚未更新到主機-快閃記憶體映射表H2F的修整狀況。非預期斷電時,控制器204會將修整標籤Trim_Tag、TIFM中相應的修整資訊旗標、以及修整代號Trim_Code沖(flush)至快閃記憶體202,以應付復電需求。
第14圖為流程圖,根據本案一種實施方式圖解如何根據該修整位元總表TBM背景更新該主機-快閃記憶體映射表H2F。
步驟S1402,對應一修整位元子表TBM_G#中一位元的”1”à”0”翻轉,控制器204以中等長度修整更新該主機-快閃記憶體映射表H2F(包括相應映射子表H2F_G#填寫虛置映射資料、且將其起始邏輯位址以及長度快取於快取區Data_Cache)。步驟S1404,控制器204以大量修整將新版的該修整位元子表TBM_G#快取於該快取區Data_Cache。步驟S1406判斷控制器204是否閒冗;例如,主機208塞入指令佇列(command queue)中的指令是否都執行完畢。空閒的控制器204可更在步驟S1408確定該修整位元總表TBM尚未完全被”1”à”0”翻轉時,再次進行步驟S1402以及S1404。若控制器204有待應付的主機208指令,則進行步驟S1410回應主機208新發出的指令。
第15圖為流程圖,根據本案一種實施方式圖解如何回應主機208發出的寫入指令。
步驟S1502,控制器204接收一寫入指令。步驟S1504,控制器204查詢該修整位元總表TBM,確定該寫入指令要求寫入資料的邏輯位址是否被該修整位元總表TBM標註。若是標註在一修整位元子表TBM_G#的一位元Bit#,控制器204進行步驟S1506,對該修整位元子表TBM_G#的該位元Bit#作”1”à”0”翻轉,其中以中等長度修整更新該主機-快閃記憶體映射表H2F(包括相應映射子表H2F_G#填寫虛置映射資料、且將其起始邏輯位址以及長度快取於快取區Data_Cache),再以大量修整將新版的該修整位元子表TBM_G#快取於該快取區Data_Cache。步驟S1508,控制器204將寫入資料快取於該快取區Data_Cache。步驟S1510,控制器204更新主機-快閃記憶體映射表H2F,將寫入資料的映射資訊填為該快取區Data_Cache。以上步驟妥善應付大量修整後發生的少量寫入。
第16圖為流程圖,根據本案一種實施方式圖解如何一復電程序。
步驟S1602復電。步驟S1604,控制器204掃描快閃記憶體202(例如,根據程式化順序),獲得一串修整資訊旗標。步驟S1606,控制器204判讀該串修整資訊旗標其中一位元。若為”1”,控制器204以步驟S1608更判讀修整代號。若為”0xAAAA”,控制器204以步驟S1610解讀出一中等長度修整之起始邏輯位址以及修整長度,據以重建該主機-快閃記憶體映射表H2F中對應部分(填虛置映射資料)。步驟S1608若判斷出修整代號為一修整位元子表TBM_G#的子表編號,控制器204以步驟S1612解讀出修整位元子表TBM_G#,據以重建該修整位元總表TBM。步驟S1614判別是否該修整資訊旗標對應的兩個修整代號都完成判讀。若否,控制器204再次進行步驟S1608。若是,控制器204以步驟S1616判斷是否該串修整資訊旗標處理完畢。若否,控制器重回步驟S1606。若是,流程結束。
步驟S1606若判讀一修整資訊旗標為”0”,則進行步驟S1618,控制器204解讀出4KB使用者資料對應的全域主機頁編號GHP#,據以更新該主機-快閃記憶體映射表H2F。
以上控制器204對快閃記憶體202之操作設計也可以由其他結構實現。凡是根據前述概念執行修整者,都屬於本案欲保護範圍。本案更可以前述概念實現非揮發式記憶體的控制方法。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
200:資料儲存裝置
202:快閃記憶體
204:控制器
206:動態隨機存取記憶體(DRAM)
208:主機
210:主動區塊A_Blk的閒置區域
302…310:修整邏輯位址範圍分類區間
402、404、502、602、604、702、802、804、1002、1004、1102、1104、1106:快取區Data_Cache之儲存區間
1202:一串修整資訊旗標
1204:一串儲存資訊
A_Blk:主動區塊
Blk:區塊
Data_Cache:快取區
GHP0、GHP1、GHP511、GHP0x100、GHP0x17F 、GHP0xC00000、GHP0xC0007F、GHP0xC00080:全域主機頁編號的映射資訊
H2F:主機-快閃記憶體映射表
H2F_G0、H2F_G48、H2F_G#:映射子表
Info_Blk:系統資訊區塊
S1302…S1314、S1402…S1410、S1502…S1510、S1602…S1618:步驟
Spare_Area:閒置區域
TBM:修整位元總表
TBM_G0、TBM_G1、TBM_G2、TBM_G3、TBM_G127:修整位元子表
TIFM:修整資訊旗標表
Trim_Code:修整代碼
Trim_Tag:修整標籤
第1圖圖解快閃記憶體中區塊Blk之結構;
第2圖圖解根據本案一種實施方式所實現的一資料儲存裝置200;
第3圖圖解修整之分類;
第4圖圖解首位少量修整(302),其中修整邏輯區塊位址LBA 5~LBA 7;
第5圖圖解首位中等長度修整(304) ,其中修整邏輯區塊位址LBA 8~LBA 4095;
第6A圖以及第6B圖圖解大量修整(306),其中修整邏輯區塊位址LBA 4096~LBA 100663295;
第7圖圖解末位中等長度修整(308);
第8圖圖解末位少量修整(310),其中修整邏輯區塊位址LBA 100664320~LBA 100664323;
第9圖整理LBA 5~LBA 100664323修整指令執行後,動態隨機存取記憶體206上存在內容;
第10A、10B以及10C圖圖解該修整位元總表TBM一位元之”1”至”0”翻轉;
第11圖圖解LBA 10240(5MB)起始的12KB寫入如何被回應;
第12A、12B、12C圖根據本案一種實施方式圖解表格重建機制;
第13圖根據本案一種實施方式圖解修整指令(trim command)處理方法;
第14圖為流程圖,根據本案一種實施方式圖解如何根據該修整位元總表TBM背景更新該主機-快閃記憶體映射表H2F;
第15圖為流程圖,根據本案一種實施方式圖解如何回應主機208發出的寫入指令;以及
第16圖為流程圖,根據本案一種實施方式圖解如何一復電程序。
200:資料儲存裝置
202:快閃記憶體
204:控制器
206:動態隨機存取記憶體(DRAM)
208:主機
210:主動區塊A_Blk的閒置區域
A_Blk:主動區塊
Data_Cache:快取區
H2F:主機-快閃記憶體映射表
H2F_G#:映射子表
Info_Blk:系統資訊區塊
TBM:修整位元總表
TIFM:修整資訊旗標表
Trim_Code:修整代碼
Trim_Tag:修整標籤
Claims (20)
- 一種資料儲存裝置,包括:一非揮發式記憶體;以及耦接該非揮發式記憶體的一控制器以及一暫存記憶體,其中,該控制器係建構來根據一主機發出的一修整指令,編寫該暫存記憶體上一快取區反映修整狀況,使上述修整狀況得以自該快取區沖至該非揮發式記憶體,其中:該修整指令要求一大量修整,該大量修整對齊一第一長度之分界、且為該第一長度之N倍,N為正整數;該控制器令該快取區載有N個位元標示該大量修整;該控制器更在該暫存記憶體上管理一修整位元總表,該修整位元總表包括複數個修整位元子表;上述N個位元對應到該等修整位元子表其中M個修整位元子表,M為正整數;該快取區載有上述M個修整位元子表,藉以載有上述N個位元;該控制器更在該暫存記憶體上管理一修整資訊旗標表,對應該快取區的上述複數個儲存格,標示該快取區中載有上述M個修整位元子表的儲存格;且該控制器更令該修整資訊旗標表,隨著該快取區沖至該非揮發式記憶體。
- 如請求項1之資料儲存裝置,其中: 該控制器更在該暫存記憶體上管理一儲存資訊表,對應該快取區的複數個儲存格,在對應之儲存格儲存使用者資料時記錄一邏輯位址,且在對應之儲存格載有上述修整位元子表時記錄對應的子表編號;且該控制器更令該儲存資訊表,隨著該快取區沖至該非揮發式記憶體。
- 如請求項2之資料儲存裝置,其中:一個修整位元子表的尺寸為該快取區一個儲存格之一半容量;一個儲存格的前半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該個修整位元子表之子表編號;且一個儲存格的後半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該個修整位元子表之子表編號。
- 如請求項2之資料儲存裝置,其中:該修整指令更要求一中等長度修整,該中等長度修整不超過該第一長度,且對齊一第二長度之分界;該控制器更對應該中等長度修整,將虛置映射資料填入一主機-裝置映射表;且該控制器在該快取區記錄該中等長度修整之起始邏輯位址以及長度。
- 如請求項4之資料儲存裝置,其中: 該控制器更以該修整資訊旗標表標示該快取區中載有該中等長度修整之起始邏輯位址以及長度的儲存格。
- 如請求項5之資料儲存裝置,其中:該控制器更令該儲存資訊表,在對應之儲存格載有該中等長度修整之起始邏輯位址以及長度時,記錄一中等長度修整代號。
- 如請求項6之資料儲存裝置,其中:該中等長度修整之起始邏輯位址以及長度結合虛置資料佔據一個儲存格的一半容量;一個儲存格以前半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該中等長度修整代號;且一個儲存格以後半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該中等長度修整代號。
- 如請求項6之資料儲存裝置,其中:該修整指令更要求一少量修整,該少量修整短於該第二長度;該少量修整包含於該第二長度的一邏輯位址區間中;該控制器對應該少量修整,將虛置資料與該邏輯位址區間不修整的資料結合,快取於該快取區的一局部修整儲存格;且該控制器更新該主機-裝置映射表,使該邏輯位址區間指向該局部修整儲存格。
- 如請求項8之資料儲存裝置,其中: 相應該主機發下的一讀取指令,該控制器查詢該修整位元總表;該讀取指令要求讀取的邏輯位址區間在該修整位元總表內標示為已修整時,該控制器以已修整回應該讀取指令;且該讀取指令要求讀取的邏輯位址區間在該修整位元總表內未標示為已修整時,該控制器更查詢該主機-裝置映射表回應該讀取指令。
- 如請求項9之資料儲存裝置,其中:該主機-裝置映射表包括複數個映射子表,各映射子表管理該第一長度之邏輯位址區間的映射資料;且各儲存格長度為該第二長度。
- 一種非揮發式記憶體控制方法,包括:接收一主機發出的一修整指令;根據該修整指令,編寫一暫存記憶體上一快取區反映修整狀況,使上述修整狀況得以自該快取區沖至一非揮發式記憶體,其中,該修整指令要求一大量修整,該大量修整對齊一第一長度之分界、且為該第一長度之N倍,N為正整數,且該快取區載有N個位元標示該大量修整;在該暫存記憶體上管理一修整位元總表,該修整位元總表包括複數個修整位元子表,其中,該等修整位元子表中M個修整位元子表相關上述N個位元,M為正整數;令該快取區載有上述M個修整位元子表,藉以載有上述N個位元; 在該暫存記憶體上管理一修整資訊旗標表,對應該快取區的複數個儲存格,標示該快取區中載有上述M個修整位元子表的儲存格;且令該修整資訊旗標表,隨著該快取區沖至該非揮發式記憶體。
- 如請求項11之非揮發式記憶體控制方法,更包括:在該暫存記憶體上管理一儲存資訊表,對應該快取區的上述複數個儲存格,在對應之儲存格儲存使用者資料時記錄一邏輯位址,且在對應之儲存格載有上述修整位元子表時記錄對應的子表編號;且令該儲存資訊表,隨著該快取區沖至該非揮發式記憶體。
- 如請求項12之非揮發式記憶體控制方法,其中:一個修整位元子表的尺寸為該快取區一個儲存格之一半容量;一個儲存格的前半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該個修整位元子表之子表編號;且一個儲存格的後半段載有一個修整位元子表時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該個修整位元子表之子表編號。
- 如請求項12之非揮發式記憶體控制方法,其中該修整指令更要求一中等長度修整,該中等長度修整不超過該第一長度,且對齊一第二長度之分界,且所述方法更包括:對應該中等長度修整,將虛置映射資料填入一主機-裝置映射 表;且在該快取區記錄該中等長度修整之起始邏輯位址以及長度。
- 如請求項14之非揮發式記憶體控制方法,更包括:以該修整資訊旗標表標示該快取區中載有該中等長度修整之起始邏輯位址以及長度的儲存格。
- 如請求項15之非揮發式記憶體控制方法,更包括:令該儲存資訊表在對應之儲存格載有該中等長度修整之起始邏輯位址以及長度時,記錄一中等長度修整代號。
- 如請求項16之非揮發式記憶體控制方法,其中:該中等長度修整之起始邏輯位址以及長度結合虛置資料佔據一個儲存格的一半容量;一個儲存格以前半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以前半段記錄該中等長度修整代號;且一個儲存格以後半段快取該中等長度修整的起始邏輯位址以及長度時,該儲存資訊表中對應該個儲存格的資訊是以後半段記錄該中等長度修整代號。
- 如請求項16之非揮發式記憶體控制方法,其中該修整指令更要求一少量修整,該少量修整短於該第二長度,該少量修整包含於該第二長度的一邏輯位址區間中,且所述方法更包括:對應該少量修整,將虛置資料與該邏輯位址區間不修整的資料結 合,快取於該快取區的一局部修整儲存格;且更新該主機-裝置映射表,使該邏輯位址區間指向該局部修整儲存格。
- 如請求項18之非揮發式記憶體控制方法,更包括:相應該主機發下的一讀取指令,查詢該修整位元總表;該讀取指令要求讀取的邏輯位址區間在該修整位元總表內標示為已修整時,以已修整回應該讀取指令;且該讀取指令要求讀取的邏輯位址區間在該修整位元總表內未標示為已修整時,更查詢該主機-裝置映射表回應該讀取指令。
- 如請求項19之非揮發式記憶體控制方法,其中:該主機-裝置映射表包括複數個映射子表,各映射子表管理該第一長度之邏輯位址區間的映射資料;且各儲存格長度為該第二長度。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010709526.2A CN112882649B (zh) | 2019-11-29 | 2020-07-22 | 数据储存装置以及非挥发式存储器控制方法 |
US17/025,067 US11307979B2 (en) | 2019-11-29 | 2020-09-18 | Data storage device and non-volatile memory control method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962941936P | 2019-11-29 | 2019-11-29 | |
US62/941,936 | 2019-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202121425A TW202121425A (zh) | 2021-06-01 |
TWI742698B true TWI742698B (zh) | 2021-10-11 |
Family
ID=77516515
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109117978A TWI745986B (zh) | 2019-11-29 | 2020-05-29 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW109117977A TWI742698B (zh) | 2019-11-29 | 2020-05-29 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TW109117980A TWI745987B (zh) | 2019-11-29 | 2020-05-29 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109117978A TWI745986B (zh) | 2019-11-29 | 2020-05-29 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109117980A TWI745987B (zh) | 2019-11-29 | 2020-05-29 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Country Status (1)
Country | Link |
---|---|
TW (3) | TWI745986B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114333930B (zh) | 2021-12-23 | 2024-03-08 | 合肥兆芯电子有限公司 | 多通道存储器存储装置、控制电路单元及其数据读取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130219106A1 (en) * | 2012-02-17 | 2013-08-22 | Apple Inc. | Trim token journaling |
US20190258569A1 (en) * | 2017-01-12 | 2019-08-22 | Micron Technology, Inc. | Directed sanitization of memory |
US10430328B2 (en) * | 2014-09-16 | 2019-10-01 | Sandisk Technologies Llc | Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI423026B (zh) * | 2010-10-29 | 2014-01-11 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US9274937B2 (en) * | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
CN108733577B (zh) * | 2017-04-21 | 2021-10-22 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元及存储器存储装置 |
TWI634424B (zh) * | 2017-05-08 | 2018-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
TWI639918B (zh) * | 2017-05-11 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
TWI672590B (zh) * | 2017-06-27 | 2019-09-21 | 慧榮科技股份有限公司 | 資料儲存裝置 |
-
2020
- 2020-05-29 TW TW109117978A patent/TWI745986B/zh active
- 2020-05-29 TW TW109117977A patent/TWI742698B/zh active
- 2020-05-29 TW TW109117980A patent/TWI745987B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130219106A1 (en) * | 2012-02-17 | 2013-08-22 | Apple Inc. | Trim token journaling |
US10430328B2 (en) * | 2014-09-16 | 2019-10-01 | Sandisk Technologies Llc | Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters |
US20190258569A1 (en) * | 2017-01-12 | 2019-08-22 | Micron Technology, Inc. | Directed sanitization of memory |
US10452532B2 (en) * | 2017-01-12 | 2019-10-22 | Micron Technology, Inc. | Directed sanitization of memory |
Also Published As
Publication number | Publication date |
---|---|
TWI745986B (zh) | 2021-11-11 |
TW202121413A (zh) | 2021-06-01 |
TW202121425A (zh) | 2021-06-01 |
TW202121176A (zh) | 2021-06-01 |
TWI745987B (zh) | 2021-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112882650B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US9213633B2 (en) | Flash translation layer with lower write amplification | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
KR101916206B1 (ko) | 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들 | |
CN100487672C (zh) | 用于分割一逻辑块的方法及设备 | |
CN107784121B (zh) | 一种基于非易失内存的日志文件系统的小写优化方法 | |
KR101562781B1 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
JP6076506B2 (ja) | ストレージ装置 | |
US8386698B2 (en) | Data accessing method for flash memory and storage system and controller using the same | |
TWI385519B (zh) | 資料寫入方法及使用此方法的快閃儲存系統與其控制器 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
DE102009026178A1 (de) | Mehrstufiger Controller mit intelligentem Speicher-Transfer-Manager zum Verschachteln mehrfacher Ein-Chip-Flash-Speichereinheiten | |
CN112882649B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US11520696B2 (en) | Segregating map data among different die sets in a non-volatile memory | |
WO1999030239A1 (fr) | Memoire et procede d'acces | |
CN118302740A (zh) | 使用写时复制的固态驱动器上复制技术 | |
JP4460967B2 (ja) | メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法 | |
CN114730290A (zh) | 将变化日志表移动至与分区对准 | |
KR100963009B1 (ko) | 파일 관리 시스템 및 방법 | |
CN111104345A (zh) | 一种ssd上电恢复方法、系统及主机 | |
TWI742698B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN111610929B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN112885397B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
EP4303734A1 (en) | Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device |