TW201944237A - 解碼方法及相關的快閃記憶體控制器與電子裝置 - Google Patents
解碼方法及相關的快閃記憶體控制器與電子裝置Info
- Publication number
- TW201944237A TW201944237A TW107113540A TW107113540A TW201944237A TW 201944237 A TW201944237 A TW 201944237A TW 107113540 A TW107113540 A TW 107113540A TW 107113540 A TW107113540 A TW 107113540A TW 201944237 A TW201944237 A TW 201944237A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- codeword
- parity check
- check matrix
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- 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/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/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/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明揭露一種解碼方法,其包含有:自一快閃記憶體模組中讀取一碼字;以及使用一奇偶校驗矩陣來對該碼字進行解碼,其中該奇偶校驗矩陣包含了多個循環排列矩陣,且對該碼字進行解碼所使用之平行運算的階數低於任一循環排列矩陣的列數量。
Description
本發明係有關於解碼方法,尤指一種應用在快閃記憶體控制器的解碼方法。
在目前應用在快閃記憶體控制器的解碼方法中,當快閃記憶體控制器從一快閃記憶體模組讀取一碼字(codeword)之後,會將該碼字與一奇偶校驗矩陣(parity check matrix)相乘來進行解碼操作。具體來說,理論上該碼字與該奇偶校驗矩陣相乘之後應該會得到一個全部數值均為0的矩陣,因此,若是相乘的結果不全為0,則需要透過一些演算法來調整該碼字的內容直到調整後碼字與該奇偶校驗矩陣相乘後為0,以完成解碼操作。然而,上述的解碼操作通常會需要較高的平行運算,因此增加了硬體成本。
因此,本發明的目的之一在於提出一種應用在快閃記憶體控制器中的解碼方法,其可以使用較低的平行運算來有效地完成解碼操作,以解決先前技術中的問題。
在本發明的一個實施例中,揭露一種解碼方法,其包含有:自一快閃記憶體模組中讀取一碼字;以及使用一奇偶校驗矩陣來對該碼字進行解碼,其中該奇偶校驗矩陣中的每一層包含了N個循環排列矩陣,且該解碼操作包含以下步驟:針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料;將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中;自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第一部份,其中N、M為大於一的正整數;對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一唯讀記憶體、一微處理器以及一解碼器。該唯讀記憶體係用來儲存一程式碼;該微處理器係用來執行該程式碼以控制對該快閃記憶體模組之存取;以及在該快閃記憶體控制器的操作中,該微處理器自該快閃記憶體模組中讀取一碼字,且該解碼器使用一奇偶校驗矩陣來對該碼字進行解碼,其中該奇偶校驗矩陣中的每一層包含了N個循環排列矩陣,且該微處理器使用以下步驟來進行解碼操作:針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料;將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中;自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第一部份,其中N、M為大於一的正整數;對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
在本發明的另一個實施例中,揭露了一種電子裝置,其包含有一快閃記憶體模組以及一快閃記憶體控制器。在該電子裝置的操作中,該快閃記憶體控制器自該快閃記憶體模組中讀取一碼字,且該快閃記憶體控制器使用一奇偶校驗矩陣來對該碼字進行解碼,其中該奇偶校驗矩陣中的每一層包含了N個循環排列矩陣,且該快閃記憶體控制器使用以下步驟來進行解碼操作:針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料;將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中;自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第一部份,其中N、M為大於一的正整數;對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
請參考第1圖,第1圖為依據本發明一實施例之一種記憶裝置100的示意圖。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory, ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。控制邏輯114包含了一編碼器132、一解碼器134、一第一記憶體136以及一第二記憶體138。在本實施例中,編碼器132與解碼器134係用來進行準循環低密度奇偶校檢(Quasi-Cyclic Low Density Party-Check,QC-LDPC)碼的邊解碼操作。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行抹除等運作係以區塊為單位來進行。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。在本實施例中,快閃記憶體模組120為一立體NAND型快閃記憶體(3D NAND-type flash)。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM, SRAM),但本發明不限於此。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,記憶裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
在快閃記憶體控制器110存取快閃記憶體模組120的過程中,當快閃記憶體控制器110需要將一資料寫入至快閃記憶體模組120時,編碼器132會將該資料與一生成矩陣(generator matrix)相乘以得到一編碼後資料,並將該編碼後資料寫入至快閃記憶體模組120,其中該編碼後資料包含了該資料以及所對應的校驗碼。另一方面,當快閃記憶體控制器110需要自快閃記憶體模組120讀取該資料時,解碼器134會自快閃記憶體模組120讀取該編碼後資料,並將該編碼後資料與一奇偶校驗矩陣(parity check matrix)相乘來進行解碼。在一實施例中,該奇偶校驗矩陣與該生成矩陣互相關聯,且該生成矩陣與該奇偶校驗矩陣的轉置矩陣相乘之後會為會得到一個全部數值均為0的矩陣,因此,由於該編碼後資料在寫入至快閃記憶體模組120的過程中可能會因為電壓漂移或是其他因素而使得部分內容發生錯誤,故解碼器134透過不斷調整所讀取之該編碼後資料,以使得調整後的該編碼後資料與該奇偶校驗矩陣相乘之後可以得到一個全部數值均為0的矩陣,以完成錯誤更正以及解碼操作。由於本發明係著重在解碼操作的部分,故以下敘述僅針對解碼器134的部分來進行描述。
參考第2圖,其繪示了根據本發明一實施例之自快閃記憶體模組120所讀取之一碼字以及奇偶校驗矩陣H的示意圖。如第2圖所示,奇偶校驗矩陣H由多個循環排列矩陣(circulant permutation matrix)所構成,而在本實施例中係以8個循環排列矩陣為例來做後續的說明,但這並非是本發明的限制。每一個循環排列矩陣的大小為64*64,且每一列只有一個數值為“1”,其餘的數值均為“0”,下一列的內容為上一列向右移動1位元所產生,且圖示中括號內的內容為第1列中數值為“1”的位址。以第2圖所示之奇偶校驗矩陣H的第一層(layer)為例,循環排列矩陣CM0之第1列的第27個位元為“1”其餘為“0”、第2列的第28個位元為“1” 其餘為“0”、第3列的第29個位元為“1” 其餘為“0”…以此類推;循環排列矩陣CM1之第1列的第3個位元為“1”其餘為“0”、第2列的第4個位元為“1” 其餘為“0”、第3列的第5個位元為“1” 其餘為“0”…以此類推;循環排列矩陣CM2之第1列的第55個位元為“1”其餘為“0”、第2列的第56個位元為“1” 其餘為“0”、第3列的第57個位元為“1” 其餘為“0”…以此類推;循環排列矩陣CM3之第1列的第12個位元為“1”其餘為“0”、第2列的第13個位元為“1” 其餘為“0”、第3列的第14個位元為“1” 其餘為“0”…以此類推。
在本實施例中,自快閃記憶體模組120所讀取之碼字為256位元,且解碼器134會將碼字分割為4個群組CW0~CW3,其中每個群組CW0~CW3為64位元,並將群組CW0~CW3分別與奇偶校驗矩陣H的循環排列矩陣CM0~CM3相乘來進行解碼,在本實施例中,上述矩陣操作可視為將128*256的奇偶校驗矩陣H與256*1的碼字相乘以產生一128*1的矩陣相乘結果。
然而,在上述的運算中,若是直接將群組CW0~CW3分別與循環排列矩陣CM0~CM3相乘來進行後續的解碼,則解碼器134會需要進行階數為64的平行運算,因此會需要較多的電路以及記憶體面積,因此,在本發明之以下的實施例中,係透過特殊的記憶體存取及碼字處理方式來完成階數為16的平行運算,以進一步節省電路以及記憶體面積。
參考第3圖,每一個群組CW0~CW3再細分為4個部分,其中群組CW0包含了4個部分CW0[0]~CW0[3]、群組CW1包含了4個部分CW1[0]~CW1[3]、群組CW2包含了4個部分CW2[0]~CW2[3]、以及群組CW3包含了4個部分CW3[0]~CW3[3],其中每一個部分均為16位元。接著,解碼器134將群組CW0~CW3與分別與循環排列矩陣CM0~CM3相乘,以得到16筆處理後資料,並儲存至第一記憶體136的16個不同的位址中(例如,對應到16個不同的字元線)。具體來說,第3圖的第一子層SL0包含了4筆處理後資料,其分別為CW0[0]、CW1[0]、CW2[0]、CW3[0]分別於循環排列矩陣CM0~CM3的第一部分相乘的結果,其中CW0[0]與循環排列矩陣CM0相乘所產生的處理後資料係儲存在第一記憶體136的第2~3個位址、CW1[0]與循環排列矩陣CM1相乘所產生的處理後資料係儲存在第一記憶體136的第5~6個位址、CW2[0]與循環排列矩陣CM2相乘所產生的處理後資料係儲存在第一記憶體136的第9、12個位址、以及CW3[0]與循環排列矩陣CM3相乘所產生的處理後資料係儲存在第一記憶體136的第13~14個位址;第3圖的第二子層SL1包含了4筆處理後資料,其分別為CW0[1]、CW1[1]、CW2[1]、CW3[1]分別於循環排列矩陣CM0~CM3的第二部分相乘的結果,其中CW0[1]與循環排列矩陣CM0相乘所產生的處理後資料係儲存在第一記憶體136的第3~4個位址、CW1[1]與循環排列矩陣CM1相乘所產生的處理後資料係儲存在第一記憶體136的第6~7個位址、CW2[1]與循環排列矩陣CM2相乘所產生的處理後資料係儲存在第一記憶體136的第9~10個位址、以及CW3[1]與循環排列矩陣CM3相乘所產生的處理後資料係儲存在第一記憶體136的第14~15個位址;第3圖的第三子層SL2包含了4筆處理後資料,其分別為CW0[2]、CW1[2]、CW2[2]、CW3[2]分別於循環排列矩陣CM0~CM3的第三部分相乘的結果,其中CW0[2]與循環排列矩陣CM0相乘所產生的處理後資料係儲存在第一記憶體136的第1、4個位址、CW1[2]與循環排列矩陣CM1相乘所產生的處理後資料係儲存在第一記憶體136的第7~8個位址、CW2[2]與循環排列矩陣CM2相乘所產生的處理後資料係儲存在第一記憶體136的第10~11個位址、以及CW3[2]與循環排列矩陣CM3相乘所產生的處理後資料係儲存在第一記憶體136的第15~16個位址;第3圖的第四子層SL3包含了4筆處理後資料,其分別為CW0[3]、CW1[3]、CW2[3]、CW3[3]分別於循環排列矩陣CM0~CM3的第四部分相乘的結果,其中CW0[3]與循環排列矩陣CM0相乘所產生的處理後資料係儲存在第一記憶體136的第1~2個位址、CW1[3]與循環排列矩陣CM1相乘所產生的處理後資料係儲存在第一記憶體136的第5、8個位址、CW2[3]與循環排列矩陣CM2相乘所產生的處理後資料係儲存在第一記憶體136的第11~12個位址、以及CW3[3]與循環排列矩陣CM3相乘所產生的處理後資料係儲存在第一記憶體136的第13、16個位址。
第4~8圖所示為根據本發明一實施例之解碼器134對儲存在第一記憶體136中的多筆處理後資料進行操作的示意圖。在第4圖中,首先,第一記憶體136可以分為四個部分,其中該四個部分分別包含了第1~4個位址、第5~8個位址、第9~12個位址以及第13~16個位址(亦即,分別對應到循環排列矩陣CM0~CM3)。解碼器134會先自第一記憶體136的每一個部分取出第一筆有關於第一子層SL0的內容,亦即從第4圖所示之第一記憶體136的第2、5、12、13個位址取出第一筆有關於第一子層SL0的內容。接著,解碼器134將自第一記憶體136所取出的內容進行翻轉,並將翻轉後的內容儲存至第二記憶體138的四個不同的位址中。
接著,在第5圖中,解碼器134會先自第一記憶體136的每一個部分取出第一筆有關於第二子層SL1的內容,亦即從第5圖所示之第一記憶體136的第3、6、9、14個位址取出第一筆有關於第二子層SL1的內容,並將自第一記憶體136所取出的內容進行翻轉;同時地,解碼器134也自第二記憶體138讀取先前在第4圖中所儲存的內容,並連同自第一記憶體136所取出並進行翻轉後的內容進行多工操作(組合操作),以產生一個完整第一子層SL0的內容以供後續進行階數為16的平行運算(圖示的每一列為16位元),且也產生一個由第二子層SL1與第四子層SL3所構成的64位元內容,並儲存至第二記憶體138的四個不同的位址中。在本實施例中,第一子層SL0可以視為用來計算對應到該碼字(包含CW0~CW3)與奇偶校驗矩陣H相乘後之第一列(row)資料的一第一部份。
接著,在第6圖中,解碼器134會先自第一記憶體136的每一個部分取出第一筆有關於第三子層SL2的內容,亦即從第6圖所示之第一記憶體136的第4、7、10、15個位址取出第一筆有關於第三子層SL2的內容,並將自第一記憶體136所取出的內容進行翻轉;同時地,解碼器134也自第二記憶體138讀取先前在第5圖中所儲存的內容,並連同自第一記憶體136所取出並進行翻轉後的內容進行多工操作(組合操作),以產生一個完整第二子層SL1的內容以供後續進行階數為16的平行運算,且也產生一個由第三子層SL2與第四子層SL3所構成的64位元內容,並儲存至第二記憶體138的四個不同的位址中。在本實施例中,第二子層SL1可以視為用來計算對應到該碼字(包含CW0~CW3)與奇偶校驗矩陣H相乘後之第一列資料的一第二部份。
接著,在第7圖中,解碼器134會先自第一記憶體136的每一個部分取出第一筆有關於第四子層SL3的內容,亦即從第7圖所示之第一記憶體136的第1、8、11、16個位址取出第一筆有關於第四子層SL3的內容,並將自第一記憶體136所取出的內容進行翻轉;同時地,解碼器134也自第二記憶體138讀取先前在第6圖中所儲存的內容,並連同自第一記憶體136所取出並進行翻轉後的內容進行多工操作(組合操作),以產生一個完整第三子層SL2的內容以供後續進行階數為16的平行運算,且也產生一個完全由第四子層SL3所構成的64位元內容,並儲存至第二記憶體138的四個不同的位址中。在本實施例中,第三子層SL2可以視為用來計算對應到該碼字(包含CW0~CW3)與奇偶校驗矩陣H相乘後之第一列資料的一第三部份。
接著,在第8圖中,解碼器134直接自第二記憶體138讀取先前在第7圖中所儲存之完全由第四子層SL3所構成的64位元內容,並進行階數為16的平行運算。在本實施例中,第四子層SL3可以視為用來計算對應到該碼字(包含CW0~CW3)與奇偶校驗矩陣H相乘後之第一列資料的一第四部份。上述平行運算係用來對該些資料進行最小總和解碼(min-sum decoding)操作,由於解碼器134進行準循環低密度奇偶校檢(QC-LDPC)碼的解碼方式以及相關的平行運算細節已為本領域具有通常知識者所熟知,故細節在此不予贅述。
透過以上實施例所揭露的內容,可以讓解碼器134在僅使用階數為16的平行運算便可完成相關的解碼操作,因此解碼器134內部的電路元件,例如桶式移位器(barrel shifter)在設計上也比較簡單,以節省硬體成本。另一方面,由於本實施例之第一記憶體136所儲存的每一筆資料均為16位元,因此在記憶體架構上可以設計為具有較深的深度,因此可以在儲存容量不變的情形下更加節省記憶體的晶片面積。
此外,在本發明的另一個實施例中,第5~8圖中所產生之完整第一子層SL0至第四子層SL3的內容可以再立刻回存至第一記憶體136中。具體來說,在第5圖中,由於先前第一記憶體136中第2、5、12、13個位址的資料已經被取出了,故解碼器136可以將所產生的完整第一子層SL0的內容回存至第一記憶體136中第2、5、12、13個位址中,以供後續使用;同理,在第6圖中,由於先前第一記憶體136中第3、6、9、14個位址的資料已經被取出了,故解碼器136可以將所產生的完整第二子層SL0的內容回存至第一記憶體136中第3、6、9、14個位址中,以供後續使用…以此類推。
簡要歸納本發明,在本發明之應用在快閃記憶體控制器中的解碼方法中,其可以透過記憶體的配置來使用較低階數的平行運算來有效地完成解碼操作,且由於採用了較低階數的平行運算,可以降低解碼器之內部電路元件的複雜度,且也可以在儲存容量不變的情形下節省記憶體的晶片面積。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧記憶裝置
110‧‧‧快閃記憶體控制器
112‧‧‧微處理器
112C‧‧‧程式碼
112M‧‧‧唯讀記憶體
114‧‧‧控制邏輯
116‧‧‧緩衝記憶體
118‧‧‧介面邏輯
120‧‧‧快閃記憶體模組
130‧‧‧主裝置
132‧‧‧編碼器
134‧‧‧解碼器
136‧‧‧第一記憶體
138‧‧‧第二記憶體
H‧‧‧奇偶校驗矩陣
CM0~CM3‧‧‧循環排列矩陣
CW0~CW3‧‧‧碼字群組
SL0‧‧‧第一子層
SL1‧‧‧第二子層
SL2‧‧‧第三子層
SL3‧‧‧第四子層
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。 第2圖為根據本發明一實施例之自快閃記憶體模組所讀取之一碼字以及奇偶校驗矩陣的示意圖。 第3圖為根據本發明一實施例之每一個群組CW0~CW3以及儲存在第一記憶體之每一個子層SL0~SL1的示意圖。 第4~8圖所示為根據本發明一實施例之解碼器對儲存在第一記憶體中的多筆處理後資料進行操作的示意圖。
Claims (12)
- 一種解碼方法,包含有: 自一快閃記憶體模組中讀取一碼字;以及 使用一奇偶校驗矩陣(parity check matrix)來對該碼字進行解碼,該奇偶校驗矩陣中的每一層(layer)包含了N個循環排列矩陣,且使用該奇偶校驗矩陣來對該碼字進行解碼的步驟包含了: 針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料; 將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中; 自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列(row)資料的一第一部份,其中N、M為大於一的正整數;以及 對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
- 如申請專利範圍第1項所述之解碼方法,其中使用該奇偶校驗矩陣來對該碼字進行解碼的步驟另包含了: 自該N個區塊之每一個區塊再讀取另一筆處理後資料,並與該剩餘資料組合後產生一第二資料以及另一剩餘資料,其中該第二資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第二部份,且該另一剩餘資料係被用來後續產生用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第三部份。
- 如申請專利範圍第1項所述之解碼方法,其中該平行運算的階數為該循環排列矩陣的列數量除以N的商數。
- 如申請專利範圍第1項所述之解碼方法,其中使用該奇偶校驗矩陣來對該碼字進行解碼的步驟另包含了: 將該第一資料分別儲存回該N個區塊中。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一解碼器; 其中該微處理器自該快閃記憶體模組中讀取一碼字,且該解碼器使用一奇偶校驗矩陣(parity check matrix)來對該碼字進行解碼,其中該奇偶校驗矩陣中的每一層(layer)包含了N個循環排列矩陣,且該微處理器使用以下步驟來進行解碼操作:針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料;將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中;自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列(row)資料的一第一部份,其中N、M為大於一的正整數;對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
- 如申請專利範圍第5項所述之快閃記憶體控制器,其中該解碼器自該N個區塊之每一個區塊再讀取另一筆處理後資料,並與該剩餘資料組合後產生一第二資料以及另一剩餘資料,其中該第二資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第二部份,且該另一剩餘資料係為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列(row)資料的一第三部份。
- 如申請專利範圍第5項所述之快閃記憶體控制器,其中該平行運算的階數為該循環排列矩陣的列數量除以N的商數。
- 如申請專利範圍第5項所述之快閃記憶體控制器,其中該解碼器將該第一資料分別儲存回該N個區塊中。
- 一種電子裝置,包含有: 一快閃記憶體模組;以及 一快閃記憶體控制器,用來存取該快閃記憶體模組; 其中該快閃記憶體控制器自該快閃記憶體模組中讀取一碼字,且該快閃記憶體控制器使用一奇偶校驗矩陣(parity check matrix)來對該碼字進行解碼,其中該奇偶校驗矩陣中的每一層(layer)包含了N個循環排列矩陣,且該快閃記憶體控制器使用以下步驟來進行解碼操作:針對該N個群組中的任一群組,依序將該群組的M個部分分別與所對應之循環排列矩陣的M個部分相乘,以得到M個處理後資料;將該M個處理後資料儲存至一記憶體中之一區塊的M個不同位址中;自該N個區塊之每一個區塊讀取兩筆處理後資料,並組合後產生一第一資料以及一剩餘資料,其中該第一資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列(row)資料的一第一部份,其中N、M為大於一的正整數;對該第一資料進行平行運算並進行解碼,其中該平行運算的階數小於任一循環排列矩陣的列數量。
- 如申請專利範圍第9項所述之電子裝置,其中該快閃記憶體控制器自該N個區塊之每一個區塊再讀取另一筆處理後資料,並與該剩餘資料組合後產生一第二資料以及另一剩餘資料,其中該第二資料為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第二部份,且該另一剩餘資料係被為用來計算對應到該碼字與該奇偶校驗矩陣相乘後之第一列資料的一第三部份。
- 如申請專利範圍第9項所述之電子裝置,其中該快閃記憶體控制器對該第一資料進行平行運算並進行解碼,其中該平行運算的階數為該循環排列矩陣的列數量除以N的商數。
- 如申請專利範圍第9項所述之電子裝置,其中該快閃記憶體控制器將該第一資料分別儲存回該N個區塊中。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107113540A TWI684856B (zh) | 2018-04-20 | 2018-04-20 | 解碼方法及相關的快閃記憶體控制器與電子裝置 |
CN201810563070.6A CN110389850B (zh) | 2018-04-20 | 2018-06-04 | 译码方法和相关的闪存控制器与电子装置 |
US16/048,311 US20190324851A1 (en) | 2018-04-20 | 2018-07-29 | Decoding method and associated flash memory controller and electronic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107113540A TWI684856B (zh) | 2018-04-20 | 2018-04-20 | 解碼方法及相關的快閃記憶體控制器與電子裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201944237A true TW201944237A (zh) | 2019-11-16 |
TWI684856B TWI684856B (zh) | 2020-02-11 |
Family
ID=68237809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107113540A TWI684856B (zh) | 2018-04-20 | 2018-04-20 | 解碼方法及相關的快閃記憶體控制器與電子裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190324851A1 (zh) |
CN (1) | CN110389850B (zh) |
TW (1) | TWI684856B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836481B (zh) * | 2020-06-24 | 2024-07-02 | 广州希姆半导体科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN118694380A (zh) * | 2024-08-26 | 2024-09-24 | 山东云海国创云计算装备产业创新中心有限公司 | 码字的译码方法和装置、存储介质及电子设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471655A (en) * | 1993-12-03 | 1995-11-28 | Nokia Mobile Phones Ltd. | Method and apparatus for operating a radiotelephone in an extended stand-by mode of operation for conserving battery power |
US6633856B2 (en) * | 2001-06-15 | 2003-10-14 | Flarion Technologies, Inc. | Methods and apparatus for decoding LDPC codes |
CN100546205C (zh) * | 2006-04-29 | 2009-09-30 | 北京泰美世纪科技有限公司 | 构造低密度奇偶校验码的方法、译码方法及其传输系统 |
WO2010001565A1 (ja) * | 2008-07-04 | 2010-01-07 | 三菱電機株式会社 | 検査行列生成装置、検査行列生成方法、検査行列生成プログラム、送信装置、受信装置及び通信システム |
US8245097B2 (en) * | 2009-04-27 | 2012-08-14 | Kan Ling Capital, L.L.C. | Iterative decoding of punctured low-density parity check codes by selection of decoding matrices |
US9124300B2 (en) * | 2013-02-28 | 2015-09-01 | Sandisk Technologies Inc. | Error correction coding in non-volatile memory |
US9525432B2 (en) * | 2014-08-14 | 2016-12-20 | Electronics And Telecommunications Research Institute | Low density parity check encoder having length of 64800 and code rate of 3/15, and low density parity check encoding method using the same |
CN105846830B (zh) * | 2015-01-14 | 2019-07-30 | 北京航空航天大学 | 数据处理装置 |
US10169142B2 (en) * | 2016-07-12 | 2019-01-01 | Futurewei Technologies, Inc. | Generating parity for storage device |
US10484012B1 (en) * | 2017-08-28 | 2019-11-19 | Xilinx, Inc. | Systems and methods for decoding quasi-cyclic (QC) low-density parity-check (LDPC) codes |
-
2018
- 2018-04-20 TW TW107113540A patent/TWI684856B/zh active
- 2018-06-04 CN CN201810563070.6A patent/CN110389850B/zh active Active
- 2018-07-29 US US16/048,311 patent/US20190324851A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20190324851A1 (en) | 2019-10-24 |
TWI684856B (zh) | 2020-02-11 |
CN110389850B (zh) | 2023-05-26 |
CN110389850A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860416B2 (en) | Tiered error correction code (ECC) operations in memory | |
TWI530959B (zh) | 用來控制一記憶裝置之方法以及記憶裝置與控制器 | |
US11050438B2 (en) | Memory controller | |
US8812942B2 (en) | Interleaving apparatuses and memory controllers having the same | |
US11115064B2 (en) | Error correction decoder and memory system having the same | |
KR102707643B1 (ko) | 오류 정정 회로 및 이를 포함하는 메모리 컨트롤러 | |
CN113064547B (zh) | 有局部顺序信息的校验矩阵的保护的数据存取方法及设备 | |
US20150301887A1 (en) | High-speed multi-block-row layered decoder for low density parity check (ldpc) codes | |
CN110858128A (zh) | 数据存储装置及其共享控制器中存储器的方法 | |
KR102666852B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 | |
US11082068B2 (en) | Error correction circuit, memory controller having error correction circuit, and memory system having memory controller | |
TWI684856B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US9081674B2 (en) | Dual mapping between program states and data patterns | |
CN108665940B (zh) | Ecc编码电路、解码电路以及存储器控制器 | |
TWI651730B (zh) | 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器 | |
TWI759672B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
KR101679495B1 (ko) | 프로그램 상태들과 데이터 패턴들 사이의 매핑 | |
US10141072B2 (en) | Efficient encoder based on modified RU algorithm | |
US20190123768A1 (en) | Error correction code (ecc) operations in memory | |
US20220284978A1 (en) | Memory controller and method of operating the same | |
TWI677878B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI711279B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI804347B (zh) | 編碼器與快閃記憶體控制器 |