TW201802821A - 解碼方法、記憶體控制電路單元及記憶體儲存裝置 - Google Patents
解碼方法、記憶體控制電路單元及記憶體儲存裝置 Download PDFInfo
- Publication number
- TW201802821A TW201802821A TW105120883A TW105120883A TW201802821A TW 201802821 A TW201802821 A TW 201802821A TW 105120883 A TW105120883 A TW 105120883A TW 105120883 A TW105120883 A TW 105120883A TW 201802821 A TW201802821 A TW 201802821A
- Authority
- TW
- Taiwan
- Prior art keywords
- frame
- codeword
- decoding operation
- memory
- type
- 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/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
- H03M13/353—Adaptation to the channel
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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
- H03M13/2909—Product codes
- H03M13/2912—Product codes omitting parity on parity
-
- 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
- H03M13/2927—Decoding strategies
-
- 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
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種解碼方法、記憶體控制電路單元及記憶體儲存裝置。本解碼方法包括:對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字。本方法還包括:根據此第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊。本方法更包括:若所述錯誤估計資訊符合第一條件,將所述第一訊框中的所述第一碼字更新為所述第二碼字;以及對包括第一訊框的區塊碼執行第二類解碼操作。
Description
本發明是有關於一種解碼方法,且特別是有關於一種用於可複寫式非揮發性記憶體模組的解碼方法、記憶體控制電路單元及記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,寫入至可複寫式非揮發性記憶體模組的資料都會根據一個錯誤更正碼來編碼。從可複寫式非揮發性記憶體模組中所讀取的資料也會經過對應的解碼程序。在一些情況下,若所讀取的資料中有錯誤位元,並且這些錯誤位元無法被更正,則需要的解碼時間會更長。此外,傳統的迭代解碼的操作中,資料可能在一次的解碼操作中被成功地校正其中的錯誤位元而使得錯誤趨於收斂(convergence),或者因前次的解碼操作中包含太多誤判而導致其中的錯誤發散(divergence)。因此,倘若在資料的錯誤是發散的情況下,繼續對此資料進行更正的解碼操作則可能會導致資料中的錯誤增加,促使其更正能力下降。據此,如何增加解碼的速度或增加解碼的更正能力,為此領域技術人員所關心的議題。
本發明提供一種解碼方法、記憶體控制電路單元及記憶體儲存裝置,其可有效地提高解碼的更正能力。
本發明的一範例實施例提供一種解碼方法,其用於可複寫式非揮發性記憶體模組,所述可複寫式非揮發性記憶體模組包括多個記憶胞,所述解碼方法包括:對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字;根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的一誤估計資訊;若所述錯誤估計資訊符合第一條件,將所述第一訊框中的所述第一碼字更新為所述第二碼字;以及對包括所述第一訊框的區塊碼執行第二類解碼操作。
在本發明的一範例實施例中,所述解碼方法更包括:發送第一讀取指令序列,其中所述第一讀取指令序列用以從記憶胞讀取一資料;獲得對應於所述資料的多個訊框,其中所述訊框包括所述第一訊框,且所述第一訊框包括所述第一碼字。
在本發明的一範例實施例中,根據所述第一類解碼操作的執行結果記錄所述第一訊框的所述錯誤估計資訊的步驟包括:獲得對應所述第一碼字的錯誤估計資訊,其中所述錯誤估計資訊用以表示所述第一碼字的錯誤位元總數的大小。
在本發明的一範例實施例中,獲得對應所述第一碼字的所述錯誤估計資訊的步驟包括:對所述第一碼字執行奇偶檢查操作以取得多個第一校驗子,且將所述錯誤估計資訊的值記錄為所述第一校驗子的總和。
在本發明的一範例實施例中,所述第一條件為所述錯誤估計資訊的值小於或等於所述錯誤位元數量門檻值。
在本發明的一範例實施例中,所述區塊碼包括對應於所述資料的所述訊框,且對應所述區塊碼的一次的迭代解碼操作包括分別對每一所述訊框進行所述第一類解碼操作,以及對每一所述訊框進行所述第二類解碼操作。
在本發明的一範例實施例中,所述對包括所述第一訊框的區塊碼執行所述第二類解碼操作的步驟之前包括:判斷所述訊框中是否存在其碼字的錯誤估計資訊符合所述第一條件的至少一訊框;若所述訊框中存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,在對包括所述第一訊框的所述區塊碼執行所述第二類解碼操作後,執行下一次的對應所述區塊碼的迭代解碼操作;以及若所述訊框中不存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,停止對應所述區塊碼的迭代解碼操作。
在本發明的一範例實施例中,所述第一類解碼操作包括低密度奇偶檢查校正碼演算法,且所述第二類解碼操作包括里德-所羅門碼演算法,且所述第一類解碼操作是分別對每一所述訊框的所有位元進行橫向解碼,所述第二類解碼操作是同時對每一所述訊框各別的每一個第N位元進行縱向解碼。
本發明的另一範例實施例提供一種記憶體控制電路單元,其用以控制可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞,所述記憶體控制電路單元包括主機介面、記憶體介面、錯誤檢查與校正電路及記憶體管理電路。所述主機介面用以耦接至主機系統。所述記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組。所述記憶體管理電路耦接至所述主機介面、所述記憶體介面及所述錯誤檢查與校正電路。錯誤檢查與校正電路用以對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字。記憶體管理電路用以根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊,若所述錯誤估計資訊符合第一條件,所述記憶體管理電路更用以將所述第一訊框中的所述第一碼字更新為所述第二碼字。此外,錯誤檢查與校正電路更用以對包括所述第一訊框的區塊碼執行第二類解碼操作。
在本發明的一範例實施例中,所述記憶體管理電路更用以發送第一讀取指令序列,其中所述第一讀取指令序列用以從所述記憶胞讀取一資料。記憶體管理電路更用以獲得對應於所述資料的多個訊框,其中所述訊框包括所述第一訊框,且所述第一訊框包括所述第一碼字。
在本發明的一範例實施例中,在根據所述第一類解碼操作的執行結果記錄所述第一訊框的所述錯誤估計資訊的操作中,所述記憶體管理電路更用以獲得對應所述第一碼字的錯誤估計資訊,其中所述錯誤估計資訊用以表示所述第一碼字的錯誤位元總數的大小。
在本發明的一範例實施例中,在獲得對應所述第一碼字的所述錯誤估計資訊的操作中,錯誤檢查與校正電路更用以對所述第一碼字執行一奇偶檢查操作以取得多個第一校驗子,且所述記憶體管理電路將所述錯誤估計資訊的值記錄為所述第一校驗子的總和。
在本發明的一範例實施例中,所述第一條件為所述錯誤估計資訊的值小於或等於錯誤位元數量門檻值。
在本發明的一範例實施例中,所述區塊碼包括對應於所述資料的所述訊框,其中對應所述區塊碼的一次的迭代解碼操作包括分別對每一所述訊框進行所述第一類解碼操作,以及對每一所述訊框進行所述第二類解碼操作。
在本發明的一範例實施例中,在對包括所述第一訊框的所述區塊碼執行所述第二類解碼操作之後,記憶體管理電路更用以判斷所述訊框中是否存在其碼字的錯誤估計資訊符合所述第一條件的至少一訊框。若所述訊框中存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,記憶體管理電路更用以在對包括所述第一訊框的所述區塊碼執行所述第二類解碼操作後,執行下一次的對應所述區塊碼的所述迭代解碼操作;以及若所述訊框中不存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,記憶體管理電路更用以停止對應所述區塊碼的迭代解碼操作。
在本發明的一範例實施例中,所述第一類解碼操作包括低密度奇偶檢查校正碼演算法,且所述第二類解碼操作包括里德-所羅門碼演算法,其中所述第一類解碼操作是分別對每一所述訊框的所有位元進行橫向解碼,所述第二類解碼操作是同時對每一所述訊框各別的每一個第N位元進行縱向解碼。
本發明的另一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述可複寫式非揮發性記憶體模組包括多個記憶胞。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組。記憶體控制電路單元用以對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字,以及根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊,若所述錯誤估計資訊符合第一條件,記憶體控制電路單元更用以將所述第一訊框中的所述第一碼字更新為所述第二碼字。此外,記憶體控制電路單元更用以對包括所述第一訊框的區塊碼執行第二類解碼操作。
在本發明的一範例實施例中,所述第一讀取指令序列用以從所述記憶胞讀取資料。記憶體控制電路單元更用以獲得對應於所述資料的多個訊框,其中所述訊框包括所述第一訊框,且所述第一訊框包括所述第一碼字。
在本發明的一範例實施例中,在根據所述第一類解碼操作的執行結果記錄所述第一訊框的所述錯誤估計資訊的操作中,所述記憶體控制電路單元更用以獲得對應所述第一碼字的錯誤估計資訊,其中所述錯誤估計資訊用以表示所述第一碼字的錯誤位元總數的大小。
在本發明的一範例實施例中,在獲得對應所述第一碼字的所述錯誤估計資訊的操作中,記憶體控制電路單元更用以對所述第一碼字執行一奇偶檢查操作以取得多個第一校驗子,且將所述錯誤估計資訊的值記錄為所述第一校驗子的總和。
在本發明的一範例實施例中,所述第一條件為所述錯誤估計資訊的值小於或等於錯誤位元數量門檻值。
在本發明的一範例實施例中,所述區塊碼包括對應於所述資料的所述訊框,且對應所述區塊碼的一次的迭代解碼操作包括分別對每一所述訊框進行所述第一類解碼操作,以及對每一所述訊框進行所述第二類解碼操作。
在本發明的一範例實施例中,在對包括所述第一訊框的所述區塊碼執行所述第二類解碼操作之前,記憶體控制電路單元更用以判斷所述訊框中是否存在其碼字的錯誤估計資訊符合所述第一條件的至少一訊框。若所述訊框中存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,記憶體控制電路單元更用以在對包括所述第一訊框的所述區塊碼執行所述第二類解碼操作後,執行下一次的對應所述區塊碼的迭代解碼操作;以及若所述訊框中不存在其碼字的錯誤估計資訊符合所述第一條件的所述至少一訊框,記憶體控制電路單元更用以停止對應所述區塊碼的迭代解碼操作。
在本發明的一範例實施例中,所述第一類解碼操作包括低密度奇偶檢查校正碼演算法,且所述第二類解碼操作包括里德-所羅門碼演算法,其中所述第一類解碼操作是分別對每一所述訊框的所有位元進行橫向解碼,所述第二類解碼操作是同時對每一所述訊框各別的每一個第N位元進行縱向解碼。
基於上述,在本發明的一範例實施例中,藉由判斷經解碼後之資料中的錯誤是發散或收斂以決定是否以此資料進行接續的解碼操作,由此可避免爾後的解碼操作產生更多的誤判,而導致資料中錯誤的增加。藉此,可提高每一次的解碼操作之解碼成功率,從而提高記憶體儲存裝置的解碼效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
請參照圖1與圖2,主機系統11一般包括處理器111、隨機存取記憶體(random access memory, RAM)112、唯讀記憶體(read only memory, ROM)113及資料傳輸介面114。處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114皆耦接至系統匯流排(system bus)110。
在本範例實施例中,主機系統11是透過資料傳輸介面114與記憶體儲存裝置10耦接。例如,主機系統11可經由資料傳輸介面114將資料儲存至記憶體儲存裝置10或從記憶體儲存裝置10中讀取資料。此外,主機系統11是透過系統匯流排110與I/O裝置12耦接。例如,主機系統11可經由系統匯流排110將輸出訊號傳送至I/O裝置12或從I/O裝置12接收輸入訊號。
在本範例實施例中,處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114可設置在主機系統11的主機板20上。資料傳輸介面114的數目可以是一或多個。透過資料傳輸介面114,主機板20可以經由有線或無線方式耦接至記憶體儲存裝置10。記憶體儲存裝置10可例如是隨身碟201、記憶卡202、固態硬碟(Solid State Drive, SSD)203或無線記憶體儲存裝置204。無線記憶體儲存裝置204可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板20也可以透過系統匯流排110耦接至全球定位系統(Global Positioning System, GPS)模組205、網路介面卡206、無線傳輸裝置207、鍵盤208、螢幕209、喇叭210等各式I/O裝置。例如,在一範例實施例中,主機板20可透過無線傳輸裝置207存取無線記憶體儲存裝置204。
在一範例實施例中,所提及的主機系統為可實質地與記憶體儲存裝置配合以儲存資料的任意系統。雖然在上述範例實施例中,主機系統是以電腦系統來作說明,然而,圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。請參照圖3,在另一範例實施例中,主機系統31也可以是數位相機、攝影機、通訊裝置、音訊播放器、視訊播放器或平板電腦等系統,而記憶體儲存裝置30可為其所使用的安全數位(Secure Digital, SD)卡32、小型快閃(Compact Flash, CF)卡33或嵌入式儲存裝置34等各式非揮發性記憶體儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embedded MMC, eMMC)341及/或嵌入式多晶片封裝(embedded Multi Chip Package, eMCP)儲存裝置342等各類型將記憶體模組直接耦接於主機系統的基板上的嵌入式儲存裝置。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、記憶體控制電路單元404與可複寫式非揮發性記憶體模組406。
在本範例實施例中,連接介面單元402是相容於序列先進附件(Serial Advanced Technology Attachment, SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元402亦可以是符合並列先進附件(Parallel Advanced Technology Attachment, PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準、通用序列匯流排(Universal Serial Bus, USB)標準、SD介面標準、超高速一代(Ultra High Speed-I, UHS-I)介面標準、超高速二代(Ultra High Speed-II, UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。連接介面單元402可與記憶體控制電路單元404封裝在一個晶片中,或者連接介面單元402是佈設於一包含記憶體控制電路單元404之晶片外。
記憶體控制電路單元404用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統11的指令在可複寫式非揮發性記憶體模組406中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組406是耦接至記憶體控制電路單元404並且用以儲存主機系統11所寫入之資料。可複寫式非揮發性記憶體模組406可以是單階記憶胞(Single Level Cell, SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell, MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
可複寫式非揮發性記憶體模組406中的每一個記憶胞是以電壓(以下亦稱為臨界電壓)的改變來儲存一或多個位元。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,進而改變記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為“把資料寫入至記憶胞”或“程式化記憶胞”。隨著臨界電壓的改變,可複寫式非揮發性記憶體模組406中的每一個記憶胞具有多個儲存狀態。透過施予讀取電壓可以判斷一個記憶胞是屬於哪一個儲存狀態,藉此取得此記憶胞所儲存的一或多個位元。
圖5是根據本發明的一範例實施例所繪示的管理可複寫式非揮發性記憶體模組的範例示意圖。
請參照圖5,可複寫式非揮發性記憶體模組406的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元400(0)~400(N)。具體來說,同一條字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一條字元線上的實體程式化單元可被分類為下實體程式化單元與上實體程式化單元。例如,每一記憶胞的LSB是屬於下實體程式化單元,並且每一記憶胞的MSB是屬於上實體程式化單元。一般來說,在MLC NAND型快閃記憶體中,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,或下實體程式化單元的可靠度是高於上實體程式化單元的可靠度。在此範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面或是實體扇(sector)。若實體程式化單元為實體頁面,則每一個實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體扇,用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤更正碼)。在本範例實施例中,每一個資料位元區包含32個實體扇,且一個實體扇的大小為612位元組(byte, B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,本發明並不限制實體扇的大小以及個數。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊。
圖6是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
請參照圖6,記憶體控制電路單元404包括記憶體管理電路602、主機介面604、記憶體介面606及錯誤檢查與校正電路608。
記憶體管理電路602用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路602具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路602的操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路602的控制指令是以韌體型式來實作。例如,記憶體管理電路602具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路602的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路602具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路602的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路602的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路602包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的記憶胞或其群組。記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令序列以將資料寫入至可複寫式非揮發性記憶體模組406中。記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料。記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除。資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。在一範例實施例中,記憶體管理電路602還可以下達其他類型的指令序列給可複寫式非揮發性記憶體模組406以指示執行相對應的操作。
主機介面604是耦接至記憶體管理電路602並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面604來傳送至記憶體管理電路602。在本範例實施例中,主機介面604是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面604亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面606是耦接至記憶體管理電路602並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面606轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路602要存取可複寫式非揮發性記憶體模組406,記憶體介面606會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列例如是由記憶體管理電路602產生並且透過記憶體介面606傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
錯誤檢查與校正電路608是耦接至記憶體管理電路602並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路602從主機系統11中接收到寫入指令時,錯誤檢查與校正電路608會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code, ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路602會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路602從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路608會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
在一範例實施例中,記憶體控制電路單元404還包括緩衝記憶體610與電源管理電路612。
緩衝記憶體610是耦接至記憶體管理電路602並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路612是耦接至記憶體管理電路602並且用以控制記憶體儲存裝置10的電源。
特別是,在本範例實施例中,上述錯誤檢查與校正電路608將資料儲存至可複寫式非揮發性記憶體模組406的操作中,錯誤檢查與校正電路608會編碼欲儲存至可複寫式非揮發性記憶體模組406的資料並產生一個編碼單元。例如,此編碼單元是由編碼後的資料組成。此編碼單元是屬於區塊碼。爾後,記憶體管理電路602會發送一個寫入指令序列至可複寫式非揮發性記憶體模組406。此寫入指令序列用以指示將此編碼單元儲存在可複寫式非揮發性記憶體模組406中的一個區域。例如,此區域可以是至少一個實體程式化單元並且包括多個記憶胞。根據此寫入指令序列,可複寫式非揮發性記憶體模組406會將此編碼單元儲存至此些記憶胞中。爾後,當記憶體管理電路602指示讀取此區域中的資料時,可複寫式非揮發性記憶體模組406會從此些記憶胞中讀取此編碼單元,並且錯誤檢查與校正電路608會執行對應的解碼程序以解碼此編碼單元。
圖7是根據本發明的一範例實施例所繪示的區塊碼的示意圖。
請參照圖7,編碼單元700屬於區塊碼,且包括對應多個實體程式化單元710(0)~710(E)的多個訊框701(1)~701(p),例如,實體程式化單元710(0)~710(E)中的每一者所儲存之至少部分資料可視為一個訊框。在本範例實施例中,錯誤檢查與校正電路608執行編碼操作的基本單位是一個訊框(frame)。一個訊框包括多個資料位元。在本範例實施例中,一個訊框包括256個位元。然而,在另一範例實施例中,一個訊框也可以包括更多或更少的位元。例如,錯誤檢查與校正電路608可以針對儲存於同一個實體程式化單元中的資料進行單訊框(single-frame)編碼,也可以針對儲存於多個實體程式化單元中的資料進行多訊框(multi-frame)編碼。
在單訊框編碼中,是對每一訊框701(1)~701(p)中的資料進行編碼產生相對應的編碼資料720。例如,訊框701(1)的位元b11
、b12
、…、b1r
會被編碼為編碼資料720中的錯誤更正碼ECC1
,訊框701(2)的位元b21
、b22
、…、b2r
會被編碼為編碼資料720中的錯誤更正碼ECC2
;以此類推,位於訊框701(p)的位元bp1
、bp2
、…、bpr
會被編碼為編碼資料720中的錯誤更正碼ECCp
。之後,根據編碼資料720即可分別對從實體程式化單元710(0)~710(E)中讀取的資料進行橫向的解碼操作來更正所讀取之資料中可能存在的錯誤。例如,對應於訊框701(1)中一筆資料的錯誤更正碼ECC1
是對此筆資料的所有位元b11
、b12
、…、b1r
進行解碼。
在多訊框編碼中,是以每一個位元(或,位元組)所在的位置為依據來對訊框701(1)~701(p)中的資料進行編碼。以編碼訊框701(1)~701(p)所儲存之資料來產生相對應的編碼資料730為例,位於位置702(1)的位元b11
、b21
、…、bp1
會被編碼為編碼資料730中的位元bo1
,位於位置702 (2)的位元b12
、b22
、…、bp2
會被編碼為編碼資料730中的位元bo2
;以此類推,位於位置702(r)的位元b1r
、b2r
、…、bpr
會被編碼為編碼資料730中的位元bor
。爾後,根據編碼資料730即可對從實體程式化單元710(0)~710(E)中讀取的資料進行縱向的解碼操作,以嘗試更正所讀取之資料中可能存在的錯誤。舉例而言,對應於多個訊框701(1)~701(p)之各別的第N位元的編碼資料是用以對此些訊框中之資料各別的第N位元進行解碼,例如,對應於多個訊框701(1)~701(p)之各別的第1位元的位元bo1
是用以對位於位置702(1)的位元b11
、b21
、…、bp1
(即,訊框701(1)~701(p)中之資料各別的第1位元)進行解碼。
此外,在圖7的另一範例實施例中,用於產生編碼資料730的資料也可能包括實體程式化單元710(0)~710(E)所儲存之資料中的資料位元(data bits)所對應的冗餘位元(redundancy bits)。以實體程式化單元710(0)所儲存之資料為例,其中的冗餘位元例如是對儲存於實體程式化單元710(0)中的資料位元進行單訊框編碼而產生的錯誤更正碼ECC1
。
在本範例實施例中,單訊框編碼是採用採用低密度奇偶檢查校正碼(low density parity code,LDPC)(亦稱為第一類解碼操作),而多訊框編碼是採用里德-所羅門碼(Reed-solomon codes, RS codes)演算法(亦稱為第二類解碼操作)。然而,本發明並不限於此,例如,在另一範例實施例中,單訊框編碼與多訊框編碼可以分別採用低密度奇偶檢查校正碼、BCH碼、迴旋碼(convolutional code)或渦輪碼(turbo code)等編碼演算法的至少其中之一。此外,在另一範例實施例中,更多未列於上的編碼演算法也可以被採用,在此便不贅述。根據所採用的編碼演算法,錯誤檢查與校正電路608可以編碼欲保護之資料來產生相對應的錯誤更正碼及/或錯誤檢查碼。
具體而言,在單訊框的編碼與解碼操作中,錯誤檢查與校正電路608是採用低密度奇偶檢查碼來編碼與解碼。在低密度奇偶檢查校正碼中,是用一個奇偶檢查矩陣來定義有效的碼字。以下將奇偶檢查矩陣標記為矩陣H
,並且一碼字標記為CW
。依照以下方程式(1),若奇偶檢查矩陣H
與碼字CW
的相乘是零向量,表示碼字CW
為有效的碼字。其中運算子表示模2(mod 2)的矩陣相乘。換言之,矩陣H
的零空間(null space)便包含了所有的有效碼字。然而,本發明並不限制碼字CW
的內容。例如,碼字CW
也可以包括用任意演算法所產生的錯誤更正碼或是錯誤檢查碼。
其中矩陣H
的維度是k
-乘-n
(k-by-n),碼字CW
的維度是1-乘-n
。k
與n
為正整數。碼字CW
中包括了訊息位元與奇偶位元,即碼字CW
可以表示成[M P],其中向量M
是由訊息位元所組成,向量P
是由奇偶位元所組成。向量M
的維度是1-乘-(n-k
),而向量P
的維度是1-乘-k
。以下將訊息位元與奇偶位元統稱為資料位元。換言之,碼字CW
中具有n
個資料位元,其中訊息位元的長度為(n-k
)位元,並且奇偶位元的長度是k
位元,即碼字CW
的碼率(code rate)為(n-k)/n
。
一般來說在編碼時會使用一個產生矩陣(以下標記為G
),使得對於任意的向量M
都可滿足以下方程式(2)。其中產生矩陣G的維度是(n-k
)-乘-n
。
由方程式(2)所產生的碼字CW
為有效的碼字。因此可將方程式(2)代入方程式(1),藉此得到以下方程式(3)。
由於向量M
可以是任意的向量,因此以下方程式(4)必定會滿足。也就是說,在決定奇偶檢查矩陣H
以後,對應的產生矩陣G
也可被決定。
在解碼一個碼字CW
時,會先對碼字中的資料位元執行一個奇偶檢查操作,例如將奇偶檢查矩陣H
與碼字CW
相乘以產生一個向量(以下標記為S ,
如以下方程式(5)所示)。若向量S
是零向量,則可直接輸出碼字CW
。若向量S
不是零向量,則表示碼字CW
不是有效的碼字。
向量S
的維度是k
-乘-1
,其中每一個元素亦稱為校驗子(syndrome)。若碼字CW
不是有效的碼字,則錯誤檢查與校正電路608會執行一個解碼操作,以嘗試更正碼字CW
中的錯誤位元。
圖8是根據本發明的一範例實施例所繪示的奇偶檢查矩陣的示意圖。
請參照圖8,奇偶檢查矩陣800的維度是k
-乘-n
。例如,k
為8,並且n
為9。然而,本發明並不限制正整數k
與n
為多少。奇偶檢查矩陣800的每一列(row)亦代表了一限制(constraint)。以奇偶檢查矩陣800的第一列為例,若某一個碼字是有效碼字,則將此碼字中第3、5、8與第9個位元做模2(modulo-2)的加法之後,會得到位元“0”。在此領域有通常知識者應能理解如何用奇偶檢查矩陣800來編碼,在此便不再贅述。此外,奇偶檢查矩陣800僅為一個範例矩陣,而非用以限制本發明。
當記憶體管理電路602要將多個位元儲存至可複寫式非揮發性記憶體模組406時,錯誤檢查與校正電路608會對每(n
-k
)個欲被儲存的位元(即,訊息位元)都產生對應的k
個奇偶位元。接下來,記憶體管理電路602會把這n
個位元(即,資料位元)作為一個碼字寫入至可複寫式非揮發性記憶體模組406。
圖9是根據本發明的一範例實施例所繪示的記憶胞的臨界電壓分佈的示意圖。
請參照圖9,橫軸代表記憶胞的臨界電壓,而縱軸代表記憶胞個數。例如,圖9是表示一個實體程式化單元中各個記憶胞的臨界電壓。假設狀態910對應於位元“1”並且狀態920對應於位元“0”,當某一個記憶胞的臨界電壓屬於狀態910時,此記憶胞所儲存的是位元“1”;相反地,若某一個記憶胞的臨界電壓屬於狀態920時,此記憶胞所儲存的是位元“0”。值得一提的是,在本範例實施例中,臨界電壓分佈中的一個狀態對應至一個位元值,並且記憶胞的臨界電壓分佈有兩種可能的狀態。然而,在其他範例實施例中,臨界電壓分佈中的每一個狀態也可以對應至多個位元值並且記憶胞的臨界電壓的分佈也可能有四種、八種或其他任意個狀態。此外,本發明也不限制每一個狀態所代表的位元。例如,在圖9的另一範例實施例中,狀態910也可以對應於位元“0”,而狀態920則對應於位元“1”。
在本範例實施例中,當要從可複寫式非揮發性記憶體模組406讀取資料時,記憶體管理電路602會發送一讀取指令序列(亦稱為第一讀取指令序列)至可複寫式非揮發性記憶體模組406。此第一讀取指令序列用以指示可複寫式非揮發性記憶體模組406讀取一個實體程式化單元中的多個記憶胞以獲得儲存於此些記憶胞中的資料。例如,根據此第一讀取指令序列,可複寫式非揮發性記憶體模組406可使用圖9中的讀取電壓901來讀取記憶胞。若所讀取之記憶胞中的某一者的臨界電壓小於讀取電壓901,則此記憶胞會被導通,並且記憶體管理電路602會讀到位元“1”。相反地,若所讀取之記憶胞中的某一者的臨界電壓大於讀取電壓901,則此記憶胞不會被導通,並且記憶體管理電路602會讀到位元“0”。此外,在另一範例實施例中,一次的讀取操作也可以是讀取多個實體程式化單元中的記憶胞或一個實體程式化單元中的部分記憶胞,本發明不加以限制。
在本範例實施例中,狀態910與狀態920之間包含一個重疊區域930。重疊區域930的面積正相關於所讀取之記憶胞中臨界電壓落於重疊區域930內的記憶胞之總數。重疊區域930表示在此些記憶胞中有一些記憶胞所儲存的應該是位元“1”(屬於狀態910),但其臨界電壓大於所施加的讀取電壓901;或者,在此些記憶胞中有一些記憶胞所儲存的應該是位元“0”(屬於狀態920),但其臨界電壓小於所施加的讀取電壓901。換言之,經由施加讀取電壓901所讀取的資料中,有部份的位元會有錯誤。
在本範例實施例中,錯誤檢查與校正電路608是執行迭代(iteration)解碼操作。一個迭代解碼操作是用來解碼來自於可複寫式非揮發性記憶體模組406的一筆資料。例如,資料中的一個解碼單位為一個碼字。在一個迭代解碼操作中,用於檢查資料之正確性的奇偶檢查操作與用於更正資料中的錯誤之解碼操作會重覆執行,直到成功的解碼或迭代次數到達一預定次數為止。若迭代次數到達此預定次數,表示解碼失敗,並且錯誤檢查與校正電路608會停止解碼。此外,若經由奇偶檢查操作判定某一資料中不存在錯誤,則錯誤檢查與校正電路608會輸出此資料。
圖10是根據本發明的一範例實施例所繪示的奇偶檢查操作的示意圖。
請參照圖10,假設從記憶胞所讀取的資料包含碼字1001,則在奇偶檢查操作中,根據方程式(5),奇偶檢查矩陣800會與碼字1001相乘並且獲得向量1002(即,向量S
)。其中,碼字1001中的每一個位元是對應到向量1002中的至少一個元素(即,校驗子)。舉例來說,碼字1001中的位元V0
(對應至奇偶檢查矩陣800中的第一行)是對應到校驗子S1
、S4
及S7
;位元V1
(對應至奇偶檢查矩陣800中的第二行)是對應到校驗子S2
、S3
及S6
,以此類推。若位元V0
是錯誤位元,則校驗子S1
、S4
及S7
的至少其中之一可能會是“1”。若位元V1
是錯誤位元,則校驗子S2
、S3
及S6
的至少其中之一可能會是“1”,以此類推。
換言之,若校驗子S0
~S7
皆是“0”,表示碼字1001中可能沒有錯誤位元,因此錯誤檢查與校正電路608可直接輸出碼字1001。然而,若碼字1001中具有至少一個錯誤位元,則校驗子S0
~S7
的至少其中之一可能會是“1”,並且錯誤檢查與校正電路608會對碼字1001執行用於更正碼字中之錯誤的解碼操作。
在本範例實施例中,錯誤檢查與校正電路608支援一或多種解碼演算法。例如,錯誤檢查與校正電路608可支援位元翻轉(Bit-Flipping)演算法、最小-總合(Min-Sum)演算法及總和-乘積(Sum-Product)演算法等解碼演算法的至少其中之一,且可採用之解碼演算法的類型不限於上述。在判定資料中存在錯誤之後,錯誤檢查與校正電路608會基於一種解碼演算法來執行一個解碼操作。此外,連續執行的兩個解碼操作可以是基於相同或不同的解碼演算法而執行。
圖11是根據本發明的一範例實施例所繪示的對一個區塊碼執行解碼操作的示意圖。圖12A~12B是根據本發明的一範例實施例所繪示的對一個訊框執行解碼操作的示意圖。
請參照圖11,在記憶體管理電路602發送第一讀取指令序列至可複寫式非揮發性記憶體模組406並從可複寫式非揮發性記憶體模組406的記憶胞中讀取資料後,記憶體管理電路602會獲得對應此資料的多個訊框1101(1)~1101(3),而錯誤檢查與校正電路608會對此些訊框1101(1)~1101(3)所組成的區塊碼1100進行解碼。具體而言,對應區塊碼1100的一次的迭代解碼操作包括分別對區塊碼1100中每一訊框進行第一類解碼操作,以及對每一訊框進行第二類解碼操作。特別是,在本發明範例實施例中,在分別對區塊碼1100中每一訊框中的碼字進行第一類解碼操作,以及執行更正其中錯誤以產生另一碼字的解碼操作之後,記憶體管理電路602會先判斷此解碼的結果(即,解碼後所獲得的另一碼字)中的錯誤是發散或收斂以決定是否以目前的碼字進行接續的第二類解碼操作。以下將參照圖12A~12B,以區塊碼1100中的一個訊框來說明如何判斷其對應的碼字中的錯誤是發散或收斂的操作。
請先參照圖12A,錯誤檢查與校正電路608會以區塊碼1100中的訊框1101(1) (亦稱為第一訊框1101(1))為單位對碼字1202(亦稱為第一碼字1202)進行解碼。值得注意的是,所述第一碼字1202可以是從記憶胞所讀取的原始資料(即,上述第一碼字1101),或是經過至少一次對應區塊碼1100的迭代解碼操作的資料,本發明並不加以限制。具體而言,錯誤檢查與校正電路608會判斷第一碼字1202是否具有一或多個錯誤。例如,在本範例實施例中,錯誤檢查與校正電路608會對第一碼字1202執行第一類解碼操作(即,奇偶檢查操作)以取得多個校驗子(亦稱為第一校驗子),而此些第一校驗子可以組成上述向量S
。在一範例實施例中,上述向量S
亦稱為校驗向量。錯誤檢查與校正電路608會根據校驗向量S
中的多個第一校驗子判斷第一碼字1202是否具有一或多個錯誤,而根據校驗子來判斷解碼的結果中是否具有一或多個錯誤的操作已說明於上述圖10之範例中,在此不再重述。
具體而言,在對一個碼字執行更正其中之錯誤的解碼操作後,此碼字可能在此次的解碼操作中被成功地校正其中的錯誤位元而使得錯誤趨於收斂,或者因此次的解碼操作中包含太多誤判而導致其中的錯誤發散。在錯誤收斂的情況下,由於隨著碼字中的錯誤逐漸被更正,碼字中的錯誤位元之總數會逐漸減少,並且對於此碼字的解碼成功率會提高。反之,在錯誤發散的情況下,若繼續對此碼字進行解碼操作則可能會因誤判而導致碼字中的錯誤持續增加,甚至使得此碼字的錯誤位元發生率會漸趨上升而導致解碼失敗。因此,在本範例實施例中,在錯誤檢查與校正電路608執行更正第一碼字1202中之錯誤的解碼操作(例如,翻轉演算法、最小-總合演算法及總和-乘積演算法等解碼演算法的至少其中之一)以獲得另一碼字1204 (亦稱為第二碼字1204)後,記憶體管理電路602會進一步根據對第一碼字1202執行第一類解碼操作(即,奇偶檢查操作)的執行結果來判斷此時第二碼字1204中的錯誤是發散或收斂。例如,在本範例實施例中,記憶體管理電路602是計算第一校驗子的總和以獲得對應的錯誤估計資訊,並以此錯誤估計資訊判斷碼字中的錯誤是發散或收斂。
請再參照圖10,在計算校驗子總合的操作中,記憶體管理電路602是累加校驗向量1002中的校驗子S0
~S7
以獲得校驗子總合。在此,累加是指一般加法,而非模2加法。此校驗子總合可用以表示校驗子S0
~S7
中有幾個“1”(或幾個“0”)。例如,若校驗子S0
~S7
中有3個“1”,則此校驗子總合會是“3”。或者,若校驗子S0
~S7
中有7個“1”,則此校驗子總合會是“7”。一般來說,若碼字1001中的錯誤位元越多,則校驗子S0
~S7
中的“1”也會越多,並且校驗子總合會越大。若碼字1001中的錯誤位元越少,則校驗子S0
~S7
中的“1”也會越少,並且校驗子總合會越小。因此,所獲得的錯誤估計資訊會正相關於此校驗子總合。
在本範例實施例中,由於對應一個碼字的錯誤估計資訊是正相關於此碼字校驗子總合,因此,錯誤估計資訊可用以表示此碼字中錯誤位元的總數的大小。藉此,在對第一碼字1202執行第一類解碼操作並判定其具有至少一錯誤的情況下,記憶體管理電路602會根據錯誤估計資訊判斷解碼的結果是發散或收斂。在此,記憶體管理電路602是判斷錯誤估計資訊是否符合一條件(亦稱為第一條件)。具體而言,此第一條件為錯誤估計資訊的值小於或等於錯誤位元數量門檻值,因此當記憶體管理電路602判斷錯誤估計資訊不符合此第一條件時,即相當於解碼結果的錯誤位元的總數大於錯誤位元數量門檻值。據此,記憶體管理電路602會判斷解碼的結果為發散,而不輸出此解碼的結果,亦即,不使用此第二碼字1204進行接續的第二類解碼操作。
反之,當記憶體管理電路602判斷錯誤估計資訊符合此第一條件時,即相當於解碼結果的錯誤位元的總數小於錯誤位元數量門檻值。藉此,記憶體管理電路602會判斷解碼的結果為收斂,而輸出此第二碼字1204,並且使用此第二碼字1204進行接續的第二類解碼操作。例如,記憶體管理電路602會先將第一訊框1101(1)中的第一碼字1102字更新為第二碼字1204(如圖12B所示)。接著,錯誤檢查與校正電路608會對區塊碼1100中的訊框1101(1)~訊框1101(3)進行第二類解碼操作。
由於在本範例實施例中,錯誤檢查與校正電路608會對每一筆屬於同一個訊框的資料進行單訊框編碼,以及對儲存於多個訊框中的資料進行多訊框編碼。因此,在錯誤檢查與校正電路608執行解碼操作的過程中,錯誤檢查與校正電路608會先對區塊碼中每一訊框中所儲存的碼字進行用於檢查資料之正確性的奇偶檢查操作(即,第一類解碼操作)與用於更正資料中之錯誤的解碼操作後,再對區塊碼中多個訊框進行第二類解碼操作。特別是,在本範例實施例中,在錯誤檢查與校正電路608對一個訊框所儲存的碼字執行第一類解碼操作並執行更正其中錯誤以產生另一碼字的解碼操作之後,記憶體管理電路602會進一步判斷解碼的結果(即,解碼後所獲得的碼字)是發散或收斂以決定是否以此碼字進行接續的第二類解碼操作,由此可避免爾後的解碼操作產生更多的誤判,而導致碼字中錯誤的增加。
在此,以圖12A與圖12B中的解碼操作為例,倘若記憶體管理電路602判斷第一碼字1202中的錯誤收斂,其會將第一訊框1101(1)內的第一碼字1202更新為第二碼字1204,並且類似地,記憶體管理電路602會對包含此第一訊框1101(1)的區塊碼1100中其他的訊框(即,訊框1101(2)與訊框1101(3))執行上述判斷其解碼的結果中的錯誤是發散或收斂的操作。由此可確保區塊碼中每一訊框所對應的碼字的錯誤皆不會趨於發散,進而提高解碼成功率與整體的解碼速度。之後,記憶體管理電路602會對區塊碼1100中的訊框1101(1)~訊框1101(3)執行上述第二類解碼操作。在區塊碼中每一訊框所對應之碼字的錯誤皆趨於收斂的前提下,錯誤檢查與校正電路608對區塊碼中所有訊框進行第二類解碼操作的解碼成功率亦整體地被提升。
在另一範例實施例中,在記憶體管理電路602根據區塊碼1100中所有訊框(即,訊框1101(1)~訊框1101(3))的第一類解碼操作的執行結果,分別對訊框1101(1)~訊框1101(3)執行判斷其中碼字的錯誤是發散或收斂的操作後,記憶體管理電路602會進一步判斷訊框1101(1)~訊框1101(3)中是否存在其碼字的錯誤估計資訊符合第一條件的至少一訊框,並且在此條件成立時才對訊框1101(1)~訊框1101(3)同時進行第二類解碼操作,以完成一次的對應區塊碼1100的迭代解碼操作;反之,記憶體管理電路602會停止對應區塊碼1100的迭代解碼操作。具體而言,若此些訊框1101(1)~1101(3)中不存在其碼字的錯誤估計資訊符合第一條件的至少一訊框,即代表區塊碼1100中所有訊框1101(1)~ 1101(3)中的碼字中的錯誤皆是發散的,據此,記憶體管理電路602並不會對訊框1101(1)~訊框1101(3)執行用以更正碼字中之錯誤的解碼操作,亦即,記憶體管理電路602並不會更新訊框1101(1)~1101(3)中的碼字。由於區塊碼1100中每一訊框1101(1)~1101(3)中的碼字皆是維持前一次執行對應區塊碼1100的迭代解碼操作所獲得的結果,因此,在此狀態下執行下一次的對應區塊碼1100的迭代解碼操作仍會得到相同於此次的執行結果,亦即,記憶體管理電路602根據對區塊碼1100中訊框1101(1)~訊框1101(3)執行第一類解碼操作的執行結果,仍會得到訊框1101(1)~1101(3)中的碼字的錯誤皆是發散的結果。也就是說,在此情況下,不管再經過幾此的對應區塊碼1100的迭代解碼操作,區塊碼1100中所有訊框1101(1)~1101(3)中的碼字皆不會再被更動,據此,記憶體管理電路602會判定解碼失敗,並停止對應區塊碼1100的迭代解碼操作,以節省記憶體管理電路602的運算資源。
圖13是根據本發明的一範例實施例所繪示的解碼方法的流程圖。
請參照圖13,在步驟S1301中,記憶體管理電路602會對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字。
在步驟S1303中,記憶體管理電路602根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊。
接著,在步驟S1305中,若所述錯誤估計資訊符合一第一條件,記憶體管理電路602會將所述第一訊框中的第一碼字更新為第二碼字。
之後,在步驟S1307中,錯誤檢查與校正電路608會對包括所述第一訊框的區塊碼執行第二類解碼操作。
然而,圖13中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖13中各步驟可以實作為多個程式碼或是電路,本發明不加以限制。此外,圖13的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
綜上所述,本發明範例實施例提出的解碼方法、記憶體儲存裝置與記憶體控制電路單元,可在對一個存在錯誤的資料執行更正其中錯誤的解碼操作之後,判斷此資料中的錯誤是發散或收斂,以決定是否以此資料進行接續的解碼操作,由此可避免之後的解碼操作產生更多的誤判,而導致碼字中錯誤的增加。藉此,可提高解碼成功率與記憶體儲存裝置的解碼效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧記憶體儲存裝置
11‧‧‧主機系統
110‧‧‧系統匯流排
111‧‧‧處理器
112‧‧‧隨機存取記憶體
113‧‧‧唯讀記憶體
114‧‧‧資料傳輸介面
12‧‧‧輸入/輸出(I/O)裝置
20‧‧‧主機板
201‧‧‧隨身碟
202‧‧‧記憶卡
203‧‧‧固態硬碟
204‧‧‧無線記憶體儲存裝置
205‧‧‧全球定位系統模組
206‧‧‧網路介面卡
207‧‧‧無線傳輸裝置
208‧‧‧鍵盤
209‧‧‧螢幕
210‧‧‧喇叭
32‧‧‧SD卡
33‧‧‧CF卡
34‧‧‧嵌入式儲存裝置
341‧‧‧嵌入式多媒體卡
342‧‧‧嵌入式多晶片封裝儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
400(0)~400(N)‧‧‧實體程式化單元
602‧‧‧記憶體管理電路
604‧‧‧主機介面
606‧‧‧記憶體介面
608‧‧‧錯誤檢查與校正電路
610‧‧‧緩衝記憶體
612‧‧‧電源管理電路
700‧‧‧編碼單元
701(1)~701(p)‧‧‧訊框
702(1)~702(r)‧‧‧位置
710(0)~710(E)‧‧‧實體程式化單元
720、730‧‧‧編碼資料
800‧‧‧奇偶檢查矩陣
910、920‧‧‧狀態
901‧‧‧讀取電壓
930‧‧‧重疊區域
1001、1104、1106‧‧‧碼字
1002‧‧‧校驗向量
1100‧‧‧區塊碼
1101(1)‧‧‧第一訊框
1101(2)、1101(3)‧‧‧訊框
1102、1202‧‧‧第一碼字
1204‧‧‧第二碼字
S1301‧‧‧步驟(對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字)
S1303‧‧‧步驟(根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊)
S1305‧‧‧步驟(若所述錯誤估計資訊符合一第一條件,將所述第一訊框中的第一碼字更新為第二碼字)
S1307‧‧‧步驟(對包括所述第一訊框的區塊碼執行第二類解碼操作)
11‧‧‧主機系統
110‧‧‧系統匯流排
111‧‧‧處理器
112‧‧‧隨機存取記憶體
113‧‧‧唯讀記憶體
114‧‧‧資料傳輸介面
12‧‧‧輸入/輸出(I/O)裝置
20‧‧‧主機板
201‧‧‧隨身碟
202‧‧‧記憶卡
203‧‧‧固態硬碟
204‧‧‧無線記憶體儲存裝置
205‧‧‧全球定位系統模組
206‧‧‧網路介面卡
207‧‧‧無線傳輸裝置
208‧‧‧鍵盤
209‧‧‧螢幕
210‧‧‧喇叭
32‧‧‧SD卡
33‧‧‧CF卡
34‧‧‧嵌入式儲存裝置
341‧‧‧嵌入式多媒體卡
342‧‧‧嵌入式多晶片封裝儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
400(0)~400(N)‧‧‧實體程式化單元
602‧‧‧記憶體管理電路
604‧‧‧主機介面
606‧‧‧記憶體介面
608‧‧‧錯誤檢查與校正電路
610‧‧‧緩衝記憶體
612‧‧‧電源管理電路
700‧‧‧編碼單元
701(1)~701(p)‧‧‧訊框
702(1)~702(r)‧‧‧位置
710(0)~710(E)‧‧‧實體程式化單元
720、730‧‧‧編碼資料
800‧‧‧奇偶檢查矩陣
910、920‧‧‧狀態
901‧‧‧讀取電壓
930‧‧‧重疊區域
1001、1104、1106‧‧‧碼字
1002‧‧‧校驗向量
1100‧‧‧區塊碼
1101(1)‧‧‧第一訊框
1101(2)、1101(3)‧‧‧訊框
1102、1202‧‧‧第一碼字
1204‧‧‧第二碼字
S1301‧‧‧步驟(對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字)
S1303‧‧‧步驟(根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊)
S1305‧‧‧步驟(若所述錯誤估計資訊符合一第一條件,將所述第一訊框中的第一碼字更新為第二碼字)
S1307‧‧‧步驟(對包括所述第一訊框的區塊碼執行第二類解碼操作)
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。 圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。 圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。 圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。 圖5是根據本發明的一範例實施例所繪示的管理可複寫式非揮發性記憶體模組的範例示意圖。 圖6是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。 圖7是根據本發明的一範例實施例所繪示的區塊碼的示意圖。 圖8是根據本發明的一範例實施例所繪示的奇偶檢查矩陣的示意圖。 圖9是根據本發明的一範例實施例所繪示的記憶胞的臨界電壓分佈的示意圖。 圖10是根據本發明的一範例實施例所繪示的奇偶檢查操作的示意圖。 圖11是根據本發明的一範例實施例所繪示的對一個區塊碼執行解碼操作的示意圖。 圖12A~12B是根據本發明的一範例實施例所繪示的對一個訊框執行解碼操作的示意圖。 圖13是根據本發明的一範例實施例所繪示的解碼方法的流程圖。
S1301‧‧‧步驟(對包括第一碼字的第一訊框執行第一類解碼操作以獲得第二碼字)
S1303‧‧‧步驟(根據所述第一類解碼操作的執行結果記錄對應所述第一訊框的錯誤估計資訊)
S1305‧‧‧步驟(若所述錯誤估計資訊符合一第一條件,將所述第一訊框中的第一碼字更新為第二碼字)
S1307‧‧‧步驟(對包括所述第一訊框的區塊碼執行第二類解碼操作)
Claims (24)
- 一種解碼方法,用於一可複寫式非揮發性記憶體模組,該可複寫式非揮發性記憶體模組包括多個記憶胞,該解碼方法包括: 對包括一第一碼字的一第一訊框執行一第一類解碼操作以獲得一第二碼字; 根據該第一類解碼操作的執行結果記錄對應該第一訊框的一錯誤估計資訊; 若該錯誤估計資訊符合一第一條件,將該第一訊框中的該第一碼字更新為該第二碼字;以及 對包括該第一訊框的一區塊碼執行一第二類解碼操作。
- 如申請專利範圍第1項所述的解碼方法,更包括: 發送一第一讀取指令序列,其中該第一讀取指令序列用以從該些記憶胞讀取一資料; 獲得對應於該資料的多個訊框,其中該些訊框包括該第一訊框,且該第一訊框包括該第一碼字。
- 如申請專利範圍第1項所述的解碼方法,其中根據該第一類解碼操作的執行結果記錄該第一訊框的該錯誤估計資訊的步驟包括: 獲得對應該第一碼字的該錯誤估計資訊,其中該錯誤估計資訊用以表示該第一碼字的錯誤位元總數的大小。
- 如申請專利範圍第3項所述的解碼方法,其中獲得對應該第一碼字的該錯誤估計資訊的步驟包括: 對該第一碼字執行一奇偶檢查操作以取得多個第一校驗子,且將該錯誤估計資訊的值記錄為該些第一校驗子的總和。
- 如申請專利範圍第4項所述的解碼方法,其中該第一條件為該錯誤估計資訊的值小於或等於一錯誤位元數量門檻值。
- 如申請專利範圍第2項所述的解碼方法,其中該區塊碼包括對應於該資料的該些訊框, 其中對應該區塊碼的一次的迭代解碼操作包括分別對每一該些訊框進行該第一類解碼操作,以及對每一該些訊框進行該第二類解碼操作。
- 如申請專利範圍第6項所述的解碼方法,其中對包括該第一訊框的該區塊碼執行該第二類解碼操作的步驟之前包括: 判斷該些訊框中是否存在其碼字的錯誤估計資訊符合該第一條件的至少一訊框; 若該些訊框中存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,在對包括該第一訊框的該區塊碼執行該第二類解碼操作後,執行下一次的對應該區塊碼的該迭代解碼操作;以及 若該些訊框中不存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,停止對應該區塊碼的該迭代解碼操作。
- 如申請專利範圍第6項所述的解碼方法,其中該第一類解碼操作包括一低密度奇偶檢查校正碼演算法,且該第二類解碼操作包括一里德-所羅門碼演算法, 其中該第一類解碼操作是分別對每一該些訊框的所有位元進行橫向解碼,該第二類解碼操作是同時對每一該些訊框各別的每一個第N位元進行縱向解碼。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個記憶胞,其中該記憶體控制電路單元包括: 一主機介面,用以耦接至一主機系統; 一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組; 一記憶體管理電路,耦接至該主機介面與該記憶體介面;以及 一錯誤檢查與校正電路,耦接至該記憶體管理電路,並且用以對包括一第一碼字的一第一訊框執行一第一類解碼操作以獲得一第二碼字, 其中該記憶體管理電路用以根據該第一類解碼操作的執行結果記錄對應該第一訊框的一錯誤估計資訊, 其中若該錯誤估計資訊符合一第一條件,該記憶體管理電路更用以將該第一訊框中的該第一碼字更新為該第二碼字, 其中該錯誤檢查與校正電路更用以對包括該第一訊框的一區塊碼執行一第二類解碼操作。
- 如申請專利範圍第9項所述的記憶體控制電路單元,其中該記憶體管理電路更用以發送一第一讀取指令序列,其中該第一讀取指令序列用以從該些記憶胞讀取一資料, 其中該記憶體管理電路更用以獲得對應於該資料的多個訊框,其中該些訊框包括該第一訊框,且該第一訊框包括該第一碼字。
- 如申請專利範圍第9項所述的記憶體控制電路單元,其中在根據該第一類解碼操作的執行結果記錄該第一訊框的該錯誤估計資訊的操作中,該記憶體管理電路更用以獲得對應該第一碼字的該錯誤估計資訊, 其中該錯誤估計資訊用以表示該第一碼字的錯誤位元總數的大小。
- 如申請專利範圍第11項所述的記憶體控制電路單元,其中在獲得對應該第一碼字的該錯誤估計資訊的操作中, 該錯誤檢查與校正電路更用以對該第一碼字執行一奇偶檢查操作以取得多個第一校驗子,且該記憶體管理電路將該錯誤估計資訊的值記錄為該些第一校驗子的總和。
- 如申請專利範圍第12項所述的記憶體控制電路單元,其中該第一條件為該錯誤估計資訊的值小於或等於一錯誤位元數量門檻值。
- 如申請專利範圍第10項所述的記憶體控制電路單元,其中該區塊碼包括對應於該資料的該些訊框, 其中對應該區塊碼的一次的迭代解碼操作包括分別對每一該些訊框進行該第一類解碼操作,以及對每一該些訊框進行該第二類解碼操作。
- 如申請專利範圍第14項所述的記憶體控制電路單元,其中在對包括該第一訊框的該區塊碼執行該第二類解碼操作之前,該記憶體管理電路更用以判斷該些訊框中是否存在其碼字的錯誤估計資訊符合該第一條件的至少一訊框, 其中若該些訊框中存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,該記憶體管理電路更用以在對包括該第一訊框的該區塊碼執行該第二類解碼操作後,執行下一次的對應該區塊碼的該迭代解碼操作, 其中若該些訊框中不存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,該記憶體管理電路更用以停止對應該區塊碼的該迭代解碼操作。
- 如申請專利範圍第14項所述的記憶體控制電路單元,其中該第一類解碼操作包括一低密度奇偶檢查校正碼演算法,且該第二類解碼操作包括一里德-所羅門碼演算法, 其中該第一類解碼操作是分別對每一該些訊框的所有位元進行橫向解碼,該第二類解碼操作是同時對每一該些訊框各別的每一個第N位元進行縱向解碼。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統; 一可複寫式非揮發性記憶體模組,包括多個記憶胞;以及 一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組, 其中該記憶體控制電路單元用以對包括一第一碼字的一第一訊框執行一第一類解碼操作以獲得一第二碼字, 其中該記憶體控制電路單元更用以根據該第一類解碼操作的執行結果記錄對應該第一訊框的一錯誤估計資訊, 其中若該錯誤估計資訊符合一第一條件,該記憶體控制電路單元更用以將該第一訊框中的該第一碼字更新為該第二碼字, 其中該記憶體控制電路單元更用以對包括該第一訊框的一區塊碼執行一第二類解碼操作。
- 如申請專利範圍第17項所述的記憶體儲存裝置,其中該記憶體控制電路單元更用以發送一第一讀取指令序列,其中該第一讀取指令序列用以從該些記憶胞讀取一資料, 其中該記憶體控制電路單元更用以獲得對應於該資料的多個訊框,其中該些訊框包括該第一訊框,且該第一訊框包括該第一碼字。
- 如申請專利範圍第17項所述的記憶體儲存裝置,其中在根據該第一類解碼操作的執行結果記錄該第一訊框的該錯誤估計資訊的操作中,該記憶體控制電路單元更用以獲得對應該第一碼字的該錯誤估計資訊, 其中該錯誤估計資訊用以表示該第一碼字的錯誤位元總數的大小。
- 如申請專利範圍第19項所述的記憶體儲存裝置,其中在獲得對應該第一碼字的該錯誤估計資訊的操作中, 該記憶體控制電路單元更用以對該第一碼字執行一奇偶檢查操作以取得多個第一校驗子,且將該錯誤估計資訊的值記錄為該些第一校驗子的總和。
- 如申請專利範圍第20項所述的記憶體儲存裝置,其中該第一條件為該錯誤估計資訊的值小於或等於一錯誤位元數量門檻值。
- 如申請專利範圍第18項所述的記憶體儲存裝置,其中該區塊碼包括對應於該資料的該些訊框, 其中對應該區塊碼的一次的迭代解碼操作包括分別對每一該些訊框進行該第一類解碼操作,以及對每一該些訊框進行該第二類解碼操作。
- 如申請專利範圍第22項所述的記憶體儲存裝置,其中在對包括該第一訊框的該區塊碼執行該第二類解碼操作之前,該記憶體控制電路單元更用以判斷該些訊框中是否存在其碼字的錯誤估計資訊符合該第一條件的至少一訊框, 其中若該些訊框中存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,該記憶體控制電路單元更用以在對包括該第一訊框的該區塊碼執行該第二類解碼操作後,執行下一次的對應該區塊碼的該迭代解碼操作, 其中若該些訊框中不存在其碼字的錯誤估計資訊符合該第一條件的該至少一訊框,該記憶體控制電路單元更用以停止對應該區塊碼的該迭代解碼操作。
- 如申請專利範圍第22項所述的記憶體儲存裝置,其中該第一類解碼操作包括一低密度奇偶檢查校正碼演算法,且該第二類解碼操作包括一里德-所羅門碼演算法, 其中該第一類解碼操作是分別對每一該些訊框的所有位元進行橫向解碼,該第二類解碼操作是同時對每一該些訊框各別的每一個第N位元進行縱向解碼。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105120883A TWI594255B (zh) | 2016-07-01 | 2016-07-01 | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 |
US15/242,605 US10009045B2 (en) | 2016-07-01 | 2016-08-22 | Decoding method, memory controlling circuit unit and memory storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105120883A TWI594255B (zh) | 2016-07-01 | 2016-07-01 | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI594255B TWI594255B (zh) | 2017-08-01 |
TW201802821A true TW201802821A (zh) | 2018-01-16 |
Family
ID=60188995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105120883A TWI594255B (zh) | 2016-07-01 | 2016-07-01 | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10009045B2 (zh) |
TW (1) | TWI594255B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI640865B (zh) * | 2017-09-05 | 2018-11-11 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
CN109491828B (zh) * | 2017-09-13 | 2022-04-19 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
TWI695378B (zh) * | 2017-12-15 | 2020-06-01 | 群聯電子股份有限公司 | 位元標記方法、記憶體控制電路單元以及記憶體儲存裝置 |
TWI672911B (zh) * | 2019-03-06 | 2019-09-21 | 瑞昱半導體股份有限公司 | 解碼方法及相關電路 |
CN113724774B (zh) * | 2021-09-14 | 2023-08-29 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
CN115514975B (zh) * | 2022-07-19 | 2024-04-23 | 西安万像电子科技有限公司 | 一种编解码方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8001441B2 (en) * | 2006-11-03 | 2011-08-16 | Sandisk Technologies Inc. | Nonvolatile memory with modulated error correction coding |
WO2008151516A1 (fr) * | 2007-06-08 | 2008-12-18 | Datang Mobile Communications Equipment Co., Ltd | Procédé, équipement et système pour codage et décodage ldpc |
KR101398200B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
KR101398212B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
JP5039160B2 (ja) * | 2010-03-02 | 2012-10-03 | 株式会社東芝 | 不揮発性半導体記憶システム |
US9189322B2 (en) * | 2012-08-31 | 2015-11-17 | Kabushiki Kaisha Toshiba | Memory system |
JP6446730B2 (ja) * | 2013-03-07 | 2019-01-09 | マーベル ワールド トレード リミテッド | データをデコードするための方法およびデコーダ |
US9287900B2 (en) * | 2014-07-10 | 2016-03-15 | International Business Machines Corporation | Decoding of product codes |
-
2016
- 2016-07-01 TW TW105120883A patent/TWI594255B/zh active
- 2016-08-22 US US15/242,605 patent/US10009045B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI594255B (zh) | 2017-08-01 |
US10009045B2 (en) | 2018-06-26 |
US20180006669A1 (en) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI652677B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI612527B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI594255B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI592937B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI600024B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI670715B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI658463B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI672698B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201913382A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI606333B (zh) | 資料處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI634556B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI628543B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20160020784A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI670725B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI607452B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201905925A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI597731B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107590018B (zh) | 译码方法、存储器控制电路单元及存储器存储装置 | |
CN107301873B (zh) | 译码方法、存储器储存装置及存储器控制电路单元 | |
TWI805509B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI764602B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI836877B (zh) | 讀取電壓校正方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN111258791B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
TW202416132A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |