TW202414400A - 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 - Google Patents
存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 Download PDFInfo
- Publication number
- TW202414400A TW202414400A TW111135283A TW111135283A TW202414400A TW 202414400 A TW202414400 A TW 202414400A TW 111135283 A TW111135283 A TW 111135283A TW 111135283 A TW111135283 A TW 111135283A TW 202414400 A TW202414400 A TW 202414400A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- codec
- settings
- flash memory
- type
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012937 correction Methods 0.000 claims description 76
- 238000013507 mapping Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Abstract
本發明揭露了一種存取快閃記憶體模組的方法,其包含有以下步驟:判斷目前需要寫入至該快閃記憶體模組中之一資料的類型;至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度;使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料;以及將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
Description
本發明係有關於快閃記憶體。
隨著低密度奇偶檢查碼(Low-density parity-check code,LDPC)的發展,快閃記憶體控制器中的編碼器可以對資料進行編碼以產生具有更多位元數的錯誤更正碼(Error Correction Code,ECC),且這些錯誤更正碼會連同資料一起被寫入至快閃記憶體模組中;另一方面,當快閃記憶體控制器需要自快閃記憶體模組讀取資料時,解碼器可以透過這些具有更多位元數的錯誤更正碼,以對具有更高位元錯誤量/位元錯誤率的資料進行錯誤更正,以成功地對資料進行解碼操作。然而,雖然錯誤更正碼電路的解碼能力提升了,但由於錯誤更正碼的長度(亦即,位元數)增加了,故快閃記憶體控制器所需要讀取的資料量也會增加,造成讀取速度的下降。
此外,編碼器對一筆資料進行編碼後所產生的編碼後資料稱為一個區段(chunk),亦即一個區段包含了一筆資料及對應的錯誤更正碼,而每一個區段的大小都是固定的,例如每一個區段包含了4千位元組(kilobyte,KB)的資料及450位元組的錯誤更正碼。然而,在快閃記憶體控制器的操作中,許多資料表,例如邏輯位址至實體位址映射表(logical address to physical address mapping table),會需要頻繁地被寫入至快閃記憶體模組,而這些資料表的大小可能會小於4KB,例如只有1KB或是2KB,因此,傳統上輸出固定大小區段的編碼器會造成編碼效率的低落。此外,由於解碼器一樣會需要讀取整個區段來進行解碼,故解碼器針對這些資料表的解碼效率也並不好。
因此,本發明的目的之一在於提出一種快閃記憶體控制器,其可以增進存取效率,以解決先前技術中所述的問題。
在本發明的一實施例中,揭露了一種存取快閃記憶體模組的方法,其包含有以下步驟:判斷目前需要寫入至該快閃記憶體模組中之一資料的類型;至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度;使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料;以及將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
在本發明的一實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一唯讀記憶體、一微處理器、一編碼器與一解碼器,其中該唯讀記憶體用來儲存一程式碼,且該微處理器用來執行該程式碼以控制對該快閃記憶體模組之存取。該微處理器判斷目前需要寫入至該快閃記憶體模組中之一資料的類型,並至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度;以及該編碼器使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料,並將該編碼後資料寫入至該快閃記憶體模組的一區塊中
在本發明的一實施例中,揭露了一種記憶裝置,其包含有快閃記憶體模組以及一快閃記憶體控制器。該快閃記憶體控制器係用來存取該快閃記憶體模組,且執行以下步驟:判斷目前需要寫入至該快閃記憶體模組中之一資料的類型;至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度;使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料;以及將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
第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),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。換句話說,區塊是快閃記憶體模組120中一個最小的抹除單位,而資料頁是快閃記憶體模組120中一個最小的寫入單位。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用記憶體介面114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用主機介面118來與一主裝置(Host Device)130溝通。
在一實施例中,記憶裝置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型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。
在本實施例中,為了讓快閃記憶體控制器100在讀取快閃記憶體模組120時具有較佳的讀取效率,編碼器132係被組態為具有多種不同的編碼設定,以產生不同位元數的錯誤更正碼(ECC);且解碼器134也可以被組態為具有多種不同的解碼設定,以對具有不同位元數的區段(chunk)進行解碼,其中區段包含了資料以及對應的錯誤更正碼。具體來說,參考第3圖所示,編碼器132與解碼器134係具有多種不同的編解碼設定(在本實施例中,以8組編解碼設定來做為說明),而每一組編解碼設定係對應到不同之區塊的寫入/抹除(program/erase)次數(以下簡稱為區塊的抹除次數)及不同的錯誤更正碼長度。舉例來說,當需要進行資料寫入或是資料讀取的區塊的抹除次數小於“100”時,編碼器132或是解碼器134會具有第1組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含306位元組(byte)之錯誤更正碼的編碼後資料,或是解碼器134可以對包含306位元組之錯誤更正碼的區段進行解碼;當需要進行資料寫入或是資料讀取的區塊的抹除次數介於“100” ~ “200”之間時,編碼器132或是解碼器134會具有第2組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含342位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含342位元組之錯誤更正碼的區段進行解碼;以及當需要進行資料寫入或是資料讀取的區塊的抹除次數大於“700”時,編碼器132或是解碼器134會具有第8組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含630位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含630位元組之錯誤更正碼的區段進行解碼。
需注意的是,第3圖所示之編解碼設定的組數、區塊之抹除次數範圍以及錯誤更正碼長度只是作為範例說明,而非是本發明的限制。在實作上,編解碼設定的組數、區塊之抹除次數範圍以及錯誤更正碼長度可以由設計者透過模擬或量測來決定出最適合的數值,而這些設計上的變化應隸屬於本發明的範疇。
第4圖為根據本發明一實施例之將資料寫入至快閃記憶體模組120的流程圖。於步驟400,流程開始,且記憶裝置100上電並完成初始化操作。在步驟402中,快閃記憶體控制器100中的微處理器112根據來自主裝置130的一寫入命令、或是需要儲存暫存於緩衝記憶體116內的資料,以自快閃記憶體模組120中選擇一區塊以進行資料寫入。在步驟404中,微處理器112根據所選擇之區塊的抹除次數以決定出一編解碼設定。具體來說,由於快閃記憶體控制器110會持續記錄每一個區塊的使用狀況,並將每一個區塊的抹除次數整合為一個區塊抹除次數資料表後儲存至快閃記憶體模組120中,故微處理器112可以直接參考這個區塊抹除次數資料表以得知所選擇之區塊的抹除次數,並決定出適合的編解碼設定。以第3圖為例來做為說明,若是所選擇之區塊的抹除次數小於“100”,則微處理器112決定使用第1組編解碼設定來設定編碼器132,而若是所選擇之區塊的抹除次數介於“100” ~ “200”,則微處理器112決定使用第2組編解碼設定來設定編碼器132。在步驟406,編碼器132根據微處理器112所決定的編解碼設定來對資料進行編碼以產生一編碼後資料,其中若是編碼器132具有第1組編解碼設定,則編碼器112對4 KB的資料進行編碼所產生的編碼後資料包含了4 KB的資料以及306位元組的錯誤更正碼;而若是編碼器132具有第2組編解碼設定,則編碼器112對4 KB的資料進行編碼所產生的編碼後資料包含了4 KB的資料以及342位元組的錯誤更正碼。最後,於步驟408,快閃記憶體控制器110將編碼後資料寫入至快閃記憶體模組120中於步驟402所選擇的區塊。
在以上的實施例中,當區塊之抹除次數較小時,區塊會具有較佳的儲存品質且所儲存的資料發生錯誤的機率會比較低,因此,微處理器112可以透過設定編碼器132來產生具有較低位元數之錯誤更正碼,其雖然較差的錯誤更正能力(亦即,可以更正的錯誤位元數較少),但已足夠更正此區塊所產生的錯誤;此外,由於寫入至區塊的編碼後資料具有較少的資料量,故可以以使得後續讀取編碼後資料時有較快的速度。另一方面,當區塊之抹除次數較大時,區塊會具有較差的儲存品質且所儲存的資料發生錯誤的機率會比較高,因此,微處理器112可以透過設定編碼器132來產生具有較高位元數之錯誤更正碼,其具有較強的錯誤更正能力,以確保後續讀取編碼後資料時可以確實更正其錯誤內容。如上所述,透過本實施例的技術內容,編碼器132可以根據區塊的儲存品質來產生具有適當長度與適當更正能力的錯誤更正碼,以避免針對具有較佳儲存品質的區塊產生過多位元數的錯誤更正碼,以有效改善存取效率。
在第3、4圖的實施例中,微處理器112是根據所選擇之區塊的抹除次數來決定編碼器132所要使用的編解碼設定,而在其他實施例中,於步驟404中微處理器112會同時根據所選擇之區塊的型式以及抹除次數來決定編碼器132所要使用的編解碼設定,其中區塊的型式指的是SLC區塊(亦即,每一個記憶單元只會儲存一個位元)、MLC區塊(亦即,每一個記憶單元儲存兩個位元)、TLC區塊(亦即,每一個記憶單元儲存三個位元)、以及QLC區塊(亦即,每一個記憶單元儲存四個位元)。具體來說,參考第5圖所示,編碼器132與解碼器134係具有多種不同的編解碼設定(在本實施例中,以8組編解碼設定來做為說明),而每一組編解碼設定係對應到不同之區塊的寫入/抹除次數(以下簡稱為區塊的抹除次數)及不同的錯誤更正碼長度。舉例來說,當需要進行資料寫入或是資料讀取的SLC區塊的抹除次數小於“100”時,編碼器132或是解碼器134會具有第1組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含306位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含306位元組之錯誤更正碼的區段進行解碼。當需要進行資料寫入或是資料讀取的SLC區塊的抹除次數介於“100” ~ “200”之間時、或是需要進行資料寫入或是資料讀取的TLC區塊的抹除次數小於“100”時,編碼器132或是解碼器134會具有第2組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含342位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含342位元組之錯誤更正碼的區段進行解碼。當需要進行資料寫入或是資料讀取的SLC區塊的抹除次數介於“200” ~ “300”之間時、或是需要進行資料寫入或是資料讀取的TLC區塊的抹除次數介於“100” ~ “200”之間時,編碼器132或是解碼器134會具有第3組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含378位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含378位元組之錯誤更正碼的區段進行解碼。以及當需要進行資料寫入或是資料讀取的SLC區塊的抹除次數大於“700”時、或是當需要進行資料寫入或是資料讀取的SLC區塊的抹除次數大於“600”時,編碼器132或是解碼器134會具有第8組編解碼設定,而此時編碼器132係用來對資料進行編碼以產生包含630位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含630位元組之錯誤更正碼的區段進行解碼。
需注意的是,第5圖所示之編解碼設定的組數、區塊的型式、區塊之抹除次數範圍以及錯誤更正碼長度只是作為範例說明,而非是本發明的限制。在實作上,編解碼設定的組數、區塊的型式、區塊之抹除次數範圍以及錯誤更正碼長度可以由設計者透過模擬或量測來決定出做適合的數值,而這些設計上的變化應隸屬於本發明的範疇。
第6圖為根據本發明一實施例之自快閃記憶體模組120中讀取資料的流程圖。於步驟600,流程開始,且記憶裝置100已上電並完成初始化操作。在步驟602中,快閃記憶體控制器110接收到一讀取命令,其中該讀取命令係要求讀取具有一特定邏輯位址的資料。在步驟604中,微處理器112根據一邏輯位址至實體位址映射表,以決定出具有該特定邏輯位址的資料是儲存於哪一個區塊中。於步驟606,微處理器112根據所決定出之區塊的抹除次數以決定出一編解碼設定,或是根據所決定出之區塊的類型與抹除次數以決定出一編解碼設定,其編解碼設定的決定方式可以參考第4圖之步驟404以及第3、5圖之實施例的內容。在步驟608,解碼器134根據微處理器112所決定的編解碼設定以對自區塊所讀取的一區段進行解碼以產生一解碼後資料,其中一個區段所包含的內容即是第4圖之步驟408寫入至快閃記憶體模組120中的編碼後資料。舉例來說,若是解碼器134具有第1組編解碼設定且所讀取的區塊是SLC區塊,則解碼器134自SLC區塊讀取包含了4 KB的資料以及306位元組的錯誤更正碼的區段,以進行解碼操作;而若是解碼器134具有第2組編解碼設定,則解碼器134自SLC區塊讀取包含了4 KB的資料以及342位元組的錯誤更正碼的區段,以進行解碼操作。
在以上的實施例中,針對每一個寫入命令或是讀取命令,微處理器112都需要決定出編碼器132或是解碼器134所需要使用的編解碼設定,然而,本發明並不以此為限。在其他的實施例中,微處理器112可以直接參考上述的區塊抹除次數資料表中有記錄之最高抹除次數(亦即,所有區塊之抹除次數中的最高者),以決定出編碼器132或是解碼器134後續所需要使用的編解碼設定。在一範例中,以第3圖來說,若是區塊抹除次數資料表中有記錄之最高抹除次數低於“100”,則微處理器112便直接將編碼器132或是解碼器134設定為具有第1組編解碼設定,而之後的資料寫入與資料讀取則都不需要再次決定出適合的編解碼設定,直到區塊抹除次數資料表中有記錄之最高抹除次數有所改變、或是高於“100”為止。同理,若是區塊抹除次數資料表中有記錄之最高抹除次數介於“200” ~ “300”,則微處理器112便直接將編碼器132或是解碼器134設定為具有第3組編解碼設定,而之後的資料寫入與資料讀取則都不需要再次決定出適合的編解碼設定,直到區塊抹除次數資料表中有記錄之最高抹除次數有所改變、或是高於“300”為止。上述實施例可以避免微處理器112在每一個寫入/讀取命令都需要決定出編碼器132或是解碼器134所需要使用的編解碼設定,以改善其處理效率。
在一實施例中,記憶裝置100本身並不具有動態隨機存取記憶體(Dynamic Random Access Memory,DRAM),因此,快閃記憶體控制器100在執行操作時所需要的各種不同的資料表都會暫存在緩衝記憶體116中。然而,由於緩衝記憶體116的容量有限,故微處理器112會將暫時不需要使用的資料表儲存至快閃記憶體模組120中,等到需要使用的時候再從快閃記憶體模組120載入至緩衝記憶體116內來使用。以邏輯位址至實體位址映射表(以下簡稱L2P映射表)為例來進行說明,快閃記憶體控制器110內可以具有多個L2P映射表,其中每一個L2P映射表包含了一段連續的邏輯位址及對應的實體位址;而微處理器112會在接收到寫入命令時,根據寫入命令所包含的邏輯位址來判斷緩衝記憶體116內是否存在對應的L2P映射表,若沒有的話則自快閃記憶體模組120中讀取對應的L2P映射表,並在寫入命令的資料寫入至快閃記憶體模組120後更新對應的L2P映射表;此外,微處理器112會在接收到讀取命令時,根據讀取命令所包含的邏輯位址來判斷緩衝記憶體116內是否存在對應的L2P映射表,若沒有的話則自快閃記憶體模組120中讀取對應的L2P映射表,並在搜尋L2P映射表中對應至讀取命令所包含之邏輯位址的實體位址,以進行資料的讀取。一般來說,快閃記憶體控制器110所處理的資料具有固定的大小,例如4 KB,亦即主裝置130所提供之寫入命令的每一個邏輯區塊位址(Logical Block Address,LBA)的大小為4 KB,而L2P映射表與其他資料表的大小並不會太大,例如是1 KB或是2 KB。因此,如先前技術所述,若是編碼器132仍然被設計為需要對4 KB的資料進行編碼,則會使得編碼後資料包含了許多冗餘資料,且降低了編碼器的效率。因此,本實施例在快閃記憶體模組120中規劃了第一組區塊與第二組區塊,其分別用來儲存資料表與其他資料,且第一組區塊與第二組區塊所使用的區段大小並不相同,以解決先前技術中所述的問題。
具體來說,參考第7圖所示,快閃記憶體模組120包含了第一組區塊與第二組區塊,其中第一組區塊包含了區塊710_1~710_A,且區塊710_1~710_A係用來儲存系統資料,例如上述的L2P映射表;以及第二組區塊包含了SLC區塊720_1~720_B以及TLC區塊730_1~730_C,且第二組區塊係用來儲存一般資料。
第8圖為根據本發明一實施例之將資料寫入至快閃記憶體模組120的流程圖。於步驟800,流程開始,且記憶裝置100上電並完成初始化操作。在步驟802中,快閃記憶體控制器100中的微處理器112判斷目前需要寫入至快閃記憶體模組120中之一筆資料的類型,若是需要寫入至快閃記憶體模組120的資料為目前暫存在緩衝記憶體116內的資料表,則流程進入至步驟804;而若是需要寫入至快閃記憶體模組120的資料為來自主裝置130的一般資料、或是記憶裝置100在進行垃圾收集操作(garbage collection)所搬移的有效資料,則流程進入步驟810。
於步驟804,微處理器112使用一第一設定來設定編碼器132,以使得編碼器132可以對一較小資料量的資料(以下使用2 KB來進行說明)進行編碼。在步驟806,編碼器132對資料進行編碼以產生一編碼後資料,其中編碼後資料的大小為2 KB加上錯誤更正碼的位元數。在步驟808,快閃記憶體控制器110將編碼後資料寫入至區塊710_1~710_A中的其一。
於步驟810,微處理器112使用一第二設定來設定編碼器132,以使得編碼器132可以對一正常資料量的資料(以下使用4 KB來進行說明)進行編碼。在步驟812,編碼器132對資料進行編碼以產生一編碼後資料,其中編碼後資料的大小為4 KB加上錯誤更正碼的位元數。在步驟814,快閃記憶體控制器110將編碼後資料寫入至區塊720_1~720_B、730_1~730_C中的其一。
如上所述,透過第7、8圖實施例的技術內容,微處理器112可以根據所寫入之資料的類型來設定編碼器132所處理的資料量以及所輸出之編碼後資料的大小,如此一來可以避免編碼器132在對實際有效大小為2 KB的資料表進行處理時仍然輸出4 KB的編碼後資料,以有效改善編碼器的效率。
第9圖為根據本發明一實施例之自快閃記憶體模組120中讀取資料的流程圖。於步驟900,流程開始,且記憶裝置100已上電並完成初始化操作。在步驟902中,快閃記憶體控制器100中的微處理器112判斷目前需要讀取之資料的類型,若是需要讀取的是來自快閃記憶體模組120中區塊710_1~710_A內的資料表,則流程進入至步驟904;而若是需要讀取的是來自快閃記憶體模組120中720_1~720_B、730_1~730_C內的一般資料,則流程進入步驟910。
於步驟904,微處理器112使用一第一設定來設定解碼器134,以使得解碼器134可以對一較小資料量的資料(以下使用2 KB來進行說明)進行解碼。在步驟906,解碼器134根據該第一設定以自區塊710_1~710_A中讀取一區段,其中該區段的大小可以是第8圖之步驟806的編碼後資料(亦即,2 KB加上錯誤更正碼的位元數),並對該區段進行解碼以產生一解碼後資料。於步驟908,解碼器134將該解碼後資料儲存至緩衝記憶體116中。
於步驟910,微處理器112使用一第二設定來設定解碼器134,以使得解碼器134可以對一正常資料量的資料(以下使用4 KB來進行說明)進行解碼。在步驟912,解碼器134根據該第二編解碼設定以自區塊720_1~720_B、730_1~730_C中讀取一區段,其中該區段的大小可以是第8圖之步驟812的編碼後資料(亦即,4 KB加上錯誤更正碼的位元數),並對該區段進行解碼以產生一解碼後資料。於步驟914,解碼器134將該解碼後資料儲存至緩衝記憶體116,或是微處理器112將該解碼後資料傳送給主裝置130。
在第8、9圖的實施例中,編碼器132與解碼器134的第一設定或是第二設定是透過微處理器112來進行,例如微處理器112修改編碼器132與解碼器134中一或多個暫存器(register)的數值,以使得編碼器132與解碼器134具有不同的設定。然而,在其他的實施例中,考量到微處理器112可能會連續地接收到大量的寫入命令或是讀取命令,而這些寫入命令或是讀取命令可能並非是依序執行,因此,微處理器112可以將上述設定嵌入至傳送給編碼器132的寫入命令中,且也可以將上述設定嵌入至傳送給解碼器134的讀取命令中,以避免編碼器132與解碼器134使用錯誤的設定來進行編解碼操作。
在第3、4圖的實施例中,微處理器112係根據區塊的型式及/或抹除次數來決定需要採用的編解碼設定,以使得編碼器132可以產生適合大小的錯誤更正碼;而在第8圖的實施例中,微處理器112係根據目前需要寫入至快閃記憶體模組120中之一筆資料的類型,以決定出編碼器132所接收及處理資料的資料量。在本發明的另一實施例中,第3、4、8圖的實施例亦可結合以使得微處理器112可以設定編碼器132來處理不同大小的資料,且也可以產生適合大小的錯誤更正碼。具體來說,參考第10圖,編碼器132與解碼器134係具有多種不同的編解碼設定(在本實施例中,以10組編解碼設定來做為說明),而每一組編解碼設定係對應到不同之區塊的寫入/抹除(program/erase)次數(以下簡稱為區塊的抹除次數)、不同的資料量、及不同的錯誤更正碼長度。舉例來說,當需要進行資料寫入或是資料讀取的區塊的抹除次數小於“100”、且需要寫入或讀取的資料量為4 KB時,編碼器132或是解碼器134會具有第1組編解碼設定,而此時編碼器132係用來對4 KB資料進行編碼以產生包含306位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含4 KB 資料與306位元組之錯誤更正碼的區段進行解碼;當需要進行資料寫入或是資料讀取的區塊的抹除次數大於“700”、且需要寫入或讀取的資料量為4 KB時,編碼器132或是解碼器134會具有第8組編解碼設定,而此時編碼器132係用來對4 KB資料進行編碼以產生包含630位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含4 KB 資料與630位元組之錯誤更正碼的區段進行解碼;當需要進行資料寫入或是資料讀取的區塊的抹除次數小於“200”、且需要寫入或讀取的資料量為2 KB時,編碼器132或是解碼器134會具有第9組編解碼設定,而此時編碼器132係用來對2 KB資料進行編碼以產生包含150位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含2KB資料與150位元組之錯誤更正碼的區段進行解碼;當需要進行資料寫入或是資料讀取的區塊的抹除次數大於“200”、且需要寫入或讀取的資料量為2 KB時,編碼器132或是解碼器134會具有第9組編解碼設定,而此時編碼器132係用來對2 KB資料進行編碼以產生包含300位元組之錯誤更正碼的編碼後資料,或是解碼器134可以對包含2KB資料與300位元組之錯誤更正碼的區段進行解碼。
需注意的是,第10圖所示之編解碼設定的組數、區塊之抹除次數的範圍、資料量的大小以及錯誤更正碼長度只是作為範例說明,而非是本發明的限制。在實作上,編解碼設定的組數、區塊之抹除次數的範圍、資料量的大小以及錯誤更正碼長度可以由設計者透過模擬或量測來決定出做適合的數值,而這些設計上的變化應隸屬於本發明的範疇。
第11圖為根據本發明一實施例之將資料寫入至快閃記憶體模組120的流程圖。於步驟1100,流程開始,且記憶裝置100上電並完成初始化操作。在步驟1102中,快閃記憶體控制器100中的微處理器112根據來自主裝置130的一寫入命令、或是需要儲存暫存於緩衝記憶體116內的資料,以自快閃記憶體模組120中選擇一區塊以進行資料寫入。在步驟1104中,微處理器112根據所選擇之區塊的抹除次數、以及需要寫入至快閃記憶體模組120中之資料的類型(例如,是2 KB的資料表或是4 KB的一般資料),以決定出一編解碼設定。在另一實施例中,微處理器112根據所選擇之區塊的抹除次數、需要寫入至快閃記憶體模組120中之資料的類型(例如,是2 KB的資料表或是4 KB的一般資料)、以及所選擇之區塊的類型(例如,SLC區塊或是TLC區塊),以決定出一編解碼設定。以第10圖為例來做為說明,若是所選擇之區塊的抹除次數小於“200”,且需要寫入的資料為2 KB的資料表,則微處理器112決定使用第9組編解碼設定來設定編碼器132。在步驟1106,編碼器132根據微處理器112所決定的編解碼設定來對資料進行編碼以產生一編碼後資料,其中若是編碼器132具有第1組編解碼設定,則編碼器112對4 KB的資料進行編碼所產生的編碼後資料包含了4 KB的資料以及306位元組的錯誤更正碼;而若是編碼器132具有第9組編解碼設定,則編碼器112對2 KB的資料進行編碼所產生的編碼後資料包含了2 KB的資料以及150位元組的錯誤更正碼。最後,於步驟1108,快閃記憶體控制器110將編碼後資料寫入至快閃記憶體模組120中於步驟1102所選擇的區塊。
第12圖為根據本發明一實施例之自快閃記憶體模組120中讀取資料的流程圖。於步驟1200,流程開始,且記憶裝置100已上電並完成初始化操作。在步驟1202中,微處理器112決定出要讀取其中資料的一區塊。於步驟1204,微處理器112根據所決定出之區塊的抹除次數、以及需要自快閃記憶體模組120中讀取之資料的類型(例如,是2 KB的資料表或是4 KB的一般資料),以決定出一編解碼設定;或是微處理器112根據所決定出之區塊的類型與抹除次數、以及需要自快閃記憶體模組120中讀取之資料的類型,以決定出一編解碼設定。在步驟1208,解碼器134根據微處理器112所決定的編解碼設定以對自區塊所讀取的一區段進行解碼以產生一解碼後資料,其中一個區段所包含的內容即是第11圖之步驟1108寫入至快閃記憶體模組120中的編碼後資料。舉例來說,若是解碼器134具有第1組編解碼設定,則解碼器134自區塊讀取包含了4 KB的資料以及306位元組的錯誤更正碼的區段,以進行解碼操作;而若是解碼器134具有第9組編解碼設定,則解碼器134自區塊讀取包含了2 KB的資料以及150位元組的錯誤更正碼的區段,以進行解碼操作。
簡要歸納本發明,在本發明之存取快閃記憶體模組的方法中,根據要寫入之資料的類型、及/或根據資料所要寫入之區塊的抹除次數及類型來設定編碼器,以產生具有適合長度的編碼後資料後,可以在後續自快閃記憶體模組中讀取資料時更為快速,以增進記憶裝置整體的效率。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
200:區塊
202:浮閘電晶體
BL1~BL3:位元線
WL0~WL2,WL4~WL6:字元線
400~408:步驟
600~608:步驟
710_1~710_A:區塊
720_1~720_B:SLC區塊
730_1~730_C:區塊
800~814:步驟
900~914:步驟
1100~1108:步驟
1200~1206:步驟
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。
第2圖為依據本發明一實施例之快閃記憶體模組中一區塊的示意圖。
第3圖為根據本發明一實施例之多組編解碼設定的示意圖。
第4圖為根據本發明一實施例之將資料寫入至快閃記憶體模組的流程圖。
第5圖為根據本發明一實施例之多組編解碼設定的示意圖。
第6圖為根據本發明一實施例之自快閃記憶體模組中讀取資料的流程圖。
第7圖為快閃記憶體模組劃分為第一組區塊以及第二組區塊的示意圖。
第8圖為根據本發明一實施例之將資料寫入至快閃記憶體模組的流程圖。
第9圖為根據本發明一實施例之自快閃記憶體模組中讀取資料的流程圖。
第10圖為根據本發明一實施例之多組編解碼設定的示意圖。
第11圖為根據本發明一實施例之將資料寫入至快閃記憶體模組的流程圖。
第12圖為根據本發明一實施例之自快閃記憶體模組中讀取資料的流程圖。
800~814:步驟
Claims (20)
- 一種存取快閃記憶體模組的方法,包含有: 判斷目前需要寫入至該快閃記憶體模組中之一資料的類型; 至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度; 使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料;以及 將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
- 如申請專利範圍第1項所述之方法,其中該多組編解碼設定包含了一第一組編解碼設定以及一第二組編解碼設定,該第一組編解碼設定對應至一第一資料長度,該第二組編解碼設定對應至一第二資料長度,該第一資料長度小於該第二資料長度;以及至少根據該資料的類型以自多組編解碼設定中選擇該特定編解碼設定的步驟,以及使用該特定編解碼設定來對該資料進行編碼操作以產生該編碼後資料的步驟包含有: 若是該資料具有一第一類型,選擇該第一組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第一資料長度之該資料進行編碼操作以產生該編碼後資料;以及 若是該資料具有一第二類型,選擇該第二組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料。
- 如申請專利範圍第2項所述之方法,其中該第一類型為一資料表,且該第二類型為來自一主裝置之一寫入命令的資料、或是在進行垃圾收集操作(garbage collection)所搬移的有效資料。
- 如申請專利範圍第3項所述之方法,其中該資料表包含了一邏輯位址至實體位址映射表(logical address to physical address mapping table)。
- 如申請專利範圍第2項所述之方法,其中該第二資料長度為4千位元組(kilobyte,KB),且該第一資料長度小於或等於2 KB。
- 如申請專利範圍第1項所述之方法,其中至少根據該資料的類型以自多組編解碼設定中選擇該特定編解碼設定的步驟包含有: 根據該資料的類型以及該區塊的一抹除次數,以自多組編解碼設定中選擇該特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度以及不同的錯誤更正碼(Error Correction Code,ECC)長度。
- 如申請專利範圍第6項所述之方法,其中該多組編解碼設定包含了一第一組編解碼設定、一第二組編解碼設定以及一第三組編解碼設定,該第一組編解碼設定對應至一第一資料長度、一第一抹除次數範圍及一第一錯誤更正碼長度,該第二組編解碼設定對應至一第二資料長度、一第二抹除次數範圍及一第二錯誤更正碼長度,該第三組編解碼設定對應至該第二資料長度、一第三抹除次數範圍及一第三錯誤更正碼長度,該第二抹除次數範圍中的數值小於該第三抹除次數範圍中的數值,該第二錯誤更正碼長度小於該第三錯誤更正碼長度;以及根據該資料的類型以及該區塊的該抹除次數,以自多組編解碼設定中選擇該特定編解碼設定的步驟,以及使用該特定編解碼設定來對該資料進行編碼操作以產生該編碼後資料的步驟包含有: 若是該資料具有一第一類型且該區塊的該抹除次數位於該第一抹除次數範圍,選擇該第一組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第一資料長度之該資料進行編碼操作以產生該編碼後資料; 若是該資料具有一第二類型且該區塊的該抹除次數位於該第二抹除次數範圍,選擇該第二組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料;以及 若是該資料具有該第二類型且該區塊的該抹除次數位於該第三抹除次數範圍,選擇該第三組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料。
- 如申請專利範圍第6項所述之方法,其中根據該資料的類型以及該區塊的該抹除次數,以自多組編解碼設定中選擇該特定編解碼設定的步驟包含有; 根據該資料的類型、該區塊的類型以及該區塊的該抹除次數,以自多組編解碼設定中選擇該特定編解碼設定。
- 如申請專利範圍第8項所述之方法,其中該區塊的類型為該區塊是屬於一單層式儲存(Single-Level Cell,SLC)區塊、一雙層式儲存(Multi-Level Cell,MLC)區塊、一三層式儲存(Triple-Level Cell,TLC)區塊或是一四層式儲存(Quad-Level Cell,QLC)區塊。
- 如申請專利範圍第1項所述之方法,另包含有: 在該編碼後資料被寫入至該區塊之後: 根據需要讀取之該資料的類型自該多組編解碼設定中選擇該特定編解碼設定;以及 使用該特定編解碼設定以自該快閃記憶體模組中讀取一區段,並對該區段進行解碼以產生一解碼後資料。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一編碼器與一解碼器; 其中該微處理器判斷目前需要寫入至該快閃記憶體模組中之一資料的類型,並至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度;以及該編碼器使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料,並將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中該多組編解碼設定包含了一第一組編解碼設定以及一第二組編解碼設定,該第一組編解碼設定對應至一第一資料長度,該第二組編解碼設定對應至一第二資料長度,該第一資料長度小於該第二資料長度;以及若是該資料具有一第一類型,該微處理器選擇該第一組編解碼設定來作為該特定編解碼設定,且該編碼器使用該特定編解碼設定來對具有該第一資料長度之該資料進行編碼操作以產生該編碼後資料;以及若是該資料具有一第二類型,該微處理器選擇該第二組編解碼設定來作為該特定編解碼設定,且該編碼器使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料。
- 如申請專利範圍第12項所述之快閃記憶體控制器,其中該第一類型為一資料表,且該第二類型為來自一主裝置之一寫入命令的資料、或是在進行垃圾收集操作(garbage collection)所搬移的有效資料。
- 如申請專利範圍第13項所述之快閃記憶體控制器,其中該資料表包含了一邏輯位址至實體位址映射表(logical address to physical address mapping table)。
- 如申請專利範圍第12項所述之快閃記憶體控制器,其中該第二資料長度為4千位元組(kilobyte,KB),且該第一資料長度小於或等於2 KB。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中該微處理器根據該資料的類型以及該區塊的一抹除次數,以自多組編解碼設定中選擇該特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度以及不同的錯誤更正碼(Error Correction Code,ECC)長度。
- 如申請專利範圍第16項所述之快閃記憶體控制器,其中該多組編解碼設定包含了一第一組編解碼設定、一第二組編解碼設定以及一第三組編解碼設定,該第一組編解碼設定對應至一第一資料長度、一第一抹除次數範圍及一第一錯誤更正碼長度,該第二組編解碼設定對應至一第二資料長度、一第二抹除次數範圍及一第二錯誤更正碼長度,該第三組編解碼設定對應至該第二資料長度、一第三抹除次數範圍及一第三錯誤更正碼長度,該第二抹除次數範圍中的數值小於該第三抹除次數範圍中的數值,該第二錯誤更正碼長度小於該第三錯誤更正碼長度;以及若是該資料具有一第一類型且該區塊的該抹除次數位於該第一抹除次數範圍,該微處理器選擇該第一組編解碼設定來作為該特定編解碼設定,且該編碼器使用該特定編解碼設定來對具有該第一資料長度之該資料進行編碼操作以產生該編碼後資料;若是該資料具有一第二類型且該區塊的該抹除次數位於該第二抹除次數範圍,該微處理器選擇該第二組編解碼設定來作為該特定編解碼設定,且該編碼器使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料;以及若是該資料具有該第二類型且該區塊的該抹除次數位於該第三抹除次數範圍,該微處理器選擇該第三組編解碼設定來作為該特定編解碼設定,且該編碼器使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料。
- 一種記憶裝置,包含有: 一快閃記憶體模組;以及 一快閃記憶體控制器,用以存取該快閃記憶體模組; 其中該快閃記憶體控制器係用以執行以下步驟: 判斷目前需要寫入至該快閃記憶體模組中之一資料的類型; 至少根據該資料的類型以自多組編解碼設定中選擇一特定編解碼設定,其中該多組編解碼設定分別對應至不同的資料長度; 使用該特定編解碼設定來對該資料進行編碼操作以產生一編碼後資料;以及 將該編碼後資料寫入至該快閃記憶體模組的一區塊中。
- 如申請專利範圍第18項所述之記憶裝置,其中該多組編解碼設定包含了一第一組編解碼設定以及一第二組編解碼設定,該第一組編解碼設定對應至一第一資料長度,該第二組編解碼設定對應至一第二資料長度,該第一資料長度小於該第二資料長度;以及至少根據該資料的類型以自多組編解碼設定中選擇該特定編解碼設定的步驟,以及使用該特定編解碼設定來對該資料進行編碼操作以產生該編碼後資料的步驟包含有: 若是該資料具有一第一類型,選擇該第一組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第一資料長度之該資料進行編碼操作以產生該編碼後資料;以及 若是該資料具有一第二類型,選擇該第二組編解碼設定來作為該特定編解碼設定,且使用該特定編解碼設定來對具有該第二資料長度之該資料進行編碼操作以產生該編碼後資料。
- 如申請專利範圍第19項所述之記憶裝置,其中該第一類型為一資料表,且該第二類型為來自一主裝置之一寫入命令的資料、或是在進行垃圾收集操作(garbage collection)所搬移的有效資料。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211209649.5A CN117762819A (zh) | 2022-09-19 | 2022-09-30 | 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置 |
US17/993,896 US20240094912A1 (en) | 2022-09-19 | 2022-11-24 | Method for accessing flash memory module, flash memory controller, and memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202414400A true TW202414400A (zh) | 2024-04-01 |
TWI837829B TWI837829B (zh) | 2024-04-01 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10403369B2 (en) | Memory system with file level secure erase and operating method thereof | |
TWI626541B (zh) | 將資料寫入至快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI807674B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置 | |
CN109390027B (zh) | 解码方法及相关的闪存控制器与电子装置 | |
TWI656442B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
TW201908957A (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI837829B (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
TWI836610B (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
TW202414400A (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
TW202414424A (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
US20240094912A1 (en) | Method for accessing flash memory module, flash memory controller, and memory device | |
TWI831297B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置 | |
US11249676B2 (en) | Electronic device, flash memory controller and associated control method | |
TWI823649B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置 | |
TWI807919B (zh) | 資料重讀方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI523016B (zh) | 用來管理一記憶裝置之方法以及記憶裝置與控制器 | |
TWI811130B (zh) | 用以存取一快閃記憶體模組的方法、快閃記憶體控制器以及電子裝置 | |
TWI771079B (zh) | 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元 | |
US11520507B1 (en) | System and method for test precondition generation based on factory-formatted state of memory device | |
TWI834149B (zh) | 表格管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI667656B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
CN117174132A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN112527184A (zh) | 数据管理方法、存储器控制电路单元以及存储器存储装置 |