TWI597605B - 用於資料儲存裝置的損耗平均方法 - Google Patents

用於資料儲存裝置的損耗平均方法 Download PDF

Info

Publication number
TWI597605B
TWI597605B TW106103752A TW106103752A TWI597605B TW I597605 B TWI597605 B TW I597605B TW 106103752 A TW106103752 A TW 106103752A TW 106103752 A TW106103752 A TW 106103752A TW I597605 B TWI597605 B TW I597605B
Authority
TW
Taiwan
Prior art keywords
block
data
spare
blocks
management table
Prior art date
Application number
TW106103752A
Other languages
English (en)
Other versions
TW201810044A (zh
Inventor
林聖嵂
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Application granted granted Critical
Publication of TWI597605B publication Critical patent/TWI597605B/zh
Publication of TW201810044A publication Critical patent/TW201810044A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)

Description

用於資料儲存裝置的損耗平均方法
本發明是有關於一種用於資料儲存裝置的損耗平均方法(method of wear leveling),尤其是有關於一種用於具有非揮發性記憶體(non-volatile memory,NVM)的資料儲存裝置的損耗平均方法。
非揮發性記憶體是一種電子存儲器設備,其具有一些特定能力,例如在斷電後仍可在一定時間內維持資料、快速的資料存取以及防震功能。因此,非揮發性記憶體廣泛地用於記憶卡(memory card)、固態硬碟(solid state drive,SSD)和可攜式多媒體裝置。非揮發性記憶體包括用於儲存資料的多個區塊(block)。具體地,根據使用情況,區塊可被命名為資料區塊(data block)或備用區塊(spare block)。資料區塊指的是儲存有(有效)資料的區塊,而相對的備用區塊指的是未儲存有效資料的區塊。通常備用區塊與備用池(spare pool)或備用隊列(spare queue)有關,而資料區塊與資料池(data pool)有關。備用區塊是從備用池或備用隊列中選取出來以保存從主機(host)所發送的資料,並且在此階段備用區塊被命名為臨時區塊(temporary block)。當臨時區塊被填滿資料或不再保存資料時,臨時區塊則被命名為資料區塊,而接下來的資料會被保存至下一個臨時區塊。上述的過程會不斷地重複。多種損耗平均和垃圾收集(garbage collection)程序已被揭露以平均地使用區塊並且單獨地再循環具有較少有效資料的資料區塊。
非揮發性記憶體存在一項非常嚴重的缺陷,即具有抹除次數(erase times)的限制。不同非揮發性記憶體產品的規格對不同類型的非揮發性記憶體推薦了不同的抹除次數。以快閃記憶體(flash memory)為例,三階儲存單元(triple-level cell,TLC)類型的快閃記憶體其抹除次數約為一千次,而單階儲存單元(single-level cell,SLC)類型的快閃記憶體其抹除次數約為十萬次。 一旦達到了抹除次數,則意味著此區塊將被假定為無法再正常工作且可能很快就會失效(out of work)。如果非揮發性記憶體沒有平均地使用它的區塊,則一些區塊有可能在早期階段就失效。在這種情況下,僅剩下少許的區塊可用於保存資料,而這將導致資料儲存裝置的壽命短於預期。另一方面,如果通過損耗平均程序可以使區塊平均地被使用的話,則理論上資料儲存裝置的壽命可明顯地延長。因此, 提供一種有效且迅速的損耗平均程序有其需要。
因此,本發明的其一目的是提供一種用於資料儲存裝置的損耗平均方法,所述方法能夠平均地利用區塊並且迅速地選擇下一個臨時區塊。
本發明提出一種用於資料儲存裝置的損耗平均方法。資料儲存裝置包括非揮發性記憶體。非揮發性記憶體包括多個區塊,且多個區塊中未儲存有任何有效資料的部分中的每一被定義為備用區塊並且備用區塊與備用池相關聯。所述損耗平均方法包括以下步驟:維持管理表,其中,管理表記錄有對應多個區塊的多個物理區塊號和多個區塊狀態;選擇具有多個區塊狀態之一和第一最小物理區塊號的第一備用區塊作為當前臨時區塊;從主機接收寫入命令;判斷寫入命令中的資料是否應被寫入當前臨時區塊;當判斷結果為否,則選擇具有多個區塊狀態之一和第二最小物理區塊號的第二備用區塊作為下一臨時區塊;以及將資料寫入下一臨時區塊。
本發明另提出一種用於資料儲存裝置的損耗平均方法。資料儲存裝置包括非揮發性記憶體。非揮發性記憶體包括多個區塊,且多個區塊中未儲存有任何有效資料的部分中的每一被定義為備用區塊。所述損耗平均方法包括以下步驟:為多個備用區塊的每一分配多個物理區塊號的其中之一;維持管理表,其中,管理表記錄有多個物理區塊號;從多個備用區塊中選取第一備用區塊作為當前臨時區塊;判斷從主機接收的資料是否應被寫入當前臨時區塊;當判斷結果為否,則從多個備用區塊中選取第二備用區塊作為下一臨時區塊;以及將資料寫入該一臨時區塊。
本發明再提出一種用於資料儲存裝置的損耗平均方法。資料儲存裝置包括非揮發性記憶體。非揮發性記憶體包括多個區塊。多個區塊中未儲存有任何有效資料的部分中的每一被定義為備用區塊,且多個區塊中儲存有有效資料的部分中的每一被定義為資料區塊。所述損耗平均方法包括以下步驟:維持管理表,其中,管理表記錄有多個區塊的多個物理區塊號;從多個備用區塊中選取第一備用區塊作為當前臨時區塊;從主機接收寫入命令;判斷寫入命令中的資料是否應被寫入當前臨時區塊;當判斷結果為否,則從具有最小物理區塊號的多個備用區塊中選取第二備用區塊作為下一臨時區塊;以及將資料寫入下一臨時區塊。
為讓本發明之上述和其他目的、特徵和優點能更明顯易懂,下文特舉較佳實施例並配合所附圖式做詳細說明如下。
圖1為依照本發明一實施例的資料儲存裝置的方塊示意圖。如圖所示,本實施例的資料儲存裝置10用以從外部主機20接收寫入命令並將由寫入命令所取得的資料保存到資料儲存裝置10中。主機20可以是諸如桌上型電腦、平板電腦、手機或移動裝置等電子設備。資料儲存裝置10包括控制器11以及非揮發性記憶體12。非揮發性記憶體12優選地為快閃記憶體。控制器11電性耦接至主機20和非揮發性記憶體12。控制器11包括第一通訊介面111、第二通訊介面112和微處理器113。微處理器113電性耦接至第一通訊介面111以及第二通訊介面112。控制器11經由第一通訊介面111與主機20通訊以接收上述的寫入命令。控制器11還經由第二通訊介面112與非揮發性記憶體12通訊以存取非揮發性記憶體12。第一通訊介面111可以是序列式ATA(serial advanced technology attachment,SATA)、通用序列匯流排(universal serial bus,USB)、高速週邊元件互連(peripheral component interconnect express,PCI-E)、通用快閃記憶體儲存裝置(universal flash storage,UFS)、多媒體記憶卡(embedded MultiMedia card,eMMC)、安全數位輸入/輸出(secure digital input/output,SDIO)、mSATA(mini-SATA)或M.2(原稱為next generation form factor,NGFF)。在一實施例中,第二通訊介面112可以是開放式NAND快閃記憶體介面(open NAND flash interface,ONFI)或Toggle。此外,資料儲存裝置10優選地包括諸如DRAM的揮發性記憶體(volatile memory)13,用作資料緩衝器以加速寫入命令的處理。
圖2為依照本發明一實施例的動態損耗平均方法的流程圖。本發明的動態損耗平均方法優選地用於資料儲存裝置10。首先,在步驟S102中,維持記錄有多個物理區塊號(physical block number)和區塊狀態(block status)的管理表(management table)。所述多個物理區塊號指的是管理表中區塊的條目(entry)或序列號(sequence number)。當資料儲存裝置10通電時,初始化程序(initialization procedure)即開始並且向每個區塊分配物理區塊號和區塊狀態以產生管理表。管理表由控制器11產生和維護,並保存在非揮發性記憶體12中。在操作期間,區塊狀態會根據區塊的當前狀態而改變。例如,區塊狀態可指出某區塊當前是備用區塊、臨時區塊或資料區塊。控制器11將管理表複製到揮發性記憶體13或控制器11中的資料緩衝器以便有效和快速地維護和更新管理表。當本發明的動態損耗平均方法開始時,記錄有物理區塊號和區塊狀態的管理表由控制器11維護。所述維護指的是控制器11保持著管理表的內容更新並週期性地或當異常事件發生時將管理表的備份複製到非揮發性記憶體12。所述異常事件指的是意外或不正常事件的發生,例如,系統電源突然關閉。有時主機20會向控制器11傳送中斷信號(interrupt)以反映異常事件的發生。有時,是由控制器11直接偵測出異常事件。當偵測/接收到異常事件時,控制器11從正常模式(normal mode)離開而進入緊急模式(emergency mode)。
圖3是記錄有資料儲存裝置10的非揮發性記憶體12中每一區塊的物理區塊號和區塊狀態的示例性管理表。此外,圖3所示的管理表還記錄多個抹除次數(erase count)、讀取次數(read count)和時間標記(timestamp)。圖3的管理表僅僅示例性地記錄非揮發性記憶體12中的每個區塊的物理區塊號、區塊狀態、抹除次數、讀取次數和時間標記。在非揮發性記憶體12中實際上可以有數千個區塊,而為了簡化描述,在圖3中僅示出了七個區塊,但是本發明不以此為限。在圖3中,第一和第二區塊其物理區塊號分別為1和2,是備用區塊(區塊狀態標記為“S”),並且已經分別被抹除50和30次。因為沒有資料保存於第一和第二區塊,所以其時間標記是空白的(void)或者可以被記錄為00h或FFh(但不以此為限)。第三區塊其物理區塊號為3,曾被選取為臨時區塊(區塊狀態標記為“T”),並且來自主機20的資料被假定將寫入到第三區塊中。在2016/1/3保存第一筆資料之前,第三區塊曾經是備用區塊(圖中未示出)。第四、第五和第六區塊其物理區塊號分別為4、5和6,是資料區塊(區塊狀態標記為“D”),並且已經分別被抹除100、20和150次。第四、第五和第六區塊其第一筆資料分別記錄於2015/1/1、2016/1/1和2016/1/2。第七區塊其物理區塊號為7且是備用區塊(區塊狀態標記為“S”)。
該處值得注意的是,如果管理表未被重新排序(re-sorted)的話,則可以省略物理區塊號的那一列。換句話說,管理表內容的重新排序並非基於任何列,而所有的更新是被插入到它們對應的位置/地址(location/address)中。在這種情況下,控制器11可以根據管理表中單元(cell)的位置/位址來確定物理區塊號。例如,圖4是根據圖3所示的管理表修改後的管理表,其中,在圖4裡物理區塊號的那一列被移除。在此修改後的管理表中,第一列記錄的是區塊的抹除次數。控制器11根據位置/位址0、1、2和3分別確定了第一區塊的抹除次數、讀取次數、區塊狀態和時間標記; 根據位置/位址4、5、6和7分別確定了第二區塊的抹除次數、讀取次數、區塊狀態和時間標記; 根據位置/位址8、9、10和11分別確定了第三區塊的抹除次數、讀取次數、區塊狀態和時間標記等。因此,物理區塊號在管理表中可被明確地或隱含地揭露。換句話說,管理表可以以明確或隱含方式記錄或揭露物理區塊號。
在步驟S104中,控制器11選擇具有區塊狀態“S”和最小物理區塊號的備用區塊作為當前臨時區塊(current temporary block)。選擇備用區塊作為當前臨時區塊可根據幾種不同的選擇方法。例如,第一種可以是控制器11直接從備用池中選擇具有最小物理區塊號的備用區塊作為下一臨時區塊(next temporary block)。第二種可以是控制器11從備用隊列中選擇具有最小物理區塊號的備用區塊作為下一臨時區塊。備用隊列指的是在由候選的當前臨時區塊所形成的隊列中的一些備用區塊。例如,如果有300個備用區塊,則300個備用區塊中的30個可以被置於隊列中而其餘的備用區塊則與備用池相關聯。第三種可以是控制器11首先排除抹除次數高於門檻值(例如200)的所有備用區塊,然後再選擇具有最小物理區塊號的備用區塊作為當前臨時區塊。第四種可以是控制器11選擇具有前三個最小物理區塊號的區塊作為一組,並且從所述組中隨機選擇一個區塊作為當前臨時區塊。在第一選擇方法下,圖3的第三區塊被選取為當前臨時區塊,因其具有備用區塊狀態(圖中未示出)和最小物理區塊號。
在步驟S106中,控制器11從主機20接收寫入命令。主機20符合第一通訊介面111的規格並向控制器11發送寫入命令。寫入命令包括(寫入)資料和相應的地址。所述相應的地址優選地是邏輯區塊地址(logical block address,LBA)。寫入命令還可以包括諸如創建時間(creation time)或最後修改的時間等的元資料(metadata)。控制器11將接收此寫入命令的日期或時間記錄為寫入時間(write time),並將其保存在管理表中的時間標記列中。由於資料管理的機制不同,資料可能不會立即寫入當前臨時區塊中。例如,在資料管理的第一種機制中,資料直到其資料量達到或超過門檻值才會被寫入臨時區塊。例如,控制器11首先判斷寫入命令中的資料的大小是否等於或大於當前臨時區塊的資料頁(page)的大小(步驟S108)。在資料管理的第二種機制中,資料被立即寫入當前臨時區塊中。由於所述兩種機制都有其優點和缺點並且在本領域是公知的,因此在此省略其詳細描述。
在步驟S110中,控制器11判斷寫入命令中的資料是否應被寫入當前臨時區塊。 如果步驟S110的判斷結果為否,則執行步驟S112。如果步驟S110的判斷結果為真,則執行步驟S116。當前臨時區塊應該連續地保存資料。但是在某些情況下,當前臨時區塊有可能無法再繼續保存資料。例如,當當前臨時區塊已經被資料所填滿而變成資料區塊; 或者當當前臨時區塊因為資料管理的目的而被關閉而不再保存任何資料。在所述的任一種情況下,控制器11將決定將資料寫入另一臨時區塊。為了與當前臨時區塊區分,所述另一臨時區塊稱為下一臨時區塊。
在步驟S112中,控制器11選取具有區塊狀態“S”和另一最小物理區塊號的另一備用區塊作為下一臨時區塊。如圖3所示,有三個備用區塊可用,其物理區塊號分別是1、2和7。因為1是此三個物理區塊號中最小的,所以第一區塊將被選取為下一臨時區塊。當然在不同的機制中,有可能選擇第二區塊而非第一區塊作為下一臨時區塊。在第一區塊是當前臨時區塊但是不能再保存資料的情況下,在步驟S112中第二或第七區塊將被選取為下一臨時區塊。因為管理表沒有被重新排序,所以控制器11可以立即或快速地選取下一臨時區塊。由於不需要執行複雜的比較程序,例如比較抹除次數、讀取次數、時間標記等之間的差異,因此相較於現有技術,本發明的動態損耗平均方法提供了更好的性能。
在步驟S114中,控制器11將資料寫入下一臨時區塊並且最終結束本發明的動態耗損平衡方法。在步驟S116中,控制器11將資料寫入當前臨時區塊並且最終結束本發明的動態耗損平衡方法。
為了平均地利用非揮發性記憶體12中的區塊,圖5揭露了依照本發明第一實施例的損耗平均方法。請處值得注意的是,本實施例的損耗平均方法類似於本發明先前揭露的動態損耗平均方法。圖5和圖3所使用相同符號的步驟代表相同的步驟內容。
在步驟S202中,產生記錄有多個物理區塊號、抹除次數和區塊狀態的管理表。類似於步驟S102,步驟202還記錄區塊的多個抹除次數。
在步驟S204中,控制器11在後台模式(background mode)下用熱備用區塊(hot spare block)交換冷資料區塊(cold data block)。熱區塊(hot block)指的是具有較大抹除次數的區塊,而熱備用區塊指的是具有較大抹除次數的備用區塊。熱區塊可以被定義為具有大於熱門檻值(hot threshold,例如100)的抹除次數的單個區塊或一組區塊。因此,在隨後的例子中,可以從區塊組中隨機選擇一個區塊或者直接選擇一個具有極值(extreme)的區塊作為熱備用區塊。類似地,冷區塊(cold block)指的是具有較小抹除次數的區塊,而冷資料區塊指的是具有較小抹除次數的資料區塊。冷區塊可以被定義為具有小於冷門檻值(cold threshold,例如30)的抹除次數的單個區塊或一組區塊。因此,在隨後的例子中,可以從區塊組中隨機選擇一個區塊或者直接選擇一個具有極值的區塊作為冷資料區塊。當控制器11從主機20接收到命令後,控制器11操作在前台模式(foreground mode)。在前台模式中,控制器11可直接回應命令。當控制器11在一定時間(例如1秒)內沒有從主機20接收到任何命令時,控制器11切換到後台模式。在後台模式中,控制器11不直接回應來自主機20的任何命令,而是為了資料管理的目的而執行某些任務,例如靜態損耗平均(static wear leveling)或垃圾收集。以圖3中的管理表為例,在步驟S204中進入後台模式後,控制器11判定第五區塊為冷資料區塊,因為其抹除次數小於冷門檻值且其區塊狀態標示為“D”。控制器11還判定第七區塊是熱備用區塊,因為其抹除次數大於熱門檻值且其區塊狀態被標記為“S”。當冷資料區塊和熱備用區塊被選取或判定後,控制器11對這兩個區塊執行交換程序(swap procedure)。交換程序指的是將保存的資料從冷資料區塊複製或搬移到熱備用區塊。如圖6中更新後的管理表所示,當交換程序完成後,第五區塊中的冷資料區塊變成備用區塊並且其區塊狀態被重新標記為“S”。類似地,第七區塊中的熱備用區塊變成資料區塊並且其區塊狀態被重新標記為“D”。此外在交換程序期間,諸如時間標記等與資料相關的資訊也被交換而諸如讀取次數等無關資訊被重置。當然在交換程序中,僅僅有效資料會被複製或搬移。最後,新備用區塊(即第五區塊)的抹除次數被遞增,亦即,在交換程序完成之後抹除次數立即加一。此外根據使用者的實際需要,抹除次數也可以在稍後的時間點被遞增,但是必須在相應的區塊被選取為臨時區塊之前。
在一替代實施例中,控制器11在執行步驟S204之前計算最冷資料區塊(coldest data block)和最熱備用區塊(hottest spare block)之間的抹除次數差。所述最冷和最熱區塊分別是冷區塊和熱區塊的極端。步驟S204 僅在滿足特定條件時才被執行。例如,僅當最冷資料區塊(例如圖3中的第五資料區塊)和最熱備用區塊(例如圖3中的第七資料區塊)之間的抹除次數的差值大於次數門檻值(count threshold,例如100),則控制器11才將執行步驟S204。由於其餘步驟與本發明的動態損耗平均方法中的步驟相同,因此省略其描述。
為了平均地利用非揮發性記憶體12中的區塊,圖7揭露了依照本發明第二實施例的損耗平均方法。請處值得注意的是,本實施例的損耗平均方法類似於本發明先前揭露的動態損耗平均方法。圖7和圖3所使用相同符號的步驟代表相同的步驟內容。在步驟S302中,產生記錄有多個物理區塊號、抹除次數、區塊狀態和時間標記的管理表。 類似於步驟S202,步驟302還記錄區塊的多個時間標記。
在步驟S304中,控制器11在後台模式下用熱備用區塊交換舊資料區塊(old data block)。舊資料區塊指的是具有舊時間標記的資料區塊。如果單個資料區塊或一組資料區塊的時間標記早於預定時間點(例如2016/1/1),則可將其定義為舊資料區塊。在後一種情況下(即一組資料區塊的時間標記早於預定時間點),可以從區塊組中隨機選擇一個區塊或者直接選擇一個具有極值的區塊作為舊資料區塊。以圖3中的管理表為例,在進入後台模式之後,控制器11判定第四和第五區塊都是舊資料區塊,因其時間標記皆早於預定時間點並且其區塊狀態被標記為“D”。優選地,第四區塊被選取為舊資料區塊,因為它是兩個區塊(即第四和第五區塊)中較舊的資料區塊。另一方面,優選地,第七區塊被選取為熱備用區塊。當一組區塊被定義為舊資料區塊或熱備用區塊時,控制器11可以隨機地從區塊組中選擇任一個區塊或者直接選擇一個具有極值的區塊作為舊資料區塊或熱備用區塊。當舊資料區塊和熱備用區塊被選取後,控制器11對這兩個區塊執行交換程序。圖8示出了執行交換程序後所得的更新後管理表。
在一替代實施例中,控制器11在執行步驟S304之前先計算最舊資料區塊和最熱備用區塊之間的抹除次數差。步驟S304僅在滿足特定條件時才被執行。 例如,僅當最舊資料區塊(例如圖3中的第四區塊)和最熱備用區塊(例如圖3中的第七區塊)之間的抹除次數的差值大於次數門檻值(例如 100),控制器11才將執行步驟S304。 由於其餘步驟與第一實施例相同,因此省略其描述。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
10‧‧‧資料儲存裝置
11‧‧‧控制器
111‧‧‧第一通訊介面
112‧‧‧第二通訊介面
113‧‧‧微處理器
12‧‧‧非揮發性記憶體
13‧‧‧揮發性記憶體
20‧‧‧主機
S102、S104、S106、S108、S110、S112、S114、S116、S202、S204、S302、S304‧‧‧步驟
圖1為依照本發明一實施例的資料儲存裝置的方塊示意圖; 圖2為依照本發明一實施例的動態損耗平均方法的流程圖; 圖3是記錄有資料儲存裝置的非揮發性記憶體中每一區塊的物理區塊號和區塊狀態的示例性管理表; 圖4是根據圖3所示的管理表修改後的管理表; 圖5為依照本發明第一實施例的損耗平均方法的流程圖; 圖6為交換程序完成後所得的更新後的管理表; 圖7為依照本發明第二實施例的損耗平均方法的流程圖; 圖8為更新後的管理表。
S102、S104、S106、S108、S110、S112、S114、S116‧‧‧步驟

Claims (18)

  1. 一種用於一資料儲存裝置的損耗平均方法,其中,該資料儲存裝置包括一非揮發性記憶體,該非揮發性記憶體包括多個區塊,且該多個區塊中未儲存有任何有效資料的部分中的每一被定義為一備用區塊並且該備用區塊與一備用池相關聯,該損耗平均方法包括以下步驟: 維持一管理表,其中,該管理表記錄有對應該多個區塊的多個物理區塊號和多個區塊狀態; 選擇具有該多個區塊狀態之一和一第一最小物理區塊號的一第一備用區塊作為一當前臨時區塊; 從一主機接收一寫入命令; 判斷該寫入命令中的一資料是否應被寫入該當前臨時區塊; 當判斷結果為否,則選擇具有該多個區塊狀態之一和一第二最小物理區塊號的一第二備用區塊作為一下一臨時區塊;以及 將該資料寫入該下一臨時區塊。
  2. 如請求項第1項所述之損耗平均方法,其中,該第一最小物理區塊號和該第二最小物理區塊號是從由多個最小物理區塊號所形成的一組中隨機選擇。
  3. 如請求項第1項所述之損耗平均方法,其中,判斷該寫入命令中的該資料是否應被寫入該當前臨時區塊的步驟還包括以下步驟: 判斷該資料的大小是否等於或大於該當前臨時區塊的一資料頁的大小。
  4. 如請求項第1項所述之損耗平均方法,其中,該多個區塊中儲存有有效資料的部分中的每一被定義為一資料區塊。
  5. 如請求項第4項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一冷資料區塊,其中,該冷資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該冷資料區塊從該多個資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
  6. 如請求項第5項所述之損耗平均方法,其中,該冷資料區塊的該抹除次數小於一冷門檻值。
  7. 如請求項第5項所述之損耗平均方法,其中,該熱備用區塊的該抹除次數大於一熱門檻值。
  8. 如請求項第4項所述之損耗平均方法,還包括以下步驟: 在一後台模式下判斷一冷資料區塊和一熱備用區塊之間的一抹除次數差值是否大於一次數門檻值;以及 當判斷結果為是,用該熱備用區塊交換該冷資料區塊,其中,該冷資料區塊和熱備用區塊其各自的一抹除次數皆被記錄在該管理表中。
  9. 如請求項第4項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一舊資料區塊,其中,該舊資料區塊的一時間標記以及該舊資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該舊資料區塊從該多個資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
  10. 如請求項第9項所述之損耗平均方法,其中,該舊資料區塊的該時間標記早於一預定時間點。
  11. 如請求項第9項所述之損耗平均方法,其中,該熱備用區塊的該抹除次數大於一熱門檻值。
  12. 如請求項第1項所述之損耗平均方法,還包括以下步驟: 當判斷結果為是,則將該資料寫入該當前臨時區塊。
  13. 一種用於一資料儲存裝置的損耗平均方法,其中,該資料儲存裝置包括一非揮發性記憶體,該非揮發性記憶體包括多個區塊,且該多個區塊中未儲存有任何有效資料的部分中的每一被定義為一備用區塊,該損耗平均方法包括以下步驟: 為該多個備用區塊的每一分配多個物理區塊號的其中之一; 維持一管理表,其中,該管理表記錄有該多個物理區塊號; 從該多個備用區塊中選取一第一備用區塊作為一當前臨時區塊; 判斷從一主機接收的一資料是否應被寫入該當前臨時區塊; 當判斷結果為否,則從該多個備用區塊中選取一第二備用區塊作為一下一臨時區塊;以及 將該資料寫入該下一臨時區塊。
  14. 如請求項第13項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一冷資料區塊,其中,該冷資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該冷資料區塊從多個儲存有有效資料的資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
  15. 如請求項第13項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一舊資料區塊,其中,該舊資料區塊的一時間標記以及該舊資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該舊資料區塊從具有有效資料的多個資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
  16. 一種用於一資料儲存裝置的損耗平均方法,其中,該資料儲存裝置包括一非揮發性記憶體,該非揮發性記憶體包括多個區塊,該多個區塊中未儲存有任何有效資料的部分中的每一被定義為一備用區塊,且該多個區塊中儲存有有效資料的部分中的每一被定義為一資料區塊,該方法包括以下步驟: 維持一管理表,其中,該管理表記錄有該多個區塊的多個物理區塊號; 從該多個備用區塊中選取一第一備用區塊作為一當前臨時區塊; 從一主機接收一寫入命令; 判斷該寫入命令中的一資料是否應被寫入該當前臨時區塊; 當判斷結果為否,則從具有一最小物理區塊號的該多個備用區塊中選取一第二備用區塊作為一下一臨時區塊;以及 將資料寫入該下一臨時區塊。
  17. 如請求項第16項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一冷資料區塊,其中,該冷資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該冷資料區塊從該多個資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
  18. 如請求項第16項所述之損耗平均方法,還包括以下步驟: 在一後台模式下用一熱備用區塊交換一舊資料區塊,其中,該舊資料區塊的一時間標記以及該舊資料區塊和該熱備用區塊其各自的一抹除次數皆被記錄在該管理表中,其中,該舊資料區塊從該多個資料區塊中選取,且該熱備用區塊從該多個備用區塊中選取。
TW106103752A 2016-07-11 2017-02-03 用於資料儲存裝置的損耗平均方法 TWI597605B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/207,456 US9830098B1 (en) 2016-07-11 2016-07-11 Method of wear leveling for data storage device
US15/207456 2016-07-11

Publications (2)

Publication Number Publication Date
TWI597605B true TWI597605B (zh) 2017-09-01
TW201810044A TW201810044A (zh) 2018-03-16

Family

ID=60407732

Family Applications (2)

Application Number Title Priority Date Filing Date
TW106103752A TWI597605B (zh) 2016-07-11 2017-02-03 用於資料儲存裝置的損耗平均方法
TW106123873A TWI632457B (zh) 2016-07-11 2017-02-03 用於資料儲存裝置的損耗平均方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW106123873A TWI632457B (zh) 2016-07-11 2017-02-03 用於資料儲存裝置的損耗平均方法

Country Status (3)

Country Link
US (2) US9830098B1 (zh)
CN (1) CN107608908B (zh)
TW (2) TWI597605B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643069B (zh) * 2017-12-29 2018-12-01 國科美國研究實驗室 Dynamic management of flash memory
TWI718492B (zh) * 2019-03-12 2021-02-11 群聯電子股份有限公司 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元
TWI829363B (zh) * 2022-09-26 2024-01-11 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置
US12112051B2 (en) 2023-02-03 2024-10-08 Hefei Core Storage Electronic Limited Valid node management method, memory storage device and memory control circuit unit

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6814107B2 (ja) * 2017-08-02 2021-01-13 ルネサスエレクトロニクス株式会社 半導体記憶装置、及び半導体記憶装置の制御方法
TWI659299B (zh) * 2018-04-19 2019-05-11 慧榮科技股份有限公司 資料儲存裝置及應用其的預防資料錯誤方法
KR20190123990A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10620867B2 (en) * 2018-06-04 2020-04-14 Dell Products, L.P. System and method for performing wear leveling at a non-volatile firmware memory
CN110825313A (zh) * 2018-08-10 2020-02-21 宇瞻科技股份有限公司 依时间戳管理作业程序的储存系统及其管理方法
TWI673607B (zh) * 2018-08-10 2019-10-01 宇瞻科技股份有限公司 依時間戳記管理作業程序之儲存系統及其管理方法
TWI678699B (zh) * 2018-09-19 2019-12-01 華邦電子股份有限公司 快閃記憶體儲存裝置及其操作方法
EP3627308A1 (en) * 2018-09-20 2020-03-25 STMicroelectronics Srl A method of managing memories, corresponding circuit, device and computer program product
US10884627B2 (en) * 2018-09-26 2021-01-05 International Business Machines Corporation Compacting data in a dispersed storage network
TWI688958B (zh) * 2019-08-23 2020-03-21 群聯電子股份有限公司 冷區域判斷方法、記憶體控制電路單元與記憶體儲存裝置
US11409664B2 (en) * 2020-05-08 2022-08-09 International Business Machines Corporation Logical memory allocation and provisioning using timestamps
TWI733568B (zh) * 2020-08-27 2021-07-11 慧榮科技股份有限公司 記憶裝置、快閃記憶體控制器及其存取方法
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
US11543993B1 (en) 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
CN113986140B (zh) * 2021-11-03 2023-10-27 深圳市源微创新实业有限公司 一种高传输率大容量云存储固态硬盘
US11899977B2 (en) * 2022-03-10 2024-02-13 Silicon Motion, Inc. Method and apparatus for performing access management of memory device with aid of serial number assignment timing control
CN114860624B (zh) * 2022-05-23 2023-04-28 深圳市芯存科技有限公司 一种基于Nandflash芯片的数据擦写方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100538660C (zh) * 2002-10-28 2009-09-09 桑迪士克股份有限公司 管理擦除计数区块的方法和设备
CN101256535B (zh) * 2007-03-01 2011-03-09 创惟科技股份有限公司 硬盘资料读写快取装置及方法
TW201324150A (zh) * 2011-10-05 2013-06-16 Lsi Corp 用於非揮發儲存之自我記錄及階層一致性
CN102012867B (zh) * 2009-09-03 2014-12-24 晶先锋科技有限公司 资料储存系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3544859B2 (ja) * 1998-05-11 2004-07-21 富士通株式会社 不揮発性半導体メモリを使用した2次記憶装置
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
JP4666081B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010287049A (ja) * 2009-06-11 2010-12-24 Toshiba Corp メモリシステムおよびメモリシステムの管理方法
JP2011203916A (ja) * 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
CN102135943B (zh) * 2011-03-23 2013-03-13 华为终端有限公司 闪存数据的存储、访问方法及装置
US9037779B2 (en) * 2011-12-19 2015-05-19 Sandisk Technologies Inc. Systems and methods for performing variable flash wear leveling
US20130311700A1 (en) * 2012-05-20 2013-11-21 Chung-Jwu Chen Extending Lifetime For Non-volatile Memory Apparatus
KR102210961B1 (ko) * 2013-06-12 2021-02-03 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100538660C (zh) * 2002-10-28 2009-09-09 桑迪士克股份有限公司 管理擦除计数区块的方法和设备
CN101256535B (zh) * 2007-03-01 2011-03-09 创惟科技股份有限公司 硬盘资料读写快取装置及方法
CN102012867B (zh) * 2009-09-03 2014-12-24 晶先锋科技有限公司 资料储存系统
TW201510722A (zh) * 2009-09-03 2015-03-16 Pioneer Chip Technology Ltd 以頁面為基礎管理快閃儲存裝置
TW201324150A (zh) * 2011-10-05 2013-06-16 Lsi Corp 用於非揮發儲存之自我記錄及階層一致性

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643069B (zh) * 2017-12-29 2018-12-01 國科美國研究實驗室 Dynamic management of flash memory
TWI718492B (zh) * 2019-03-12 2021-02-11 群聯電子股份有限公司 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元
US10922021B2 (en) 2019-03-12 2021-02-16 Phison Electronics Corp. Data storage method based on data type identification, memory storage apparatus and memory control circuit unit
TWI829363B (zh) * 2022-09-26 2024-01-11 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置
US12112051B2 (en) 2023-02-03 2024-10-08 Hefei Core Storage Electronic Limited Valid node management method, memory storage device and memory control circuit unit

Also Published As

Publication number Publication date
CN107608908A (zh) 2018-01-19
TW201810044A (zh) 2018-03-16
TWI632457B (zh) 2018-08-11
TW201802683A (zh) 2018-01-16
CN107608908B (zh) 2020-09-08
US9830098B1 (en) 2017-11-28
US10031698B2 (en) 2018-07-24
US20180039435A1 (en) 2018-02-08

Similar Documents

Publication Publication Date Title
TWI597605B (zh) 用於資料儲存裝置的損耗平均方法
US10600491B2 (en) Method for managing data blocks and method of data management for data storage device
US20180260317A1 (en) Method for managing the copying and storing of data in garbage collection, memory storage device and memory control circuit unit using the same
US9747202B1 (en) Storage module and method for identifying hot and cold data
US9582416B2 (en) Data erasing method, memory control circuit unit and memory storage apparatus
US8103820B2 (en) Wear leveling method and controller using the same
KR101447786B1 (ko) 파워 인터럽트 관리
TWI524183B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US8392649B2 (en) Memory storage device, controller, and method for responding to host write commands triggering data movement
US9213634B2 (en) Efficient reuse of segments in nonoverwrite storage systems
JP2008529130A (ja) フラッシュメモリシステムにおけるハウスキーピング操作のスケジューリング
TWI797742B (zh) 在快閃記憶體中進行耗損平衡操作的方法和相關控制器以及儲存系統
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
US9304906B2 (en) Memory system, controller and control method of memory
CN111506255B (zh) 基于nvm的固态硬盘元数据管理方法及系统
US20110087828A1 (en) Method for enhancing performance of accessing a flash memory, and associated memory device and controller thereof
US11687447B1 (en) Method and apparatus for performing access control of memory device with aid of additional physical address information
US10896004B2 (en) Data storage device and control method for non-volatile memory, with shared active block for writing commands and internal data collection
US20230161698A1 (en) Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management
CN117056125A (zh) 管理数据备份方法、存储器存储装置及存储器控制器