TWI573147B - 解碼方法、記憶體儲存裝置及記憶體控制電路單元 - Google Patents
解碼方法、記憶體儲存裝置及記憶體控制電路單元 Download PDFInfo
- Publication number
- TWI573147B TWI573147B TW104136484A TW104136484A TWI573147B TW I573147 B TWI573147 B TW I573147B TW 104136484 A TW104136484 A TW 104136484A TW 104136484 A TW104136484 A TW 104136484A TW I573147 B TWI573147 B TW I573147B
- Authority
- TW
- Taiwan
- Prior art keywords
- offset
- group
- matrix
- sub
- groups
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1174—Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- 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/033—Theoretical methods to calculate these checking codes
- H03M13/036—Heuristic code construction methods, i.e. code construction or code search based on using trial-and-error
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/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
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明是有關於一種解碼技術,且特別是有關於一種解碼方法、記憶體儲存裝置及記憶體控制電路單元。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了避免從記憶體裝置中讀取出來的資料發生錯誤,欲儲存在記憶體裝置中的資料會被編碼爾後再被儲存。當欲讀取此資料時,整個編碼資料會被讀取出來並且被解碼。藉此,可透過解碼程序來更正可能存在的錯誤。然而,在一般的解碼電路中,雖然可以利用矩陣加法來取代矩陣乘法等機制來提升
解碼速度,但是為了實現符合特定標準的解碼操作,解碼電路中所配置的選擇器/移位暫存器之數量難以調整。
本發明提供一種解碼方法、記憶體儲存裝置及記憶體控制電路單元,可提升解碼效率及/或減少所需的選擇器/移位暫存器之數量。
本發明的一範例實施例提供一種解碼方法,其用於可複寫式非揮發性記憶體模組,所述解碼方法包括:決定偏移臨界值以及對應於所述偏移臨界值的檢查矩陣,其中所述檢查矩陣包括至少一子矩陣群組,其中所述子矩陣群組中的每一個子矩陣具有預設維度,其中所述偏移臨界值小於對應於所述預設維度的預設維度值,其中所述子矩陣群組包括第一子矩陣群組;發送讀取指令序列,其中所述讀取指令序列指示讀取所述可複寫式非揮發性記憶體模組的實體單元;接收對應於所述讀取指令序列的回應資料;以及對所述回應資料執行迭代解碼程序,其中所述迭代解碼程序包括:產生對應於所述回應資料的資料集合,其中所述資料集合包括多個預設群組;根據屬於所述第一子矩陣群組的多個子矩陣來移動所述預設群組以獲得多個第一偏移群組,其中所述第一偏移群組中的每一個偏移群組相對於所述預設群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第一偏移群組產生解碼參考資料。
在本發明的一範例實施例中,所述子矩陣群組更包括第二子矩陣群組,其中所述迭代解碼程序更包括:根據屬於所述第二子矩陣群組的多個子矩陣來移動所述第一偏移群組以獲得多個第二偏移群組,其中所述第二偏移群組中的每一個偏移群組相對於所述第一偏移群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第二偏移群組產生所述解碼參考資料。
在本發明的一範例實施例中,所述解碼參考資料為對應於低密度奇偶檢查碼之奇偶檢查程序的校驗子集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於位元翻轉演算法的校驗權重集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於低密度奇偶檢查碼的最小值-總和演算法的最小值集合。
在本發明的一範例實施例中,所述偏移臨界值負相關於所述檢查矩陣的行(column)權重值,其中所述行權重值對應於所述檢查矩陣中的一個行所包含的元素1之數目。
在本發明的一範例實施例中,所述偏移臨界值等於或大於將所述預設維度值除以所述行權重值而獲得的最小臨界值。
本發明的另一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,其中所述記憶體控制電路單元用以決定偏移臨界值
以及對應於所述偏移臨界值的檢查矩陣,其中所述檢查矩陣包括至少一子矩陣群組,其中所述子矩陣群組中的每一個子矩陣具有預設維度,其中所述偏移臨界值小於對應於所述預設維度的預設維度值,其中所述子矩陣群組包括第一子矩陣群組,其中所述記憶體控制電路單元更用以發送一讀取指令序列,其中所述讀取指令序列指示讀取所述可複寫式非揮發性記憶體模組的實體單元,其中所述記憶體控制電路單元更用以接收對應於所述讀取指令序列的回應資料,其中所述記憶體控制電路單元更用以對所述回應資料執行迭代解碼程序,其中所述迭代解碼程序包括:產生對應於所述回應資料的資料集合,其中所述資料集合包括多個預設群組;根據屬於所述第一子矩陣群組的多個子矩陣來移動所述預設群組以獲得多個第一偏移群組,其中所述第一偏移群組中的每一個偏移群組相對於所述預設群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第一偏移群組產生解碼參考資料。
在本發明的一範例實施例中,所述子矩陣群組更包括第二子矩陣群組,其中所述迭代解碼程序更包括:根據屬於所述第二子矩陣群組的多個子矩陣來移動所述第一偏移群組以獲得多個第二偏移群組,其中所述第二偏移群組中的每一個偏移群組相對於所述第一偏移群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第二偏移群組產生所述解碼參考資料。
在本發明的一範例實施例中,所述解碼參考資料為對應
於低密度奇偶檢查碼的奇偶檢查程序的校驗子集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於位元翻轉演算法的校驗權重集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於低密度奇偶檢查碼的最小值-總和演算法的最小值集合。
在本發明的一範例實施例中,所述偏移臨界值負相關於所述檢查矩陣的行權重值,其中所述行權重值對應於所述檢查矩陣中的一個行所包含的元素1之數目。
在本發明的一範例實施例中,所述偏移臨界值等於或大於將所述預設維度值除以所述行權重值而獲得的最小臨界值。
本發明的另一範例實施例提供一種記憶體控制電路單元,其用於控制可複寫式非揮發性記憶體模組,所述記憶體控制電路單元包括主機介面、記憶體介面、錯誤檢查與校正電路及記憶體管理電路。所述主機介面用以耦接至主機系統。所述記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組。所述記憶體管理電路耦接至所述主機介面、所述記憶體介面及所述錯誤檢查與校正電路。其中所述記憶體管理電路用以決定偏移臨界值以及對應於所述偏移臨界值的檢查矩陣,其中所述檢查矩陣包括至少一子矩陣群組,其中所述子矩陣群組中的每一個子矩陣具有預設維度,其中所述偏移臨界值小於對應於所述預設維度的預設維度值,其中所述子矩陣群組包括第一子矩陣群組,其中所述記憶體管理電路更用以發送讀取指令序列,其中所述讀取指令序列指示
讀取所述可複寫式非揮發性記憶體模組的實體單元,其中所述記憶體管理電路更用以接收對應於所述讀取指令序列的回應資料,其中所述錯誤檢查與校正電路用以對所述回應資料執行迭代解碼程序,其中所述迭代解碼程序包括:產生對應於所述回應資料的資料集合,其中所述資料集合包括多個預設群組;根據屬於所述第一子矩陣群組的多個子矩陣來移動所述預設群組以獲得多個第一偏移群組,其中所述第一偏移群組中的每一個偏移群組相對於所述預設群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第一偏移群組產生解碼參考資料。
在本發明的一範例實施例中,所述子矩陣群組更包括第二子矩陣群組,其中所述迭代解碼程序更包括:根據屬於所述第二子矩陣群組的多個子矩陣來移動所述第一偏移群組以獲得多個第二偏移群組,其中所述第二偏移群組中的每一個偏移群組相對於所述第一偏移群組中的一對應群組的偏移量皆不超過所述偏移臨界值;以及根據所述第二偏移群組產生所述解碼參考資料。
在本發明的一範例實施例中,所述解碼參考資料為對應於低密度奇偶檢查碼的奇偶檢查程序的校驗子集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於位元翻轉演算法的校驗權重集合。
在本發明的一範例實施例中,所述解碼參考資料為對應於低密度奇偶檢查碼的最小值-總和演算法的最小值集合。
在本發明的一範例實施例中,所述偏移臨界值負相關於
所述檢查矩陣的行權重值,其中所述行權重值對應於所述檢查矩陣中的一個行所包含的元素1之數目。
在本發明的一範例實施例中,所述偏移臨界值等於或大於將所述預設維度值除以所述行權重值而獲得的最小臨界值。
在本發明的一範例實施例中,所述錯誤檢查與校正電路包括至少一第一暫存電路、移位電路、至少一第二暫存電路及至少一操作電路。所述第一暫存電路用以暫存所述預設群組中的目標群組。所述移位電路耦接至所述第一暫存電路,其中所述移位電路用以移動所述目標群組並且輸出所述第一偏移群組中對應於所述目標群組的偏移目標群組。所述第二暫存電路耦接至所述移位電路並且用以暫存所述偏移目標群組。所述操作電路耦接至所述第二暫存電路,其中所述操作電路用以對所述偏移目標群組執行邏輯操作並且產生所述解碼參考資料。
基於上述,在決定偏移臨界值與相對應的奇偶檢查矩陣之後,在迭代解碼程序中,一個資料集合中的群組會對應於奇偶檢查矩陣而被執行群組移動並且對應的偏移量會被限制於不超過所設定的偏移臨界值。藉此,在本發明的一範例實施例中,可減少錯誤檢查與校正電路中所需配置的選擇器/移位暫存器之數量。此外,在本發明的一範例實施例中,根據偏移群組來產生解碼參考資料也可提升迭代解碼程序中某些階段的執行效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
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‧‧‧可複寫式非揮發性記憶體模組
502‧‧‧記憶體管理電路
504‧‧‧主機介面
506‧‧‧記憶體介面
508‧‧‧錯誤檢查與校正電路
510‧‧‧緩衝記憶體
512‧‧‧電源管理電路
601(1)~601(k)‧‧‧奇偶節點
602(1)~602(n)‧‧‧訊息節點
610‧‧‧置信傳播圖
700、800、1200‧‧‧奇偶檢查矩陣
810、910、920‧‧‧碼字
820‧‧‧校驗子集合
830、840、1210、1220、1230‧‧‧子矩陣群組
831~833、841~843‧‧‧子矩陣
911~913、921~923‧‧‧偏移群組
1001‧‧‧校驗權重集合
1002、1003、1101~1108‧‧‧向量
1201‧‧‧最小值集合
1301~1303、1703‧‧‧選擇器
1311~1313、1701、1702‧‧‧暫存器
1401~1403‧‧‧移位暫存器
S1801、S1802、S1803、S1804、S18041、S18042、S18043‧‧‧步驟
1901_1~1901_3、1903_1~1903_3‧‧‧暫存電路
1902‧‧‧移位電路
1904_1~1904_3‧‧‧操作電路
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。
圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
圖6是根據本發明的一範例實施例所繪示的低密度奇偶檢查碼之置信傳播(belief propagation)的示意圖。
圖7是根據本發明的一範例實施例所繪示的奇耦檢查矩陣的示意圖。
圖8是根據本發明的一範例實施例所繪示的奇偶檢查程序的示意圖。
圖9是根據本發明的一範例實施例所繪示的獲得對應於奇偶檢查程序之校驗子集合的示意圖。
圖10與圖11是根據本發明的另一範例實施例所繪示的獲得
對應於位元翻轉演算法之校驗權重的示意圖。
圖12與圖13是根據本發明的另一範例實施例所繪示的獲得對應於最小值-總和演算法之最小值集合的示意圖。
圖14是根據本發明的一範例實施例所繪示的群組移動的示意圖。
圖15A與圖15B是根據本發明的一範例實施例所繪示的階層式移位器架構的示意圖。
圖16A與圖16B是根據本發明的一範例實施例所繪示的筒式移位器(Barrel Shifter)架構的示意圖。
圖17是根據本發明的另一範例實施例所繪示的簡化(reduced)移位器架構的示意圖。
圖18是根據本發明的一範例實施例所繪示的解碼方法的流程圖。
圖19是根據本發明的一範例實施例所繪示的錯誤檢查與校正電路的概要方塊圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(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個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
請參照圖5,記憶體控制電路單元404包括記憶體管理電路502、主機介面504、記憶體介面506及錯誤檢查與校正電路508。
記憶體管理電路502用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路502具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路502的操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路502的控制指令是以韌體型式來實作。例如,記憶體管理電路502具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路502的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路502具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路502的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路502的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路502包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。其中,記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的實體抹除單元;記憶體寫入電路用以對可
複寫式非揮發性記憶體模組406下達寫入指令序列以將資料寫入至可複寫式非揮發性記憶體模組406中;記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料;記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除;而資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。
主機介面504是耦接至記憶體管理電路502並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面504來傳送至記憶體管理電路502。在本範例實施例中,主機介面504是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面504亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面506是耦接至記憶體管理電路502並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面506轉換
為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路502要存取可複寫式非揮發性記憶體模組406,記憶體介面506會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列,在此不一一贅述。這些指令序列例如是由記憶體管理電路502產生並且透過記憶體介面506傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
錯誤檢查與校正電路508是耦接至記憶體管理電路502並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路502從主機系統11中接收到寫入指令時,錯誤檢查與校正電路508會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路502會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路502從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路508會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯
誤檢查與校正程序。
在本範例實施例中,錯誤檢查與校正電路508所使用的是低密度奇偶檢查碼(low density parity code,LDPC)。然而,在另一範例實施例中,錯誤檢查與校正電路508所使用的也可以是BCH碼、迴旋碼(convolutional code)、渦輪碼(turbo code)、位元翻轉(bit flipping)等編/解碼演算法。
在一範例實施例中,記憶體控制電路單元404還包括緩衝記憶體510與電源管理電路512。緩衝記憶體510是耦接至記憶體管理電路502並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路512是耦接至記憶體管理電路502並且用以控制記憶體儲存裝置10的電源。
在本範例實施例中,記憶體管理電路502會配置邏輯單元來映射至可複寫式非揮發性記憶體模組406中的實體單元。例如,在本範例實施例中,主機系統11是透過邏輯位址來存取可複寫式非揮發性記憶體模組406中的資料,因此,每一個邏輯單元是指一個邏輯位址。然而,在另一範例實施例中,每一個邏輯單元也可以是指一個邏輯扇、一個邏輯頁或者由多個連續的邏輯位址組成。每一個邏輯單元是映射至一或多個實體單元。在本範例實施例中,一個實體單元是指一個實體區塊。然而,在另一範例實施例中,一個實體單元也可以是一個實體位址、一個實體扇、一個實體頁或者是由多個連續的實體位址組成,本發明不加以限
制。
記憶體管理電路502會將邏輯單元與實體單元之間的映射關係記錄於一邏輯-實體映射表。當主機系統11欲從記憶體儲存裝置10讀取資料或寫入資料至記憶體儲存裝置10時,記憶體管理電路502可根據此邏輯-實體映射表來執行對於記憶體儲存裝置10的資料存取。
在本範例實施例中,錯誤檢查與校正電路508會根據低密度奇偶檢查碼來編碼與解碼。在低密度奇偶檢查碼中,是用一個檢查矩陣(亦稱為奇偶檢查矩陣)來定義有效的碼字。以下將奇偶檢查矩陣標記為矩陣H,並且一碼字標記為CW。依照以下方程式(1),若奇偶檢查矩陣H與碼字CW的相乘是零向量,表示碼字CW為有效的碼字。其中運算子表示模2(mod 2)的矩陣相乘。換言之,矩陣H的零空間(null space)便包含了所有的有效碼字(valid codeword)。然而,本發明並不限制碼字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中存在至少一個錯誤並且碼字CW不是有效的碼字。
向量S的維度是k-乘-1,其中每一個元素亦稱為校驗子(syndrome)。向量S亦稱為校驗子向量(或校驗子集合)。若碼字CW
不是有效的碼字,則錯誤檢查與校正電路508會執行一個解碼程序,以嘗試更正碼字CW中的錯誤。
圖6是根據本發明的一範例實施例所繪示的低密度奇偶檢查碼之置信傳播(belief propagation)的示意圖。
請參照圖6,一般來說,奇耦檢查矩陣H可以表示為置信傳播圖610,其中包括奇偶節點601(1)~601(k)與訊息節點602(1)~602(n)。每一個奇偶節點601(1)~601(k)是對應到一個校驗子,而每一個訊息節點602(1)~602(n)是對應一個資料位元。資料位元與校驗子之間的對應關係(即,訊息節點602(1)~602(n)與奇偶節點601(1)~601(k)之間的連結關係)是根據奇偶檢查矩陣H所產生。具體來說,若奇耦檢查矩陣H中第i列(row)第j行(column)的元素為1,則第i個奇偶節點601(i)便會連接到第j個訊息節點602(j),其中i與j為正整數。
當記憶體管理電路502從可複寫式非揮發性記憶體模組106中讀取n個資料位元(形成一個碼字)時,記憶體管理電路502(或錯誤檢查與校正電路508)也會取得每一個資料位元的可靠度資訊(亦稱為通道可靠度資訊)。此可靠度資訊是用以表示對應的資料位元被解碼為位元”1”或是”0”的機率(或稱信心度)。例如,在圖610中,訊息節點602(1)~602(n)會接收到對應的可靠度資訊L 1 ~L n 。其中,訊息節點602(1)會接收第1個資料位元的可靠度資訊L 1 ,而訊息節點602(j)會接收第j個資料位元的可靠度資訊L j 。
錯誤檢查與校正電路508會根據圖610的結構與通道可
靠度資訊L 1 ~L n 來執行解碼程序。在本範例實施例中,錯誤檢查與校正電路508所執行的解碼程序為一迭代解碼(iterative decoding)程序。在迭代解碼程序中,訊息節點602(1)~602(n)會計算出可靠度資訊給奇偶節點601(1)~601(k),並且奇偶節點601(1)~601(k)也會計算出可靠度資訊給訊息節點602(1)~602(n)。計算出來的可靠度資訊會沿著這些圖610中的邊(edge)來傳送。例如,奇偶節點601(i)傳送給訊息節點602(j)的是可靠度資訊L i→j ,而訊息節點602(j)傳送給奇偶節點601(i)是可靠度資訊L j→i 。這些可靠度資訊是用來表示一個節點認為某一個資料位元被解碼為“1”或是“0”的機率(或上述信心度)有多少。舉例來說,可靠度資訊L j→i 表示訊息節點602(j)認為第j個資料位元被解碼為“1”或是“0”的信心度(可為正或是負),而可靠度資訊L i→j 表示奇偶節點601(i)認為第j個資料位元被解碼為“1”或是“0”的信心度。而訊息節點602(1)~602(n)與奇偶節點601(1)~601(k)會根據輸入的可靠度資訊來計算輸出的可靠度資訊,其近似於計算一個資料位元被解碼為“1”或是“0”的條件機率。因此,上述傳送可靠度資訊的過程又被稱為置信傳播。
當採用不同的演算法,訊息節點602(1)~602(n)及/或奇偶節點601(1)~601(k)會計算出不同的可靠度資訊。例如,錯誤檢查與校正電路508可以採用總和-乘積演算法(Sum-Product Algorithm)、最小值-總和演算法(Min-Sum Algorithm)、或是位元翻轉(bit-flipping Algorithm),本發明並不限制採用何種演算法。
在本範例實施例中,迭代解碼程序中的迭代(iteration)會
不斷的重覆執行,以更新至少部份資料位元的可靠度資訊,直到成功地獲得有效碼字或執行迭代的次數到達一預定門檻值為止。例如,在迭代解碼程序的每一次迭代中,訊息節點602(1)~602(n)會傳遞可靠度資訊給奇偶節點601(1)~601(k),並且奇偶節點601(1)~601(k)會傳遞可靠度資訊給訊息節點602(1)~602(n)。
在每一次迭代過後,錯誤檢查與校正電路508會根據目前的可靠度資訊計算出每一個資料位元應該被解碼為位元“1”或是“0”並且對這些計算出的資料位元進行驗證。例如,錯誤檢查與校正電路508會執行奇偶檢查程序以驗證計算出的資料位元。在奇偶檢查程序中,錯誤檢查與校正電路508會將資料位元所形成的碼字與相對應的奇偶檢查矩陣相乘,藉此判斷該碼字是否為有效的碼字。若所產生的碼字為有效的碼字,表示解碼成功,並且迭代解碼程序會停止。若所產生的碼字不是有效的碼字,則會進行下一次的迭代。此外,若迭代解碼程序中的迭代次數超過一個預設值,則迭代解碼也會停止,表示解碼失敗。
圖7是根據本發明的一範例實施例所繪示的奇耦檢查矩陣的示意圖。
請參照圖7,奇偶檢查矩陣700的維度是6-乘-9,但本發明並不限制正整數k與n為多少。奇偶檢查矩陣700的每一列(row)亦代表了一個限制(constraint)。以奇偶檢查矩陣700的第一列為例,若某一個碼字是有效碼字,則將此碼字中第2、6及7個位元做模2(modulo-2)的加法之後,會得到位元“0”。在此領域有通常知
識者應能理解如何用奇偶檢查矩陣700來編碼,在此便不再贅述。此外,奇偶檢查矩陣700僅為一個範例矩陣,而非用以限制本發明。
當記憶體管理電路502要將多個位元寫入至可複寫式非揮發性記憶體模組406時,錯誤檢查與校正電路508會對每(n-k)個欲被寫入的位元(即,訊息位元)都產生對應的k個位元(即,奇偶位元)。記憶體管理電路502會把這n個位元(即,資料位元)作為一個碼字寫入至可複寫式非揮發性記憶體模組406。
記憶體管理電路502會接收來自主機系統11的一讀取指令。根據此讀取指令,記憶體管理電路502會發送一讀取指令序列至可複寫式非揮發性記憶體模組406。此讀取指令序列會指示可複寫式非揮發性記憶體模組406讀取至少一實體單元。根據此讀取指令序列,可複寫式非揮發性記憶體模組406會執行相對應的讀取操作(例如,施予讀取電壓至某一實體單元以讀取至少一記憶胞所儲存之資料)並回傳一回應資料給記憶體管理電路502。記憶體管理電路502會接收來自可複寫式非揮發性記憶體模組406的回應資料,並且錯誤檢查與校正電路508會對此回應資料執行一迭代解碼程序。
在本範例實施例中,記憶體管理電路502會決定一個偏移臨界值。根據所決定的偏移臨界值,記憶體管理電路502會決定一個檢查矩陣(例如,圖7中的奇偶檢查矩陣700)。錯誤檢查與校正電路508會根據此檢查矩陣來執行上述編碼與解碼程序。相
關的編碼與解碼程序已詳述於上,在此便不贅述。
在本範例實施例中,所決定的檢查矩陣會包括多個子矩陣。此些子矩陣會被分組為至少一個子矩陣群組。每一個子矩陣會具有一個預設維度。特別是,所決定的偏移臨界值會小於對應於此預設維度的一個預設維度值。例如,若每一個子矩陣的預設維度皆為3-乘-3,則對應於此預設維度的預設維度值為“3”。
在迭代解碼程序中,錯誤檢查與校正電路508會產生對應於所接收之回應資料的一個資料集合。此資料集合會包括多個群組。錯誤檢查與校正電路508會根據所決定的偏移臨界值與所決定的檢查矩陣中不同的子矩陣群組來移動(shift)此些資料集合中的群組以獲得多個偏移群組,使得資料集合中的每一個群組對應於每一次的移動(以下亦稱為群組移動)的一偏移量都不會超過所決定的偏移臨界值。值得一提的是,在此提及的群組移動是指以群組為單位來移動各個群組中的位元。例如,假設某一個群組包括依序排列的元素“A1”、“A2”及“A3”,則在對於此群組執行位移量為“1”(即,offset=1)的群組移動之後,此群組中的元素排列順序改變為元素“A3”、“A1”及“A2”;而依序排列的元素“A3”、“A1”及“A2”可視為相對於依序排列的元素“A3”、“A1”及“A2”之偏移群組,並且依序排列的元素“A3”、“A1”及“A2”相對於依序排列的元素“A3”、“A1”及“A2”的偏移量為“1”。然後,錯誤檢查與校正電路508會根據此些偏移群組來產生解碼參考資料。此解碼參考資料會在迭代解碼程序中被使用。
在一範例實施例中,所產生的解碼參考資料是對應於一個奇偶檢查程序的校驗子集合(亦稱為校驗子向量)並且可被用來驗證某一碼字是否為有效碼字(或,解碼是否成功)。在一範例實施例中,所產生的解碼參考資料是對應於一個位元翻轉演算法的校驗權重集合(亦稱為校驗權重向量)並且可被用來決定要被翻轉的資料位元。在一範例實施例中,所產生的解碼參考資料則是對應於一個最小值-總和演算法的最小值集合(亦稱為最小值向量)並且可被用來決定至少部份資料位元的可靠度資訊。以下基於多個範例實施例來說明如何在迭代解碼程序中對資料集合執行移動群組並產生相對應的解碼參考資料。
圖8是根據本發明的一範例實施例所繪示的奇偶檢查程序的示意圖。在本範例實施例中,資料集合與解碼參考資料皆是用於低密度奇偶檢查碼的奇偶檢查程序。例如,資料集合是指奇偶檢查程序中待驗證之碼字,而解碼參考資料則是奇偶檢查程序中產生的校驗子集合。
請參照圖8,記憶體管理電路502會決定一個偏移臨界值。在本範例實施例中,所決定的偏移臨界值為“2”。對應於所決定的偏移臨界值,記憶體管理電路502會決定一個奇偶檢查矩陣800。奇偶檢查矩陣800會被用來執行儲存資料時的編碼與讀取資料時的解碼。
在本範例實施例中,奇偶檢查矩陣800包括子矩陣群組830與840。子矩陣群組830與840分別包括以列(row)方向排列的
子矩陣831~833以及841~843。子矩陣831~833以及841~843中的每一者皆為一個方陣,並且子矩陣831~833以及841~843中的每一者皆具有一個預設維度。例如,子矩陣831~833以及841~843中的每一者之預設維度皆為3-乘-3,並且對應於此預設維度的預設維度值為“3”。記憶體管理電路502會限制所決定的奇偶檢查矩陣800中,對應於子矩陣831~833以及841~843中的每一者之預設維度的預設維度值(即,“3”)大於事先決定的偏移臨界值(即,“2”)。然而,對應於不同的偏移臨界值,所決定的奇偶檢查矩陣也可以不同,只要滿足所決定的奇偶檢查矩陣中各個子矩陣的預設維度值大於事先決定的偏移臨界值即可。例如,在另一範例實施例中,奇偶檢查矩陣中的子矩陣群組的數目可以是更多或更少、每一個子矩陣群組中的子矩陣的數目可以是更多或更少,並且每一個子矩陣的預設維度可以是更大或更小。
在本範例實施例中,在記憶體管理電路502發送上述讀取指令序列並接收對應於此讀取指令序列的回應資料之後,錯誤檢查與校正電路508會對此回應資料執行迭代解碼程序。在迭代解碼程序的某一迭代中,碼字810會被決定並且在對應的奇偶檢查程序中被驗証是否為有效碼字。
具體而言,在對於碼字810的奇偶檢查程序中,錯誤檢查與校正電路508會獲得奇偶檢查矩陣800與碼字810之矩陣相乘的結果並將此結果作為校驗子集合820。例如,對應於奇偶檢查矩陣800的第一列中的多個元素1的位置,對碼字810中的位元
A2、B3及C1執行模2加法可獲得校驗子集合820中的校驗子S1;對應於奇偶檢查矩陣800的第二列中的多個元素1的位置,對碼字810中的位元A3、B1及C2執行模2加法可獲得校驗子集合820中的校驗子S2;對應於奇偶檢查矩陣800的第四列中的多個元素1的位置,對碼字810中的位元A3、B1及C2執行模2加法可獲得校驗子集合820中的校驗子S4。以此類推,校驗子集合820中的校驗子S1~S6會被獲得。然後,錯誤檢查與校正電路508會根據校驗子集合820是否為零向量(即,校驗子S1~S6皆為“0”)來判斷碼字810中是否存在錯誤。例如,若校驗子S1~S6皆為“0”,則錯誤檢查與校正電路508會判定碼字810中不存在任何錯誤(即,碼字810為有效碼字)並且根據碼字810輸出解碼資料;然而,若校驗子S1~S6的至少其中之一為“1”,則錯誤檢查與校正電路508會判定碼字810中存在錯誤。若錯誤檢查與校正電路508判定碼字810中存在錯誤且已執行之迭代的次數尚未達到預定門檻值,則錯誤檢查與校正電路508會對於碼字810執行下一次迭代並且再次執行一個奇偶檢查程序來對產生的碼字進行驗證。此外,在一範例實施例中,亦可以搭配改變讀取電壓準位來再次讀取相同的實體單元或改變解碼方式等機制來加強解碼效率,在此便不贅述。
在本範例實施例中,錯誤檢查與校正電路508並不會真正地執行如圖8所繪示的矩陣相乘。取而代之的是,錯誤檢查與校正電路508會對應於奇偶檢查矩陣800中的子矩陣群組830與840來對碼字810執行群組移動以及矩陣加法來獲得校驗子集合
820。原因在於,在多數的情況下,執行矩陣加法相對於執行矩陣乘法具有運算複雜度較低及/或運算速度較快之優勢。換言之,錯誤檢查與校正電路508會以層(layer)為單位來逐漸產生校驗子集合820。例如,子矩陣群組830為第一層並且用以計算校驗子集合820中的校驗子S1~S3;子矩陣群組840為第二層並且用以計算校驗子集合820中的校驗子S4~S6。
在本範例實施例中,對應於奇偶檢查矩陣800中每一個子矩陣的預設維度,錯誤檢查與校正電路508會將碼字810中的位元分組為多個群組(以下亦稱為預設群組)。例如,對應於子矩陣的預設維度為3-乘3,碼字810中的位元A1、A2、A3被分組至同一個預設群組(以下亦稱為第一預設群組),碼字810中的位元B1、B2、B3被分組至同一個預設群組(以下亦稱為第二預設群組),並且碼字810中的位元C1、C2、C3被分組至同一個預設群組(以下亦稱為第三預設群組)。在對應的群組移動中,碼字810中的每一個位元皆是以其所屬的群組作為一個統一移動單位。換言之,屬於同一個群組的多個位元對應於一次的群組移動之偏移量會相同,而屬於不同群組的多個位元對應於一次的群組移動之偏移量可能相同或不同。例如,在對應於某一個層的群組移動中,同屬於第一預設群組的位元A1、A2及A3的偏移量相同,但分別屬於第一預設群組與第二預設群組的位元A1與B1的偏移量可能相同或不同。
圖9是根據本發明的一範例實施例所繪示的獲得對應於
奇偶檢查程序之校驗子集合的示意圖。
請參照圖8與圖9,對應於子矩陣群組830(即,第一層)的群組移動會先被執行。例如,對應於子矩陣群組830中元素1的位置,碼字810中的位元A1、A2、A3會被移動為位元A2、A3、A1,碼字810中的位元B1、B2、B3會被移動為位元B3、B1、B2,並且碼字810中的位元C1、C2、C3不被移動。因此,圖9中包含依序排列的位元A2、A3、A1、B3、B1、B2、C1、C2、C3的碼字910會被獲得。
在本範例實施例中,碼字910中的位元A2、A3、A1被視為屬於對應於第一預設群組的偏移群組911,碼字910中的位元B3、B1、B2被視為屬於對應於第二預設群組的偏移群組912,並且碼字910中的位元C1、C2、C3被視為屬於對應於第三預設群組的偏移群組913。其中,偏移群組911相對於第一預設群組的偏移量為“1”(即,offset=1),偏移群組912相對於第二預設群組的偏移量為“2”(即,offset=2),並且偏移群組913相對於第三預設群組的偏移量為“0”(即,offset=0)。然後,錯誤檢查與校正電路508會根據偏移群組911~913來產生校驗子集合820中的一部份校驗子。例如,錯誤檢查與校正電路508會對偏移群組911~913執行矩陣加法以獲得校驗子向量1020中的校驗子S1~S3。
在獲得偏移群組911~913之後,對應於子矩陣群組840(即,第二層)的群組移動會被執行。例如,對應於子矩陣群組840中元素1的位置,偏移群組911中的位元A2、A3、A1會被移
動為位元A3、A1、A2,偏移群組912中的位元B3、B1、B2會被移動為位元B1、B2、B3,並且偏移群組913中的位元C1、C2、C3會被移動為位元C2、C3、C1。因此,圖9中包含依序排列的位元A3、A1、A2、B1、B2、B3、C2、C3、C1的碼字920會被獲得。
在本範例實施例中,碼字920中的位元A3、A1、A2被視為屬於對應於偏移群組911的偏移群組921,碼字920中的位元B1、B2、B3被視為屬於對應於偏移群組912的偏移群組922,並且碼字920中的位元C2、C3、C1被視為屬於對應於偏移群組913的偏移群組923。其中,偏移群組921相對於偏移群組911的偏移量為“1”(即,offset=1),偏移群組922相對於偏移群組912的偏移量為“1”(即,offset=1),並且偏移群組923相對於偏移群組913的偏移量為“1”(即,offset=1)。然後,錯誤檢查與校正電路508會根據偏移群組921~923來產生校驗子集合820中的另一部份的校驗子。例如,錯誤檢查與校正電路508會對偏移群組921~923執行矩陣加法以獲得校驗子集合820中的校驗子S4~S6。
記憶體管理電路502(或,錯誤檢查與校正電路508)會限制對應於每一個子矩陣群組(即,層)所執行的群組移動之偏移量皆不超過所決定的偏移臨界值。例如,在圖8與圖9的範例實施例中,偏移臨界值被設定為“2”,因此,偏移群組911~913中的每一者相對於其在碼字810中的一個對應群組的偏移量皆不超過“2”;而偏移群組921~923分別相對於偏移群組911~913的偏移量也不超過“2”。例如,在執行對應於子矩陣群組830(即,第一層)的群
組移動而產生偏移群組911~913的操作中,碼字810中每一個位元的偏移量可以是“0”、“1”或“2”,視其所屬的群組而定;而在執行對應於子矩陣群組840(即,第二層)的群組移動而產生偏移群組921~923的操作中,碼字920中每一個位元的偏移量也可以是“0”、“1”或“2”,視其所屬的群組而定。此外,在圖8與圖9的另一範例實施例中,若偏移臨界值被設定為“1”,則在後續每一次的群組移動中每一個偏移群組中的位元之偏移量皆不超過“1”。
在一範例實施例中,若奇偶檢查程序中產生的校驗子集合不是零向量(例如,圖8中校驗子S1~S6的至少其中之一為“1”),表示當前驗證的碼字中存在錯誤。因此,一個位元翻轉演算法可以被用來快速地決定要翻轉(flip)碼字中的哪一個位元,例如,將某一個位元的值從“0”改變為“1”或者從“1”改變為“0”,以嘗試更正碼字中的錯誤。在位元翻轉演算法中,需要計算對應於校驗子集合的一個校驗權重(syndrome weight)集合並且碼字中的至少一個位元會基於此校驗權重集合而被翻轉。在一範例實施例中,藉由對資料集合中的多個群組執行群組移動來獲得相對應的解碼參考資料,則可降低計算校驗權重集合的運算複雜度及/或提高運算速度。然而,在另一範例實施例中,若判定當前驗證碼字中存在錯誤,其他的解碼演算法也可以被用來更正碼字中的錯誤。
圖10與圖11是根據本發明的另一範例實施例所繪示的獲得對應於位元翻轉演算法之校驗權重的示意圖。在本範例實施例中,資料集合與解碼參考資料皆是用於位元翻轉演算法。例如,
資料集合是指位元翻轉演算法中待更新之校驗權重集合,而解碼參考資料則是位元翻轉演算法中更新後的校驗權重集合。
請參照圖10,在獲得校驗子集合820之後,在位元翻轉演算法中,一個校驗權重集合1001會被決定。例如,校驗權重集合1001會包括依序排列的校驗權重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3。其中,校驗權重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3分別對應於碼字810中的位元A1、A2、A3、B1、B2、B3、C1、C2及C3。校驗權重集合1001可用來表示碼字810中每一個位元對於碼字810中的錯誤之參與程度。例如,根據奇偶檢查矩陣800,位元A1參與了校驗子S3與S5的計算,故可根據校驗子S3與S5來計算對應於位元A1的校驗權重EA1。例如,可將校驗子S3與S5相加以獲得校驗權重EA1。又例如,根據奇偶檢查矩陣800,位元A2參與了校驗子S1與S6的計算,故可根據校驗子S1與S6來計算對應於位元A2的校驗權重EA2。例如,可將校驗子S1與S6相加以獲得校驗權重EA2。特別是,在此用來計算校驗權重之加法是指一般加法,並非模2加法。例如,若校驗子S3與S5皆為“1”,則將校驗子S3與S5相加可獲得校驗權重EA1為“2”。以此類推,根據奇偶檢查矩陣800與校驗子集合820,校驗權重集合1001可被獲得。
在位元翻轉演算法中,若碼字中的某一個位元所對應的校驗權重很大,表示此位元有較大的機率為錯誤位元,因此翻轉此位元有較高的機率可以更正錯誤。反之,若碼字中的某一個位
元所對應的校驗權重很小,則表示此位元為錯誤位元的機率不高,因此翻轉此位元可以更正錯誤的機率也不高。一般來說,根據奇偶檢查矩陣800與校驗子集合820來獲得校驗權重集合1001的操作可以等效於將向量1002加上向量1003來獲得校驗權重集合1001。其中,向量1002中的元素僅包括校驗子S1~S3,而向量1003中的元素則僅包括校驗子S4~S6。校驗子S1~S3在向量1002中的位置是根據奇偶檢查矩陣800來決定,並且校驗子S4~S6在向量1003中的位置也是根據奇偶檢查矩陣800來決定。
在本範例實施例中,錯誤檢查與校正電路508同樣是以層為單位來逐漸產生校驗權重集合1001。例如,子矩陣群組830為第一層並且用以執行校驗權重集合的第一更新操作;子矩陣群組840為第二層並且用以執行校驗權重集合的第二更新操作。在本範例實施例中,錯誤檢查與校正電路508會將向量1001中的多個校驗權重分組為多個預設群組。例如,校驗權重EA1、EA2、EA3屬於第一預設群組,校驗權重EB1、EB2、EB3屬於第二預設群組,並且校驗權重EC1、EC2、EC3屬於第三預設群組。
請參照圖11,對應於子矩陣群組830(即,第一層)的群組移動會先被執行。例如,對應於子矩陣群組830中元素1的位置,屬於第一預設群組的校驗權重EA1、EA2、EA3會被移動為校驗權重EA2、EA3、EA1,屬於第二預設群組的校驗權重EB1、EB2、EB3會被移動為位元EB3、EB1、EB2,而屬於第三預設群組的校驗權重EC1、EC2、EC3不被移動。因此,圖11中包含依序排列的校驗
權重EA2、EA3、EA1、EB3、EB1、EB2、EC1、EC2、EC3的向量1101會被獲得。例如,向量1101中的校驗權重EA2、EA3、EA1屬於相對於第一預設群組的一個偏移群組;向量1101中的校驗權重EB3、EB1、EB2屬於相對於第二預設群組的一個偏移群組;並且向量1101中的校驗權重EC1、EC2、EC3屬於相對於第三預設群組的一個偏移群組。
然後,錯誤檢查與校正電路508會利用向量1103與1104來產生向量1102。其中,向量1101~1103中所有元素的排序皆一致,如圖11所示。此外,向量1103中所有元素的初始值皆被設為“0”。在本範例實施例中,產生向量1102的操作亦可視為將向量1103更新為向量1102之操作。例如,在將向量1103更新為向量1102之操作中,向量1103中的校驗權重EA2、EA3、EA1會被分別加上向量1104中的校驗子S1、S2、S3以獲得向量1102中更新後的校驗權重EA2、EA3、EA1;向量1103中的EB3、EB1、EB2會分別被加上向量1104中的校驗子S1、S2、S3來獲得向量1102中更新後的校驗權重EB3、EB1、EB2;並且向量1103中的EC1、EC2、EC3也會分別被加上向量1104中的校驗子S1、S2、S3來獲得向量1102中更新後的校驗權重EC1、EC2、EC3。
在獲得向量1102之後,對應於子矩陣群組840(即,第二層)的群組移動會被執行。例如,對應於子矩陣群組840中元素1的位置,向量1102中的校驗權重EA2、EA3、EA1會被移動為校驗權重EA3、EA1、EA2,向量1102中的校驗權重EB3、EB1、EB2
會被移動為校驗權重EB1、EB2、EB3,並且向量1102中的校驗權重EC1、EC2、EC3會被移動為校驗權重EC2、EC3、EC1。因此,圖11中包含依序排列的校驗權重EA3、EA1、EA2、EB1、EB2、EB3、EC2、EC3、EC1的向量1105會被獲得。
然後,錯誤檢查與校正電路508會利用向量1107與向量1108來產生向量1106。其中,向量1105~1107中所有元素的排序皆一致,如圖11所示。此外,產生向量1106的操作亦可視為將向量1107更新為向量1106之操作。例如,在將向量1107更新為向量1106之操作中,向量1107中的校驗權重EA3、EA1、EA2會分別被加上向量1108中的校驗子S4、S5、S6來獲得向量1106中更新後的校驗權重EA3、EA1、EA2;向量1107中的EB1、EB2、EB3會分別被加上向量1108中的校驗子S4、S5、S6來獲得向量1106中更新後的校驗權重EB1、EB2、EB3;並且向量1107中的EC2、EC3、EC1也會分別被加上向量1108中的校驗子S4、S5、S6來獲得向量1106中更新後的校驗權重EC2、EC3、EC1。所產生的向量1106即包含了對應於圖10的碼字810中每一個位元的校驗權重。換言之,利用圖11的範例實施例中依序更新向量1102與1106的操作來取代圖10中將向量1102加上1003的操作,可提升在位元翻轉演算法中計算校驗權重集合之效率。
在一範例實施例中,若錯誤檢查與校正電路508是採用總和-乘積演算法來更新迭代解碼程序中使用的可靠度資訊,則藉由對資料集合中的多個群組執行群組移動來獲得相對應的解碼參
考資料之操作,同樣可用於降低執行最小值-總和演算法的運算複雜度及/或提高運算速度。
圖12與圖13是根據本發明的另一範例實施例所繪示的獲得對應於最小值-總和演算法之最小值集合的示意圖。在本範例實施例中,資料集合與解碼參考資料皆是用於最小值-總和演算法。例如,資料集合是指待解碼之碼字,而解碼參考資料則是最小值-總和演算法中產生的最小值集合。
請參照圖12,在採用最小值-總和演算法的迭代解碼程序中,錯誤檢查與校正電路508會根據奇偶檢查矩陣800來對碼字810中的不同位元進行多次比較以產生最小值集合1201。例如,最小值集合1201包括最小值m1~m6。其中,最小值m1是取碼字810中的位元A2、B3及C1之最小者;最小值m2是取碼字810中的位元A3、B1及C2之最小者;最小值m3是取碼字810中的位元A1、B2及C3之最小者;最小值m4是取碼字810中的位元A3、B1及C2之最小者;最小值m5是取碼字810中的位元A1、B2及C3之最小者;最小值m6是取碼字810中的位元A2、B3及C1之最小者。
在本範例實施例中,錯誤檢查與校正電路508同樣會以層為單位來逐漸產生最小值集合1201。例如,子矩陣群組830為第一層並且用以計算最小值集合1201中的校驗子m1~m3;子矩陣群組840為第二層並且用以計算最小值集合1201中的校驗子m4~m6。在本範例實施例中,錯誤檢查與校正電路508會將碼字
810中的位元分組為多個預設群組。例如,碼字810中的位元A1、A2、A3屬於第一預設群組,碼字810中的位元B1、B2、B3屬於第二預設群組,並且碼字810中的位元C1、C2、C3屬於第三預設群組。
請參照圖13,對應於子矩陣群組830(即,第一層)的群組移動會先被執行。例如,對應於子矩陣群組830中元素1的位置,碼字810中的位元A1、A2、A3會被移動為位元A2、A3、A1,碼字810中的位元B1、B2、B3會被移動為位元B3、B1、B2,而碼字810中的位元C1、C2、C3不被移動。因此,圖13中包含依序排列之位元A2、A3、A1、B3、B1、B2、C1、C2、C3的碼字910會被獲得。例如,碼字910中的位元A2、A3、A1屬於相對於第一預設群組的偏移群組911;碼字910中的位元B3、B1、B2屬於相對於第二預設群組的偏移群組912;並且碼字910中的位元C1、C2、C3屬於相對於第三預設群組的偏移群組913。
然後,錯誤檢查與校正電路508會對偏移群組911~913中位於的特定位置的位元取最小值以產生最小值集合1201中的校驗子m1~m3。例如,錯誤檢查與校正電路508會對偏移群組911~913中位於每一個群組中第一個位置的位元A2、B3、C1取最小值作為m1;對偏移群組911~913中位於每一個群組中第二個位置的位元A3、B1、C2取最小值作為m2;並且對偏移群組911~913中位於每一個群組中第三個位置的位元A1、B2、C3取最小值作為m3。
在獲得偏移群組911~913之後,對應於子矩陣群組
840(即,第二層)的群組移動會被執行。例如,對應於子矩陣群組840中元素1的位置,偏移群組911中的位元A2、A3、A1會被移動為位元A3、A1、A2,偏移群組912中的位元B3、B1、B2會被移動為位元B1、B2、B3,並且偏移群組913中的位元C1、C2、C3會被移動為位元C2、C3、C1。因此,圖13中包含位元A3、A1、A2、B1、B2、B3、C2、C3、C1的碼字920會被獲得。例如,碼字920中的位元A3、A1、A2被視為屬於對應於偏移群組911的偏移群組921,碼字920中的位元B1、B2、B3被視為屬於對應於偏移群組912的偏移群組922,並且碼字920中的位元C2、C3、C1被視為屬於對應於偏移群組913的偏移群組923。
然後,錯誤檢查與校正電路508會對偏移群組921~923中位於特定位置的位元取最小值以產生最小值集合1201中的校驗子m4~m6。例如,錯誤檢查與校正電路508會對偏移群組921~923中位於每一個群組中第一個位置的位元A3、B1、C2取最小值作為m4;對偏移群組921~923中位於每一個群組中第二個位置的位元A1、B2、C3取最小值作為m5;並且對偏移群組921~923中位於每一個群組中第三個位置的位元A2、B3、C1取最小值作為m6。藉此,可獲得最小值-總和演算法中使用的最小值集合1201並可提升計算效率。
综上所述,在上述多個範例實施例中,即使所提及的操作分別是應用於迭代解碼程序中的不同階段及/或對應於不同的解碼演算法,但是對於預設臨界值之設定、奇偶檢查矩陣之設定、
資料集合中群組之設定,以及資料集合對於每一個層的群組移動之操作都是相同或相似的。換言之,對應於迭代解碼程序中的不同階段及/或不同的解碼演算法,只要對應地決定要將什麼資料作為資料集合以及根據移動後的群組要執行何種操作來產生解碼參考資料則可。
在一範例實施例中,所決定的偏移臨界值會負相關(negatively correlated)於相對應採用的奇偶檢查矩陣的行權重值(column weight)。其中,奇偶檢查矩陣的行權重值對應於奇偶檢查矩陣中的某一個行所包含的元素1之數目。例如,若偏移臨界值越大,則對應採用的奇偶檢查矩陣的某一個行所包含的元素1之數目可能越小;若偏移臨界值越小,則對應採用的奇偶檢查矩陣的某一個行所包含的元素1之數目可能越多。在一範例實施例中,奇偶檢查矩陣的行權重值是對應於奇偶檢查矩陣中的包含最多的元素1之行所包含的元素1之數目。例如,在某一奇偶檢查矩陣中,某一個行包含二個元素1,而另一個行包含三個元素1,則此奇偶檢查矩陣的行權重值可被決定為“3”。
在一範例實施例中,所決定的偏移臨界值會等於或大於將奇偶檢查矩陣的預設維度值除以其行權重值而獲得的最小臨界值。例如,所決定的偏移臨界值會符合以下方程式(6)。
其中,X為偏移臨界值,P_SIZE為奇偶檢查矩陣的預設
維度值,並且COL_WT為奇偶檢查矩陣的行權重值。
圖14是根據本發明的一範例實施例所繪示的群組移動的示意圖。
請參照圖14,假設奇偶檢查矩陣1200包括子矩陣群組1210、1220及1230。每一個子矩陣群組1210、1220及1230包括5個子矩陣。圖12中的一個方框代表一個子矩陣。每一個子矩陣的預設維度為256-乘-256。在圖14中,每一個子矩陣(即,方框)中的數值是指資料集合中的一個群組對應於某一個層而需要被移動的偏移量。例如,子矩陣群組1210中的第一至第五個子矩陣中標示的數值41、234、227、210及17表示對應於奇偶檢查矩陣1200的第一層,資料集合中的多個群組分別需要被移動的偏移量為41、234、227、210及17;子矩陣群組1220中的第一至第五個子矩陣中標示的數值73、222、12、207及182表示對應於奇偶檢查矩陣1200的第二層,資料集合中的多個群組分別需要被移動的偏移量為73、222、12、207及182;子矩陣群組1230中的第一至第五個子矩陣中標示的數值210、23、154、133及13表示對應於奇偶檢查矩陣1200的第三層,資料集合中的多個群組分別需要被移動的偏移量為210、23、154、133及13。
在圖14的一範例實施例中,記憶體管理電路502可以選擇“85.3”至“255”之間的任一正整數來作為欲使用的偏移臨界值,並且採用行權重值為“3”的奇偶檢查矩陣1200。例如,行權重值“3”是將偏移臨界值代入上述方程式(6)來決定。記憶體管理電路
502(或,錯誤檢查與校正電路508)會限制每一個子矩陣(即,方框)中的數值皆不超過所決定的偏移臨界值。
此外,從圖14中可以看出,在執行資料集合對應於奇偶檢查矩陣1200之第一層的群組移動之後,將資料集合中的多個偏移群組進一步分別移動32、244、41、253及165即可達到資料集合中對應於奇偶檢查矩陣1200之第二層的偏移量。類似地,在執行資料集合對應於奇偶檢查矩陣1200之第二層的群組移動之後,將資料集合中的多個偏移群組進一步分別移動137、57、142、182及87即可達到資料集合對應於奇偶檢查矩陣1200之第三層的偏移量;在執行資料集合對應於奇偶檢查矩陣1200之第三層的位元移動之後,將資料集合中的多個偏移群組進一步分別移動87、211、73、77及4即可回復為資料集合對應於奇偶檢查矩陣1200之第一層的偏移量。
在一範例實施例中,至少一個選擇器會被配置在錯誤檢查與校正電路508中,以執行資料集合的群組移動。例如,根據圖12的一個範例實施例,對應於奇偶檢查矩陣1200的第一層,錯誤檢查與校正電路508中的多個選擇器合作移動一資料集合中的多個預設群組成為分別符合偏移量41、234、227、210及17的多個第一偏移群組;對應於奇偶檢查矩陣1200的第二層,此些選擇器合作移動此些第一偏移群組成為分別符合偏移量73、222、12、207及182的多個第二偏疑群組;然後,對應於奇偶檢查矩陣1200的第三層,此些選擇器合作移動此些第二偏移群組成為分別
符合偏移量210、23、154、133及13的另外的多個偏疑群組。
在一範例實施例中,決定偏移臨界值並且限制每一次執行群組移動的偏移量都不超過此偏移臨界值是用以減少需要配置的選擇器之數目。例如,若採用一般的階層式移位器(stage shifter)架構,則對應於預設維度為256-乘-256的奇偶檢查矩陣1200,至少需要設置8個選擇器;然而,根據圖12的一範例實施例中,藉由限制每一次執行群組移動的偏移量都不超過所設定的偏移臨界值,則採用一般的階層式移位器架構可能僅需要在錯誤檢查與校正電路508中配置7個或更少的選擇器。此外,在某些移位器架構中,選擇器亦可以用移位暫存器來取代。
圖15A與圖15B是根據本發明的一範例實施例所繪示的階層式移位器架構的示意圖。為了簡化,在此以移動包含8個位元之資料集合作為範例。然而,在另一範例實施例中,欲執行群組移動的資料集合可以包含更多或更少的位元。
請參照圖13A,若沒有限制每一次執行群組移動的偏移量,則為了支援最大偏移量為8(例如,將碼字01234567移動為碼字70123456),至少需要在錯誤檢查與校正電路508中配置3個選擇器1301、1302及1303。然而,請參照圖13B,若根據本發明的一範例實施例來限制最大偏移量為3(例如,將碼字01234567移動為碼字34567012),則只需要在錯誤檢查與校正電路508中配置2個選擇器1301與1302。此外,暫存器1311、1312及1313用以儲存各階段中待處理的位元。
圖16A與圖16B是根據本發明的一範例實施例所繪示的筒式移位器(Barrel Shifter)架構的示意圖。
請參照圖14A,若沒有限制每一次執行群組移動的偏移量,則對應於5個輸入X0~X4,至少需要在錯誤檢查與校正電路508中配置3個移位暫存器1401、1402及1403。然而,請參照圖14B,若根據本發明的一範例實施例來利用偏移臨界值限制每一次執行群組移動的偏移量,則可能只需要在錯誤檢查與校正電路508中配置2個移位暫存器1401與1402。此外,Y0~Y4為執行群組移動後的輸出位元。
圖17是根據本發明的另一範例實施例所繪示的簡化(reduced)移位器架構的示意圖。
請參照圖17,在根據偏移臨界值來限制每一次執行群組移動的偏移量之條件下,暫存器1701中的位元X5不會被讀取,藉此完成群組移動之選擇器1703的數量也可以減少。此外,暫存器1702用以儲存輸出的位元。
圖18是根據本發明的一範例實施例所繪示的解碼方法的流程圖。
請參照圖18,在步驟S1801中,決定偏移臨界值以及對應於所述偏移臨界值的檢查矩陣,其中所述檢查矩陣包括至少一子矩陣群組,其中所述子矩陣群組中的每一個子矩陣具有預設維度,其中所述偏移臨界值小於對應於所述預設維度的預設維度值,其中所述子矩陣群組包括第一子矩陣群組。在步驟S1802中,
發送讀取指令序列,其中所述讀取指令序列指示讀取所述可複寫式非揮發性記憶體模組的實體單元。在步驟S1803中,接收對應於所述讀取指令序列的回應資料。在步驟S1804中,對所述回應資料執行迭代解碼程序。步驟S1804的迭代解碼程序至少包括步驟S18041~S18043。在步驟S18041中,產生對應於所述回應資料的資料集合,其中所述資料集合包括多個預設群組。在步驟S18042中,根據屬於所述第一子矩陣群組的多個子矩陣來移動所述預設群組以獲得多個第一偏移群組,其中所述第一偏移群組中的每一個偏移群組相對於所述預設群組中的一對應群組的偏移量皆不超過所述偏移臨界值。在步驟S18043中,根據所述第一偏移群組產生解碼參考資料。
然而,圖18中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖18中各步驟可以實作為多個程式碼或是電路,本發明不加以限制。此外,圖18的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
圖19是根據本發明的一範例實施例所繪示的錯誤檢查與校正電路的概要方塊圖。
請參照圖19,在本範例實施例中,錯誤檢查與校正電路508至少包括暫存電路1901_1~1901_3、移位電路1902、暫存電路1903_1~1903_3及操作電路1904_1~1904_3。暫存電路1901_1~1901_3用以暫存資料集合中待執行群組移動的群組。移位電路1902耦接至暫存電路1901_1~1901_3並且用以執行群組移
動。暫存電路1903_1~1903_3耦接至移位電路1902並且用以暫存移動後的群組。操作電路1904_1~1904_3耦接至暫存電路1903_1~1903_3並且用以執行預設的邏輯操作以產生解碼參考資料。以下搭配圖9的範例實施例來對圖19中的各電路區塊進行說明。
在對應於奇偶檢查矩陣之第一層的群組移動中,資料集合的多個預設群組中的一個特定群組(以下亦稱為目標群組)中的位元資料(例如,位元“A1”、“A2”、“A3”)會先分別被暫存在暫存電路1901_1~1901_3中並且輸出給移位電路1902。移位電路1902會對接收到的位元資料(例如,位元“A1”、“A2”、“A3”)執行對應的群組移動並且將經由群組移動而獲得的偏移群組(以下亦稱為偏移目標群組)(例如,位元“A2”、“A3”、“A1”)分別輸出給暫存電路1903_1~1903_3。暫存電路1903_1~1903_3所暫存的偏移目標群組中的位元資料(例如,位元“A2”、“A3”、“A1”)會被分別輸出給操作電路1904_1~1904_3。依此類推,在對應於第一層的群組移動中,資料集合中的位元資料會以一個目標群組為單位依序地輸出給移位電路1902進行群組移動並且以一個偏移目標群組為單位依序地輸出給操作電路1904_1~1904_3進行預設的邏輯操作。例如,操作電路1904_1會對接收到的位元A2、B3及C1執行模2加法以獲得校驗子集合中的校驗子S1;操作電路1904_2會對接收到的位元A3、B1及C3執行模2加法以獲得校驗子集合中的校驗子S2;並且操作電路1904_1會對接收到的位元A1、B2及C3執行模2加法以
獲得校驗子集合中的校驗子S3。後續對應於奇偶檢查矩陣之第二層的群組移動以及對移動後的群組執行模2加法也可藉由圖19所示的電路架構來完成,在此便不贅述。
在不同的範例實施例中,對於應用於迭代解碼程序中的不同階段及/或對應於不同的解碼演算法所使用的資料集合,圖19所示的電路架構也可以實現相對應的群組移動以及執行相對應的邏輯操作以產生解碼參考資料。
在圖19的另一範例實施例中,暫存電路1901_1~1901_3亦可以合併為一個暫存電路,暫存電路1903_1~1903_3亦可以合併為一個暫存電路,並且操作電路1904_1~1904_3亦可以合併為一個操作電路。此外,圖19所繪示的錯誤檢查與校正電路508僅為一個範例,在圖19的另一範例實施例中,錯誤檢查與校正電路508還可以包括用以執行其他操作的電路元件。
綜上所述,在本發明的一範例實施例中,偏移臨界值與相對應的奇偶檢查矩陣會被決定。爾後,在迭代解碼程序中,一個資料集合中的群組會對應於奇偶檢查矩陣而被執行群組移動並且對應的偏移量會被限制於不超過所設定的偏移臨界值。藉此,在本發明的一範例實施例中,可減少錯誤檢查與校正電路中所需配置的選擇器/移位暫存器之數量。此外,在本發明的一範例實施例中,根據偏移群組來產生解碼參考資料也可提升迭代解碼程序中某些階段的執行效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本
發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S1801、S1802、S1803、S1804、S18041、S18042、S18043‧‧‧步驟
Claims (22)
- 一種解碼方法,用於一可複寫式非揮發性記憶體模組,該解碼方法包括:決定一偏移臨界值以及對應於該偏移臨界值的一檢查矩陣,其中該檢查矩陣包括至少一子矩陣群組,其中該至少一子矩陣群組中的每一個子矩陣具有一預設維度,其中該偏移臨界值小於對應於該預設維度的一預設維度值,其中該至少一子矩陣群組包括一第一子矩陣群組;發送一讀取指令序列,其中該讀取指令序列指示讀取該可複寫式非揮發性記憶體模組的一實體單元;接收對應於該讀取指令序列的一回應資料;以及對該回應資料執行一迭代解碼程序,其中該迭代解碼程序包括:產生對應於該回應資料的一資料集合,其中該資料集合包括多個預設群組;根據屬於該第一子矩陣群組的多個子矩陣來移動該些預設群組以獲得多個第一偏移群組,其中該些第一偏移群組中的每一個偏移群組相對於該些預設群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及根據該些第一偏移群組產生一解碼參考資料。
- 如申請專利範圍第1項所述的解碼方法,其中該至少一子矩陣群組更包括一第二子矩陣群組, 其中該迭代解碼程序更包括:根據屬於該第二子矩陣群組的多個子矩陣來移動該些第一偏移群組以獲得多個第二偏移群組,其中該些第二偏移群組中的每一個偏移群組相對於該些第一偏移群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及根據該些第二偏移群組產生該解碼參考資料。
- 如申請專利範圍第1項所述的解碼方法,其中該解碼參考資料為對應於一低密度奇偶檢查碼之一奇偶檢查程序的一校驗子集合。
- 如申請專利範圍第1項所述的解碼方法,其中該解碼參考資料為對應於一位元翻轉演算法的一校驗權重集合。
- 如申請專利範圍第1項所述的解碼方法,其中該解碼參考資料為對應於一低密度奇偶檢查碼的一最小值-總和演算法的一最小值集合。
- 如申請專利範圍第1項所述的解碼方法,其中該偏移臨界值負相關於該檢查矩陣的一行(column)權重值,其中該行權重值對應於該檢查矩陣中的一個行所包含的元素1之數目。
- 如申請專利範圍第6項所述的解碼方法,其中該偏移臨界值等於或大於將該預設維度值除以該行權重值而獲得的一最小臨界值。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,其中該記憶體控制電路單元用以決定一偏移臨界值以及對應於該偏移臨界值的一檢查矩陣,其中該檢查矩陣包括至少一子矩陣群組,其中該至少一子矩陣群組中的每一個子矩陣具有一預設維度,其中該偏移臨界值小於對應於該預設維度的一預設維度值,其中該至少一子矩陣群組包括一第一子矩陣群組,其中該記憶體控制電路單元更用以發送一讀取指令序列,其中該讀取指令序列指示讀取該可複寫式非揮發性記憶體模組的一實體單元,其中該記憶體控制電路單元更用以接收對應於該讀取指令序列的一回應資料,其中該記憶體控制電路單元更用以對該回應資料執行一迭代解碼程序,其中該迭代解碼程序包括:產生對應於該回應資料的一資料集合,其中該資料集合包括多個預設群組;根據屬於該第一子矩陣群組的多個子矩陣來移動該些預設群組以獲得多個第一偏移群組,其中該些第一偏移群組中的每一個偏移群組相對於該些預設群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及 根據該些第一偏移群組產生一解碼參考資料。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中該至少一子矩陣群組更包括一第二子矩陣群組,其中該迭代解碼程序更包括:根據屬於該第二子矩陣群組的多個子矩陣來移動該些第一偏移群組以獲得多個第二偏移群組,其中該些第二偏移群組中的每一個偏移群組相對於該些第一偏移群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及根據該些第二偏移群組產生該解碼參考資料。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中該解碼參考資料為對應於一低密度奇偶檢查碼的一奇偶檢查程序的一校驗子集合。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中其中該解碼參考資料為對應於一位元翻轉演算法的一校驗權重集合。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中該解碼參考資料為對應於一低密度奇偶檢查碼的一最小值-總和演算法的一最小值集合。
- 如申請專利範圍第8項所述的記憶體儲存裝置,其中其中該偏移臨界值負相關於該檢查矩陣的一行(column)權重值,其中該行權重值對應於該檢查矩陣中的一個行所包含的元素1之數目。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中該偏移臨界值等於或大於將該預設維度值除以該行權重值而獲得的一最小臨界值。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制電路單元包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組;一錯誤檢查與校正電路;以及一記憶體管理電路,耦接至該主機介面、該記憶體介面及該錯誤檢查與校正電路,其中該記憶體管理電路用以決定一偏移臨界值以及對應於該偏移臨界值的一檢查矩陣,其中該檢查矩陣包括至少一子矩陣群組,其中該至少一子矩陣群組中的每一個子矩陣具有一預設維度,其中該偏移臨界值小於對應於該預設維度的一預設維度值,其中該至少一子矩陣群組包括一第一子矩陣群組,其中該記憶體管理電路更用以發送一讀取指令序列,其中該讀取指令序列指示讀取該可複寫式非揮發性記憶體模組的一實體單元,其中該記憶體管理電路更用以接收對應於該讀取指令序列的一回應資料,其中該錯誤檢查與校正電路用以對該回應資料執行一迭代解碼程序,其中該迭代解碼程序包括: 產生對應於該回應資料的一資料集合,其中該資料集合包括多個預設群組;根據屬於該第一子矩陣群組的多個子矩陣來移動該些預設群組以獲得多個第一偏移群組,其中該些第一偏移群組中的每一個偏移群組相對於該些預設群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及根據該些第一偏移群組產生一解碼參考資料。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該至少一子矩陣群組更包括一第二子矩陣群組,其中該迭代解碼程序更包括:根據屬於該第二子矩陣群組的多個子矩陣來移動該些第一偏移群組以獲得多個第二偏移群組,其中該些第二偏移群組中的每一個偏移群組相對於該些第一偏移群組中的一對應群組的一偏移量皆不超過該偏移臨界值;以及根據該些第二偏移群組產生該解碼參考資料。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該解碼參考資料為對應於一低密度奇偶檢查碼的一奇偶檢查程序的一校驗子集合。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該解碼參考資料為對應於一位元翻轉演算法的一校驗權重集合。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該解碼參考資料為對應於一低密度奇偶檢查碼的一最小值-總和演算法的一最小值集合。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該偏移臨界值負相關於該檢查矩陣的一行(column)權重值,其中該行權重值對應於該檢查矩陣中的一個行所包含的元素1之數目。
- 如申請專利範圍第20項所述的記憶體控制電路單元,其中該偏移臨界值等於或大於將該預設維度值除以該行權重值而獲得的一最小臨界值。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中該錯誤檢查與校正電路包括:至少一第一暫存電路,用以暫存該些預設群組中的一目標群組;一移位電路,耦接至該至少一第一暫存電路,其中該移位電路用以移動該目標群組並且輸出該些第一偏移群組中對應於該目標群組的一偏移目標群組;至少一第二暫存電路,耦接至該移位電路並且用以暫存該偏移目標群組;以及至少一操作電路,耦接至該至少一第二暫存電路,其中該至少一操作電路用以對該偏移目標群組執行一邏輯操作並且產生該解碼參考資料。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104136484A TWI573147B (zh) | 2015-11-05 | 2015-11-05 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US14/981,965 US20170134049A1 (en) | 2015-11-05 | 2015-12-29 | Decoding method, memory storage device and memory control circuit unit |
US16/145,213 US10700708B2 (en) | 2015-11-05 | 2018-09-28 | Permutation network designing method, and permutation circuit of QC-LDPC decoder |
US16/145,207 US10707902B2 (en) | 2015-11-05 | 2018-09-28 | Permutation network designing method, and permutation circuit of QC-LDPC decoder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104136484A TWI573147B (zh) | 2015-11-05 | 2015-11-05 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI573147B true TWI573147B (zh) | 2017-03-01 |
TW201717208A TW201717208A (zh) | 2017-05-16 |
Family
ID=58664317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104136484A TWI573147B (zh) | 2015-11-05 | 2015-11-05 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170134049A1 (zh) |
TW (1) | TWI573147B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180032396A1 (en) * | 2016-07-29 | 2018-02-01 | Sandisk Technologies Llc | Generalized syndrome weights |
US10348336B2 (en) * | 2017-06-06 | 2019-07-09 | Tsofun Algorithm Ltd. | System and method for early termination of decoding in a multi user equipment environment |
TWI635712B (zh) * | 2017-06-21 | 2018-09-11 | 晨星半導體股份有限公司 | 準循環低密度同位檢查碼的解碼電路及其方法 |
CN109286401A (zh) * | 2017-07-20 | 2019-01-29 | 晨星半导体股份有限公司 | 准循环低密度奇偶校验码的解码电路及其方法 |
TWI640865B (zh) * | 2017-09-05 | 2018-11-11 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI707231B (zh) * | 2018-09-28 | 2020-10-11 | 大陸商深圳大心電子科技有限公司 | 解碼器設計方法與儲存控制器 |
US11381253B1 (en) | 2021-02-05 | 2022-07-05 | SK Hynix Inc. | Decoding codeword based on higher order information |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150012795A1 (en) * | 2013-07-05 | 2015-01-08 | Kabushiki Kaisha Toshiba | Error correction decoder and error correction decoding method |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
US20150288386A1 (en) * | 2012-07-24 | 2015-10-08 | Panasonic Intellectual Property Corporation of Ame rica | Coding method and decoding method |
US20150288385A1 (en) * | 2008-10-10 | 2015-10-08 | Panasonic Intellectual Property Corporation Of America | Encoder and coding method |
US20150309875A1 (en) * | 2014-04-25 | 2015-10-29 | International Business Machines Corporation | Error-correction encoding and decoding |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222284B2 (en) * | 2003-06-26 | 2007-05-22 | Nokia Corporation | Low-density parity-check codes for multiple code rates |
US7587654B2 (en) * | 2004-02-10 | 2009-09-08 | Mitsubishi Electric Corporation | Quantum key distribution method and communication apparatus |
FR2869744A1 (fr) * | 2004-04-29 | 2005-11-04 | Thomson Licensing Sa | Methode de transmission de paquets de donnees numeriques et appareil implementant la methode |
JP2007087530A (ja) * | 2005-09-22 | 2007-04-05 | Rohm Co Ltd | 信号復号方法、信号復号装置および信号記憶システム |
US7836383B2 (en) * | 2006-04-28 | 2010-11-16 | Intel Corporation | Low density parity check (LDPC) code decoder |
US7958429B2 (en) * | 2007-07-02 | 2011-06-07 | Broadcom Corporation | Distributed processing LDPC (low density parity check) decoder |
US7826999B1 (en) * | 2007-08-20 | 2010-11-02 | Pni Corporation | Magnetic tilt compensated heading compass with adaptive zoffset |
US8533557B2 (en) * | 2011-01-28 | 2013-09-10 | Infineon Technologies Ag | Device and method for error correction and protection against data corruption |
IL217307A (en) * | 2012-01-01 | 2015-09-24 | Video Flow Ltd | Continuous error correction (fec) system and method |
US8347186B1 (en) * | 2012-04-19 | 2013-01-01 | Polaran Yazilim Bilisim Danismanlik Ithalat Ihracat Sanayi Ticaret Limited Sirketi | Method and system for error correction in transmitting data using low complexity systematic encoder |
US9509342B2 (en) * | 2014-06-02 | 2016-11-29 | Sandisk Technologies Llc | Error correcting code decoder |
-
2015
- 2015-11-05 TW TW104136484A patent/TWI573147B/zh active
- 2015-12-29 US US14/981,965 patent/US20170134049A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150288385A1 (en) * | 2008-10-10 | 2015-10-08 | Panasonic Intellectual Property Corporation Of America | Encoder and coding method |
US20150288386A1 (en) * | 2012-07-24 | 2015-10-08 | Panasonic Intellectual Property Corporation of Ame rica | Coding method and decoding method |
US20150012795A1 (en) * | 2013-07-05 | 2015-01-08 | Kabushiki Kaisha Toshiba | Error correction decoder and error correction decoding method |
US20150309875A1 (en) * | 2014-04-25 | 2015-10-29 | International Business Machines Corporation | Error-correction encoding and decoding |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201717208A (zh) | 2017-05-16 |
US20170134049A1 (en) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI573147B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
TWI543178B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI540586B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
TWI652677B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI612527B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI537966B (zh) | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI541820B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI670715B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI512732B (zh) | 解碼方法、記憶體儲存裝置與非揮發性記憶體模組 | |
US20170206130A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI523018B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
US9507658B2 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
TWI594255B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10622077B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI607452B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN106708649B (zh) | 解码方法、存储器储存装置及存储器控制电路单元 | |
TWI707231B (zh) | 解碼器設計方法與儲存控制器 | |
CN107590018B (zh) | 译码方法、存储器控制电路单元及存储器存储装置 | |
US11962328B1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10628259B2 (en) | Bit determining method, memory control circuit unit and memory storage device | |
TW202416132A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202236091A (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |