TWI759580B - 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 - Google Patents

管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 Download PDF

Info

Publication number
TWI759580B
TWI759580B TW108103265A TW108103265A TWI759580B TW I759580 B TWI759580 B TW I759580B TW 108103265 A TW108103265 A TW 108103265A TW 108103265 A TW108103265 A TW 108103265A TW I759580 B TWI759580 B TW I759580B
Authority
TW
Taiwan
Prior art keywords
time information
flash memory
block
blocks
specific
Prior art date
Application number
TW108103265A
Other languages
English (en)
Other versions
TW202028984A (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 慧榮科技股份有限公司
Priority to TW108103265A priority Critical patent/TWI759580B/zh
Priority to CN201910221067.0A priority patent/CN111488118B/zh
Priority to US16/686,214 priority patent/US11210209B2/en
Publication of TW202028984A publication Critical patent/TW202028984A/zh
Application granted granted Critical
Publication of TWI759580B publication Critical patent/TWI759580B/zh

Links

Images

Classifications

    • 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/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0608Saving storage space on storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本發明揭露了一種管理一快閃記憶體模組的方法,其中該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁,且該方法包含有以下步驟:使用一時間管理電路來產生目前的一時間資訊;當資料被寫入至該多個區塊中任一區塊時,記錄該時間管理電路所產生的該時間資訊;以及根據每一個區塊內無效資料頁的數量以及每一個區塊所對應的該時間資訊,以選擇出需要進行垃圾收集操作的至少一個特定區塊。

Description

管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電 子裝置
本發明係有關於快閃記憶體控制器。
隨著快閃記憶體技術的演進,快閃記憶體晶片中之記憶單元由平面排列的方式改變為多層堆疊的模式,以使得單一晶片可以包含更多的記憶單元,以提升快閃記憶體晶片的容量。然而,上述立體快閃記憶體(3D flash memory)會遭遇到資料保存(data retention)上的問題,亦即當資料寫入到快閃記憶體晶片後不久,其資料品質便會大幅下滑,而可能使得資料無法被正確地讀取。此外,若是區塊內的資料太常被讀取,則也有可能會受到讀取干擾(read disturbance)的問題,以使得資料品質變差。因此,如何提出一種有效率的管理方法來避免資料保存上的問題是一個重要的技術方向。
因此,本發明提出了一種管理快閃記憶體的方法,其可以在決定垃圾收集操作之優先順序的判斷上加入區塊在儲存資料時的時間資訊,以有效率 地解決區塊之資料保存以及讀取干擾上的問題。
在本發明的一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁,且該快閃記憶體控制器包含有一唯讀記憶體、一微處理器以及一時間管理電路。該唯讀記憶體用來儲存一程式碼,該微處理器用來執行該程式碼以控制對該快閃記憶體模組之存取,且該時間管理電路用以產生目前的一時間資訊,其中當該微處理器將資料寫入至該多個區塊中任一區塊時,該微處理器記錄該時間管理電路所產生的該時間資訊;以及該微處理器另根據每一個區塊內無效資料頁的數量以及每一個區塊所對應的該時間資訊,以選擇出需要進行垃圾收集操作的至少一個特定區塊。
在本發明的另一個實施例中,揭露了一種管理一快閃記憶體模組的方法,其中該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁,且該方法包含有以下步驟:使用一時間管理電路來產生目前的一時間資訊;當資料被寫入至該多個區塊中任一區塊時,記錄該時間管理電路所產生的該時間資訊;以及根據每一個區塊內無效資料頁的數量以及每一個區塊所對應的該時間資訊,以選擇出需要進行垃圾收集操作的至少一個特定區塊。
在本發明的另一個實施例中,揭露了一種包含一快閃記憶體模組以及一快閃記憶體控制器的電子裝置,其中該快閃記憶體模組,其中該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊, 且每一個區塊包含多個資料頁,且該快閃記憶體控制器用以存取該快閃記憶體模組。在該電子裝置的操作中,該快閃記憶體控制器產生目前的一時間資訊,且當該快閃記憶體控制器將資料寫入至該多個區塊中任一區塊時,該快閃記憶體控制器記錄該時間管理電路所產生的該時間資訊;以及該快閃記憶體控制器另根據每一個區塊內無效資料頁的數量以及每一個區塊所對應的該時間資訊,以選擇出需要進行垃圾收集操作的至少一個特定區塊。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
119:時間管理電路
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
N1、N2:特定接腳
200、B1~BN:區塊
202:浮閘電晶體
BL1、BL2、BL3:位元線
WL0~WL2、WL4~WL6:字元線
P1~PN:資料頁
400:時間資訊對照表
TS1~TS10:時間戳記
500:無效資料頁數量對照表
600~606:步驟
第1圖為依據本發明一第一實施例之一種記憶裝置的示意圖。
第2圖為依據本發明一實施例之快閃記憶體模組中一區塊的示意圖
第3圖為區塊與資料頁的示意圖。
第4圖為根據本發明一實施例之時間資訊對照表的示意圖。
第5圖為根據本發明一實施例之無效資料頁數量對照表的示意圖。
第6圖為根據本發明一實施例之一種管理一快閃記憶體模組的方法的流程圖。
第1圖為依據本發明一第一實施例之一種記憶裝置100的示意圖。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。在本實施例中,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、一介面邏輯118以及一時間管理電路119。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用 來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。控制邏輯114包含了一編碼器132以及一解碼器134,其中編碼器132用來對寫入到快閃記憶體模組120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從快閃記憶體模組120所讀出的資料進行解碼。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(block),而快閃記憶體控制器110對快閃記憶體模組120進行抹除資料運作係以區塊為單位來進行。另外,一區塊可記錄特定數量的資料頁(page),其中快閃記憶體控制器110對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。在本實施例中,快閃記憶體模組120為一立體NAND型快閃記憶體(3D NAND-type flash)模組。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。此外,時間管理電路119透過快閃記憶體控制器的一特定接腳N1與主裝置的一特定接腳N2連接。緩衝記憶體116係以隨機存取記憶體(Random Access Memory,RAM)來實施,例如,緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM,SRAM),但本發明不限於此。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接 的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,記憶裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
第2圖為依據本發明一實施例之快閃記憶體模組120中一區塊200的示意圖,其中快閃記憶體模組120為立體NAND型快閃記憶體。如第2圖所示,區塊200包含了多個記憶單元(例如圖示的浮閘電晶體202或是其他的電荷捕捉(charge trap)元件),其透過多條位元線(圖示僅繪示了BL1~BL3)及多條字元線(例如圖示WL0~WL2、WL4~WL6)來構成立體NAND型快閃記憶體架構。在第2圖中,以最上面的一個平面為例,字元線WL0上的所有浮閘電晶體構成了至少一資料頁,字元線WL1上的所有浮閘電晶體構成了另至少一資料頁,而字元線WL2的所有浮閘電晶體構成了再另至少一資料頁...以此類堆。此外,根據快閃記憶體寫入方式的不同,字元線WL0與資料頁(邏輯資料頁)之間的定義也會有所不同,詳細來說,當使用單層式儲存(Single-Level Cell,SLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到單一邏輯資料頁;當使用雙層式儲存(Multi-Level Cell,MLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到兩個邏輯資料頁;當使用三層式儲存(Triple-Level Cell,TLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到三個邏輯資料頁;以及當使用四層式儲存(Quad-Level Cell,QLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到四個邏輯資料頁。由於本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。
在第2圖所繪示的架構僅是簡單說明立體快閃記憶體的基本架構,而在實際的製造上會具有更多層的堆疊以達到更高密度的儲存容量。由於立體快閃記憶體採用第2圖所示的堆疊架構,因此資料在儲存上會遭遇到很嚴重的資料保存(data retention)問題,亦即當資料寫入到區塊200之後,經過了一段時間其中的記憶單元便會遭遇資料寫入位準變化、臨界電壓漂移...等等資料品質上的問題,因而使得區塊200內的資料在後續讀取時可能會遭遇的解碼上的困難、或甚至無法成功完成解碼而造成資料遺失。此外,上述堆疊架構也會使得讀取干擾的情形也變嚴重。因此,本實施例提出了一種快閃記憶體模組120的管理方法,其可以在快閃記憶體控制器110中設置一時間管理電路119,以有效率地記錄每一個區塊的時間資訊,以供微處理器112在建立垃圾收集操作之優先順序時的參考,其具體操作內容詳述如下。
第3圖繪示了區塊200包含了多個資料頁P0~PN的示意圖。當快閃記憶體控制器110需要將來自主裝置130的資料、或是將快閃記憶體模組120內其他區塊的資料、及/或將快閃記憶體控制器110本身所暫存的資料寫入至區塊200時,快閃記憶體控制器110會依序將這些資料由第一個資料頁P0依序往下寫入至最後一個資料頁PN。在本實施例中,當快閃記憶體控制器110準備將資料寫入至最後一個資料頁PN、或是準備將資料寫入至最後多個資料頁時,時間管理電路119會透過特定接腳N1發送一個請求指令至主裝置130中,以要求主裝置130提供目前的時間資訊,而由於主裝置130本身有連接到作業系統,故可以提供目前的時間資訊(例如,月、日、分、秒等資訊)至時間管理電路119。在時間管理電路119接收到時間資訊之後,便會將此時間資訊提供給微處理器112,以供微處理器112透過編碼器132的處理後連同其他資料一起寫入至資料頁PN中。
由於區塊200的最後一個資料頁PN所記錄的是絕對時間(例如,時間戳記),因此,微處理器112可以隨時輕易地判斷出區塊200的資料已經儲存了多久的時間,以作為後續建立垃圾收集操作之優先順序時的參考。然而,需注意的是,雖然在第3圖所示的實施例中,區塊200的最後一個資料頁PN記錄了最後一筆資料寫入的時間點,但此一特徵並非是作為本發明的限制。在其他的實施例中,時間資訊並非一定要被在最後一個資料頁PN,且區塊200所儲存的時間資訊可以是區塊200開始儲存資料的時間點、或是任何資料寫入至區塊200的時間點,只要時間資訊可以反映出區塊200中資料寫入的時間資訊即可。
在本發明的另一個實施例中,除了在每一個區塊的最後一個資料頁PN寫入時間資訊之外,微處理器112另建立如第4圖所示的一時間資訊對照表400,其記錄了每一個區塊(例如,第4圖的區塊B1~B10)所被寫入的時間資訊(例如,第4圖的時間戳記TS1~TS10)。在本實施例中,時間資訊對照表400可以暫存在一外部的動態隨機存取記憶體或是快閃記憶體控制器110內部的緩衝記憶體116中,以供快閃記憶體控制器110在不需要讀取快閃記憶體模組120之每一個區塊的情形下,快速地判斷每一個區塊的內的資料已經儲存了多久的時間,並進行適當的後續處置。
另外,當快閃記憶體控制器110準備關機或是記憶體需要釋放空間時,時間資訊對照表400可以被寫入到快閃記憶體模組120中的適當位址,以避免資料遺失。
在另一實施例中,為了更有效率地使用記憶體空間,時間資訊對照表400的內容可以被整合至其他的對照表/映射表中,例如邏輯位址至實體位址映 射表(logical address to physical address mapping table)或是實體位址至邏輯位址映射表(physical address to logical address mapping table)中。
需注意的是,在第1圖所示的實施例中,時間管理電路119係直接自主裝置130取得目前的時間資訊以供寫入至區塊200的最後一個資料頁PN中,但此一特徵並非是本發明的限制。在本發明的其他實施例中,時間管理電路119可以透過計時器或其他的方式來計算出目前的時間資訊。
另一方面,在快閃記憶體控制器110將資料寫入至快閃記憶體模組120的過程中,微處理器112也會根據寫入至快閃記憶體模組120的資料以建立/更新如第5圖所示的一無效資料頁數量對照表500,其記錄了每一個區塊(例如,第5圖的區塊B1~B10)以及內部所包含之無效資料頁的數量。舉例說明無效資料頁數量對照表500的更新操作,假設目前區塊B2的資料頁P2儲存了具有一第一邏輯位址的資料,而此時微處理器112接收到來自主裝置130的一寫入命令,其中該寫入命令包含了該第一邏輯位址及相關的資料,則由於該寫入命令係用來更新區塊B2之資料頁P2所儲存的內容(更新後的資料會被寫入到另一個區塊中),故區塊B2的資料頁P2之後會被標記為無效資料頁,且此時微處理器112便可以將無效資料頁數量對照表500內所記錄之區塊B2的無效資料頁數量加上“1”。
由於時間資訊對照表400記錄了每一個區塊的時間資訊,而區塊的時間資訊可以反映出區塊是否有可能遭遇到資料保存或是讀取干擾的問題,因此,透過參考時間資訊對照表400以及無效資料頁數量對照表500來選擇出需要進行垃圾收集(garbage collection)操作的多個特定區塊,並決定其進行垃圾收集操作的優先順序,可以在有效釋放記憶體空間的情形下,一併解決區塊可能遭 遇到資料保存或是讀取干擾的問題。
具體來說,當快閃記憶體控制器110空閒的時候,或是快閃記憶體控制器110因為遇到某些觸發條件而需要進行垃圾收集操作時(例如,快閃記憶體模組120的空間不足),微處理器112會根據時間資訊對照表400以及無效資料頁數量對照表500來選擇出需要進行垃圾收集操作的多個特定區塊及其優先順序,並據以進行垃圾收集操作。在第一個例子中,微處理器112可以先參考無效資料頁數量對照表500選擇無效資料頁數量高於一臨界值的一部份區塊以作為該多個特定區塊,以臨界值“50”來做為說明,微處理器112可以選擇區塊B3、B4、B5、B7來預備進行垃圾收集操作。接著,微處理器112再根據時間資訊對照表400來決定出區塊B3、B4、B5、B7進行垃圾收集操作的優先順序,在一例子中,微處理器112根據區塊B3、B4、B5、B7所對應到的時間戳記TS3、TS4、TS5、TS7來決定其排序,而時間戳記越早的區塊具有越高的優先順序,亦即對應較早時間戳記的特定區塊可以較優先地進行垃圾收集操作。
在第二個例子中,微處理器112可以先參考時間資訊對照表400來選擇所對應到之時間資訊早於一時間點的一部份區塊以作為該多個特定區塊,舉例來說,假設該時間點為20天,則微處理器112可以自時間資訊對照表400中選擇時間戳記早於20天前的區塊來作為該多個特定區塊,在以下的說明中係假設該多個特定區塊為B2、B3、B4、B7。之後,微處理器112再根據無效資料頁數量對照表500來決定區塊B2、B3、B4、B7進行垃圾收集操作的優先順序,在一例子中,微處理器112根據區塊B2、B3、B4、B7所對應到的無效資料頁數量來決定其排序,以第5圖為例,進行垃圾收集操作的優先順序依序為B7、B4、B3、B2。
在第三個例子中,微處理器112可以先參考時間資訊對照表400來選擇所對應到之時間資訊早於一時間點的一部份區塊,舉例來說,假設該時間點為20天,則微處理器112可以自時間資訊對照表400中選擇時間戳記早於20天前的區塊,例如區塊B2、B3、B4、B7。之後,微處理器112再參考無效資料頁數量對照表500已自該一部分區塊中選擇無效資料頁數量高於一臨界值的區塊以作為該多個特定區塊,以臨界值“50”來做為說明,微處理器112可以自區塊B2、B3、B4、B7中選擇出區塊B3、B4、B7來預備進行垃圾收集操作。
需注意的是,以上三個實施例僅是作為範例說明,而並非是本發明的限制。在其他的實施例中,只要垃圾收集操作的優先順序可以根據每一個區塊的無效資料頁數量以及區塊的時間資訊來決定,相關設計上的變化應隸屬於本發明的範疇。
在本發明的其他實施例中,微處理器112可以在任意適當的時間根據以上實施例的內容建立出需要進行垃圾收集操作之區塊的優先順序,並等待後續進行垃圾操作收集時使用。
第6圖為根據本發明一實施例之一種管理一快閃記憶體模組的方法的流程圖。參考以上實施例所述的內容,流程如下所述。
步驟600:流程開始。
步驟602:使用一時間管理電路來產生目前的一時間資訊。
步驟604:當資料被寫入至快閃記憶體模組中多個區塊中任一區塊時,記錄該時間管理電路所產生的該時間資訊。
步驟606:根據每一個區塊內無效資料頁的數量以及每一個區塊所對應的該時間資訊,以選擇出需要進行垃圾收集操作的多個特定區塊,並決定出該多個特定區塊進行垃圾收集操作的優先順序。
簡要歸納本發明,在本發明之快閃記憶體控制器中,透過根據每一個區塊的無效資料頁數量以及區塊的時間資訊來決定垃圾收集操作的區塊選擇其優先順序,可以讓同時具有無效資料頁數量較多、可能有資料保存或是讀取干擾問題的區塊優先進行垃圾收集操作,以有效率地改善快閃記憶體模組的有效儲存空間與資料品質。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
119:時間管理電路
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
N1、N2:特定接腳

Claims (7)

  1. 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁,且該快閃記憶體控制器包含有:一唯讀記憶體,用來儲存一程式碼;以及一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;一時間管理電路,耦接於該微處理器,用以產生目前的一時間資訊;其中當該微處理器將資料寫入至該多個區塊中任一區塊時,該時間管理電路透過一特定接腳發送一個請求指令至一主裝置中,以要求該主裝置提供目前的時間資訊,而在該時間管理電路接收到來自該主裝置的時間資訊之後,將該時間資訊提供給該微處理器以將該時間資訊連同該資料一併寫入至該區塊中;以及該微處理器另根據每一個區塊內每一個區塊所對應的該時間資訊以建立一時間資訊對照表,其記錄了該多個區塊中每一區塊的該時間資訊,並將該時間資訊對照表整合至邏輯位址至實體位址映射表(logical address to physical address mapping table)或是實體位址至邏輯位址映射表(physical address to logical address mapping table)中;其中該微處理器參考該時間資訊對照表來選擇所對應到之時間資訊早於一時間點的多個特定區塊,以作為需要進行垃圾收集操作的區塊;其中該微處理器另根據每一個特定區塊內無效資料頁的數量、且直接根據該時間資訊對照表,並在不讀取該多個特定區塊的情形下以得到每一特定區塊的該時間資訊的情形下,根據該每一個特定區塊內無效資料頁的數量來對需要進行垃圾收集操作的該多個特定區塊進行排序,以 決定出該多個特定區塊在進行垃圾收集操作時的優先順序。
  2. 如申請專利範圍第1項所述之快閃記憶體控制器,其中該微處理器將該時間資訊對照表暫存在一動態隨機存取記憶體或是該快閃記憶體控制器內部的一緩衝記憶體中。
  3. 如申請專利範圍第1項所述之快閃記憶體控制器,其中對應到較多無效資料頁的特定區塊具有較優先進行的垃圾收集操作。
  4. 一種管理一快閃記憶體模組的方法,其中該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁,且該方法包含有:使用一時間管理電路來產生目前的一時間資訊;當資料被寫入至該多個區塊中任一區塊時,該時間管理電路透過一特定接腳發送一個請求指令至一主裝置中,以要求該主裝置提供目前的時間資訊,而在該時間管理電路接收到來自該主裝置的時間資訊之後,將該時間資訊連同該資料一併寫入至該區塊中;以及根據每一個區塊所對應的該時間資訊以建立一時間資訊對照表,其記錄了該多個區塊中每一區塊的該時間資訊,並將該時間資訊對照表整合至邏輯位址至實體位址映射表(logical address to physical address mapping table)或是實體位址至邏輯位址映射表(physical address to logical address mapping table)中;參考該時間資訊對照表來選擇所對應到之時間資訊早於一時間點的多個特定區塊,以作為需要進行垃圾收集操作的區塊; 根據每一個特定區塊內無效資料頁的數量、且直接根據該時間資訊對照表,並在不讀取該多個特定區塊的情形下以得到每一特定區塊的該時間資訊的情形下,根據該每一個特定區塊內無效資料頁的數量來對需要進行垃圾收集操作的該多個特定區塊進行排序,以決定出該多個特定區塊在進行垃圾收集操作時的優先順序。
  5. 如申請專利範圍第4項所述之方法,另包含有:將該時間資訊對照表暫存在一動態隨機存取記憶體或是一緩衝記憶體中。
  6. 如申請專利範圍第4項所述之方法,其中對應到較多無效資料頁的特定區塊具有較優先進行的垃圾收集操作。
  7. 一種電子裝置,包含有:一快閃記憶體模組,其中該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含多個資料頁;以及一快閃記憶體控制器,用以存取該快閃記憶體模組;其中當該快閃記憶體控制器將資料寫入至該多個區塊中任一區塊時,該快閃記憶體控制器透過一特定接腳發送一個請求指令至一主裝置中,以要求該主裝置提供目前的時間資訊,而在該快閃記憶體控制器接收到來自該主裝置的時間資訊之後,將該時間資訊連同該資料一併寫入至該區塊中;以及該快閃記憶體控制器另根據每一個區塊所對應的該時間資訊以建立一時間資訊對照表,其記錄了該多個區塊中每一區塊的該時間資訊,並將該時間資訊對照表整合至邏輯位址至實體位址映射 表(logical address to physical address mapping table)或是實體位址至邏輯位址映射表(physical address to logical address mapping table)中;其中該微處理器參考該時間資訊對照表來選擇所對應到之時間資訊早於一時間點的多個特定區塊,以作為需要進行垃圾收集操作的區塊;其中該快閃記憶體控制器另根據每一個特定區塊內無效資料頁的數量、且直接根據該時間資訊對照表,並在不讀取該多個特定區塊的情形下以得到每一特定區塊的該時間資訊的情形下,根據該每一個特定區塊內無效資料頁的數量來對需要進行垃圾收集操作的該多個特定區塊進行排序,以決定出該多個特定區塊在進行垃圾收集操作時的優先順序。
TW108103265A 2019-01-29 2019-01-29 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 TWI759580B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW108103265A TWI759580B (zh) 2019-01-29 2019-01-29 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN201910221067.0A CN111488118B (zh) 2019-01-29 2019-03-22 管理闪存模块的方法及相关的闪存控制器与电子装置
US16/686,214 US11210209B2 (en) 2019-01-29 2019-11-18 Method for managing flash memory module and associated flash memory controller and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW108103265A TWI759580B (zh) 2019-01-29 2019-01-29 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置

Publications (2)

Publication Number Publication Date
TW202028984A TW202028984A (zh) 2020-08-01
TWI759580B true TWI759580B (zh) 2022-04-01

Family

ID=71732595

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108103265A TWI759580B (zh) 2019-01-29 2019-01-29 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置

Country Status (3)

Country Link
US (1) US11210209B2 (zh)
CN (1) CN111488118B (zh)
TW (1) TWI759580B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696074B (zh) * 2019-01-24 2020-06-11 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN117666972B (zh) * 2024-02-01 2024-05-14 合肥康芯威存储技术有限公司 一种存储装置及其数据处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US20180267720A1 (en) * 2017-03-14 2018-09-20 International Business Machines Corporation Techniques for selecting storage blocks for garbage collection based on longevity information

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008013229A1 (fr) * 2006-07-26 2008-01-31 Panasonic Corporation dispositif de stockage non volatil, système de stockage non volatil et unité d'hôte
KR100789406B1 (ko) * 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US8261136B2 (en) * 2009-06-29 2012-09-04 Sandisk Technologies Inc. Method and device for selectively refreshing a region of a memory of a data storage device
US8463826B2 (en) * 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
KR20120028581A (ko) * 2010-09-15 2012-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
TWI587136B (zh) * 2011-05-06 2017-06-11 創惟科技股份有限公司 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法
KR101907059B1 (ko) * 2011-12-21 2018-10-12 삼성전자 주식회사 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US8938597B2 (en) 2012-10-23 2015-01-20 Seagate Technology Llc Restoring virtualized GCU state information
CN104102600B (zh) * 2013-04-03 2018-01-12 慧荣科技股份有限公司 存储器控制器
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US20170220623A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Hot-Spot Adaptive Garbage Collection
US20170228191A1 (en) * 2016-02-08 2017-08-10 Western Digital Technologies, Inc. Systems and methods for suppressing latency in non-volatile solid state devices
US10289487B2 (en) * 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN107943710B (zh) * 2016-10-13 2021-08-27 深圳大心电子科技有限公司 存储器管理方法及使用所述方法的存储控制器
KR20190123990A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10635346B2 (en) * 2018-06-11 2020-04-28 Western Digital Technologies, Inc. Self-trimming of data stored in non-volatile memory using data storage controller
US10838859B2 (en) * 2018-09-25 2020-11-17 Western Digital Technologies, Inc. Recency based victim block selection for garbage collection in a solid state device (SSD)
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US20180267720A1 (en) * 2017-03-14 2018-09-20 International Business Machines Corporation Techniques for selecting storage blocks for garbage collection based on longevity information

Also Published As

Publication number Publication date
CN111488118B (zh) 2023-06-20
TW202028984A (zh) 2020-08-01
US11210209B2 (en) 2021-12-28
CN111488118A (zh) 2020-08-04
US20200242026A1 (en) 2020-07-30

Similar Documents

Publication Publication Date Title
US11630768B2 (en) Method for managing flash memory module and associated flash memory controller and electronic device
TWI807674B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
US11068201B2 (en) Flash memory controller, method for managing flash memory module and associated electronic device
TWI759580B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TWI748542B (zh) 電子裝置、快閃記憶體控制器及快閃記憶體模組進行垃圾收集操作的方法
TWI722938B (zh) 記憶裝置、快閃記憶體控制器及其存取方法
US11487655B2 (en) Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations
CN111159069A (zh) 闪存控制器、管理闪存模块的方法及相关的电子装置
TWI781886B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TWI768336B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TWI769100B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
US11249676B2 (en) Electronic device, flash memory controller and associated control method
TWI760094B (zh) 記憶裝置、快閃記憶體控制器及其存取方法
TW202234253A (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TWI823649B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置