TWI722938B - 記憶裝置、快閃記憶體控制器及其存取方法 - Google Patents
記憶裝置、快閃記憶體控制器及其存取方法 Download PDFInfo
- Publication number
- TWI722938B TWI722938B TW109122716A TW109122716A TWI722938B TW I722938 B TWI722938 B TW I722938B TW 109122716 A TW109122716 A TW 109122716A TW 109122716 A TW109122716 A TW 109122716A TW I722938 B TWI722938 B TW I722938B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- flash memory
- time
- memory module
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/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/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
-
- 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/0656—Data buffering arrangements
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明揭露了一種應用於快閃記憶體控制器的控制方法,其包含有以下步驟:建立寫入時間記錄表,其中該寫入時間記錄表記錄了快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的第一時間與第二時間;參考寫入時間記錄表以判斷快閃記憶體模組中是否有至少一第一區塊的第一時間早於第一門檻值,若有的話在過期區塊表中記錄至少一第一區塊;參考寫入時間記錄表以判斷快閃記憶體模組中是否有至少一第二區塊的第二時間早於第二門檻值,若有的話在過期區塊表中記錄至少一第二區塊;以及根據過期區塊表來進行過期區塊回收操作。
Description
本發明係有關於快閃記憶體控制器及相關的控制方法。
隨著立體快閃記憶體技術的發展,快閃記憶體晶片內堆疊的層數越來越多,再加上目前的快閃記憶體模組內會包含許多採用三層式儲存(Triple-Level Cell,TLC)或是四層式儲存(Quad-Level Cell,QLC)的區塊,因此,快閃記憶體內所儲存之資料的品質越來越差,甚至在資料寫入後數週後便品質快速下滑而造成後續解碼上的困難或甚至無法讀取。為了解決此一問題,快閃記憶體控制器可以利用空閒的時間讀取快閃記憶體模組內每一個區塊的部分內容,以判斷出每一個區塊的品質,然而,上述方法會耗費大量的時間,且若是快閃記憶體控制器常常處於忙碌狀態時會無法兼顧存取效率與區塊品質。
因此,本發明的目的之一在於提出一種快閃記憶體控制器與相關的控制方法,其可以有效率地對快閃記憶體模組內品質可能有問題的區塊預先做處理,以解決先前技術中所述的問題。
在本發明的一個實施例中,揭露了一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,該快閃記憶體模組包含了多個區塊,且每一個區塊包含了多個資料頁,以及該控制方法包含有:當資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間;當資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間;當資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間;建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間;參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊;參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一唯讀記憶體、一微處理器以及一緩衝記憶體。當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間;當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間;當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間;該微處理器另建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間。此外,該微處理器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊;該微處理器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
在本發明的另一個實施例中,揭露了一種記憶裝置,其包含有一快閃記憶體模組及一快閃記憶體控制器。當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間;當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間;當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間;該快閃記憶體控制器另建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間;此外,該快閃記憶體控制器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊;該快閃記憶體控制器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
第1圖為依據本發明一實施例之一種記憶裝置100的示意圖。電子裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory, ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體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溝通。緩衝記憶體116係以隨機存取記憶體(Random Access Memory,RAM)來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM,SRAM),但本發明不限於此。此外,快閃記憶體控制器110耦接於一動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置100連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,記憶裝置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上的所有浮閘電晶體對應到兩個邏輯資料頁;當使用三層式儲存(TLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到三個邏輯資料頁;以及當使用四層式儲存(QLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到四個邏輯資料頁。由於本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。
第3圖所示為根據本發明一實施例之建立一寫入時間記錄表的流程圖。在步驟300,流程開始,快閃記憶體控制器110上電並完成了初始化操作。在步驟302,快閃記憶體控制器110自快閃記憶體模組120的多個空白區塊中選擇一區塊,準備將來自主裝置130的資料寫入至該區塊之中。在步驟304,快閃記憶體控制器110將資料由該區塊的第一資料頁開始寫入,並在資料寫入第一資料頁以及中間資料頁時一併將當時的時間資訊寫入至備用區域中。具體來說,參考第4圖所示之快閃記憶體模組120的示意圖,假設區塊B1包含了多個資料頁P1~P256,快閃記憶體控制器110將資料自區塊B1的第一個資料頁P1開始依序寫入來自主裝置130的資料,其中當快閃記憶體控制器110準備將資料寫入到資料頁P1時,快閃記憶體控制器110會同時擷取目前的時間資訊T1_1,例如可以由內建的計時器或是來自主裝置130的絕對時間(例如,2020年5月11日下午2點)來產生對應的時間資訊,並將來自主裝置的資料與相關的時間資訊T1_1一併寫入到資料頁P1中,其中時間資訊T1_1可以寫入至位於資料頁P1後端的備用區域中。接著,快閃記憶體控制器110依序將資料寫入到資料頁P2、P3、…、直到當快閃記憶體控制器110準備將資料寫入到中間資料頁P128時,快閃記憶體控制器110會同時擷取目前的時間資訊T1_M並將來自主裝置的資料與相關的時間資訊T1_M一併寫入到資料頁P128中,其中時間資訊T1_M可以寫入至位於資料頁P128後端的備用區域中。需注意的是,第一個資料頁P1與中間資料頁P128之間的資料頁P2~P127可以不需要寫入任何的時間資訊,以降低快閃記憶體控制器110的負擔。需注意的是,上述之資料頁的備用區域也可稱為管理區域,亦即用來儲存一些管理資料,例如邏輯位址…等等。
需注意的是,在第4圖的實施例中,係以資料頁P128來作為中間資料頁,但此僅是範例說明而非是本發明的限制。在其他的實施例中,也可以使用資料頁P127來作為中間資料頁、或是同時使用資料頁P127、P128來做為中間資料頁。此外,在另一實施例中,中間資料頁的數量可以是多個資料頁,例如,資料頁P126、P127、P128、P129這四個資料頁都作為本實施例中所述的多個中間資料頁,亦即資料頁P126、P127、P128、P129的備用區域都儲存了對應的時間資訊。
接著,快閃記憶體控制器110依序將資料寫入到資料頁P129、P130、…、直到當快閃記憶體控制器110準備將資料寫入到最後資料頁(即,資料頁P256)時,快閃記憶體控制器110會將先前資料頁P1的時間資訊T1_1以及資料頁P128的時間資訊T1_M連同來自主裝置130的資料一併寫入到資料頁P256中,其中時間資訊T1_M可以寫入至位於資料頁P256後端的備用區域中。
在步驟306中,在區塊B1進行資料寫入的過程中,快閃記憶體控制器110會同步在DRAM 140中建立如第5圖所示的寫入時間記錄表500,亦即,寫入時間記錄表500會記錄區塊編號B1及對應的時間資訊T1_1、T1_M。需注意的是,寫入時間記錄表500所記錄的是第一個資料頁P1的時間資訊T1_1以及中間資料頁(例如,資料頁P128)的時間資訊T1_M,而若是如先前段落中所述每一個區塊有設定多個中間資料頁時,例如資料頁P126、P127、P128、P129這四個資料頁同時作為中間資料頁時,則寫入時間記錄表500可以根據資料頁P126、P127、P128、P129所記錄的多個時間資訊來產生中間資料頁的單一個時間資訊,例如將資料頁P126、P127、P128、P129所記錄的多個時間資訊做平均或是取中間值,來得到中間資料頁所對應的單一個時間資訊。
需注意的是,針對某些不具有DRAM 140的記憶裝置,上述的寫入時間記錄表500也可以被儲存在緩衝記憶體116中。
在步驟308,微處理器112判斷目前區塊B1的所有資料頁是否已都寫滿資料,若否,流程回到步驟304以繼續將資料寫入到區塊B1的剩餘資料頁;若是,流程回到步驟302以選擇下一個空白區塊,例如第4圖所示的區塊B2,接著,類似快閃記憶體控制器110對區塊B1的資料寫入流程,當快閃記憶體控制器110準備將資料寫入到區塊B2的資料頁P1時,快閃記憶體控制器110會同時擷取目前的時間資訊T2_1,並將來自主裝置的資料與相關的時間資訊T2_1一併寫入到區塊B2的資料頁P1中;當快閃記憶體控制器110準備將資料寫入到區塊B2的資料頁P128時,快閃記憶體控制器110會同時擷取目前的時間資訊T2_M,並將來自主裝置的資料與相關的時間資訊T2_M一併寫入到區塊B2的資料頁P128中;以及當快閃記憶體控制器110準備將資料寫入到資料頁P256時,快閃記憶體控制器110會將先前資料頁P1的時間資訊T2_1以及資料頁P128的時間資訊T2_M連同來自主裝置130的資料一併寫入到資料頁P256中。此外,微處理器112會更新寫入時間記錄表500以記錄區塊編號B2及對應的時間資訊T2_1、T2_M。
每當快閃記憶體模組120內有空白區塊開始進行資料寫入時,微處理器112都會更新寫入時間記錄表500,亦即寫入時間記錄表500記錄了快閃記憶體模組120中每一個區塊之第一個資料頁P1的時間資訊以及中間資料頁(例如資料頁P128)的時間資訊。
此外,寫入時間記錄表500會常駐在DRAM 140,以方便後續進行過期區塊判斷與垃圾收集(garbage collection)操作時使用,而當記憶裝置100需要關閉電源時,微處理器112會先將寫入時間記錄表500寫入至快閃記憶體模組120中,並等待記憶裝置100上電後重新讀取快閃記憶體模組120中的寫入時間記錄表500,並載入DRAM 140以供後續使用。
然而,記憶裝置100可能會因為各種不同的原因而造成突發性斷電(suddenly power off),而造成儲存在DRAM 140中的寫入時間記錄表500遺失。因此,在記憶裝置100重新上電之後,則需要重新在DRAM 140中建立出寫入時間記錄表500。具體來說,參考第6圖所示之根據本發明一實施例之記憶裝置上電後在DRAM 140中建立出寫入時間記錄表500的流程圖。在步驟600,流程開始,且記憶裝置100上電並開始初始化操作。在步驟602,微處理器112判斷記憶裝置100在上電之前的斷電是否是不正常斷電(突發性斷電),若否,流程進入步驟604以自快閃記憶體模組120讀取寫入時間記錄表500並暫存在DRAM 140中;若是,流程進入步驟606。舉例來說,當記憶裝置100在正常關機/斷電的情形下,快閃記憶體控制器110會將儲存在緩衝記憶體116中的多個暫存表格及資料儲存到快閃記憶體模組120中,且其中包含了一個用來標示記憶裝置100是否正常關機的標籤(flag),因此,快閃記憶體控制器110在上電後可以透過讀取儲存在快閃記憶體模組120中的上述標籤來判斷記憶裝置100之前是否有遭遇到不正常斷電的情形,例如,當上述標籤並未被正確設定時便判斷先前有遭遇到不正常斷電。在步驟606,微處理器112依序讀取快閃記憶體模組120中每一個有資料寫入的區塊的最後一個資料頁(例如,第4圖所示的資料頁P256),以取得每一個區塊之第一個資料頁的時間資訊以及中間資料頁的時間資訊。舉例來說,同時參考第4圖,微處理器112可以直接讀取區塊B1的最後一個資料頁P256來取得第一個資料頁P1的時間資訊T1_1以及中間資料頁P128的時間資訊T1_M,且也可以直接讀取區塊B2的最後一個資料頁P256來取得第一個資料頁P1的時間資訊T2_1以及中間資料頁P128的時間資訊T2_M。此外,在某些特別狀況下,例如區塊之最後一個資料頁P256的資料毀損,或是區塊的最後一個資料頁P256尚未有資料寫入,則此時微處理器112可以直接讀取上述區塊的第一個資料頁及中間資料頁的時間資訊。
由於記憶裝置100的初始化時間有一定的限制,例如1~2秒,再加上在初始化操作的期間內快閃記憶體控制器110會需要重建許多其他的對照表/映射表,因此,由於本實施例可以在僅讀取區塊的最後一個資料頁便可以得到第一個資料頁的時間資訊與中間資料頁的時間資訊,因此讓重建的寫入時間記錄表500變得很快速,以避免初始化操作的時間逾時。
在取得每一個有資料寫入之區塊的第一個資料頁的時間資訊以及中間資料頁的時間資訊後,便可以在DRAM 140中重新建立寫入時間記錄表500,此時流程便進入608以結束操作。
第7圖為根據本發明一實施例之進行過期區塊回收操作的流程圖。在步驟700,流程開始,且記憶裝置100已完成初始化操作。在步驟702,微處理器112根據寫入時間記錄表500,以判斷快閃記憶體模組120中是否有任何區塊之第一個資料頁P1的時間資訊早於一第一門檻值,若有,則流程進入步驟704;若否,流程進入步驟708。第一門檻值可以是根據目前時間所決定的時間,舉例來說,假設目前時間是2020年5月21日下午8點,則第一門檻值可以是12天前,亦即第一門檻值可以是2020年5月9日下午8點。
在步驟704中,微處理器112將第一個資料頁P1的時間資訊早於一第一門檻值的區塊加入至一過期區塊表中(例如,在過期區塊表中記錄這些區塊的區塊編號),並將這些區塊標註為待處理區塊。在本實施例中,過期區塊表係用來記錄過期區塊回收操作的優先順序,其具有固定的大小(即,可以記錄的區塊數量具有一上限值),因此,若是步驟702中所決定出的區塊數量太多,則優先選擇第一個資料頁P1之時間資訊較早的區塊加入至過期區塊表。
在步驟706,微處理器112判斷過期區塊表所記錄的區塊是否已到達上限值,若是,流程進入步驟712;若否,流程進入步驟708。
在步驟708,微處理器112根據寫入時間記錄表500,以判斷快閃記憶體模組120中是否有任何區塊之中間資料頁(例如,第4圖的資料頁P128)的時間資訊早於一第二門檻值,若有,則流程進入步驟710;若否,流程進入步驟712。第二門檻值可以是根據目前時間所決定的時間,且第二門檻值晚於第一門檻值。舉例來說,假設目前時間是2020年5月21日下午8點,則第二門檻值可以是11天前,亦即第一門檻值可以是2020年5月10日下午8點。
在步驟710中,微處理器112將中間資料頁的時間資訊早於一第二門檻值的區塊加入至一過期區塊表中,並將這些區塊標註為待處理區塊。此外,若是步驟708中所決定出的區塊數量太多,則優先選擇中間資料頁之時間資訊較早的區塊加入至過期區塊表。
關於上述步驟708、710中,由於在步驟704中已經將第一個資料頁P1的時間資訊早於第一門檻值的區塊加入至過期區塊表中,因此,步驟708、710中實質上可視為將中間資料頁的時間資訊介於第二門檻值與第一門檻值之間的區塊加入至過期區塊表。
需注意的是,上述過期區塊表所記錄之區塊並不全部都是根據步驟702、708中的方法所決定出的,亦即,過期區塊表中所記錄的區塊有部分可能是根據區塊品質或其他機制所決定的。
在步驟712,微處理器112根據上述過期區塊表中所記錄的區塊,來依序進行過期區塊回收操作。具體來說,微處理器112可以將過期區塊表中所記錄之區塊內的有效資料搬移到一個空白資料頁中,並在區塊的有效資料完全搬移之後,將區塊標記為無效或是進行抹除。需注意的是,步驟712所述的過期區塊回收操作可以在背景執行,亦即當快閃記憶體控制器110處於閒置狀態時(例如,不需要處理來自主裝置130的存取指令),則微處理器112可以開始執行過期區塊回收操作,直到快閃記憶體控制器110接收到來自主裝置130的存取指令而需要開始忙碌為止。
由於立體NAND型快閃記憶體不斷增加的記憶體容量的單位密度而致使記憶體性能不斷劣化,新型的立體NAND型快閃記憶體在資料寫入後,其記憶體細胞之閘極所儲存的電荷將不斷流失,在一段時間之後,某些記憶體細胞之閘極所儲存的電荷已經不能反應其原本所欲儲存的資料之電荷量,而導致讀取時經常發生錯誤。而這些錯誤通常會讓快閃記憶體控制器啟動改變讀取電壓以及硬解碼、軟解碼的糾正機制,才能從這些過期的區塊上讀取到正確的資料,這些糾正機制通常非常耗時、耗電,也可能根本無法把錯誤糾正,導致記憶體控制器讀不到正確資料。因此,需要對區塊的寫入時間進行記錄,避免上述問題。需注意的是,以上實施例所述的過期區塊回收操作並不同於垃圾收集操作,且本實施例之過期區塊表也不同於垃圾收集操作所需的垃圾收集序列。詳細來說,在記憶裝置100的操作中,快閃記憶體控制器110會持續判斷目前快閃記憶體模組120中每一個區塊之有效資料頁的數量,以決定出哪一些區塊需要進行垃圾收集操作,舉例來說,當一區塊的有效資料頁的數量低於一臨界值時,該區塊會被排入至垃圾收集序列中,以在後續進行垃圾收集操作。然而,本實施例所述之過期區塊表所記錄的則是寫入時間過長的區塊,亦即這些區塊有或許有部分的區塊並未達到垃圾收集操作的標準,例如這些區塊的有效資料頁的數量遠高於該臨界值。此外,由於過期區塊表所記錄之區塊的資料即將快速劣化,因此過期區塊表的優先順序高於垃圾收集序列,亦即若是過期區塊表中有紀錄任何的區塊編號,則在垃圾收集操作允許中斷的情形下,快閃記憶體控制器110會優先停止垃圾收集操作而開始進行過期區塊回收操作。換句話說,快閃記憶體控制器110會立刻對過期區塊表所記錄之區塊進行過期區塊回收操作。
在步驟714,由於步驟712在進行過期區塊回收操作時有進行區塊的寫入以及抹除,因此,微處理器112根據上述區塊的寫入以及抹除來更新寫入時間記錄表500。舉例來說,若是區塊B1被標記為無效或是抹除,則微處理器112可以刪除寫入時間記錄表500中有關於區塊B1的時間資訊。
以上步驟708、710中根據第二門檻值來決定出加入至過期區塊表之區塊的原因在於中間資料頁的時間資訊較能反映出區塊整體的寫入時間,且透過將第二門檻值設定為晚於第一門檻值,並將中間資料頁的時間資訊介於第二門檻值與第一門檻值間的區塊加入到過期區塊表,可以讓過期區塊表可以一次性地加入足夠數量的區塊以供進行後續的過期區塊回收操作,而不需要很頻繁地重複進行第7圖的流程或是其他機制來挑選出需要進行過期區塊回收操作的區塊。此外,由於在立體快閃記憶體中,儲存在區塊中的資料會隨著時間變長而快速劣化,但若是區塊有被進行讀取或寫入操作(寫資料至剩餘資料頁)的情形下可以讓區塊的整體資料品質會稍有改善,因此上述使用第二門檻值與第一門檻值來做為判斷機制可以讓品質較差的區塊優先加入到過期區塊表。此外,由於區塊之資料寫入的時間可能會相差很大,亦即區塊的第一個資料頁的時間資訊與中間資料頁的時間資訊可能會有很大的差距,因此,透過另外使用較為可以反映出區塊的整體寫入時間之中間資料頁的時間資訊,可以讓區塊過期的判斷更為準確。
參考以上第3~7圖的實施例所述,透過建立出寫入時間記錄表500來記錄每一個區塊之第一個資料頁與中間資料頁的時間資訊,再加上使用第一門檻值與第二門檻值來挑選出需要進行過期區塊回收操作的區塊,整體來說可以在挑選出需要進行過期區塊回收操作的區塊更為迅速有效率。
過期區塊回收操作需要配合邏輯資料頁與實體資料頁鏈結表,以找出區塊所有的有效資料頁,並將有效資料頁從過期區塊中搬移到新的區塊中,由於搬移的行為導致有效資料頁裡的資料重新寫入至新的區塊,也因此重置了這些資料的有效期限,並且將該過期區塊抹除備用。在搬移有效資料後,微處理器112需更新邏輯資料頁與實體資料頁鏈結表以及建立新的區塊的有效資料頁的資料數目表。為求謹慎,亦可將過期區塊中的無效資料搬移到另一個新區塊中,並相對應的建立無效資料之邏輯資料頁與實體資料頁鏈結表,以避免主機誤刪除資料時仍可拯救資料。請注意到,有些過期區塊當中,可能所有的資料頁都是有效的資料頁,那就得將所有的資料都搬移到新的資料當中,重置所有的資料的有效期限。
此外,在某些應用中,快閃記憶體模組120會具有數千個區塊、再加上頻繁的寫入,因此,寫入時間記錄表500會需要記錄許多區塊編號與相關的時間資訊,因而嚴重消耗DRAM 140的儲存空間。此外,若是記憶裝置100不具有DRAM 140而使得寫入時間記錄表500需要儲存在緩衝記憶體116中,則此時由於緩衝記憶體116通常使用較貴的SRAM來實作且容量不會太大,因此更會造成緩衝記憶體116在記憶體配置上的麻煩。如上所述,在以下的實施例中另外出了一種寫入時間記錄表500的壓縮方法,其可以將寫入時間記錄表500的大部分內容寫入至快閃記憶體模組120的區塊中,以降低儲存在DRAM 140或緩衝記憶體116之寫入時間記錄表500的大小。
舉例來說,參考第8圖所示之壓縮後寫入時間記錄表800的示意圖,其中壓縮後寫入時間記錄表800可以透過將寫入時間記錄表500進行簡化壓縮而來。在第8圖中,壓縮後寫入時間記錄表800包含了多個時間範圍及對應的至少一資料頁位址,其中多個時間範圍可以是任意適合的時間範圍,而在本實施例中時間範圍是以一天為單位。在第8圖的實施例中,微處理器112會依序或週期性地將寫入時間記錄表500中的區塊編號及對應的時間資訊寫入到快閃記憶體模組120的區塊中,以第8圖之時間範圍是今日的狀況來說明,當快閃記憶體控制器110將資料寫入至快閃記憶體模組120的多個區塊,並同步建立寫入時間記錄表500後,微處理器112會將寫入時間記錄表500中所記錄的區塊編號及對應的時間資訊寫入到區塊B200的資料頁P25中,而壓縮後寫入時間記錄表800便記錄區塊B200之資料頁P25的資料頁位址“PPA98765”;此外,由於區塊B200的資料頁P25以記錄了寫入時間記錄表500的內容,故微處理器112便可以將寫入時間記錄表500中的相關資料刪除,以釋放出記憶體空間。同理,第8圖所示之時間範圍為“昨日”所記錄之資料頁位址“PPA33333”對應到區塊B201之資料頁P46,且區塊B201之資料頁P46記錄了昨日寫入的區塊及對應的時間資訊;同理,第8圖所示之時間範圍為“前天”所記錄之資料頁位址“PPA33445”對應到區塊B202之資料頁P37,且區塊B202之資料頁P37記錄了前天寫入的區塊及對應的時間資訊。因此,由於第5圖所示之寫入時間記錄表500中的內容可以儲存在快閃記憶體模組120中,且壓縮後寫入時間記錄表800僅需要記錄快閃記憶體模組120中的一些資料頁位址,因此可以有效地降低寫入時間記錄表500對於記憶體空間的負擔。
此外,由於快閃記憶體模組120中的區塊有可能被抹除而變為空白區塊,因此,當微處理器112得知有區塊被抹除時,便會更新快閃記憶體模組120與壓縮後寫入時間記錄表800的內容。舉例來說,假設昨日所寫入的區塊B1在今日被抹除了,則微處理器112讀取區塊B201之資料頁P46的內容,並將區塊B1及相關之時間資訊刪除後,重新寫入到另一個資料頁,例如區塊B201之資料頁P47;此外,將壓縮後寫入時間記錄表800中關於區塊B201之資料頁P46的資料頁位址替換為區塊B201之資料頁P47的資料頁位址。
此外,為了方便區塊及資料頁的管理,壓縮後寫入時間記錄表800中的每一個時間範圍對應到一個專屬的區塊,例如前天進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B202、昨日進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B201、今日進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B200、…以此類推。此外,上述專屬區塊不會被拿來儲存其他資料。
簡要歸納本發明,在本發明之應用於一快閃記憶體控制器的控制方法中,係透過建立出寫入時間記錄表來記錄每一個區塊之第一個資料頁與中間資料頁的時間資訊,再加上使用第一門檻值與第二門檻值來挑選出需要進行過期區塊回收操作的區塊,以效率地完成過期區塊回收操作。此外,透過將寫入時間記錄表進行壓縮可以降低寫入時間記錄表對於記憶體空間的負擔。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
140:動態隨機存取記憶體
300~308:步驟
500:寫入時間記錄表
600~608:步驟
700~714:步驟
800:壓縮後寫入時間記錄表
B1, B2, B200, B201, B202:區塊
BL1, BL2, BL3:位元線
P1~P256:資料頁
T1_1, T1_M, T2_1, T2_M:時間資訊
WL0~WL2, WL4~WL6:字元線
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。
第2圖為依據本發明一實施例之快閃記憶體模組中一區塊的示意圖。
第3圖所示為根據本發明一實施例之建立一寫入時間記錄表的流程圖。
第4圖所示之在區塊中寫入時間資訊的示意圖。
第5圖為根據本發明一實施例之寫入時間記錄表的示意圖。
第6圖所示之根據本發明一實施例之記憶裝置上電後在DRAM中建立出寫入時間記錄表的流程圖。
第7圖為根據本發明一實施例之進行過期區塊回收操作的流程圖。
第8圖所示之壓縮後寫入時間記錄表的示意圖。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
140:動態隨機存取記憶體
Claims (20)
- 一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,該快閃記憶體模組係為一立體快閃記憶體(3D NAND-type flash)模組,該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含了多個資料頁;每一個區塊包含了分別位於多個不同平面之多條字元線以及位元線來控制的多個浮閘電晶體,且每一條字元線上的浮閘電晶體構成了該多個資料頁中的至少一資料頁;以及該控制方法包含有: 當資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間; 當資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間; 當資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間; 建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間; 參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊; 參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及 根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第1項所述之控制方法,其中該第二門檻值所表示的時間晚於該第一門檻值所表示的時間。
- 如申請專利範圍第1或2項所述之控制方法,其中該第一門檻值係根據該控制方法在執行當下的時間所決定。
- 如申請專利範圍第1項所述之控制方法,其中該至少一中間資料頁包含了多個中間資料頁,且該寫入時間記錄表所記錄之該第二時間係根據該多個中間資料頁的多個寫入時間所決定。
- 如申請專利範圍第1項所述之控制方法,其中參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於該第二門檻值,若是該快閃記憶體模組中有該至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊的步驟包含有: 判斷該過期區塊表所記錄之區塊數量是否已達一上限值; 若是該過期區塊表所記錄之區塊數量已達該上限值,不在該過期區塊表中記錄該至少一第二區塊;以及 若是該過期區塊表所記錄之區塊數量未達該上限值,在該過期區塊表中依序記錄該至少一第二區塊,直到該過期區塊表所記錄之區塊數量達到該上限值為止;以及 根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作的步驟包含有: 在該快閃記憶體控制器一背景操作中立即根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作。
- 如申請專利範圍第1項所述之控制方法,另包含有: 當該快閃記憶體控制器準備關機時,將該寫入時間記錄表寫入至該快閃記憶體模組的一特定區塊中; 當該快閃記憶體控制器上電時,判斷該快閃記憶體控制器在上電之前是否遭遇到不正常斷電; 若是判斷該快閃記憶體控制器在上電之前未遭遇到不正常斷電,則自該特定區塊中讀取該寫入時間記錄表,並將該寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中;以及 若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的最後一個資料頁,以重新建立出該寫入時間記錄表,並將該寫入時間記錄表暫存至該緩衝記憶體或是該動態隨機存取記憶體中。
- 如申請專利範圍第6項所述之控制方法,其中若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的該最後資料頁,以重新建立出該寫入時間記錄表的步驟包含有: 若是該快閃記憶體模組中有資料寫入的每一個區塊中,有任一區塊的該最後資料頁未包含了該第一時間與該第二時間,則讀取該區塊的該第一個資料頁與該中間資料頁,來得到對應的該第一時間與該第二時間。
- 如申請專利範圍第6項所述之控制方法,其中重新建立出該寫入時間記錄表的操作係在該快閃記憶體控制器在上電後的一初始化操作的時間內完成。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組係為一立體快閃記憶體(3D NAND-type flash)模組,該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含了多個資料頁;每一個區塊包含了分別位於多個不同平面之多條字元線以及位元線來控制的多個浮閘電晶體,且每一條字元線上的浮閘電晶體構成了該多個資料頁中的至少一資料頁;且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一緩衝記憶體; 其中當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間;當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間;當該微處理器將資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間;該微處理器另建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間; 其中該微處理器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊;該微處理器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該第二門檻值所表示的時間晚於該第一門檻值所表示的時間。
- 如申請專利範圍第9或10項所述之快閃記憶體控制器,其中該第一門檻值係根據該控制方法在執行當下的時間所決定。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該至少一中間資料頁包含了多個中間資料頁,且該寫入時間記錄表所記錄之該第二時間係根據該多個中間資料頁的多個寫入時間所決定。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中該微處理器判斷該過期區塊表所記錄之區塊數量是否已達一上限值;若是該過期區塊表所記錄之區塊數量已達該上限值,不在該過期區塊表中記錄該至少一第二區塊;以及若是該過期區塊表所記錄之區塊數量未達該上限值,該微處理器在該過期區塊表中依序記錄該至少一第二區塊,直到該過期區塊表所記錄之區塊數量達到該上限值為止;以及在該快閃記憶體控制器一背景操作中,該微處理器立即根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中當該快閃記憶體控制器準備關機時,該微處理器將該寫入時間記錄表寫入至該快閃記憶體模組的一特定區塊中;當該快閃記憶體控制器上電時,該微處理器判斷該快閃記憶體控制器在上電之前是否遭遇到不正常斷電;若是判斷該快閃記憶體控制器在上電之前未遭遇到不正常斷電,則該微處理器自該特定區塊中讀取該寫入時間記錄表,並將該寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中;以及若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則該微處理器依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的最後一個資料頁,以重新建立出該寫入時間記錄表,並將該寫入時間記錄表暫存至該緩衝記憶體或是該動態隨機存取記憶體中。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中若是該快閃記憶體模組中有資料寫入的每一個區塊中,有任一區塊的該最後資料頁未包含了該第一時間與該第二時間,則該微處理器讀取該區塊的該第一個資料頁與該中間資料頁,來得到對應的該第一時間與該第二時間。
- 如申請專利範圍第14項所述之快閃記憶體控制器,其中重新建立出該寫入時間記錄表的操作係在該快閃記憶體控制器在上電後的一初始化操作的時間內完成。
- 一種記憶裝置,包含有: 一快閃記憶體模組,其中該快閃記憶體模組係為一立體快閃記憶體(3D NAND-type flash)模組,該快閃記憶體模組包含了多個快閃記憶體晶片,每一個快閃記憶體晶片包含了多個區塊,每一個區塊包含了多個資料頁;每一個區塊包含了分別位於多個不同平面之多條字元線以及位元線來控制的多個浮閘電晶體,且每一條字元線上的浮閘電晶體構成了該多個資料頁中的至少一資料頁;以及 一快閃記憶體控制器,用以存取該快閃記憶體模組; 其中當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的一第一個資料頁時,在該第一個資料頁記錄一第一時間;當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的至少一中間資料頁時,在該至少一中間資料頁記錄一第二時間;當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊的一最後資料頁時,在該最後資料頁記錄該第一時間與該第二時間;該快閃記憶體控制器另建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間、或是記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該第一時間與該第二時間; 其中該快閃記憶體控制器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第一時間早於一第一門檻值,若是該快閃記憶體模組中有至少一第一區塊的該第一時間早於該第一門檻值,則在一過期區塊表中記錄該至少一第一區塊;該快閃記憶體控制器參考該寫入時間記錄表以判斷該快閃記憶體模組中是否有區塊的該第二時間早於一第二門檻值,若是該快閃記憶體模組中有至少一第二區塊的該第二時間早於該第二門檻值,則在該過期區塊表中記錄該至少一第二區塊;以及根據該過期區塊表所記錄的該至少一第一區塊與該至少一第二區塊進行過期區塊回收操作,以依序將該至少一第一區塊與該至少一第二區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第17項所述之記憶裝置,其中該第二門檻值所表示的時間晚於該第一門檻值所表示的時間。
- 如申請專利範圍第17或18項所述之記憶裝置,其中該第一門檻值係根據該控制方法在執行當下的時間所決定。
- 如申請專利範圍第17項所述之記憶裝置,其中該至少一中間資料頁包含了多個中間資料頁,且該寫入時間記錄表所記錄之該第二時間係根據該多個中間資料頁的多個寫入時間所決定。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109122716A TWI722938B (zh) | 2020-07-06 | 2020-07-06 | 記憶裝置、快閃記憶體控制器及其存取方法 |
CN202110178539.6A CN113903383A (zh) | 2020-07-06 | 2021-02-09 | 存储装置、快闪存储器控制器及其存取方法 |
US17/183,355 US11487475B2 (en) | 2020-07-06 | 2021-02-24 | Control method for referring to expired block table to perform expired block recycling operation and associated flash memory controller and memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109122716A TWI722938B (zh) | 2020-07-06 | 2020-07-06 | 記憶裝置、快閃記憶體控制器及其存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI722938B true TWI722938B (zh) | 2021-03-21 |
TW202203227A TW202203227A (zh) | 2022-01-16 |
Family
ID=76035774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109122716A TWI722938B (zh) | 2020-07-06 | 2020-07-06 | 記憶裝置、快閃記憶體控制器及其存取方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11487475B2 (zh) |
CN (1) | CN113903383A (zh) |
TW (1) | TWI722938B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI696074B (zh) | 2019-01-24 | 2020-06-11 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
US11947452B2 (en) * | 2022-06-01 | 2024-04-02 | Micron Technology, Inc. | Controlling variation of valid data counts in garbage collection source blocks |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069474B2 (en) * | 2013-08-20 | 2015-06-30 | Seagate Technology Llc | Retention based defecting in a hybrid memory system |
US20170123700A1 (en) * | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Io redirection methods with cost estimation |
US10102118B2 (en) * | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
TW201947402A (zh) * | 2018-05-14 | 2019-12-16 | 深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
US20200117361A1 (en) * | 2016-08-12 | 2020-04-16 | Pure Storage, Inc. | Data stability in data storage system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2633384A1 (en) * | 2011-02-02 | 2013-09-04 | Hitachi, Ltd. | Storage system and data control method therefor |
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 |
US9977597B2 (en) * | 2016-05-10 | 2018-05-22 | Seagate Technology Llc | Enhanced read recovery based on write time information |
CN107783725A (zh) * | 2016-08-30 | 2018-03-09 | 南京中兴新软件有限责任公司 | 数据存储的方法、装置以及非易失性存储器 |
-
2020
- 2020-07-06 TW TW109122716A patent/TWI722938B/zh active
-
2021
- 2021-02-09 CN CN202110178539.6A patent/CN113903383A/zh active Pending
- 2021-02-24 US US17/183,355 patent/US11487475B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069474B2 (en) * | 2013-08-20 | 2015-06-30 | Seagate Technology Llc | Retention based defecting in a hybrid memory system |
US10102118B2 (en) * | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
US20170123700A1 (en) * | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Io redirection methods with cost estimation |
US20200117361A1 (en) * | 2016-08-12 | 2020-04-16 | Pure Storage, Inc. | Data stability in data storage system |
TW201947402A (zh) * | 2018-05-14 | 2019-12-16 | 深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN113903383A (zh) | 2022-01-07 |
US20220004339A1 (en) | 2022-01-06 |
TW202203227A (zh) | 2022-01-16 |
US11487475B2 (en) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI696074B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TW202011392A (zh) | 資料儲存裝置與資料處理方法 | |
TWI733568B (zh) | 記憶裝置、快閃記憶體控制器及其存取方法 | |
TWI664634B (zh) | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 | |
TWI626541B (zh) | 將資料寫入至快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI722938B (zh) | 記憶裝置、快閃記憶體控制器及其存取方法 | |
CN110069362B (zh) | 数据储存装置与数据处理方法 | |
US11194502B1 (en) | Electronic device, flash memory controller and method for performing garbage collection operation on flash memory module | |
CN111399751A (zh) | 闪存控制器、管理闪存模块的方法及相关的电子装置 | |
TWI720852B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TW202028984A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
TWI760094B (zh) | 記憶裝置、快閃記憶體控制器及其存取方法 | |
TWI670598B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
US11947818B2 (en) | Method for accessing flash memory module and associated flash memory controller and electronic device | |
US11809748B2 (en) | Control method of flash memory controller and associated flash memory controller and electronic device | |
TWI781886B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI768336B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US11249676B2 (en) | Electronic device, flash memory controller and associated control method | |
US11687290B1 (en) | Method for improve read disturbance phenomenon of flash memory module and associated flash memory controller and electronic device | |
TW202234253A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TW201911328A (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 |