TWI721842B - 解碼方法、記憶體儲存裝置及記憶體控制電路單元 - Google Patents
解碼方法、記憶體儲存裝置及記憶體控制電路單元 Download PDFInfo
- Publication number
- TWI721842B TWI721842B TW109110493A TW109110493A TWI721842B TW I721842 B TWI721842 B TW I721842B TW 109110493 A TW109110493 A TW 109110493A TW 109110493 A TW109110493 A TW 109110493A TW I721842 B TWI721842 B TW I721842B
- Authority
- TW
- Taiwan
- Prior art keywords
- decoding
- memory
- count value
- bits
- value
- Prior art date
Links
Images
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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
- H03M13/3927—Log-Likelihood Ratio [LLR] computation by combination of forward and backward metrics into LLRs
-
- 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/6325—Error control coding in combination with demodulation
-
- 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/098—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
-
- 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/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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
-
- 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/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory 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/2957—Turbo codes and 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- 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/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Read Only Memory (AREA)
Abstract
本發明提出一種解碼方法、記憶體儲存裝置及記憶體控制電路單元。所述方法包括:接收讀取指令序列,其中讀取指令序列用以從多個記憶胞中讀取多個位元;計算多個位元中第一值的第一計數值及第二值的第二計數值;以及根據第一計數值及第二計數值將對應於多個位元的解碼參數調整為特定解碼參數,並根據特定解碼參數執行解碼操作,其中所調整的解碼參數影響多個位元在解碼操作中被視為錯誤位元的機率。
Description
本發明是有關於一種解碼技術,且特別是有關於一種解碼方法、記憶體儲存裝置及記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了確保可複寫式非揮發性記憶體模組所儲存之資料的正確性,在將某一資料儲存至可複寫式非揮發性記憶體模組之前,此資料會先被編碼。編碼後的資料(包含原始資料與錯誤更正碼)會被儲存至可複寫式非揮發性記憶體模組中。往後,編碼後的資料可從可複寫式非揮發性記憶體模組中被讀取並且解碼以更正其中可能存在的錯誤。錯誤更正碼例如可使用代數解碼演算法,如(BCH code),或機率解碼演算法,如低密度奇偶檢查碼(low density parity code,LDPC)。低密度奇偶檢查碼是使用一個稀疏矩陣(sparse matrix)來編碼與解碼。一般來說,LDPC解碼器會在迭代解碼操作中,經由未滿足檢查節點(unsatisfied check node)資訊或是對數可能性比值(log-likelihood ratio,LLR)來進行解碼。因此,如何獲得適當的LLR值以提升LDPC解碼的效能,為此領域技術人員所關心的議題。
本發明提供一種解碼方法、記憶體儲存裝置及記憶體控制電路單元,可以計算第一值及第二值的分布並根據分布的平均程度調整解碼參數,進而提升解碼的更正能力及提高解碼成功的機率,以降低解碼延遲。
本發明提出一種解碼方法,用於可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞所述解碼方法包括:接收讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元;計算所述多個位元中第一值的第一計數值及第二值的第二計數值;以及根據所述第一計數值及所述第二計數值將對應於所述多個位元的解碼參數調整為特定解碼參數,並根據所述特定解碼參數執行解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
在本發明的一實施例中,其中所述解碼參數與所述特定解碼參數為對數可能性比值(Log Likelihood Ratio,LLR)。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟之前,所述解碼方法還包括:根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的一電壓位準調整為一第二電壓位準。
在本發明的一實施例中,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
本發明提供一種記憶體儲存裝置,包括:連接介面單元、可複寫式非揮發性記憶體模組以及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述可複寫式非揮發性記憶體模組包括多個記憶胞。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,其中所述記憶體控制電路單元用以接收讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元。所述記憶體控制電路單元更用以透過計數器計算所述多個位元中第一值的第一計數值及第二值的第二計數值,並且所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將對應於所述多個位元的解碼參數調整為特定解碼參數,並根據所述特定解碼參數執行解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
在本發明的一實施例中,其中所述解碼參數與所述特定解碼參數為對數可能性比值。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作之前,所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的電壓位準調整為第二電壓位準。
在本發明的一實施例中,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
本發明提供一種記憶體控制電路單元,用於控制包括可複寫式非揮發性記憶體模組的記憶體儲存裝置,且所述記憶體控制電路單元包括:主機介面、記憶體介面以及記憶體管理電路。所述主機介面用以耦接至主機系統。所述記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞。所述記憶體管理電路耦接至所述主機介面與所述記憶體介面,其中所述記憶體控制電路單元用以接收讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元。所述記憶體控制電路單元更用以透過計數器計算所述多個位元中第一值的第一計數值及第二值的第二計數值,並且所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將對應於所述多個位元的解碼參數調整為特定解碼參數,並根據所述特定解碼參數執行解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
在本發明的一實施例中,其中所述解碼參數與所述特定解碼參數為對數可能性比值。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
在本發明的一實施例中,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
在本發明的一實施例中,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作之前,所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的電壓位準調整為第二電壓位準。
在本發明的一實施例中,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
基於上述,本發明提供的解碼方法、記憶體儲存裝置及記憶體控制電路單元可以計算第一值及第二值的分布並判斷分布是否平均。而根據分布的平均程度,記憶體控制電路單元可以將位元所對應的解碼參數調整為特定解碼參數,並根據位元的數值以及特定解碼參數再次執行解碼操作以嘗試獲得成功解碼後的碼字。藉由上述方式,能夠提升解碼的更正能力及提高解碼成功的機率,以降低解碼延遲。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(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可為其所使用的SD卡32、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)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、嵌入式多晶片封裝(embedded Multi Chip Package,eMCP)介面標準、小型快閃(Compact Flash,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中的記憶胞是以陣列的方式設置。以下以二維陣列來對記憶胞陣列進行說明。但是,在此須注意的是,以下範例實施例只是記憶胞陣列的一種範例,在其他的範例實施例中,記憶胞陣列的配置方式可以被調整以符合實務上的需求。
圖5是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。圖6是根據一範例實施例所繪示的記憶胞陣列的示意圖。
請同時參照圖5與圖6,可複寫式非揮發性記憶體模組406包括記憶胞陣列2202、字元線控制電路2204、位元線控制電路2206、行解碼器(column decoder)2208、資料輸入/輸出緩衝器2210與控制電路2212。
在本範例實施例中,記憶胞陣列2202可包括用以儲存資料的多個記憶胞502、多個選擇閘汲極(select gate drain,SGD)電晶體512與多個選擇閘源極(select gate source,SGS)電晶體514、以及連接此些記憶胞的多條位元線504、多條字元線506、與共用源極線508(如圖6所示)。記憶胞502是以陣列方式(或立體堆疊的方式)配置在位元線504與字元線506的交叉點上。當從記憶體控制電路單元404接收到寫入指令或讀取指令時,控制電路2212會控制字元線控制電路2204、位元線控制電路2206、行解碼器2208、資料輸入/輸出緩衝器2210來寫入資料至記憶胞陣列2202或從記憶胞陣列2202中讀取資料,其中字元線控制電路2204用以控制施予至字元線506的電壓,位元線控制電路2206用以控制施予至位元線504的電壓,行解碼器2208依據指令中的列位址以選擇對應的位元線,並且資料輸入/輸出緩衝器2210用以暫存資料。
可複寫式非揮發性記憶體模組406中的記憶胞是以臨界電壓的改變來儲存多位元(bits)。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,因而改變了記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為「把資料寫入至記憶胞」或「程式化記憶胞」。隨著臨界電壓的改變,記憶胞陣列2202的每一記憶胞具有多個儲存狀態。並且透過讀取電壓可以判斷記憶胞是屬於哪一個儲存狀態,藉此取得記憶胞所儲存的位元。
圖7是根據一範例實施例所繪示儲存於記憶胞陣列中的寫入資料所對應的閘極電壓的統計分配圖。
請參照圖7,以MLC NAND型快閃記憶體為例,隨著不同的臨界電壓,每一記憶胞具有4種儲存狀態,並且此些儲存狀態分別地代表“11”、“10”、“00”與“01”等位元。換言之,每一個儲存狀態包括最低有效位元(Least Significant Bit,LSB)以及最高有效位元(Most Significant Bit,MSB)。在本範例實施例中,儲存狀態(即,“11”、“10”、“00”與“01”)中從左側算起之第1個位元為LSB,而從左側算起之第2個位元為MSB。因此,在此範例實施例中,每一記憶胞可儲存2個位元。必須瞭解的是,圖8所繪示的臨界電壓及其儲存狀態的對應僅為一個範例。在本發明另一範例實施例中,臨界電壓與儲存狀態的對應亦可是隨著臨界電壓越大而以“11”、“10”、“00”與“01”排列,或是其他排列。此外,在另一範例時實例中,亦可定義從左側算起之第1個位元為MSB,而從左側算起之第2個位元為LSB。
圖8是根據一範例實施例所繪示之程式化記憶胞的示意圖。
請參照圖8,在本範例實施例中,記憶胞的程式化是透過脈衝寫入/驗證臨界電壓方法來完成。具體來說,欲將資料寫入至記憶胞時,記憶體控制電路單元404會設定初始寫入電壓以及寫入脈衝時間,並且指示可複寫式非揮發性記憶體模組406的控制電路2212使用所設定的初始寫入電壓以及寫入脈衝時間來程式化記憶胞,以進行資料的寫入。之後,記憶體控制電路單元404會施加驗證電壓至控制閘極來判斷記憶胞是否導通,進而判斷記憶胞是否已處於正確的儲存狀態(具有正確的臨界電壓)。倘若記憶胞未被程式化至正確的儲存狀態時,記憶體控制電路單元404指示控制電路2212以目前施予的寫入電壓加上一增量階躍脈衝程式(Incremental-step-pulse programming,ISPP)調整值作為新的寫入電壓並且依據新的寫入電壓與寫入脈衝時間再次來程式化記憶胞。反之,倘若記憶胞已被程式化至正確的儲存狀態時,則表示資料已被正確地寫入至記憶胞。例如,初始寫入電壓會被設定為16伏特(Voltage,V),寫入脈衝時間會被設定為18微秒(microseconds,μs)並且增量階躍脈衝程式調整值被設定為0.6V,但本發明不限於此。
圖9是根據一範例實施例所繪示的從記憶胞中讀取資料的示意圖,其是以MLC NAND型快閃記憶體為例。
請參照圖9,記憶胞陣列2202之記憶胞的讀取運作是藉由施予讀取電壓於控制閘極,藉由記憶胞的導通狀態,來識別記憶胞儲存之資料。驗證位元(VA)是用以指示施予讀取電壓VA時記憶胞是否為導通;驗證位元(VC)是用以指示施予讀取電壓VC時記憶胞是否為導通;驗證位元(VB)是用以指示施予讀取電壓VB時記憶胞是否為導通。在此假設驗證位元是“1”時表示對應的記憶胞導通,而驗證位元是“0”時表示對應的記憶胞沒有導通。如圖9所示,透過驗證位元(VA)~(VC)可以判斷記憶胞是處於哪一個儲存狀態,進而取得所儲存的位元。
圖10是根據另一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
請參照圖10,以TLC NAND型快閃記憶體為例,每一個儲存狀態包括左側算起之第1個位元的最低有效位元LSB、從左側算起之第2個位元的中間有效位元(Center Significant Bit,CSB)以及從左側算起之第3個位元的最高有效位元MSB。在此範例中,依照不同的臨界電壓,記憶胞具有8種儲存狀態(即,“111”、 “110”、“100”、“101”、“001”、“000”、“010”與“011”)。藉由施加讀取電壓VA~VG於控制閘極,可以識別記憶胞所儲存的位元。
在此需說明的是,以MLC NAND型快閃記憶體為例,排列在同一條字元線上的數個記憶胞可組成2個實體程式化單元,其中由此些記憶胞之LSB所組成的實體程式化單元稱為下實體程式化單元,並且由此些記憶胞之MSB所組成的實體程式化單元稱為上實體程式化單元。以TLC NAND型快閃記憶體為例,排列在同一條字元線上的數個記憶胞可組成3個實體程式化單元,其中由此些記憶胞之LSB所組成的實體程式化單元稱為下實體程式化單元,由此些記憶胞之CSB所組成的實體程式化單元稱為中實體程式化單元,並且由此些記憶胞之MSB所組成的實體程式化單元稱為上實體程式化單元。
圖11是根據本範例實施例所繪示之記憶胞儲存架構與實體抹除單元的範例示意圖。
請參照圖11,以TLC NAND型快閃記憶體為例,一個實體抹除單元是由多個實體程式化單元組所組成,其中每個實體程式化單元組包括由排列在同一條字元線上的數個記憶胞所組成的下實體程式化單元、中實體程式化單元與上實體程式化單元。例如,在實體抹除單元中,屬於下實體程式化單元的第0個實體程式化單元、屬於中實體程式化單元的第1個實體程式化單元和屬於上實體程式化單元的第2個實體程式化單元會被視為一個實體程式化單元組。類似地,第3、4、5個實體程式化單元會被視為一個實體程式化單元組,並且以此類推其他實體程式化單元亦是依據此方式被區分為多個實體程式化單元組。也就是說,在圖11的範例實施例中,實體抹除單元總共有258個實體程式化單元,且由於排列在同一條字元線上的數個記憶胞所組成的下實體程式化單元、中實體程式化單元與上實體程式化單元會組成一個實體程式化單元組,故圖11的實體抹除單元總共可以分成86個實體程式化單元組。然而需注意的是,本發明並不用於限定實體抹除單元中的實體程式化單元或實體程式化單元組的個數。
圖12是根據本發明範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
請參照圖12,可複寫式非揮發性記憶體模組406的記憶胞502會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元400(0)~400(N)。具體來說,同一個字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一個字元線上的實體程式化單元可被分類為下實體程式化單元與上實體程式化單元。例如,每一記憶胞的LSB是屬於下實體程式化單元,並且每一記憶胞的MSB是屬於上實體程式化單元。在此範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面或是實體扇(sector)。若實體程式化單元為實體頁面,則每一個實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體扇,用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤更正碼)。在本範例實施例中,每一個資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,本發明並不限制實體扇的大小以及個數。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊。
圖13是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。必須瞭解的是,圖13所示之記憶體控制電路單元的結構僅為一範例,本發明不以此為限。
請參照圖13,記憶體控制電路單元404包括記憶體管理電路702、主機介面704、記憶體介面706及錯誤檢查與校正電路708。
記憶體管理電路702用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路702具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路702或任何包含於記憶體控制電路單元404中的電路元件之操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路702的控制指令是以韌體型式來實作。例如,記憶體管理電路702具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路702的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路702具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路702的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路702的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路702包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的記憶胞或其群組。記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令序列以將資料寫入至可複寫式非揮發性記憶體模組406中。記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料。記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除。資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。在一範例實施例中,記憶體管理電路702還可以下達其他類型的指令序列給可複寫式非揮發性記憶體模組406以指示執行相對應的操作。
主機介面704是耦接至記憶體管理電路702並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面704來傳送至記憶體管理電路702。在本範例實施例中,主機介面704是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面704亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面706是耦接至記憶體管理電路702並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面706轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路702要存取可複寫式非揮發性記憶體模組406,記憶體介面706會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列例如是由記憶體管理電路702產生並且透過記憶體介面706傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
錯誤檢查與校正電路708是耦接至記憶體管理電路702並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路702從主機系統11中接收到寫入指令時,錯誤檢查與校正電路708會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC code)或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路702會將對應此寫入指令的資料與對應的錯誤更正碼或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路702從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼或錯誤檢查碼,並且錯誤檢查與校正電路708會依據此錯誤更正碼或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
在本發明一範例實施例中,記憶體控制電路單元404還包括緩衝記憶體710與電源管理電路712。緩衝記憶體710是耦接至記憶體管理電路702並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路712是耦接至記憶體管理電路702並且用以控制記憶體儲存裝置10的電源。
在本發明一範例實施例中,記憶體控制電路單元404還包括計數器714。計數器714是耦接至記憶體管理電路702並且用以從可複寫式非揮發性記憶體模組406中讀取資料時計數讀取資料的相關資訊。
圖14是根據一範例實施例繪示硬位元模式解碼的示意圖。
請參照圖14,在此以SLC快閃記憶體為例,分布1410與分布1420是用來表示多個記憶胞的儲存狀態,而分布1410與1420分別代表著不同的儲存狀態。這些記憶胞可以屬於同樣的實體程式化單元或是不同的實體程式化單元,本發明並不在此限。在此假設當一個記憶胞屬於分布1410時,此記憶胞所儲存的是位元“1”;當記憶胞屬於分布1420時,此記憶胞儲存的是位元“0”。當記憶體管理電路702以讀取電壓1440來讀取記憶胞時,記憶體管理電路702會取得驗證位元,其是用來指示此記憶胞是否為導通。在此假設記憶胞導通時驗證位元是“1”,反之則是 “0”,但本發明並不在此限。若此驗證位元為 “1”,則記憶體管理電路702會判斷此記憶胞屬於分布1410,反之則是分布1420。然而,分布1410與分布1420在區域1430中是重疊的。也就是說,有若干個記憶胞應該是屬於分布1410但被辨識為分布1420,並且有若干個記憶胞應該是屬於分布1420但被辨識為分布1410。
在此範例實施例中,當要讀取上述的記憶胞時,記憶體管理電路702會先選擇一讀取電壓(例如,讀取電壓1441)來讀取這些記憶胞以取得記憶胞的驗證位元。錯誤檢查與校正電路708會根據記憶胞的驗證位元來執行包含一機率解碼演算法的解碼操作,以產生多個解碼位元,而此些解碼位元可以組成一個碼字。
在本範例實施例中,機率解碼演算法是把一個符號(symbol)可能的解碼結果當做一個候選人(candidate),並且在解碼過程中輸入的資訊或者中間運算過程的數值是以這些候選人的機率值或是候選人之間機率的比例來表示,進而決定最有可能的候選人是哪一個。舉例而言,如果一個符號有兩個候選人(位元0 and 1),機率解碼演算法是各自依照0或者1發生的機率去計算最有可能的候選人,或者是以0與1之間機率的比例去計算最有可能的候選人。假如是N個候選人,例如在有限場(Finite Field)下可能的數值為0~N-1(N為正整數,每一個候選人是代表多個位元),則機率解碼演算法是各自計算N個候選人的機率來決定最有可能的候選人,或者是以其中一個數值的機率作為分母去計算相對的機率比例來決定最有可能的候選人。在一範例實施例中,上述機率的比例也可以用對數的形式來表示。
在本範例實施例中,機率解碼演算法可以是迴旋碼(convolutional code)、渦輪碼(turbo code)、低密度奇偶檢查碼(low-density parity-check code)或其他具有機率解碼特徵之演算法。舉例來說,在迴旋碼與渦輪碼中,可以用有限狀態機(finite state machine)來編碼與解碼,並且在本範例實施例中會根據驗證位元來計算最有可能的多個狀態,進而產生解碼位元。以下將以低密度奇偶檢查碼為例進行說明。
若使用的是低密度奇偶檢查碼,在根據驗證位元來執行解碼操作時,記憶體管理電路702還會根據每一個驗證位元來取得每一個記憶胞的解碼初始值。例如,若驗證位元是 “1”,記憶體管理電路702會設定對應的記憶胞的解碼初始值為n;若驗證位元是 “0”,則解碼初始值為-n。其中n為正數,但本發明並不限制正整數n的值為多少。在一實施例中,n例如是8。
接下來,錯誤檢查與校正電路708會根據這些解碼初始值來執行低密度奇偶檢查演算法的疊代解碼以產生包含多個解碼位元的碼字。在疊代解碼中,這些解碼初始值會不斷地被更新以代表一個機率值,而這個機率值亦被稱為可靠度(realiability)或信心度(belief)。被更新的解碼初始值會被轉換成多個解碼位元,錯誤檢查與校正電路708會把這些解碼位元當作一個向量,並將此向量與低密度奇偶檢查演算法的奇偶檢查矩陣(parity-check matrix)做模2(module 2)的矩陣相乘,以取得多個校驗子(syndrome)。這些校驗子可以用來判斷解碼位元所組成的碼字是否為有效的碼字。若解碼位元所組成的碼字是有效的碼字,則疊代解碼會停止,並且錯誤檢查與校正電路708會輸出這些解碼位元所組成的碼字。若解碼位元組成無效的碼字,則會繼續更新解碼初始值並且產生新的解碼位元以進行下一次疊代。當疊代次數到達預設疊代次數時,疊代解碼會停止。錯誤檢查與校正電路708會利用最後一次疊代所產生的解碼位元來判斷是否解碼成功。例如,若根據校驗子判斷最後一次疊代所產生的解碼位元組成有效的碼字,則是解碼成功;若第一解碼位元組成無效的碼字,則表示解碼失敗。
在另一範例實施例中解碼操作所包括的機率解碼演算法是迴旋碼與渦輪碼,並且解碼操作中還會包括其他的錯誤校正碼。例如,迴旋碼與渦輪碼可以搭配任意演算法的奇偶碼一起使用。在解碼操作中迴旋碼或渦輪碼的解碼部分執行完畢以後,奇偶碼可以用來判斷所產生的解碼位元所組成的碼字是否為有效的碼字,進而判斷是否解碼成功。
不論使用何種錯誤校正碼,若解碼失敗,表示這些記憶胞儲存有不可更正的錯誤位元。若解碼失敗,記憶體管理電路702會重新取得另一讀取電壓,並用此另一讀取電壓(例如讀取電壓1442)來讀取這些記憶胞,以重新取得記憶胞的驗證位元。記憶體管理電路702會根據重新取得的驗證位元來執行上述的解碼操作以取得由多個解碼位元組成的另一碼字。在一範例實施例中,錯誤檢查與校正電路708會根據該另一碼字所對應的校驗子判斷所述另一碼字是否為有效的碼字。若所述另一碼字非為有效的碼字時,記憶體管理電路702會判斷解碼失敗。若重新取得讀取電壓的次數沒有超過預設次數,則記憶體管理電路702會再重新取得其他取得電壓(例如,讀取電壓1443),並且根據重新取得的讀取電壓1443讀取記憶胞,以重新取得驗證位元並執行解碼操作。
換句話說,當有不可更正的錯誤位元時,透過重新取得讀取電壓,一些記憶胞的驗證位元會被改變,進而改變機率解碼演算法中若干個機率值,進而有機會改變了解碼操作的解碼結果。邏輯上來說,上述重新取得讀取電壓的動作是要翻轉(flip)一個碼字中的若干位元,並對新的碼字重新解碼。在一些情況下,在翻轉前無法解碼的碼字(有不可更正的錯誤位元),有可能在翻轉後可以解碼。並且,在一範例實施例中記憶體管理電路702會嘗試解碼數次,直到嘗試的次數超過預設次數為止。然而,本發明並不限制預設次數為多少。
值得注意的是,在圖14中所舉的是SLC快閃記憶體的例子,但重新取得讀取電壓的步驟也可以適用於MLC或是TLC快閃記憶體。如圖9所示,改變讀取電壓VA會翻轉一個記憶胞的LSB,而改變讀取電壓VB或VC則可以翻轉一個記憶胞的MSB。因此,改變讀取電壓VA、VB或VC都可以將一個碼字改變為另一個碼字。改變碼字的結果也適用於圖10的TLC快閃記憶體。本發明並不限制所使用的是SLC、MLC或是TLC快閃記憶體。
在圖14的範例實施例中,記憶胞的解碼初始值是根據一個驗證位元而被分為兩個數值(例如,n與-n)。根據兩種數值來執行的疊代解碼亦被稱為硬位元模式(hard bit mode)的疊代解碼(亦稱為,硬位元解碼操作)。然而,上述改變讀取電壓的步驟也可以應用在軟位元模式(soft bit mode)的疊代解碼(亦稱為,軟位元解碼操作),其中每一個記憶胞的解碼初始值是根據多個驗證位元所決定。值得注意的是,不論是硬位元模式或是軟位元模式,在疊代解碼中都會計算位元的機率值,因此都屬於機率解碼演算法。
圖15是根據一範例實施例繪示軟位元模式解碼的示意圖。
如上所述,當施加讀取電壓於記憶胞的控制閘極以後,隨著記憶胞是否導通,記憶體管理電路702所取得的驗證位元會是“0”或是“1”。在此假設若記憶胞沒有導通時則對應的驗證位元是 “0”,反之則是“1”。在圖15中,記憶體管理電路702會施加讀取電壓V
1~V
5至記憶胞以取得5個驗證位元。具體來說,讀取電壓V
1是對應到驗證位元b
1;讀取電壓V
2是對應到驗證位元b
2;讀取電壓V
3是對應到驗證位元b
3;讀取電壓V
4是對應到驗證位元b
4;讀取電壓V
5是對應到驗證位元b
5。若一個記憶胞的臨界電壓是在區間1501,則從驗證位元b
1至驗證位元b
5,記憶體管理電路702所取得的驗證位元會是“11111”;若記憶胞的臨界電壓是在區間1502,則驗證位元會是“01111”;若記憶胞的臨界電壓是在區間1503,則驗證位元會是“00111”;若記憶胞的臨界電壓是在區間1504,則驗證位元會是“00011”;若記憶胞的臨界電壓是在區間1505,則驗證位元會是“00001” ;若記憶胞的臨界電壓是在區間1506,則驗證位元會是“00000”。
在此範例實施例中,讀取電壓V
1~V
5的其中之一會被設定為正負號(sign)讀取電壓。此正負號讀取電壓是用來決定解碼初始值的正負號。例如,若讀取電壓V
3為正負號讀取電壓,則區間1501~1503所對應的解碼初始值會小於0,並且區間1504~1506所對應的解碼初始值會大於0。此外,在每一個區間中,可以事先計算出記憶胞屬於分布1510的機率與屬於分布1520的機率。根據這兩個機率可以計算出對數可能性比值(Log Likelihood Ratio,LLR),而此對數可能性比值可用來決定解碼初始值的絕對值的大小。因此,記憶體管理電路702是根據正負號讀取電壓與驗證位元b
1~b
5取得記憶胞在軟位元模式下的解碼初始值。舉例來說,區間1501~1503所對應的解碼初始值會可以分別為-8、-4與-3,區間1504~1506所對應的解碼初始值會可以分別為3、4與8。在一範例實施例中,各個區間所對應的解碼初始值可以事先被計算出來並且儲存在一個查找表中。記憶體管理電路702可以將驗證位元b
1~b
5輸入此查找表中,藉此取得對應的解碼初始值。換言之,實作上記憶體管理電路702也可以根據驗證位元b
1~b
5,而不參照正負號讀取電壓,便取得記憶胞在軟位元模式下的解碼初始值。此外,若設定不同的正負號讀取電壓,記憶體管理電路702可以使用不同的查找表。
在記憶體管理電路702取得解碼初始值以後,錯誤檢查與校正電路708會對解碼初始值執行疊代解碼以取得由多個解碼位元組成的碼字,並利用這些由多個解碼位元組成的碼字來判斷是否解碼成功。若解碼失敗,記憶體管理電路702可以重新取得另一讀取電壓。
在重新取得另一讀取電壓以後,每一個區間所對應的對數可能性比值也會改變,因此記憶體管理電路702會使用不同的查找表以取得解碼初始值。邏輯上來說,改變讀取電壓是為了翻轉一個碼字中若干個位元,並且給予不同的解碼初始值(改變數值大小或是正負號),使得改變前無法解碼的碼字(有不可更正的錯誤位元),有可能在改變後可以解碼。
在圖15的範例實施例中,一個軟位元模式解碼(亦稱為,軟位元解碼操作)的解碼初始值是由5個驗證位元(讀取電壓)所決定。然而,在其他範例實施例中,一個軟位元模式解碼的解碼初始值也可以由數目更多或更少的驗證位元來決定,本發明並不在此限。
一般來說,NAND型快閃記憶體運作時,會藉由資料隨機化(randomizer)電路(未繪示)擾亂(convert)欲寫入至可複寫式非揮發性記憶體模組406的資料和還原(或稱反擾亂)從可複寫式非揮發性記憶體模組406中讀取的資料,以使0與1的分布平均。具體來說,為了使程式化至可複寫式非揮發性記憶體模組406的資料呈現不規則的散亂狀態,資料會先經過資料隨機化處理(例如編輯、演算或重新排列)再被寫入,以致於實際程式化至實體程式化單元的資料夠亂,而避免因為分佈不平均、讀取電壓偏移或位元線電阻不均勻等因素而造成資料的識別錯誤,其中,經過隨機化處理的新資料與原資料不同,但新資料中0與1的比例可與原資料相同或不同。同樣地,由於實際程式化至實體程式化單元的資料是已被擾亂過,因此,從可複寫式非揮發性記憶體模組406中讀出的資料亦會先經過資料隨機化電路的還原處理,以還原成原始的資料。
在一範例實施例中,欲儲存的資料可先經由錯誤檢查與校正電路708執行編碼處理而產生編碼資料,再經由資料隨機化電路對編碼資料執行擾亂處理。然而,在另一範例實施例中,欲儲存的資料也可先經由資料隨機化電路執行擾亂處理而產生已擾亂資料,再由錯誤檢查與校正電路708對已擾亂資料執行編碼處理。此外,資料隨機化電路可以實作為獨立在錯誤檢查與校正電路708之外,或者也可以實作在錯誤檢查與校正電路708中。
然而,可複寫式非揮發性記憶體模組406會隨著時間及寫入/抹除次數 (Program/Erase Cycle,P/E Cycle)、資料維持(data retention)、溫度、讀取次數(read count)或讀取電壓(read level)等使用狀態而改變記憶體狀態,例如會造成原本分布平均的0與1變的不平均。因此,本發明提出的解碼方法可以在從可複寫式非揮發性記憶體模組406中讀出資料之後,找出資料中0與1分布的狀態,並且依據0與1分布的狀態將對應該資料的對數可能性比值(亦稱為,解碼參數)調整為一特定數值並根據調整後的對數可能性比值所對應的解碼初始值對讀出的資料進行解碼。特別是,將對應該資料的對數可能性比值調整為特定數值可以獲得對應目前記憶體狀態的對數可能性比值,進而能夠提高解碼成功的機率。
需先說明的是,以下說明記憶體控制電路單元404的操作時,可視為說明記憶體管理電路702的操作。
在本範例實施例中,記憶體控制電路單元404所接收的讀取指令序列用以從記憶胞中讀取位元。具體而言,記憶體控制電路單元404在接收讀取指令序列後,會先從記憶胞中讀取位元。讀取到的位元可被識別為第一值或第二值。在此,位元為“1”或“0”,在本範例實施例中,“1”被稱為第一值,並且“0”被稱為第二值,但本發明不限於此。在另一範例實施例中,“1”亦可被稱為第二值,並且“0”亦可被稱為第一值。
接著,記憶體控制電路單元404計算所讀取的位元中第一值的第一計數值及第二值的第二計數值。具體而言,記憶體控制電路單元404透過計數器714計算所讀取的位元中屬於第一值的位元的數目(即,第一計數值)與屬於第二值的位元的數目(即,第二計數值)。
最後,記憶體控制電路單元404可根據第一計數值及第二計數值將對應於位元的解碼參數調整為特定解碼參數,並根據特定解碼參數執行解碼操作。其中所調整的解碼參數影響各位元在解碼操作中被視為錯誤位元的機率。一般來說,讀取出的待解碼資料中0與1的分布越不平均,表示記憶體的狀態越不可靠。因此在本範例實施例中,記憶體控制電路單元404可藉由計算第一計數值與第二計數值的差值以調整對應於位元的解碼參數。
具體而言,如果第一計數值與第二計數值的差值大於0,表示所讀取的位元中屬於第一值的位元的數目大於屬於第二值的位元的數目。此情形表示所讀取的位元中0錯成1的數目比1錯成0的數目多,第一計數值可能含有較多的錯誤位元而較不具可靠性,而第二計數值可能含有較少的錯誤位元而具可靠性。因此記憶體控制電路單元404降低第一數值對應的解碼參數,及/或提高第二數值對應的解碼參數。另一方面,如果第一計數值與第二計數值的差值小於0,表示所讀取的位元中屬於第一值的位元的數目小於屬於第二值的位元的數目。此情形表示所讀取的位元中1錯成0的數目比0錯成1的數目多,第一計數值可能含有較少的錯誤位元而具可靠性,而第二計數值可能含有較多的錯誤位元而較不具可靠性。因此記憶體控制電路單元404提高第一數值對應的解碼參數,及/或降低第二數值對應的解碼參數。於此,記憶體控制電路單元404可只調整第一數值及第二數值至少其中之一對應的解碼參數,也可同時調整第一數值及第二數值分別對應的解碼參數,本發明不在此限制。
本範例實施例還可利用預設閥值來判斷調整第一數值或第二數值對應的解碼參數的大小。在本範例實施例中,記憶體控制電路單元404計算第一計數值及第二計數值的差值的絕對值,若此差值的絕對值大於第一閥值,則記憶體控制電路單元404依據第一調整值將對應於位元的解碼參數調整為特定解碼參數。用於判斷調整對數可能性比值的預設閥值可以是一或多個,本發明不在此限制。在另一實施例中,若第一計數值及第二計數值的差值的絕對值大於第二閥值,則記憶體控制電路單元404依據第二調整值將對應於位元的解碼參數調整為特定解碼參數。在本範例實施例中,第二閥值大於第一閥值,並且第二調整值大於第一調整值。
在本範例實施例中,用於調整解碼參數為特定解碼參數的調整值例如為±1~3。在另一範例實施例中,用於調整解碼參數為特定解碼參數的調整值例如為解碼參數的±10~20%。本發明不在此限制調整值。上述解碼參數、預設閥值及調整值可經事先經實驗獲得,並儲存於可複寫式非揮發性記憶體模組406的特定區域中,本發明不在此限制。
在本範例實施例中,解碼參數可包括一或多個正解碼參數及一或多個負解碼參數,並且用於調整正解碼參數的調整值及用於調整負解碼參數的調整值可以相同或不同。
在本範例實施例中,解碼操作可以是硬位元解碼操作或軟位元解碼操作。以下分別以硬位元解碼操作及軟位元解碼操作中調整對數可能性比值的實施例進行說明。
圖16是根據一範例實施例繪示解碼初始值的範例。硬位元解碼操作中對數可能性比值可用來決定解碼初始值的絕對值的大小,並且記憶胞對應的解碼初始值是根據一個驗證位元(例如,“1”或“0”)而被分為兩個數值(例如,n與-n),解碼初始值是事先被計算出來且存在一個查找表中。參照圖16,假設對數可能性比值為10,則解碼初始值LLR_H1對應驗證位元“1”的解碼初始值為-10,並且對應驗證位元“0”的解碼初始值為+10。
首先,記憶體控制電路單元404在接收讀取指令序列後,會先從記憶胞中讀取位元,讀取到的位元可被識別為0或1。接著,記憶體控制電路單元404透過計數器714計算所讀取的位元中屬於0的位元的數目(即,第一計數值)及屬於1的位元的數目(即,第二計數值),並且判斷第一計數值與第二計數值的差值的絕對值是否大於第一閥值。在本範例實施例中,第一計數值與第二計數值的差值的絕對值大於第一閥值(例如,100),因此記憶體控制電路單元404依據第一調整值(例如,±1)調整對數可能性比值。
請參照圖16,記憶體控制電路單元404將位元對應的解碼初始值LLR_H1調整為解碼初始值LLR_H2。在本實施例中,第一計數值與第二計數值的差值大於0,代表第一計數值可能含有較多的錯誤位元而較不具可靠性,而第二計數值可能含有較少的錯誤位元而具可靠性。因此記憶體控制電路單元404將對應驗證位元“1”的對數可能性比值10減1以調整解碼初始值為-9,並且將對應驗證位元“0”的對數可能性比值10加1以調整為解碼初始值為+11,如圖16所示。在記憶體控制電路單元404取得調整後的對數可能性比值並據以取得對應的解碼初始值以後,錯誤檢查與校正電路708依據解碼初始值執行疊代解碼以取得由多個解碼位元組成的碼字,並利用這些由多個解碼位元組成的碼字來判斷是否解碼成功。須注意的是,所屬技術領域通常知識者應當知曉如何依據對數可能性比值執行疊代解碼,故在此便不贅述。
在軟位元解碼操作中,假設事先計算出的區間1601、1606所對應的對數可能性比值為7,區間1602、1605所對應的對數可能性比值為4,區間1603、1604所對應的對數可能性比值為1。則記憶體控制電路單元404根據正負號讀取電壓V
3與驗證位元取得記憶胞在軟位元模式下的解碼初始值解碼初始值LLR_S1中,區間1601~1603所對應的解碼初始值分別為-7、-4與-1,區間1604~1606所對應的解碼初始值分別為+1、+4與+7。
首先,記憶體控制電路單元404在接收讀取指令序列後,會先從記憶胞中讀取位元,讀取到的位元可被識別為0或1。接著,記憶體控制電路單元404透過計數器714計算所讀取的位元中屬於0的位元的數目(即,第一計數值)及屬於1的位元的數目(即,第二計數值),並且判斷第一計數值與第二計數值的差值的絕對值是否大於第一閥值或第二閥值。若該差值的絕對值大於第一閥值但小於第二閥值,則記憶體控制電路單元404依據第一調整值調整對數可能性比值。若該差值的絕對值大於第二閥值,則記憶體控制電路單元404依據第二調整值調整對數可能性比值。
在本範例實施例中,第一計數值與第二計數值的差值大於第二閥值(例如,300),因此記憶體控制電路單元404依據第二調整值(例如,±2)調整對數可能性比值。請參照圖16,記憶體控制電路單元404將位元對應的解碼初始值LLR_S1調整為解碼初始值LLR_S2。在本實施例中,第一計數值與第二計數值的差值大於0,代表第一計數值可能含有較多的錯誤位元而較不具可靠性,而第二計數值可能含有較少的錯誤位元而具可靠性。因此記憶體控制電路單元404將對應區間1601的對數可能性比值7減2以調整為解碼初始值為-5,對應區間1602的對數可能性比值4減2以調整為解碼初始值為-6,對應區間1603的對數可能性比值1減2,解碼初始值可保持-1或調整為+1,對應區間1604的對數可能性比值1加2以調整為解碼初始值為+3,對應區間1605的對數可能性比值4加2以調整為解碼初始值為+6,對應區間1606的對數可能性比值4加2以調整為解碼初始值為+9。在本實施例中,區間1601~1603的解碼初始值調整為正值時最高調整至+1,區間1604~1606的解碼初始值調整為負值時最低調整至-1,本發明不在此限制。在記憶體控制電路單元404取得調整後的對數可能性比值並據以取得對應的解碼初始值以後,錯誤檢查與校正電路708依據解碼初始值執行疊代解碼以取得由多個解碼位元組成的碼字,並利用這些由多個解碼位元組成的碼字來判斷是否解碼成功。須注意的是,所屬技術領域通常知識者應當知曉如何依據對數可能性比值執行疊代解碼,故在此便不贅述。
基於上述,記憶體控制電路單元404可在每次依據讀取指令序列讀取資料(例如,接收新的讀取指令序列、重新取得另一讀取電壓)後,依據所讀取的位元調整該次解碼使用的對數可能性比值以取得對應的解碼初始值,以提高解碼成功的機率。
在另一範例實施例中,記憶體控制電路單元404還可根據第一計數值及第二計數值將用以從記憶胞中讀取位元的電壓位準調整為第二電壓位準。並在調整為第二電壓位準後,執行本發明提供的解碼操作。具體而言,記憶體控制電路單元404在接收讀取指令序列後,會先從記憶胞中讀取位元。讀取到的位元可被識別為第一值或第二值。接著,記憶體控制電路單元404計算所讀取的位元中第一值的第一計數值及第二值的第二計數值,並可藉由計算第一計數值與第二計數值的差值將用以從記憶胞中讀取位元的電壓位準調整為第二電壓位準。
舉例來說,如果施加讀取電壓V
3於記憶胞的控制閘極以後,讀取出來的位元包括的第一計數值與第二計數值的差值大於0,表示所讀取的位元中屬於第一值的位元的數目大於屬於第二值的位元的數目。此情形表示所讀取的位元中0錯成1的數目比1錯成0的數目多,第一計數值可能含有較多的錯誤位元而較不具可靠性,而第二計數值可能含有較少的錯誤位元而具可靠性。因此記憶體控制電路單元404調低讀取電壓。另一方面,如果第一計數值與第二計數值的差值小於0,表示所讀取的位元中屬於第一值的位元的數目小於屬於第二值的位元的數目。此情形表示所讀取的位元中1錯成0的數目比0錯成1的數目多,第一計數值可能含有較少的錯誤位元而具可靠性,而第二計數值可能含有較多的錯誤位元而較不具可靠性。因此記憶體控制電路單元404調高讀取電壓。用於調整讀取電壓的調整值可經事先經實驗獲得,並儲存於可複寫式非揮發性記憶體模組406的特定區域中,本發明不在此限制。
圖17是根據一範例實施例繪示解碼方法的流程圖。在步驟S1702,接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元。在步驟S1704,計算所述多個位元中第一值的第一計數值及第二值的第二計數值。在步驟S1706,根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作。
值得注意的是,圖17中各步驟可以實作為多個程式碼或電路,本發明不加以限制。此外,圖17的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
綜上所述,本發明提供的解碼方法、記憶體儲存裝置及記憶體控制電路單元可以計算第一值及第二值的分布並判斷分布是否平均。而根據分布的平均程度,記憶體控制電路單元可以將位元所對應的解碼參數調整為特定解碼參數,並根據位元的數值以及特定解碼參數再次執行解碼操作以嘗試獲得成功解碼後的碼字。藉由上述方式,能夠提升解碼的更正能力及提高解碼成功的機率,以降低解碼延遲。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10,30:記憶體儲存裝置
11,31:主機系統
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:可複寫式非揮發性記憶體模組
2202:記憶胞陣列
2204:字元線控制電路
2206:位元線控制電路
2208:行解碼器
2210:資料輸入/輸出緩衝器
2212:控制電路
502:記憶胞
504:位元線
506:字元線
508:共用源極線
512:選擇閘汲極電晶體
514:選擇閘源極電晶體
VA,VB,VC,VD,VE,VF,VG,1440~1444,V
1~V
5:讀取電壓
400(0)~400(N):實體抹除單元
702:記憶體管理電路
704:主機介面
706:記憶體介面
708:錯誤檢查與校正電路
710:緩衝記憶體
712:電源管理電路
714:計數器
1410,1420,1510,1520:分布
1430,1501~1506,1601~1606:區域
b1~b5:驗證位元
LLR_H1,LLR_H2,LLR_S1,LLR_S2:解碼初始值
S1702:步驟(接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元)
S1704:步驟(計算所述多個位元中第一值的第一計數值及第二值的第二計數值)
S1706:步驟(根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作)
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。
圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
圖5是根據一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。
圖6是根據一範例實施例所繪示的記憶胞陣列的示意圖。
圖7是根據一範例實施例所繪示儲存於記憶胞陣列中的寫入資料所對應的閘極電壓的統計分配圖。
圖8是根據一範例實施例所繪示之程式化記憶胞的示意圖。
圖9是根據一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
圖10是根據另一範例實施例所繪示的從記憶胞中讀取資料的示意圖。
圖11是根據本範例實施例所繪示之記憶胞儲存架構與實體抹除單元的範例示意圖。
圖12是根據本發明範例實施例所繪示之管理可複寫式非揮發性記憶體模組的示意圖。
圖13是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。
圖14是根據一範例實施例繪示硬位元模式解碼的示意圖。
圖15是根據一範例實施例繪示軟位元模式解碼的示意圖。
圖16是根據一範例實施例繪示解碼初始值的範例。
圖17是根據一範例實施例繪示解碼方法的流程圖。
S1702:步驟(接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元)
S1704:步驟(計算所述多個位元中第一值的第一計數值及第二值的第二計數值)
S1706:步驟(根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作)
Claims (24)
- 一種解碼方法,用於一可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞,所述解碼方法包括: 接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元; 計算所述多個位元中第一值的第一計數值及第二值的第二計數值;以及 根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
- 如請求項1所述的解碼方法,其中所述解碼參數與所述特定解碼參數為對數可能性比值(Log Likelihood Ratio,LLR)。
- 如請求項1所述的解碼方法,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
- 如請求項1所述的解碼方法,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
- 如請求項1所述的解碼方法,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
- 如請求項1所述的解碼方法,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
- 如請求項1所述的解碼方法,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的步驟之前,所述解碼方法還包括: 根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的一電壓位準調整為一第二電壓位準。
- 如請求項1所述的解碼方法,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統; 一可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞;以及 一記憶體控制電路單元,耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組, 其中所述記憶體控制電路單元用以接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元, 所述記憶體控制電路單元更用以透過計數器計算所述多個位元中第一值的第一計數值及第二值的第二計數值,並且 所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
- 如請求項9所述的記憶體儲存裝置,其中所述解碼參數與所述特定解碼參數為對數可能性比值。
- 如請求項9所述的記憶體儲存裝置,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
- 如請求項9所述的記憶體儲存裝置,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
- 如請求項9所述的記憶體儲存裝置,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且 所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
- 如請求項9所述的記憶體儲存裝置,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且 所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
- 如請求項9所述的記憶體儲存裝置,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作之前,所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的一電壓位準調整為一第二電壓位準。
- 如請求項9所述的記憶體儲存裝置,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
- 一種記憶體控制電路單元,用於控制包括一可複寫式非揮發性記憶體模組的一記憶體儲存裝置,且所述記憶體控制電路單元包括: 一主機介面,用以耦接至一主機系統; 一記憶體介面,用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個記憶胞;以及 一記憶體管理電路,耦接至所述主機介面與所述記憶體介面, 其中所述記憶體控制電路單元用以接收一讀取指令序列,其中所述讀取指令序列用以從所述多個記憶胞中讀取多個位元, 所述記憶體控制電路單元更用以透過計數器計算所述多個位元中第一值的第一計數值及第二值的第二計數值,並且 所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將對應於所述多個位元的一解碼參數調整為一特定解碼參數,並根據所述特定解碼參數執行一解碼操作,其中所調整的所述解碼參數影響所述多個位元在所述解碼操作中被視為錯誤位元的機率。
- 如請求項17所述的記憶體控制電路單元,其中所述解碼參數與所述特定解碼參數為對數可能性比值。
- 如請求項17所述的記憶體控制電路單元,其中用於調整所述解碼參數為所述特定解碼參數的調整值為±1~3。
- 如請求項17所述的記憶體控制電路單元,其中用於調整所述解碼參數為所述特定解碼參數的調整值為解碼參數的±10~20%。
- 如請求項17所述的記憶體控制電路單元,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且 所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值不同於所述一或多個負解碼參數的調整值。
- 如請求項17所述的記憶體控制電路單元,其中所述解碼參數包括一或多個正解碼參數及一或多個負解碼參數,並且 所述記憶體控制電路單元根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作中,所述一或多個正解碼參數的調整值相同於所述一或多個負解碼參數的調整值。
- 如請求項17所述的記憶體控制電路單元,其中在根據所述第一計數值及所述第二計數值將對應於所述多個位元的所述解碼參數調整為所述特定解碼參數的運作之前,所述記憶體控制電路單元更用以根據所述第一計數值及所述第二計數值將用以從所述多個記憶胞中讀取所述多個位元的一電壓位準調整為一第二電壓位準。
- 如請求項17所述的記憶體控制電路單元,其中所述解碼操作為硬位元解碼操作及軟位元解碼操作至少其中之一。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109110493A TWI721842B (zh) | 2020-03-27 | 2020-03-27 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US16/862,576 US11146295B1 (en) | 2020-03-27 | 2020-04-30 | Decoding method, memory storage device, and memory controlling circuit unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109110493A TWI721842B (zh) | 2020-03-27 | 2020-03-27 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI721842B true TWI721842B (zh) | 2021-03-11 |
TW202137226A TW202137226A (zh) | 2021-10-01 |
Family
ID=76036031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109110493A TWI721842B (zh) | 2020-03-27 | 2020-03-27 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11146295B1 (zh) |
TW (1) | TWI721842B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI765600B (zh) * | 2021-03-10 | 2022-05-21 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185802B2 (en) * | 2008-02-15 | 2012-05-22 | Kabushiki Kaisha Toshiba | Data memory system |
CN106681856A (zh) * | 2016-08-23 | 2017-05-17 | 合肥兆芯电子有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
TW201814723A (zh) * | 2016-09-16 | 2018-04-16 | 美光科技公司 | 用於以電流積分感測產生機率資訊之裝置及方法 |
US20190007222A1 (en) * | 2017-06-30 | 2019-01-03 | Fujitsu Limited | System and method for collision detection |
US10534665B2 (en) * | 2017-11-29 | 2020-01-14 | Phison Electronics Corp. | Decoding method, memory storage device and memory control circuit unit |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7167395B1 (en) * | 2005-07-13 | 2007-01-23 | Infineon Technologies Flash Gmbh & Co. Kg | Non-volatile semiconductor memory |
US9086982B1 (en) * | 2012-08-15 | 2015-07-21 | Marvell International Ltd. | Adjusting bit reliability information input for decoding stored data |
TWI595498B (zh) * | 2016-01-20 | 2017-08-11 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
-
2020
- 2020-03-27 TW TW109110493A patent/TWI721842B/zh active
- 2020-04-30 US US16/862,576 patent/US11146295B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185802B2 (en) * | 2008-02-15 | 2012-05-22 | Kabushiki Kaisha Toshiba | Data memory system |
CN106681856A (zh) * | 2016-08-23 | 2017-05-17 | 合肥兆芯电子有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
TW201814723A (zh) * | 2016-09-16 | 2018-04-16 | 美光科技公司 | 用於以電流積分感測產生機率資訊之裝置及方法 |
US20190007222A1 (en) * | 2017-06-30 | 2019-01-03 | Fujitsu Limited | System and method for collision detection |
US10534665B2 (en) * | 2017-11-29 | 2020-01-14 | Phison Electronics Corp. | Decoding method, memory storage device and memory control circuit unit |
Also Published As
Publication number | Publication date |
---|---|
US11146295B1 (en) | 2021-10-12 |
US20210306010A1 (en) | 2021-09-30 |
TW202137226A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI508082B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI540586B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
TWI582779B (zh) | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 | |
US10108490B1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20160350179A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI695378B (zh) | 位元標記方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI725368B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20200168289A1 (en) | Memory control method, memory storage device and memory control circuit unit | |
US10324787B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI681396B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW202029202A (zh) | 解碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
TWI721842B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI742509B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
TWI705449B (zh) | 電壓識別方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI681393B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI675374B (zh) | 位元判斷方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI838242B (zh) | 資料儲存裝置及其讀取電壓的搜尋方法 | |
US11373713B1 (en) | Memory control method, memory storage device, and memory control circuit unit | |
CN110795268B (zh) | 比特判断方法、存储器控制电路单元以及存储器存储装置 |