TWI465898B - 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 - Google Patents
避免資料儲存裝置之資料發生移位錯誤的方法及控制器 Download PDFInfo
- Publication number
- TWI465898B TWI465898B TW098123583A TW98123583A TWI465898B TW I465898 B TWI465898 B TW I465898B TW 098123583 A TW098123583 A TW 098123583A TW 98123583 A TW98123583 A TW 98123583A TW I465898 B TWI465898 B TW I465898B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- error correction
- correction code
- error
- data
- 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] 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/33—Synchronisation based on error coding or decoding
- H03M13/333—Synchronisation on a multi-bit block basis, e.g. frame synchronisation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Description
本發明係有關於快閃記憶體,特別是有關於快閃記憶體所輸出的資料之移位錯誤。
一般而言,為了避免資料在記憶體中儲存時發生的損毀,資料儲存裝置通常會於資料寫入記憶體之前事先將資料編碼為錯誤修正碼(error correction code,ECC)。因此,資料係以錯誤修正碼的型態儲存於記憶體中。當資料儲存裝置將錯誤修正碼自記憶體讀出時,必須將錯誤修正碼解碼,以還原錯誤修正碼為資料。若錯誤修正碼在解碼過程中發現帶有資料錯誤,資料儲存裝置便可在解碼過程更正錯誤,而產生正確的資料。
第1圖係一資料儲存裝置104的區塊圖。資料儲存裝置104耦接至一主機102。資料儲存裝置104包括一控制器106及一快閃記憶體108。當主機102要求資料儲存裝置104讀取資料時,控制器106會先發送一晶片致能信號CE以致能快閃記憶體108。當快閃記憶體108啟動後,接著控制器106會向快閃記憶體108發送一連串的讀取致能脈波RE。快閃記憶體108會依據讀取致能脈波RE的驅動將其中所儲存的錯誤修正碼資料輸出至控制器106。控制器106收到錯誤修正碼後,便會解碼錯誤修正碼,以還原資料。若錯誤修正碼帶有資料錯誤,控制器106可修正資料錯誤而得到正確的資料。最後,控制器106將資料傳送至主機102,而完成資料之讀取。
一般的錯誤修正碼,例如BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)及RS碼(Reed-Solomon code),皆為循環碼(cyclic code)。循環碼可修正一般的資料錯誤。然而,當循環碼帶有移位錯誤(shift errors)時,控制器106通常無法偵測到循環碼的移位錯誤,而將帶有移位錯誤的循環碼視為正確的資料。這樣會嚴重影響資料的正確性,從而使資料儲存裝置的效能下降。
第2圖為第1圖之控制器106自快閃記憶體108所接收的錯誤修正碼發生移位錯誤的示意圖。於時點t1,控制器106向快閃記憶體108發送晶片致能信號CE,以啟動快閃記憶體108。在經過時間T後,控制器106於時點t2向快閃記憶體108發送第一個讀取脈波202。一般而言,快閃記憶體108應在收到讀取脈波202後讀取其內的錯誤修正碼資料並向控制器106回傳讀取所得的錯誤修正碼的一個位元組。然而,部分快閃記憶體108可能因為製程上的偏移需要較長的充電時間,而無法於時點t2前啟動完畢,導致未收到讀取脈波202。因此,控制器102於時點t2~t3間讀取控制器106與快閃記憶體108的資料匯流排,僅會得到錯誤的第一個位元組210。
接著,控制器106於時點t3向快閃記憶體108發送第二個讀取脈波204,並讀取快閃記憶體108回應的錯誤修正碼的位元組D01。控制器106接著向快閃記憶體108發送第三個讀取脈波206,並讀取快閃記憶體108回應的錯誤修正碼的位元組D02。如此一來,控制器106所接收的錯誤修正碼依序為錯誤位元組210、正確位元組D01、正確位元組D02、…。由於控制器106並不知道所接收的第一個位元組210係錯誤的,因此控制器106會得到具有一位元組之移位錯誤的錯誤修正碼。
第3A圖為快閃記憶體108中原本儲存的一頁資料的示意圖。假設快閃記憶體108所儲存的一頁資料大小為8K位元組,該8K位元組之錯誤修正碼分為8個1K位元組大小之錯誤修正碼字(code word)C1、C2、…、C8。每一錯誤修正碼字C1、C2、…、C8分別包括資料部分M1
、M2
、…、M8
及檢查碼P1
、P2
、…、P8
。第3B圖為控制器106自快閃記憶體108所接收之發生移位錯誤的一頁資料的示意圖。假設控制器106自快閃記憶體108所接收的一頁錯誤修正碼包括8個1K位元組大小之錯誤修正碼字C1’、C2’、…、C8’。由於控制器106接收到錯誤的第一位元組E,因此錯誤修正碼字C1’包括錯誤位元組E、資料M1
、以及檢查碼P1
的前一部分P11
,而錯誤修正碼字C2’包括檢查碼P1
的最後一位元P12
、資料M2
、以及檢查碼P2
的前一部分P21
。如此則控制器106所得到的每一錯誤修正碼字C1’、C2’、…、C8’皆包含一位元組之移位錯誤,但由於錯誤修正碼字C1’、C2’、…、C8’為循環碼,控制器106僅將移位錯誤E、P12
、…、P72
視為可修正的錯誤,而將帶有移位錯誤的資料視為正確的資料。這樣會嚴重影響資料的正確性,從而使資料儲存裝置104的效能下降。
有鑑於此,本發明之目的在於提供一種避免資料儲存裝置之資料發生移位錯誤的方法,以解決習知技術存在之問題。首先,自一主機接收欲儲存至該資料儲存裝置的一資料。接著,編碼該資料為一錯誤修正碼。接著,以一擾亂程序加擾(scramble)該錯誤修正碼,以得到一擾亂碼供儲存於該資料儲存裝置之一記憶體中。當該主機向該資料儲存裝置要求該資料時,自該記憶體讀取該擾亂碼,以得到一第一讀出碼。接著,以一解擾程序解擾(descramble)該第一讀出碼,以得到一第一解擾錯誤修正碼。接著,解碼該第一解擾錯誤修正碼,並決定是否該第一解擾錯誤修正碼帶有無法修正之錯誤。若該第一解擾錯誤修正碼帶有無法修正之錯誤,重新自該記憶體讀取該擾亂碼以得到無移位錯誤之一第二讀出碼,解擾該第二讀出碼以得到一第二解擾錯誤修正碼,並解碼該第二解擾錯誤修正碼。最後,將成功地解碼該第一解擾錯誤修正碼或該第二解擾錯誤修正碼所得到的該資料傳送至該主機。
本發明更提供一種避免資料儲存裝置之資料發生移位錯誤的方法。首先,自一主機接收欲儲存至該資料儲存裝置的一資料。接著,編碼該資料為一錯誤修正碼。接著,以一交錯(interleave)程序處理該錯誤修正碼,以得到一交錯碼供儲存於該資料儲存裝置之一記憶體中。當該主機向該資料儲存裝置要求該資料時,自該記憶體讀取該交錯碼,以得到一第一讀出碼。接著,以一解交錯(deinterleave)程序處理該第一讀出碼,以得到一第一解交錯錯誤修正碼。接著,解碼該第一解交錯錯誤修正碼,並決定是否該第一解交錯錯誤修正碼帶有無法修正之錯誤。若該第一解交錯錯誤修正碼帶有無法修正之錯誤,重新自該記憶體讀取該交錯碼以得到無移位錯誤之一第二讀出碼,解交錯該第二讀出碼以得到一第二解交錯錯誤修正碼,並解碼該第二解交錯錯誤修正碼。最後,將成功地解碼該第一解交錯錯誤修正碼或該第二解交錯錯誤修正碼所得到的該資料傳送至該主機。
本發明更提供一種控制器,可避免一資料儲存裝置之資料發生移位錯誤。於一實施例中,該控制器包括一錯誤修正碼編碼器、一擾亂器(scrambler)、一解擾器(descrambler)、一錯誤修正碼解碼器、以及一控制模組。該錯誤修正碼編碼器將該資料儲存裝置自一主機接收的一資料編碼為一錯誤修正碼。該擾亂器以一擾亂程序加擾(scramble)該錯誤修正碼,以得到一擾亂碼供儲存於該資料儲存裝置之一記憶體中。當該主機向該資料儲存裝置要求該資料時,該解擾器以一解擾程序解擾(descramble)該記憶體讀取該擾亂碼所輸出的一第一讀出碼,以得到一第一解擾錯誤修正碼。該錯誤修正碼解碼器解碼該第一解擾錯誤修正碼以得到該資料供傳送至該主機,並決定是否該第一解擾錯誤修正碼帶有無法修正之錯誤。若該第一解擾錯誤修正碼帶有無法修正之錯誤,該控制模組指示該記憶體重新讀取該擾亂碼以輸出無移位錯誤之一第二讀出碼,指示該解擾器解擾該第二讀出碼以得到一第二解擾錯誤修正碼,並指示該錯誤修正碼解碼器解碼該第二解擾錯誤修正碼以得到該資料供傳送至該主機。
本發明更提供一種控制器,可避免一資料儲存裝置之資料發生移位錯誤。於一實施例中,該控制器包括一錯誤修正碼編碼器、一交錯器(interleaver)、一解交錯器(deinterleaver)、一錯誤修正碼解碼器、以及一控制模組。該錯誤修正碼編碼器將該資料儲存裝置自一主機接收的一資料編碼為一錯誤修正碼。該交錯器以一交錯(interleave)程序處理該錯誤修正碼,以得到一交錯碼供儲存於該資料儲存裝置之一記憶體中。當該主機向該資料儲存裝置要求該資料時,該解交錯器以一解交錯(deinterleave)程序處理該記憶體讀取該交錯碼所輸出的一第一讀出碼,以得到一第一解交錯錯誤修正碼。該錯誤修正碼解碼器解碼該第一解交錯錯誤修正碼以得到該資料供傳送至該主機,並決定是否該第一解交錯錯誤修正碼帶有無法修正之錯誤。若該第一解交錯錯誤修正碼帶有無法修正之錯誤,該控制模組指示該記憶體重新讀取該交錯碼以輸出無移位錯誤之一第二讀出碼,指示該解交錯器解交錯該第二讀出碼以得到一第二解交錯錯誤修正碼,並指示該錯誤修正碼解碼器解碼該第二解交錯錯誤修正碼以得到該資料供傳送至該主機。
為了讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉數較佳實施例,並配合所附圖示,作詳細說明如下:
第4圖為依據本發明之避免資料發生移位錯誤的資料儲存裝置404的區塊圖。於一實施例中,資料儲存裝置404為一記憶卡。資料儲存裝置404耦接至一主機402,為主機402儲存並讀取資料。資料儲存裝置404包括一控制器406及一快閃記憶體408。控制器406依據主機402之指示儲存資料至快閃記憶體408或自快閃記憶體408讀取資料。於一實施例中,控制器406包括錯誤修正碼編碼器412、擾亂器(scrambler)414、解擾器(descrambler)416、錯誤修正碼解碼器418、以及控制模組420。控制器406的運作將於後續詳細敘述。
第5A圖為依據本發明之控制器406儲存資料之方法500的流程圖。首先,控制器406自主機接收一資料D1
(步驟502)。接著,錯誤修正碼編碼器412編碼資料D1
為一錯誤修正碼C1
(步驟504)。於一實施例中,該錯誤修正碼C1
為BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)或RS碼(Reed-Solomon code)等循環碼。接著,擾亂器414以一擾亂程序加擾該錯誤修正碼C1
以得到一擾亂碼S1
(步驟506)。於一實施例中,該擾亂程序為一隨機化(Randomize)程序。於另一實施例中,擾亂器414包括一虛擬雜訊碼產生器及一XOR運算器。虛擬雜訊碼產生器產生一虛擬雜訊碼(Pesudo Noise),而XOR運算器對錯誤修正碼C1
及該虛擬雜訊碼進行XOR運算,以產生該擾亂碼S1
。接著,控制器406將擾亂碼S1
儲存於快閃記憶體408中(步驟508),從而完成資料之儲存動作。
第5B圖為依據本發明之控制器406讀取資料之方法550的流程圖。首先,控制器406指示快閃記憶體408讀取擾亂碼,以得到一讀出碼S2
(步驟552)。接著,解擾器416以一解擾程序解擾該讀出碼S2
,以得到一錯誤修正碼C2
(步驟554)。於一實施例中,該解擾程序為一去隨機化(Derandomize)程序。於另一實施例中,解擾器416包括一虛擬雜訊碼產生器及一XOR運算器。虛擬雜訊碼產生器產生一虛擬雜訊碼(Pesudo Noise),而XOR運算器對讀出碼S2
及該虛擬雜訊碼進行XOR運算,以產生錯誤修正碼C2
。此時,若讀出碼S2
帶有移位錯誤,因為虛擬雜訊碼產生器產生的虛擬雜訊碼並無移位,因此XOR運算得到的錯誤修正碼C2
會帶有許多錯誤位元組。接著,錯誤修正碼解碼器418解碼該錯誤修正碼C2
,以還原資料D2
(步驟556)。
若讀出碼S2
帶有移位錯誤,錯誤修正碼解碼器418進行解碼時會發現該錯誤修正碼C2
帶有無法修正之錯誤(步驟558),便發出信號K通知控制模組420。控制模組420接著指示快閃記憶體408重新讀取該擾亂碼,以得到無移位錯誤之一讀出碼S2
(步驟560),並指示解擾器416解擾該讀出碼S2
以得到正確的錯誤修正碼C2
(步驟554),以及指示錯誤修正碼解碼器418解碼該錯誤修正碼C2
以還原資料D2
(步驟552)。最後,控制器406將錯誤修正碼C2
解碼所得之資料D2
傳送至主機402,以完成資料讀取動作。
第6A圖為第5A圖之資料儲存方法500之一實施例的示意圖。假設控制器406之錯誤修正碼編碼器412編碼所得的3位元組之錯誤修正碼C1
為[11010010][00011010][10110101],而擾亂器414之虛擬雜訊碼產生器產生的3位元組之虛擬雜訊碼為[10110010][00110101][10001110]。因此,擾亂器414之XOR運算器對錯誤修正碼C1
及該虛擬雜訊碼進行XOR運算而產生的3位元組之擾亂碼S1
為[01100000][00101111][00111011],該擾亂碼S1
接著被儲存於快閃記憶體408。第6B圖為第5B圖之資料讀取方法550在未發生資料移位錯誤情況下之一實施例的示意圖。由於未發生資料移位錯誤,控制器406自快閃記憶體408收到的讀出擾亂碼S2
為[01100000][00101111][00111011]。假設解擾器416之虛擬雜訊碼產生器產生的虛擬雜訊碼為[10110010][00110101][10001110],因此,解擾器416之XOR運算器對讀出擾亂碼S2
及該虛擬雜訊碼進行XOR運算所產生的正確的錯誤修正碼C2
為[11010010][00011010][10110101]。
第6C圖為第5B圖之資料讀取方法550在發生資料移位錯誤情況下之一實施例的示意圖。由於發生1位元組的資料移位錯誤,使控制器406自快閃記憶體408收到的讀出擾亂碼S2
為[00111011][01100000][00101111],其中[00111011]為第2圖中時點t2~t3間在資料匯流排上的雜訊。假設解擾器416之虛擬雜訊碼產生器產生的虛擬雜訊碼為[10110010][00110101][10001110],因此,解擾器416之XOR運算器對讀出擾亂碼S2
及該虛擬雜訊碼進行XOR運算所產生的錯誤修正碼C2
為[10001001][01011010][10100001]。與第6B圖中之正確的錯誤修正碼C2
相比較,第6C圖中之錯誤修正碼C2
的三個位元組共帶有8個錯誤位元,若錯誤修正碼解碼器418的更正能力低於8位元,例如:4位元,則此係無法修正之錯誤。因此,控制模組420便指示快閃記憶體408重新讀取該擾亂碼,以得到無移位錯誤之一讀出碼S2
,從而去除移位錯誤。與習知技術相比,本發明提供的資料儲存方法500與資料讀取方法550可避免循環碼不易偵測到移位錯誤的缺陷,從而提升資料儲存裝置404的效能。
第7圖為依據本發明之避免資料發生移位錯誤的資料儲存裝置704之另一實施例的區塊圖。於一實施例中,資料儲存裝置704為一記憶卡。資料儲存裝置704耦接至一主機702,為主機702儲存並讀取資料。資料儲存裝置704包括一控制器706及一快閃記憶體708。控制器706依據主機702之指示儲存資料至快閃記憶體708或自快閃記憶體708讀取資料。於一實施例中,控制器706包括錯誤修正碼編碼器712、交錯器(interleaver)714、解交錯器(deinterleaver)716、錯誤修正碼解碼器718、以及控制模組720。控制器706的運作將於後續詳細敘述。
第8A圖為依據本發明之控制器706儲存資料之方法800的流程圖。首先,控制器706自主機接收一資料D1
(步驟802)。接著,錯誤修正碼編碼器712編碼資料D1
為一錯誤修正碼C1
(步驟804)。於一實施例中,該錯誤修正碼C1
為BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)或RS碼(Reed-Solomon code)等循環碼。接著,交錯器714以一交錯程序處理該錯誤修正碼C1
,以得到一交錯碼I1
(步驟806)。於一實施例中,該交錯程序將該錯誤修正碼C1
包含之多個位元組的順序改變,以得到該交錯碼I1
。接著,控制器706將交錯碼I1
儲存於快閃記憶體708中(步驟808),從而完成資料之儲存動作。
第8B圖為依據本發明之控制器706讀取資料之方法850的流程圖。首先,控制器706指示快閃記憶體708讀取擾亂碼,以得到一讀出碼I2
(步驟852)。接著,解交錯器716以一解交錯程序處理該讀出碼I2
,以得到一錯誤修正碼C2
(步驟854)。於一實施例中,該解交錯程序將該讀出碼I2
包含之多個位元組的順序還原,以得到該錯誤修正碼C2
。此時,若讀出碼I2
帶有移位錯誤,因為解交錯器716執行的解交錯程序仍將該讀出碼I2
的多個位元組依原本未移位前的位元組順序還原,因此解交錯得到的錯誤修正碼C2
會帶有許多錯誤位元組。接著,錯誤修正碼解碼器718解碼該錯誤修正碼C2
,以還原資料D2
(步驟856)。
若讀出碼I2
帶有移位錯誤,錯誤修正碼解碼器718進行解碼時會發現該錯誤修正碼C2
帶有無法修正之錯誤(步驟858),便發出信號K通知控制模組720。控制模組720接著指示快閃記憶體708重新讀取該擾亂碼,以得到無移位錯誤之一讀出碼I2
(步驟860),並指示解交錯器716解交錯該讀出碼I2
以得到正確的錯誤修正碼C2
(步驟854),以及指示錯誤修正碼解碼器718解碼該錯誤修正碼C2
以還原資料D2
(步驟852)。最後,控制器706將錯誤修正碼C2
解碼所得之資料D2
傳送至主機702,以完成資料讀取動作。
第9A圖為第8A圖之資料儲存方法800之一實施例的示意圖。假設控制器706之錯誤修正碼編碼器712編碼所得的4位元組之錯誤修正碼C1
為[11010010][00011010][10110101][01010000],而交錯器714係將錯誤修正碼C1
所包含的位元組之順序調換為。因此,交錯器714對錯誤修正碼C1
進行交錯運算而產生的交錯碼I1
為[10110101][11010010][01010000][00011010],該交錯碼I1
接著被儲存於快閃記憶體708。第9B圖為第8B圖之資料讀取方法850在發生資料移位錯誤情況下之一實施例的示意圖。由於發生1位元組的資料移位錯誤,使控制器706自快閃記憶體708收到的4位元組之讀出交錯碼I2
為[00011010][10110101][11010010][01010000],其中[00011010]為第2圖中時點t2~t3間在資料匯流排上的雜訊。假設解交錯器716係將讀出交錯碼I2
所包含的位元組之順序調換還原為。因此,解交錯器716之解交錯運算對讀出交錯碼I2
進行解交錯運算所產生的錯誤修正碼C2為[10110101][01010000][00011010][11010010]。與第9A圖中之原本的錯誤修正碼C1
相比較,第9B圖中之錯誤修正碼C2
的4個位元組帶有10個錯誤位元,若錯誤修正碼解碼器718的更正能力低於10位元,例如:8位元,則此係無法修正之錯誤。因此,控制模組720便指示快閃記憶體708重新讀取該交錯碼,以得到無移位錯誤之一讀出碼I2
,從而去除移位錯誤。與習知技術相比,本發明提供的資料儲存方法800與資料讀取方法850可避免循環碼不易偵測到移位錯誤的缺陷,從而提升資料儲存裝置704的效能。
因此,本發明提供一種避免資料儲存裝置之資料發生移位錯誤的方法。資料被編碼為循環之錯誤修正碼後,會先以擾亂(scramble)程序轉換為擾亂碼,或先以交錯(interleave)程序轉換為交錯碼,再儲存於記憶體中。當記憶體讀取擾亂碼或交錯碼而產生一讀取碼時,若讀取碼帶有移位錯誤,會再進行解擾亂程序或解交錯程序後還原為帶有許多錯誤位元組的錯誤修正碼。因此,得到的錯誤修正碼帶有無法修正之錯誤,從而指示資料儲存裝置重新自記憶體讀取資料,以避免移位錯誤。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此項技術者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
102...主機
104...資料儲存裝置
106...控制器
108...快閃記憶體
402...主機
404...記憶卡
406...控制器
408...快閃記憶體
412...錯誤修正碼編碼器
414...擾亂器
416...解擾器
418...錯誤修正碼解碼器
420...控制模組
702...主機
704...記憶卡
706...控制器
708...快閃記憶體
712...錯誤修正碼編碼器
714...交錯器
716...解交錯器
718...錯誤修正碼解碼器
720...控制模組
第1圖係一資料儲存裝置的區塊圖;
第2圖為第1圖之控制器自快閃記憶體所接收的錯誤修正碼發生移位錯誤的示意圖;
第3A圖為快閃記憶體中原本儲存的一頁資料的示意圖;
第3B圖為控制器自快閃記憶體所接收之發生移位錯誤的一頁資料的示意圖;
第4圖為依據本發明之避免資料發生移位錯誤的資料儲存裝置的區塊圖;
第5A圖為依據本發明之第4圖的控制器執行之資料儲存方法的流程圖;
第5B圖為依據本發明之第4圖的控制器執行之資料讀取方法的流程圖;
第6A圖為第5A圖之資料儲存方法之一實施例的示意圖;
第6B圖為第5B圖之資料讀取方法在未發生資料移位錯誤情況下之一實施例的示意圖;
第6C圖為第5B圖之資料讀取方法在發生資料移位錯誤情況下之一實施例的示意圖;
第7圖為依據本發明之避免資料發生移位錯誤的資料儲存裝置之另一實施例的區塊圖;
第8A圖為依據本發明之第7圖的控制器執行之資料儲存方法的流程圖;
第8B圖為依據本發明之第7圖的控制器執行之資料讀取方法的流程圖;
第9A圖為第8A圖之資料儲存方法之一實施例的示意圖;以及
第9B圖為第8B圖之資料讀取方法在發生資料移位錯誤情況下之一實施例的示意圖。
402...主機
404...記憶卡
406...控制器
408...快閃記憶體
412...錯誤修正碼編碼器
414...擾亂器
416...解擾器
418...錯誤修正碼解碼器
420...控制模組
Claims (20)
- 一種避免資料儲存裝置之資料發生移位錯誤的方法,包括下列步驟:自一主機接收欲儲存至該資料儲存裝置的一資料;編碼該資料為一錯誤修正碼;以一擾亂程序加擾(scramble)該錯誤修正碼,以得到一擾亂碼供儲存於該資料儲存裝置之一記憶體中;當該主機向該資料儲存裝置要求該資料時,自該記憶體讀取該擾亂碼,以得到一第一讀出碼;以一解擾程序解擾(descramble)該第一讀出碼,以得到一第一解擾錯誤修正碼;解碼該第一解擾錯誤修正碼,並決定是否該第一解擾錯誤修正碼帶有無法修正之錯誤;若該第一解擾錯誤修正碼帶有無法修正之錯誤,重新自該記憶體讀取該擾亂碼以得到無移位錯誤之一第二讀出碼,解擾該第二讀出碼以得到一第二解擾錯誤修正碼,並解碼該第二解擾錯誤修正碼;以及將成功地解碼該第一解擾錯誤修正碼或該第二解擾錯誤修正碼所得到的該資料傳送至該主機。
- 如申請專利範圍第1項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該擾亂程序為一隨機化(Randomize)程序,而該解擾程序為一去隨機化(Derandomize)程序。
- 如申請專利範圍第1項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該錯誤修正碼之加擾步驟包括:產生一虛擬雜訊碼(Pesudo Noise);以及對該錯誤修正碼及該虛擬雜訊碼進行XOR運算,以產生該擾亂碼。
- 如申請專利範圍第3項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該第一讀出碼之解擾步驟包括:重新產生該虛擬雜訊碼;以及對該第一讀出碼及該虛擬雜訊碼進行XOR運算,以得到該第一解擾錯誤修正碼。
- 如申請專利範圍第1項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該錯誤修正碼為一循環型錯誤更正碼(cyclic base error correction code)。
- 如申請專利範圍第1項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該錯誤修正碼為BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)或RS碼(Reed-Solomon code)。
- 一種避免資料儲存裝置之資料發生移位錯誤的方法,包括下列步驟:自一主機接收欲儲存至該資料儲存裝置的一資料;編碼該資料為一錯誤修正碼;以一交錯(interleave)程序處理該錯誤修正碼,以得到一交錯碼供儲存於該資料儲存裝置之一記憶體中;當該主機向該資料儲存裝置要求該資料時,自該記憶體讀取該交錯碼,以得到一第一讀出碼;以一解交錯(deinterleave)程序處理該第一讀出碼,以得到一第一解交錯錯誤修正碼;解碼該第一解交錯錯誤修正碼,並決定是否該第一解交錯錯誤修正碼帶有無法修正之錯誤;若該第一解交錯錯誤修正碼帶有無法修正之錯誤,重新自該記憶體讀取該交錯碼以得到無移位錯誤之一第二讀出碼,解交錯該第二讀出碼以得到一第二解交錯錯誤修正碼,並解碼該第二解交錯錯誤修正碼;以及將成功地解碼該第一解交錯錯誤修正碼或該第二解交錯錯誤修正碼所得到的該資料傳送至該主機。
- 如申請專利範圍第7項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該交錯程序將該錯誤修正碼包含之多個位元組的順序改變,以得到該交錯碼。
- 如申請專利範圍第7項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該解交錯程序將該第一讀出碼包含之多個位元組的順序還原,以得到該第一解交錯錯誤修正碼。
- 如申請專利範圍第7項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該交錯程序將該錯誤修正碼以四個位元組為單位將其順序改變,以得到該交錯碼。
- 如申請專利範圍第7項所述之避免資料儲存裝置之資料發生移位錯誤的方法,其中該錯誤修正碼為BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)或RS碼(Reed-Solomon code)。
- 一種控制器,避免一資料儲存裝置之資料發生移位錯誤,包括:一錯誤修正碼編碼器,將該資料儲存裝置自一主機接收的一資料編碼為一錯誤修正碼;一擾亂器(scrambler),以一擾亂程序加擾(scramble)該錯誤修正碼,以得到一擾亂碼供儲存於該資料儲存裝置之一記憶體中;一解擾器(descrambler),當該主機向該資料儲存裝置要求該資料時,以一解擾程序解擾(descramble)該記憶體讀取該擾亂碼所輸出的一第一讀出碼,以得到一第一解擾錯誤修正碼;一錯誤修正碼解碼器,解碼該第一解擾錯誤修正碼以得到該資料供傳送至該主機,並決定是否該第一解擾錯誤修正碼帶有無法修正之錯誤;以及一控制模組,若該第一解擾錯誤修正碼帶有無法修正之錯誤,指示該記憶體重新讀取該擾亂碼以輸出無移位錯誤之一第二讀出碼,指示該解擾器解擾該第二讀出碼以得到一第二解擾錯誤修正碼,並指示該錯誤修正碼解碼器解碼該第二解擾錯誤修正碼以得到該資料供傳送至該主機。
- 如申請專利範圍第12項所述之控制器,其中該擾亂程序為一隨機化(Randomize)程序,而該解擾程序為一去隨機化(Derandomize)程序。
- 如申請專利範圍第12項所述之控制器,其中該擾亂器包括:一第一虛擬雜訊碼產生器,產生一虛擬雜訊碼(Pesudo Noise);以及一第一XOR運算器,對該錯誤修正碼及該虛擬雜訊碼進行XOR運算,以產生該擾亂碼。
- 如申請專利範圍第14項所述之控制器,其中解擾器包括:一第二虛擬雜訊碼產生器,重新產生該虛擬雜訊碼;以及一第二XOR運算器,對該第一讀出碼及該虛擬雜訊碼進行XOR運算,以得到該第一解擾錯誤修正碼。
- 如申請專利範圍第12項所述之控制器,其中該錯誤修正碼為一循環型錯誤更正碼(cyclic base error correction code)。
- 如申請專利範圍第12項所述之控制器,其中該錯誤修正碼為BCH碼(Bose,Ray-Chaudhuri,and Hocquenghem code)或RS碼(Reed-Solomon code)。
- 一種控制器,可避免一資料儲存裝置之資料發生移位錯誤,包括:一錯誤修正碼編碼器,將該資料儲存裝置自一主機接收的一資料編碼為一錯誤修正碼;一交錯器(interleaver),以一交錯(interleave)程序處理該錯誤修正碼,以得到一交錯碼供儲存於該資料儲存裝置之一記憶體中;一解交錯器(deinterleaver),當該主機向該資料儲存裝置要求該資料時,以一解交錯(deinterleave)程序處理該記憶體讀取該交錯碼所輸出的一第一讀出碼,以得到一第一解交錯錯誤修正碼;一錯誤修正碼解碼器,解碼該第一解交錯錯誤修正碼以得到該資料供傳送至該主機,並決定是否該第一解交錯錯誤修正碼帶有無法修正之錯誤;以及一控制模組,若該第一解交錯錯誤修正碼帶有無法修正之錯誤,指示該記憶體重新讀取該交錯碼以輸出無移位錯誤之一第二讀出碼,指示該解交錯器解交錯該第二讀出碼以得到一第二解交錯錯誤修正碼,並指示該錯誤修正碼解碼器解碼該第二解交錯錯誤修正碼以得到該資料供傳送至該主機。
- 如申請專利範圍第18項所述之控制器,其中該交錯程序將該錯誤修正碼包含之多個位元組的順序改變,以得到該交錯碼。
- 如申請專利範圍第19項所述之控制器,其中該解交錯程序將該第一讀出碼包含之多個位元組的順序還原,以得到該第一解交錯錯誤修正碼。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098123583A TWI465898B (zh) | 2009-07-13 | 2009-07-13 | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 |
US12/633,767 US8381046B2 (en) | 2009-07-13 | 2009-12-08 | Method for preventing data shift errors and controller using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW098123583A TWI465898B (zh) | 2009-07-13 | 2009-07-13 | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201102806A TW201102806A (en) | 2011-01-16 |
TWI465898B true TWI465898B (zh) | 2014-12-21 |
Family
ID=43428382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098123583A TWI465898B (zh) | 2009-07-13 | 2009-07-13 | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8381046B2 (zh) |
TW (1) | TWI465898B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086983B2 (en) * | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
CN103813766B (zh) * | 2011-09-14 | 2016-01-20 | 3M创新有限公司 | 具有阀门的正压医用敷料和包含所述敷料的套件 |
KR20130044694A (ko) * | 2011-10-24 | 2013-05-03 | 삼성전자주식회사 | 메모리 시스템 및 그 데이터 기록 재생 방법 |
TWI474256B (zh) * | 2012-06-21 | 2015-02-21 | Etron Technology Inc | 產生雜亂值的系統和產生雜亂值的方法 |
KR101767018B1 (ko) | 2013-09-27 | 2017-08-09 | 인텔 코포레이션 | 비휘발성 메모리에서의 오류 정정 |
KR20150122825A (ko) * | 2014-04-23 | 2015-11-03 | 에스케이하이닉스 주식회사 | 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치 |
JP6759369B2 (ja) | 2016-07-01 | 2020-09-23 | ザ プロクター アンド ギャンブル カンパニーThe Procter & Gamble Company | 改善されたトップシート乾燥度を有する吸収性物品 |
CN109213625B (zh) * | 2017-06-30 | 2022-02-11 | 慧荣科技股份有限公司 | 降低快闪储存介面中传收数据错误方法及装置 |
US10606690B2 (en) | 2017-09-29 | 2020-03-31 | Intel Corporation | Memory controller error checking process using internal memory device codes |
US11086714B2 (en) * | 2019-09-20 | 2021-08-10 | Intel Corporation | Permutation of bit locations to reduce recurrence of bit error patterns in a memory device |
US12007839B2 (en) | 2021-05-13 | 2024-06-11 | Micron Technology, Inc. | Interleaved codeword transmission for a memory device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5712863A (en) * | 1996-02-09 | 1998-01-27 | Overland Data Inc | Randomizing encoder for digital data storage |
US6012839A (en) * | 1995-06-30 | 2000-01-11 | Quantum Corporation | Method and apparatus to protect data within a disk drive buffer |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241546A (en) * | 1991-02-01 | 1993-08-31 | Quantum Corporation | On-the-fly error correction with embedded digital controller |
US6084734A (en) * | 1997-12-08 | 2000-07-04 | Maxtor Corporation | Data recovery using targeted ECC correction |
US6981197B2 (en) * | 2001-01-23 | 2005-12-27 | Seagate Technology Llc | Enhanced interleave type error correction method and apparatus |
WO2009089152A1 (en) * | 2008-01-03 | 2009-07-16 | Conexant Systems, Inc. | Cognitive and universal impulse noise protection |
US20090177943A1 (en) * | 2008-01-09 | 2009-07-09 | Broadcom Corporation | Error correction coding using soft information and interleaving |
-
2009
- 2009-07-13 TW TW098123583A patent/TWI465898B/zh active
- 2009-12-08 US US12/633,767 patent/US8381046B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6012839A (en) * | 1995-06-30 | 2000-01-11 | Quantum Corporation | Method and apparatus to protect data within a disk drive buffer |
US5712863A (en) * | 1996-02-09 | 1998-01-27 | Overland Data Inc | Randomizing encoder for digital data storage |
Also Published As
Publication number | Publication date |
---|---|
US8381046B2 (en) | 2013-02-19 |
TW201102806A (en) | 2011-01-16 |
US20110010603A1 (en) | 2011-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI465898B (zh) | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 | |
US5991911A (en) | Concurrent generation of ECC error syndromes and CRC validation syndromes in a DVD storage device | |
US8078943B1 (en) | Error correction code for correcting shift and additive errors | |
JP4152887B2 (ja) | リニアブロックコードに関する消去箇所−及び−単一−エラー訂正デコーダ | |
US6052815A (en) | ECC system for generating a CRC syndrome over randomized data in a computer storage device | |
KR100573356B1 (ko) | 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템 | |
KR960003094B1 (ko) | 프로덕트 코드를 디코딩하는 디코더 및 방법 | |
US8560915B2 (en) | 2D product code and method for detecting false decoding errors | |
US8468432B2 (en) | Coder-decoder and method for encoding and decoding an error correction code | |
JP5363686B2 (ja) | 統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法および磁気テープ・ドライブ(統合されたデータおよびヘッダ保護を含むコード化データのデコード) | |
CA3072857C (en) | Forward error correction with compression coding | |
JP2007172818A5 (zh) | ||
JP2001175542A (ja) | 記録再生装置および半導体メモリ | |
JP4790790B2 (ja) | 誤り検出訂正回路及び半導体メモリ | |
JPH02189032A (ja) | エラー訂正方法 | |
WO2008045292A2 (en) | Error correction decoding methods and apparatus | |
US6009550A (en) | PBA recovery apparatus and method for interleaved reed-solomon codes | |
JP2007243953A (ja) | エラー補正コードストライピング | |
KR101314232B1 (ko) | 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱 | |
US8196004B1 (en) | Fast erasure decoding for product code columns | |
JP2013029882A (ja) | メモリコントローラ、半導体記憶装置および復号方法 | |
JP4624348B2 (ja) | リードソロモンプロダクトコードのためのエラー訂正方法 | |
US20150200686A1 (en) | Encoding device, decoding device, and operating method thereof | |
JP4674371B2 (ja) | エラー訂正デコーディング方法およびその装置 | |
CN101957782B (zh) | 避免数据储存装置的数据发生移位错误的方法及控制器 |