TW201545167A - 在非揮發性記憶體中處理錯誤更正碼的方法及其非揮發性儲存裝置 - Google Patents
在非揮發性記憶體中處理錯誤更正碼的方法及其非揮發性儲存裝置 Download PDFInfo
- Publication number
- TW201545167A TW201545167A TW103131561A TW103131561A TW201545167A TW 201545167 A TW201545167 A TW 201545167A TW 103131561 A TW103131561 A TW 103131561A TW 103131561 A TW103131561 A TW 103131561A TW 201545167 A TW201545167 A TW 201545167A
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- error correction
- memory
- check
- check code
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6312—Error control coding in combination with data compression
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種在一非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC)之方法,包含有對一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼;壓縮該第一校驗碼,以產生一壓縮校驗碼;對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼;以及將該資料碼、該壓縮校驗碼及該額外校驗碼寫入該非揮發性記憶體之一記憶體單元。
Description
本發明係指一種在非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC)的方法及其非揮發性儲存裝置,尤指一種可提升非揮發性記憶體壽命之處理錯誤更正碼的方法及其非揮發性儲存裝置。
記憶體控制器常用於記憶體系統(特別是非揮發性記憶體系統)中,用來進行工作管理。一般來說,當非揮發性記憶體系統之電源關閉時,儲存於非揮發性記憶體系統的資料不會遺失,因此非揮發性記憶體系統可作為一種用來儲存系統資料的重要裝置。在各類非揮發性記憶體系統中,由於反及閘快閃記憶體(NAND Flash Memory)具有低功耗及速度快之優點,因此,伴隨近年來可攜式裝置的普及化,反及閘快閃記憶體已被廣為採用。
然而,由於反及閘快閃記憶體可寫入/清除的次數有限,因此具有一定的壽命。目前業界主要採用兩種方法來提高反及閘快閃記憶體的壽命。一種方法是在快閃記憶體轉換層(Flash Translation Layer,FTL)採用較小記憶體單元進行映射,以降低寫入放大率(write amplification);另一種方法則是使用錯誤更正碼(Error Correcting Code,ECC)技術,以修正快閃記憶體所儲存之資料中的錯誤位元。在反及閘快閃記憶體執行多次寫入/清除之後,位元錯誤率往往會隨之而上升,因此需採用具有更高錯誤更正能力的錯誤更
正碼。在此情況下,需要數量更多的校驗碼來進行錯誤更正,然而,反及閘快閃記憶體內部用來儲存校驗碼的空間有限。因此,實有必要有效地進行校驗碼的配置,並使用適當的錯誤更正碼來提升反及閘快閃記憶體的錯誤更正能力。
因此,本發明之主要目的即在於提供一種在非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC)的方法,其可藉由適當地使用錯誤更正碼,同時使校驗碼有效地儲存在非揮發性記憶體的有限儲存空間中,進而提升非揮發性記憶體的壽命。
本發明揭露一種在一非揮發性記憶體中處理錯誤更正碼之方法,包含有對一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼;壓縮該第一校驗碼,以產生一壓縮校驗碼;對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼;以及將該資料碼、該壓縮校驗碼及該額外校驗碼寫入該非揮發性記憶體之一記憶體單元。
本發明另揭露一種非揮發性儲存裝置,包含有一非揮發性記憶體;以及一記憶體控制器。該記憶體控制器耦接於該非揮發性記憶體,用來在該非揮發性記憶體中處理錯誤更正碼。該記憶體控制器包含有一記憶體緩衝區;一錯誤更正碼模組,用來對儲存於該記憶體緩衝區之一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼;一壓縮模組,用來壓縮該第一校驗碼,以產生一壓縮校驗碼,其中,該錯誤更正碼模組另對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼;以及一處理器,用來將該資料碼、該壓縮校驗碼及該額外校驗碼寫入該非揮發性記憶體之一記憶體單元。
本發明另揭露一種在一非揮發性記憶體中處理錯誤更正碼之方法,
包含有將該非揮發性記憶體之一記憶體單元分割為一資料區及一備用區;將一第一資料碼分割為N個字碼(code word);對該N個字碼執行一第一錯誤更正操作,以分別產生N組第一校驗碼;以及分配該資料區中N個部分來儲存該N個字碼,並分配該備用區中N個部分來儲存該N組第一校驗碼;其中,該備用區之該N個部分中每一部分的大小不小於一數值,該數值係根據對該N個字碼中任一字碼執行一第二錯誤更正操作所產生的一第二校驗碼的大小而決定。
本發明另揭露一種非揮發性儲存裝置,包含有一非揮發性記憶體以及一記憶體控制器。該非揮發性記憶體包含有一記憶體單元,該記憶體單元被分割為一資料區及一備用區。該記憶體控制器耦接於該非揮發性記憶體,藉由執行以下步驟以在該非揮發性記憶體中處理錯誤更正碼:將一第一資料碼分割為N個字碼;對該N個字碼執行一第一錯誤更正操作,以分別產生N組第一校驗碼;以及分配該資料區中N個部分來儲存該N個字碼,並分配該備用區中N個部分來儲存該N組第一校驗碼;其中,該備用區之該N個部分中每一部分的大小不小於一數值,該數值係根據對該N個字碼中任一字碼執行一第二錯誤更正操作所產生的一第二校驗碼的大小而決定。
10‧‧‧非揮發性儲存裝置
100‧‧‧非揮發性記憶體
102‧‧‧記憶體控制器
110‧‧‧記憶體緩衝區
112‧‧‧錯誤更正碼模組
114‧‧‧壓縮模組
116‧‧‧處理器
20‧‧‧錯誤更正流程
200~210‧‧‧步驟
302~310、312~320‧‧‧步驟
C1、C1’‧‧‧快取記憶體
M1、M1’、M2、M3‧‧‧記憶體單元
CW_1~CW_N、CW_1’~CW_N’、CW_x、CW_y‧‧‧字碼
ECC_1~ECC_N、ECC_1’~ECC_N’、
ECC_x、ECC_y、ECC_x’、ECC_y’‧‧‧校驗碼
C_ECC、C_ECC_1~C_ECC_N‧‧‧壓縮校驗碼
A_ECC、A_ECC_1~A_ECC_N‧‧‧額外校驗碼
40‧‧‧錯誤更正流程
400~410‧‧‧步驟
502~508‧‧‧步驟
D1、D2‧‧‧資料區
S1、S2‧‧‧備用區
第1圖為本發明實施例一非揮發性儲存裝置之示意圖。
第2圖為本發明實施例一錯誤更正流程之示意圖。
第3A圖為本發明實施例將資料碼及校驗碼寫入非揮發性記憶體之一記憶體單元之流程圖。
第3B圖為本發明實施例資料碼及校驗碼寫入非揮發性記憶體之另一記憶體單元之流程圖。
第4圖為本發明實施例一錯誤更正流程之示意圖。
第5圖為本發明實施例在一記憶體單元中根據具有較高錯誤更正能力之錯誤更正操作所對應的校驗碼來保留儲存空間之流程圖。
第6圖為第5圖之記憶體單元與一般採用等級較低的錯誤更正操作之記憶體單元的比較之示意圖。
第7圖為本發明實施例一記憶體單元中一資料區及一備用區的配置之示意圖。
請參考第1圖,第1圖為本發明實施例一非揮發性儲存裝置10之示意圖。如第1圖所示,非揮發性儲存裝置10包含有一非揮發性記憶體100及一記憶體控制器102。非揮發性記憶體100包含有複數個記憶體單元,其中每一記憶體單元可為一記憶體分頁或一部分寫入分頁(如1kB或2kB),其可根據記憶體控制器102所定義的映射單位以及非揮發性記憶體100的特性而定。部分寫入分頁為記憶體分頁的一部分,而每一記憶體分頁可包含多個部分寫入分頁。記憶體控制器102耦接於非揮發性記憶體100,其可在非揮發性記憶體100寫入資料,並管理非揮發性記憶體100之各項運作。記憶體控制器102包含有一記憶體緩衝區110、一錯誤更正碼模組112、一壓縮模組114及一處理器116。記憶體控制器102包含有一快閃記憶體轉換層(Flash Translation Layer,FTL),用來管理非揮發性記憶體100中對應於每一記憶體單元之映射資訊。記憶體控制器102亦可用來管理每一記憶體單元之資料寫入策略,如各類型之錯誤更正碼(Error Correcting Code,ECC)或不同寫入方法等。非揮發性儲存裝置10耦接於一主機介面,其可根據使用者需求,與主機進行通訊或儲存主機的資料。主機介面可為一嵌入式多媒體卡(embedded multimedia card,eMMC)、一安全數位卡(secure digital memory card,SD memory card)、一通用序列匯流排(universal serial bus,USB)介面、一快速周邊元件互連(peripheral component interconnect express,PCIe)介面或一序
列先進技術附件(Serial advanced technology attachment,SATA)介面等,主機介面所連結的主機可以是平板電腦、計算機、行動電話及車用裝置等。
詳細來說,記憶體緩衝區110可用來暫存欲寫入非揮發性記憶體100的資料或從非揮發性記憶體100讀取的資料。錯誤更正碼模組112可對欲儲存在非揮發性記憶體100的資料碼執行錯誤更正操作,並產生相對應的校驗碼,以用於資料碼的錯誤更正。在一實施例中,錯誤更正碼模組112可包含複數個錯誤校正電路,其中每一錯誤校正電路可實現一種錯誤更正碼引擎(ECC engine),並可對資料碼執行一特定錯誤更正操作。在另一實施例中,錯誤更正碼模組112可包含一錯誤校正電路,此錯誤校正電路可實現多種錯誤更正碼引擎,並可對資料碼執行多種錯誤更正操作,處理器116可在多種錯誤更正操作中選擇其中一種錯誤更正操作來進行。上述錯誤更正碼引擎可為任何類型之錯誤更正碼引擎,如博斯-喬赫里-霍克文黑姆代碼(BCH code)或低密度奇偶檢查碼(low-density parity-check code,LDPC code)。壓縮模組114可對校驗碼執行壓縮或解壓縮操作。壓縮校驗碼可使校驗碼以較小的尺寸進行儲存。處理器116可管理記憶體控制器102的各項操作,如讀取/寫入操作以及上述錯誤更正操作及壓縮/解壓縮操作,或是其它快閃記憶體轉換層所指示的基本操作。在本發明部分實施例中,處理器116亦可用來選擇執行欲使用的錯誤更正碼。
請參考第2圖,第2圖為本發明實施例一錯誤更正流程20之示意圖。如第2圖所示,錯誤更正流程20可實現於非揮發性儲存裝置10之記憶體控制器102中,其包含以下步驟:
步驟200:開始。
步驟202:錯誤更正碼模組112對一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼。
步驟204:壓縮模組114壓縮該第一校驗碼,以產生一壓縮校驗碼。
步驟206:錯誤更正碼模組112對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼。
步驟208:處理器116將該資料碼、該壓縮校驗碼及該額外校驗碼寫入非揮發性記憶體100之一記憶體單元。
步驟210:結束。
根據錯誤更正流程20,在資料碼寫入非揮發性記憶體100的記憶體單元之前,資料碼會先由錯誤更正碼模組112執行一第一錯誤更正操作,以產生第一校驗碼。接著,壓縮模組114壓縮第一校驗碼,以產生壓縮校驗碼。錯誤更正碼模組112另針對壓縮校驗碼執行一第二錯誤更正操作,以產生額外校驗碼。最後,處理器116可執行一寫入操作,以將資料碼、壓縮校驗碼及額外校驗碼同時寫入記憶體單元,其中,此記憶體單元可以是具有一寫入單位大小之一記憶體分頁或一部分寫入分頁。值得注意的是,第一錯誤更正操作及第二錯誤更正操作可屬於相同類型但具有不同錯誤更正能力,或屬於不同類型。第一錯誤更正操作及第二錯誤更正操作皆可為錯誤更正碼模組112可實現的任何類型之錯誤更正碼引擎。
請參考第3A圖,第3A圖為本發明實施例將資料碼及校驗碼寫入非揮發性記憶體100之一記憶體單元M1之流程圖。如第3A圖所示,欲寫入記憶體單元M1的資料碼及校驗碼可先儲存於一快取記憶體C1,其中,快取記憶體C1可為記憶體緩衝區110所包含的儲存空間、錯誤更正碼模組112中其它記憶體緩衝區、其它分配予記憶體控制器102的靜態隨機存取記憶體(static random access memory,SRAM)或上述各種儲存空間的組合。資料碼可分割為字碼(code word)CW_1~CW_N(步驟302)。在進行第一錯誤更
正操作之後,可產生對應於字碼CW_1~CW_N之校驗碼ECC_1~ECC_N,校驗碼ECC_1~ECC_N並接續在字碼CW_1~CW_N之後儲存於快取記憶體C1(步驟304)。用來記錄邏輯位址、錯誤更正碼資訊(如使用的錯誤更正碼類型、所使用的錯誤更正碼的錯誤更正能力以及所使用的錯誤更正碼的資料保護方法)及其它相關於資料碼的管理資訊的標頭亦儲存於快取記憶體C1。接著,壓縮模組114可壓縮校驗碼ECC_1~ECC_N,以產生壓縮校驗碼C_ECC,壓縮校驗碼C_ECC可取代校驗碼ECC_1~ECC_N儲存於快取記憶體C1(步驟306)。錯誤更正碼模組112可對壓縮校驗碼C_ECC執行第二錯誤更正操作,以產生額外校驗碼A_ECC,額外校驗碼A_ECC並接續在壓縮校驗碼C_ECC之後儲存於快取記憶體C1(步驟308)。若字碼CW_1~CW_N、壓縮校驗碼C_ECC、額外校驗碼A_ECC及標頭的大小的加總夠小並可填入記憶體單元M1時,上述所有編碼可同時寫入記憶體單元M1(步驟310)。
在一實施例中,記憶體單元M1包含有9k位元組大小的儲存空間,此儲存空間可區分為8k位元組的資料區及1k位元組的備用區,其中,資料區係用來儲存資料碼而備用區係用來儲存校驗碼。針對一般用於資料碼的錯誤更正操作而言,執行錯誤更正碼引擎BCH70可產生976位元組大小的校驗碼,此校驗碼佔用空間較小且足以儲存在備用區。若執行錯誤更正碼引擎BCH90時,會產生1264位元組大小的校驗碼,此校驗碼需佔用較大空間因而無法寫入備用區。
為提升錯誤更正碼的保護能力,並使得對應於等級較高的錯誤更正碼引擎之校驗碼可儲存於備用區,可對校驗碼執行壓縮。在此實施例中,對應於BCH90之1264位元組大小的校驗碼可透過一特定壓縮率(如68%)壓縮為具有873位元組大小的壓縮校驗碼。此壓縮校驗碼另透過錯誤更正碼引擎BCH70進行保護並產生122位元組大小的額外校驗碼。在此情況下,壓
縮校驗碼及額外校驗碼的大小的加總為995位元組,其佔用空間較小並足以儲存在備用區。資料碼可透過BCH90以90位元/1k位元組之錯誤更正能力進行保護,且校驗碼可另透過BCH70進行保護。相較於一般錯誤更正操作僅使用BCH70來保護原來的資料碼(無法使用BCH90,因其相對應的校驗碼較大),本發明之實施例可在原來的資料碼上擁有較高的錯誤更正能力,同時針對校驗碼進行另一層錯誤更正碼保護,上述二階段保護可大幅提升資料碼的可靠度,記憶體單元M1的壽命可因此獲得改善。
值得注意的是,處理器116可根據由校驗碼ECC_1~ECC_N及壓縮校驗碼C_ECC所推算出的壓縮率,判斷記憶體單元M1的儲存空間是否足夠用來儲存字碼CW_1~CW_N、壓縮校驗碼C_ECC及額外校驗碼A_ECC。字碼CW_1~CW_N、壓縮校驗碼C_ECC、額外校驗碼A_ECC及標頭只有在字碼CW_1~CW_N的大小、壓縮校驗碼C_ECC的大小、額外校驗碼A_ECC的大小及標頭的大小的加總小於記憶體單元M1的儲存空間時,才會被寫入記憶體單元M1。由於標頭的大小往往極小且可忽略,因此字碼CW_1~CW_N、壓縮校驗碼C_ECC及額外校驗碼A_ECC的大小須透過較高的壓縮率控制在一定的範圍內,否則針對資料碼及校驗碼所執行的錯誤更正操作之錯誤更正能力會因此而受限。另一方面,若字碼CW_1~CW_N的大小、壓縮校驗碼C_ECC的大小、額外校驗碼A_ECC的大小及標頭的大小的加總大於一記憶體單元的儲存空間時,上述編碼無法被寫入該記憶體單元。在此情況下,錯誤更正碼模組112可採用等級較低的另一錯誤更正碼(如BCH70)來取代等級較高的錯誤更正碼(如BCH90)重新編碼,以對資料碼執行另一錯誤更正操作,由等級較低的錯誤更正碼所產生的校驗碼即可寫入該記憶體單元,以取代上述二階段錯誤更正碼保護策略。
在一實施例中,資料碼及相對應校驗碼的配置亦可透過其它方式
來安排。舉例來說,請參考第3B圖,第3B圖為本發明實施例資料碼及校驗碼寫入非揮發性記憶體100之一記憶體單元M1’之流程圖。如第3B圖所示,欲寫入記憶體單元M1’的資料碼及校驗碼可先儲存於一快取記憶體C1’。資料碼可分割為字碼CW_1’~CW_N’(步驟312),在進行第一錯誤更正操作之後,可產生對應於字碼CW_1’~CW_N’之校驗碼ECC_1’~ECC_N’,校驗碼ECC_1’~ECC_N’並儲存於快取記憶體C1’。不同於第3圖中所有校驗碼ECC_1~ECC_N皆集中在一起並接續在所有字碼CW_1~CW_N之後的配置方式,在快取記憶體C1’中,每一組校驗碼ECC_1’~ECC_N’分別配置在相鄰於其相對應字碼CW_1’~CW_N’的位置(步驟314),標頭則置於接續在第N個字碼CW_N’及第N組校驗碼之後的位置。接著,壓縮模組114對每一組校驗碼ECC_1’~ECC_N’進行壓縮,以分別產生相對應的壓縮校驗碼C_ECC_1~C_ECC_N,壓縮校驗碼C_ECC_1~C_ECC_N並取代每一組校驗碼ECC_1’~ECC_N’儲存於快取記憶體C1’(步驟316)。接著,錯誤更正碼模組112分別對每一組壓縮校驗碼C_ECC_1~C_ECC_N執行第二錯誤更正操作,以產生相對應的額外校驗碼A_ECC_1~A_ECC_N。每一組額外校驗碼A_ECC_1~A_ECC_N係儲存在快取記憶體C1’中相鄰於其相對應壓縮校驗碼C_ECC_1~C_ECC_N的位置(步驟318)。若字碼CW_1’~CW_N’、壓縮校驗碼C_ECC_1~C_ECC_N、額外校驗碼A_ECC_1~A_ECC_N及標頭的大小的加總較小並足以填入記憶體單元M1’時,上述所有編碼可同時寫入記憶體單元M1’(步驟320)。
如上所述,字碼、壓縮校驗碼及額外校驗碼可透過任何方式在記憶體單元中進行配置,而不限於此。更進一步地,欲儲存於非揮發性記憶體100之資料碼在進行錯誤更正及壓縮等操作之前,也可能不先分割為多個字碼。換句話說,記憶體單元(例如一部分寫入分頁)可能僅包含一字碼,因此僅產生一組壓縮校驗碼及一組額外校驗碼。
值得注意的是,在錯誤更正流程20之步驟204中,壓縮操作只針對第一校驗碼進行,而並未對資料碼進行。這是因為使用者儲存在非揮發性記憶體100的資料通常是已壓縮過的資料,特別是在使用者資料包含有多媒體內容(例如音樂檔案、圖片或影像檔案)的情況下。由於這些檔案已經歷過壓縮,再進行另一次壓縮的話往往無法產生良好的壓縮效果。若壓縮操作係針對已經歷過壓縮的資料碼及第一校驗碼的結合進行,同樣會使壓縮效果不佳,進而造成壓縮校驗碼及額外校驗碼的編碼量大幅增加,造成無法寫入記憶體單元的可能性提高。
請參考第4圖,第4圖為本發明實施例一錯誤更正流程40之示意圖。如第4圖所示,錯誤更正流程40可實現於非揮發性儲存裝置10之記憶體控制器102中,其包含以下步驟:
步驟400:開始。
步驟402:將非揮發性記憶體100之一記憶體單元分割為一資料區及一備用區。
步驟404:將一第一資料碼分割為N個字碼。
步驟406:對該N個字碼執行一第一錯誤更正操作,以分別產生N組第一校驗碼。
步驟408:分配該資料區中N個部分來儲存該N個字碼,並分配該備用區中N個部分來儲存該N組第一校驗碼,其中,該備用區之該N個部分中每一部分的大小不小於一數值,該數值係根據對該N個字碼中任一字碼執行一第二錯誤更正操作所產生的一第二校驗碼的大小而決定。
步驟410:結束。
根據錯誤更正流程40,非揮發性記憶體100之記憶體單元先被分
割為一資料區及一備用區,且儲存於資料區的資料碼被分割為N個字碼。接著,錯誤更正碼模組112對N個字碼執行第一錯誤更正操作,以產生N組分別對應於N個字碼之第一校驗碼。最後,資料區被分割為N個部分,以儲存N個字碼,而備用區被分割為N個部分,以儲存N組第一校驗碼。
值得注意的是,備用區之N個部分中每一部分的大小皆不小於一數值,此數值可根據對N個字碼中任一字碼執行第二錯誤更正操作所產生之第二校驗碼而決定。更具體而言,此數值可能等於或大於對N個字碼中任一字碼執行第二錯誤更正操作所產生之第二校驗碼的大小,其中,第二錯誤更正操作被預期在未來執行。一般來說,當新的非揮發性記憶體開始使用時,一記憶體單元中存在較少錯誤位元,因此,使用具有較低錯誤更正能力之錯誤更正碼即足以保護記憶體單元。在經歷多次讀取/寫入操作之後,記憶體單元之位元錯誤率會高於剛開始使用的狀態,因而需要較高錯誤更正能力之錯誤更正碼來進行保護。因此,在非揮發性記憶體開始使用時,盡可能先使用等級較低的錯誤更正碼(如BCH40),並且在錯誤位元數量超過一臨界值之後,改採用等級較高的錯誤更正碼(如BCH70)。在此情況下,即使開始使用時僅採用等級較低的錯誤更正碼並產生數量較少的校驗碼,非揮發性記憶體100可針對N個字碼中每一字碼保留更多儲存空間,此儲存空間可用於預期在未來使用的等級較高的錯誤更正碼所產生之校驗碼。換句話說,每一組第二校驗碼的大小應大於每一組第一校驗碼的大小,且第二錯誤操作之錯誤更正能力應高於第一錯誤更正操作之錯誤更正能力。
請參考第5圖,第5圖為本發明實施例在一記憶體單元M2中根據具有較高錯誤更正能力之錯誤更正操作所對應的校驗碼來保留儲存空間之流程圖。如第5圖所示,記憶體單元(步驟502)被分割為一資料區D1及一備用區S1(步驟504)。資料區D1係儲存字碼CW_x及CW_y,透過錯誤更
正碼引擎BCH40,字碼CW_x及CW_y分別以儲存於備用區S1之校驗碼ECC_x及ECC_y進行保護。每一組校驗碼ECC_x及ECC_y各需要70位元組的儲存空間。記憶體單元M2亦具有一標頭,但由於標頭極小,在不影響本實施例的說明之下略而未示。
為因應等級較高的錯誤更正碼,可針對每一字碼保留更多儲存空間。舉例來說,當記憶體單元M2中錯誤位元的數量超過一臨界值之後,可預期記憶體單元M2將採用錯誤更正碼引擎BCH70來進行保護。錯誤更正碼引擎BCH70需要使用122位元組大小的校驗碼ECC_x’及ECC_y’來分別修正每一組字碼CW_x及CW_y,因此,接續在70位元組大小的校驗碼ECC_x及ECC_y之後皆預留額外52位元組大小的儲存空間(步驟506)。當記憶體單元M2中錯誤位元的數量超過臨界值之後,記憶體單元M2改採用錯誤更正碼BCH70取代BCH40。因此,對應於BCH70之校驗碼ECC_x’及ECC_y’可分別取代校驗碼ECC_x及ECC_y儲存在所預留的122位元組大小的儲存空間(步驟508)。
請參考第6圖,第6圖為上述實施例之記憶體單元M2與一般採用等級較低的錯誤更正操作(如BCH40)之記憶體單元的比較之示意圖。如第6圖所示,在使用BCH40的情況下,一般記憶體單元會依序填入字碼CW_x、CW_y及校驗碼ECC_x、ECC_y,而多餘的儲存空間會保留在校驗碼ECC_y之後,以用於其它等級較高的錯誤更正操作(如BCH70)。在此情況下,每一次在此記憶體單元上執行寫入操作時,用來儲存字碼CW_x、CW_y及校驗碼ECC_x、ECC_y之儲存空間中的記憶胞(memory cell)皆會經歷某種程度的損耗,而位於多餘儲存空間中的記憶胞所經歷的損耗較小。因此,在此記憶體單元中,相較於的其它區域,該多餘儲存空間往往較為健康。當錯誤位元的數量超過一預定值而改用BCH70取代BCH40之後,此記憶體單元改
為依序填入字碼CW_x、CW_y及校驗碼ECC_x、ECC_y’。在此情況下,較健康的儲存空間往往被用來儲存校驗碼ECC_y’。因此,相較於儲存校驗碼ECC_y’之記憶胞而言,儲存校驗碼ECC_x’之記憶胞通常具有較差的健康狀態,使得用於字碼CW_x之錯誤更正碼具有較差的錯誤更正能力。
相較之下,在上述實施例的記憶體單元M2中,在使用等級較低的錯誤更正操作(如BCH40)時,接續在每一組校驗碼ECC_x及ECC_y之後皆預留一儲存空間,以用於等級較高的錯誤更正操作(如BCH70)。未儲存對應於BCH40之校驗碼ECC_x及ECC_y的預留儲存空間可填入對記憶體單元造成最小傷害的資料碼(例如0xFF)。在此情況下,每一次在記憶體單元M2上執行寫入操作時,用來儲存字碼CW_x、CW_y及校驗碼ECC_x、ECC_y之儲存空間中的記憶胞皆會經歷某種程度的損耗,而位於預留儲存空間中的記憶胞所經歷的損耗較小。因此,相較於記憶體單元M2中其它儲存區域,此預留儲存空間往往較為健康。當錯誤位元的數量超過一預定值而改用BCH70取代BCH40之後,記憶體單元M2改為依序填入字碼CW_x、CW_y及校驗碼ECC_x’、ECC_y’。在此情況下,較健康的儲存空間可平均分配至校驗碼ECC_x’及ECC_y’。因此,儲存校驗碼ECC_x’之記憶胞的健康狀態通常會等於或接近於儲存該校驗碼ECC_y’之記憶胞的健康狀態,使得用於字碼CW_x及CW_y之錯誤更正碼具有一致的錯誤修正能力。此錯誤修正能力會高於前述一般記憶體單元中用於字碼CW_x之錯誤修正能力(因一般記憶體單元中字碼CW_x是由健康狀態較差的校驗碼所保護),進而改善記憶體單元M2的壽命。
值得注意的是,本發明提供了一種在非揮發性記憶體中處理錯誤更正碼的方法,其可透過適當地安排錯誤更正碼來提升非揮發性記憶體的壽命。本領域具通常知識者當可據以進行修飾或變化,而不限於此。舉例來說,
在第5圖及第6圖所繪示的實施例中,記憶體單元M2儲存二個字碼。在另一實施例中,一記憶體單元可儲存任何數量的字碼,且較健康的儲存空間可平均分配至每一字碼所對應的校驗碼。若字碼的數量較大時,健康儲存空間可達到更均勻的分配,使得非揮發性記憶體的壽命獲得更大的改善。除此之外,亦可針對第3A圖中的額外校驗碼A_ECC及第3B圖中的額外校驗碼A_ECC_1~A_ECC_N預留儲存空間,以提供壓縮校驗碼C_ECC執行具有較高錯誤更正能力的錯誤更正操作時所需的更多額外校驗碼A_ECC來使用。除此之外,本發明實施例中的記憶體單元可適應於任何類型之錯誤更正碼引擎,並可使用任何類型之壓縮技術,而不限於此。
需注意,在本發明之實施例中,資料區及備用區可能不分配在二單獨區間。請參考第7圖,第7圖為本發明實施例一記憶體單元M3中一資料區D2及一備用區S2的配置之示意圖。如第7圖所示,資料區D2及備用區S2皆可分割為N個部分,並以交替方式配置。資料區D2之N個部分分別用來儲存字碼CW_1~CW_N,而備用區S2之N個部分分別用來儲存相對應於字碼CW_1~CW_N之校驗碼ECC_1~ECC_N。備用區S2之N個部分中每一部分另包含一保留儲存空間,此保留儲存空間係針對預期被使用之具有較高錯誤更正能力的另一錯誤更正操作所需的校驗碼而預留。此配置方式亦可結合第5圖所繪示的錯誤更正碼處理方法。關於記憶體單元M3中處理錯誤更正碼的詳細運作方式可參考上述說明,於此不贅述。
綜上所述,在非揮發性記憶體執行多次寫入/清除之後,位元錯誤率往往會隨之而上升,因此需採用具有更高錯誤更正能力的錯誤更正碼。在此情況下,需要數量更多的校驗碼來進行錯誤更正,但非揮發性記憶體內部用來儲存校驗碼的空間有限。因此,本發明提供了一種在非揮發性記憶體中處理錯誤更正碼的方法,其可藉由適當地使用錯誤更正碼,同時使校驗碼
有效地儲存在非揮發性記憶體的有限儲存空間中,進而提升非揮發性記憶體的壽命。在一實施例中,一種二階段錯誤更正碼保護方法提供了用於資料碼的較高錯誤更正能力,同時針對壓縮過後的校驗碼提供了另一層錯誤更正碼保護。在另一實施例中,針對預期在未來執行具有較高錯誤更正能力之錯誤更正操作時所需的校驗碼,每一字碼皆預留一儲存空間,使得較健康的儲存空間可平均分配至每一組校驗碼。非揮發性記憶體的壽命可因此獲得改善。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
20‧‧‧錯誤更正流程
200~210‧‧‧步驟
Claims (20)
- 一種在一非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC)之方法,包含有:對一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼;壓縮該第一校驗碼,以產生一壓縮校驗碼;對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼;以及將該資料碼、該壓縮校驗碼及該額外校驗碼寫入該非揮發性記憶體之一記憶體單元。
- 如請求項1所述之方法,另包含有:當該資料碼的大小、該壓縮校驗碼的大小及該額外校驗碼的大小的加總過大以至於無法寫入該記憶體單元時,將該資料碼及一第二校驗碼寫入該記憶體單元;其中,該第二校驗碼係透過一第三錯誤更正操作所產生,該第三錯誤更正操作之錯誤更正能力低於該第一錯誤更正操作之錯誤更正能力。
- 如請求項1所述之方法,其中該記憶體單元為一記憶體分頁或該非揮發性記憶體之一部分寫入分頁。
- 如請求項1所述之方法,其中該第一錯誤更正操作與該第二錯誤更正操作屬於相同類型但具有不同錯誤更正能力,或該第一錯誤更正操作與該第二錯誤更正操作屬於不同類型。
- 如請求項1所述之方法,另包含有:根據該壓縮校驗碼之一壓縮率,判斷該記憶體單元是否夠大且足以儲存該資料碼、該壓縮校驗碼及該額外校驗碼。
- 一種非揮發性儲存裝置,包含有:一非揮發性記憶體;以及一記憶體控制器,耦接於該非揮發性記憶體,用來在該非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC),該記憶體控制器包含有:一記憶體緩衝區;一錯誤更正碼模組,用來對儲存於該記憶體緩衝區之一資料碼執行一第一錯誤更正操作,以產生一第一校驗碼;一壓縮模組,用來壓縮該第一校驗碼,以產生一壓縮校驗碼,其中,該錯誤更正碼模組另對該壓縮校驗碼執行一第二錯誤更正操作,以產生一額外校驗碼;以及一處理器,用來將該資料碼、該壓縮校驗碼及該額外校驗碼寫入該非揮發性記憶體之一記憶體單元。
- 如請求項6所述之非揮發性儲存裝置,其中當該資料碼的大小、該壓縮校驗碼的大小及該額外校驗碼的大小的加總過大以至於無法寫入該記憶體單元時,該處理器另將該資料碼及一第二校驗碼寫入該記憶體單元;其中,該第二校驗碼係透過一第三錯誤更正操作所產生,該第三錯誤更正操作之錯誤更正能力低於該第一錯誤更正操作之錯誤更正能力。
- 如請求項6所述之非揮發性儲存裝置,其中該記憶體單元為一記憶體分頁或該非揮發性記憶體之一部分寫入分頁。
- 如請求項6所述之非揮發性儲存裝置,其中該第一錯誤更正操作與該第二錯誤更正操作屬於相同類型但具有不同錯誤更正能力,或該第一錯誤 更正操作與該第二錯誤更正操作屬於不同類型。
- 如請求項6所述之非揮發性儲存裝置,其中該處理器另根據該壓縮校驗碼之一壓縮率,判斷該記憶體單元是否夠大且足以儲存該資料碼、該壓縮校驗碼及該額外校驗碼。
- 一種在一非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC)之方法,包含有:將該非揮發性記憶體之一記憶體單元分割為一資料區及一備用區;將一第一資料碼分割為N個字碼(code word);對該N個字碼執行一第一錯誤更正操作,以分別產生N組第一校驗碼;以及分配該資料區中N個部分來儲存該N個字碼,並分配該備用區中N個部分來儲存該N組第一校驗碼;其中,該備用區之該N個部分中每一部分的大小不小於一數值,該數值係根據對該N個字碼中任一字碼執行一第二錯誤更正操作所產生的一第二校驗碼的大小而決定。
- 如請求項11所述之方法,其中該數值大於該N組第一校驗碼中每一組第一校驗碼的大小,且該方法另包含有:將對該記憶體單元造成最小傷害的一第二資料碼寫入該備用區之該N個部分中每一部分的一剩餘儲存空間。
- 如請求項12所述之方法,其中該剩餘儲存空間為未儲存該N組第一校驗碼中任一第一校驗碼之一儲存空間。
- 如請求項11所述之方法,其中該數值等於該第二校驗碼的大小。
- 如請求項11所述之方法,其中該第二錯誤更正操作之錯誤更正能力高於該第一錯誤更正操作之錯誤更正能力。
- 一種非揮發性儲存裝置,包含有:一非揮發性記憶體,包含有一記憶體單元,該記憶體單元被分割為一資料區及一備用區;以及一記憶體控制器,耦接於該非揮發性記憶體,藉由執行以下步驟以在該非揮發性記憶體中處理錯誤更正碼(Error Correcting Code,ECC):將一第一資料碼分割為N個字碼(code word);對該N個字碼執行一第一錯誤更正操作,以分別產生N組第一校驗碼;以及分配該資料區中N個部分來儲存該N個字碼,並分配該備用區中N個部分來儲存該N組第一校驗碼;其中,該備用區之該N個部分中每一部分的大小不小於一數值,該數值係根據對該N個字碼中任一字碼執行一第二錯誤更正操作所產生的一第二校驗碼的大小而決定。
- 如請求項16所述之非揮發性儲存裝置,其中該數值大於該N組第一校驗碼中每一組第一校驗碼的大小,且該記憶體控制器另執行以下步驟,以在該非揮發性記憶體中處理錯誤更正碼:將對該記憶體單元造成最小傷害的一第二資料碼寫入該備用區之該N個部分中每一部分的一剩餘儲存空間。
- 如請求項17所述之非揮發性儲存裝置,其中該剩餘儲存空間為未儲存該 N組第一校驗碼中任一第一校驗碼之一儲存空間。
- 如請求項16所述之非揮發性儲存裝置,其中該數值等於該第二校驗碼的大小。
- 如請求項16所述之非揮發性儲存裝置,其中該第二錯誤更正操作之錯誤更正能力高於該第一錯誤更正操作之錯誤更正能力。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/289,627 US20150349805A1 (en) | 2014-05-28 | 2014-05-28 | Method of Handling Error Correcting Code in Non-volatile Memory and Non-volatile Storage Device Using the Same |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201545167A true TW201545167A (zh) | 2015-12-01 |
Family
ID=54702986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103131561A TW201545167A (zh) | 2014-05-28 | 2014-09-12 | 在非揮發性記憶體中處理錯誤更正碼的方法及其非揮發性儲存裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150349805A1 (zh) |
CN (1) | CN105206306A (zh) |
TW (1) | TW201545167A (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9602243B2 (en) * | 2014-08-26 | 2017-03-21 | Electronics And Telecommunications Research Institute | Low density parity check encoder, and low density parity check encoding method using the same |
US9378049B1 (en) | 2015-02-12 | 2016-06-28 | Amazon Technologies, Inc. | Servicing I/O requests in an I/O adapter device |
US10049001B1 (en) * | 2015-03-27 | 2018-08-14 | Amazon Technologies, Inc. | Dynamic error correction configuration |
US9886405B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Low latency write requests over a network using a pipelined I/O adapter device |
US9940284B1 (en) | 2015-03-30 | 2018-04-10 | Amazon Technologies, Inc. | Streaming interconnect architecture |
US9864538B1 (en) | 2015-06-25 | 2018-01-09 | Amazon Technologies, Inc. | Data size reduction |
KR20170011645A (ko) * | 2015-07-23 | 2017-02-02 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법 |
US10346074B2 (en) * | 2015-11-22 | 2019-07-09 | Synamedia Limited | Method of compressing parity data upon writing |
US11635894B2 (en) * | 2018-03-16 | 2023-04-25 | Micron Technology, Inc. | Clustered parity for NAND data placement schema |
EP3766070A4 (en) | 2018-03-16 | 2021-10-27 | Micron Technology, Inc. | PLACEMENT SCHEME FOR NAND DATA |
US10990472B2 (en) * | 2018-07-24 | 2021-04-27 | Micron Technology, Inc. | Spare substitution in memory system |
TWI703438B (zh) * | 2018-09-11 | 2020-09-01 | 慧榮科技股份有限公司 | 映射表更新方法 |
TWI712268B (zh) * | 2018-11-14 | 2020-12-01 | 慧榮科技股份有限公司 | 快閃記憶體控制器及其中的編碼電路與解碼電路 |
TWI740187B (zh) * | 2019-02-20 | 2021-09-21 | 慧榮科技股份有限公司 | 存取方法 |
KR20210034711A (ko) * | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법 |
JP2023039212A (ja) * | 2021-09-08 | 2023-03-20 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN116257383A (zh) * | 2021-12-09 | 2023-06-13 | 华为技术有限公司 | 一种数据纠错方法、装置、内存控制器及系统 |
US20240168844A1 (en) * | 2022-11-22 | 2024-05-23 | Silicon Storage Technology, Inc. | Grouping and error correction for non-volatile memory cells |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560918B1 (en) * | 2009-04-21 | 2013-10-15 | Marvell International Ltd. | Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system |
KR20110073932A (ko) * | 2009-12-24 | 2011-06-30 | 주식회사 하이닉스반도체 | Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법 |
CN103546161A (zh) * | 2013-10-31 | 2014-01-29 | 江苏引跑网络科技有限公司 | 基于二进制位处理的无损压缩方法 |
-
2014
- 2014-05-28 US US14/289,627 patent/US20150349805A1/en not_active Abandoned
- 2014-09-12 TW TW103131561A patent/TW201545167A/zh unknown
- 2014-10-23 CN CN201410571642.7A patent/CN105206306A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN105206306A (zh) | 2015-12-30 |
US20150349805A1 (en) | 2015-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201545167A (zh) | 在非揮發性記憶體中處理錯誤更正碼的方法及其非揮發性儲存裝置 | |
CN107133122B (zh) | 存储器控制方法 | |
KR101730510B1 (ko) | 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 | |
US8671330B2 (en) | Storage device, electronic device, and data error correction method | |
US8732553B2 (en) | Memory system and control method thereof | |
US10347349B2 (en) | Method and device for fail-safe erase of flash memory | |
US9583217B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10103748B2 (en) | Decoding method, memory control circuit unit and memory storage device | |
CN107678695B (zh) | 基于可用存储器空间选择冗余存储配置 | |
US9336081B2 (en) | Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access | |
US10062418B2 (en) | Data programming method and memory storage device | |
TW201346550A (zh) | 實體頁、邏輯頁及碼字對應 | |
US9507658B2 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
US10782920B2 (en) | Data access method, memory storage apparatus and memory control circuit unit | |
US20140337681A1 (en) | Data writing method, memory storage device, and memory controller | |
US9720609B1 (en) | Data protecting method, memory control circuit unit and memory storage device | |
US9043672B2 (en) | Memory controller, storage device, and memory control method | |
US11907059B2 (en) | Abnormal power loss recovery method, memory control circuit unit, and memory storage device | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
US10447314B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI467590B (zh) | 資料處理方法、記憶體控制器及記憶體儲存裝置 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US10997067B2 (en) | Data storing method, memory controlling circuit unit and memory storage device | |
WO2020028801A1 (en) | Error correction with scatter-gather list data management | |
US11101822B1 (en) | Data writing method, memory control circuit unit and memory storage apparatus |