TW202019100A - 快閃記憶體控制器及其中的編碼電路與解碼電路 - Google Patents
快閃記憶體控制器及其中的編碼電路與解碼電路 Download PDFInfo
- Publication number
- TW202019100A TW202019100A TW107140313A TW107140313A TW202019100A TW 202019100 A TW202019100 A TW 202019100A TW 107140313 A TW107140313 A TW 107140313A TW 107140313 A TW107140313 A TW 107140313A TW 202019100 A TW202019100 A TW 202019100A
- Authority
- TW
- Taiwan
- Prior art keywords
- check code
- data
- flash memory
- check
- circuit
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明揭露了一種應用在一快閃記憶體控制器中的編碼電路,其包含有一輔助資料產生電路以及一編碼器。在該編碼電路的操作中,該輔助資料產生電路係用以接收多個資料組塊以產生該多個資料組塊的一輔助資料,且該編碼器係根據一校驗碼檢查矩陣來對該多個資料組塊進行編碼以產生一校驗碼,並使用該輔助資料來替換該校驗碼中的一部分以產生一調整後校驗碼,其中該多個資料組塊以及該調整後校驗碼係被寫入至一快閃記憶體中。
Description
本發明係有關於快閃記憶體,尤指一種應用在快閃記憶體控制器中的編碼電路與解碼電路。
在目前的低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼器中,若是所採用的校驗碼檢查矩陣為一非全秩校驗碼檢查矩陣(non-full rank parity check matrix)時,其所產生的校驗碼會包含了多個不具有錯誤更正效果的多個位元(通常被稱為相依位元(dependent bit)),因此造成了記憶體空間上的浪費。
因此,本發明的目的之一在於提出一種編碼電路,其可以利用原本相依位元的位址來儲存其他的輔助資料,以解決先前技術中所述的問題。
在本發明的一個實施例中,揭露了一種應用在一快閃記憶體控制器中的編碼電路,其包含有一輔助資料產生電路以及一編碼器。在編碼電路的操作中,輔助資料產生電路係用以接收多個資料組塊以產生該多個資料組塊的一輔助資料,且該編碼器係根據一校驗碼檢查矩陣來對該多個資料組塊進行編碼以產生一校驗碼,並使用該輔助資料來替換該校驗碼中的一部分以產生一調整後校驗碼,其中該多個資料組塊以及該調整後校驗碼係被寫入至一快閃記憶體中。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一記憶體、一微處理器以及一編碼電路。該記憶體係用來儲存一程式碼,且該微處理器係用來執行該程式碼以控制對該快閃記憶體模組之存取,以及該編碼電路包含有一輔助資料產生電路以及一編碼器。在編碼電路的操作中,輔助資料產生電路係用以接收多個資料組塊以產生該多個資料組塊的一輔助資料,且該編碼器係根據一校驗碼檢查矩陣來對該多個資料組塊進行編碼以產生一校驗碼,並使用該輔助資料來替換該校驗碼中的一部分以產生一調整後校驗碼,其中該多個資料組塊以及該調整後校驗碼係被寫入至一快閃記憶體中。
在本發明的另一個實施例中,揭露了一種應用在一快閃記憶體控制器中的解碼電路,其包含有一解碼器以及一檢查電路。在該解碼電路的操作中,該解碼器係用以對來自一快閃記憶體的一資料進行解碼,以產生一解碼後資料以及一解碼後校驗碼;以及該檢查電路係用以自該解碼後校驗碼中取得一輔助資料,並根據該輔助資料來判斷該解碼後資料的完整性或正確性,以產生一檢查結果;其中當該檢查結果指出該解碼後資料的完整性或正確性正常,則該解碼後資料係被傳送給耦接於該快閃記憶體控制器的一主裝置。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一記憶體、一微處理器以及一解碼電路。該記憶體係用來儲存一程式碼,且該微處理器係用來執行該程式碼以控制對該快閃記憶體模組之存取,以及該解碼電路包含有一解碼器以及一檢查電路。在該解碼電路的操作中,該解碼器係用以對來自一快閃記憶體的一資料進行解碼,以產生一解碼後資料以及一解碼後校驗碼;以及該檢查電路係用以自該解碼後校驗碼中取得一輔助資料,並根據該輔助資料來判斷該解碼後資料的完整性或正確性,以產生一檢查結果;其中當該檢查結果指出該解碼後資料的完整性或正確性正常,則該解碼後資料係被傳送給耦接於該快閃記憶體控制器的一主裝置。
第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,其中編碼電路132用來對寫入到快閃記憶體模組120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從快閃記憶體模組120所讀出的資料進行解碼。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,記憶裝置100可以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
在本實施例中,編碼電路132至少包含一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼器,且可以根據來自主裝置130的資料來產生對應的校驗碼,且所產生的校驗碼符合一校驗碼檢查矩陣。具體來說,參考第2圖,假設該校驗碼檢查矩陣為一大小為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的轉置矩陣之後,編碼電路132可以將來自主裝置130的資料乘以矩陣P的轉置矩陣來得到對應於該些資料的校驗碼,而編碼器之後再將資料與校驗碼一起乘上該校驗碼檢查矩陣以判斷校驗碼是否正確。舉例來說,若是相乘結果等於“0”則判斷編碼正確;而若是相乘結果不等於“0”則判斷編碼錯誤。在判斷編碼正確之後,資料與對應的校驗碼便會被寫入至快閃記憶體模組120中的一個資料頁中。
需注意的是上述該校驗碼檢查矩陣的每一個單元都在實作上為一區塊,而該區塊可以是一個方陣(例如64*64的矩陣或是192*192的矩陣),亦即該校驗碼檢查矩陣包含了c*t個區塊。
然而,當該校驗碼檢查矩陣為一非全秩校驗碼檢查矩陣時,反矩陣K-1
的秩(rank)會低於反矩陣K-1
的行/列數,例如反矩陣K-1
的秩可能是(c-x),其中x根據不同的校驗碼檢查矩陣可以是不同的正整數,例如x=3、x=5…等等。然而,由於反矩陣K-1
的秩(rank)會低於反矩陣K-1
的行/列數,故編碼電路132所產生之校驗碼會包含了一些相依位元,亦即無法用來進行錯誤更正的位元。本實施例之編碼電路132係可利用原本相依位元的位址來儲存其他的輔助資料,以避免浪費記憶體空間。
參考第3圖,其為根據本發明一實施例之編碼電路132的示意圖。如第3圖所示,編碼電路132包含了一循環冗餘校驗(Cyclic Redundancy Check,CRC)編碼器310、一低密度奇偶檢查碼編碼器320以及一輔助資料產生電路330,其中低密度奇偶檢查碼編碼器320包含了一局部校驗碼計算電路322、一循環卷積(circulant convolution)計算電路324以及一補償電路326。在本實施例中,局部校驗碼計算電路322可以被比對為第2圖所示之矩陣M,且循環卷積計算電路324則是用來產生一個類似於第2圖所示之反矩陣K-1
的內容,由於局部校驗碼計算電路322以及循環卷積計算電路324涉及許多複雜的電路架構與數學運算,其具體電路架構可參考相同發明人所提出之中華民國專利申請案(申請號:106141115),再加上本發明的重點並不在於低密度奇偶檢查碼編碼器320的電路設計,故局部校驗碼計算電路322以及循環卷積計算電路324的細節在此不予贅述。
在第3圖所示之編碼電路132的操作中,首先,循環冗餘校驗編碼器310對多個資料組塊進行循環冗餘校驗編碼,以產生一循環冗餘校驗碼;接著,低密度奇偶檢查碼編碼器320中的局部校驗碼計算電路322以及循環卷積計算電路324依序對該多個資料組塊以及該循環冗餘校驗碼進行編碼計算以產生一校驗碼,其中該校驗碼包含了至少一個相依位元;同時,輔助資料產生電路330根據該多個資料組塊及/或該循環冗餘校驗碼以產生一輔助資料;接著,補償電路326使用該輔助資料來替換該校驗碼的至少一個相依位元以產生一調整後校驗碼;最後,編碼電路132將該資料組塊、該循環冗餘校驗碼以及該調整後校驗碼一併寫入到快閃記憶體模組120中一區塊的一個資料頁中。
在一實施例中,輔助資料產生電路330所產生之該輔助資料為該多個資料組塊的一識別資訊(ID)、雜湊資料(hash data)、服務品質(Quality of Service,QoS)資訊、時間戳記、或是邏輯/實體位址(logical address);在另一實施例中,循環冗餘校驗編碼器310所產生之該循環冗餘校驗碼包含了一第一部分以及一第二部分,其中該第一部分係接續在該多個資料組塊之後,而該第二部分係作為該輔助資料以取代該校驗碼中的相依位元;在另一實施例中,該輔助資料亦可以為該多個資料組塊中所有具有數值“1”(或是數值“0”)的位元數量除以一參考值後所得的餘數,但本發明並不以此為限。
第4圖繪示了寫入至快閃記憶體模組120中的該資料組塊、該循環冗餘校驗碼以及該調整後校驗碼的示意圖。如第4圖所示,該循環冗餘校驗碼係接續在資料組塊之後,該調整後校驗碼接續在該循環冗餘校驗碼之後,斜線部分是原本校驗碼中相依位元的位址,而輔助資料用來替換原本校驗碼中的相依位元以產生該調整後校驗碼。
在第3、4圖的實施例中,透過將校驗碼中沒有更正效果的相依位元替換為有實際效用的輔助資料,可以在有限的記憶體空間內加入更多有用的資訊,以避免記憶體空間的浪費。
第5圖根據本發明一實施例之編碼方法的流程圖。參考第1~4圖及說明書所揭露之相關內容,編碼方法的流程如下所述。
步驟500:流程開始。
步驟502:對多個資料組塊進行循環冗餘校驗編碼,以產生一循環冗餘校驗碼。
步驟504:對該多個資料組塊以及該循環冗餘校驗碼進行編碼計算以產生一校驗碼。
步驟506:根據該多個資料組塊及/或該循環冗餘校驗碼以產生一輔助資料。
步驟508:使用該輔助資料來替換該校驗碼的至少一個相依位元以產生一調整後校驗碼。
步驟510:將該資料組塊、該循環冗餘校驗碼以及該調整後校驗碼一併寫入到快閃記憶體模組中一區塊的一個資料頁中。
第6圖所示為根據本發明一實施例之解碼電路134的示意圖。如第6圖所示,解碼電路134包含了一低密度奇偶檢查碼解碼器610以及一檢查電路620。在解碼電路134的操作中,首先,因應來自主裝置130的一讀取請求,低密度奇偶檢查碼解碼器610自快閃記憶體模組120中一區塊的一資料頁讀取一資料,並對該資料進行解碼以產生一解碼後資料以及一解碼後校驗碼,其中該解碼後資料可以是第4所示之資料組塊以及循環冗餘校驗碼,而該解碼後校驗碼可以是第4圖的調整後校驗碼。接著,檢查電路620自該解碼後校驗碼中取得輔助資料(如第4圖所示之斜線部分,位址為編碼電路132以及解碼電路134的已知資訊),並利用輔助資料來判斷該解碼後資料的完整性/正確性以產生一檢查結果。在一實施例中,當該檢查結果指出該解碼後資料的完整性或正確性正常,則微處理器112會將該解碼後資料傳送給主裝置130。
在一實施例中,檢查電路620可以是一循環冗餘校驗解碼器,亦即且檢查電路620自該解碼後資料取得一第一部分循環冗餘校驗碼,且檢查電路620自該解碼後校驗碼中取得一第二部分循環冗餘校驗碼(亦即,輔助資料),以及檢查電路620使用該第一部分循環冗餘校驗碼以及該第二部分循環冗餘校驗碼來判斷該解碼後資料的完整性或正確性,以產生該檢查結果。如上所述,由於該解碼後校驗碼中亦包含了循環冗餘校驗碼的部分內容,因此在循環冗餘校驗碼的位元數較多的情形下,本實施例可以讓完整性/正確性檢查具有更高的準確性。
第7圖根據本發明一實施例之解碼方法的流程圖。參考第4、6圖及說明書所揭露之相關內容,解碼方法的流程如下所述。
步驟700:流程開始。
步驟702:自快閃記憶體模組中一區塊的一資料頁讀取一資料。
步驟704:對該資料進行解碼以產生一解碼後資料以及一解碼後校驗碼。
步驟706:自該解碼後校驗碼取得一輔助資料。
步驟708:根據該輔助資料來判斷該解碼後資料的正確性/完整性。
簡要歸納本發明,在本發明之快閃記憶體控制器及相關的編碼電路與解碼電路中,係將編碼電路原本所產生之校驗碼中的相依位元替換為具有實質功用的輔助資料,以充分利用記憶體空間來避免浪費空間。另一方面,透過在校驗碼中加入輔助資料,可以在解碼過程中的正確性/完整性檢查具有更高的準確性。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置110:快閃記憶體控制器112:微處理器112C:程式碼112M:唯讀記憶體114:控制邏輯116:緩衝記憶體118:介面邏輯120:快閃記憶體模組130:主裝置132:編碼電路134:解碼電路310:循環冗餘校驗編碼器320:低密度奇偶檢查碼編碼器322:局部校驗碼計算電路324:循環卷積計算電路326:補償電路330:輔助資料產生電路500~510、700~708:步驟610:低密度奇偶檢查碼解碼器620:檢查電路
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。 第2圖為校驗碼檢查矩陣及校驗碼產生矩陣的示意圖。 第3圖為根據本發明一實施例之編碼電路的示意圖。 第4圖繪示了寫入至快閃記憶體模組中的資料組塊、循環冗餘校驗碼以及調整後校驗碼的示意圖。 第5圖根據本發明一實施例之編碼方法的流程圖。 第6圖為根據本發明一實施例之解碼電路的示意圖。 第7圖根據本發明一實施例之解碼方法的流程圖。
132:編碼電路
310:循環冗餘校驗編碼器
320:低密度奇偶檢查碼編碼器
322:局部校驗碼計算電路
324:循環卷積計算電路
326:補償電路
330:輔助資料產生電路
Claims (18)
- 一種應用在一快閃記憶體控制器中的編碼電路,包含有: 一輔助資料產生電路,用以接收多個資料組塊以產生該多個資料組塊的一輔助資料;以及 一編碼器,耦接於該輔助資料產生電路,用以根據一校驗碼檢查矩陣來對該多個資料組塊進行編碼以產生一校驗碼,並使用該輔助資料來替換該校驗碼的一部分以產生一調整後校驗碼; 其中該多個資料組塊以及該調整後校驗碼係被寫入至一快閃記憶體中。
- 如申請專利範圍第1項所述之編碼電路,其中該校驗碼檢查矩陣為一非全秩校驗碼檢查矩陣(non-full rank parity check matrix),且該校驗碼的該部分係為不具有錯誤更正效果的多個位元。
- 如申請專利範圍第1項所述之編碼電路,其中該編碼器為在該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼器。
- 如申請專利範圍第1項所述之編碼電路,另包含有: 一循環冗餘校驗編碼器,用以對該多個資料組塊進行編碼以產生一循環冗餘校驗碼; 其中該輔助資料產生電路係根據該循環冗餘校驗碼的一部分來產生該輔助資料。
- 如申請專利範圍第4項所述之編碼電路,其中該編碼器對該多個資料組塊以及該循環冗餘校驗碼一起進行編碼以產生該校驗碼,其中該循環冗餘校驗碼中的一部分係被用來替換該校驗碼的該部分以產生該調整後校驗碼。
- 如申請專利範圍第1項所述之編碼電路,其中該輔助資料為該多個資料組塊的一識別資訊(ID)、雜湊資料(hash data)、服務品質(Quality of Service,QoS)資訊、或是邏輯/實體位址(logical address)。
- 一種快閃記憶體控制器,該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一編碼電路,包含有: 一輔助資料產生電路,用以接收多個資料組塊以產生該多個資料組塊的一輔助資料;以及 一編碼器,耦接於該輔助資料產生電路,用以根據一校驗碼檢查矩陣來對該多個資料組塊進行編碼以產生一校驗碼,並使用該輔助資料來替換該校驗碼的一部分以產生一調整後校驗碼; 其中該多個資料組塊以及該調整後校驗碼係被寫入至該快閃記憶體模組中。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中該校驗碼檢查矩陣為一非全秩校驗碼檢查矩陣(non-full rank parity check matrix),且該校驗碼的該部分係為不具有錯誤更正效果的多個位元。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中該編碼器為在該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)編碼器。
- 如申請專利範圍第7項所述之快閃記憶體控制器,另包含有: 一循環冗餘校驗編碼器,用以對該多個資料組塊進行編碼以產生一循環冗餘校驗碼; 其中該輔助資料產生電路係根據該循環冗餘校驗碼的一部分來產生該輔助資料。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該編碼器對該多個資料組塊以及該循環冗餘校驗碼一起進行編碼以產生該校驗碼,其中該循環冗餘校驗碼中的一部分係被用來替換該校驗碼的該部分以產生該調整後校驗碼。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中該輔助資料為該多個資料組塊的一識別資訊(ID)、雜湊資料(hash data)、服務品質(Quality of Service,QoS)資訊、或是邏輯/實體位址(logical address)。
- 一種應用在一快閃記憶體控制器中的解碼電路,包含有: 一解碼器,用以對來自一快閃記憶體的一資料進行解碼,以產生一解碼後資料以及一解碼後校驗碼;以及 一檢查電路,耦接於該解碼器,用以自該解碼後校驗碼中取得一輔助資料,並根據該輔助資料來判斷該解碼後資料的完整性或正確性,以產生一檢查結果; 其中當該檢查結果指出該解碼後資料的完整性或正確性正常,則該解碼後資料係被傳送給耦接於該快閃記憶體控制器的一主裝置。
- 如申請專利範圍第13項所述之解碼電路,其中該解碼器為在該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)解碼器。
- 如申請專利範圍第13項所述之解碼電路,其中該檢查電路係為一循環冗餘校驗(Cyclic Redundancy Check,CRC)解碼器,且該檢查電路自該解碼後資料取得一第一部分循環冗餘校驗碼,且該檢查電路自解碼後校驗碼中所取得的該輔助資料係為一第二部分循環冗餘校驗碼,以及該檢查電路使用該第一部分循環冗餘校驗碼以及該第二部分循環冗餘校驗碼來判斷該解碼後資料的完整性或正確性,以產生該檢查結果。
- 一種快閃記憶體控制器,該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一解碼電路,包含有: 一解碼器,用以對來自一快閃記憶體的一資料進行解碼,以產生一解碼後資料以及一解碼後校驗碼;以及 一檢查電路,耦接於該解碼器,用以自該解碼後校驗碼中取得一輔助資料,並根據該輔助資料來判斷該解碼後資料的完整性或正確性,以產生一檢查結果; 其中當該檢查結果指出該解碼後資料的完整性或正確性正常,則該解碼後資料係被傳送給耦接於該快閃記憶體控制器的一主裝置。
- 如申請專利範圍第16項所述之解碼電路,其中該解碼器為在該快閃記憶體控制器中的一低密度奇偶檢查碼(Low-Density Parity Check code,LDPC code)解碼器。
- 如申請專利範圍第16項所述之解碼電路,其中該檢查電路係為一循環冗餘校驗(Cyclic Redundancy Check,CRC)解碼器,且該檢查電路自該解碼後資料取得一第一部分循環冗餘校驗碼,且該檢查電路自解碼後校驗碼中所取得的該輔助資料係為一第二部分循環冗餘校驗碼,以及該檢查電路使用該第一部分循環冗餘校驗碼以及該第二部分循環冗餘校驗碼來判斷該解碼後資料的完整性或正確性,以產生該檢查結果。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107140313A TWI712268B (zh) | 2018-11-14 | 2018-11-14 | 快閃記憶體控制器及其中的編碼電路與解碼電路 |
CN202210210238.1A CN114694739A (zh) | 2018-11-14 | 2019-01-16 | 闪存控制器及其中的编码电路 |
CN201910039611.XA CN111192622B (zh) | 2018-11-14 | 2019-01-16 | 闪存控制器及其中的编码电路与解码电路 |
US16/558,146 US10938417B2 (en) | 2018-11-14 | 2019-09-01 | Flash memory controller and encoding circuit and decoding circuit within flash memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107140313A TWI712268B (zh) | 2018-11-14 | 2018-11-14 | 快閃記憶體控制器及其中的編碼電路與解碼電路 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202019100A true TW202019100A (zh) | 2020-05-16 |
TWI712268B TWI712268B (zh) | 2020-12-01 |
Family
ID=70549968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107140313A TWI712268B (zh) | 2018-11-14 | 2018-11-14 | 快閃記憶體控制器及其中的編碼電路與解碼電路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10938417B2 (zh) |
CN (2) | CN111192622B (zh) |
TW (1) | TWI712268B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI763310B (zh) * | 2021-02-09 | 2022-05-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI798017B (zh) * | 2022-03-09 | 2023-04-01 | 群聯電子股份有限公司 | 編碼控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799874B (zh) * | 2021-02-23 | 2023-06-13 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN114666011B (zh) * | 2022-03-23 | 2024-04-16 | 锐捷网络股份有限公司 | 一种数据处理方法、装置及电子设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040033554A (ko) * | 2002-10-15 | 2004-04-28 | 삼성전자주식회사 | 에러 정정 부호화 장치 및 그 방법 |
US7853862B2 (en) * | 2005-08-03 | 2010-12-14 | Qualcomm Incorporated | Systems and methods for a turbo low-density parity-check decoder |
KR100833515B1 (ko) * | 2006-12-05 | 2008-05-29 | 한국전자통신연구원 | 가변 정보 길이 및 가변 부호율을 가진 ldpc 부호의패리티 검사 행렬 생성 방법, 부/복호화 방법 및 이를이용하는 장치 |
TWI385666B (zh) * | 2007-05-25 | 2013-02-11 | Realtek Semiconductor Corp | 適用於快閃記憶體之資料結構、及其資料寫入方法及資料讀取方法 |
KR101504101B1 (ko) * | 2007-10-02 | 2015-03-19 | 삼성전자주식회사 | 적어도 두 개의 디코딩 매소드를 디코딩하기 위한 asip 아키텍처 |
CN101452722B (zh) * | 2007-11-30 | 2011-08-31 | 瑞昱半导体股份有限公司 | 错误检测码产生电路和使用该电路的编码电路及相关方法 |
DE112010004863B4 (de) * | 2009-12-17 | 2019-10-10 | International Business Machines Corporation | Datenverwaltung in Festkörperspeichersystemen |
US8341502B2 (en) * | 2010-02-28 | 2012-12-25 | Densbits Technologies Ltd. | System and method for multi-dimensional decoding |
US8667360B2 (en) * | 2011-07-01 | 2014-03-04 | Intel Corporation | Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length |
US20130111294A1 (en) * | 2011-10-28 | 2013-05-02 | Lsi Corporation | Systems and Methods for Late Stage Precoding |
US9048876B2 (en) * | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8910017B2 (en) * | 2012-07-02 | 2014-12-09 | Sandisk Technologies Inc. | Flash memory with random partition |
US20150349805A1 (en) * | 2014-05-28 | 2015-12-03 | Skymedi Corporation | Method of Handling Error Correcting Code in Non-volatile Memory and Non-volatile Storage Device Using the Same |
US10754587B2 (en) * | 2015-03-20 | 2020-08-25 | Burlywood, Inc. | Memory partitioning storage controller |
TWI560718B (en) * | 2015-03-27 | 2016-12-01 | Silicon Motion Inc | Data storage device and encoding method thereof |
US10496472B2 (en) * | 2017-10-18 | 2019-12-03 | Western Digital Technologies, Inc. | Combined XOR buffer memory for multiple open blocks of non-volatile memory |
-
2018
- 2018-11-14 TW TW107140313A patent/TWI712268B/zh active
-
2019
- 2019-01-16 CN CN201910039611.XA patent/CN111192622B/zh active Active
- 2019-01-16 CN CN202210210238.1A patent/CN114694739A/zh active Pending
- 2019-09-01 US US16/558,146 patent/US10938417B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI763310B (zh) * | 2021-02-09 | 2022-05-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI798017B (zh) * | 2022-03-09 | 2023-04-01 | 群聯電子股份有限公司 | 編碼控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
TWI712268B (zh) | 2020-12-01 |
US20200153456A1 (en) | 2020-05-14 |
CN114694739A (zh) | 2022-07-01 |
US10938417B2 (en) | 2021-03-02 |
CN111192622A (zh) | 2020-05-22 |
CN111192622B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI712268B (zh) | 快閃記憶體控制器及其中的編碼電路與解碼電路 | |
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
US20150154111A1 (en) | Apparatus and method of offloading processing from a data storage device to a host device | |
US9424126B2 (en) | Memory controller | |
KR20170056407A (ko) | 데이터의 인코딩과 디코딩을 위한 메모리 시스템 | |
TWI658364B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI703499B (zh) | 資料儲存裝置及其共享控制器中記憶體的方法 | |
US9553608B2 (en) | Data storage device decoder and method of operation | |
TWI474329B (zh) | 提昇錯誤更正能力之方法以及記憶裝置及控制器 | |
CN112214347A (zh) | 产生用于存储器子***中的数据修改期间的错误检测的错误校验数据 | |
CN112214346A (zh) | 用于存储器子***中的数据修改期间的错误检测的方法及装置 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US11709733B2 (en) | Metadata-assisted encoding and decoding for a memory sub-system | |
CN109841252B (zh) | 闪存控制器和设置在闪存控制器中的编码器和编码器 | |
US20200089417A1 (en) | Memory system | |
TW201738898A (zh) | 資料校正方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI782341B (zh) | 快閃記憶體控制器及其中的編碼電路 | |
TW201926354A (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
US11379303B2 (en) | Memory system and method | |
TWI804347B (zh) | 編碼器與快閃記憶體控制器 | |
TWI711279B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI677878B (zh) | 編碼器及相關的編碼方法與快閃記憶體控制器 | |
TWI837829B (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
TWI691967B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
TWI698750B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |