TWI733568B - 記憶裝置、快閃記憶體控制器及其存取方法 - Google Patents
記憶裝置、快閃記憶體控制器及其存取方法 Download PDFInfo
- Publication number
- TWI733568B TWI733568B TW109129292A TW109129292A TWI733568B TW I733568 B TWI733568 B TW I733568B TW 109129292 A TW109129292 A TW 109129292A TW 109129292 A TW109129292 A TW 109129292A TW I733568 B TWI733568 B TW I733568B
- Authority
- TW
- Taiwan
- Prior art keywords
- flash memory
- block
- memory controller
- time
- record table
- Prior art date
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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/0647—Migration mechanisms
-
- 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/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (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) 140。請注意到,DRAM 140亦可包含於快閃記憶體控制器110之內,例如與快閃記憶體控制器110存在於相同之封裝之中。
在一實施例中,記憶裝置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也可以資料寫入至中間資料頁時將對應的時間資訊寫入至備用區域中。具體來說,當快閃記憶體控制器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連同來自主裝置130的資料一併寫入到資料頁P256中,其中時間資訊T1_M可以寫入至位於資料頁P256後端的備用區域中。在一實施例中,如第4圖所示,快閃記憶體控制器110會將第一個資料頁P1的時間資訊T1_1以及中間資料頁P128的時間資訊T1_M連同來自主裝置130的資料一併寫入到資料頁P256中。
在步驟306中,在區塊B1進行資料寫入的過程中,快閃記憶體控制器110會同步在DRAM 140中建立如第5圖所示的寫入時間記錄表500,亦即,寫入時間記錄表500至少會記錄區塊編號B1及對應的時間資訊T1_1,而在一實施例中,寫入時間記錄表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的時間資訊,而在一實施例中寫入時間記錄表500也會記錄中間資料頁(例如資料頁P128)的時間資訊。
此外,寫入時間記錄表500會常駐在DRAM 140,以方便後續進行過期區塊判斷或垃圾收集(garbage collection)操作時使用,而當記憶裝置100需要關閉電源時,微處理器112會先將寫入時間記錄表500寫入至快閃記憶體模組120中,並等待記憶裝置100上電後重新讀取快閃記憶體模組120中的寫入時間記錄表500,並載入DRAM 140以供後續使用。
由於在快閃記憶體模組120採用具有多層堆疊架構的快閃記憶體晶片時會具有很差的資料保存時間,亦即資料寫入後數週後(例如2~3週後)便品質快速下滑而造成後續解碼上的困難或甚至無法讀取,因此,以上實施例的寫入時間記錄表500可以用來快速地供微處理器112得知區塊的品質,以對這些寫入時間過長的區塊進行過期區塊回收操作,以避免區塊內的資料因為長時間儲存而導致資料流失。
此外,在某些應用中,快閃記憶體模組120會具有數千個區塊、再加上頻繁的寫入,因此,寫入時間記錄表500會需要記錄許多區塊編號與相關的時間資訊,因而嚴重消耗DRAM 140的儲存空間。此外,若是記憶裝置100不具有DRAM 140而使得寫入時間記錄表500需要儲存在緩衝記憶體116中,則此時由於緩衝記憶體116通常使用較貴的SRAM來實作且容量通常不會太大,因此更會造成緩衝記憶體116在記憶體配置上的麻煩。如上所述,在以下的實施例中另外提出了一種寫入時間記錄表500的壓縮方法,其可以將寫入時間記錄表500的大部分內容寫入至快閃記憶體模組120的區塊中,以降低儲存在DRAM 140或緩衝記憶體116之寫入時間記錄表500的大小。
舉例來說,參考第6A圖所示之壓縮後寫入時間記錄表600的示意圖,其中壓縮後寫入時間記錄表600可以透過將寫入時間記錄表600進行簡化壓縮而來。在第6A圖中,壓縮後寫入時間記錄表600包含了多個時間範圍及對應的至少一資料頁位址,其中多個時間範圍可以是任意適合的時間範圍,較佳的範圍可以是半日至兩日之間,而在本實施例中時間範圍是以一天為單位。在第6A圖的實施例中,微處理器112會依序或週期性地將寫入時間記錄表500中的區塊編號及對應的時間資訊寫入到快閃記憶體模組120的區塊中,以第6A圖之時間範圍是今日的狀況來說明,當快閃記憶體控制器110將資料寫入至快閃記憶體模組120的多個區塊,並同步建立寫入時間記錄表500。若時間記錄表500的資料量達到快閃記憶體一個資料頁的資料量,微處理器112可將寫入時間記錄表500中所記錄的區塊編號及對應的時間資訊寫入到區塊B200的資料頁P25中,也可以僅記錄區塊編號而不記錄對應的時間資訊,而壓縮後寫入時間記錄表600便記錄區塊B200之資料頁P25的實體資料頁位址“PPA200025”,請注意到,儲存在DRAM 140的壓縮後寫入時間記錄表600可以視為一個索引,這個索引可以讓微處理器112很便利的查到實際儲存時間記錄表500的實體區塊頁位址,之後微處理器112就可以再根據所查詢到的實體資料頁位址“PPA200025”讀取到寫入時間記錄表500的完整內容;此外,由於區塊B200的資料頁P25以記錄了寫入時間記錄表500的內容,故微處理器112便可以將寫入時間記錄表500中的相關資料刪除,以釋放出記憶體空間。同理,第6A圖所示之時間範圍為“昨日”所記錄之資料頁位址“PPA201046”對應到區塊B201之資料頁P46,且區塊B201之資料頁P46記錄了昨日寫入的區塊及對應的時間資訊;同理,第6A圖所示之時間範圍為“前天”所記錄之資料頁位址“PPA202037”對應到區塊B202之資料頁P37,且區塊B202之資料頁P37記錄了前天寫入的區塊及對應的時間資訊。因此,由於第5圖所示之寫入時間記錄表500中的內容可以儲存在快閃記憶體模組120中,且壓縮後寫入時間記錄表600僅需要記錄快閃記憶體模組120中的一些資料頁位址,因此可以有效地降低寫入時間記錄表500對於記憶體空間的負擔。
在實作上,壓縮後寫入時間記錄表600中的“今日”、“昨日”、“前天”是一個絕對的時間範圍,例如“今日”為2020年5月21日00:00~24:00、“昨日”為2020年5月20日00:00~24:00、而“前天”為2020年5月19日00:00~24:00。
此外,為了方便區塊及資料頁的管理,壓縮後寫入時間記錄表600中的每一個時間範圍對應到一個專屬的區塊,例如前天(2天前)進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B202、昨日(1天前)進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B201、今日進行資料寫入之所有區塊的區塊編號與時間資訊都被寫入到區塊B200、…以此類推。此外,上述專屬區塊不會被拿來儲存其他資料。若利用專屬區塊進行記錄,則可以進一步精簡所需要記錄的內容,請參考第6B圖,第6B圖中包含了可以做為壓縮後寫入時間記錄表之一範例之目前寫入區塊表630與過期回收區塊索引表632。過期回收區塊索引表632與目前寫入區塊表630可存在於DRAM 140中,目前寫入區塊表630包含了時間範圍與目前寫入區塊的欄位,過期回收區塊索引表632包含了時間範圍欄位、專屬實體區塊編號欄位與實體資料頁編號欄位。目前寫入區塊表630的時間範圍欄位可以固定為今天,該欄位亦可省略,僅依據排序判定時間費為,例如第一個是今天,第二個是1天前,第三個是2天前….等,進一步節省所需記憶體空間。目前寫入區塊表630係用來儲存快閃記憶體控制器110在一特定時間範圍(例如今天)所寫入的實體區塊編號,例如第6B圖所示,今天寫入區塊B123、區塊B234、區塊B345、區塊B666等。當目前寫入區塊表630所記錄的資料量已經湊滿一個快閃記憶體的寫入單位(例如一資料頁)時,則快閃記憶體控制器110會將該些資料寫入快閃記憶體模組120中,並在寫入成功之後,清除目前寫入區塊欄位中的內容。快閃記憶體控制器110可將區塊B123、區塊B234、區塊B345、區塊B666等區塊編號寫入今天所專屬的實體區塊B200的第四頁P004中,並更新過期回收區塊索引表632中今天所對應的實體資料頁編號欄位,將其更新為P001、P002、P003、P004。專屬實體區塊編號欄位代表某一特定時間所寫入的區塊,其區塊編號應該儲存之專屬區塊。例如今天所寫入的區塊,其區塊編號應該儲存在區塊B200,1天前所寫入的區塊,其區塊編號應該儲存在區塊B201。2天前所寫入的區塊,其區塊編號應該儲存在區塊B202。而實體資料頁編號欄位代表某一特定時間所寫入的區塊,其區塊編號係儲存於專屬區塊之特定資料頁。例如今天所寫入的區塊的區塊編號,係儲存於區塊B200的實體資料頁P001、P002、P003、P004中。若今天寫入更多區塊,而目前寫入區塊表630所記錄的資料量又湊滿一個快閃記憶體的一個資料頁時,則該些區塊編號應接續寫入區塊B200的實體資料頁P005中,而快閃記憶體控制器110更新過期回收區塊索引表632中今天所對應的實體資料頁編號欄位,將其更新為P001、P002、P003、P004、P005。
在一實施例中,快閃記憶體控制器110可能會將曾經寫入的區塊抹除,例如抹除已經寫入的區塊B123、區塊B234、區塊B345。這些已經抹除的區塊,就不需要再進行過期區塊回收,因此,需要更新過期回收區塊索引表632以及專屬區塊B200的內容。快閃記憶體控制器110在抹除區塊B123、區塊B234、區塊B345之前,可以根據區塊B123、區塊B234、區塊B345的資料頁P1或是中間頁中所記錄的寫入時間,發現該些區塊係於今天所寫入,而再查找過期回收區塊索引表632,發現今天所寫入的區塊係記錄於專屬實體區塊B200的實體資料頁P001、P002、P003、P004、P005之中。快閃記憶體控制器110讀取專屬實體區塊B200的實體資料頁P001、P002、P003、P004、P005,取得今天寫入的實體區塊編號,將所讀取的實體區塊編號刪去即將要被抹除的區塊B123、區塊B234、區塊B345,再將剩餘的實體區塊編號寫入專屬實體區塊B200的實體資料頁P006、P007、P008、P009、P010中。快閃記憶體控制器110更新過期回收區塊索引表632的內容,更新今天所寫入的區塊編號,將今天所對應的實體資料頁編號欄位的內容更新為P006、P007、P008、P009、P010。請注意到,倘若主機頻繁的更新資料而導致專屬區塊B200寫滿不敷使用,則快閃記憶體控制器110可以提取其他區塊(例如區塊B300)作為今天的專屬區塊,將原本區塊B200中有用的資料寫入新的專屬區塊B300中,並更新過期回收區塊索引表632的內容,將今天所對應的專屬區塊更新為區塊B300。相似地,其他時間範圍的更新亦與今天的專屬區塊更新方式類似,在此不再贅述。
由於過期回收區塊索引表632係記錄單一個專屬實體區塊編號以及該專屬實體區塊的資料頁編號,所以其所需的記憶體空間會比壓縮後寫入時間記錄表600中需要記錄完整資料頁位址更小。且因為其係利用專屬區塊記錄某一特定時間範圍寫入的區塊,在管理上更為方便,不論在寫入上、更新上、查詢上,都會更為簡便。
在一實施例中,可進一步的精簡過期回收區塊索引表652所需的記憶體空間,請參照第6C圖。第6C圖中包含了與過期回收區塊索引表652。過期回收區塊索引表652可存在於DRAM 140中,過期回收區塊索引表652包含了時間範圍欄位、專屬實體區塊編號欄位與實體資料頁編號欄位。過期回收區塊索引表652的紀錄與操作係與過期回收區塊索引表632相似,主要的不同之處係在於過期回收區塊索引表652的實體資料頁編號欄位僅記錄該專屬實體區塊中具有有效的資訊的資料頁範圍。例如今天所寫入的區塊係儲存在專屬實體區塊B200的資料頁P001至P004中。當快閃記憶體控制器110要查詢今天所寫入的所有區塊時,快閃記憶體控制器110就可利用過期回收區塊索引表652找到該些區塊係儲存在區塊B200的資料頁P001至P004中,快閃記憶體控制器110就可以從區塊B200的資料頁P001至P004中讀出今天所寫入的所有區塊編號。由於僅記錄區塊中具有有效的資訊的資料頁範圍,過期回收區塊索引表652就可以更進一步地節省儲存空間。請注意到,倘若僅需一頁的空間即可記錄所有該時間範圍內所寫入的區塊,則可參考過期回收區塊索引表652中13天前的紀錄方式,記錄資料頁P100、P100,代表該區塊中具有有效的資訊的資料頁範圍係資料頁P100至資料頁P100。
採用專屬區塊進行時間記錄的一個好處是讓過期區塊回收變得更為簡便,例如過期區塊回收的演算法可以設計成將所有前天寫入的區塊全部進行回收,此時只需要根據過期回收區塊索引表652找出將該專屬區塊中(例如前天所對應的專屬區塊)的實體資料頁編號,讀取該些資料頁,該些資料頁所記錄的區塊即為尚未回收的區塊編號,然後對該些區塊進行過期區塊回收。
此外,由於快閃記憶體模組120中的區塊有可能被抹除而變為空白區塊,因此,當微處理器112得知有區塊被抹除時,便會更新快閃記憶體模組120與壓縮後寫入時間記錄表600的內容。具體來說,參考第7圖所示之更新壓縮後寫入時間記錄表600與相關內容的流程圖。在步驟700,流程開始。在步驟702,微處理器112判斷快閃記憶體模組120中是否有區塊準備被抹除,若有,流程進入步驟704;若否,流程停在步驟702。在步驟704,微處理器112判斷準備被抹除的區塊是對應到第6A圖所示的哪一個時間範圍,舉例來說,微處理器112可以先讀取準備被抹除之區塊的第一個資料頁所記錄的時間資訊,以判斷該區塊是對應到哪一個時間範圍。在以下的實施例中,為了方便說明,同時參考第8圖,假設微處理器112在時間範圍為“昨日”時將資料寫入至多個區塊B60~B90,而區塊(專屬於“昨日”的區塊)B201的資料頁P46記錄了區塊B60~B90中每一個區塊的時間資訊,例如區塊B60~B90之每一個區塊的第一個資料頁的時間資訊。在本實施例中,係假設準備被抹除之區塊為區塊B71~B74。
在步驟706,根據步驟704所判斷出的時間範圍,微處理器112根據壓縮後寫入時間記錄表600所記錄的資料頁位址來讀取該時間範圍所對應之專屬區塊的最後寫入之一或多個資料頁。在本實例中,微處理器112讀取區塊B201之最後寫入的資料頁P46,其中資料頁P46記錄了區塊B60~B90中每一個區塊的時間資訊,且微處理器112將區塊B60~B90的時間資訊暫存至緩衝記憶體116或是DRAM 140中。
在步驟708,微處理器112抹除區塊B71~B74的內容或是將區塊B71~B74標記為無效區塊,接著微處理器112將區塊B71~B74的時間資訊自緩衝記憶體116或是DRAM 140中刪除。
在步驟710,微處理器112將更新後的內容,亦即區塊B60~B70、B75~90的時間資訊寫入至區塊B201的資料頁P47,並記錄區塊B201之資料頁P46的內容為無效資料。
在區塊B201之資料頁P47完成寫入之後,在步驟712,微處理器112便更新壓縮後寫入時間記錄表600的內容,亦即將第6A圖所示之對應到“昨日”之資料頁位址“PPA201046”修改為區塊B201的資料頁P47的位址。之後,流程回到步驟702。
如上所述,透過第7圖所示的流程,可以讓每一個時間範圍所對應之專屬區塊最後寫入之一或多個資料頁的內容是最新的資料,而先前資料頁所記錄的內容則變為無效資料,以方便後續的管理。
此外,記憶裝置100可能會因為各種不同的原因而造成突發性斷電(suddenly power off),而造成儲存在DRAM 140中的壓縮後寫入時間記錄表600遺失。因此,在記憶裝置100重新上電之後,則需要重新在DRAM 140中建立出壓縮後寫入時間記錄表600。具體來說,參考第9圖所示之根據本發明一實施例之記憶裝置上電後在DRAM 140中建立出壓縮後寫入時間記錄表600的流程圖。在步驟900,流程開始,且記憶裝置100上電並開始初始化操作。在步驟902,微處理器112判斷記憶裝置100在上電之前的斷電是否是不正常斷電(突發性斷電),若否,流程進入步驟904以自快閃記憶體模組120讀取壓縮後寫入時間記錄表600並暫存在DRAM 140中;若是,流程進入步驟906。舉例來說,當記憶裝置100在正常關機/斷電的情形下,快閃記憶體控制器110會將儲存在緩衝記憶體116及DRAM 140中的多個暫存表格(包含壓縮後寫入時間記錄表600)及資料儲存到快閃記憶體模組120中,且其中包含了一個用來標示記憶裝置100是否正常關機的標籤(flag),因此,快閃記憶體控制器110在上電後可以透過讀取儲存在快閃記憶體模組120中的上述標籤來判斷記憶裝置100之前是否有遭遇到不正常斷電的情形,例如,當上述標籤並未被正確設定時便判斷先前有遭遇到不正常斷電。在步驟906,微處理器112判斷記憶裝置100在上電之前的斷電前最後一個寫入的區塊是否是用來儲存區塊之時間資訊的專屬區塊,例如第6A圖所示的區塊B200、B201、B202,若否,流程進入步驟908;若是,流程進入步驟910。需注意的是,記憶裝置100在上電之前的斷電前最後一個寫入的區塊可以透過快閃記憶體控制器110在初始化過程中對區塊進行掃描而得到。
在步驟908,假設用來儲存區塊之時間資訊的專屬區塊,例如第6A圖所示的區塊B200、B201、B202,係位於快閃記憶體模組120中的一特定區域,因此,微處理器112可以直接對該特定區域內的所有區塊進行讀取,例如讀取該特定區域內所有區塊之最後一或多個資料頁中所記錄之多個區塊時間資訊,以得到類似第5圖所示之寫入時間記錄表500,而不需要去讀取整個快閃記憶體模組120內的所有區塊。之後,微處理器112再將寫入時間記錄表500進行壓縮以得到類似第6A圖、第6B圖、第6C圖所示之壓縮後寫入時間記錄表600或過期回收區塊索引表632、652。
在步驟910,由於在不正常斷電下有可能會對快閃記憶體模組120正常進行資料寫入的區塊造成資料損壞,因此,若是在上電之前的斷電前最後一個寫入的區塊是用來儲存區塊之時間資訊的專屬區塊,則微處理器112依序讀取快閃記憶體模組120中每一個有資料寫入的區塊的第一個資料頁或是最後一個資料頁(例如,第4圖所示的資料頁P256),以取得每一個區塊之第一個資料頁的時間資訊及/或中間資料頁的時間資訊,以得到類似第5圖所示之寫入時間記錄表500。之後,微處理器112再將寫入時間記錄表500進行壓縮以得到類似第6A圖、第6B圖、第6C圖所示之壓縮後寫入時間記錄表600或過期回收區塊索引表632、652。
在取得每一個有資料寫入之區塊的時間資訊以在DRAM 140中重新建立壓縮後寫入時間記錄表600後,流程便進入912以結束操作。
第10圖為根據本發明一實施例之進行過期區塊回收操作的流程圖。在步驟1000,流程開始,且記憶裝置100已完成初始化操作。在步驟1002,微處理器112根據目前的時間來決定出至少一個時間範圍。舉例來說,假設經過實驗量測結果,寫入至快閃記憶體模組120內之資料在經過14天後品質會大幅劣化,則微處理器112可以選擇的時間範圍為“13天前”。在步驟1004,微處理器112根據壓縮後寫入時間記錄表600所記錄的資料頁位址來選擇對應至時間範圍為“13天前”的專屬區塊。
在步驟1006,微處理器112讀取步驟1004中所決定之專屬區塊以決定出在13天前進行資料寫入的多個區塊,並將上述多個區塊加入到一過期區塊表中(例如,在過期區塊表中記錄這些區塊的區塊編號),並將這些區塊標註為待處理區塊。在本實施例中,過期區塊表係用來記錄過期區塊回收的優先順序,其具有固定的大小(即,可以記錄的區塊數量具有一上限值),因此,若是上述多個區塊的數量太多,則可以優先選擇第一個資料頁P1之時間資訊較早的區塊加入至過期區塊表,且也可以同時參考中間資料頁的時間資訊來作為備用參考。舉例來說,微處理器112可以根據專屬區塊所記錄之13天前進行資料寫入之多個區塊中第一個資料頁P1的時間資訊早於一第一門檻值的區塊優先加入至過期區塊表,並接著將該多個區塊中中間資料頁P128的時間資訊早於一第二門檻值的區塊依序加入至過期區塊表,其中該第二門檻值晚於該第一門檻值。
在步驟1008,微處理器112根據上述過期區塊表中所記錄的區塊,來依序進行過期區塊回收操作。具體來說,微處理器112可以將過期區塊表中所記錄之區塊內的有效資料搬移到一個空白資料頁中,並在區塊的有效資料完全搬移之後,將區塊標記為無效或是進行抹除。需注意的是,步驟1008所述的過期區塊回收操作可以在背景執行,亦即當快閃記憶體控制器110處於閒置狀態時(例如,不需要處理來自主裝置130的存取指令),則微處理器112可以開始執行過期區塊回收操作,直到快閃記憶體控制器110接收到來自主裝置130的存取指令而需要開始忙碌為止。
在步驟1010,由於步驟1008在進行過期區塊回收操作時有進行區塊的寫入以及抹除,因此,微處理器112根據上述區塊的寫入以及抹除來更新壓縮後寫入時間記錄表600,例如第7圖的流程所示。
由於立體NAND型快閃記憶體不斷增加的記憶體容量的單位密度而致使記憶體性能不斷劣化,新型的立體NAND型快閃記憶體在資料寫入後,其記憶體細胞之閘極所儲存的電荷將不斷流失,在一段時間之後,某些記憶體細胞之閘極所儲存的電荷已經不能反應其原本所欲儲存的資料之電荷量,而導致讀取時經常發生錯誤。而這些錯誤通常會讓快閃記憶體控制器啟動改變讀取電壓以及硬解碼、軟解碼的糾正機制,才能從這些過期的區塊上讀取到正確的資料,這些糾正機制通常非常耗時、耗電,也可能根本無法把錯誤糾正,導致記憶體控制器讀不到正確資料。因此,需要對區塊的寫入時間進行記錄,避免上述問題。需注意的是,以上實施例所述的過期區塊回收操作並不同於垃圾收集操作,且本實施例之過期區塊表也不同於垃圾收集操作所需的垃圾收集序列。詳細來說,在記憶裝置100的操作中,快閃記憶體控制器110會持續判斷目前快閃記憶體模組120中每一個區塊之有效資料頁的數量,以決定出哪一些區塊需要進行垃圾收集操作,舉例來說,當一區塊的有效資料頁的數量低於一臨界值時,該區塊會被排入至垃圾收集序列中,以在後續進行垃圾收集操作。然而,本實施例所述之過期區塊表所記錄的則是寫入時間過長的區塊,亦即這些區塊有或許有部分的區塊並未達到垃圾收集操作的標準,例如這些區塊的有效資料頁的數量遠高於該臨界值。此外,由於過期區塊表所記錄之區塊的資料即將快速劣化,因此過期區塊表的優先順序高於垃圾收集序列,亦即若是過期區塊表中有紀錄任何的區塊編號,則在垃圾收集操作允許中斷的情形下,快閃記憶體控制器110會優先停止垃圾收集操作而開始進行過期區塊回收操作。換句話說,快閃記憶體控制器110會立刻對過期區塊表所記錄之區塊進行過期區塊回收操作。
參考以上實施例所述,透過建立出寫入時間記錄表500來記錄每一個區塊之第一個資料頁與中間資料頁的時間資訊,並再對寫入時間記錄表500進行壓縮來產生壓縮後寫入時間記錄表600,整體來說可以在挑選出需要進行過期區塊回收操作的區塊更為迅速有效率,且也不會佔用緩衝記憶體116或是DRAM 140內的過多儲存空間。
此外,過期區塊回收操作需要配合邏輯資料頁與實體資料頁鏈結表,以找出區塊所有的有效資料頁,並將有效資料頁從過期區塊中搬移到新的區塊中,由於搬移的行為導致有效資料頁裡的資料重新寫入至新的區塊,也因此重置了這些資料的有效期限,並且將該過期區塊抹除備用。在搬移有效資料後,微處理器112需更新邏輯資料頁與實體資料頁鏈結表以及建立新的區塊的有效資料頁的資料數目表。為求謹慎,亦可將過期區塊中的無效資料搬移到另一個新區塊中,並相對應的建立無效資料之邏輯資料頁與實體資料頁鏈結表,以避免主機誤刪除資料時仍可拯救資料。請注意到,有些過期區塊當中,可能所有的資料頁都是有效的資料頁,那就得將所有的資料都搬移到新的資料當中,重置所有的資料的有效期限。
簡要歸納本發明,在本發明之應用於一快閃記憶體控制器的控制方法中,透過建立出寫入時間記錄表500來記錄每一個區塊之第一個資料頁與中間資料頁的時間資訊,並再對寫入時間記錄表500進行壓縮來產生壓縮後寫入時間記錄表600,整體來說可以在挑選出需要進行過期區塊回收操作的區塊更為迅速有效率,且也不會佔用緩衝記憶體116或是DRAM 140內的過多儲存空間。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
140:動態隨機存取記憶體
200:區塊
300~308:步驟
500:寫入時間記錄表
600:壓縮後寫入時間記錄表
630:目前寫入區塊表
632:過期回收區塊索引表
652:過期回收區塊索引表
700~712:步驟
900~912:步驟
1000~1010:步驟
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圖為根據本發明一實施例之寫入時間記錄表的示意圖。
第6A圖為根據本發明一實施例之壓縮後寫入時間記錄表的示意圖。
第6B圖中為本發明一實施例之目前寫入區塊表與過期回收區塊索引表的示意圖。
第6C圖中為本發明另一實施例之過期回收區塊索引表的示意圖。
第7圖為根據本發明一實施例之更新壓縮後寫入時間記錄表的流程圖。
第8圖為更新專屬區塊中區塊之時間資訊的示意圖。
第9圖所示之根據本發明一實施例之記憶裝置上電後在DRAM中建立出寫入時間記錄表的流程圖。
第10圖為根據本發明一實施例之進行過期區塊回收操作的流程圖。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
140:動態隨機存取記憶體
Claims (18)
- 一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,該快閃記憶體模組包含了多個區塊,且每一個區塊包含了多個資料頁,以及該控制方法包含有: 當資料寫入至該快閃記憶體模組之任一區塊時,在該區塊記錄一寫入時間; 建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該寫入時間; 對該寫入時間記錄表進行壓縮以產生一壓縮後寫入間記錄表,其中該壓縮後寫入時間記錄表包含了多個時間範圍及對應的索引值,其中每一個索引值對應到該快閃記憶體模組的一資料頁,且該資料頁記錄了該寫入時間位於對應之時間範圍的所有區塊的區塊編號及該寫入時間; 根據該控制方法在執行當下的時間來決定出該壓縮後寫入間記錄表內該多個時間範圍的一特定時間範圍,並根據該特定時間範圍所對應的資料頁位址以自該快閃記憶體模組中讀取多個區塊編號及對應的寫入時間; 在一過期區塊表中記錄該多個區塊編號中的至少一部分區塊編號;以及 根據該過期區塊表所記錄的該至少一部分區塊編號,以依序將具有該至少一部分區塊編號之區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第1項所述之控制方法,其中該多個時間範圍分別對應到多個專屬區塊,且每一個時間範圍所對應到的索引值係為對應之專屬區塊內最後一或多個資料頁。
- 如申請專利範圍第2項所述之控制方法,其中每一個時間範圍所對應到的專屬區塊只會儲存該寫入時間位於該時間範圍的所有區塊的區塊編號,而不會儲存該寫入時間位於其他任何時間範圍的區塊的區塊編號。
- 如申請專利範圍第1項所述之控制方法,另包含有: 當該快閃記憶體控制器準備關機時,將該壓縮後寫入時間記錄表寫入至該快閃記憶體模組的一特定區塊中; 當該快閃記憶體控制器上電時,判斷該快閃記憶體控制器在上電之前是否遭遇到不正常斷電; 若是判斷該快閃記憶體控制器在上電之前未遭遇到不正常斷電,則自該特定區塊中讀取該寫入時間記錄表,並將該寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中;以及 若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則讀取該快閃記憶體模組中該多個區塊的至少一部份區塊,以重新建立出該壓縮後寫入時間記錄表,並將該壓縮後寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中。
- 如申請專利範圍第4項所述之控制方法,其中該多個時間範圍分別對應到多個專屬區塊,且每一個時間範圍所對應到的索引值係為對應之專屬區塊內最後一或多個資料頁;以及若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則讀取該快閃記憶體模組中該多個區塊的該至少一部份區塊,以重新建立出該壓縮後寫入時間記錄表的步驟包含有: 判斷該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊是否為該多個專屬區塊中的其一; 若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊並非是該多個專屬區塊中的其一,讀取該多個專屬區塊以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表; 若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊為該多個專屬區塊中的其一,依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的該資料頁,以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表;以及 對重新建立之該寫入時間記錄表進行壓縮以重新建立出該壓縮後寫入間記錄表。
- 如申請專利範圍第4項所述之控制方法,其中重新建立出該壓縮後寫入時間記錄表的操作係在該快閃記憶體控制器在上電後的一初始化操作的時間內完成。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一緩衝記憶體; 其中當該微處理器將資料寫入至該快閃記憶體模組之任一區塊時,在該區塊記錄一寫入時間,並建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該寫入時間;以及該微處理器對該寫入時間記錄表進行壓縮以產生一壓縮後寫入間記錄表,其中該壓縮後寫入時間記錄表包含了多個時間範圍及對應的索引值,其中每一個索引值對應到該快閃記憶體模組的一資料頁,且該資料頁記錄了該寫入時間位於對應之時間範圍的所有區塊的區塊編號及該寫入時間; 其中該微處理器根據當下的時間來決定出該壓縮後寫入間記錄表內該多個時間範圍的一特定時間範圍,並根據該特定時間範圍所對應的索引值以自該快閃記憶體模組中讀取多個區塊編號及對應的寫入時間;該微處理器在一過期區塊表中記錄該多個區塊編號中的至少一部分區塊編號,並根據該過期區塊表所記錄的該至少一部分區塊編號,以依序將具有該至少一部分區塊編號之區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中該多個時間範圍分別對應到多個專屬區塊,且每一個時間範圍所對應到的索引值係為對應之專屬區塊內最後一或多個資料頁。
- 如申請專利範圍第8項所述之快閃記憶體控制器,其中每一個時間範圍所對應到的專屬區塊只會儲存該寫入時間位於該時間範圍的所有區塊的區塊編號,而不會儲存該寫入時間位於其他任何時間範圍的區塊的區塊編號。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中當該快閃記憶體控制器準備關機時,該微處理器將該壓縮後寫入時間記錄表寫入至該快閃記憶體模組的一特定區塊中;當該快閃記憶體控制器上電時,該微處理器判斷該快閃記憶體控制器在上電之前是否遭遇到不正常斷電,若是判斷該快閃記憶體控制器在上電之前未遭遇到不正常斷電,則該微處理器自該特定區塊中讀取該寫入時間記錄表,並將該寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中;以及若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則該微處理器讀取該快閃記憶體模組中該多個區塊的至少一部份區塊,以重新建立出該壓縮後寫入時間記錄表,並將該壓縮後寫入時間記錄表暫存至該緩衝記憶體或是一動態隨機存取記憶體中。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電:該微處理器判斷該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊是否為該多個專屬區塊中的其一;若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊並非是該多個專屬區塊中的其一,該微處理器讀取該多個專屬區塊以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表;若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊為該多個專屬區塊中的其一,該微處理器依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的該資料頁,以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表;以及該微處理器對重新建立之該寫入時間記錄表進行壓縮以重新建立出該壓縮後寫入間記錄表。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中重新建立出該壓縮後寫入時間記錄表的操作係在該快閃記憶體控制器在上電後的一初始化操作的時間內完成。
- 一種記憶裝置,包含有: 一快閃記憶體模組;以及 一快閃記憶體控制器,用以存取該快閃記憶體模組; 其中當該快閃記憶體控制器將資料寫入至該快閃記憶體模組之任一區塊時,在該區塊記錄一寫入時間,並建立一寫入時間記錄表,其中該寫入時間記錄表記錄了該快閃記憶體模組中有資料寫入之區塊的區塊編號及對應的該寫入時間;以及該快閃記憶體控制器對該寫入時間記錄表進行壓縮以產生一壓縮後寫入間記錄表,其中該壓縮後寫入時間記錄表包含了多個時間範圍及對應的索引值,其中每一個索引值對應到該快閃記憶體模組的一資料頁,且該資料頁記錄了該寫入時間位於對應之時間範圍的所有區塊的區塊編號及該寫入時間; 其中該快閃記憶體控制器根據當下的時間來決定出該壓縮後寫入間記錄表內該多個時間範圍的一特定時間範圍,並根據該特定時間範圍所對應的索引值以自該快閃記憶體模組中讀取多個區塊編號及對應的寫入時間;該快閃記憶體控制器在一過期區塊表中記錄該多個區塊編號中的至少一部分區塊編號,並根據該過期區塊表所記錄的該至少一部分區塊編號,以依序將具有該至少一部分區塊編號之區塊內的有效資料搬移至至少一空白區塊中。
- 如申請專利範圍第13項所述之記憶裝置,其中該多個時間範圍分別對應到多個專屬區塊,且每一個時間範圍所對應到的索引值係為對應之專屬區塊內最後一或多個資料頁。
- 如申請專利範圍第14項所述之記憶裝置,其中每一個時間範圍所對應到的專屬區塊只會儲存該寫入時間位於該時間範圍的所有區塊的區塊編號,而不會儲存該寫入時間位於其他任何時間範圍的區塊的區塊編號。
- 如申請專利範圍第13項所述之記憶裝置,其中當該快閃記憶體控制器準備關機時,該快閃記憶體控制器將該壓縮後寫入時間記錄表寫入至該快閃記憶體模組的一特定區塊中;當該快閃記憶體控制器上電時,該快閃記憶體控制器判斷該快閃記憶體控制器在上電之前是否遭遇到不正常斷電,若是判斷該快閃記憶體控制器在上電之前未遭遇到不正常斷電,則該快閃記憶體控制器自該特定區塊中讀取該寫入時間記錄表,並將該寫入時間記錄表暫存至一緩衝記憶體或是一動態隨機存取記憶體中;以及若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電,則該快閃記憶體控制器讀取該快閃記憶體模組中該多個區塊的至少一部份區塊,以重新建立出該壓縮後寫入時間記錄表,並將該壓縮後寫入時間記錄表暫存至該緩衝記憶體或是一動態隨機存取記憶體中。
- 如申請專利範圍第16項所述之記憶裝置,其中若是判斷該快閃記憶體控制器在上電之前遭遇到不正常斷電:該快閃記憶體控制器判斷該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊是否為該多個專屬區塊中的其一;若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊並非是該多個專屬區塊中的其一,該快閃記憶體控制器讀取該多個專屬區塊以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表;若是該快閃記憶體控制器在上電之前的斷電前最後一個寫入的區塊為該多個專屬區塊中的其一,該快閃記憶體控制器依序讀取該快閃記憶體模組中有資料寫入的每一個區塊的該資料頁,以得到該快閃記憶體模組中有資料寫入之區塊所對應的該寫入時間,並據以重新建立出該寫入時間記錄表;以及該快閃記憶體控制器對重新建立之該寫入時間記錄表進行壓縮以重新建立出該壓縮後寫入間記錄表。
- 如申請專利範圍第16項所述之記憶裝置,其中重新建立出該壓縮後寫入時間記錄表的操作係在該快閃記憶體控制器在上電後的一初始化操作的時間內完成。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109129292A TWI733568B (zh) | 2020-08-27 | 2020-08-27 | 記憶裝置、快閃記憶體控制器及其存取方法 |
CN202110203433.7A CN114115706B (zh) | 2020-08-27 | 2021-02-23 | 记忆装置、快闪存储器控制器及其存取方法 |
US17/199,388 US11372578B2 (en) | 2020-08-27 | 2021-03-11 | Control method for flash memory controller and associated flash memory controller and memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109129292A TWI733568B (zh) | 2020-08-27 | 2020-08-27 | 記憶裝置、快閃記憶體控制器及其存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI733568B true TWI733568B (zh) | 2021-07-11 |
TW202209333A TW202209333A (zh) | 2022-03-01 |
Family
ID=77911132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109129292A TWI733568B (zh) | 2020-08-27 | 2020-08-27 | 記憶裝置、快閃記憶體控制器及其存取方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11372578B2 (zh) |
CN (1) | CN114115706B (zh) |
TW (1) | TWI733568B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11544186B2 (en) * | 2020-07-16 | 2023-01-03 | Silicon Motion, Inc. | Method and apparatus for data reads in host performance acceleration mode |
US11544185B2 (en) * | 2020-07-16 | 2023-01-03 | Silicon Motion, Inc. | Method and apparatus for data reads in host performance acceleration mode |
US11947452B2 (en) * | 2022-06-01 | 2024-04-02 | Micron Technology, Inc. | Controlling variation of valid data counts in garbage collection source blocks |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013052562A1 (en) * | 2011-10-05 | 2013-04-11 | Lsi Corporation | Self-journaling and hierarchical consistency for non-volatile storage |
TW201405559A (zh) * | 2012-07-25 | 2014-02-01 | Silicon Motion Inc | 管理快閃記憶體中所儲存之資料的方法,及相關的記憶裝置與控制器 |
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 |
TW201802683A (zh) * | 2016-07-11 | 2018-01-16 | 慧榮科技股份有限公司 | 用於資料儲存裝置的損耗平均方法 |
US10102118B2 (en) * | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
US20200117361A1 (en) * | 2016-08-12 | 2020-04-16 | Pure Storage, Inc. | Data stability in data storage system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07281842A (ja) * | 1994-04-11 | 1995-10-27 | Hitachi Ltd | 半導体記憶装置 |
US7984231B2 (en) * | 2005-09-22 | 2011-07-19 | Panasonic Corporation | Information recording medium access device, and data recording method |
JP4124250B2 (ja) * | 2006-07-31 | 2008-07-23 | ソニー株式会社 | 記録装置、記録方法、記録媒体および記録データ生成装置 |
JP2016126656A (ja) * | 2015-01-07 | 2016-07-11 | 富士通株式会社 | ストレージ制御装置,制御プログラム及び制御方法 |
TWI576699B (zh) * | 2016-03-31 | 2017-04-01 | 慧榮科技股份有限公司 | 紀錄資料區塊的使用時間的方法及其裝置 |
JP6867578B2 (ja) * | 2016-05-27 | 2021-04-28 | 富士通株式会社 | ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム |
CN106598484A (zh) * | 2016-11-17 | 2017-04-26 | 华为技术有限公司 | 数据的存储方法、闪存芯片以及存储装置 |
TWI687930B (zh) * | 2018-11-07 | 2020-03-11 | 慧榮科技股份有限公司 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
TWI696074B (zh) * | 2019-01-24 | 2020-06-11 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
JP2020149588A (ja) * | 2019-03-15 | 2020-09-17 | キオクシア株式会社 | メモリシステム及びメモリコントローラ |
-
2020
- 2020-08-27 TW TW109129292A patent/TWI733568B/zh active
-
2021
- 2021-02-23 CN CN202110203433.7A patent/CN114115706B/zh active Active
- 2021-03-11 US US17/199,388 patent/US11372578B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013052562A1 (en) * | 2011-10-05 | 2013-04-11 | Lsi Corporation | Self-journaling and hierarchical consistency for non-volatile storage |
TW201405559A (zh) * | 2012-07-25 | 2014-02-01 | Silicon Motion Inc | 管理快閃記憶體中所儲存之資料的方法,及相關的記憶裝置與控制器 |
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 |
TW201802683A (zh) * | 2016-07-11 | 2018-01-16 | 慧榮科技股份有限公司 | 用於資料儲存裝置的損耗平均方法 |
US20200117361A1 (en) * | 2016-08-12 | 2020-04-16 | Pure Storage, Inc. | Data stability in data storage system |
Also Published As
Publication number | Publication date |
---|---|
US11372578B2 (en) | 2022-06-28 |
TW202209333A (zh) | 2022-03-01 |
CN114115706B (zh) | 2024-10-11 |
CN114115706A (zh) | 2022-03-01 |
US20220066687A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI733568B (zh) | 記憶裝置、快閃記憶體控制器及其存取方法 | |
TWI696074B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US11487475B2 (en) | Control method for referring to expired block table to perform expired block recycling operation and associated flash memory controller and memory device | |
US20190065361A1 (en) | Method for writing data into flash memory module and associated flash memory controller and electronic device | |
US20220318133A1 (en) | Control method of flash memory controller and associated flash memory controller and storage device | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
US11194502B1 (en) | Electronic device, flash memory controller and method for performing garbage collection operation on flash memory module | |
TW201525693A (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
US11249685B2 (en) | Method for accessing flash memory module, associated flash memory controller and electronic device for accelerating reading speed of flash | |
TW202028984A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
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) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI852008B (zh) | 快閃記憶體控制器與電子裝置 | |
US11687290B1 (en) | Method for improve read disturbance phenomenon of flash memory module and associated flash memory controller and electronic device | |
TWI768336B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI769100B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TW202234253A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |