TWI539758B - 藉由癥狀表來解碼渦輪乘積碼之系統及方法 - Google Patents

藉由癥狀表來解碼渦輪乘積碼之系統及方法 Download PDF

Info

Publication number
TWI539758B
TWI539758B TW103114896A TW103114896A TWI539758B TW I539758 B TWI539758 B TW I539758B TW 103114896 A TW103114896 A TW 103114896A TW 103114896 A TW103114896 A TW 103114896A TW I539758 B TWI539758 B TW I539758B
Authority
TW
Taiwan
Prior art keywords
component
codeword
symptom
buffer
tpc
Prior art date
Application number
TW103114896A
Other languages
English (en)
Other versions
TW201511479A (zh
Inventor
阿魯庫瑪 蘇布蘭曼尼恩
納碧恩 庫瑪
吳征
曾令琪
傑森 貝爾羅拉多
Original Assignee
愛思開海力士有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 愛思開海力士有限公司 filed Critical 愛思開海力士有限公司
Publication of TW201511479A publication Critical patent/TW201511479A/zh
Application granted granted Critical
Publication of TWI539758B publication Critical patent/TWI539758B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/159Remainder calculation, e.g. for encoding and syndrome calculation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon codes

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

藉由癥狀表來解碼渦輪乘積碼之系統及方法
本發明係關於一種解碼渦輪乘積碼之系統及方法,尤指一種用以解碼渦輪乘積碼之癥狀表之系統及方法。
渦輪乘積碼(turbo-product code,TPC)係一種類型之錯誤校正碼。在TPC編碼期間,有效負載資訊配置成一矩陣,且一TPC編碼器使用組件碼編碼列及行。舉例而言,該等列以某一方式分組(例如,每一群組係1位元「高」)且經編碼。接著,該等行以某一方式分組(例如,每一群組係1位元「寬」)且經編碼。在解碼器端上,自一資料記憶體緩衝器多次存取資料以用於列解碼及行解碼。用於自資料記憶體緩衝器存取此大量資料之額外負荷係顯著的。可克服此瓶頸之一高效架構將係期望的。
為解決上述現有技術的缺失,本發明一目的在於提供一種減少對TPC緩衝器讀取存取之次數的系統及方法。
為達上述目的及其他目的,本發明係提供一種系統,其包括一組件癥狀緩衝器;以及一組件解碼器,其經組態以:自該組件癥狀緩衝器獲得與一渦輪乘積碼(TPC)碼字相關聯之一組的一或多個組件癥狀;及對該組的一或多個組件癥狀執行組件解碼。
於本發明之一實施例中的系統,該系統包含一半導體裝置,該半導體裝置包含以下各項中之一或多者:一特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)。
於本發明之一實施例中的系統,該組件癥狀緩衝器包含以下各項中之一或多者:一列癥狀緩衝器;一行癥狀緩衝器;或一主癥狀緩衝器。
於本發明之一實施例中的系統,該組的組件癥狀包含以下各項中之一或多者:一組的一或多個列癥狀;一組的一或多個行癥狀;或一組的一或多個主癥狀。
於本發明之一實施例中的系統,該TPC碼字與以下各項中之一或多者相關聯:一博斯-喬赫裡-霍克文黑姆(BCH)碼;或一裡德-所羅門(RS)碼。
於本發明之一實施例中的系統,更包括一初始化區塊,該初始化區塊經組態以:使用該TPC碼字產生一初始組的一或多個組件癥狀;將該組件癥狀緩衝器中之該組的組件癥狀設定為該初始組的組件癥狀;至少部分地基於該初始組的組件癥狀來識別不需要校正之彼等組件碼字及需要校正之彼等組件碼字;至少部分地基於不需要校正之彼等組件碼字及需要校正之彼等組件碼字之該識別來設定一或多個無錯誤位元;及設定一或多個經修改位元以指示相關聯之記錄已經修改。
於本發明之一實施例中的系統,更包括一TPC緩衝器,該TPC緩衝器經組態以儲存該TPC碼字,其中該初始化區塊進一步經組態以將該TPC緩衝器中之該TPC碼字設定為自儲存裝置複製之一初始TPC碼字。
於本發明之一實施例中的系統,該系統更包含一TPC碼字修改 器及一癥狀緩衝器修改器;該組件解碼器經組態以執行組件解碼,其包含藉由:判定在正處理之一組件碼字索引中一無錯誤位元是否等於0且一經修改位元是否等於1;及在判定該無錯誤位元等於0且該經修改位元等於1之情況中:對儲存於正處理之該組件碼字索引中之一或多個組件癥狀執行組件解碼;及判定解碼是否成功;及該TPC碼字修改器經組態以在一TPC緩衝器中更新該TPC碼字;及該癥狀緩衝器修改器經組態以:在一第一組件癥狀緩衝器中更新正處理之該組件碼字索引;及在一第二組件癥狀緩衝器中更新與正處理之該組件碼字索引相關之一或多個組件碼字索引。
於本發明之一實施例中的系統,該癥狀緩衝器修改器經組態以在該第一組件癥狀緩衝器中更新正處理之該組件碼字索引,其包含藉由:基於對該TPC碼字之一或多個改變產生對儲存於正處理之該組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於正處理之該組件碼字索引中之該等組件癥狀;判定該等經更新組件癥狀是否全部為零;及在判定該等經更新組件癥狀全部為零之情況中,將正處理之該組件碼字索引中之該無錯誤位元設定為1。
於本發明之一實施例中的系統,該癥狀緩衝器修改器經組態以在該第二組件癥狀緩衝器中更新一或多個組件碼字索引,其包含藉由:基於對該TPC碼字之一或多個改變產生對儲存於該相關組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於該相關組件碼字索引中之該等組件癥狀;將該相關組件碼字索引中之該經修改位元設定為1;判定該等經更新組件癥狀是否全部為零;在判定該等經更新組件癥狀全部為零之情況中;將該相關組件碼字索引中之該無錯誤位元設定為1;及在判定該等經更新組件癥狀非全部為零之情況中,將該相關組件碼字索引中之該無錯誤位元設定 為0。
於本發明之一實施例中的系統,該TPC碼字修改器經組態以在該TPC緩衝器中更新該TPC碼字,其包含藉由:產生對一組件碼字之一或多個可能改變;使該等可能改變與該TPC緩衝器中之一或多個寫入位址相關聯;判定是否提交該等可能改變;在判定提交該等可能改變之情況中,將該等可能改變應用至儲存於該TPC緩衝器中之該組件碼字;及在判定不提交該等可能改變之情況中,丟棄該等可能改變及相關聯之寫入位址。
此外,本發明係提供一種方法,其包括自一組件癥狀緩衝器獲得與一渦輪乘積碼(TPC)碼字相關聯之一組的一或多個組件癥狀;及使用一解碼器來對該組的一或多個組件癥狀執行組件解碼。
於本發明之一實施例中的方法,藉由一半導體裝置執行該方法,該半導體裝置包含以下各項中之一或多者:一特殊應用積體電路(ASIC);或場可程式化閘陣列(FPGA)。
於本發明之一實施例中的方法,該組件癥狀緩衝器包含以下各項中之一或多者:一列癥狀緩衝器;一行癥狀緩衝器;或一主癥狀緩衝器。
於本發明之一實施例中的方法,該組的組件癥狀包含以下各項中之一或多者:一組的一或多個列癥狀;一組的一或多個行癥狀;或一組的一或多個主癥狀。
於本發明之一實施例中的方法,該TPC碼字與以下各項中之一或多者相關聯:一博斯-喬赫裡-霍克文黑姆(BCH)碼;或一裡德-所羅門(RS)碼。
於本發明之一實施例中的方法,更包括:使用該TPC碼字 產生一初始組的一或多個組件癥狀;將該組件癥狀緩衝器中之該組的組件癥狀設定為該初始組的組件癥狀;至少部分地基於該初始組的組件癥狀來識別不需要校正之彼等組件碼字及需要校正之彼等組件碼字;至少部分地基於不需要校正之彼等組件碼字及需要校正之彼等組件碼字之該識別來設定一或多個無錯誤位元;及設定一或多個經修改位元以指示相關聯之記錄已經修改。
於本發明之一實施例中的方法,更包括將該TPC碼字儲存於一TPC緩衝器中,其中將該TPC緩衝器中之該TPC碼字初始化為自儲存裝置複製之一初始TPC碼字。
於本發明之一實施例中的方法,判定在正處理之一組件碼字索引中一無錯誤位元是否等於0且一經修改位元是否等於1;及在判定該無錯誤位元等於0且該經修改位元等於1之情況中:對儲存於正處理之該組件碼字索引中之一或多個組件癥狀執行組件解碼;判定解碼是否成功;及在判定解碼係成功之情況中:在一TPC緩衝器中更新該TPC碼字;在一第一組件癥狀緩衝器中更新正處理之該組件碼字索引;及在一第二組件癥狀緩衝器中更新與正處理之該組件碼字索引相關之一或多個組件碼字索引。
於本發明之一實施例中的方法,在該第一組件癥狀緩衝器中更新正處理之該組件碼字索引包含:基於對該TPC碼字之一或多個改變產生對儲存於正處理之該組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於正處理之該組件碼字索引中之該等組件癥狀;判定該等經更新組件癥狀是否全部為零;及在判定該等經更新組件癥狀全部為零之情況中,將正處理之該組件碼字索引中之該無錯誤位元設定為1。
於本發明之一實施例中的方法,在該第二組件癥狀緩衝器中更新一或多個組件碼字索引,其包含:基於對該TPC碼字之一或多個改變產生對儲存於該相關組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於該相關組件碼字索引中之該等組件癥狀;將該相關組件碼字索引中之該經修改位元設定為1;判定該等經更新組件癥狀是否全部為零;在判定該等經更新組件癥狀全部為零之情況中;將該相關組件碼字索引中之該無錯誤位元設定為1;及在判定該等經更新組件癥狀並非全部為零之情況中,將該相關組件碼字索引中之該無錯誤位元設定為0。
於本發明之一實施例中的方法,在該TPC緩衝器中更新該TPC碼字,其包含:產生對一組件碼字之一或多個可能改變;使該等可能改變與該TPC緩衝器中之一或多個寫入位址相關聯;判定是否提交該等可能改變;在判定提交該等可能改變之情況中,將該等可能改變應用至儲存於該TPC緩衝器中之該組件碼字;及在判定不提交該等可能改變之情況中,丟棄該等可能改變及相關聯之寫入位址。
藉此,本發明之用以解碼渦輪乘積碼之癥狀表之系統及方法藉由該組件癥狀緩衝器、該組件解碼器及上述步驟,而可以減少對該TPC緩衝器讀取存取之次數。
100~102‧‧‧步驟
200‧‧‧碼字
202‧‧‧列碼字
204‧‧‧行碼字
300‧‧‧儲存裝置
302‧‧‧讀取控制器
304‧‧‧TPC解碼器
306‧‧‧列解碼器
308‧‧‧行解碼器
310‧‧‧列癥狀緩衝器
312‧‧‧行癥狀緩衝器
314‧‧‧TPC緩衝器
400‧‧‧列癥狀緩衝器
402‧‧‧行癥狀緩衝器
500~508‧‧‧步驟
600‧‧‧第二列碼字
602‧‧‧第十行碼字
604‧‧‧第十四行碼字
700‧‧‧列癥狀緩衝器
701‧‧‧列碼字索引1
702‧‧‧列碼字索引2
703‧‧‧列碼字索引3
704‧‧‧列碼字索引4
705‧‧‧列碼字索引5
706‧‧‧列碼字索引6
707‧‧‧列碼字索引7
710‧‧‧行癥狀緩衝器
712‧‧‧第十四行碼字索引
714‧‧‧第十三行碼字索引
716‧‧‧第十行碼字索引
800~810‧‧‧步驟
900~906‧‧‧步驟
1000~1008‧‧‧步驟
1100‧‧‧列癥狀緩衝器
1102‧‧‧第二列碼字索引
1104‧‧‧第七列碼字索引
1106‧‧‧第五列碼字索引
1110‧‧‧行癥狀緩衝器
1111‧‧‧行碼字索引1
1112‧‧‧行碼字索引2
1113‧‧‧行碼字索引3
1114‧‧‧行碼字索引4
1115‧‧‧行碼字索引5
1116‧‧‧行碼字索引6
1117‧‧‧行碼字索引7
1118‧‧‧行碼字索引8
1119‧‧‧行碼字索引9
1120‧‧‧行碼字索引10
1121‧‧‧行碼字索引11
1122‧‧‧行碼字索引12
1123‧‧‧行碼字索引13
1124‧‧‧行碼字索引14
1125‧‧‧行碼字索引15
1200‧‧‧列癥狀緩衝器
1202‧‧‧第五列碼字索引
1210‧‧‧行癥狀緩衝器
1211‧‧‧行碼字索引
1212‧‧‧行碼字索引
1213‧‧‧行碼字索引
1214‧‧‧行碼字索引
1215‧‧‧行碼字索引
1216‧‧‧行碼字索引
1300‧‧‧初始化區塊
1302‧‧‧列癥狀緩衝器
1304‧‧‧行癥狀緩衝器
1306‧‧‧TPC緩衝器
1308‧‧‧控制器
1310‧‧‧列及行解碼器
1312‧‧‧TPC更新緩衝器
1314‧‧‧癥狀更新緩衝器
1316‧‧‧TPC碼字修改器
1318‧‧‧癥狀緩衝器修改器
1320‧‧‧癥狀緩衝器修改器
1400~1408‧‧‧步驟
S0~S2t-1‧‧‧癥狀
在以下詳細說明及隨附圖式中揭示本發明之各種實施例。
第1圖係圖解說明在TPC解碼期間使用一所儲存組件癥狀之一程序之一實施例之一流程圖。
第2圖係圖解說明一TPC碼字、一列碼字及一行碼字之一實施例之一圖式。
第3圖係圖解說明一TPC解碼器之一第一實施例之一圖式。
第4圖係圖解說明一列癥狀緩衝器及一行癥狀緩衝器之實施例之一圖式。
第5圖係圖解說明一初始化程序之一實施例之一流程圖。
第6圖係圖解說明建構有二進制BCH碼之一TPC碼字之一實施例之一圖式。
第7圖係圖解說明在初始化之後的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。
第8圖係圖解說明用於對正處理之一組件碼字索引執行之組件解碼之一程序之一實施例之一流程圖。
第9圖係圖解說明用於在一第一組件癥狀緩衝器中更新正處理之一組件碼字索引之一程序之一實施例之一流程圖。
第10圖係圖解說明用於在一第二組件癥狀緩衝器中更新與正處理之組件碼 字索引相關之一或多個組件碼字索引之一程序之一實施例之一流程圖。
第11圖係圖解說明在列解碼之一第一反覆之後但在行解碼之一第一反覆之前的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。
第12圖係圖解說明在行解碼之一第一反覆之後但在列解碼之一第二反覆之前的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。
第13圖係圖解說明一TPC解碼器之一第二實施例之一圖式。
第14圖係圖解說明用於更新儲存於一TPC緩衝器中之一TPC碼字之一程序之一實施例之一流程圖。
本發明可以多種方式實施,包含作為一程序;一設備;一系統;一物質組成;在一電腦可讀儲存媒體上體現之一電腦程式產品;及/或一處理器, 諸如經組態以執行儲存於耦合至該處理器之一記憶體上或由該記憶體提供之指令之一處理器。在此說明書中,此等實施方案或本發明可採取之任何其他形式可稱為技術。一般而言,所揭示程序之步驟之次序可在本發明之範疇內變更。除非另外提及,否則諸如闡述為經組態以執行一任務之一處理器或一記憶體之一組件可實施為經暫時組態以在一既定時間執行該任務之一通用組件或經製造以執行該任務之一特定組件。如本文中所使用,術語「處理器」係指經組態以處理諸如電腦程式指令之資料之一或多個裝置、電路及/或處理核心。
下文連同圖解說明本發明之原理之隨附圖式一起提供對本發明之一或多項實施例之一詳細說明。結合此等實施例闡述本發明,但本發明並不限於任何實施例。本發明之範疇僅由申請專利範圍限制且本發明涵蓋眾多替代、修改及等效物。在以下說明中陳述眾多特定細節以便提供對本發明之一透徹理解。此等細節係出於實例目的而提供,且可在無此等特定細節中之某些或所有細節之情況下根據申請專利範圍實踐本發明。出於清晰之目的,尚未詳細闡述與本發明相關之技術領域中已知之技術材料,因此不會不必要地模糊本發明。
第1圖係圖解說明在TPC解碼期間使用一所儲存組件癥狀之一程序之一實施例之一流程圖。在所顯示之實例中,藉由(舉例而言)係一讀取控制器之部分之一TPC解碼器執行該程序。第1圖中所闡述之TPC解碼程序不束縛於任何特定TPC格式、碼率及/或組件碼類型且可與各種TPC編碼器一起使用,只要組件碼具有取癥狀作為輸入之一解碼器即可。
在100處,自一組件癥狀緩衝器獲得與一渦輪乘積碼(TPC)碼字相關聯之一組的一或多個組件癥狀。舉例而言,一TPC碼字包含複數個行碼字及複數個列碼字。行碼字及列碼字可更通常稱為組件碼字。針對每一碼字,計算一單個癥狀:自一列碼字產生一列癥狀且自一行碼字產生一行癥狀。在步驟 100處自儲存裝置獲得之一組件癥狀可係一列癥狀或者一行癥狀。
在某些實施例中,列癥狀及行癥狀分別單獨地儲存於一列癥狀緩衝器及一行癥狀緩衝器中。在此等實施例中,將自列癥狀緩衝器獲得列癥狀,且將自行癥狀緩衝器獲得行癥狀。
在某些實施例中,在某一初始化序列或在第1圖之前的其他程序期間,一列癥狀緩衝器及一行癥狀緩衝器填充有一初始組列癥狀及一初始組行癥狀。舉例而言,用以產生一TPC碼字之一組件碼可係一循環錯誤校正碼,諸如一博斯-喬赫裡-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,BCH)碼或一裡德-所羅門(Reed-Solomon,RS)碼。在給出自然數m及t之情況下,長度n=2m-1之一t錯誤校正二進制BCH碼定義為:{c(x)GF(2)[x]:deg c(x) n-1,c(α)=c(α 2)=c(α 3)=…=c(α 2t )=0}其中α GF(2 m )係一本原元素(primitive element)。換言之,所有二進制多項式之集合之次數至多為n-1,以使得當將此等二進制多項式視為在GF(2 m )內之多項式時,其必須使α、α2、α3、...、α2t作為其開方根。
c(x)係所傳輸碼字,e(x)係錯誤多項式,且r(x)=c(x)+e(x)係所接收碼字,接著給出α、α2、...、α2tc(x)之開方根,則一初始組件癥狀可計算為:S i =r(α i+1)=e(α i+1)針對i=0、1、...、2t-1。
任何適當癥狀技術可用以分別用一初始組列癥狀或一初始組行癥狀填充一列癥狀緩衝器及/或一行癥狀緩衝器。
在102處,對該組的一或多個組件癥狀執行組件解碼。舉例而言,若在步驟100處獲得一組列癥狀,則在步驟102處之組件解碼包括列解碼且步驟102可藉由組態有列碼之一專用列解碼器或一 通用解碼器執行。或者,若在步驟100處獲得一組行癥狀,則在步驟102處之組件解碼包括行解碼且步驟102可藉由組態有行碼之一專用行解碼器或一通用解碼器執行。每當一組件解碼器係成功的時,步驟102包含(1)將校正提交至TPC碼字(舉例而言,其本端地緩衝於控制器之記憶體中直至已知應對TPC碼字進行校正為止),及(2)做出對組件癥狀緩衝器之適當改變(同樣,經緩衝直至已知應對組件癥狀緩衝器進行校正)。
可視需要在列解碼或行解碼期間多次重複第1圖之程序。舉例而言,只要存在保留於TPC碼字中之錯誤,便可重複第1圖之程序。
上文所闡述之TPC解碼技術之一個益處係可減小一瓶頸。舉例而言,某些其他列解碼器及行解碼器經組態以輸入碼字(例如,一列碼字、一行碼字或一TPC碼字),此在組件解碼之初始階段在一儲存控制器上之一TPC緩衝器處形成一讀取瓶頸。藉由使用經組態以輸入癥狀(例如,與某一類型之碼字相對)之解碼器且與碼字分離地儲存及更新該等癥狀,對TPC緩衝器讀取存取之次數顯著減少。此外,某些其他列解碼器及行解碼器經組態以輸出碼字,此亦在組件解碼之最終階段形成一瓶頸。藉由使用經組態以僅將校正輸出至組件碼字(例如,與輸出整個組件碼字相對)之解碼器,對TPC緩衝器之寫入存取之次數亦顯著減少。
舉例而言,考量建構有在GF(212)內之構成二進制BCH碼之一TPC,其中長度n、尺寸k及最大錯誤校正能力t係: n row=2108,k row=2048,t row=5
n col=2132,k col=2048,t col=7
TPC碼編碼配置成一32×2048二進制矩陣之8kB之資訊位元。在一TPC碼字中存在32列碼字及33行碼字,其中每一行碼字橫跨64行資訊位元。
關於讀取,使用某些其他技術解碼一個組件碼字需要讀取記憶體之約256個位元組。使用本文中所闡述之TPC技術,解碼一個組件碼字需要讀取最多7個癥狀,此小於癥狀緩衝器記憶體之11個位元組。
關於寫入,一組件碼字使用某些其他技術之成功解碼導致將記憶體之約256個位元組寫入至TPC緩衝器。相比而言,本文中所闡述之TPC解碼技術將最多7個位元寫入至TPC緩衝器,且將最多7×5×12=420個位元寫入至一癥狀緩衝器,總計少於53個位元組。
本文中所闡述之TPC解碼技術之另一益處係不需要在每一解碼反覆處重新產生癥狀。此節約電力、處理資源及時間。
第2圖係圖解說明一TPC碼字、一列碼字及一行碼字之一實施例之一圖式。在所顯示之實例中,碼字200係一TPC碼字之一實例。列碼字202及行碼字204係組件碼字之實例。在所顯示之實例中,121個有效負載位元(由陰影框指示)係編碼成225個位元之TPC。為獲得所顯示之列及行同位資訊,一TPC編碼器(未顯示)首先編碼11列有效負載資訊(顯示為陰影方塊)以產生11列同位。接著,TPC編碼器編碼15行有效負載資訊加上列同位以產生15行同位。在此實例中,每一列同位及行同位係4位元長。
注意,此TPC僅係例示性的且並非意欲係限制性的。舉例而言,碼率可係除11/15之外的數。在某些實施例中,多個位元在 行或列編碼之前一起經分組。舉例而言,每一列(行)碼字可具有多個位元之一高度(寬度)。在另一實例中,一列(行)碼字包含來自一個列(行)之所有位元加上來自下一列(行)之一半位元。換言之,一列(行)碼字可具有係位元之一分率數值之一高度(寬度)。
第3圖係圖解說明一TPC解碼器之一第一實施例之一圖式。TPC解碼器304顯示執行第1圖之程序之一系統之一項實施例。為清晰起見,在本文中未顯示不直接與第1圖中所陳述之步驟相關之組件。舉例而言,未顯示對應於讀取控制器302之一寫入控制器及對應於TPC解碼器304之一TPC編碼器。在某些實施例中,讀取控制器302(其包含TPC解碼器304)實施於一半導體裝置上,諸如一特殊應用積體電路(application-specific integrated circuit,ASIC)或場可程式化閘陣列(field-programmable gate array,FPGA)。在某些此等實施例中,儲存裝置300包括另一半導體裝置。
TPC碼字儲存於儲存裝置300上(例如,藉由一寫入控制器(圖未示)儲存於其上)。在某些實施例中,儲存裝置300包括固態儲存裝置,諸如NAND快閃。在某一初始化程序期間,TPC碼字係自儲存裝置300擷取,且列癥狀緩衝器310及行癥狀緩衝器312分別填充有自儲存於儲存裝置300上之一或多個TPC碼字產生之一初始組列癥狀及行癥狀。在某些實施例中,舉例而言藉由某一初始化程序(圖未示)自儲存裝置300擷取儲存於讀取控制器中之一TPC緩衝器314中之將經校正之一或多個TPC碼字。
一旦列癥狀緩衝器310及行癥狀緩衝器312已經填充,藉由列解碼器306及行解碼器308之處理便開始。在此實例中,列解碼首先進行。列解碼器306自列癥狀緩衝器310獲得列癥狀。此係第 1圖中之步驟100之一項實例。接著,列解碼器306對列癥狀執行列解碼。此係第1圖中之步驟102之一項實例。作為解碼程序之部分,列癥狀緩衝器310及/或行癥狀緩衝器312中之癥狀中之某些癥狀可藉由列解碼器306更新。此外,由解碼程序102校正之位元亦可提交至TPC緩衝器314(例如,若/當判定彼等位元校正應提交至TPC緩衝器314時)。
在列解碼器306已完成所有列解碼之後,行解碼器308自行癥狀緩衝器312獲得行癥狀。此係第1圖中之步驟100之一項實例,且所獲得行癥狀可包含由列解碼器306更新之某些行癥狀。行解碼器308接著對所獲得行癥狀執行行解碼。此係第1圖中之步驟102之一項實例。如同列解碼器306,藉由行解碼器308之行解碼可包含更新列癥狀緩衝器310及/或行癥狀緩衝器312中之癥狀中之某些癥狀。由行解碼器校正之位元亦可提交至TPC緩衝器314(例如,若/當判定位元校正應提交至TPC緩衝器314時)。注意,儘管列解碼器306及行解碼器308在此處顯示為兩個單獨硬體件,但在某些實施例中一列解碼器及一行解碼器組合於一單個組件中及/或其共用相同硬體。
在某些實施例中,列解碼器306及/或行解碼器308包含一錯誤定位符多項式產生器、一錯誤定位器及(若需要)一誤差量值產生器。錯誤定位符多項式產生器使用癥狀S 0S 1、...、S 2t-1來產生錯誤位置多項式Λ(x),其定義為:
在某些實施例中,伯利坎普-梅西(Berlekamp-Massey)演算法(BMA)用以產生錯誤定位符多項式。
錯誤位置多項式之開方根(亦即,上文方程式中之j 1j 2、...、j v )指示錯誤之位置,因此發現錯誤位置多項式之開方根對應於發現一對應碼字中之錯誤之位置。在某些實施例中,一陳氏搜尋法(Chien Search,CS)用以發現錯誤位置多項式之開方根。針對二進制符號,一旦錯誤位置已經識別,校正便僅涉及在每一所識別錯誤位置處翻轉位元。針對非二進制符號,誤差量值需要藉由一誤差量值產生器計算以便用於進行校正。在某些實施例中,福尼(Forney)演算法用以計算誤差量值。
與某些其他TPC解碼器相比,列解碼器306及行解碼器308經組態以直接輸入癥狀。舉例而言,儘管某些其他解碼器可經組態以輸入一碼字(例如,一TPC碼字或一組件碼字)且自碼字產生一或多個癥狀,但列解碼器306及行解碼器308跳過彼步驟。
第4圖係圖解說明一列癥狀緩衝器及一行癥狀緩衝器之實施例之一圖式。在某些實施例中,如所顯示實施第3圖中之列癥狀緩衝器310及行癥狀緩衝器312。在所顯示之實例中,列癥狀緩衝器400用以儲存列癥狀及相關聯之狀態資訊且行癥狀緩衝器402用以儲存行癥狀及相關聯之狀態資訊。使用第2圖作為一實例,Nr=11及Nc=15。
列癥狀緩衝器400中之每一記錄包含2tr列癥狀,其中tr係列碼之錯誤校正能力。類似地,行癥狀緩衝器402中之每一記錄包含2tc行癥狀,其中tc係行碼之錯誤校正能力。使用第2圖作為一實例,針對列碼字202所產生之列癥狀將儲存於列癥狀緩衝器400中之第一列碼字索引中且針對行碼字204所產生之行癥狀將儲存於行癥狀緩衝器402中之第一行碼字索引中。每一行癥狀及列癥狀係m個位元 長,其中m係關於例示性BCH碼建構於其上之伽羅瓦(Galois)域。在某些實施例中,若可自子組產生剩餘癥狀,則列(行)癥狀緩衝器可僅針對每一記錄儲存一子組2tr個癥狀(2tc個癥狀)。舉例而言,若組件碼係一t錯誤校正原始二進制BCH碼,則僅需要儲存偶數癥狀S2i,此乃因S 2i+1=(S i )2
除癥狀之外,列緩衝器400及行緩衝器402亦儲存包含一經修改位元之狀態資訊。經修改位元用以追蹤在緊接先前組件解碼期間藉由其他組件解碼器(例如,列解碼器或行解碼器)修改了哪些癥狀。理解經修改位元之另一方式係給應檢查之資訊加旗標之一位元(例如,假定期望其他錯誤校正解碼)。此使得列解碼器或行解碼器(無論哪個係當前作用的)能夠知曉在當前反覆處處理哪些癥狀。下文給出如何設定及闡釋經修改位元之一更詳細實例。
除經修改位元之外,狀態資訊亦包含一無錯誤位元。無錯誤位元指示無論列還是行解碼皆不需要任何解碼(例如,由皆具有0之所有癥狀指示)。設定為1之一無錯誤位元指示彼列碼字或行碼字將藉由組件解碼器宣告為無錯誤。若列癥狀緩衝器400及行癥狀緩衝器402中之所有無錯誤位元係1,則TPC碼字已成功經解碼且TPC解碼器停止。
返回至第1圖,列癥狀緩衝器400及行癥狀緩衝器402中之狀態位元(亦即,經修改位元及無錯誤位元)在某些實施例中用以驅使或指定在步驟100處獲得及在步驟102處使用何種癥狀。在某些實施例中,在步驟100處獲得且在步驟102處之解碼中僅使用使一經修改位元設定為1及使一無錯誤位元設定為0之癥狀。在此等實施例中未獲得使一經修改位元設定為0或使一無錯誤位元設定為1之癥狀。
以下圖顯示一初始化程序之一實例。在某些實施例中,例示性初始化程序用以初始化一組件癥狀緩衝器,諸如一列癥狀緩衝器或一行癥狀緩衝器。
第5圖係圖解說明一初始化程序之一實施例之一流程圖。在如何使用第5圖之一項實例中,在第1圖之前執行第5圖。在另一實例中,第5圖之程序用以填充第4圖中之列癥狀緩衝器400及行癥狀緩衝器402,如其中所顯示。
在500處,使用TPC碼字產生一初始組的一或多個組件癥狀。在各種實施例中,初始組的組件癥狀可包括一初始組的一或多個列癥狀及/或一初始組的一或多個行癥狀。可使用任何適當癥狀產生技術。
在502處,將組件癥狀緩衝器中之該組的組件癥狀設定為初始組的組件癥狀。一組件癥狀緩衝器之某些實例包含一列癥狀緩衝器及一行癥狀緩衝器。舉例而言,在步驟500處產生之初始值儲存於第4圖中之列癥狀緩衝器400及/或行癥狀緩衝器402中之癥狀欄位中。
在504處,至少部分地基於初始組的組件癥狀來識別不需要校正之彼等組件碼字及需要校正之彼等組件碼字。舉例而言,若一給定組件碼字之所有組件癥狀全部為0,則彼組件碼字不需要任何校正。若否(例如,在相關組件癥狀中存在至少一個非零值),則對應組件碼字需要校正。
在506處,至少部分地基於不需要校正之彼等組件碼字及需要校正之彼等組件碼字之識別來設定一或多個無錯誤位元。舉例而言,已識別為無錯誤之組件碼字(亦即,不需要校正之彼等組件碼字) 使其無錯誤位元設定為1且已識別為有錯誤之彼等組件碼字(亦即,需要校正之彼等組件碼字)使其無錯誤位元設定為0。
在508處,一或多個經修改位元經設定以指示相關聯之記錄已經修改。舉例而言,將組件癥狀緩衝器中之所有經修改位元設定為1。此將致使一組件解碼器處理儲存於彼記錄中之癥狀,假定需要進一步組件解碼。
儘管第5圖中未顯示,但在某些實施例中一初始化程序亦用自儲存裝置(例如,固態儲存裝置)擷取或讀取之一初始TPC碼字初始化一TPC緩衝器(其經組態以儲存具有所應用任何數目之校正之TPC碼字)。
以下圖顯示經初始化之一例示性列癥狀緩衝器及例示性行癥狀緩衝器。
第6圖係圖解說明建構有二進制BCH碼之一TPC碼字之一實施例之一圖式。在所顯示之實例中,使用GF(24)之一伽羅瓦域建構碼字,長度n=15且tr=tc=2。將在以下實例中使用此例示性TPC碼字。
第7圖係圖解說明在初始化之後的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。在所顯示之實例中,列癥狀緩衝器700及行癥狀緩衝器710含有一初始組S0及S2癥狀及一初始組狀態資訊。在此實例中,不在癥狀緩衝器中儲存癥狀S1及S3,此乃因組件解碼器可使用S 1=S 3=即時產生該等癥狀。舉例而言,第5圖中所顯示之初始化程序可使如所顯示之列癥狀緩衝器700及行癥狀緩衝器710經填充。在此特定實例中,由於一個二進制BCH碼用以產生TPC碼字(參見第5圖),因此可能僅儲存偶數癥狀。一般而言,針對 一個二進制BCH碼,與每記錄2t個組件癥狀相對,一組件癥狀緩衝器可能每記錄僅儲存t個組件癥狀。
初始化程序分別用一初始組列癥狀及一初始組行癥狀填充列癥狀緩衝器700及行癥狀緩衝器710。在某些情形中,一特定記錄中之癥狀全部為0。對於彼等記錄,將無錯誤位元設定為1。若一給定記錄中之癥狀非全部為0,則將無錯誤位元設定為0。
初始化程序亦將列癥狀緩衝器700及行癥狀緩衝器710中之所有經修改位元設定為1。諸如一列解碼器或一行解碼器之一組件解碼器將使用經修改位元及無錯誤位元來判定是否處理一特定記錄內所含有之癥狀。下文更詳細地闡述此。
第8圖係圖解說明用於對正處理之一組件碼字索引執行之組件解碼之一程序之一實施例之一流程圖。在某些實施例中,第1圖中之步驟102包含第8圖之程序。在各種實施例中,藉由諸如一列解碼器(例如,第3圖中之列解碼器306)或一行解碼器(例如,第3圖中之行解碼器308)之一組件解碼器執行該程序。使用第7圖作為一實例,可對列癥狀緩衝器700中之7列碼字索引中之每一者執行第8圖之程序或可對行癥狀緩衝器710中之15行碼字索引中之每一者執行第8圖之程序。
在800處,判定在正處理之一組件碼字索引中一無錯誤位元是否係一0且一經修改位元是否係一1。舉例而言,假設第7圖中之第二列碼字索引(702)係正處理之組件碼字索引。在彼實例中,在800處之決策係「是」。
若無錯誤位元係一0且一經修改位元係一1,則對儲存於正處理之組件碼字索引中之一或多個組件癥狀執行組件解碼。舉例 而言,儲存於第7圖中之第二列碼字索引(702)中之列癥狀係藉由列解碼器處理。
在804處,判定解碼是否成功。舉例而言,一列解碼器或一行解碼器可輸出一成功/失敗位元,且在步驟804處使用此位元。闡述在804處之決策之另一方式係決定是否將任何改變提交至相關TPC碼字、與正處理之組件碼字索引相關聯之列癥狀及/或行癥狀。
若在步驟804處判定解碼係成功的,則在806處在一TPC緩衝器中更新一TPC碼字。舉例而言,若第7圖中之第二列碼字索引(702)係正處理之組件碼字索引,則以第6圖中之第二列碼字(600)之方式更新TPC碼字。
在808處,在一第一組件癥狀緩衝器中,更新正處理之組件碼字索引。為繼續其中第7圖中之第二列碼字索引(702)係正處理之組件碼字索引之實例,更新第二列碼字索引。此視需要包含更新儲存於第二列碼字索引中之列癥狀及第二列碼字索引中之無錯誤位元。
在810處,在一第二組件癥狀緩衝器中,更新與正處理之組件碼字索引相關之一或多個組件碼字索引。舉例而言,第6圖顯示第二列碼字(600)係藉由TPC碼(由在相交點處之點表示)之方式與第十行碼字(602)及第十四行碼字(604)相關。作為步驟810之一實例,視需要更新儲存於一第十行及第十四行碼字索引中之行癥狀及狀態資訊。
退一步而言,注意除非解碼係成功的(例如,在步驟804處決定),否則來自組件解碼(在步驟802處執行)之結果不准許被傳遞或提交。此係由於某些組件解碼器(例如,一BCH解碼器)可具有輸出之兩個部分。輸出之第一部分含有錯誤之潛在位置,且輸出之第二部 分指示組件解碼器是否成功。在某些情形中,潛在錯誤位置中之某些錯誤位置在成功/失敗狀態可用之前變為可用。若組件解碼器係成功的,則潛在錯誤位置係其中組件碼字與一無錯誤碼字偏離之位置。另一方面,若組件解碼器係不成功的,則潛在錯誤位置不指示任何有用之物且必須被丟棄。
第9圖係圖解說明用於在一第一組件癥狀緩衝器中更新正處理之一組件碼字索引之一程序之一實施例之一流程圖。在某些實施例中,如所顯示執行第8圖中之步驟808。一般而言,若執行列(行)解碼(例如,在第8圖中),則第9圖與對(視/若需要)一列(行)碼字索引之更新相關聯。
在900處,對儲存於正處理之組件碼字索引中之組件癥狀之一或多個改變係基於對一TPC碼字之一或多個改變而產生。舉例而言,若執行列解碼,則一列解碼器可輸出將以一列碼字進行XOR之一錯誤向量以便產生一經更新列碼字。錯誤向量可用以產生對儲存於正處理之一列碼字索引中之一列癥狀之一或多個改變(例如,亦將進行XOR)。舉例而言,將以第6圖中之第二列碼字(600)進行XOR之改變將用以產生將以第7圖中之第二列碼字索引(702)中之S0及S2進行XOR之改變。
在902處,將改變提交至儲存於正處理之組件碼字索引中之組件癥狀。舉例而言,可對第7圖中之第二列碼字索引(702)中之S0及S2癥狀執行一讀取、XOR及寫入序列。注意,對一癥狀之改變(一般而言)係在符號位準上。若癥狀係m個位元長,則改變亦係m個位元長。新癥狀係舊癥狀之逐位元XOR及改變。此外,在某些應用中,不可能定址緩衝器中之一個別位元。若如此,改變係基於緩衝器(例 如,1個、2個或4個位元組)之可定址性,且(如上文所闡述)改變可使用一逐位元XOR繼續經更新。
在904處,判定經更新組件癥狀是否全部為0。舉例而言,若儲存於第二列碼字索引中之經更新S0及S2癥狀全部為0,則在904處之決策係「是」。若如此,則在906處將正處理之組件碼字索引中之無錯誤位元設定為1。舉例而言,會將第7圖中之第二列碼字索引(702)中之無錯誤位元設定為1。注意,無錯誤位元之預設或已儲存值可係0,因此在步驟904處之「否」路徑可維持0之一無錯誤值。
儘管第9圖中未顯示,但在第一組件緩衝器中之所有組件碼字索引已正處理之後,一程序可在第一組件緩衝器中將所有經修改位元設定為0。舉例而言,若執行列(行)解碼,則可在所有列(行)解碼已完成之後但在行(列)解碼開始之前,將列(行)癥狀緩衝器中之所有經修改位元設定為0。
第10圖係圖解說明用於在一第二組件癥狀緩衝器中更新與正處理之組件碼字索引相關之一或多個組件碼字索引之一程序之一實施例之一流程圖。在某些實施例中,如所顯示執行第8圖中之步驟810。一般而言,若執行列(行)解碼(例如,在第8圖中),則第10圖與對(視/若需要)一相關行(列)碼字索引之更新相關聯。若兩個或兩個以上行(列)碼字係與一單個列(行)碼字相關,則可視需要多次重複第10圖之程序。舉例而言,第十行及第十四行碼字係與第6圖中之第二列碼字相關。第10圖之程序將執行兩次:第一次更新第十行碼字索引且第二次更新第十四行碼字索引。
在1000處,基於對一TPC碼字之一或多個改變產生對儲存於相關組件碼字索引中之組件癥狀之一或多個改變。為繼續來自 上文之實例,以第6圖中之第二列碼字(600)進行XOR之改變可用以產生以第7圖中之第十行或第十四行碼字索引中之癥狀進行XOR之改變。
在1002處,將改變提交至儲存於相關組件碼字索引中之組件癥狀。如上文所闡述,可使用一讀取、XOR及寫入程序。
在1003處,將相關組件碼字索引中之經修改位元設定為1。注意,第9圖不具有將經修改位元設定為1之一對應步驟。此乃因一給定組件癥狀緩衝器中之經修改位元係藉由其他組件解碼器斷言(例如,設定為1)。舉例而言,列(行)解碼器負責斷言行(列)癥狀緩衝器中之經修改位元。此使得行(列)解碼器能夠知曉在緊接之前之反覆中藉由列(行)解碼器更新了何種癥狀。
在1004處,判定經更新組件癥狀是否全部為0。若如此,則在1006處將相關組件碼字索引中之無錯誤位元設定為1。若否,則在1008處將相關組件碼字索引中之無錯誤位元設定為0。注意,關於將無錯誤位元設定為0之必要性在第9圖與第10圖之間存在一(細微)差別。在第9圖中,已將無錯誤位元設定為0。此乃因組件碼字僅在將無錯誤位元設定為0之情況下正處理(參見例如第8圖中之步驟800,其中第9圖顯示步驟808之一項實施例)。因此,在第9圖中之步驟904處,不必進行任何操作,此乃因已將無錯誤位元設定為0。然而,在第10圖中,相關組件碼字可使無錯誤位元設定為0或者1。因此,在第10圖中,在步驟1008處將無錯誤位元明確地設定為0(此乃因其可能係一1)。
下文闡述第8圖至第10圖在應用於第7圖時之處理。在下文實例中,一列解碼器正執行列解碼,且列癥狀緩衝器700中之 記錄經歷自頂部至底部。
列碼字索引1(701):此記錄中之列癥狀未正處理,此乃因將無錯誤位元設定為1,此指示相關聯之列碼字不含有錯誤且不需要進一步校正。
列碼字索引2(702):此記錄中之列癥狀正處理,此乃因將經修改位元設定為1,且將無錯誤位元設定為0。對第二列碼字索引(702)中所含有之列癥狀執行列解碼,且在此特定情形中列解碼係成功的。由於在此例項中列(行)解碼係成功的,因此列(行)解碼結果經准許被傳遞。相反,列(行)解碼結果將不被准許被傳遞,列(行)解碼亦未成功。成功之列(行)解碼觸發若干個程序來開始及/或更新列癥狀緩衝器700及/或行癥狀緩衝器710,此包含:
‧更新第十行碼字索引(716)、第十四行碼字索引(712)中之行癥狀。在此例示性TPC碼構造中,第二列碼字關聯至第十行及第十四行碼字,因此新行癥狀針對第十行及第十四行碼字索引而產生且提交至行癥狀緩衝器710。
‧將第十行碼字索引(716)及第十四行碼字索引(712)中之經修改位元設定為1。此使行解碼器知曉(在下一反覆處)列解碼器已更新第十行碼字索引(716)及第十四行碼字索引(712)中之行癥狀。在此特定例項中,其係一爭論點,此乃因初始化程序已將行癥狀緩衝器710中之所有經修改位元設定為1,但在其他解碼反覆中,經修改位元經清除或重設為0。
在此特定情形中,針對第十四行碼字索引(712)產生之經更新行癥狀全部為0,因此第十四行碼字可視為無錯誤:
‧將第十四行碼字索引(712)中之無錯誤位元設定為1。
由於第二列碼字現在可視為無錯誤:
‧因此將第二列碼字索引(702)中之列癥狀皆設定為0,且將第二列碼字索引(702)中之無錯誤位元設定為1。
列碼字索引3(703)及列碼字索引4(704)未正處理,此乃因將無錯誤位元設定為1。
列碼字索引5(705):此記錄中之列癥狀正處理,此乃因將經修改位元設定為1,且將無錯誤位元設定為0。在此特定情形中,列解碼並非成功的(例如,藉由列或行解碼器斷言一失敗信號)。如此,不做出對第五列碼字索引(705)之改變。產生之任何更新經丟棄且不被提交(例如,至TPC緩衝器、至列癥狀緩衝器、至行癥狀緩衝器等)。
列碼字索引6(706):此記錄中之列癥狀未正處理,此乃因將無錯誤位元設定為1。
列碼字索引7(707):處理此記錄中之列癥狀,此乃因將經修改位元設定為1,且將無錯誤位元設定為0。在此情形中列解碼的成功的,因此執行以下更新及程序。
‧更新第十三行碼字索引(714)中之行癥狀中之一或多者。在此實例中,第七列碼字係與第十三行碼字相關,因此經更新行癥狀針對第十三行碼字索引(714)而產生且保存於其中。
‧將第十三行碼字索引(714)中之經修改位元設定為1。此使行解碼器知曉在下一反覆期間,列解碼器更新儲存於第十三行碼字索引(714)中之一或多個碼字。
‧將第十三行碼字索引(714)中之無錯誤位元設定為1。在此特定情形中,針對第十三行碼字索引產生之經更新行癥狀全部為0,因此第十三行碼字係成功經解碼。
‧將第七列碼字索引(707)中之無錯誤位元設定為1,且將第七列碼字索引(707)之列癥狀設定為0。此使列解碼器在下一反覆上(若需要)知曉進一步解碼係不必要的。
在已經評估及處理(若需要)列癥狀緩衝器700中之所有記錄之後,將列癥狀緩衝器700中之經修改位元皆設定為0。此重設經修改位元以使得在列解碼之第二反覆期間,僅處理在即將到來之行解碼期間經更新之列癥狀緩衝器700中之彼等記錄。
以下圖式顯示在上文所闡述之處理已經執行之後的第7圖。
第11圖係圖解說明在列解碼之一第一反覆之後但在行解碼之一第一反覆之前的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。第11圖繼續第7圖之實例。在所顯示之實例中,已在第7圖與第11圖之間改變之欄位用一星號(*)指示。為簡便起見,本文中未顯示癥狀欄位。
在列癥狀緩衝器1100中,所有經修改位元已自1改變至0。如上文所闡述,此重設列癥狀緩衝器1100以使得列解碼器知曉(在下一列解碼反覆期間)哪些記錄藉由行解碼器修改,及因此哪些列癥狀應正處理(若需要)。
在第二列碼字索引(1102)及第七列碼字索引(1104)中,無錯誤位元已自0改變至1,此乃因解碼對於彼等列碼字係成功的。注意,第五列碼字索引(1106)中之無錯誤位元未經改變且保留一0,此乃因列解碼並非成功的(如上文所闡述)。
在行癥狀緩衝器1110中,已更新第十三行碼字索引(1123)及第十四行碼字索引(1124)中之行癥狀及無錯誤位元。更具體而 言,彼等記錄中之所儲存行癥狀全部為0,且將無錯誤位元設定為1。
使用行癥狀緩衝器1110中所顯示之資訊,一行解碼器執行行解碼之一第一反覆。以下闡述在一第一行解碼反覆期間藉由一行解碼器對第11圖執行之第8圖至第10圖之處理。
行碼字索引1(1111)及行碼字索引2(1112)未正處理,此乃因將無錯誤位元設定為1。
行碼字索引3(1113):對第三行碼字索引(1113)中之行癥狀執行行解碼,且解碼係成功的。由於,已自第三行碼字移除所有錯誤。
‧因此將第三行碼字索引(1113)中之無錯誤位元設定為1,且將第三行碼字索引之行癥狀皆設定為0。
在此特定實例中,不存在相關之列碼字,此乃因行碼字中之僅前七個位元具有一相關聯之列碼字。錯誤出現在不具有一相關聯之列碼字之位元13中,因此不對列癥狀緩衝器1100進行更新。
行碼字索引4(1114)、行碼字索引5(1115)及行碼字索引6(1116)未正處理,此乃因將無錯誤位元設定為1。
行碼字索引7(1117):對第七行碼字索引(1117)中之行癥狀執行行解碼且解碼係成功的。
‧更新第五列碼字索引(1106)中之列癥狀。在此實例中,第七行碼字係與第五列碼字相關且因此新行癥狀針對第五列碼字索引(1106)而產生且保存於其中。
‧將第五列碼字索引(1106)中之經修改位元設定為1。此係為向列解碼器指示行解碼器更新了第五列碼字索引(1106)中之癥狀。
由於已自第七行碼字移除所有錯誤,
‧因此將第七行碼字索引(1117)中之無錯誤位元設定為1,且將第七行碼字之行癥狀皆設定為0。
在此實例中,針對第五列碼字索引(1106)所產生且保存至第五列碼字索引之經更新列癥狀非全部為0,因此將第五列碼字索引(1106)中無錯誤位元設定為0。如上文所闡述,無錯誤位元可係一0或者一1,因此將無錯誤位元明確地設定為正確值,此乃因無假定可關於該值做出。
行碼字索引8(1118):對第八行碼字索引(1118)中之行癥狀執行行解碼且解碼係成功的。由於已自第八行碼字移除所有錯誤,
‧因此將第八行碼字索引(1118)中之無錯誤位元設定為1,且將第八行碼字索引之行癥狀皆設定為0。
在此特定實例中,不存在相關列碼字(位元13同樣含有錯誤且不存在相關聯之列碼字),因此未更新列癥狀緩衝器1100。
行碼字索引9(1119)未正處理,此乃因將無錯誤位元設定為1。
行碼字索引10(1120):對第十行碼字索引(1120)中之行癥狀執行行解碼且解碼係成功的。
‧更新第五列碼字索引(1106)中之癥狀。在此實例中,第十行碼字係與第五列碼字(其尚未成功地經解碼)相關,因此經更新列癥狀針對第五列碼字索引(1106)而產生且保存至該第五列碼字索引。
‧將第五列碼字索引(1106)中之經修改位元設定為1。(注意,此位元由於與第七行碼字索引(1117)相關聯地處理已係1。此僅為完整起見而闡述)。此反映經更新列癥狀保存至第五列碼字索引(1106)。
由於已自第十行碼字移除所有錯誤,
‧因此將第十行碼字索引(1120)中之無錯誤位元設定為1,且將第 十行碼字索引之行癥狀皆設定為0。
在此特定實例中,針對第五列碼字索引(1106)產生之經更新癥狀仍然並非全部為0,因此將第五列碼字索引(1106)中之無錯誤位元同樣設定為0。
行碼字索引11(1121)未正處理,此乃因將無錯誤位元設定為1。
行碼字索引12(1122):對第十二行碼字索引(1122)中之行癥狀執行行解碼且解碼係成功的。
‧將第十二行碼字索引(1122)中之無錯誤位元設定為1,且將第十二行碼字索引之行癥狀皆設定為0。在此特定情形中,錯誤位於不具有一對應列碼字之第十四個位元中。如此,未更新列癥狀緩衝器1100。
行碼字索引13(1123)及行碼字索引14(1124)未正處理,此乃因將無錯誤位元設定為1。
行碼字索引15(1125):對第十五行碼字索引(1125)中之行癥狀執行行解碼,且解碼係成功的。
‧將第十五行碼字索引(1125)中之無錯誤位元設定為1,且將第十五行碼字索引中之行癥狀皆設定為0。
‧更新第五列碼字索引(1106)中之癥狀。在此實例中,第十五行碼字係與第五列碼字(其尚未經成功地解碼)相關,因此經更新癥狀針對第五列碼字索引(1106)而產生。
‧將第五列碼字索引(1106)中之經修改位元設定為1。
針對第五列碼字索引(1106)產生之經更新列癥狀最終全部為0,因此亦執行以下更新。
‧將第五列碼字索引(1106)中之無錯誤位元設定為1。
在行癥狀緩衝器1110中之所有記錄已正處理之後(若需要),將行癥狀緩衝器1110中之經修改位元皆設定為0。
以下圖式顯示在已執行上文處理之後的第11圖。
第12圖係圖解說明在行解碼之一第一反覆之後但在列解碼之一第二反覆之前的一列癥狀緩衝器及一行癥狀緩衝器之一實施例之一圖式。第12圖繼續第11圖之實例。在所顯示之實例中,已在第11圖與第12圖之間改變之欄位用一星號(*)指示。
在行癥狀緩衝器1210中,將所有經修改位元設定為0。此重設行癥狀緩衝器1210且使行解碼器知曉(例如,在下一列解碼反覆期間)藉由列解碼器更新了記錄中之哪些記錄。
亦在行癥狀緩衝器1210中,針對行碼字索引1211、1212、1213、1214、1215、及1216產生之經更新行癥狀(未顯示)全部為0,因此彼等記錄中之無錯誤位元已自0更新至1。
在於行解碼期間多次更新之後,與第五列碼字索引(1202)相關聯之經更新列癥狀(未顯示)最終皆變為0。因此,第五列碼字索引(1202)之無錯誤位元已自0更新至1。
注意,在所顯示之狀態中,將列癥狀緩衝器1200及行癥狀緩衝器1210中之所有無錯誤位元皆設定為1。如此,不需要進一步解碼,此乃因TPC碼字已成功地經解碼。
返回至第3圖,一TPC解碼器可包含除第3圖中所顯示之彼等方案之外或作為第3圖中所顯示之彼等方案之一替代方案之其他組件。以下圖顯示具有更多組件之一TPC解碼器之一第二實施例。
第13圖係圖解說明一TPC解碼器之一第二實施例之一 圖式。如上文所闡述,例示性TPC解碼器可實施為一半導體裝置,諸如一ASIC或FPGA。為保存讀取能力,第3圖中所顯示之儲存裝置300及讀取控制器302未顯示於此圖中。
在所顯示之實例中,初始化區塊1300負責在一新TPC碼字之解碼開始時初始化TPC解碼器。初始列癥狀及初始行癥狀分別針對列癥狀緩衝器1302及行癥狀緩衝器1304而產生,且保存至列癥狀緩衝器1302及行癥狀緩衝器1304。針對其中對應癥狀全部為0之彼等列碼字或行碼字,藉由初始化區塊1300將無錯誤位元設定為1。若否,則藉由初始化區塊1300將無錯誤位元設定為0。
除初始化列癥狀緩衝器1302及行癥狀緩衝器1304中之癥狀及無錯誤位元之外,初始化區塊1300亦在列癥狀緩衝器1302及行癥狀緩衝器1304中將經修改位元設定為1。將所有經修改位元設定為1係在初始化期間可接受的,此乃因對應無錯誤位元將致使列及行解碼器1310跳過其中列碼字或行碼字已經成功地解碼之列癥狀緩衝器1302或行癥狀緩衝器1304中之記錄。
初始化區塊1300亦負責初始化用以儲存TPC碼字之TPC緩衝器1306。初始化區塊1300藉由將TPC碼字(例如,自儲存裝置接收)複製至TPC緩衝器1306進行初始化。在各種實施例中,TPC緩衝器1306可係一位元組或字元可定址RAM。換言之,TPC緩衝器1306可劃分為可每時脈循環存取一個單元之8位元、16位元或32位元單位。在TPC解碼進行時,(例如,在確保一潛在改變應提交至TPC緩衝器1306之後)藉由翻轉TPC緩衝器1306中之位元來校正TPC碼字內之錯誤(若存在)。
一旦初始化完成,控制器1308便接管。控制器1308自 列癥狀緩衝器1302獲得狀態資訊(例如,無錯誤位元及經修改位元)及(假定列解碼首先進行)列癥狀。基於無錯誤位元及經修改位元,控制器1308將適當癥狀傳遞至列及行解碼器1310以供處理,且發信號哪個組件解碼器係作用的。舉例而言,自控制器1308傳遞至列及行解碼器1310之控制信號可指示(至少在此情形中)列解碼器係作用的。在此實例中,自控制器1308傳遞至列及行解碼器1310之癥狀將對應於來自列癥狀緩衝器1302之具有0之一無錯誤位元及具有1之一經修改位元之列癥狀。
回應於來自控制器1308之控制信號,列及行解碼器1310將執行列解碼。列及行解碼器1310(舉例而言)以將以一列碼字或一行碼字進行XOR之一錯誤向量之形式傳遞對TPC碼字之可能改變。使用對TPC碼字之此等改變,癥狀更新緩衝器1314產生可能改變,且將可能改變儲存至列及行癥狀緩衝器。
可能改變保持於TPC更新緩衝器1312或癥狀更新緩衝器1314中直至已知是(否)應實際上做出一給定改變為止。自列及行解碼器1310傳遞至TPC更新緩衝器1312及癥狀更新緩衝器1314之可能改變亦可稱為一錯誤向量或一更新向量。舉例而言,一錯誤向量可在錯誤位置處具有一1,且在不存在錯誤處具有一0,以使得以碼字(經校正之其他資訊條目)進行之一XOR將導致所識別錯誤藉由將其翻轉而被固定。
需要此等待(至少在某些實施例中)之原因係與列及行解碼器1310中之BMA區塊及CS區塊相關。如上文所闡述,BMA區塊及CS區塊致力於發現錯誤定位符多項式之開方根,此等效於識別碼字(一列碼字,在此實例中)中之哪些位置具有一錯誤且應自一1翻轉 至一0或反之亦然。列及行解碼器1310由於以下任一原因不能夠成功地解碼一碼字:
‧BMA區塊產生帶次數d>t之一錯誤定位符多項式,其中t係組件碼之最大校正能力。由於最多t位元可經校正(但錯誤定位符多項式之次數指示存在多於t個錯誤),因此解碼失敗。
‧BMA區塊產生具有次數dt之一錯誤定位符多項式(其意指BMA區塊認為解碼係可能的),但CS區塊未發現GF(2 m )中之d開方根。當錯誤定位符多項式具有GF(2 m )之一延伸中之開方根,且一解碼失敗經丟棄時此錯誤情形發生。
更詳細檢查第二失敗情形,儘管可在一段時間上輸出可能改變,直至CS區塊已經完成為止,但無法知曉第二失敗情形是否已出現。此係可能改變儲存於TPC更新緩衝器1312及癥狀更新緩衝器1314中直至已知解碼是否成功,且一特定改變可實際上經提交之原因。注意,出於效能之原因,可能提前(例如,在知曉是否應提交改變之前)產生改變。若僅在已知一改變可實際上經提交之後產生待應用之改變,則效能將並非如此良好。
在該格式之TPC更新緩衝器1312之一項實例中,TPC更新緩衝器1312含有兩個欄位:將經修改之TPC緩衝器1306中之(例如,位元組、字元、dword等之)寫入位址及將以儲存於規定寫入位址處之資料進行XOR,以獲得新TPC碼字之一錯誤向量。在某些實施例中,規定寫入位址僅含有TPC碼字之一部分。舉例而言,寫入位址可係一位元組、字元或dword,而TPC碼字可係成千上萬位元組。注意,TPC更新緩衝器1312與TPC緩衝器1306為相同大小係不必要的且事實上其可實際上較小,此係期望的。
TPC碼字修改器1316負責實際上做出對TPC緩衝器1306之改變。在TPC緩衝器1306上藉由TPC碼字修改器1316執行之一偽碼運算實例係:read_data=READ(<write_address>);write_data=XOR(read_data,<error_vector>);WRITE(<write_address>,write_data)。如上文所闡述,一給定改變實際上並非提交至TPC緩衝器1306中之一相關列(行)碼字直至彼列(行)碼字之解碼係成功的為止。
在該格式之癥狀更新緩衝器1314之一實例中,癥狀更新緩衝器1314含有三個欄位:一列/行位元(例如,在列解碼期間設定為0及在行解碼期間設定為1)、經解碼之列或行碼字之一索引或位址及一錯誤向量。如上文所闡述,儲存於癥狀更新緩衝器1314中之改變實際上不提交至列癥狀緩衝器1302及行癥狀緩衝器1304直至列(行)解碼成功為止。
癥狀緩衝器修改器1318及癥狀緩衝器修改器1320負責實際上分別做出對列癥狀緩衝器1302及行癥狀緩衝器1304之改變。基於癥狀更新緩衝器1314、癥狀緩衝器修改器1318中之列/行位元之值將知曉其負責哪些改變(亦即,具有設定為0之列/行位元之彼等),且癥狀緩衝器修改器1320將知曉其負責哪些改變(亦即,具有設定為1之列/行位元之彼等)。如上文所闡述,讀取、XOR及寫入之一個三步驟程序可用以做出對癥狀緩衝器1302及1304之一改變。此外,如上文所闡述,若上文所闡述之第二失敗情形發生(亦即,CS區塊不能夠發現一給定錯誤位置多項式之所有開方根),則對應於彼錯誤位置多項式之癥狀更新緩衝器1314之改變不提交至適當癥狀緩衝器。
除更新列癥狀緩衝器1302及行癥狀緩衝器1304中之癥 狀之外,癥狀緩衝器修改器1318及癥狀緩衝器修改器1320亦負責更新儲存於其中之狀態資訊(例如,無錯誤位元及經修改位元)。在某些實施例中,癥狀緩衝器修改器1318及癥狀緩衝器修改器1320係「dumb」模組,且儲存於癥狀更新緩衝器1314中之資訊規定一給定記錄之無錯誤位元及經修改位元之經更新值。
一旦列解碼已經完成且已對緩衝器(亦即,列癥狀緩衝器1302、行癥狀緩衝器1304及TPC緩衝器1306)做出適當改變,行解碼便開始。行解碼類似於列解碼,且為簡便起見不在本文中闡述。
組件解碼(亦即,列解碼及行解碼)將繼續進行直至達成任何最大數量之反覆,或組件癥狀指示所有組件碼字已成功地經解碼。若彼情況發生,則輸出TPC緩衝器1306中之經校正TPC碼字。
注意,儘管第13圖顯示僅一單個組件解碼器(亦即,列及行解碼器1310),但某些其他實施例可具有多個組件解碼器(例如,因此與不同列(行)癥狀相關聯之列(行)癥狀可並行正處理)。此可係有吸引力的,此乃因將癥狀載入至一組件解碼器中與實際解碼程序相比花費相對少量時間,因此將期望使多個組件解碼器同時地進行。注意,在一列(行)解碼反覆期間,每一列(行)碼字可獨立於彼此經解碼。
以下圖式闡述用於更新儲存於一TPC緩衝器中之一TPC碼字之一程序。如上文所闡述,可能改變經固持直至確定一特定改變應實際上提交至TPC緩衝器為止。
第14圖係圖解說明用於更新儲存於一TPC緩衝器中之一TPC碼字之一程序之一實施例之一流程圖。在某些實施例中,如所顯示執行第8圖中之步驟806。
在1400處,產生對一組件碼字之一或多個可能改變。 舉例而言,在一個二進制BCH TPC碼字之情形中,可能改變可包括其中一1在需要經校正之彼位元位置中指示一錯誤,且包括一0在彼位元校正中指示無錯誤之一或多個錯誤向量。可(若適當)藉由以對應部分(一所儲存組件碼字)對錯誤向量進行XOR,而做出實際校正以使得錯誤位置中之位元經翻轉(其係與校正彼等位元相同之操作)。在第13圖中,可能改變自列及行解碼器1310傳遞至TPC更新緩衝器1312。
在1402處,可能改變與TPC緩衝器中之一或多個寫入位址相關聯。舉例而言,第13圖中之TPC更新緩衝器1312中之每一項目可包含一寫入位址欄位及將應用於規定寫入位址處之一錯誤向量。
在1404處,判定是否提交可能改變。如上文所闡述,在某些實施例中,此包含等待組件解碼來做出推斷以使得知曉CS區塊是否能夠定位錯誤定位符多項式之所有開方根。若CS區塊不能夠定位錯誤定位符多項式之所有開方根,則在步驟1404處之決策係「否」。
若在步驟1404處之決策係「是」,則在1406處,可能改變應用至儲存於TPC緩衝器中之組件碼字。舉例而言,在第13圖中,使用儲存於TPC更新緩衝器1312中之資訊藉由TPC碼字修改器1316執行步驟1404,以便做出對儲存於TPC緩衝器1306中之一行碼字或一列碼字之改變。若決定在步驟1404處不提交可能改變,則在1408處丟棄可能改變及相關聯之寫入位址。
在各種實施例中,在步驟1406處藉由發生之各種事件或經滿足條件中之一者觸發改變之應用。在一項實例中,在列(行)解碼之一給定反覆已經完成之後但在行(列)解碼之下,一反覆已開始之 前提交第13圖中之TPC更新緩衝器1312之改變(針對其中已知其可提交至TPC緩衝器之彼等記錄)。在另一實例中,TPC更新緩衝器1312在其開始變滿時(同樣,在適當或可能之情況下)經「清除」。
當TPC解碼已完成時,輸出儲存於TPC緩衝器中之經校正TPC碼字。
儘管上文所闡述之實例闡述2D TPC碼(亦即,具有列碼及行碼),但本文中所闡述之技術可應用於具有任何數目之碼或尺寸之TPC碼。在一項實例中,4個4kb 2D TPC碼字經組合且經交錯。經交錯資料接著經錯誤校正編碼有稱為一主碼之一第三碼,以便產生與4個4kb 2D TPC碼字一起儲存之主同位資訊。(通常,出於各種成本相關原因,除非其他解碼技術(例如,其僅依賴於列碼及行碼)已失敗,否則在解碼期間不使用主碼。)本文中所闡述之技術可用以緩解具有三個或三個以上碼或尺寸之系統中之瓶頸。舉例而言,可存在以上文所闡述之方式管理及/或使用之一主癥狀緩衝器。
儘管已出於清晰理解之目的在某些細節上闡述前述實施例,但本發明並不限於所提供之細節。存在實施本發明之諸多替代方式。所揭示之實施例係說明性而非限制性的。
100~102‧‧‧步驟

Claims (20)

  1. 一種藉由癥狀表來解碼渦輪乘積碼的系統,其包括:一組件癥狀緩衝器;一TPC碼字修改器;一癥狀緩衝器修改器;以及一組件解碼器,其經組態以:自該組件癥狀緩衝器獲得與一渦輪乘積碼(TPC)碼字相關聯之一組的一或多個組件癥狀;及對該組的一或多個組件癥狀執行組件解碼,其中,該組件解碼器經組態以執行組件解碼,其包含藉由:判定在正處理之一組件碼字索引中一無錯誤位元是否等於0且一經修改位元是否等於1,其中,在判定該無錯誤位元等於0且該經修改位元等於1之情況中:對儲存於正處理之該組件碼字索引中之一或多個組件癥狀執行組件解碼;及判定解碼是否成功,其中,在判定解碼係成功之情況中:該TPC碼字修改器經組態以在一TPC緩衝器中更新該TPC碼字;及該癥狀緩衝器修改器經組態以:在一第一組件癥狀緩衝器中更新正處理之該組件碼字索引;及在一第二組件癥狀緩衝器中更新與正處理之該組件碼字索引相關之一或多個組件碼字索引。
  2. 如請求項1所述之系統,其中該系統包含一半導體裝置,該半導體裝置包含以下各項中之一或多者:一特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)。
  3. 如請求項1所述之系統,其中該組件癥狀緩衝器包含以下各項中之一或多者:一列癥狀緩衝器;一行癥狀緩衝器;或一主癥狀緩衝器。
  4. 如請求項1所述之系統,其中該組的組件癥狀包含以下各項中之一或多者:一組的一或多個列癥狀;一組的一或多個行癥狀;或一組的一或多個主癥狀。
  5. 如請求項1所述之系統,其中該TPC碼字與以下各項中之一或多者相關聯:一博斯-喬赫裡-霍克文黑姆(BCH)碼;或一裡德-所羅門(RS)碼。
  6. 如請求項1所述之系統,更包括一初始化區塊,該初始化區塊經組態以:使用該TPC碼字產生一初始組的一或多個組件癥狀;將該組件癥狀緩衝器中之該組的組件癥狀設定為該初始組的組件癥狀;至少部分地基於該初始組的組件癥狀來識別不需要校正之彼等組件碼字及需要校正之彼等組件碼字;至少部分地基於不需要校正之彼等組件碼字及需要校正之彼等組件碼字之該識別來設定一或多個無錯誤位元;及設定一或多個經修改位元以指示相關聯之記錄已經修改。
  7. 如請求項6所述之系統,更包括一TPC緩衝器,該TPC緩衝器經組態以儲存該TPC碼字,其中該初始化區塊進一步經組態以將該 TPC緩衝器中之該TPC碼字設定為自儲存裝置複製之一初始TPC碼字。
  8. 如請求項1所述之系統,其中該癥狀緩衝器修改器經組態以在該第一組件癥狀緩衝器中更新正處理之該組件碼字索引,其包含藉由:基於對該TPC碼字之一或多個改變產生對儲存於正處理之該組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於正處理之該組件碼字索引中之該等組件癥狀;判定該等經更新組件癥狀是否全部為零;及在判定該等經更新組件癥狀全部為零之情況中,將正處理之該組件碼字索引中之該無錯誤位元設定為1。
  9. 如請求項1所述之系統,其中該癥狀緩衝器修改器經組態以在該第二組件癥狀緩衝器中更新一或多個組件碼字索引,其包含藉由:基於對該TPC碼字之一或多個改變產生對儲存於該相關組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於該相關組件碼字索引中之該等組件癥狀;將該相關組件碼字索引中之該經修改位元設定為1;判定該等經更新組件癥狀是否全部為零;在判定該等經更新組件癥狀全部為零之情況中;將該相關組件碼字索引中之該無錯誤位元設定為1;及在判定該等經更新組件癥狀非全部為零之情況中,將該相關組件碼字索引中之該無錯誤位元設定為0。
  10. 如請求項1所述之系統,其中該TPC碼字修改器經組態以在該TPC緩衝器中更新該TPC碼字,其包含藉由:產生對一組件碼字之一或多個可能改變; 使該等可能改變與該TPC緩衝器中之一或多個寫入位址相關聯;判定是否提交該等可能改變;在判定提交該等可能改變之情況中,將該等可能改變應用至儲存於該TPC緩衝器中之該組件碼字;及在判定不提交該等可能改變之情況中,丟棄該等可能改變及相關聯之寫入位址。
  11. 一種藉由癥狀表來解碼渦輪乘積碼的方法,其包括:自一組件癥狀緩衝器獲得與一渦輪乘積碼(TPC)碼字相關聯之一組的一或多個組件癥狀;使用一解碼器來對該組的一或多個組件癥狀執行組件解碼;其中,更包含:判定在正處理之一組件碼字索引中一無錯誤位元是否等於0且一經修改位元是否等於1,其中,在判定該無錯誤位元等於0且該經修改位元等於1之情況中:對儲存於正處理之該組件碼字索引中之一或多個組件癥狀執行組件解碼;及判定解碼是否成功,其中,在判定解碼係成功之情況中:在一TPC緩衝器中更新該TPC碼字;在一第一組件癥狀緩衝器中更新正處理之該組件碼字索引;及在一第二組件癥狀緩衝器中更新與正處理之該組件碼字索引相關之一或多個組件碼字索引。
  12. 如請求項11所述之方法,其中藉由一半導體裝置執行該方法,該半導體裝置包含以下各項中之一或多者:一特殊應用積體電路(ASIC);或場可程式化閘陣列(FPGA)。
  13. 如請求項11所述之方法,其中該組件癥狀緩衝器包含以下各項中之一或多者:一列癥狀緩衝器;一行癥狀緩衝器;或一主癥狀緩衝器。
  14. 如請求項11所述之方法,其中該組的組件癥狀包含以下各項中之一或多者:一組的一或多個列癥狀;一組的一或多個行癥狀;或一組的一或多個主癥狀。
  15. 如請求項11所述之方法,其中該TPC碼字與以下各項中之一或多者相關聯:一博斯-喬赫裡-霍克文黑姆(BCH)碼;或一裡德-所羅門(RS)碼。
  16. 如請求項11所述之方法,更包括:使用該TPC碼字產生一初始組的一或多個組件癥狀;將該組件癥狀緩衝器中之該組的組件癥狀設定為該初始組的組件癥狀;至少部分地基於該初始組的組件癥狀來識別不需要校正之彼等組件碼字及需要校正之彼等組件碼字;至少部分地基於不需要校正之彼等組件碼字及需要校正之彼等組件碼字之該識別來設定一或多個無錯誤位元;及設定一或多個經修改位元以指示相關聯之記錄已經修改。
  17. 如請求項16所述之方法,更包括將該TPC碼字儲存於一TPC緩衝器中,其中將該TPC緩衝器中之該TPC碼字初始化為自儲存裝置複製之一初始TPC碼字。
  18. 如請求項11所述之方法,其中在該第一組件癥狀緩衝器中更新正處理之該組件碼字索引包含:基於對該TPC碼字之一或多個改變產生對儲存於正處理之該組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於正處理之該組件碼字索引中之該等組件癥狀;判定該等經更新組件癥狀是否全部為零;及在判定該等經更新組件癥狀全部為零之情況中,將正處理之該組件碼字索引中之該無錯誤位元設定為1。
  19. 如請求項11所述之方法,其中在該第二組件癥狀緩衝器中更新一或多個組件碼字索引,其包含:基於對該TPC碼字之一或多個改變產生對儲存於該相關組件碼字索引中之該等組件癥狀之一或多個改變;將該等改變提交至儲存於該相關組件碼字索引中之該等組件癥狀;將該相關組件碼字索引中之該經修改位元設定為1;判定該等經更新組件癥狀是否全部為零;在判定該等經更新組件癥狀全部為零之情況中;將該相關組件碼字索引中之該無錯誤位元設定為1;及在判定該等經更新組件癥狀並非全部為零之情況中,將該相關組件碼字索引中之該無錯誤位元設定為0。
  20. 如請求項11所述之方法,其中在該TPC緩衝器中更新該TPC碼字,其包含:產生對一組件碼字之一或多個可能改變; 使該等可能改變與該TPC緩衝器中之一或多個寫入位址相關聯;判定是否提交該等可能改變;在判定提交該等可能改變之情況中,將該等可能改變應用至儲存於該TPC緩衝器中之該組件碼字;及在判定不提交該等可能改變之情況中,丟棄該等可能改變及相關聯之寫入位址。
TW103114896A 2013-04-26 2014-04-24 藉由癥狀表來解碼渦輪乘積碼之系統及方法 TWI539758B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361816512P 2013-04-26 2013-04-26
US14/219,764 US9391641B2 (en) 2013-04-26 2014-03-19 Syndrome tables for decoding turbo-product codes

Publications (2)

Publication Number Publication Date
TW201511479A TW201511479A (zh) 2015-03-16
TWI539758B true TWI539758B (zh) 2016-06-21

Family

ID=51790379

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103114896A TWI539758B (zh) 2013-04-26 2014-04-24 藉由癥狀表來解碼渦輪乘積碼之系統及方法

Country Status (4)

Country Link
US (1) US9391641B2 (zh)
CN (1) CN105191146B (zh)
TW (1) TWI539758B (zh)
WO (1) WO2014174370A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9673840B2 (en) * 2014-12-08 2017-06-06 SK Hynix Inc. Turbo product codes for NAND flash
US9998148B2 (en) 2015-12-01 2018-06-12 SK Hynix Inc. Techniques for low complexity turbo product code decoding
US10187086B2 (en) 2017-03-15 2019-01-22 SK Hynix Inc. State-based decoding of product codes
US10998922B2 (en) * 2017-07-28 2021-05-04 Mitsubishi Electric Research Laboratories, Inc. Turbo product polar coding with hard decision cleaning
US10831596B2 (en) 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US10951239B2 (en) * 2018-02-20 2021-03-16 Micron Technology, Inc. Performing a decoding operation to simulate switching a bit of an identified set of bits of a data block
US10846175B2 (en) * 2018-04-10 2020-11-24 Micron Technology, Inc. High throughput bit correction of data inside a word buffer for a product code decoder
US10439648B1 (en) * 2018-04-10 2019-10-08 Micron Technology, Inc. Area efficient implementation of a product code error correcting code decoder
CN110896309B (zh) 2018-09-12 2022-11-15 中兴通讯股份有限公司 Turbo乘积码的译码方法、装置、译码器及计算机存储介质
US11770137B1 (en) * 2020-09-21 2023-09-26 Infinera Corporation Error floor performance improvement of generalized product codes
DE102021133678A1 (de) * 2021-01-20 2022-07-21 Infineon Technologies Ag Korrektur von bitfehlern

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2778289B1 (fr) * 1998-05-04 2000-06-09 Alsthom Cge Alcatel Decodage iteratif de codes produits
JP2003534680A (ja) 2000-04-04 2003-11-18 コムテック テレコミュニケーションズ コーポレイション 強化型ターボプロダクト符号復号器システム
WO2003030370A2 (en) 2001-10-04 2003-04-10 Comtech Aha Corporation Method of decoding a turbo product code utilizing a scalable and hardware efficient forward error correction decoder
AU2002320749A1 (en) * 2002-07-01 2004-01-19 Linkair Communications, Inc. Iterative decoding method and apparatus for product code based on adjoint formula
US20040019842A1 (en) 2002-07-24 2004-01-29 Cenk Argon Efficient decoding of product codes
CN1182657C (zh) * 2002-12-20 2004-12-29 清华大学 用于降低乘积码译码所需存储量和复杂度的方法
KR101058159B1 (ko) * 2003-07-09 2011-08-22 톰슨 라이센싱 리드-솔로몬 프로덕트 코드를 위한 에러 정정 방법
US7600177B2 (en) * 2005-02-08 2009-10-06 Lsi Corporation Delta syndrome based iterative Reed-Solomon product code decoder
US7725800B2 (en) 2005-08-05 2010-05-25 Hitachi Global Stroage Technologies Netherlands, B.V. Decoding techniques for correcting errors using soft information
SG166825A1 (en) 2005-11-07 2010-12-29 Agency Science Tech & Res Methods and devices for decoding and encoding data
CN101777926B (zh) * 2010-01-12 2014-04-16 浙江大学 一种Turbo乘积码的通用译码器及其方法

Also Published As

Publication number Publication date
US20140325320A1 (en) 2014-10-30
WO2014174370A2 (en) 2014-10-30
TW201511479A (zh) 2015-03-16
CN105191146A (zh) 2015-12-23
WO2014174370A3 (en) 2015-03-19
US9391641B2 (en) 2016-07-12
CN105191146B (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
TWI539758B (zh) 藉由癥狀表來解碼渦輪乘積碼之系統及方法
US9088300B1 (en) Cyclic redundancy check for out-of-order codewords
JP4988731B2 (ja) フラッシュエラー訂正
US11314587B2 (en) Detection and correction of data bit errors using error correction codes
JP3966993B2 (ja) 積符号の誤り訂正および並行検査
US7600177B2 (en) Delta syndrome based iterative Reed-Solomon product code decoder
US8806295B2 (en) Mis-correction and no-correction rates for error control
US9985658B2 (en) Decoding of product codes
US20150363263A1 (en) ECC Encoder Using Partial-Parity Feedback
US10635528B2 (en) Memory controller and method of controlling memory controller
JPH11249920A (ja) 符号語データを記憶するデータバッファを用いるeccシステムおよび誤りシンドロームを記憶するシンドロームバッファ
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
KR19990028201A (ko) 10 비트 리드-솔로몬 에러 정정 모듈을 위한 전용 alu구조
US20190273515A1 (en) Apparatuses and methods for interleaved bch codes
JP3645809B2 (ja) 光ディスク記憶装置の符号化/復号化システム
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
US10567007B2 (en) Device and method of processing a data word using checkbits
JP2007299393A (ja) 回転する記憶媒体の複数の層にデータを読み書きする方法、プログラム及びデータ記憶装置
TWI664636B (zh) 錯誤檢查和糾正解碼器
JP2004080762A (ja) クロスインターリーブリード−ソロモン符号訂正を行う方法及び装置
KR101304570B1 (ko) 패리티 체크 행렬 생성 방법, 이를 이용한 오류 정정 방법 및 장치, 오류 정정 장치용 디코더 그리고 오류 정정 장치를 포함하는 메모리 및 전자장치
JP2792670B2 (ja) 誤り訂正符号の復号方法
KR20230132697A (ko) 일반 연결 코드 코드워드를 디코딩하는 장치, 저장 시스템 및 그 제어 방법
CN117194095A (zh) 改变纠错配置
JP2005285205A (ja) 情報記録再生装置