TWI697000B - 記憶體控制器及快閃記憶體的存取方法 - Google Patents
記憶體控制器及快閃記憶體的存取方法 Download PDFInfo
- Publication number
- TWI697000B TWI697000B TW108144852A TW108144852A TWI697000B TW I697000 B TWI697000 B TW I697000B TW 108144852 A TW108144852 A TW 108144852A TW 108144852 A TW108144852 A TW 108144852A TW I697000 B TWI697000 B TW I697000B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- strategy
- flip
- code word
- bit
- 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/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
-
- 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
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/1148—Structural properties of the code parity-check or generator matrix
-
- 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/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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/2948—Iterative decoding
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明係提供一種快閃記憶體的存取方法,應用於資料儲存裝置中的記憶體控制器。該方法包括下列步驟:經由一儲存程序將資料儲存至該資料儲存裝置之一快閃記憶體;取得從資料儲存裝置之快閃記憶體所讀取的通道值;取得一碼字差值,並依據碼字差值計算一徵狀值(syndrome);以及在每次LDPC解碼疊代之期間,執行下列步驟:依據通道值及徵狀值以決定徵狀權重;取得先前LDPC解碼疊代所產生的先前碼字;依據徵狀權重及預定閾值以決定先前碼字之各碼字位元的位元翻轉演算法之翻轉策略,並依據翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將更新碼字減去先前碼字以產生碼字差值。
Description
本發明係有關於資料存取,特別是有關於一種記憶體控制器及快閃記憶體的存取方法。
隨著半導體技術的進步,低密度同位元檢查(low-density parity check,LDPC)碼在近年來已可用超大型積體(very-large-scale integration,VLSI)電路所實現,且廣泛應用於數位通訊領域(例如包括無線通訊及光纖通訊)以及資料傳輸領域(例如用於資料儲存裝置,如固態硬碟)以做為錯誤更正碼(error correction code,ECC)。
低密度同位元檢查解碼器係使用具有同位元(parity bit)的線性錯誤校正碼來進行解碼,其中同位元會提供用以驗證接收到的碼字(codeword)的同位元方程式給LDPC解碼器。舉例來說,低密度同位元查核碼可為一具有固定長度的二進位碼,其中所有的符元(symbol)相加會等於零。
在資料的編碼過程中,所有的資料位元會被重複執行並且被傳送至對應的編碼器,其中每個編碼器會產生一同位符元(parity symbol)。碼字係由k個訊息位元(information digit)以及r個檢查位元(check digit)所組成。若碼字總共有n位元,則表示k=n-r。上述碼字可用一同位元檢查矩陣來表示,其中該同位元檢查矩陣具有r列(表示方程式的數量)以及n行(表示位元數),如第1圖所示。這些碼之所以被稱為「低密度」是因為相較於同位元檢查矩陣中位元0的數量而言,位元1的數量相對的少。在解碼過程中,每次的同位元檢查皆可視為一同位元查核碼,並隨後與其他同位元查核碼一起進行交互檢查(cross-check),其中解碼會在檢查節點(check node)進行,而交互檢查會在變數節點(variable node)進行。
低密度同位元檢查解碼器支持三種模式:硬判定硬解碼(hard decision hard decoding)、軟判定硬解碼(soft decision soft decoding),以及軟判定軟解碼(soft decision hard decoding)。第1A圖係為同位元檢查矩陣H的示意圖。第1B圖係為坦納圖(Tanner Graph)的示意圖。如第1A圖所示,在同位元檢查矩陣H的每一列可形成一檢查節點,例如分別為檢查節點C1、C2、C3及C4。在同位元檢查矩陣H的每一行可形成一變數節點,例如分別為變數節點V1、V2、V3、V4、V5、V6及V7。
坦納圖為另一種表示碼字的方式,並且可用於解釋當使用一位元翻轉(bit flipping)演算法時,低密度同位元檢查解碼器的一些關於硬判定軟解碼的操作。
如第1B圖所示,在坦納圖中,方形節點C1~C4所表示的檢查節點代表同位元(parity bit)的數量,且圓形節點V1~V7所表示的變數節點(variable node)係為一碼字中位元的數量。如果一特定方程式與碼符元(code symbol)有關,則對應的檢查節點與變數節點之間會以連線來表示。被估測的資訊會沿著這些連線來傳遞,並且於節點上以不同的方式組合。
當開始進行LDPC解碼時,變數節點將發送一估測資訊(estimate)至所有連線上的檢查節點,其中這些連線包含被認為是正確的位元。接著,每個檢查節點會依據對所有其他的連接的估測(connected estimate)來針對每一變數節點進行新的估測,並且將新的估測資訊傳回至變數節點。新的估測係基於:同位元檢查方程式迫使所有的變數節點連接至一特定檢查節點,以使總和為零。
這些變數節點會接收新的估測資訊以及使用一多數規則(majority rule)(亦即硬判定),來判斷所傳送的原始位元之數值是否正確。若判斷原始位元之數值不正確,該原始位元會被翻轉(flipped)。該翻轉後的位元接著會被傳回至該些檢查節點,且上述步驟會被疊代地執行一預定次數,直到符合這些檢查節點的同位元檢查方程式。若有符合這些同位元檢查方程式(亦即檢查節點所計算
之數值符合接收自變數節點之數值),則可啟用提前終止(early termination),這會使得系統在最大疊代次數達到之前就結束解碼程序。
該些同位元檢查限制係由進行一徵狀檢查(syndrome check)來實施。一個有效的碼字將會符合方程式:H.CT=S=0,其中H係為同位元檢查矩陣、C係為硬判定碼字(hard decision codeword),且S係為徵狀(syndrome)。當S等於零時,表示解碼程序已完成,且不需要更進一步的資訊。一般來說,硬判定以及徵狀檢查會在疊代期間執行,其中一非零(non-zero)徵狀表示有奇性(odd parity)存在,並且需要再執行新的解碼疊代。
傳統的位元翻轉LDPC解碼器為了效能及低功耗的考量,常常限制每個碼字位元的資料傳遞以一位元為限。意即,在每次疊代的過程中,每個碼字位元僅交換符號位元(sign bit)的資訊。在此限制下,若要增加解碼器的解碼效能,例如是吞吐量(throughput)或是校正率(correction rate)相當困難。
因此,本發明係提出一種記憶體控制器及快閃記憶體的存取方法,其可讓低密度同位元檢查解碼器中之變數節點單元可執行可設定(configurable)解碼策略,並可增加解碼效能、提高校正率、及/或降低功耗。
本發明係提供一種記憶體控制器,用於一資料儲存裝置,記憶體控制器包括:一變數節點單元及一檢查節點單元。變數節點單元係用以取得從該資料儲存裝置之一快閃記憶體所讀取的一通道值。檢查節點單元係用以由該變數節點單元取得一碼字差值,並依據該碼字差值計算一徵狀值(syndrome)。在每次LDPC解碼疊代之期間,變數節點單元係執行:依據該通道值及來自該檢查節點單元之該徵狀值以決定一徵狀權重(syndrome weight);取得一先前LDPC解碼疊代所產生的一先前碼字;依據該徵狀權重及一預定閾值以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
在一些實施例中,當該通道值係由一硬決定(hard decision)方式從該快閃記憶體讀取而得時,該變數節點單元在初次LDPC解碼疊代時係將該通道值設定為該先前碼字,並且將該先前碼字中之各碼字位元相應的一可靠度資訊設定為1。選擇性地,當該通道值係由一軟決定(soft decision)方式從該快閃記憶體讀取而得,該通道值中之各位元係帶有相應的一可靠度資訊。
在一些實施例中,該變數節點單元包括:一翻轉決定單元及一位元翻轉電路。翻轉決定單元包括一翻轉策略查找表用以記錄不同數值的該徵狀權重及該預定閾值所對應的該翻轉策略,
其中該翻轉策略包括強翻轉(strong flip)策略、弱翻轉(weak flip)策略及未動作策略。位元翻轉電路係用以依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以及各碼字位元相應的可靠度資訊以產生該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊。此外,位元翻轉電路更將該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊儲存至一變數節點記憶體以用於下一次LDPC解碼疊代。
在一些實施例中,該先前位元中之各碼字位元及其可靠度資訊之組合依序包括四個狀態:強”1”(strong 1)、弱”1”(weak 1)、弱”0”(weak 0)及強”0”(strong 0),其中,該強翻轉策略係指將該四個狀態中之一特定狀態往距離2個階數或以上的狀態進行翻轉,且該弱翻轉策略係指將該四個狀態中之該特定狀態往距離1個階數的狀態進行翻轉,且該未動作策略係指將該四個狀態中之該特定狀態維持不更動。此外,當該徵狀權重及該預定閾值均大於一預定值且該徵狀權重大於或等於該預定閾值時,該徵狀權重及該預定閾值所相應的該翻轉策略為該強翻轉策略。
本發明更提供一種快閃記憶體的存取方法,應用於一資料儲存裝置中的一記憶體控制器,該方法包括下列步驟:經由一儲存程序將資料儲存至該資料儲存裝置之一快閃記憶體;取得從該資料儲存裝置之一快閃記憶體所讀取的一通道值;由該變數節點單元取得一碼字差值,並依據該碼字差值計算一徵狀值
(syndrome);以及在每次LDPC解碼疊代之期間,執行下列步驟:依據該通道值及來自該檢查節點單元之該徵狀值以決定一徵狀權重(syndrome weight);取得一先前LDPC解碼疊代所產生的一先前碼字;依據該徵狀權重及一預定閾值以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
本發明更提供一種記憶體控制器,用於一資料儲存裝置中,記憶體控制器包括:一變數節點單元及一檢查節點單元。變數節點單元係用以取得從該資料儲存裝置之一快閃記憶體所讀取的一通道值。檢查節點單元係用以由該變數節點單元取得一碼字差值,並依據該碼字差值計算一徵狀值(syndrome)。在每次LDPC解碼疊代之期間,該變數節點單元係執行:依據來自該檢查節點單元之該徵狀值以決定一徵狀權重(syndrome weight);取得一先前LDPC解碼疊代所產生的一先前碼字;依據該通道值及該先前碼字以決定在該先前碼字中之各碼字位元是否已被翻轉過;對於該先前碼字中已被翻轉過各碼字位元及未被翻轉過各碼字位元,分別選擇一第一翻轉策略查找表及一第二翻轉策略查找表,其中該第一翻轉策略查找表不同於該第二翻轉策略查找表;依據該徵狀權重、一預定閾值及所選擇的該第一翻轉策略查找表或該第二翻轉策略查找表以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多
個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
200:資料儲存裝置
210:記憶體控制器
211:處理單元
212:儲存單元
213:啟動程式
214:編碼器
215:解碼器
216:控制邏輯
218:緩衝記憶體
2181:通道值記憶體
2182:變數節點記憶體
220:快閃記憶體
230:主機
240:實體區塊
241:實體頁面
250、252:存取介面
410:變數節點單元
420:檢查節點單元
511、611、711:徵狀權重加總單元
512、612、712:閾值計算單元
513、613、713:翻轉單元
5131:比較器
6131、7131:翻轉決定單元
5132、6132、7132:位元翻轉電路
601、701、702:翻轉策略查找表
S805-S840:步驟
H:同位元檢查矩陣
c:列數
t:行數
M、K、P:矩陣
K-1:反矩陣
syndrome:徵狀值
CH_sgn:通道值
ws:權重
th:閾值
Diff:碼字差值
VN_prev:先前碼字
VN_new:更新碼字
C1-C4:檢查節點
V1-V7:變數節點
S1、S0、W1、W0:狀態
第1A圖係為同位元檢查矩陣的示意圖。
第1B圖係為坦納圖(Tanner Graph)的示意圖。
第2圖為依據本發明一實施例的資料儲存裝置的方塊圖。
第3圖為查核碼檢查矩陣及查核碼產生矩陣的示意圖。
第4圖為依據本發明一實施例中之解碼器215的方塊圖。
第5圖為依據本發明之第一實施例中的變數節點單元的方塊圖。
第6A圖為依據本發明之第二實施例中的變數節點單元的方塊圖。
第6B圖為依據本發明之第二實施例中翻轉策略的邏輯狀態的示意圖。
第7圖為依據本發明之第三實施例中的變數節點單元的方塊圖。
第8圖為依據本發明一實施例中之快閃記憶體的存取方法的流程圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的"包含"、"包括"等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如"第一"、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第2圖為依據本發明一實施例的資料儲存裝置的方塊圖。
在一實施例中,資料儲存裝置200可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡)或是固態硬碟(solid-state drive,SSD),且主機230為一可與資料儲存裝置200連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。在另一實施例中,資料儲存裝置200可以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
如第2圖所示,資料儲存裝置200包括一記憶體控制器210及一快閃記憶體220,其中記憶體控制器210係用以存取快閃記憶體220。在一實施例中,記憶體控制器210包括一處理單元211、一儲存單元212、一控制邏輯216、一緩衝記憶體218及存取介面250及252。處理單元211可由專用硬體電路或通用硬體所實現,具有多個處理核心的處理器或是具平行處理能力的多處理器,且上述實現方式例如可為通用處理器(General-Purpose Processor)、或微控制器(Microcontroller),但本發明並不限於此。
儲存單元212可為非揮發性記憶體,例如為唯讀記憶體(read-only memory,ROM)、可擦除式可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、電子可擦除式可程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)或電子熔絲(E-Fuse)。儲存單元212係儲存啟動程式213,其包括啟動碼(Boot Code)或啟動程式(Bootloader),且可由處理單元211執行,記憶體控制器210基於啟動程式213而完成開機,並開始控制該快閃記憶體220的運作,例如,讀取線上燒錄(In System Programming,ISP)碼。
快閃記憶體220例如為NAND快閃記憶體,且快閃記憶體220包括複數個實體區塊(physical block)240,且各實體區塊包括複數個實體頁面(physical page)241。
處理單元211與快閃記憶體220間的資料與操作命令傳遞係透過數個電子信號進行協調,上述電子信號包括資料線(data line)、時脈訊號(clock signal)與控制訊號(control signal)。資料線可用以傳遞命令、位址、讀出及寫入的資料;控制訊號線可用以傳遞晶片致能(chip enable,CE)、位址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、寫入致能(write enable,WE)等控制訊號。
存取介面250可採用雙倍資料率(double data rate,DDR)通訊協定與快閃記憶體220溝通,例如,開放NAND快閃(open NAND flash interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他介面。處理單元211另可使用存取介面252透過指定通訊協定與主機230進行溝通,例如,通用序列匯流排(universal serial bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)、非揮發性記憶體的傳輸規範(Non-Volatile Memory Express,NVMe)或其他介面。
緩衝記憶體218可為一揮發性記憶體,例如包括一動態隨機存取記憶體(dynamic random access memory,DRAM)及/或一靜態隨機存取記憶體(static random access memory,SRAM)。在此實施例,緩衝記憶體218包括一通道值記憶體(channel value memory,CHVMem)2181及變數節點記憶體(variable node memory,VNMem)2182。通道值記憶體2181係用以暫存來自存取介面250所讀取的快閃記憶體220的原始頁面資料(或稱為碼字)、或是用以暫存來自主機230的主機指令。變數節點記憶體2182係用以暫存在進行低密度同位元檢查之解碼過程中在各變數節點之變數節點資料。此外,通道值記憶體2181所儲存的碼字例如可為硬判定或軟判定之方式由快閃記憶體220所讀取的資訊,其中硬判定(hard decision)是採用單一讀取電壓閾值,故所得到的碼字只有符號(sign)資訊。軟判定(soft decision)則是利用多個讀取電壓閾值,故所得到的碼字除了符號資訊之外,還帶有可靠度資訊,例如每個碼字位元可使用至少一位元的可靠度資訊來表示。若可靠度資訊用一位元表示,則可用0及1分別表示強(strong)及弱(weak)兩種不同的可靠度,則碼字位元搭配可靠度則可分為強”1”、弱”1”、弱”0”及強”0”。
控制邏輯216包括一編碼器214及解碼器215。在一些實施例中,編碼器214、解碼器215及控制邏輯216例如可由應用導向積體電路(application-specific integrated circuit,
ASIC)、現場可程式化邏輯閘陣列(field-programmable gate array,FPGA)、複雜可程式化邏輯裝置(complex programmable logic device,CPLD)、或具有相同功能的邏輯電路所實現,但本發明並不限於此。
在此實施例中,編碼器214例如為一低密度同位元查核碼(LDPC)編碼器,且可以根據來自主機230的資料來產生對應的查核碼,且所產生的查核碼符合一查核碼檢查矩陣。具體來說,參考第3圖,假設該查核碼檢查矩陣為一大小為c*t的矩陣(例如,列數c=5,行數t=48),而該查核碼檢查矩陣可以分為左側的矩陣M(大小為c*(t-c))以及右側的矩陣K(大小為c*c),為了找出與該查核碼檢查矩陣所對應的查核碼產生矩陣,可以先找出矩陣K的反矩陣K-1(inverse matrix),之後再將反矩陣(K-1)與矩陣M相乘以得到矩陣P,而矩陣P的轉置矩陣(transpose matrix)便可以作為查核碼產生矩陣。換句話說,在找到矩陣P的轉置矩陣之後,編碼器214可以將來自主機230的資料乘以矩陣P的轉置矩陣來得到對應於該些資料的查核碼,而編碼器214之後再將資料與查核碼一起乘上該查核碼檢查矩陣以判斷查核碼是否正確。舉例來說,若是相乘結果等於“0”則判斷編碼正確;而若是相乘結果不等於“0”則判斷編碼錯誤。在判斷編碼正確之後,資料與對應的查核碼便會被寫入至快閃記憶體220的其中一個實體頁面中。
解碼器215例如為低密度同位元查核碼(LDPC)解碼器。當主機230發送一讀取指令至資料儲存裝置230,記憶體控制器210係由快閃記憶體220取得初始頁面資料,例如又稱為通道值。初始頁面資料例如包括初始資料及錯誤校正碼資料。因為初始資料及錯誤校正碼資料在經過通道傳輸時可能產生錯誤,故解碼器215可利用錯誤校正碼資料以對初始資料及/或錯誤校正碼資料本身進行錯誤校正,例如可採用一位元翻轉(bit flipping)演算法進行LDPC解碼。解碼器215之細節將於下列實施例中詳述。
第4圖為依據本發明一實施例中之解碼器215的方塊圖。如第4圖所示,解碼器215包括一變數節點單元(variable node unit,VNU)410及一檢查節點單元(check node unit,CNU)420。在進行LDPC解碼時,資料會在變數節點單元410及檢查節點單元420之間進行疊代(iteration),直到解出正確的碼字或是達到疊代次數上限為止。舉例來說,當解碼器215開始進行解碼時,變數節點記憶體2182中所暫存的先前碼字的數值以及初始的徵狀值均被重置為0。變數節點單元410會由通道值記憶體2181取得通道值或碼字(例如可稱為先前碼字VN_prev),並進行第一次疊代的運算。變數節點單元410係將疊代運算所產生的位元翻轉後的更新碼字(VN_new)儲存至變數節點記憶體2182,並將上述更新碼字與先前碼字(VN_prev)的差值傳送至檢查節點單元420以進行徵狀(syndrome)值的相關運算。
若來自檢查節點單元420的徵狀值不為0,則變數節點單元410會繼續進行第二次或後續的疊代運算。舉例來說,變數節點單元410會從變數節點記憶體2182、檢查節點單元420及通道值記憶體2181分別取得先前碼字VN_prev、徵狀值、以及通道值,並據以計算出在先前碼字中的那些碼字位元需要翻轉。若來自檢查節點單元420的徵狀值等於0,則變數節點單元410則會輸出目前疊代過程所產生的更新碼字以輸出正確頁面資料。因此,記憶體控制器210中的處理單元211可將正確頁面資料回報至主機230。
第5圖為依據本發明之第一實施例中的變數節點單元的方塊圖。請同時參考第4圖及第5圖,在第一實施例中,變數節點單元410例如包括一徵狀權重加總(syndrome weight sum)單元511、一閾值計算單元(threshold calculator)512及一翻轉單元(flipping unit)513。
徵狀權重加總單元511係用以依據來自檢查節點單元420所產生之徵狀值syndrome以及來自通道值記憶體2181的通道值CH_sgn以產生每個碼字位元相應的徵狀權重ws。
閾值計算單元512係用以計算當前解碼過程所使用的一閾值(threshold)。在此實施例中,閾值計算單元512所產生用於解碼過程的閾值例如可視實際解碼的情況而改變。
翻轉單元513係包括一比較器5131及一位元翻轉電路5132。比較器5131係用以將每個碼字位元之徵狀權重ws與上述
閾值進行比較。位元翻轉電路5132係依據上述比較結果決定相應的碼字位元是否需要翻轉,並將進行位元翻轉後之更新碼字VN_new儲存至變數節點記憶體2182。舉例來說,若其中一個碼字位元的徵狀權重ws大於或等於上述閾值th,則位元翻轉電路5132會將上述碼字位元進行翻轉,例如從0翻轉為1或是從1翻轉為0。位元翻轉電路5132並計算在此次疊代運算所取得的先前碼字與上述更新碼字的碼字差值(codeword difference)Diff,並將上述碼字差值Diff傳送至檢查節點單元420。
其中,上述碼字差值Diff的計算方式例如為VN_next-VN_prev。更新碼字及先前碼字均為二進位的數字表示,若更新碼字VN_next為0111且先前碼字VN_prev為0101,則碼字差值Diff為0010。
第6A圖為依據本發明之第二實施例中的變數節點單元的方塊圖。請同時參考第4圖及第6A圖,在第二實施例中,變數節點單元410例如包括一徵狀權重加總(syndrome weight sum)單元611、一閾值計算單元(threshold calculator)612及一翻轉單元(flip unit)613。徵狀權重加總單元611係用以依據來自檢查節點單元420所產生之徵狀值syndrome以及來自通道值記憶體2181的通道值CH_sgn以產生每個碼字位元相應的徵狀權重ws。閾值計算單元612係用以計算當前解碼過程所使用的一閾值(threshold)。在此
實施例中,閾值計算單元612所產生用於解碼過程的閾值例如為一固定值。
翻轉單元613係包括一翻轉決定單元6131及一位元翻轉電路6132。翻轉決定單元6131係用以依據當前每個碼字位元之徵狀權重ws及上述閾值以決定翻轉策略(flipping strategy)。為了便於說明,翻轉決定單元6131例如可由一翻轉策略查找表601所實現,其中翻轉策略查找表601可預先儲存於儲存單元212,且在資料儲存裝置200開機時,處理單元211可將翻轉策略查找表601載入至緩衝記憶體218或是一暫存器組(register file)。
在一實施例中,翻轉策略查找表601可使用硬資訊搭配碼字、或是軟資訊搭配碼字的方式進行查找。舉例來說,對於一般正常的快閃記憶體來說,其錯誤率約在1%以下,意即資料的正確率很高,故適合採用硬決定(hard decision)以讀取頁面資料。若在讀取快閃記憶體220之頁面資料係使用硬決定時,則表示儲存於通道值記憶體2181中的通道值/碼字不帶有可靠度資訊。此時,翻轉單元613例如在開始進行LDPC解碼時,可將來自通道值記憶體2181的各碼字位元相應的可靠度資訊(例如可用1或多個位元表示)重置為1。隨著解碼過程中進行疊代運算,若可靠度資訊為1位元,則各碼字位元之數值及相應的可靠度資訊可能會被切換為不同的數值,例如為強”1”、弱”1”、弱”0”及強”0”,其中強/弱表示可靠度資訊,且上述四種組合對應的(可靠度,碼字位元)可分別表示為(1,
1)、(0,1)、(0,0)及(1,0)、或是可分別表示為S1、W1、W0及S0。
在另一實施例中,第6圖之變數節點單元亦可接收利用軟決定(soft decision,例如使用多個讀取電壓閾值以讀取快閃記憶體)所讀取的頁面資料,且來自通道值記憶體2181的碼字會帶有軟資訊,例如可為一或多個位元的可靠度資訊。此時,翻轉單元613例如在開始進行LDPC解碼時,可直接使用來自通道值記憶體2181的各碼字位元及相應的可靠度資訊。
在此實施例中,翻轉策略查找表601利用徵狀權重ws及閾值th的查表結果可分為多種不同的位元翻轉方式,例如為強翻轉(strong flip)、弱翻轉(weak flip)及不動作(do nothing),其中徵狀權重ws及閾值th例如均為自然數。但本發明並不限於此。
舉例來說,強翻轉(strong flip)、弱翻轉(weak flip)及未動作可分別用S、W及X表示。若查表結果表示為強翻轉S時,則強”0”會被翻轉為弱”1”,弱”0”會被翻轉為強”1”,弱”1”會被翻轉為強”0”,強”1”會被翻轉為弱”0”。若查表結果表示為弱翻轉S時,則強”0”會被翻轉為弱”0”,弱”0”會被翻轉為弱”1”,弱”1”會被翻轉為弱”0”,強”1”會被翻轉為弱”1”。若查表結果表示為未動作時,則強”1”、弱”1”、弱”0”及強”0”均會維持原本的數值。
需注意的是,本發明並不限定於表1中的翻轉方式及數量,且本發明領域中具有通常知識者可視實際情況而設計適合的翻轉方式及數量。值得說明的是,若將S1、W1、W0及S0視為依序排列的4個邏輯狀態,且相鄰的邏輯狀態可視為階數差1,如第6B圖所示。強翻轉之方式表示上述狀態進行翻轉時會被翻轉至距離兩個階數(step)或以上的狀態,例如狀態S1被翻轉至狀態W0、狀態S0被翻轉至狀態W1,依此類推。弱翻轉之方式表示上述狀態進行翻轉時會被翻轉距離一個間隔的狀態,例如狀態S1被翻轉至狀態W1、狀態S0被翻轉至狀態W0,依此類推。然而,無論是強翻轉或弱翻轉,狀態S1、W1、W0及S0在進行翻轉時會具有對稱性,如表1所示。
舉例來說,在翻轉策略查找表601中,例如可針對提高吞吐量進行設計。當徵狀權重ws及閾值th的數值愈大時,表示在碼字位元之錯誤機率較高,故會使用強翻轉之方式。
在一些實施例中,翻轉決定單元6131可包括多個翻轉策略查找表,且不同的翻轉策略查找表係對應至不同的解碼目標並可進行最佳化設計,例如提高吞吐量(throughput)、提高校正率(correction rate)、或是降低功耗等等。當解碼器215被設定為其中一個解碼目標時,翻轉決定單元6131即可從上述多個翻轉策略查找表中選擇相應於解碼目標的翻轉策略查找表。
舉例來說,針對提高吞吐量之翻轉策略查找表可以使用整體較積極的翻轉策略並搭配較少的疊代次數。當解碼器215在同樣的硬體平行度之下,選擇提高吞吐量之翻轉策略查找表例如可增加一倍的硬解碼(hard decoding)吞吐量。提高校正率之翻轉策略查找表可以使用中性的翻轉策略並搭配較高的疊代次數以期可對具有較多錯誤的碼字進行錯誤校正,例如可在同樣的校正率之下額外更正0.05%的原始位元錯誤率(raw bit error rate,RBER)。降低功耗之翻轉策略查找表可以使用較保守的翻轉策略並搭配較少的疊代次數,故可在相同的硬體平行度之下降低解碼器215的功
耗。在一些實施例中,翻轉決定單元6131中的部分翻轉策略查找表可針對兩個或以上的解碼目標設計,例如可同時提高吞吐量及提高校正率,但本發明並不限於此。此外,相較於第5圖,使用第6圖中之變數節點單元之解碼器可具有更佳的解碼效能。
位元翻轉電路6132係依據各碼字位元的查表結果DR以決定相應的碼字位元及其可靠度資訊R是否需要翻轉,並將進行位元翻轉後之更新碼字VN_new及更新可靠度資訊R_new儲存至變數節點記憶體2182。位元翻轉電路6132並計算在此次疊代運算所取得的先前碼字與上述更新碼字的碼字差值(codeword difference)Diff,例如為VN_next-VN_prev,並將上述碼字差值Diff傳送至檢查節點單元420。需注意的是,位元翻轉電路6132係將碼字差值傳送至檢查節點單元420,但位元翻轉電路6132並未將更新可靠度資訊R_new傳送至檢查節點單元420,而是將更新可靠度資訊R_new儲存至變數節點記憶體2182以供下一次疊代運算使用。
第7圖為依據本發明之第三實施例中的變數節點單元的方塊圖。請同時參考第4圖及第7圖,在第三實施例中,變數節點單元410例如包括一徵狀權重加總(syndrome weight sum)單元711、一閾值計算單元(threshold calculator)712及一翻轉單元(flip unit)613。在第7圖中的徵狀權重加總單元711與第6A圖中的徵狀權重加總單元611之計算方式不同,其中徵狀權重加總單元711
係用以依據來自檢查節點單元420所產生之徵狀值syndrome以產生每個碼字位元相應的徵狀權重ws。閾值計算單元612係用以計算當前解碼過程所使用的一閾值(threshold)。在此實施例中,閾值計算單元712所產生用於目前解碼疊代過程的閾值例如為一固定值,但每次解碼疊代過程的閾值並不一定相同。
翻轉單元713係包括一翻轉決定單元7131及一位元翻轉電路7132。翻轉決定單元7131係包括翻轉策略查找表701及702,其中翻轉策略查找表701及702分別具有不同的翻轉策略。翻轉策略查找表701及702可預先儲存於儲存單元212,且在資料儲存裝置200開機時,處理單元211可將翻轉策略查找表701及702載入至緩衝記憶體218或是一暫存器組(register file)。
翻轉決定單元7131係依據來自通道值記憶體2181的通道值CH_sgn以及來自變數節點記憶體2182之先前碼字VN_prev以決定要選擇翻轉策略查找表701及702的其中一者。當選定翻轉策略查找表701及702的其中一者後,翻轉決定單元7131即可依據當前每個碼字位元之徵狀權重ws及上述閾值th以決定相應的翻轉策略。
詳細而言,通道值CH_sgn及先前碼字VN_prev的長度相同,且均包括複數個位元,其中通道值CH_sgn例如可視為原始碼字。因為在目前疊代過程(例如疊代次數為N)的先前碼字VN_prev是變數節點單元410在前次疊代(例如疊代次數為N-1)之
運算中將前次疊代的先前碼字VN_prev進行位元翻轉後所產生的更新碼字VN_new。因此,在目前疊代過程所取得的通道值CH_sgn及先前碼字VN_prev可用於判斷在原始碼字中有那些碼字位元是已經被翻轉過的。
需注意的是,對於正常的快閃記憶體220來說,其資料錯誤率約在1%以下,故在通道值CH_sgn的各個碼字位元是正確位元的機率相對較高。因此,針對先前碼字VN_prev中未被翻轉過的碼字位元,翻轉決定單元7131會使用翻轉策略查找表701並依據當前每個碼字位元之徵狀權重ws及上述閾值th以決定相應的翻轉策略,其中翻轉策略查找表701如表3所示。針對先前碼字VN_prev中已被翻轉過的碼字位元,翻轉決定單元7131會使用翻轉策略查找表702並依據當前每個碼字位元之徵狀權重ws及上述閾值th以決定相應的翻轉策略,其中翻轉策略查找表702如表4所示。
在此實施例中,相較於翻轉策略查找表701中所使用的翻轉策略,在翻轉策略查找表702中所使用的翻轉策略更為保守,意即翻轉策略查找表702中所使用的翻轉策略整體的翻轉階數會比翻轉策略查找表701整體的翻轉階數低。舉例來說,對於資料錯誤率很低的正常快閃記憶體220而言,若從快閃記憶體220所讀出的原始碼字(即通道值)中的碼字位元有錯誤的比例也很低。既然在此情況下,有部分碼字位元仍然被變數節點單元410進行位元翻轉,表示這些碼字位元相應的徵狀權重ws可能偏高,且若再進行較積極(aggressive)的翻轉策略,例如前述的強翻轉方式,則會有較大的機率會將碼字位元翻轉為實際上為錯誤的碼字位元。此時,翻轉錯誤的碼字位元仍然需要經過更多疊代次數才能進行更正,意即翻轉錯誤受到的懲罰(penalty)也較高,故會對已翻轉過的碼字位元採取較保守的翻轉策略,例如前述的弱翻轉或未動作方式。
位元翻轉電路7132係依據各碼字位元的查表結果DR以決定相應的碼字位元及其可靠度資訊R是否需要翻轉,並將進
行位元翻轉後之更新碼字VN_new及更新可靠度資訊R_new儲存至變數節點記憶體2182。位元翻轉電路7132並計算在此次疊代運算所取得的先前碼字與上述更新碼字的碼字差值(codeword difference)Diff,例如為VN_next-VN_prev,並將上述碼字差值Diff傳送至檢查節點單元420。需注意的是,位元翻轉電路7132係將碼字差值傳送至檢查節點單元420,但位元翻轉電路7132並未將更新可靠度資訊R_new傳送至檢查節點單元420,而是將更新可靠度資訊R_new儲存至變數節點記憶體2182以供下一次疊代運算使用。
在一些實施例中,第7圖中的徵狀權重加總單元711之功能係類似於第6圖中的徵狀權重加總單元611,其可依據來自檢查節點單元420所產生之徵狀值syndrome以及來自通道值記憶體2181的通道值CH_sgn以產生每個碼字位元相應的徵狀權重ws。
此外,本發明第6圖及第7圖之實施例亦可以合併實施。舉例來說,在第6圖中可針對解碼器之不同的解碼目標而選擇不同的翻轉策略查找表,例如提高吞吐量(throughput)、提高校正率(correction rate)、或是降低功耗等等。加入第7圖之實施例的設計後,在第6圖中的不同的翻轉策略查找表均可再細分為針對未翻轉過的碼字位元的第一翻轉策略查找表以及針對已翻轉過的碼字位元的第二翻轉策略查找表。因此,上述實施方式可進一步增加解碼器215之效能。
第8圖為依據本發明一實施例中之快閃記憶體的存取方法的流程圖。請同時參考第2圖及第8圖,快閃記憶體的存取方法的流程如下所述。第8圖中的快閃記憶體的存取方法例如在從快閃記憶體讀取資料時是使用策略基礎式(strategy-based)位元翻轉之LDPC解碼方法。
在步驟S805,經由一儲存程序將資料儲存至資料儲存裝置200之快閃記憶體220。舉例來說,上述儲存程序例如可將主機欲儲存至資料儲存裝置200的資料經過編碼流程(例如為LDPC編碼),並將編碼後的資料寫入至快閃記憶體220。
在步驟S810,變數節點單元410取得從資料儲存裝置200之一快閃記憶體220所讀取的一通道值。舉例來說,從步驟S810開始為記憶體控制器210從快閃記憶體220讀取資料所進行的解碼流程,且解碼流程係相對於上述編碼流程。
在步驟S820,檢查節點單元420由變數節點單元410取得一碼字差值,並依據碼字差值計算一徵狀值(syndrome)。
在步驟S830,在每一次LDPC解碼疊代期間,變數節點單元410係執行步驟S832~S840。
在步驟S832,判斷檢查節點單元420所產生的徵狀值是否為0。若徵狀值為0,則結束此次解碼流程。若徵狀值不為0,則繼續執行步驟S834。
在步驟S834,依據通道值及來自檢查節點單元420之徵狀值以決定一徵狀權重(syndrome weight)。其中,先前碼字中的各碼字位元均有相應的徵狀權重。
在步驟S836,取得一先前LDPC解碼疊代所產生的一先前碼字。舉例來說,在前次疊代所產生的更新碼字即為用於目前疊代中的先前碼字。
在步驟S838,依據徵狀權重及一預定閾值以決定先前碼字之各碼字位元的一位元翻轉演算法之一翻轉策略,並依據翻轉策略以翻動先前碼字中之一或多個碼字位元以產生一更新碼字。舉例來說,翻轉決定單元6131包括一翻轉策略查找表601用以記錄不同數值的徵狀權重及預定閾值所對應的翻轉策略,其中翻轉策略包括強翻轉(strong flip)策略、弱翻轉(weak flip)策略及未動作策略,但本發明並不限於此。
在步驟S840,將更新碼字減去先前碼字以產生碼字差值。需注意的是,在進行上述位元翻轉的過程中,會連各碼字位元的可靠度資訊一併考慮並依據翻轉策略以進行位元翻轉,但是位元翻轉電路6132在將更新碼字減去先前碼字以產生碼字差值後,只將碼字差值傳送至檢查節點單元420,且更新碼字中之各碼字位元相應的可靠度資訊則會儲存至變數節點記憶體2182中。
綜上所述,本發明係提供一種記憶體控制器及快閃記憶體的存取方法,其可讓使用位元翻轉(bit-flipper)之LDPC解
碼器中的變數節點單元可執行可設定的解碼策略,例如可針對解碼器之不同的解碼目標進行設定,包括:提高吞吐量(throughput)、提高校正率(correction rate)、或是降低功耗等等。此外,本發明中之解碼器的變數節點單元可針對已翻轉過的碼字位元及未翻轉過的碼字位元分別選擇適合的翻轉策略查找表,進而提高解碼效能。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
200:資料儲存裝置
210:記憶體控制器
211:處理單元
212:儲存單元
213:啟動程式
214:編碼器
218:緩衝記憶體
2181:通道值記憶體
2182:變數節點記憶體
220:快閃記憶體
230:主機
240:實體區塊
215:解碼器
216:控制邏輯
241:實體頁面
250、252:存取介面
Claims (20)
- 一種記憶體控制器,用於一資料儲存裝置,該記憶體控制器包括:一變數節點單元,用以取得從該資料儲存裝置之一快閃記憶體所讀取的一通道值;以及一檢查節點單元,用以由該變數節點單元取得一碼字差值,並依據該碼字差值計算一徵狀值(syndrome);其中,在每次低密度同位元查核碼(LDPC)解碼疊代之期間,該變數節點單元係執行:依據該通道值及來自該檢查節點單元之該徵狀值以決定一徵狀權重(syndrome weight);取得一先前LDPC解碼疊代所產生的一先前碼字;依據該徵狀權重及一預定閾值以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
- 如申請專利範圍第1項所述的記憶體控制器,其中當該通道值係由一硬決定(hard decision)方式從該快閃記憶體讀取而得時,該變數節點單元在初次LDPC解碼疊代時係將該通道值 設定為該先前碼字,並且將該先前碼字中之各碼字位元相應的一可靠度資訊設定為1。
- 如申請專利範圍第1項所述的記憶體控制器,其中當該通道值係由一軟決定(soft decision)方式從該快閃記憶體讀取而得,該通道值中之各位元係帶有相應的一可靠度資訊。
- 如申請專利範圍第2項所述的記憶體控制器,其中該變數節點單元包括:一翻轉決定單元,包括一翻轉策略查找表用以記錄不同數值的該徵狀權重及該預定閾值所對應的該翻轉策略,其中該翻轉策略包括強翻轉(strong flip)策略、弱翻轉(weak flip)策略及未動作策略;以及一位元翻轉電路,用以依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以及各碼字位元相應的可靠度資訊以產生該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊。
- 如申請專利範圍第4項所述的記憶體控制器,其中該位元翻轉電路更將該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊儲存至一變數節點記憶體以用於下一次LDPC解碼疊代。
- 如申請專利範圍第4項所述的記憶體控制器,其中該先前位元中之各碼字位元及其可靠度資訊之組合依序包括四個狀 態:強”1”(strong 1)、弱”1”(weak 1)、弱”0”(weak 0)及強”0”(strong 0),其中,該強翻轉策略係指將該四個狀態中之一特定狀態往距離2個階數或以上的狀態進行翻轉,且該弱翻轉策略係指將該四個狀態中之該特定狀態往距離1個階數的狀態進行翻轉,且該未動作策略係指將該四個狀態中之該特定狀態維持不更動。
- 如申請專利範圍第6項所述的記憶體控制器,其中當該徵狀權重及該預定閾值均大於一預定值且該徵狀權重大於或等於該預定閾值時,該徵狀權重及該預定閾值所相應的該翻轉策略為該強翻轉策略。
- 一種快閃記憶體的存取方法,應用於一資料儲存裝置中的一記憶體控制器,該方法包括:經由一儲存程序將資料儲存至該資料儲存裝置之一快閃記憶體;取得從該快閃記憶體所讀取的一通道值;取得一碼字差值,並依據該碼字差值計算一徵狀值(syndrome);以及在每次低密度同位元查核碼(LDPC)解碼疊代之期間,執行下列步驟:依據該通道值及該徵狀值以決定一徵狀權重(syndrome weight); 取得一先前LDPC解碼疊代所產生的一先前碼字;依據該徵狀權重及一預定閾值以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
- 如申請專利範圍第8項所述之快閃記憶體的存取方法,更包括:當該通道值係由一硬決定(hard decision)方式從該快閃記憶體讀取而得時,在初次LDPC解碼疊代時係將該通道值設定為該先前碼字,並且將該先前碼字中之各碼字位元相應的一可靠度資訊設定為1。
- 如申請專利範圍第8項所述之快閃記憶體的存取方法,其中當該通道值係由一軟決定(soft decision)方式從該快閃記憶體讀取而得,該通道值中之各位元係帶有相應的一可靠度資訊。
- 如申請專利範圍第9項所述之快閃記憶體的存取方法,更包括:建立一翻轉策略查找表用以記錄不同數值的該徵狀權重及該預定閾值所對應的該翻轉策略,其中該翻轉策略包括強翻轉(strong flip)策略、弱翻轉(weak flip)策略及未動作策略;以及 依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以及各碼字位元相應的可靠度資訊以產生該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊。
- 如申請專利範圍第11項所述之快閃記憶體的存取方法,更包括:將該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊儲存至一變數節點記憶體以用於下一次LDPC解碼疊代。
- 如申請專利範圍第11項所述之快閃記憶體的存取方法,其中該先前位元中之各碼字位元及其可靠度資訊之組合依序包括四個狀態:強”1”(strong 1)、弱”1”(weak 1)、弱”0”(weak 0)及強”0”(strong 0),其中,該強翻轉策略係指將該四個狀態中之一特定狀態往距離2個階數或以上的狀態進行翻轉,且該弱翻轉策略係指將該四個狀態中之該特定狀態往距離1個階數的狀態進行翻轉,且該未動作策略係指將該四個狀態中之該特定狀態維持不更動。
- 如申請專利範圍第13項所述之快閃記憶體的存取方法,其中當該徵狀權重及該預定閾值均大於一預定值且該徵狀權重大於或等於該預定閾值時,該徵狀權重及該預定閾值所相應的該翻轉策略為該強翻轉策略。
- 一種記憶體控制器,用於一資料儲存裝置,該記憶體控制器包括: 一變數節點單元,用以取得從該資料儲存裝置之一快閃記憶體所讀取的一通道值;以及一檢查節點單元,用以由該變數節點單元取得一碼字差值,並依據該碼字差值計算一徵狀值(syndrome);其中,在每次低密度同位元查核碼(LDPC)解碼疊代之期間,該變數節點單元係執行:依據來自該檢查節點單元之該徵狀值以決定一徵狀權重(syndrome weight);取得一先前LDPC解碼疊代所產生的一先前碼字;依據該通道值及該先前碼字以決定在該先前碼字中之各碼字位元是否已被翻轉過;對於該先前碼字中已被翻轉過各碼字位元及未被翻轉過各碼字位元,分別選擇一第一翻轉策略查找表及一第二翻轉策略查找表,其中該第一翻轉策略查找表不同於該第二翻轉策略查找表;依據該徵狀權重、一預定閾值及所選擇的該第一翻轉策略查找表或該第二翻轉策略查找表以決定該先前碼字之各碼字位元的一位元翻轉(bit-flipping)演算法之一翻轉策略,並依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以產生一更新碼字;以及將該更新碼字減去該先前碼字以產生該碼字差值。
- 如申請專利範圍第15項所述的記憶體控制器,其中當該通道值係由一硬決定(hard decision)方式從該快閃記憶體 讀取而得時,該變數節點單元在初次LDPC解碼疊代時係將該通道值設定為該先前碼字,並且將該先前碼字中之各碼字位元相應的一可靠度資訊設定為1。
- 如申請專利範圍第16項所述的記憶體控制器,其中該變數節點單元包括:一翻轉決定單元,包括該第一翻轉策略查找表及該第二翻轉策略查找表用以記錄不同數值的該徵狀權重及該預定閾值所對應的該翻轉策略,其中該翻轉策略包括強翻轉(strong flip)策略、弱翻轉(weak flip)策略及未動作策略;以及一位元翻轉電路,用以依據該翻轉策略以翻動該先前碼字中之一或多個碼字位元以及各碼字位元相應的可靠度資訊以產生該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊。
- 如申請專利範圍第17項所述的記憶體控制器,其中該位元翻轉電路更將該更新碼字及該更新碼字中之各碼字位元相應的該可靠度資訊儲存至一變數節點記憶體以用於下一次LDPC解碼疊代。
- 如申請專利範圍第17項所述的記憶體控制器,其中該先前位元中之各碼字位元及其可靠度資訊之組合依序包括四個狀態:強”1”(strong 1)、弱”1”(weak 1)、弱”0”(weak 0)及強”0”(strong 0), 其中該強翻轉策略係指將該四個狀態中之一特定狀態往距離2個階數或以上的狀態進行翻轉,且該弱翻轉策略係指將該四個狀態中之該特定狀態往距離1個階數的狀態進行翻轉,且該未動作策略係指將該四個狀態中之該特定狀態維持不更動。
- 如申請專利範圍第19項所述的記憶體控制器,其中該第二翻轉策略查找表中所使用的翻轉策略整體的翻轉階數比該第一翻轉策略查找表整體的翻轉階數低。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108144852A TWI697000B (zh) | 2019-12-09 | 2019-12-09 | 記憶體控制器及快閃記憶體的存取方法 |
CN202010010117.3A CN113032178B (zh) | 2019-12-09 | 2020-01-06 | 存储器控制器及快闪存储器的存取方法 |
US16/835,906 US11108408B2 (en) | 2019-12-09 | 2020-03-31 | Memory controller and method of accessing flash memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108144852A TWI697000B (zh) | 2019-12-09 | 2019-12-09 | 記憶體控制器及快閃記憶體的存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI697000B true TWI697000B (zh) | 2020-06-21 |
TW202123243A TW202123243A (zh) | 2021-06-16 |
Family
ID=72176447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144852A TWI697000B (zh) | 2019-12-09 | 2019-12-09 | 記憶體控制器及快閃記憶體的存取方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11108408B2 (zh) |
CN (1) | CN113032178B (zh) |
TW (1) | TWI697000B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812411B (zh) * | 2022-08-18 | 2023-08-11 | 慧榮科技股份有限公司 | 記憶體控制器及低密度同位元查核碼之位元翻轉方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11349498B2 (en) * | 2020-10-08 | 2022-05-31 | Micron Technology, Inc. | Bit flipping low-density parity-check decoders with low error floor |
US11722151B2 (en) | 2021-08-09 | 2023-08-08 | Micron Technology, Inc. | Bit flipping decoder based on soft information |
US11777522B1 (en) * | 2022-03-28 | 2023-10-03 | Micron Technology, Inc. | Bit flipping decoder with dynamic bit flipping criteria |
US20230396271A1 (en) * | 2022-06-01 | 2023-12-07 | Micron Technology, Inc. | Early stopping of bit-flip low density parity check decoding based on syndrome weight |
TWI829252B (zh) * | 2022-07-20 | 2024-01-11 | 慧榮科技股份有限公司 | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 |
US11923868B1 (en) | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Stall mitigation in iterative decoders |
US11901911B1 (en) * | 2022-08-18 | 2024-02-13 | Micron Technology, Inc. | Stall detection and mitigation in iterative decoders |
TWI831333B (zh) * | 2022-08-18 | 2024-02-01 | 慧榮科技股份有限公司 | 記憶體控制器及快閃記憶體的存取方法 |
US11923867B1 (en) | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Iterative decoder with a dynamic maximum stop condition |
US11967970B2 (en) * | 2022-09-14 | 2024-04-23 | SK Hynix Inc. | Bit-flipping decoder and decoding method for irregular codes |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090282319A1 (en) * | 2008-05-09 | 2009-11-12 | Samsung Electronics Co., Ltd. | Hierarchical decoding apparatus |
US8627188B2 (en) * | 2007-12-05 | 2014-01-07 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
US8677225B1 (en) * | 2011-02-11 | 2014-03-18 | Marvell International Ltd. | Low-density parity-check decoder |
TWI652677B (zh) * | 2017-11-29 | 2019-03-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9093154B2 (en) * | 2012-01-16 | 2015-07-28 | Silicon Motion, Inc. | Method, memory controller and system for reading data stored in flash memory |
TWI571885B (zh) * | 2012-02-24 | 2017-02-21 | 慧榮科技股份有限公司 | 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統 |
US9411683B2 (en) * | 2013-12-26 | 2016-08-09 | Intel Corporation | Error correction in memory |
TWI543178B (zh) * | 2014-06-10 | 2016-07-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US10089177B2 (en) * | 2014-06-30 | 2018-10-02 | Sandisk Technologies Llc | Multi-stage decoder |
US9614547B2 (en) * | 2014-06-30 | 2017-04-04 | Sandisk Technologies Llc | Multi-stage decoder |
TWI541820B (zh) * | 2014-07-10 | 2016-07-11 | 群聯電子股份有限公司 | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 |
US10135464B2 (en) * | 2015-01-05 | 2018-11-20 | SK Hynix Inc. | Reliability-assisted bit-flipping decoding algorithm |
US20170288698A1 (en) * | 2016-03-29 | 2017-10-05 | Silicon Motion Inc. | Power saving for bit flipping decoding algorithm in ldpc decoder |
CN107659375B (zh) * | 2016-07-25 | 2020-03-24 | 电信科学技术研究院 | 反馈方法及装置 |
US10547327B2 (en) * | 2017-06-23 | 2020-01-28 | Intel Corporation | Self-configuring error control coding |
US10484008B2 (en) * | 2017-09-28 | 2019-11-19 | SK Hynix Inc. | Memory system with on-the-fly error detection and termination and operating method thereof |
-
2019
- 2019-12-09 TW TW108144852A patent/TWI697000B/zh active
-
2020
- 2020-01-06 CN CN202010010117.3A patent/CN113032178B/zh active Active
- 2020-03-31 US US16/835,906 patent/US11108408B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627188B2 (en) * | 2007-12-05 | 2014-01-07 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
US20090282319A1 (en) * | 2008-05-09 | 2009-11-12 | Samsung Electronics Co., Ltd. | Hierarchical decoding apparatus |
US8677225B1 (en) * | 2011-02-11 | 2014-03-18 | Marvell International Ltd. | Low-density parity-check decoder |
US8996972B1 (en) * | 2011-02-11 | 2015-03-31 | Marvell International Ltd. | Low-density parity-check decoder |
TWI652677B (zh) * | 2017-11-29 | 2019-03-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812411B (zh) * | 2022-08-18 | 2023-08-11 | 慧榮科技股份有限公司 | 記憶體控制器及低密度同位元查核碼之位元翻轉方法 |
Also Published As
Publication number | Publication date |
---|---|
US11108408B2 (en) | 2021-08-31 |
CN113032178A (zh) | 2021-06-25 |
US20210175900A1 (en) | 2021-06-10 |
CN113032178B (zh) | 2024-03-29 |
TW202123243A (zh) | 2021-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI697000B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
TWI697907B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
US10191804B2 (en) | Updating reliability data | |
US10122382B2 (en) | VSS LDPC decoder with improved throughput for hard decoding | |
JP5197544B2 (ja) | メモリシステム | |
US9529666B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
CN111200440B (zh) | Ldpc解码器、半导体存储器系统及其操作方法 | |
US20150169406A1 (en) | Decoding techniques for a data storage device | |
US9274891B2 (en) | Decoding method, memory storage device, and memory controlling circuit unit | |
US20150326249A1 (en) | Modified trellis-based min-max decoder for non-binary low-density parity-check error-correcting codes | |
US9553608B2 (en) | Data storage device decoder and method of operation | |
US20170134049A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI718060B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
TWI831333B (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
TWI812411B (zh) | 記憶體控制器及低密度同位元查核碼之位元翻轉方法 | |
TWI836558B (zh) | 記憶體控制器及解碼管線之資料控制方法 | |
US11876535B1 (en) | Memory controller and method for controlling data in decoding pipeline | |
TW202013192A (zh) | 解碼器設計方法與儲存控制器 | |
TW202409837A (zh) | 記憶體控制器及快閃記憶體的存取方法 | |
TW202410043A (zh) | 記憶體控制器及低密度同位元查核碼之位元翻轉方法 | |
US20240185898A1 (en) | Syndrome decoding system |