TWI512732B - 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 - Google Patents
解碼方法、記憶體儲存裝置與非揮發性記憶體模組 Download PDFInfo
- Publication number
- TWI512732B TWI512732B TW102131273A TW102131273A TWI512732B TW I512732 B TWI512732 B TW I512732B TW 102131273 A TW102131273 A TW 102131273A TW 102131273 A TW102131273 A TW 102131273A TW I512732 B TWI512732 B TW I512732B
- Authority
- TW
- Taiwan
- Prior art keywords
- bits
- bit
- control circuit
- error
- check
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- 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/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
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)
Description
本發明是有關於一種解碼方法,且特別是有關於低密度奇偶檢查碼的解碼方法、記憶體儲存裝置與記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,寫入至可複寫式非揮發性記憶體模組的資料會經過一個通道編碼。藉此,當從可複寫式非揮發性記憶體模組中讀取資料時,有機會回復這些資料中的錯誤。若此通道編碼所使用的是低密度奇偶檢查碼,則從可複寫式非揮發性記憶體模組所讀取的資料會經過一個迭代解碼。此迭代解碼是用以更新一個位元的可靠度。當資料中的錯誤越多時,則迭代解碼所需要的迭
代次數就會越多。然而,迭代次數越多則表示解碼的速度越慢。因此,如何增加解碼的速度,為此領域技術人員所關心的議題。
本發明提供一種解碼方法、記憶體儲存裝置與可複寫式非揮發性記憶體模組,可以增加解碼的速度。
本發明一範例實施例提出一種解碼方法,用於一可複寫式非揮發性記憶體模組。此解碼方法包括:根據第一讀取電壓從可複寫式非揮發性記憶體模組中讀取多個位元;對這些位元執行低密度奇偶檢查演算法的一奇偶檢查以取得多個校驗子,其中每一個位元是對應至至少一個校驗子;根據校驗子判斷這些位元是否具有至少一個第一錯誤;若位元具有第一錯誤,根據每一個位元所對應的校驗子來取得每一個位元的校驗權重;根據每一個位元的校驗權重來取得每一個位元的第一初始值;以及,根據第一初始值對這些位元執行低密度奇偶檢查演算法的第一迭代解碼。
在一範例實施例中,上述根據每一個位元所對應的校驗子來取得每一個位元的校驗權重的步驟包括:將每一個位元所對應的校驗子相加以取得每一個位元的校驗權重。
在一範例實施例中,上述根據每一個位元的校驗權重來取得每一個位元的第一初始值的步驟包括:執行第一程序。此第一程序包括:設定多個第一區間,並且設定每一個第一區間是對應至第一錯誤級別;判斷每一個位元的校驗權重是在哪一個第一
區間以取得對應的第一錯誤級別;以及將每一個位元的值乘上對應的第一錯誤級別以取得每一個位元的第一初始值。
在一範例實施例中,上述位元包括第一位元。若第一位元為位元”0”,則第一位元的值被設定為大於0。若第一位元為位元”1”,則第一位元的值被設定為小於0。
在一範例實施例中,上述設定第一區間與第一錯誤級別的步驟包括:若第一區間內的數值越大,設定第一區間所對應的第一錯誤級別越小。
在一範例實施例中,上述根據每一個位元的校驗權重來取得每一個位元的第一初始值的步驟更包括:累加校驗子以取得一錯誤個數;判斷錯誤個數是否符合一門檻值;若錯誤個數符合門檻值,執行第一程序;若錯誤個數不符合門檻值,執行第二程序。此第二程序包括:設定多個第二區間,並且設定每一個第二區間是對應至第二錯誤級別,其中第二錯誤級別不同於第一錯誤級別;判斷每一個位元的校驗權重是哪一個第二區間以取得對應的第二錯誤級別;將每一個位元的值乘上對應的第二錯誤級別以取得每一個位元的第一初始值。
在一範例實施例中,上述的可複寫式非揮發性記憶體模組包括多個實體程式化單元,並且上述的位元是從第一實體程式化單元所讀取。此解碼方法更包括:在執行第一迭代解碼後,對第一迭代解碼的一解碼結果執行奇偶檢查以判斷解碼結果是否存在第二錯誤。若解碼結果存在第二錯誤,執行下列步驟:根據多
個第二讀取電壓從第一實體程式化單元中讀取每一個位元的多個讀取資訊;根據每一個位元的讀取資訊取得每一個位元的第二初始值;以及根據第二初始值對上述的位元執行低密度奇偶檢查演算法的第二迭代解碼。
在一範例實施例中,上述的位元中至少三個位元的第一初始值彼此不相同。
本發明一範例實施例提出一種記憶體儲存裝置,包括連接介面單元、可複寫式非揮發性記憶體模組與記憶體控制電路單元。連接介面單元是用以耦接至一主機系統。記憶體控制電路單元是耦接至連接介面單元與可複寫式非揮發性記憶體模組,用以根據第一讀取電壓從可複寫式非揮發性記憶體模組中讀取多個位元。記憶體控制電路單元也用以對這些位元執行低密度奇偶檢查演算法的奇偶檢查以取得多個校驗子,其中每一個位元是對應至至少一個校驗子。記憶體控制電路單元也用以根據校驗子判斷這些位元是否具有第一錯誤。若位元具有第一錯誤,記憶體控制電路單元用以根據每一個位元所對應的校驗子來取得每一個位元的一校驗權重。記憶體控制電路單元也用以根據每一個位元的校驗權重來取得每一個位元的第一初始值。記憶體控制電路單元還用以根據第一初始值對這些位元執行低密度奇偶檢查演算法的第一迭代解碼。
在一範例實施例中,上述的記憶體控制電路單元是將每一個位元所對應的校驗子相加以取得每一個位元的校驗權重。
在一範例實施例中,上述記憶體控制電路單元根據每一個位元的校驗權重來取得每一個位元的第一初始值的操作包括:記憶體控制電路單元執行上述的第一程序。
在一範例實施例中,上述記憶體控制電路單元設定第一區間與第一錯誤級別的步驟包括:若第一區間內的數值越大,記憶體控制電路單元設定第一區間所對應的第一錯誤級別越小。
在一範例實施例中,上述記憶體控制電路單元根據每一個位元的校驗權重來取得每一個位元的第一初始值的操作更以下操作。記憶體控制電路單元累加校驗子以取得一錯誤個數。記憶體控制電路單元判斷錯誤個數是否符合一門檻值。若錯誤個數符合門檻值,記憶體控制電路單元執行上述的第一程序。若錯誤個數不符合門檻值,記憶體控制電路單元執行上述的第二程序。
在一範例實施例中,上述記憶體控制電路單元更用以在執行第一迭代解碼後,對第一迭代解碼的一解碼結果執行奇偶檢查以判斷解碼結果是否存在第二錯誤。若解碼結果存在第二錯誤,記憶體控制電路單元更用以執行下列步驟:根據多個第二讀取電壓從第一實體程式化單元中讀取每一個位元的多個讀取資訊;根據每一個位元的讀取資訊取得每一個位元的第二初始值;以及根據第二初始值對這些位元執行低密度奇偶檢查演算法的第二迭代解碼。
本發明一範例實施例提出一種可複寫式非揮發性記憶體模組,包括記憶胞陣列與控制電路。控制電路耦接至記憶胞陣列,
用以根據第一讀取電壓從記憶胞陣列中讀取多個位元,並且對這些位元執行低密度奇偶檢查演算法的奇偶檢查以取得多個校驗子。其中每一個位元是對應至至少一個校驗子。控制電路也用以根據校驗子判斷這些位元是否具有第一錯誤。若位元具有第一錯誤,控制電路用以根據每一個位元所對應的校驗子來取得每一個位元的一校驗權重,根據每一個位元的校驗權重來取得每一個位元的第一初始值,並且根據第一初始值對這些位元執行低密度奇偶檢查演算法的第一迭代解碼。
在一範例實施例中,上述的控制電路也用以將每一個位元所對應的校驗子相加以取得每一個位元的校驗權重。
在一範例實施例中,上述控制電路根據每一個位元的校驗權重來取得每一個位元的第一初始值的操作包括:控制電路用以執行上述的第一程序。
在一範例實施例中,上述控制電路設定第一區間與第一錯誤級別的操作包括:若第一區間內的數值越大,控制電路設定第一區間所對應的第一錯誤級別越小。
在一範例實施例中,上述的控制電路也用以累加校驗子以取得一錯誤個數,判斷錯誤個數是否符合一門檻值。若錯誤個數符合門檻值,控制電路執行第一程序。若錯誤個數不符合門檻值,控制電路執行上述的第二程序。
在一範例實施例中,上述的記憶胞陣列包括多個實體程式化單元,並且上述的位元是從第一實體程式化單元所讀取。控
制電路更用以在執行第一迭代解碼後,對第一迭代解碼的一解碼結果執行奇偶檢查以判斷解碼結果是否存在第二錯誤。若解碼結果存在第二錯誤,控制電路更用以根據多個第二讀取電壓從第一實體程式化單元中讀取每一個位元的多個讀取資訊。控制電路更用以根據每一個位元的讀取資訊取得每一個位元的第二初始值,並且根據第二初始值對位元執行低密度奇偶檢查演算法的第二迭代解碼。
基於上述,本發明範例實施例提出的解碼方法、記憶體
儲存裝置與可複寫式非揮發性記憶體模組,可以根據不同的校驗權重來取得不同的初始值,使得迭代解碼的迭代次數會減少,進而增加解碼的速度。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
1000‧‧‧主機系統
1100‧‧‧電腦
1102‧‧‧微處理器
1104‧‧‧隨機存取記憶體
1106‧‧‧輸入/輸出裝置
1108‧‧‧系統匯流排
1110‧‧‧資料傳輸介面
1202‧‧‧滑鼠
1204‧‧‧鍵盤
1206‧‧‧顯示器
1208‧‧‧印表機
1212‧‧‧隨身碟
1214‧‧‧記憶卡
1216‧‧‧固態硬碟
1310‧‧‧數位相機
1312‧‧‧SD卡
1314‧‧‧MMC卡
1316‧‧‧記憶棒
1318‧‧‧CF卡
1320‧‧‧嵌入式儲存裝置
100‧‧‧記憶體儲存裝置
102‧‧‧連接介面單元
104‧‧‧記憶體控制電路單元
106‧‧‧可複寫式非揮發性記憶體模組
304(0)~304(R)‧‧‧實體抹除單元
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
252‧‧‧緩衝記憶體
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
400‧‧‧奇偶檢查矩陣
510、520‧‧‧分佈
530、701~705‧‧‧讀取電壓
540‧‧‧重疊區域
610‧‧‧碼字
620‧‧‧校驗向量
V0
~V7
‧‧‧位元
S0
~S2
‧‧‧校驗子
S801~S807‧‧‧步驟
902‧‧‧記憶胞陣列
904‧‧‧字元線控制電路
906‧‧‧位元線控制電路
908‧‧‧行解碼器
910‧‧‧資料輸入/輸出緩衝器
912‧‧‧控制電路
922‧‧‧記憶胞
924‧‧‧位元線
926‧‧‧字元線
928‧‧‧共用源極線
930‧‧‧選擇閘汲極電晶體
932‧‧‧選擇閘源極電晶體
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖3是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。
圖4是根據一範例實施例繪示奇耦檢查矩陣的示意圖。
圖5是根據一範例實施例繪示根據一個讀取電壓來讀取可複寫式非揮發性記憶體模組的範例示意圖。
圖6是根據一範例實施例繪示矩陣相乘的示意圖。
圖7是根據一範例實施例繪示根據多個讀取電壓來讀取可複寫式非揮發性記憶體模組的範例示意圖。
圖8是根據一範例實施例繪示解碼方法的流程圖。
圖9A是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。
圖9B是根據一範例實施例所繪示的記憶胞陣列的概要電路圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖1B的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
一般而言,主機系統1000為可實質地與記憶體儲存裝置
100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包
括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
請參照圖2,記憶體儲存裝置100包括連接介面單元102、記憶體控制電路單元104與可複寫式非揮發性記憶體模組106。
在本範例實施例中,連接介面單元102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。連接介面單元102可與記憶體控制電路
單元104封裝在一個晶片中,或者連接介面單元102是佈設於一包含記憶體控制電路單元104之晶片外。
記憶體控制電路單元104用以執行以硬體型式或韌體型
式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制
電路單元104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106具有實體抹除單元304(0)~304(R)。
例如,實體抹除單元304(0)~304(R)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體抹除單元分別具有複數個實體程式化單元,並且屬於同一個實體抹除單元之實體程式化單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。
更具體來說,每一個實體抹除單元包括多條字元線與多
條位元線,每一條字元線與每一位元線交叉處配置有一個記憶胞。每一個記憶胞可儲存一或多個位元。在同一個實體抹除單元中,所有的記憶胞會一起被抹除。在此範例實施例中,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊。另一
方面,同一條字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一條字元線上的實體程式化單元可被分類為下實體程式化單元與上實體程式化單元。一般來說,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度。在此範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。
例如,實體程式化單元為實體頁面或是實體扇(sector)。若實體程式化單元為實體頁面,則每一個實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體扇,用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤更正碼)。在本範例實施例中,每一個資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,本發明並不限制實體扇的大小以及個數。
在本範例實施例中,可複寫式非揮發性記憶體模組106為單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組,即一個記憶胞中可儲存1個位元。然而,本發明不限於此,可複寫式非揮發性記憶體模組106亦可是多階記憶胞(Multi LevelCell,MLC)NAND型快閃記憶體模組、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖3是根據一範例實施例所繪示之記憶體控制電路單元
的概要方塊圖。
請參照圖3,記憶體控制電路單元104包括記憶體管理電路202、主機介面204與記憶體介面206。
記憶體管理電路202用以控制記憶體控制電路單元104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路202的操作時,等同於說明記憶體控制電路單元104的操作,以下並不再贅述。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元104被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組106中之控制指令載入至記憶體管理電路202
的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元。記憶體管理單元、記憶體寫入單元、記憶體讀取單元、記憶體抹除單元與資料處理單元是耦接至微控制器。其中,記憶體管理單元用以管理可複寫式非揮發性記憶體模組106的實體抹除單元;記憶體寫入單元用以對可複寫式非揮發性記憶體模組106下達寫入指令以將資料寫入至可複寫式非揮發性記憶體模組106中;記憶體讀取單元用以對可複寫式非揮發性記憶體模組106下達讀取指令以從可複寫式非揮發性記憶體模組106中讀取資料;記憶體抹除單元用以對可複寫式非揮發性記憶體模組106下達抹除指令以將資料從可複寫式非揮發性記憶體模組106中抹除;而資料處理單元用以處理欲寫入至可複寫式非揮發性記憶體模組106的資料以及從可複寫式非揮發性記憶體模組106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可
以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體模組106。也就是說,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
在本發明一範例實施例中,記憶體控制電路單元104還包括緩衝記憶體252、電源管理電路254與錯誤檢查與校正電路256。
緩衝記憶體252是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組106的資料。
電源管理電路254是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路256是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路256會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC code),並且記憶體管理電路202會將對應此寫入指令的資料與對應的錯誤更正碼寫入
至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤更正碼,並且錯誤檢查與校正電路256會依據此錯誤更正碼對所讀取的資料執行錯誤檢查與校正程序。
在此範例實施例中,錯誤檢查與校正電路256所使用的
錯誤更正碼是低密度奇偶檢查(Low-density parity-check,LDPC)碼。換言之,錯誤檢查與校正電路256會根據一個低密度奇偶檢查演算法來編碼與解碼。錯誤檢查與校正電路256會設定一個奇偶檢查矩陣(parity check matrix),其維度是m-乘-n(m-by-n)。m與n為正整數。正整數n代表一個碼字(codeword)包含了多少個位元,而正整數m代表一個碼字包含了多少個奇偶檢查位元,即正整數n減去正整數m的差(n-m)代表一個碼字中有多少個資訊位元(或稱訊息位元)。圖4是根據一範例實施例繪示奇耦檢查矩陣的示意圖。請參照圖4,奇偶檢查矩陣400的維度是3-乘-8。一般來說正整數m與n會大於3與8,圖4只是用來舉例說明,本發明並不限制正整數m與n為多少。奇偶檢查矩陣400的每一列(row)亦代表了一限制(constraint)。以第一列為例,若某一個碼字是有效碼字(valid codeword),則將此碼字中第1、2、5、6、與第8個位元做模2(modulo-2)的加法之後,會得到位元”0”。在此領域有通常知識者應能理解如何用奇偶檢查矩陣400來編碼,在此便不再贅述。
當記憶體管理電路202要將多個位元寫入至可複寫式非
揮發性記憶體模組106時,錯誤檢查與校正電路256會對每(n-m)
個欲被寫入的位元都產生對應的m個奇偶檢查位元。接下來,記憶體管理電路202會把這n個位元寫入至可複寫式非揮發性記憶體模組106。可複寫式非揮發性記憶體模組106是藉由改變一個記憶胞的臨界電壓來儲存一個位元。圖5是根據一範例實施例繪示根據一個讀取電壓來讀取可複寫式非揮發性記憶體模組的範例示意圖。請參照圖5,橫軸代表記憶胞的臨界電壓,而縱軸代表記憶胞個數。例如,圖5是表示某一個實體程式化單元上各個記憶胞的臨界電壓。在此假設當某一個記憶胞的臨界電壓是落在分佈510時,此記憶胞所儲存的是位元”1”;相反地,若某一個記憶胞的臨界電壓是落在分佈520時,此記憶胞所儲存的是位元”0”。在此範例實施例中,臨界電壓的分佈有兩種可能。然而,在其他範例實施例中,臨界電壓的分佈可能四種、八種或其他任意個可能,而讀取電壓530可以在任意兩個分佈之間。此外,本發明也不限制每一個分佈所代表的位元(例如,可以是位元”00”’、”01”或其他位元)。
當要從可複寫式非揮發性記憶體模組106讀取資料時,記憶體管理電路202會先以讀取電壓530(亦稱第一讀取電壓)從對應的實體程式化單元中讀取多個位元。若某一個記憶胞的臨界電壓小於讀取電壓530,則此記憶胞會導通,並且記憶體管理電路202會讀到位元”1”。相反地,若某一個記憶胞的臨界電壓大於讀取電壓530,則此記憶胞不會導通,並且記憶體管理電路202會讀到位元”0”。值得注意的是,分佈510與分佈520會包含一個重疊
區域540,其表示有一些記憶胞中所儲存的應該是位元”1”(屬於分佈510),但其臨界電壓大於讀取電壓530;或者,有一些記憶胞中所儲存的應該是位元”0”(屬於分佈520),但其臨界電壓小於讀取電壓530。換言之,所讀取的位元中,有部份的位元會有錯誤。
在記憶體管理電路202根據讀取電壓530從可複寫式非揮發性記憶體模組106讀取多個位元以後,這些位元會被分成長度為n的一或多個碼字。錯誤檢查與校正電路256會解碼每一個碼字。具體來說,錯誤檢查與校正電路256會先對一個碼字中的位元執行低密度奇偶檢查演算法的奇偶檢查以取得多個校驗子(syndrome)。例如,錯誤檢查與校正電路256會將上述的奇偶檢查矩陣與一個碼字做模2的矩陣相乘,其可以寫為以下方程式(1)。
[H][V]=[S]...(1)
H為上述的奇偶檢查矩陣。V為一個碼字,其維度是n-乘-1。S為一校驗向量,其中包括了上述的多個校驗子,並且校驗向量的維度是m-乘-1。錯誤檢查與校正電路256會根據這些校驗子判斷碼字V中的位元是否具有錯誤(亦稱第一錯誤)。具體來說,若校驗向量S中的每一個校驗子都是位元”0”,表示碼字V中可能沒有錯誤;若校驗向量S中有一個校驗子是位元”1”,則表示碼字V中至少有一個錯誤。圖6是根據一範例實施例繪示矩陣相乘的示意圖。以圖6為例,奇偶檢查矩陣400與碼字610相乘的結果是校驗向量620。碼字610中的每一個位元是對應到校驗向量620中的至少一個校驗子。舉例來說,碼字610中的第一個位元V0
(對
應至奇偶檢查矩陣400中的第一行)是對應到校驗子S0
;位元V1
(對應至矩陣中的第二行)是對應到校驗子S0
與校驗子S1
。若位元V0
發生了錯誤,則校驗子S0
可能會是位元”1”。若位元V1
發生了錯誤,則校驗子S0
與S1
可能會是位元”1”。換言之,若奇偶檢查矩陣400中第i列第j行的元素(element)為”1”,則碼字610中第j個位元是對應到校驗向量620中第i個校驗子,其中i與j為正整數。
若碼字610中的位元沒有錯誤,則錯誤檢查與校正電路
256會輸出碼字610中的位元。若碼字610中的位元有錯誤,錯誤檢查與校正電路256會執行一個動態資訊縮放(dynamic information scaling,DIS)演算法。在此動態資訊縮放演算法中,錯誤檢查與校正電路256會根據校驗子S0
~S2
來設定位元V0
~V7
的初始值。這些初始值則可用來執行低密度奇偶檢查演算法的迭代解碼。大致上來說,校驗子S0
~S2
可用來估測每一個位元發生錯誤的機率,而根據這些機率,位元的初始值會被縮放到不同的數值。以下將詳細說明動態資訊縮放演算法中的各個步驟。
首先,錯誤檢查與校正電路256會根據每一個位元所對
應的校驗子來取得每一個位元的一校驗權重。舉例來說,錯誤檢查與校正電路256可以將每一個位元所對應的校驗子相加以取得校驗權重。如圖6所示,位元V0
的校驗權重等於校驗子S0
;位元V1
的校驗權重等於校驗子S0
與校驗子S1
的相加,以此類推。值得注意的是,在此對校驗子S0
~S2
所做的加法是一般的加法,而不是
模2的加法。然而,在另一範例實施例中,錯誤檢查與校正電路256也可以將每一個校驗子乘上一個權重,並且累加校驗子與權重相乘的結果以取得校驗權重。例如,位元V1
的校驗權重會等於W0
S0
+W1
S1
,其中權重W0
與W1
為實數。錯誤檢查與校正電路256可以根據校驗子對應的位元的個數來決定權重。例如,校驗子S0
是對應到5個位元,而校驗子S1
是對應到3個位元。因此,錯誤檢查與校正電路256可以將權重W0
設定的比權重W1
還要小(或者大)。本發明並不限制如何設定每一個校驗子的權重。在另一範例實施例中,錯誤檢查與校正電路256也可以把校驗子S0
~S2
的至少其中之一當作一個函數的輸入,並且把此函數的輸出當作校驗權重。此函數可以是線性函數、多項式函數、指數函數或是其他非線性函數,本發明並不在此限。
取得每一個位元的校驗權重以後,錯誤檢查與校正電路
256會根據這些校驗權重來取得碼字610中每一個位元的一初始值(亦稱第一初始值),並且根據這些初始值對這些位元V0
~V7
執行低密度奇偶檢查演算法的第一迭代解碼。在此範例實施例中,此第一迭代解碼亦被稱為硬位元模式(hard bit mode)解碼。然而,在另一範例實施例中,此第一迭代解碼也可以是軟位元模式(soft bit mode)解碼,即記憶體管理電路202是根據多個讀取電壓來取得碼字610與相對應的讀取資訊。校驗權重是用來表示每一個位元可能發生錯誤的程度。若校驗權重越大,則對應的位元發生錯誤的機率越大。因此,錯誤檢查與校正電路256會根據不同的校驗權
重來設定不同的初始值。在此範例實施例中,當碼字610被讀取時,位元V0
~V7
只會有兩種可能(即,位元”0”或是位元”1”)。然而,在根據校驗權重來取得初始值以後,位元V0
~V7
中至少有三個位元的初始值彼此不會相同。換言之,用來執行第一迭代解碼的資訊更多,使得第一迭代解碼的迭代次數會減少。
舉例來說,錯誤檢查與校正電路256可設定多個區間(亦
稱第一區間),並且設定每一個第一區間是對應到一個錯誤級別(error scaling)(亦稱第一錯誤級別)。錯誤檢查與校正電路256會判斷每一個位元的校驗權重是落在哪一個第一區間以取得對應的第一錯誤級別。在本範例實施例中,校驗權重為正整數,因此上述每一個第一區間可以用一個整數來表示。在此假設這些第一區間是0、1、2...等正整數,而上述的第一錯誤級別分別是1、0.9、0.7...等。在此範例實施例中,錯誤檢查與校正電路256是判斷校驗權重是等於哪一個正整數來取得對應的第一錯誤級別。接著,錯誤檢查與校正電路256會將每一個位元的值乘上對應的第一錯誤級別來取得上述的初始值。根據一個位元是”1”或是”0”,此位元的值會大於0或是小於0。在此範例實施例中,若某一位元是”0”,則此位元的值會大於0(例如,1);若某一位元是”1”,則此位元的值會小於0(例如,-1),然而,本發明並不在此限。
以位元V0
為例,在此假設位元V0
是位元”0”並且位元
V0
的值是1。若位元V0
的校驗權重是0,其對應的第一錯誤級別是1,因此位元V0
的初始值會是1x1=1。若位元V0
的校驗權重是
1,則位元V0
的初始值會是1x0.9=0.9;若位元V0
的校驗權重是2,則位元V0
的初始值會是1x0.7=0.7。相反地,若位元V0
是位元”1”,則位元V0
的初始值便可能是-1、-0.9、-0.7等。以上設定第一區間與第一錯誤級別、判斷校驗權重在哪一個第一區間、並且根據第一錯誤級別取得第一初始值的步驟亦被合稱為第一程序。
在另一範例實施例中,所產生的校驗權重可是浮點數,而上述的第一區間可以是0~0.5、0.5~2.5、2.5~3.5等。本發明並不限制校驗權重是否為整數,第一區間的範圍,以及第一錯誤級別的數值。
若某一第一區間中的數值越大,表示落在此第一區間的校驗權重越大,亦表示對應的位元發生錯誤的機率越大。因此,若第一區間中的數值越大,則錯誤檢查與校正電路256會設定對應的第一錯誤級別越小。若錯誤級別越小,則計算出的第一初始值的絕對值會越小。在第一迭代解碼中是把第一初始值的絕對值當作位元是否正確的可靠度,並且會不斷地更新這個可靠度。然而,本領域具有通常知識者應可理解低密度奇偶檢查演算法的迭代解碼,在此並不再贅述。
在一範例實施例中,錯誤檢查與校正電路256會累加校驗子S0
~S2
(依照一般的加法,而非模2的加法)以取得一錯誤個數。錯誤檢查與校正電路256會根據不同的錯誤個數來使用不同的區間或錯誤級別。舉例來說,錯誤檢查與校正電路256會判斷錯誤個數是否符合一門檻值(例如,大於等於2)。若錯誤個數符合
門檻值,則錯誤檢查與校正電路256會執行上述的第一程序。若錯誤個數不符合門檻值,則錯誤檢查與校正電路256會設定多個第二區間,並且設定每一個第二區間是對應至一第二錯誤級別。這些第二錯誤級別是不同於上述的第一錯誤級別。錯誤檢查與校正電路256會判斷每一個位元V0
~V7
的校驗權重是在哪一個第二區間以取得對應的第二錯誤級別。接著,錯誤檢查與校正電路256會將每一個位元V0
~V7
的值乘上對應的第二錯誤級別以取得位元V0
~V7
的第一初始值,並根據這些第一初始值來執行第一迭代解碼。舉例來說,下列表1紀錄了當錯誤個數為3時所使用的第一錯誤級別;而表2記錄了當錯誤個數為2時所使用的第二錯誤級別。換言之,當錯誤個數越小時,所使用的錯誤級別會越小。在此,以上設定第二區間與第二錯誤級別、判斷校驗權重在哪一個第二區間、並且根據第二錯誤級別取得第一初始值的步驟亦被合稱為第二程序。
在一範例實施例中,第一區間與第二區間也可以不相同。舉例來說,上述表1的第一區間是1、2、3與4。然而,表2中第二區間可以是0~1、2~3,其中0~1的第二區間是對應到相同的第二錯誤級別,並且2~3的第二區間是對應到相同的第二錯誤級別。
在一範例實施例中,第一迭代解碼為硬位元模式解碼。在執行完第一迭代解碼以後,錯誤檢查與校正電路256會對第一迭代解碼的解碼結果執行奇偶檢查來判斷此解碼結果是否存在錯誤(亦稱第二錯誤)。例如,此解碼結果包括多個第二位元,而錯誤檢查與校正電路256會將上述的奇偶解碼矩陣與這些第二位元做模2的矩陣相乘來判斷第二位元中是否有錯誤。若此解碼結果有錯誤,則錯誤檢查與校正電路256會再執行軟位元模式(soft bit mode)解碼。具體來說,請參照圖7,圖7是根據一範例實施例繪示根據多個讀取電壓來讀取可複寫式非揮發性記憶體模組的範例示意圖。在此假設上述圖5所繪示的是第一實體程式化單元上記
憶胞的臨界電壓,而圖7所繪示的也是第一實體程式化單元上記憶胞的臨界電壓。不同的是,在圖7中,記憶體管理電路202會根據讀取電壓701~705(亦稱第二讀取電壓)來讀取第一實體程式化單元。由於讀取電壓701~705的個數是5,因此每一個位元會有5個讀取資訊。這些讀取資訊指示在對應的讀取電壓701~705下,該位元是被讀取為位元”0”或是位元”1”。記憶體管理電路202會根據每一個位元的讀取資訊取得對應的第二初始值。例如,記憶體管理電路202會事先設定一個表,這個表中記錄了讀取資訊與對應的第二初始值。在取得讀取資訊以後,記憶體管理電路202會經由查找此表來取得第二初始值。接著,記憶體管理電路202會根據這些第二初始值來對位元V0
~V7
執行低密度奇偶檢查演算法的第二迭代解碼。在一範例實施例中,此第二迭代解碼便被稱為上述的軟位元模式(soft bit mode)解碼。
圖8是根據一範例實施例繪示解碼方法的流程圖。
請參照圖8,在步驟S801中,根據一讀取電壓從可複寫式非揮發性記憶體模組中讀取多個位元。在步驟S802中,對這些位元執行低密度奇偶檢查演算法的奇偶檢查以取得多個校驗子。在步驟S803中,根據校驗子判斷這些位元是否具有錯誤。若這些位元沒有錯誤,在步驟S804中,輸出這些位元。若這些位元有錯誤,在步驟S805中,根據每一個位元所對應的校驗子來取得每一個位元的一校驗權重。在步驟S806中,根據每一個位元的校驗權重來取得位元的第一初始值。在步驟S807中,根據第一初始值對
這些位元執行低密度奇偶檢查演算法的第一迭代解碼。
然而,圖8中各步驟已詳細說明如上,在此便不再贅述。
值得注意的是,圖8中各步驟可以實作為多個程式碼或是電路,本發明並不在此限。此外,圖8的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明並不在此限。
在一範例實施例中,圖8中部份的步驟也可以由可複寫
式非揮發性記憶體模組106來執行。圖9A是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。圖9B是根據一範例實施例所繪示的記憶胞陣列的概要電路圖。
請參照圖9A,可複寫式非揮發性記憶體模組106包括記
憶胞陣列902、字元線控制電路904、位元線控制電路906、行解碼器(column decoder)908、資料輸入/輸出緩衝器910與控制電路912。
記憶胞陣列902包括了上述的實體抹除單元。具體來說,
記憶胞陣列902包括用以儲存資料的多個記憶胞922、多個選擇閘汲極(select gate drain,SGD)電晶體930與多個選擇閘源極(select gate source,SGS)電晶體932、以及連接此些記憶胞的多條位元線924、多條字元線926、與共用源極線928(如圖9B所示)。在此範例實施例中,記憶胞922是以陣列方式(以二維或是三維的方式)配置在位元線924與字元線926的交叉點上。當從記憶體控制電路單元104接收到寫入或讀取資料時,控制電路912會控制字元線控制電路904、位元線控制電路906、行解碼器908、資料輸入/
輸出緩衝器910來寫入資料至記憶胞陣列902或從記憶胞陣列902中讀取資料,其中字元線控制電路904用以控制施予至字元線926的電壓,位元線控制電路906用以控制施予至位元線924的電壓,行解碼器908依據指令中的解碼列位址以選擇對應的位元線,並且資料輸入/輸出緩衝器910用以暫存資料。
在一範例實施例中,控制電路912也可以用來執行圖8
中的步驟S802~S807,或者執行上述記憶體控制電路單元104的操作。舉例來說,在控制電路912根據讀取電壓從記憶胞陣列902中讀取多個位元以後,會對這些位元執行低密度奇偶檢查演算法的奇偶檢查以取得多個校驗子。若這些位元中有錯誤,則控制電路912會根據每一個位元所對應的校驗子來取得每一個位元的一校驗權重,根據每一個位元的校驗權重來取得位元的第一初始值,並且根據第一初始值對這些位元執行低密度奇偶檢查演算法的第一迭代解碼。然而,這些步驟已詳細說明如上,在此並不再贅述。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S801~S807‧‧‧步驟
Claims (24)
- 一種解碼方法,用於一可複寫式非揮發性記憶體模組,包括:根據一第一讀取電壓從該可複寫式非揮發性記憶體模組中讀取多個位元;對該些位元執行一低密度奇偶檢查演算法的一奇偶檢查以取得多個校驗子(syndrome),其中每一該些位元是對應至該些校驗子中的至少其中之一;根據該些校驗子判斷該些位元是否具有至少一第一錯誤;若該些位元具有該至少一第一錯誤,根據每一該些位元所對應的該些校驗子來取得每一該些位元的一校驗權重,其中該些校驗權重包括該些位元之中的一第一位元的一第一校驗權重及該些位元之中的一第二位元的一第二校驗權重,其中該第一校驗權重不同於該第二校驗權重;根據每一該些位元的該校驗權重來取得每一該些位元的一第一初始值;以及根據該些第一初始值對該些位元執行該低密度奇偶檢查演算法的一第一迭代解碼。
- 如申請專利範圍第1項所述的解碼方法,其中根據每一該些位元所對應的該些校驗子來取得每一該些位元的該校驗權重的步驟包括:將每一該些位元所對應的該些校驗子相加以取得每一該些位 元的該校驗權重。
- 如申請專利範圍第1項所述的解碼方法,其中根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的步驟包括:執行一第一程序,其中該第一程序包括:設定多個第一區間,並且設定每一該些第一區間是對應至一第一錯誤級別;判斷每一該些位元的該校驗權重是在該些第一區間中的哪一個第一區間以取得對應的該第一錯誤級別;以及將每一該些位元的一值乘上對應的該第一錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第3項所述的解碼方法,其中該些位元包括一第一位元,其中,若該第一位元為位元”0”,則該第一位元的該值被設定為大於0,其中,若該第一位元為位元”1”,則該第一位元的該值被設定為小於0。
- 如申請專利範圍第3項所述的解碼方法,其中設定該些第一區間與該些第一錯誤級別的步驟包括:若該些第一區間內的數值越大,設定該些第一區間所對應的該些第一錯誤級別越小。
- 如申請專利範圍第3項所述的解碼方法,其中根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的步驟更包括:累加該些校驗子以取得一錯誤個數;判斷該錯誤個數是否符合一門檻值;若該錯誤個數符合該門檻值,執行該第一程序;若該錯誤個數不符合該門檻值,執行一第二程序,其中該第二程序包括:設定多個第二區間,並且設定每一該些第二區間是對應至一第二錯誤級別,其中該些第二錯誤級別不同於該些第一錯誤級別;判斷每一該些位元的該校驗權重是在該些第二區間中的哪一個第二區間以取得對應的該第二錯誤級別;以及將每一該些位元的一值乘上對應的該第二錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第1項所述的解碼方法,其中該可複寫式非揮發性記憶體模組包括多個實體程式化單元,並且該些位元是從該些實體程式化單元中的一第一實體程式化單元所讀取,該解碼方法更包括:在執行該第一迭代解碼後,對該第一迭代解碼的一解碼結果執行該奇偶檢查以判斷該解碼結果是否存在至少一第二錯誤; 若該解碼結果存在該至少一第二錯誤,執行下列步驟:根據多個第二讀取電壓從該第一實體程式化單元中讀取每一該些位元的多個讀取資訊;根據每一該些位元的該些讀取資訊取得每一該些位元的一第二初始值;以及根據該些第二初始值對該些位元執行該低密度奇偶檢查演算法的一第二迭代解碼。
- 如申請專利範圍第1項所述的解碼方法,其中該些位元中至少三個位元的第一初始值彼此不相同。
- 一種記憶體儲存裝置,包括:一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,用以根據一第一讀取電壓從該可複寫式非揮發性記憶體模組中讀取多個位元,其中,該記憶體控制電路單元用以對該些位元執行一低密度奇偶檢查演算法的一奇偶檢查以取得多個校驗子,其中每一該些位元是對應至該些校驗子中的至少其中之一,其中,該記憶體控制電路單元用以根據該些校驗子判斷該些位元是否具有至少一第一錯誤,若該些位元具有該至少一第一錯誤,該記憶體控制電路單元 用以根據每一該些位元所對應的該些校驗子來取得每一該些位元的一校驗權重,其中該些校驗權重包括該些位元之中的一第一位元的一第一校驗權重及該些位元之中的一第二位元的一第二校驗權重,其中該第一校驗權重不同於該第二校驗權重,其中,該記憶體控制電路單元用以根據每一該些位元的該校驗權重來取得每一該些位元的一第一初始值,其中,該記憶體控制電路單元用以根據該些第一初始值對該些位元執行該低密度奇偶檢查演算法的一第一迭代解碼。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該記憶體控制電路單元根據每一該些位元所對應的該些校驗子來取得每一該些位元的該校驗權重的操作包括:該記憶體控制電路單元將每一該些位元所對應的該些校驗子相加以取得每一該些位元的該校驗權重。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該記憶體控制電路單元根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的操作包括:該記憶體控制電路單元執行一第一程序,其中該第一程序包括:設定多個第一區間,並且設定每一該些第一區間是對應至一第一錯誤級別; 判斷每一該些位元的該校驗權重是在該些第一區間中的哪一個第一區間以取得對應的該第一錯誤級別;以及將每一該些位元的一值乘上對應的該第一錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該些位元包括一第一位元,其中,若該第一位元為位元”0”,則該第一位元的該值被設定為大於0,其中,若該第一位元為位元”1”,則該第一位元的該值被設定為小於0。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元設定該些第一區間與該些第一錯誤級別的步驟包括:若該些第一區間內的數值越大,該記憶體控制電路單元設定該些第一區間所對應的該些第一錯誤級別越小。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的操作更包括:該記憶體控制電路單元累加該些校驗子以取得一錯誤個數;該記憶體控制電路單元判斷該錯誤個數是否符合一門檻值;若該錯誤個數符合該門檻值,該記憶體控制電路單元執行該 第一程序;若該錯誤個數不符合該門檻值,該記憶體控制電路單元執行一第二程序,其中該第二程序包括:設定多個第二區間,並且設定每一該些第二區間是對應至一第二錯誤級別,其中該些第二錯誤級別不同於該些第一錯誤級別;判斷每一該些位元的該校驗權重是在該些第二區間中的哪一個第二區間以取得對應的該第二錯誤級別;以及將每一該些位元的值乘上對應的該第二錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該可複寫式非揮發性記憶體模組包括多個實體程式化單元,並且該些位元是從該些實體程式化單元中的一第一實體程式化單元所讀取,其中,該記憶體控制電路單元更用以在執行該第一迭代解碼後,對該第一迭代解碼的一解碼結果執行該奇偶檢查以判斷該解碼結果是否存在至少一第二錯誤,若該解碼結果存在該至少一第二錯誤,該記憶體控制電路單元更用以執行下列步驟:根據多個第二讀取電壓從該第一實體程式化單元中讀取每一該些位元的多個讀取資訊; 根據每一該些位元的該些讀取資訊取得每一該些位元的一第二初始值;以及根據該些第二初始值對該些位元執行該低密度奇偶檢查演算法的一第二迭代解碼。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中該些位元中至少三個位元的第一初始值彼此不相同。
- 一種可複寫式非揮發性記憶體模組,包括:一記憶胞陣列;以及一控制電路,耦接至該記憶胞陣列,用以根據一第一讀取電壓從該記憶胞陣列中讀取多個位元,並且對該些位元執行一低密度奇偶檢查演算法的一奇偶檢查以取得多個校驗子,其中每一該些位元是對應至該些校驗子中的至少其中之一,其中,該控制電路用以根據該些校驗子判斷該些位元是否具有至少一第一錯誤,若該些位元具有該至少一第一錯誤,該控制電路用以根據每一該些位元所對應的該些校驗子來取得每一該些位元的一校驗權重,根據每一該些位元的該校驗權重來取得每一該些位元的一第一初始值,並且根據該些第一初始值對該些位元執行該低密度奇偶檢查演算法的一第一迭代解碼,其中該些校驗權重包括該些位元之中的一第一位元的一第一校驗權重及該些位元之中的一第二位元的一第二校驗權重,其中 該第一校驗權重不同於該第二校驗權重。
- 如申請專利範圍第17項所述的可複寫式非揮發性記憶體模組,其中該控制電路根據每一該些位元所對應的該些校驗子來取得每一該些位元的該校驗權重的操作包括:該控制電路用以將每一該些位元所對應的該些校驗子相加以取得每一該些位元的該校驗權重。
- 如申請專利範圍第17項所述的可複寫式非揮發性記憶體模組,其中該控制電路根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的操作包括:該控制電路用以執行一第一程序,其中該第一程序包括:設定多個第一區間,並且設定每一該些第一區間是對應至一第一錯誤級別;判斷每一該些位元的該校驗權重是在該些第一區間中的哪一個第一區間以取得對應的該第一錯誤級別;以及將每一該些位元的一值乘上對應的該第一錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第19項所述的可複寫式非揮發性記憶體模組,其中該些位元包括一第一位元,其中,若該第一位元為位元”0”,則該第一位元的該值被設定為大於0,其中,若該第一位元為位元”1”,則該第一位元的該值被設定 為小於0。
- 如申請專利範圍第19項所述的可複寫式非揮發性記憶體模組,其中該控制電路設定該些第一區間與該些第一錯誤級別的操作包括:若該些第一區間內的數值越大,該控制電路設定該些第一區間所對應的該些第一錯誤級別越小。
- 如申請專利範圍第19項所述的可複寫式非揮發性記憶體模組,其中該控制電路根據每一該些位元的該校驗權重來取得每一該些位元的該第一初始值的操作更包括:該控制電路累加該些校驗子以取得一錯誤個數;該控制電路判斷該錯誤個數是否符合一門檻值;若該錯誤個數符合該門檻值,該控制電路執行該第一程序;若該錯誤個數不符合該門檻值,該控制電路用以執行一第二程序,其中該第二程序包括:設定多個第二區間,並且設定每一該些第二區間是對應至一第二錯誤級別,其中該些第二錯誤級別不同於該些第一錯誤級別;判斷每一該些位元的該校驗權重是在該些第二區間中的哪一個第二區間以取得對應的該第二錯誤級別;以及將每一該些位元的值乘上對應的該第二錯誤級別以取得每一該些位元的該第一初始值。
- 如申請專利範圍第17項所述的可複寫式非揮發性記憶體模組,其中該記憶胞陣列包括多個實體程式化單元,並且該些位元是從該些實體程式化單元中的一第一實體程式化單元所讀取,其中,該控制電路更用以在執行該第一迭代解碼後,對該第一迭代解碼的一解碼結果執行該奇偶檢查以判斷該解碼結果是否存在至少一第二錯誤,若該解碼結果存在該至少一第二錯誤,該控制電路更用以根據多個第二讀取電壓從該第一實體程式化單元中讀取每一該些位元的多個讀取資訊,其中,該控制電路更用以根據每一該些位元的該些讀取資訊取得每一該些位元的一第二初始值,並且根據該些第二初始值對該些位元執行該低密度奇偶檢查演算法的一第二迭代解碼。
- 如申請專利範圍第17項所述的可複寫式非揮發性記憶體模組,其中該些位元中至少三個位元的第一初始值彼此不相同。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102131273A TWI512732B (zh) | 2013-08-30 | 2013-08-30 | 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 |
US14/054,848 US9136875B2 (en) | 2013-08-30 | 2013-10-16 | Decoding method, memory storage device and rewritable non-volatile memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102131273A TWI512732B (zh) | 2013-08-30 | 2013-08-30 | 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201508750A TW201508750A (zh) | 2015-03-01 |
TWI512732B true TWI512732B (zh) | 2015-12-11 |
Family
ID=52585023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102131273A TWI512732B (zh) | 2013-08-30 | 2013-08-30 | 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9136875B2 (zh) |
TW (1) | TWI512732B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102149668B1 (ko) * | 2014-04-22 | 2020-08-31 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 디코딩 방법 |
KR102265220B1 (ko) * | 2015-03-09 | 2021-06-16 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
RU2607993C2 (ru) * | 2015-03-25 | 2017-01-11 | ООО "Топкон Позишионинг Системс" | Способ и устройство идентификации и компенсации инверсии входного битового потока при декодировании LDPC кодов |
TWI588833B (zh) * | 2015-11-27 | 2017-06-21 | 群聯電子股份有限公司 | 資料程式化方法與記憶體儲存裝置 |
TWI600024B (zh) * | 2016-07-05 | 2017-09-21 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI607452B (zh) * | 2016-08-12 | 2017-12-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US10388394B2 (en) | 2017-07-25 | 2019-08-20 | Apple Inc. | Syndrome weight based evaluation of memory cells performance using multiple sense operations |
TWI634557B (zh) * | 2017-10-17 | 2018-09-01 | 群聯電子股份有限公司 | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 |
US11086716B2 (en) * | 2019-07-24 | 2021-08-10 | Microchip Technology Inc. | Memory controller and method for decoding memory devices with early hard-decode exit |
US11663076B2 (en) | 2021-06-01 | 2023-05-30 | Microchip Technology Inc. | Memory address protection |
US20230061144A1 (en) * | 2021-08-25 | 2023-03-02 | Micron Technology, Inc. | Real time syndrome check |
CN117480732A (zh) | 2021-09-28 | 2024-01-30 | 微芯片技术股份有限公司 | 具有陷阱块管理的ldpc解码 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180346A1 (en) * | 2006-01-18 | 2007-08-02 | Sandisk Il Ltd. | Method Of Arranging Data In A Multi-Level Cell Memory Device |
US20090070657A1 (en) * | 2005-10-13 | 2009-03-12 | Ramot At Tel Aviv University Ltd. | Method of error correction in mbc flash memory |
US20110096601A1 (en) * | 2009-10-28 | 2011-04-28 | Gavens Lee M | Non-Volatile Memory And Method With Accelerated Post-Write Read To Manage Errors |
US20110219284A1 (en) * | 2010-03-02 | 2011-09-08 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory system |
TW201133501A (en) * | 2009-12-23 | 2011-10-01 | Sandisk Corp | System and method of error correction of control data at a memory device |
WO2013126182A1 (en) * | 2012-02-23 | 2013-08-29 | Sandisk Technologies Inc. | Erasure correction using single error detection parity |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8876099B2 (en) * | 2008-10-31 | 2014-11-04 | Goss International Americas, Inc. | Profiled chain tops for a conveyor |
US9697905B2 (en) * | 2013-05-31 | 2017-07-04 | Sandisk Technologies Llc | Updating read voltages using syndrome weight comparisons |
US9728263B2 (en) * | 2013-05-31 | 2017-08-08 | Sandisk Technologies Llc | Method and device for iteratively updating read voltages |
-
2013
- 2013-08-30 TW TW102131273A patent/TWI512732B/zh active
- 2013-10-16 US US14/054,848 patent/US9136875B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070657A1 (en) * | 2005-10-13 | 2009-03-12 | Ramot At Tel Aviv University Ltd. | Method of error correction in mbc flash memory |
US20070180346A1 (en) * | 2006-01-18 | 2007-08-02 | Sandisk Il Ltd. | Method Of Arranging Data In A Multi-Level Cell Memory Device |
US20110096601A1 (en) * | 2009-10-28 | 2011-04-28 | Gavens Lee M | Non-Volatile Memory And Method With Accelerated Post-Write Read To Manage Errors |
TW201133501A (en) * | 2009-12-23 | 2011-10-01 | Sandisk Corp | System and method of error correction of control data at a memory device |
US20110219284A1 (en) * | 2010-03-02 | 2011-09-08 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory system |
WO2013126182A1 (en) * | 2012-02-23 | 2013-08-29 | Sandisk Technologies Inc. | Erasure correction using single error detection parity |
Also Published As
Publication number | Publication date |
---|---|
US9136875B2 (en) | 2015-09-15 |
US20150067446A1 (en) | 2015-03-05 |
TW201508750A (zh) | 2015-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI512732B (zh) | 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 | |
US9268634B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI521529B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9529666B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
TWI537966B (zh) | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US10103748B2 (en) | Decoding method, memory control circuit unit and memory storage device | |
US9274891B2 (en) | Decoding method, memory storage device, and memory controlling circuit unit | |
US20170206130A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI527382B (zh) | 解碼方法、解碼電路、記憶體儲存裝置與控制電路單元 | |
US20150169401A1 (en) | Decoding method, memory storage device, and memory controlling circuit unit | |
US20190189228A1 (en) | Bit tagging method, memory control circuit unit and memory storage device | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
KR20200111509A (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN104424045A (zh) | 解码方法、存储器储存装置与非易失性存储器模块 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
US10628259B2 (en) | Bit determining method, memory control circuit unit and memory storage device |