TW201939902A - 用於多個字元線失敗的軟晶片消除恢復 - Google Patents

用於多個字元線失敗的軟晶片消除恢復 Download PDF

Info

Publication number
TW201939902A
TW201939902A TW107139574A TW107139574A TW201939902A TW 201939902 A TW201939902 A TW 201939902A TW 107139574 A TW107139574 A TW 107139574A TW 107139574 A TW107139574 A TW 107139574A TW 201939902 A TW201939902 A TW 201939902A
Authority
TW
Taiwan
Prior art keywords
decoding
code
word code
word
soft information
Prior art date
Application number
TW107139574A
Other languages
English (en)
Other versions
TWI797189B (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 TW201939902A publication Critical patent/TW201939902A/zh
Application granted granted Critical
Publication of TWI797189B publication Critical patent/TWI797189B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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/2906Coding, 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
    • 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/2906Coding, 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
    • H03M13/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • 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/2948Iterative decoding
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Medicines Containing Plant Substances (AREA)

Abstract

本發明涉及一種根據晶片消除方案的記憶體寫入和讀取的技術,其中晶片消除方案使多個損壞字元線能夠恢復。在實施例中,當從記憶體的超級塊讀取資料時,其中多個字元線的解碼失敗,電腦系統基於錯誤位元的數量來排程損壞字元線的解碼並基於所排程的解碼的收斂或發散來更新軟資訊。這種電腦系統顯著減少了與從記憶體讀取的資料相關聯的解碼失敗並且允許改進記憶體中的資料保持。

Description

用於多個字元線失敗的軟晶片消除恢復
各個實施例總體涉及一種記憶體技術,更特別地,涉及錯誤校正方法和晶片消除(chip kill)檢測方法。
資料完整性是任何資料儲存裝置和資料傳輸的重要特徵。強力的錯誤校正碼(error-correction code, ECC)被推薦用於包括NAND閃速記憶體裝置的各種類型的資料儲存裝置。ECC在資料傳輸程序中也經常使用。
錯誤校正碼(ECC)是指向資訊中添加冗餘資料或同位資料的代碼,這樣即使在傳輸程序或儲存程序中引入了大量錯誤時,資訊也可以由接收器恢復。一般來說,ECC可以校正錯誤直到達到所使用代碼的能力。低密度同位檢查碼(Low-density parity-check code, LDPC)是ECC的一個實施例。
在諸如NAND閃速記憶體裝置的資料儲存裝置中,資料可以被寫入至資料儲存裝置的字元線並且從資料儲存裝置的字元線讀取。字元線失敗在NAND中很常見。在現有系統中,有各種技術以處理這些失敗。通常,用諸如LDPC解碼器的解碼器來解碼資料位元。如果解碼失敗,則使用晶片消除。晶片消除是指一種防止記憶體失敗的ECC電腦記憶體技術。
在現有系統中,晶片消除涉及對超級塊中所有資料的XOR運算。然而,如果有兩個字元線失敗,則根據從通道獲得的硬資訊來恢復資料變得具有挑戰性。在這種場景下,可以從通道獲得軟資訊並且可以在損壞字元線的位置翻轉位元,其中軟資訊提供關於位元的強資訊。可以通過LDPC解碼器校正在較弱的軟資訊處發生的錯誤。然而,由於物理缺陷導致的、無法獲得通道資訊的兩個字元線的失敗不能使用現有的晶片消除方案來校正。簡單地說,解碼失敗並且被寫入到資料儲存裝置的資料可能無法恢復。
本申請要求於2017年11月21日提交的臨時申請號為62/589,461、名稱為“用於多個損壞的軟晶片消除(chip-kill)恢復”的美國臨時申請的優先權,該臨時申請被轉讓給本受讓人並且其全部內容通過引用明確併入本文。
本案描述了一種根據晶片消除方案的記憶體寫入和讀取的技術,其中晶片消除方案使多個損壞字元線能夠恢復。在實施例中,電腦系統在解碼反覆運算中解碼來自超級塊的字碼串。超級塊包括第一記憶體晶粒上的第一塊、第二記憶體晶粒上的第二塊以及第三記憶體晶粒上的第三塊。第一塊儲存字碼串的第一字碼。第二塊儲存字碼串的第二字碼。第三塊儲存字碼串的XOR同位檢查位元。電腦系統基於與第一字碼相關聯的第一錯誤位元數量和與第二字碼相關聯的第二錯誤位元數量,確定在解碼反覆運算中至少第一字碼和第二字碼解碼失敗。解碼反覆運算中的第一字碼的解碼基於與第一字碼相關聯的第一軟資訊。解碼反覆運算中的第二字碼的解碼基於與第二字碼相關聯的第二軟資訊。電腦系統基於第一錯誤位元數量和第二錯誤位元數量,在下一解碼反覆運算中,選擇在解碼第二字碼之前解碼第一字碼。電腦系統基於所選擇的第一字碼,產生與第一字碼相關聯的更新的第一軟資訊。通過基於第二軟資訊和XOR同位檢查位元更新第一軟資訊來產生更新的第一軟資訊。電腦系統在下一解碼反覆運算中,基於更新的第一軟資訊對第一字碼進行解碼。
本發明的實施例涉及改進電腦系統的記憶體讀取。在實施例中,資料被寫入到電腦系統的儲存裝置,諸如NAND閃速記憶體裝置。基於儲存在記憶體的字元線和位元線中的位元的解碼,從記憶體讀取資料。檢測到字元線和/或位元線的損壞並且基於晶片消除同位更新軟資訊,晶片消除同位用於對損壞字元線和/或位元線進行附加解碼。
例如,如果在晶片消除的同一條帶(stripe)上存在多個字元線失敗,則可以使用反覆運算解碼來恢復損壞字元線。特別地,從當前解碼反覆運算中檢測到損壞字元線。對於下一解碼反覆運算,基於來自當前解碼反覆運算的損壞字元線中的錯誤位元數量,產生用於解碼損壞字元線的排程表。該排程表設置損壞字元線應被解碼的順序或次序。例如,具有最小錯誤位元數量的損壞字元線被首先排程,然後是具有次小錯誤位元數量的另一損壞字元線被排程,依此類推。在下一解碼反覆運算中,根據解碼損壞字元線,確定其解碼是收斂還是發散。當損壞字元線中的錯誤位元數量已減少時發生解碼收斂。相反地,當損壞字元線中的錯誤位元數量已增加時發生解碼發散。如果發生解碼收斂,則從下一解碼反覆運算獲得的、關於損壞字元線的軟資訊與XOR同位資訊一起使用,以更新在下一解碼反覆運算中被排程為後續解碼的另一損壞字元線的軟資訊。相反地,如果發生解碼發散,則從下一解碼反覆運算中獲得的、關於損壞字元線的軟資訊被擦除,並且不用於在下一解碼反覆運算中解碼其他損壞字元線。遍及不同的損壞字元線,反覆運算地重複解碼用以達到一定次數的反覆運算或者直到所有字元線的解碼成功為止。
為了說明,考慮NAND裝置的實施例。在該實施例中,“K”個字元線屬於超級塊的相同晶片消除條帶。這些字元線儲存低密度同位檢查碼(LDPC字碼)。除了“L”個字元線之外,用LDPC解碼器成功解碼所有字元線。對於這些“L”個字元線LDPC解碼,使用LDPC解碼器更新軟資訊。與通道錯誤相比,“L1”個字碼在解碼後具有更少數量的錯誤。與通道錯誤相比,“L2”個字碼(其中“L2 = L-L1”)在LDPC解碼之後具有更大數量的錯誤。這可以從解碼之前和之後的未滿足的校驗節點數量檢測到。現在,使用晶片消除同位更新用於這些失敗的“L”個字碼的軟資訊更新。在更新軟資訊時,通道資訊用於那些“L2”個字碼,且LDPC輸出的軟資訊用於那些“L1”個字碼。以這種方式,在使用晶片消除同位的軟資訊更新期間,避免了來自LDPC解碼器的損壞的軟資訊。可以反覆運算地完成利用晶片消除同位的LDPC解碼和軟資訊更新。
本發明的實施例提供對記憶體技術的各種技術改進,包括從記憶體的資料讀取和在記憶體中的資料保持。特別是,當多個字元線失敗並且由於記憶體的物理缺陷且當不能獲得通道資訊時,現有系統不能從記憶體恢復資料。此處相比之下,產生軟資訊並基於損壞字元線的排程和晶片消除同位來更新軟資訊,使資料能夠恢復。另外,即使當現有系統恢復資料時(例如,基於軟資訊的可用性),通過使用排程和軟資訊更新,實施例提供顯著的性能增益,諸如超過一個數量級的代碼失敗率(code failure rate, CFR)改進。此外,通常為超級塊中的所有塊儲存晶片消除同位。因此,在現有系統中,超級塊的保持壽命等於塊的最短保持壽命,並且根據在特定塊的誤碼率(bit error rate, BER)的惡化來回收該超級塊就,儘管其他塊可能仍具有良好的BER性能。此處形成對比,因為資料仍可以被恢復,所以可能不需要這樣的回收。
為了清楚地解釋,結合儲存在字元線中的LDPC字碼描述了本發明的實施例。儘管如此,實施例類似地適用於其他類型的ECC字碼。特別是,ECC字碼的目標類型可以通過實施等效的ECC編碼器和解碼器來使用。也是為了清楚地解釋,結合損壞字元線描述了實施例。儘管如此,實施例類似地適用於損壞位元線。
通常,記憶體包括超級塊,該超級塊又包括多個塊,每個塊位於記憶體晶粒上。第一塊儲存第一字碼,第二塊儲存第二字碼,依此類推。最後的塊儲存XOR同位檢查位元(例如,晶片消除同位)。一旦完成第一解碼反覆運算,就確定至少第一字碼和第二字碼的解碼失敗。例如,這些字碼的每一個中的錯誤位元的數量(例如,在相應的被解碼的字碼中)可以高於解碼器的錯誤校正能力。先於第二、下一解碼反覆運算,確定應該基於與較低錯誤位元的數量相關聯的第一字碼,先於第二字碼在第二解碼反覆運算中針對第一字碼執行這兩個失敗字碼的解碼。基於用於第二解碼反覆運算的排程設置,更新關於第一字碼的軟資訊(其中該資訊可用作第一解碼反覆運算的輸出)。特別地,基於XOR同位檢查位元和關於第二字碼的軟資訊(也可用作第一解碼反覆運算的輸出)來更新該軟資訊。因此,在第二解碼反覆運算中,基於其更新的軟資訊對第一字碼進行解碼。此後,如果與該字碼相關聯的錯誤位元的數量(例如,在解碼的字碼中)在第二解碼反覆運算中相對於第一解碼反覆運算減少,則已發生解碼收斂。否則,已發生解碼發散。如果發生解碼收斂,則使用關於該第一字碼的軟資訊(可用作第二解碼反覆運算的輸出)以及XOR同位檢查位元來更新關於第二字碼的軟資訊(可用作第一解碼反覆運算的輸出)。在不同的失敗字碼上反覆運算地重複該排程和軟資訊更新用以多次反覆運算或直到所有字碼被成功解碼。一旦解碼反覆運算完成,就將被解碼的字碼作為來自記憶體的讀取資料輸出。
在一個實施例中,字碼和XOR同位檢查位元屬於超級塊的字元線的相同條帶。該字碼是LDPC字碼,並且解碼使用LDPC解碼器。對數似然比(log-likelihood ratio, LLR)用於軟資訊。LDPC字碼的錯誤位元的數量由與LDPC字碼相關聯的未滿足的校驗節點的數量指示。
圖1示出了根據本發明的某些實施例的錯誤校正系統100的實施例性高級方塊圖(high level block diagram)。在實施例中,結合資料儲存描述了LDPC碼。然而,本發明的實施例並不限於此。相反,實施例類似地適用於LDPC碼的其他通途,包括例如資料傳輸。
LDPC碼是由稀疏同位矩陣H定義的線性分組碼,由0和1組成。此處使用的術語“疏鬆陣列”是指每列及每行中非零值的數量遠小於其維度的矩陣。此處使用術語“列權重”是指同位矩陣H的具體列中的非零值的數量。此處使用的術語“行權重”是指同位矩陣H的具體行中的非零值的數量。通常,如果對應於LDPC碼的同位矩陣中的所有列的列權重相似,則該碼被稱為“規則”LDPC碼。另一方面,如果至少一個列權重與其他列權重不同,則LDPC碼被稱作“非規則”。通常,非規則的LDPC碼的錯誤校正能力比規則的LDPC碼的錯誤校正能力更好。
本發明還根據LDPC碼的構造方法描述了LDPC碼。可以是隨機電腦搜索構造或代數構造。隨機電腦搜索構造描述了一種具有由基於隨機電腦的程式設計的同位矩陣的LDPC碼。代數構造意味著同位矩陣已基於組合方法而構造。准迴圈LDPC(QC-LDPC)碼歸入後一種構造方法。QC-LDPC碼的一個優點是,它們在編碼程式方面相對容易實施。QC-LDPC碼的主要特徵是同位矩陣由迴圈子矩陣組成,迴圈子矩陣可以是基於單位矩陣或者是基於較小的隨機矩陣。還可以使用置換向量來創建迴圈子矩陣。
如圖所示,LDPC編碼器110接收包括期望被儲存在儲存系統120中的資料的資訊位元。經LDPC編碼的資料由LDPC編碼器110輸出並被寫入至儲存系統120。
在各種實施例中,儲存系統120可以包括多種儲存類型或介質,諸如(例如,磁性的)磁碟機記憶體,快閃記憶體,等等。在一些實施例中,這些技術應用在收發器中而不是被寫入到儲存系統或從儲存系統讀取,經過有線和/或無線通道傳輸和接收資料。在這種情況下,在字碼傳輸期間,錯誤可能會被引入至接收的字碼中。
當(例如,由儲存資料的應用程式或使用者)請求或以其他方式期望所儲存的資料時,檢測器130從儲存系統120接收資料。接收到的資料可能包括一些雜訊或錯誤。檢測器130對接收到的資料執行檢測並輸出判定和/或可靠性資訊。例如,軟輸出檢測器針對每個被檢測位元輸出可靠性資訊和判定。另一方面,硬輸出檢測器輸出針對每個位元的判定,而不提供相應的可靠性資訊。作為實施例,硬輸出檢測器可以輸出特定位元是“1”或“0”的判定,而不指示硬輸出檢測器對該判定的確信或確定程度。相反,軟輸出檢測器輸出判定和與判定相關聯的可靠性資訊。通常,可靠性值表示探測器對於給定判定的確定程度。在一個實施例中,軟輸出檢測器輸出對數似然比(LLR),其中正負號(sign)指示判定(例如,正值對應於判定“1”且負值對應於判定“0”),並且量值指示檢測器對該判定的確信或確定程度(例如,較大的量值指示較高的可靠性或確定性)。
判定和/或可靠性資訊被傳遞給LDPC解碼器140,LDPC解碼器140使用判定和可靠性資訊執行LDPC解碼。軟輸入解碼器利用判定和可靠性資訊二者以對字碼進行解碼。硬解碼器僅利用解碼器中的判定值以對字碼進行解碼。由LDPC解碼器140產生的解碼位被傳遞給適當的實體(例如,請求資訊位元的使用者或應用程式)。通過恰當的編碼和解碼,資訊位元與解碼位元匹配。
在各個實施例中,所示系統可以使用多種技術來實施,包括應用型專用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)和/或通用處理器(例如,高級RISC機器(ARM)內核)。
LDPC碼通常用二分圖表示。一組節點、變數或位元節點對應於字碼的元素,且另一組節點,例如校驗節點,對應於由字碼滿足的一組同位約束。通常,邊緣連接是隨機選擇的。如果在圖中避免了編解碼資訊單元(short length)的迴圈,則LDPC碼的錯誤校正能力被改善。在(r, c)規則碼中,n個變數節點中的每一個(V1, V2, ……, Vn)均與r校驗節點連接,並且m個校驗節點中的每一個(C1, C2, ……, Cm)均與c位節點連接。在非規則LDPC碼中,校驗節點度並不一致。類似地,變數節點度也不一致。在QC-LDPC碼中,同位矩陣H被構成為p×p矩陣的塊,使得塊中的位只參與塊中的一個校驗方程,並且塊中的每個校驗方程式只涉及來自塊的一個位元。在QC-LDPC碼中,字碼通過迴圈移位p而得到另一個字碼。這裡p是方矩陣的大小,該方矩陣是零矩陣或者迴圈矩陣。這是迴圈碼的概況,其中字碼通過迴圈移位1而得到另一個字碼。p×p矩陣的塊可以是大小為p×p的零矩陣或迴圈移位元的單位矩陣。
通常使用消息傳遞演算法以對LDPC碼進行解碼。在本領域中存在消息傳遞演算法的幾種變型,諸如最小和 (min-sum, MS)演算法、和積演算法(sum-product algorithm, SPA)等。消息傳遞使用變數節點和校驗節點的網路。變數節點與校驗節點之間的連接由校驗矩陣的值描述並與之相對應。
在實施例中,可以執行硬判定消息傳遞演算法。在第一步驟,每個變數節點向連接到它的一個或多個校驗節點發送消息。在這種情況下,消息是每個變數節點都認為是其正確值的值。
在第二步驟,每個校驗節點都計算回應,以通過使用之前從變數節點接收到的資訊將回應發送到連接到校驗節點的變數節點。這個步驟可以稱為校驗節點更新(CNU)。回應訊息對應於一個值,其中校驗節點基於從連接到該校驗節點的其他變數節點接收的資訊認為變數節點應該具有該值。這個回應是使用同位方程計算的,該同位方程使得連接到特定校驗節點的所有變數節點的值的總和為0(模2)。
此時,如果滿足了所有校驗節點的所有方程,則解碼演算法聲明正確的字碼已被找到並且解碼演算法終止。如果沒有找到正確的字碼,則使用變數節點從校驗節點接收到的消息,以按多數決定原則來判定在變數節點的位置上的位元應當為0還是1,反覆運算繼續進行來引數節點的另一更新。然後,變數節點將此硬判定消息發送給連接到它們的校驗節點。反覆運算繼續進行直到找到正確的字碼,根據字碼的(例如,經解碼字碼)校驗子執行一定數量的反覆運算,或者在沒有找到正確字碼的情況下執行最大數量的反覆運算。應當注意的是,軟判定解碼器類似地工作,然而,在校驗節點和變數節點之中傳遞的每條消息也都包括了每一位元的可靠性。
在另一實施例中,可以執行軟消息傳遞演算法。在該實施例中,L(qij)表示由變數節點vi向校驗節點cj發送的消息;L(rji)表示由校驗節點cj向變數節點vi發送的消息;且L(ci)表示針對每個變數vi的初始LLR值。針對每個L(qij)的變數節點處理可以通過以下步驟完成:
(1)從記憶體中讀取L(ci)和L(rji)。
(2)計算L(Qi-sum)=

(3)計算每個L(Qi-sum)–L(rij)。
(4)輸出L(Qi-sum)並寫回到記憶體。
(5)如果這不是記憶體的最後一列,則進行步驟1並且將i增加1。
(6)計算同位總和(例如,校驗子),如果它們都等於零、反覆運算次數達到閾值並且同位總和大於另一閾值、或者反覆運算次數等於最大限值值,則停止;否則,執行校驗節點處理。
針對每個L(rji )的校驗節點處理可以如下執行:
(1)從記憶體中讀取一行qij。
(2)如下計算L(Rj-sum):

(3)計算校驗節點的各個


(4)將L(rji)寫回到記憶體。
(5)如果這不是記憶體的最後一行,則進行第一步驟並且將j增加1。
圖2示出了根據本發明的某些實施例的包括主機210和儲存裝置220的電腦系統的實施例。主機210執行I/O操作212,I/O操作212包括將資料寫入至儲存裝置220以及從儲存裝置220讀取資料。在實施例中,寫入資料包括用一個或多個LDPC編碼器(圖2中未示出)對資料進行編碼以產生儲存在儲存裝置220中的LDPC字碼。讀取資料包括用一個或多個LDPC解碼器(圖2中未示出)對LDPC字碼進行解碼以從儲存裝置220輸出經解碼的資料。編碼和解碼(例如,LDPC編碼器和LDPC解碼器)是ECC系統的一部分,ECC系統可以被實施在主機210和儲存裝置220之間。
在實施例中,儲存裝置220包括一定數量的記憶體晶粒222(該數量在圖2中示為“L”)。每個記憶體晶粒222又包括一定數量的塊224(該數量在圖2中示為“M”),每個塊又包含一定數量的字元線226(該數量在圖2中示為“i”)。形成超級塊228並且每個超級塊包含來自記憶體來自每個晶粒222的塊224。
如圖所示,超級塊“0”包括跨越不同晶粒222的塊“0”。晶粒“0”的、屬於超級塊“0”的塊“0”包括字元線“0”到“i-1”。因此,超級塊 “0”包含“N”個字元線,如字元線“0”至字元線“N-1”所示。
每個字元線被配置為儲存一定數量的資料位元,諸如16千位元組的資料。在每個超級塊中,字元線“0”至字元線“N-2”儲存與由主機210寫入的資料相對應的LDPC字碼(例如,資訊位元)。根據本發明的實施例,字元線“N-1”(例如,最後字元線)儲存晶片消除同位檢查位元。雖然示出了最後字元線,但是晶片消除同位檢查位元可以替代地儲存在超級塊的任何其他字元線中。通常,超級塊包括字元線和附加字元線(例如,字元線“0”至“N-2”和字元線“N-1”)。字元線儲存與資訊位元相對應的LDPC字碼。附加字元線儲存晶片消除同位檢查位元。
圖3示出了根據本發明的某些實施例的將資料寫入到儲存裝置的超級塊310(諸如,寫入到圖2的儲存裝置220的超級塊“0”)的實施例。圖3的左側示出了超級塊310。圖3的右側示出了用於產生晶片消除同位的程序350。
如圖所示,超級塊310包括儲存基於資訊位元而產生的LDPC字碼的多個字元線。這些字元線在圖3中被標記為320(0)至320(N-2)。每個LDPC字碼包括與資訊位元的部分相對應的“D”個資料位元322以及保護“D”個資料位元的“P”個同位元檢查位元324。“D”和“P”的每一個都是大於或等於1的正整數。因此,每個LDPC字碼具有“D+P”的長度,並可以由LDPC編碼器產生。
超級塊310還包括儲存“D+P”XOR同位檢查位元332的附加字元線330(示為字元線“N-1”)。在實施例中,XOR同位檢查位元332對應於根據程序350產生的晶片消除同位。
為了產生XOR同位檢查位元332,程序350包括XOR運算。在實施例中,一個或多個XOR運算352被應用於超級塊310的字元線的資料部分和同位元部分(例如,儲存在字元線320(0)至320(N-2)中的“D”個資料位元被進行XOR運算並且儲存在字元線320(0)至320(N-2)中的“P”個同位元檢查位元也被XOR運算)。這得到“D+P”個XOR同位檢查位元354,然後將其作為“D+P”個XOR同位檢查位元332儲存在最後字元線320(N-1)中。
在實施例中,基於條帶執行來自字元線320(0)至320(N-2)的資料位元的編碼和解碼。橫跨條帶的分組字元線來計算XOR同位檢查位元332。對於解碼,如果同一條帶上的多個字元線失敗,則可以執行基於排程、軟資訊更新和XOR同位檢查位元332的反覆運算解碼技術,如在下面的圖式中進一步示出的。
圖4示出了根據本發明的某些實施例的從超級塊310讀取資料的實施例,其中多個字元線的解碼已經失敗。讀取資料包括由LDPC解碼器410解碼資料,其中LDPC解碼器410依賴於排程、軟資訊更新以及XOR同位檢查位元332。
在實施例中,LDPC解碼器410對儲存在超級塊310的字元線320(0)至320(N-2)中的LDPC字碼進行解碼。該LDPC解碼器410的錯誤校正能力與這些字碼的碼率“D/(D+P)”相關聯。如果檢測到多個解碼失敗412,則使用排程與軟資訊更新420以及XOR同位檢查位元332來恢復失敗。否則,LDPC解碼器410的經解碼的位414從超級塊310輸出。
例如,當字元線中(例如,儲存在字元線中的LDPC字碼的經解碼位元中)的錯誤位元的數量大於LDPC解碼器410的錯誤校正能力時,檢測到解碼失敗。該字元線可以被聲明為損壞字元線。錯誤位元的數量可以從LDPC解碼器410輸出,並且錯誤位元的數量對應於例如未滿足的校驗節點的數量。
如果根據完成解碼反覆運算(為了清楚起見,這裡稱為“第一解碼反覆運算”)檢測到多個損壞字元線,則LDPC解碼器410準備並進行下一解碼反覆運算(為了清楚起見,這裡稱為“第二解碼反覆運算”),除非達到了最大數量的解碼反覆運算。一旦完成第一反覆運算,存在每個失敗字碼的軟資訊和錯誤位元數量。例如,第一軟資訊和第二軟資訊分別可用於第一失敗字碼和第二失敗字碼。另外,第一錯誤位元數量和第二錯誤位元數量分別可用於第一失敗字碼和第二失敗字碼。
LDPC解碼器410基於錯誤位元的數量來排程第二解碼反覆運算中的失敗字碼的解碼。例如,失敗字碼按錯誤位元的昇冪排序,其中第一錯誤位元數小於第二錯誤位元數,在第二解碼中排程第一字碼在第二失敗字碼之前進行解碼。
另外,LDPC解碼器410基於排程和XOR同位檢查位元332來更新可從第一解碼反覆運算獲得的軟資訊。例如,基於排程,在更新關於的第二失敗字碼的第二軟資訊之前,更新關於第一失敗字碼的第一軟資訊。為了更新第一軟資訊,第二軟資訊(如從第一解碼反覆運算可獲得的)與XOR同位檢查位元332一起使用。對於該更新可利用各種技術。在一項實施例技術中,第一軟資訊和第二軟資訊中的每一個都包括LLR。XOR同位檢查位元332還具有軟資訊(例如,基於這些位的值設置的LLR)。在該實施例中,第二失敗字碼的LLR和XOR同位檢查位元的LLR,連同第一失敗字碼的LLR被加權並組合(例如,求和)。在另一項實施例技術中,第一失敗字碼的LLR被擦除(例如,設置為零),並且被第二失敗字碼和XOR同位檢查位元的加權和組合的LLR替換。在又一項實施例技術中,使用關於XOR同位檢查位元332的硬資訊(例如,位元值)來代替它們的軟資訊。在該實施例中,第二失敗字碼的LLR(以及可選地,如果沒有擦除的話,則使用第一失敗字碼的LLR)被映射到一組二進位值。XOR同位檢查位元也被映射到一組二進位值。使用這兩組來從查閱資料表中檢索對第一軟資訊的更新,其中該查閱資料表可以儲存預定義的更新及其與不同的值組相關聯。權重和/或表可以基於解碼性能的實驗室類比和/或實驗室測量來憑經驗定義。
無論實際使用何種更新技術,當在第二解碼反覆運算中解碼第一失敗字碼時,更新的第一軟資訊變為向LDPC解碼器的輸入。根據對第一失敗字碼的該附加解碼,LDPC解碼器410確定第一錯誤位元的數量是增加還是減少以檢測解碼收斂或解碼發散的發生。
如果檢測到解碼收斂,則LDPC解碼器410根據排程繼續在第二解碼反覆運算中解碼第二失敗字碼。這裡,解碼類似於對第一失敗字碼執行的解碼,除了基於XOR同位檢查位元332和關於第一失敗字碼的軟資訊更了從第一次反覆運算解碼獲得的、用於第二失敗字碼的第二軟資訊。關於第一失敗字碼的該軟資訊是在第二解碼反覆運算中、根據對第一失敗字碼的解碼的LDPC解碼器410的輸出。
如果檢測到解碼發散,則LDPC解碼器410還根據排程在第二解碼反覆運算中繼續解碼第二失敗字碼。然而,該解碼不使用關於來自第二解碼反覆運算的第一失敗字碼的軟資訊。相反,LDPC解碼器410由於解碼發散,擦除該軟資訊並且恢復到使用從第一解碼反覆運算獲得的、關於第一失敗字碼的第一軟資訊。因此,基於XOR同位檢查位元332和也從第一解碼反覆運算獲得的、關於第一失敗字碼的第一軟資訊,更新從第一次反覆運算解碼獲得的、第二失敗字碼的第二軟資訊。
圖5示出了根據本發明的某些實施例的用於從儲存裝置的超級塊讀取資料的實施例流程500。電腦系統被描述為執行實施例流程500的具體操作。該電腦系統包括儲存裝置和LDPC系統,但是可以類似地使用任何其他ECC系統。LDPC系統可以具有諸如LDPC解碼器的具體硬體設定以執行實施例流程500中示出的操作。可替代地或附加地,LDPC系統可以包括配置有具體指令的通用硬體。在實施例中,電腦系統包括一個或多個處理器以及一個或多個記憶體,其中該一個或多個記憶體包括資料儲存裝置。記憶體儲存電腦可讀指令以實現LDPC系統特有的功能性。當由電腦系統的處理器運行時,指令導致操作的執行。儲存在記憶體中的指令結合底層處理器表示用於執行操作的器件。儘管以特定順序示出了操作,但對於本領域技術人員來說將顯而易見的是,操作的其他佈置是可行的並且可以跳過一些操作。
如圖所示,實施例流程500從操作502開始,在操作502中電腦系統利用LDPC解碼器解碼超級塊中的所有字元線。例如,儲存在超級塊的條帶中的LDPC字碼被輸入到LDPC解碼器,並且該解碼器的輸出是經解碼的LDPC字碼。
在操作504中,電腦系統確定任何字碼的解碼是否失敗。在實施例中,當經解碼字碼中的錯誤位元數量大於LDPC解碼器的錯誤校正能力時,發生解碼失敗。電腦系統跟蹤失敗的字碼並接著進行操作508以進一步解碼它們並恢復資料位元。對於被成功解碼的字碼,電腦系統接著進行操作506,聲明這些字碼的解碼成功並輸出經解碼的資料位元。
在操作508中,電腦系統確定每個失敗字碼是否具有解碼收斂。在實施例中,對於失敗字碼,電腦系統跟蹤相應的經解碼字碼中的錯誤位元數量(如由LDPC解碼器使用的未滿足的校驗節點所指示的)。在不同的解碼反覆運算中跟蹤該數量(例如,在解碼反覆運算之間數量是增加還是減少)。對於初始解碼反覆運算,電腦系統可以預設確定存在解碼收斂。對於隨後的解碼反覆運算,如果失敗字碼的相關聯錯誤位元數量減少,則電腦系統確定存在失敗字碼的解碼收斂;否則,確定解碼發散。
根據檢測到失敗字碼的解碼發散,電腦系統接著進行操作510,由此電腦系統丟棄LDPC解碼器針對該失敗字碼的輸出並改為使用通道資訊。在實施例中,LDPC解碼器的輸出包括相應的經解碼字碼的軟資訊,諸如LLR。該軟資訊可以被擦除。
根據檢測到失敗字碼的解碼收斂,電腦系統接著進行操作512,由此電腦系統組合針對所有字元線的軟資訊,其中將通道資訊用於具有解碼發散的字元線。在實施例中,將與失敗字碼相關聯的軟資訊(例如,作為從LDPC解碼器的輸出)與其他失敗字碼相關聯的其他軟資訊進行組合,其中其他失敗字碼也具有解碼收斂。組合的軟資訊可用於具有解碼發散的解碼失敗字碼。
在操作514中,電腦系統基於晶片消除同位來更新所有失敗字碼的軟資訊。在實施例中,對於與第一軟資訊相關聯的失敗的字碼,使用組合的軟資訊和關於XOR同位檢查位元的資訊來更新該第一軟資訊。不同類型的更新是可行的,包括使用最小和(MS)解碼器或任何其他優化的軟解碼器(例如,和積演算法(SPA)),如在下面的圖式中進一步示出的。
在操作516中,電腦系統使用LDPC解碼器對所有失敗字碼進行解碼。在實施例中,LDPC解碼器執行附加解碼反覆運算,其中來自操作514的每個失敗字碼的更新的軟資訊被輸入至LDPC解碼器。
在操作518中,電腦系統確定失敗字碼的任何一個的解碼是否成功。如本文上面結合操作504所解釋的,根據錯誤位元的數量低於LDPC解碼器的錯誤校正能力,確定解碼成功。如果解碼成功,則電腦系統接著進行操作506;否則,電腦系統接著進行操作508。可以重複反覆運算處理(例如,操作508至518),直到所有字碼被成功解碼或者進行了預定數量的解碼反覆運算。
圖6示出了根據本發明的某些實施例的用於恢復來自超級塊的多個損壞字元線的實施例流程600。實施例流程600的操作可以被實施為圖5的流程500的子操作。為了清楚地解釋,使用儲存在超級塊的第一字元線中的第一字碼和儲存在第二字元線中的第二字碼來示出實施例流程600,其中這兩個字碼屬於相同的條帶並且是LDPC字碼。然而,超級塊可以包含儲存這種LDPC字碼的更多數量的字元線。
實施例流程600從操作602開始,在操作602中電腦系統在解碼反覆運算中解碼來自記憶體的超級塊的字碼。超級塊包括第一記憶體晶粒的第一塊,第二記憶體晶粒的第二塊以及第三記憶體晶粒的第三塊。第一塊儲存字碼的第一字碼。第二塊儲存字碼的第二字碼。第三塊儲存用於字碼的XOR同位檢查位元。
在操作604中,電腦系統基於與第一字碼相關聯的第一錯誤位元數量以及與第二字碼相關聯的第二錯誤位元數量,確定在解碼反覆運算中至少第一字碼和第二字碼的解碼失敗。例如,這些錯誤數量中的每一個都大於LDPC解碼器的錯誤校正能力。解碼反覆運算中的第一字碼的解碼基於與第一字碼相關聯的第一軟資訊。解碼反覆運算中的第二字碼的解碼基於與第二字碼相關聯的第二軟資訊。LDPC解碼器從解碼反覆運算輸出第一和第二軟資訊,並且該資訊包括相應的經解碼字碼的LLR。第一和第二字碼可以被聲明為失敗字碼。
在操作606中,電腦系統基於第一錯誤位元數量和第二錯誤位元數量,在下一解碼反覆運算中選擇在解碼第二字碼之前解碼第一字碼。在實施例中,該操作可以包括多個子操作。在子操作606A中,電腦系統基於相應的錯誤數量對失敗字碼進行排序。例如,電腦系統基於來自解碼反覆運算的第一錯誤位元數量和第二錯誤位元數量,對第一字碼和第二字碼進行排序。特別地,電腦系統比較第一和第二錯誤位元數量,並且在第一錯誤數量小於第二錯誤數量的情況下,第一字碼的排序高於第二字碼,這指示在下一解碼反覆運算中應該在第二字碼之前解碼第一字碼。在子操作606B中,在下一解碼反覆運算中,電腦系統基於排序排程對失敗字碼的解碼。例如,在下一解碼反覆運算中,電腦系統基於排序排程對第一字碼和第二字碼的解碼,其中基於第一字碼排序更高,第一字碼被排程以在第二字碼之前解碼。如結合圖7進一步示出的,排程可以選擇以消息傳遞演算法來處理變數節點的順序,其中這些變數節點對應於失敗字碼。
在操作608中,電腦系統基於被選擇的第一字碼產生與第一字碼相關聯的更新的第一軟資訊。在實施例中,通過基於第二軟資訊和XOR同位檢查位元來更新第一軟資訊來產生更新的第一軟資訊。如結合圖4所描述的,不同的更新技術是可行的,包括擦除現有的第一軟資訊(例如,可用作來自解碼反覆運算的LDPC解碼器的輸出)的技術,不擦除現有第一軟資訊的技術,將第二軟資訊與關於XOR同位檢查位元的軟資訊組合的技術,以及依賴於表查找和關於XOR位元的硬資訊(例如,位元到一組二進位值的映射)的技術。如結合圖7進一步示出的,消息傳遞演算法可用來更新失敗字碼的軟資訊,其中這些變數節點對應於失敗字碼。
在操作610中,在下一解碼反覆運算中,電腦系統基於更新的第一軟資訊解碼第一字碼。例如,更新的第一軟資訊是向LDPC解碼器的輸出。LDPC解碼器的對應輸出是對應於第一字碼的經解碼字碼。
在操作612中,電腦系統確定下一解碼反覆運算中的第一字碼的解碼是對應於解碼收斂還是解碼發散。在實施例中,電腦系統跟蹤與第一字碼相對應的經解碼字碼中的第一錯誤位元數量。電腦系統還確定該數量在該解碼反覆運算和下一解碼反覆運算之間如何變化。如果數量減少,則確定解碼收斂;否則,確定解碼發散。
在操作614中,在下一解碼反覆運算中,電腦系統根據確定為解碼收斂還是解碼發散來解碼第二字碼。如果確定了解碼收斂,則電腦系統訪問與第一字碼相關聯的、根據在下一解碼反覆運算中的解碼而獲得的軟資訊(例如,作為在下一解碼反覆運算中從LDPC解碼器的輸出)。電腦系統還通過基於與第一字碼相關聯的軟資訊和XOR同位檢查位元更新第二軟資訊,來產生與第二字碼相關聯的更新的第二軟資訊。電腦系統還在下一解碼反覆運算中基於更新的第二軟資訊對第二字碼進行解碼。
如果確定了解碼發散,則電腦系統通過基於XOR同位檢查位元和不同於於來自下一解碼反覆運算的與第一字碼相關聯的軟資訊更新第二軟資訊,來產生與第二字碼相關聯的更新的第二軟資訊。例如,電腦系統擦除與第一字碼相關聯的、根據下一解碼反覆運算中解碼第一字碼而獲得的軟資訊(例如,作為在下一解碼反覆運算中從LDPC解碼器的輸出)。電腦系統還在下一解碼反覆運算中基於更新的第二軟資訊對第二字碼進行解碼。
在操作616中,電腦系統確定在下一解碼反覆運算中是否成功解碼了失敗字碼。在實施例中,電腦系統跟蹤成功解碼的字碼(其為先前失敗)並在操作618輸出經解碼的位元。對於根據下一解碼反覆運算的完成仍然失敗的先前失敗的字碼,電腦系統迴圈回到操作606以開始另一解碼反覆運算,除非達到了最大數量的解碼反覆運算(在這種情況下,這些字碼的解碼仍然不成功)。
圖7示出了根據本發明的某些實施例的用於解碼失敗字碼的消息傳遞演算法的實施例應用,其中該應用包括排程解碼。如圖所示,可以使用的校驗節點更新(check node update, CNU),校驗節點更新使用諸如最小和(MS)或SPA演算法的消息傳遞演算法。每個失敗字碼(示為失敗字碼720(1),720(2)至720(T))對應於連接的變數節點。XOR同位檢查位元730也對應於變數節點。這些變數節點連接到校驗節點710。
為了利用解碼器對第一失敗字碼720(1)進行解碼,將消息更新740從校驗節點710傳遞到第一解碼器。基於消息傳遞演算法產生該消息更新740。具體地,從與剩餘的失敗字碼720(2)至720(T)和XOR同位檢查位元730相對應的剩餘變數節點的每個向校驗節點710提供消息。每個消息都包括關於相應變數節點的軟資訊或硬資訊。這樣,消息722(2)包括關於第二失敗字碼720(2)的軟資訊或硬資訊。類似地,消息722(T)包括關於最後失敗字碼720(T)的軟資訊或硬資訊。消息732包括關於XOR同位檢查位元730的軟資訊或硬資訊。消息傳遞演算法用於基於消息722(2)至722(T)和消息732而產生消息更新740。
當解碼第一失敗字碼720(1)時,第一解碼器使用消息更新740。另外,可以擦除關於第一字碼720(1)的現有軟或硬資訊。可選地,可以現有消息和消息更新740各自可被加權並且結合第一失敗字碼720(1)的解碼使用。
在多次解碼反覆運算中反覆運算地執行這種類型的消息傳遞和解碼。在新的解碼反覆運算開始時,來自先前解碼反覆運算的關於每個失敗字碼720(1)-720(T)的軟資訊可用到解碼器。此外,來自先前解碼反覆運算的每個相應的經解碼字碼中的錯誤位元的數量也可用到解碼器。解碼器比較錯誤位元的數量並在新的解碼反覆運算中排程失敗字碼720(1)-720(T)的解碼。如圖所示,第一失敗字碼720(1)與最小的錯誤位元數量相關聯,因此,被排程為在新的解碼反覆運算中首先被解碼。相比之下,最後失敗字碼720(T)具有次小的錯誤位元數量,因此被排程為在新的解碼反覆運算中被第二個解碼。第二失敗字碼720(2)具有最大的錯誤位元數量,因此被排程為在新的解碼反覆運算中被最後解碼。
這種類型的排程通過依賴於解碼收斂和發散而在新的解碼反覆運算中智慧地更新失敗字碼720(1)-720(T)的軟資訊來影響解碼。例如,根據在下一解碼反覆運算中解碼第一失敗字碼720(1),解碼器根據相關聯的錯誤位元數量相對於先前的解碼反覆運算是減少還是增加,來確定其解碼是收斂還是發散。僅當針對第一失敗字碼720(1)發生解碼收斂時,解碼器使用關於該字碼720(1)的、從新解碼反覆運算獲得的軟資訊,來更新隨後將在新解碼反覆運算中被解碼的剩餘失敗字碼的軟資訊。換句話說,基於第一失敗字碼720(1)的、從新解碼反覆運算中獲得的軟資訊,來更新來自先前解碼反覆運算的、用於最後失敗字碼720(T)(其在新解碼反覆運算中接下來要被解碼)的軟資訊。類似地,當解碼第二失敗字碼(其在新的解碼反覆運算中被最後解碼)時,利用其他失敗字碼的附加軟資訊來更新從先前解碼反覆運算獲得的軟資訊,其中該附加軟資訊包括從新解碼反覆運算獲得的、在新解碼反覆運算中具有解碼收斂的失敗字碼的軟資訊。
圖8示出了根據本發明的某些實施例的可能被使用的系統的一種可能的實施方式。圖8僅僅是對本發明的實施例的說明,並不限制如申請專利範圍中所述的本發明的範圍。在一個實施例中,該系統是電腦系統800,其通常包括顯示幕810,電腦820,使用者輸出裝置830,使用者輸入裝置840,通信介面850等。
如圖8所示,電腦820可以包括處理器860,其經由匯流排子系統890與多個週邊裝置通信。這些週邊裝置可以包括使用者輸出裝置830,使用者輸入裝置840,通信介面850和儲存子系統,諸如隨機存取記憶體(RAM)870和磁碟機880。
使用者輸入裝置830包括用於向電腦系統820輸入資訊的所有可能類型的裝置和機制。這些可以包括鍵盤,小鍵盤,結合到顯示器中的觸控式螢幕,諸如語音辨識系統的音訊輸入裝置,麥克風和其他類型的輸入裝置。在各種實施例中,使用者輸入裝置830通常被實現為電腦滑鼠,軌跡球,觸控板,操縱杆,無線遙控器,繪圖板,語音命令系統,眼動追蹤系統等。使用者輸入裝置830通常允許使用者通過諸如點擊按鈕等的命令選擇出現在顯示幕810上的物件、圖式、文本等。
使用者輸出裝置840包括用於從電腦820輸出資訊的所有可能類型的裝置和機制。這些可以包括顯示器(例如,顯示幕810),諸如音訊輸出裝置的非可視顯示器等。
通信介面850提供到其他通信網路和裝置812的介面。通信介面850可以用作用於從其他系統接收資料和向其他系統傳輸資料的介面。通信介面850的實施例通常包括乙太網卡,資料機(電話、衛星、電纜、ISDN),(非同步)數位用戶線路(DSL)單元,火線介面,USB介面等。例如,通信介面950可以聯接到電腦網路,到火線匯流排等。在其他實施例中,通信介面850可以物理地集成在電腦820的主機板上,並且可以是軟體程式,諸如軟DSL等。
在各種實施例中,電腦系統800還可以包括能夠通過諸如HTTP、TCP / IP、RTP / RTSP協定等的網路進行通信的軟體。在本發明的可選實施例中,還可以使用其他通信軟體和傳輸協定,例如IPX、UDP等。在一些實施例中,電腦820包括來自Intel的一個或多個Xeon微處理器作為處理器860。此外,在一個實施例中,電腦820包括基於UNIX的作業系統。
RAM 870和磁碟機880是被配置為儲存諸如本發明的實施例的資料的有形介質的實施例,包括可運行電腦代碼,人類可讀代碼等。其他類型的有形介質包括軟碟,可移動硬碟,諸如CD-ROM、DVD和條碼的光儲存介質,諸如閃速記憶體的半導體記憶體,非暫時性唯讀記憶體(ROMS),帶備份電池的揮發性記憶體記憶體,網路化儲存裝置等。RAM 870和磁碟機880可以被配置為儲存提供本發明的功能性的基本程式設計和資料構造。
提供本發明的功能性的軟體代碼模組和指令可以儲存在RAM 870和磁碟機880中。這些軟體模組可以由處理器860運行。RAM 870和磁碟機880還可以提供用於儲存根據本發明使用的資料的儲存庫。
RAM 870和磁碟機880可以包括多個記憶體,包括用於在程式運行期間儲存指令和資料的主隨機存取記憶體(RAM)和儲存固定的非暫時性指令的唯讀記憶體(ROM)。RAM 870和磁碟機880可以包括檔儲存子系統,其為程式和資料檔案提供持久(非揮發性)儲存。RAM 870和磁碟機880還可以包括卸除式存放裝置系統,諸如可移動閃速記憶體。
匯流排子系統890提供用於使電腦820的各種元件和子系統按預期彼此通信的機制。儘管匯流排子系統890被示意性地示為單個匯流排,但匯流排子系統的替代實施例可以利用多個匯流排。
圖8是能夠實現本發明的電腦系統的代表。對於本領域普通技術人員來說顯而易見的是,許多其他硬體和軟體配置適合用於本發明。例如,電腦可以是臺式,可擕式,機架式或平板式配置。另外,電腦可以是一系列網路化電腦。此外,考慮使用其他微處理器,諸如Pentium™或Itanium™微處理器;來自超微半導體公司的Opteron™或AthlonXP™微處理器;等等。此外,考慮其他類型的作業系統,諸如來自微軟公司的Windows®、WindowsXP®、WindowsNT®等,來自太陽微系統公司的Solaris,LINUX,UNIX等。在其他實施例中,上文描述的技術可以在晶片或輔助處理板上實施。
可以以軟體或硬體中的邏輯形式或兩者的組合來實施本發明的各種實施例。該邏輯可以儲存在電腦可讀或機器可讀的非暫時性儲存介質中,作為適於指導電腦系統的處理器執行本發明的實施例中公開的一組步驟的一組指令。該邏輯可以形成電腦程式產品的一部分,該電腦程式產品適於指導資訊處理裝置執行本發明的實施例中公開的一組步驟。基於本文提供的公開和教導,本領域普通技術人員將理解實施本發明的其他方式和/或方法。
本文描述的資料結構和代碼可以部分或完全儲存在電腦可讀儲存介質和/或硬體模組和/或硬體設備上。電腦可讀儲存介質包括但不限於揮發性記憶體,非揮發性記憶體,磁片以及光儲存裝置,諸如磁碟機,磁帶,CD(光碟),DVD(數位通用盤或數位視訊盤)以及現在已知或以後開發的能夠儲存代碼和/或資料的其他介質。本文描述的硬體模組或設備包括但不限於應用型專用積體電路(application-specific integrated circuit, ASIC),現場可程式設計閘陣列(field-programmable gate array, FPGA),專用或共用處理器,和/或現在已知或以後開發的其他硬體模組或設備。
本文描述的方法和程序可以部分或完全實現為儲存在電腦可讀儲存介質或裝置中的代碼和/或資料,使得當電腦系統讀取並運行代碼和/或資料時,電腦系統執行相關聯的方法和進程。所述方法和程序還可以部分或完全實現在硬體模組或設備中,使得當啟動硬體模組或設備時,它們執行相關聯的方法和進程。可以使用代碼、資料和硬體模組或設備的組合來實現本文公開的方法和進程。
儘管為了清楚理解的目的已經詳細描述了前述實施例,但是本發明不限於所提供的細節。存在許多實施本發明的替代方式。所公開的實施例是說明性的而非限制性的。
100‧‧‧錯誤校正系統
110‧‧‧LDPC編碼器
120‧‧‧儲存系統
130‧‧‧檢測器
140‧‧‧LDPC解碼器
210‧‧‧主機
212‧‧‧I/O操作
220‧‧‧儲存裝置
222‧‧‧記憶體晶粒
224‧‧‧塊
226‧‧‧字元線
228‧‧‧超級塊
310‧‧‧超級塊
320(0) ~320(N-2)‧‧‧字元線
322‧‧‧資料位元
330‧‧‧字元線
332‧‧‧XOR同位檢查位元
350‧‧‧程序
352‧‧‧步驟
354‧‧‧XOR同位檢查位元
410‧‧‧LDPC解碼器
412‧‧‧解碼失敗
414‧‧‧經解碼的位
420‧‧‧步驟
500‧‧‧流程
502、504、506、508、510‧‧‧步驟
512、514、516、518‧‧‧步驟
600‧‧‧流程
602、604、606、606A、606B‧‧‧步驟
608、610、612、614、616、618‧‧‧步驟
710‧‧‧校驗節點
720‧‧‧失敗字碼
722‧‧‧消息
730‧‧‧XOR同位檢查位元
732‧‧‧消息
740‧‧‧消息更新
800‧‧‧電腦系統
810‧‧‧顯示幕
820‧‧‧電腦
830‧‧‧使用者輸出裝置
840‧‧‧使用者輸入裝置
850‧‧‧通信介面
860‧‧‧處理器
870‧‧‧隨機存取記憶體
880‧‧‧磁碟機
890‧‧‧匯流排子系統
通過參考下面的圖式,可以實現對各種實施例的性質和優點的瞭解。在圖式中,相似的元件或特徵可以具有相同的圖式標記。此外,通過在圖式標記之後跟隨以破折號和在相似元件之中加以區分的第二標記可以區分相同類型的各種元件。如果在說明中只使用第一圖式標記,則該描述適用於任何一個具有相同第一圖式標記的相似元件,而與第二圖式標記無關。
圖1示出了根據本發明的某些實施例的錯誤校正系統的實施例高級方塊圖(high level block diagram);
圖2示出了根據本發明的某些實施例的包括主機和儲存裝置的電腦系統的實施例;
圖3示出了根據本發明的某些實施例的將資料寫入到儲存裝置的超級塊的實施例;
圖4示出了根據本發明的某些實施例的從儲存裝置的超級塊讀取資料的實施例,其中多個字元線的解碼已經失敗;
圖5示出了根據本發明的某些實施例的向儲存裝置的超級塊寫入資料和從儲存裝置的超級塊讀取資料的實施例流程;
圖6示出了根據本發明的某些實施例的從超級塊中恢復多個失敗的字元線的實施例流程;
圖7示出了根據本發明的某些實施例的用於解碼失敗的字碼的消息傳遞演算法的實施例應用,其中該應用包括排程解碼;
圖8示出了根據本發明的某些實施例的可能被使用的系統的一種可能的實施方式。
無。

Claims (20)

  1. 一種實施在電腦系統上的方法,用於從包括多個記憶體晶粒的記憶體的超級塊輸出資料,所述方法包括: 在解碼反覆運算中,解碼來自所述記憶體的超級塊的字碼,其中所述超級塊包括第一記憶體晶粒上的第一塊、第二記憶體晶粒上的第二塊以及第三記憶體晶粒上的第三塊,其中所述第一塊儲存所述字碼的第一字碼,其中所述第二塊儲存所述字碼的第二字碼,且其中所述第三塊儲存針對所述字碼的XOR同位檢查位元; 基於與所述第一字碼相關聯的第一錯誤位元數量和與所述第二字碼相關聯的第二錯誤位元數量,確定在所述解碼反覆運算中至少所述第一字碼和所述第二字碼的解碼失敗,其中在所述解碼反覆運算中的所述第一字碼的解碼基於與所述第一字碼相關聯的第一軟資訊,且其中在所述解碼反覆運算中的所述第二字碼的解碼基於與所述第二字碼相關聯的第二軟資訊; 基於所述第一錯誤位元數量和所述第二錯誤位元數量,在下一解碼反覆運算中,選擇在解碼所述第二字碼之前來解碼所述第一字碼; 基於被選擇的所述第一字碼,產生與所述第一字碼相關聯的更新的第一軟資訊,其中通過基於所述第二軟資訊和所述XOR同位檢查位元更新所述第一軟資訊來產生所述更新的第一軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第一軟資訊來解碼所述第一字碼。
  2. 如請求項1所述的方法,進一步包括: 基於所述下一解碼反覆運算中的所述第一字碼的解碼,確定從所述解碼反覆運算,所述第一錯誤位元數量已經減少; 訪問與所述第一字碼相關聯並且根據所述下一解碼反覆運算中的解碼而獲得的軟資訊; 通過基於與所述第一字碼相關聯的軟資訊和所述XOR同位檢查位元而更新所述第二軟資訊,來產生與所述第二字碼相關聯的更新的第二軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第二軟資訊來解碼所述第二字碼。
  3. 如請求項2所述的方法,其中所述第一字碼是低密度同位檢查碼,即LDPC字碼,並且其中基於未滿足校驗節點的數量的減少來指示所述第一錯誤位元數量的減少,所述未滿足校驗節點的數量與所述解碼反覆運算和所述下一解碼反覆運算之間的所述LDPC字碼的解碼相關聯。
  4. 如請求項1所述的方法,進一步包括: 基於所述下一解碼反覆運算中的所述第一字碼的解碼,確定從所述解碼反覆運算,所述第一錯誤位元數量已增加; 通過基於所述XOR同位檢查位元和不同於來自所述下一解碼反覆運算的、與所述第一字碼相關聯的軟資訊而更新所述第二軟資訊,來產生與所述第二字碼相關聯的更新的第二軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第二軟資訊來解碼所述第二字碼。
  5. 如請求項1所述的方法,進一步包括: 確定所述下一解碼反覆運算中的所述第一字碼的解碼對應於解碼收斂還是解碼發散;並且 在所述下一解碼反覆運算中,根據確定為解碼收斂還是解碼發散來解碼所述第二字碼。
  6. 如請求項5所述的方法,其中基於確定了所述第一錯誤位元數量從所述解碼反覆運算減少,來確定所述解碼收斂。
  7. 如請求項5所述的方法,其中基於確定了所述第一錯誤位元數量從所述解碼反覆運算增加,來確定所述解碼發散,並且進一步包括: 擦除與所述第一字碼相關聯並且根據所述下一解碼反覆運算中的所述第一字碼的解碼而獲得的軟資訊。
  8. 如請求項1所述的方法,進一步包括: 基於來自所述解碼反覆運算的所述第一錯誤位元數量和所述第二錯誤位元數量,對所述第一字碼和所述第二字碼進行排序;並且 在所述下一解碼反覆運算中,基於所述排序來排程所述第一字碼和所述第二字碼的解碼。
  9. 如請求項1所述的方法,其中基於關於所述XOR同位檢查位元的資訊更新所述第一軟資訊,並且其中關於所述XOR同位檢查位元的資訊包括對數似然比。
  10. 如請求項1所述的方法,其中基於關於所述XOR同位檢查位元的資訊更新所述第一軟資訊,並且其中關於所述XOR同位檢查位元的資訊包括硬資訊。
  11. 一種電腦系統,包括: 處理器;以及 包括電腦可讀指令的記憶體,所述電腦可讀指令在由所述處理器執行時使電腦系統: 在解碼反覆運算中,解碼來自超級塊的字碼,其中所述超級塊包括第一記憶體晶粒上的第一塊、第二記憶體晶粒上的第二塊、以及第三記憶體晶粒上的第三塊,其中所述第一塊儲存所述字碼的第一字碼,其中所述第二塊儲存所述字碼的第二字碼,且其中所述第三塊儲存針對所述字碼的XOR同位檢查位元; 基於與所述第一字碼相關聯的第一錯誤位元數量和與所述第二字碼相關聯的第二錯誤位元數量,確定在所述解碼反覆運算中至少所述第一字碼和所述第二字碼的解碼失敗,其中所述解碼反覆運算中的所述第一字碼的解碼基於與所述第一字碼相關聯的第一軟資訊,且其中所述解碼反覆運算中的所述第二字碼的解碼基於與所述第二字碼相關聯的第二軟資訊; 基於所述第一錯誤位元數量和所述第二錯誤位元數量,在下一解碼反覆運算中,選擇在解碼所述第二字碼之前來解碼所述第一字碼; 基於被選擇的所述第一字碼,產生與所述第一字碼相關聯的更新的第一軟資訊,其中通過基於所述第二軟資訊和所述XOR同位檢查位元更新所述第一軟資訊來產生所述更新的第一軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第一軟資訊來解碼所述第一字碼。
  12. 如請求項11所述的電腦系統,其中所述超級塊包括字元線,並且其中所述字碼屬於所述字元線的相同條帶。
  13. 如請求項11所述的電腦系統,其中所述電腦可讀指令進一步使電腦系統: 基於所述下一解碼反覆運算中的所述第一字碼的解碼,確定從所述解碼反覆運算,所述第一錯誤位元數量已減少; 訪問與所述第一字碼相關聯並且根據所述下一解碼反覆運算中的解碼而獲得的軟資訊; 通過基於與所述第一字碼相關聯的軟資訊和所述XOR同位檢查位元而更新所述第二軟資訊,來產生與所述第二字碼相關聯的更新的第二軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第二軟資訊來解碼所述第二字碼。
  14. 如請求項13所述的電腦系統,其中所述第一字碼是低密度同位檢查碼,即LDPC字碼,並且其中基於未滿足校驗節點的數量的減少來指示所述第一錯誤位元數量的減少,所述未滿足校驗節點的數量與所述解碼反覆運算和所述下一解碼反覆運算之間的所述LDPC字碼的解碼相關聯。
  15. 如請求項11所述的電腦系統,其中所述電腦可讀指令進一步使電腦系統: 基於所述下一解碼反覆運算中的所述第一字碼的解碼,確定從所述解碼反覆運算,所述第一錯誤位元數量已增加; 通過基於所述XOR同位檢查位元和不同於來自所述下一解碼反覆運算的、與所述第一字碼相關聯的軟資訊而更新所述第二軟資訊,來產生與所述第二字碼相關聯的更新的第二軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第二軟資訊來解碼所述第二字碼。
  16. 一種或多種非暫時性電腦儲存介質,包括在電腦系統上運行時配置所述電腦系統以執行操作的指令,所述操作包括: 在解碼反覆運算中,解碼來自超級塊的字碼,其中所述超級塊包括第一記憶體晶粒上的第一塊、第二記憶體晶粒上的第二塊、以及第三記憶體晶粒上的第三塊,其中所述第一塊儲存所述字碼的第一字碼,其中所述第二塊儲存所述字碼的第二字碼,且其中所述第三塊儲存針對所述字碼的XOR同位檢查位元; 基於與所述第一字碼相關聯的第一錯誤位元數量和與所述第二字碼相關聯的第二錯誤位元數量,確定在所述解碼反覆運算中至少所述第一字碼和所述第二字碼的解碼失敗,其中在所述解碼反覆運算中的所述第一字碼的解碼基於與所述第一字碼相關聯的第一軟資訊,且其中在所述解碼反覆運算中的所述第二字碼的解碼基於與所述第二字碼相關聯的第二軟資訊; 基於所述第一錯誤位元數量和所述第二錯誤位元數量,在下一解碼反覆運算中,選擇在解碼所述第二字碼之前來解碼所述第一字碼; 基於被選擇的所述第一字碼,產生與所述第一字碼相關聯的更新的第一軟資訊,其中通過基於所述第二軟資訊和所述XOR同位檢查位元更新所述第一軟資訊來產生所述更新的第一軟資訊;並且 在所述下一解碼反覆運算中,基於所述更新的第一軟資訊來解碼所述第一字碼。
  17. 如請求項16所述的一種或多種非臨時性電腦儲存介質,其中所述操作還包括: 確定所述下一解碼反覆運算中的所述第一字碼的解碼對應於解碼收斂還是解碼發散;並且 在所述下一解碼反覆運算中,根據確定為解碼收斂還是解碼發散來解碼所述第二字碼。
  18. 如請求項17所述的一種或多種非臨時性電腦儲存介質,其中基於確定了所述第一錯誤位元數量從所述解碼反覆運算中減少,來確定所述解碼收斂。
  19. 如請求項17所述的一種或多種非臨時性電腦儲存介質,其中基於確定了所述第一錯誤位元數量從所述解碼反覆運算增加,來確定所述解碼發散,並且其中所述操作進一步包括: 擦除與所述第一字碼相關聯並且根據所述下一解碼反覆運算中的所述第一字碼的解碼而獲得的軟資訊。
  20. 如請求項16所述的一種或多種非臨時性電腦儲存介質,其中所述操作進一步包括: 基於來自所述解碼反覆運算的所述第一錯誤位元數量和所述第二錯誤位元數量,對所述第一字碼和所述第二字碼進行排序;並且 在所述下一解碼反覆運算中,基於所述排序來排程所述第一字碼和所述第二字碼的解碼。
TW107139574A 2017-11-21 2018-11-07 用於多個字元線失敗的軟晶片消除恢復 TWI797189B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762589461P 2017-11-21 2017-11-21
US62/589,461 2017-11-21
US16/151,053 2018-10-03
US16/151,053 US10691540B2 (en) 2017-11-21 2018-10-03 Soft chip-kill recovery for multiple wordlines failure

Publications (2)

Publication Number Publication Date
TW201939902A true TW201939902A (zh) 2019-10-01
TWI797189B TWI797189B (zh) 2023-04-01

Family

ID=66533042

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107139574A TWI797189B (zh) 2017-11-21 2018-11-07 用於多個字元線失敗的軟晶片消除恢復

Country Status (3)

Country Link
US (2) US10691540B2 (zh)
CN (1) CN109873645B (zh)
TW (1) TWI797189B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691540B2 (en) 2017-11-21 2020-06-23 SK Hynix Inc. Soft chip-kill recovery for multiple wordlines failure
US10817373B2 (en) * 2017-11-21 2020-10-27 SK Hynix Inc. Soft chip-kill recovery using concatenated codes
US11182243B2 (en) 2018-02-15 2021-11-23 SK Hynix Inc. Memory system with adaptive information propagation and method of operating such memory
US11062758B2 (en) 2018-09-19 2021-07-13 SK Hynix Inc. Memory system to process multiple word line failures with limited storage and method of operating such memory system
KR102092476B1 (ko) * 2018-10-26 2020-03-23 고려대학교 산학협력단 블록 터보 부호의 신드롬 기반 복호 방법 및 장치
KR20210115751A (ko) * 2020-03-16 2021-09-27 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN113595561A (zh) * 2021-07-14 2021-11-02 深圳宏芯宇电子股份有限公司 一种混合解码方法、存储装置控制器及存储系统
CN114244375B (zh) * 2021-12-22 2023-07-21 中山大学 基于神经网络的ldpc归一化最小和译码方法及装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341506B2 (en) * 2007-03-30 2012-12-25 HGST Netherlands B.V. Techniques for correcting errors using iterative decoding
EP2202894B1 (en) * 2008-12-23 2011-11-02 Ntt Docomo, Inc. Relay station for a mobile communication system
JP5664919B2 (ja) * 2011-06-15 2015-02-04 ソニー株式会社 データ処理装置、及び、データ処理方法
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9043681B2 (en) * 2012-03-28 2015-05-26 Intel Corporation Reconstructing codewords using a side channel
US9160373B1 (en) * 2012-09-24 2015-10-13 Marvell International Ltd. Systems and methods for joint decoding of sector and track error correction codes
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
BR112015027363A2 (pt) * 2013-05-03 2017-09-12 Ibiquity Digital Corp método para processar um sinal digital, e, radiorreceptor
TWI521529B (zh) 2014-04-15 2016-02-11 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US9632712B2 (en) * 2014-07-02 2017-04-25 Sandisk Technologies Llc System and method of updating metablocks associated with multiple memory dies
US9588841B2 (en) * 2014-09-26 2017-03-07 Intel Corporation Using reliability information from multiple storage units and a parity storage unit to recover data for a failed one of the storage units
KR102275717B1 (ko) * 2015-01-21 2021-07-09 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
US9819362B2 (en) * 2015-03-27 2017-11-14 Intel Corporation Apparatus and method for detecting and mitigating bit-line opens in flash memory
US10372529B2 (en) * 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
KR102372825B1 (ko) 2015-07-31 2022-03-14 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10204006B2 (en) * 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access
US10075192B2 (en) * 2016-05-09 2018-09-11 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for data processing with folded parity sector
US10817373B2 (en) * 2017-11-21 2020-10-27 SK Hynix Inc. Soft chip-kill recovery using concatenated codes
US10691540B2 (en) 2017-11-21 2020-06-23 SK Hynix Inc. Soft chip-kill recovery for multiple wordlines failure

Also Published As

Publication number Publication date
US10691540B2 (en) 2020-06-23
CN109873645B (zh) 2023-05-12
TWI797189B (zh) 2023-04-01
US20200319970A1 (en) 2020-10-08
US20190155688A1 (en) 2019-05-23
US11321175B2 (en) 2022-05-03
CN109873645A (zh) 2019-06-11

Similar Documents

Publication Publication Date Title
TWI797189B (zh) 用於多個字元線失敗的軟晶片消除恢復
US10707899B2 (en) Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US10523245B2 (en) Soft decoder for generalized product codes
US8448050B2 (en) Memory system and control method for the same
KR101321487B1 (ko) 기입 검증을 사용한 코드들의 에러-플로어 완화
US10218388B2 (en) Techniques for low complexity soft decoder for turbo product codes
US9866241B2 (en) Techniques for adaptive LDPC decoding
US20180343082A1 (en) Early termination of low-density parity-check (ldpc) decoding
US10090865B2 (en) Performance optimization in soft decoding of error correcting codes
US10439649B2 (en) Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US10484020B2 (en) System and method for parallel decoding of codewords sharing common data
US10817373B2 (en) Soft chip-kill recovery using concatenated codes
US11108407B1 (en) Performance of a bit flipping (BF) decoder of an error correction system
US10205469B2 (en) Low latency soft decoder architecture for generalized product codes
US10090862B2 (en) Hybrid soft decoding algorithm for multiple-dimension TPC codes
US10498366B2 (en) Data dependency mitigation in parallel decoders for flash storage
US10157097B2 (en) Redundant bytes utilization in error correction code
JP2019057752A (ja) メモリシステム
US10303364B2 (en) Techniques for low-latency chase decoding of turbo product codes with soft information
US10084485B2 (en) Soft decoder parameter optimization for product codes
US10187086B2 (en) State-based decoding of product codes
US11128314B2 (en) Error characteristic estimation for NAND flash