TWI787401B - 使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統 - Google Patents

使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統 Download PDF

Info

Publication number
TWI787401B
TWI787401B TW107142019A TW107142019A TWI787401B TW I787401 B TWI787401 B TW I787401B TW 107142019 A TW107142019 A TW 107142019A TW 107142019 A TW107142019 A TW 107142019A TW I787401 B TWI787401 B TW I787401B
Authority
TW
Taiwan
Prior art keywords
error correction
column
data
row
product
Prior art date
Application number
TW107142019A
Other languages
English (en)
Other versions
TW201937368A (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 TW201937368A publication Critical patent/TW201937368A/zh
Application granted granted Critical
Publication of TWI787401B publication Critical patent/TWI787401B/zh

Links

Images

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/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
    • 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
    • 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
    • G06F11/1032Simple parity
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1655Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1657Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • 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/2909Product codes
    • 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/0409Online test
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

記憶體系統包括記憶體介質和記憶體控制器。所述記憶體介質包括資料符號和同位符號,它們分別設置在多個列和多個行的交叉點處。所述記憶體控制器包括錯誤校正碼(ECC)引擎,其被設計為在所述記憶體控制器存取記憶體介質時以固定的錯誤校正級別來執行錯誤校正操作。所述記憶體控制器在第一錯誤校正模式中使用所述ECC引擎以所述固定的錯誤校正級別來執行所述錯誤校正操作。所述記憶體控制器在第二錯誤校正模式中使用所述ECC引擎以高於所述固定的錯誤校正級別的錯誤校正級別來執行所述錯誤校正操作。

Description

使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統
所公開技術的各種實施例一般涉及記憶體系統,其包括執行可重組態的錯誤校正操作的記憶體系統。相關申請的交叉引用
本申請案主張於2018年2月26日提交的申請號為10-2018-0023020的韓國申請案的優先權,該申請案通過引用整體合併於此。
近來,包括半導體記憶體系統的記憶體系統已經被設計成通過利用用於錯誤檢測和校正的錯誤校正位元來為處理器或其他元件提供可靠的記憶體介質。在記憶體系統中,錯誤檢測和校正可以由錯誤校正碼(ECC)引擎執行。ECC引擎起初被包含在用於科學或金融計算的記憶體系統中,在那裡在任何情況下都不能容忍任何資料損壞,並且現在已經在大多數記憶體系統中使用。
通常,可以考慮ECC引擎的可重組態方案來設計採用ECC引擎的記憶體系統。例如,可以預先確定由ECC引擎執行的錯誤校正操作的範圍,然後可以設計記憶體系統,使得錯誤校正操作的預定範圍反映在記憶體系統中。例如,可以設計ECC引擎的可重組態方案,使得ECC引擎針對多個錯誤校正級別執行錯誤校正操作。在存在多個錯誤校正級別的情況下,ECC引擎的錯誤校正能力可以被設置為彼此不同。例如,可以將在多個錯誤校正級別的最低錯誤校正級別使用ECC引擎可校正的最大錯誤位元數設置為小於在其他錯誤校正級別使用ECC引擎可校正的任何其他最大錯誤位元數。隨著錯誤校正級別變得更高,使用ECC引擎可校正的最大錯誤位元數可增加。在記憶體系統採用能夠針對多個錯誤校正級別執行錯誤校正操作的ECC引擎的情況下,ECC引擎可以被配置為根據檢測到的錯誤位元數以適當的級別執行錯誤校正操作。
隨著ECC引擎的錯誤校正能力的增加,採用ECC引擎的記憶體系統的穩定性可以提高。然而,隨著ECC引擎的錯誤校正能力變得更高,用於實現ECC的電路變得更加複雜。因此,如果ECC引擎的錯誤校正能力變得更高,則由於用於ECC引擎的電路的複雜性和尺寸的增加,記憶體系統的集成密度可能降低。然而,為了提高記憶體系統的可靠性,即使發生資料損壞的可能性不高,考慮到最壞的情況,也可能需要設計利用ECC引擎的可重組態方案的記憶體系統。這是因為在記憶體系統的設計期間、在ECC引擎的可重組態方案被包括在記憶體系統中之後就難以改變該ECC引擎的該可重組態方案。因此,為發生可能性低的最壞情況做準備的必要性導致ECC引擎佔用的面積和ECC引擎的複雜性低效地增加。另外,由於在製造採用ECC引擎的記憶體系統之後、不能改變ECC引擎的可重組態方案,因此可能難以提供應對在這種記憶體系統的操作期間意外發生的情況的靈活性。
本專利文獻尤其提供了一種記憶體系統,其包括記憶體介質和記憶體控制器。記憶體介質包括資料符號和同位符號,它們分別設置在多個行和多個列的交叉點處。記憶體控制器包括錯誤校正碼(ECC)引擎,其被設計為在記憶體控制器存取記憶體介質時以固定的錯誤校正級別來執行錯誤校正操作。記憶體控制器在第一錯誤校正模式中使用ECC引擎以固定的錯誤校正級別來執行錯誤校正操作。記憶體控制器在第二錯誤校正模式中使用ECC引擎以高於固定的錯誤校正級別的錯誤校正級別來執行錯誤校正操作。
根據另一實施例,一種記憶體系統包括記憶體介質和記憶體控制器。記憶體介質包括資料符號和同位符號,它們分別設置在多個行和多個列的交叉點處。記憶體控制器包括錯誤校正碼(ECC)引擎,其被設計為在記憶體控制器存取記憶體介質時在第一錯誤校正模式中以固定的錯誤校正級別來執行錯誤校正操作。如果資料符號中的至少一個錯誤資料符號未通過在第一錯誤校正模式中執行的錯誤校正操作而被校正,則記憶體控制器將第一錯誤校正模式改變為第二錯誤校正模式,以產生包括'M'數量的列乘積碼字、'i'數量的列乘積碼字、'N'數量的行乘積碼字和'j'數量的行乘積碼字的乘積碼字,並使用ECC引擎來執行用於所述乘積碼字的錯誤校正操作(其中,'M','N','i'和'j'表示自然數)。'M'數量的列乘積碼字中的每一個包括資料符號和同位符號,'i'數量的列乘積碼字中的每一個包括同位符號,'N'數量的行乘積碼字中的每一個包括資料符號和同位符號,並且'j'數量的行乘積碼字中的每一個包括同位符號。
根據又一實施例,一種記憶體系統包括記憶體介質和記憶體控制器。記憶體介質包括資料符號和同位符號,它們分別設置在多個列和多個行的交叉點處。記憶體控制器包括錯誤校正碼(ECC)引擎,其被設計為在記憶體控制器存取記憶體介質時以固定的錯誤校正級別來執行錯誤校正操作。記憶體控制器使用ECC引擎、以共用一個列位址的資料符號和同位符號為單位來執行列定向錯誤校正操作,以及使用ECC引擎、以共用一個行位址的資料符號和同位符號為單位來執行行定向錯誤校正操作。
在以下對實施例的描述中,應理解,術語“第一”和“第二”旨在標識元件,但不用於僅定義元件本身或表示特定順序。另外,當一個元件被稱為位於另一個元件“上”,“之上”,“上方”,“下麵”或“下方”時,它意味著相對位置關係,但不用於限制某些情況:即元件直接接觸另一元件,或者在它們之間存在至少一個中間元件。因此,這裡使用的諸如“在......上”,“在......之上”,“在......上方”,“在......之下”,“在......下麵”,“在......下方”之類的術語僅用於描述特定實施例的目的、而不是旨在限制本公開的範圍。此外,當一個元件被稱為“連接”或“耦接”到另一個元件時,該元件可以直接電連接或機械連接或耦接到另一個元件,或者可以通過替換其間另一個元件而形成連接關係或耦接關係。
各種實施例涉及使用具有固定錯誤校正能力的錯誤校正碼(ECC)引擎執行可重組態錯誤校正操作的記憶體系統。
圖1是示出根據所公開技術的實施例的記憶體系統的方塊圖,圖2是示出圖1中所示的記憶體系統100的記憶體介質200中包括的記憶體單元陣列210的示例、以及示出記憶體單元陣列210中包括的列乘積碼和行乘積碼的示例的示意圖。
參見圖1,記憶體系統100可以被配置為包括記憶體介質200和記憶體控制器300。在一個實施例中,記憶體介質200可以包括相變隨機存取記憶體(PCRAM)裝置、磁性隨機存取記憶體(MRAM)裝置、電阻式隨機存取記憶體(ReRAM)裝置或快閃記憶體記憶體裝置中的至少一種。記憶體介質200可以包括記憶體單元陣列210(也稱為單元陣列)。
如圖2中所示,單元陣列210可以被配置為包括單位單元,所述單位單元分別位於多個列221和多個行222的交叉點處。多個列221可以分別具有列位址0、1、…...、M-1、M、…...和M+i(其中,“M”和“i”表示自然數)。多個行222可以具有行位址0、1、......、N-1、N、......和N+j(其中,“N”和“j”表示自然數)。具有列位址0、1、......和M-1以及行地址0、1、......和N-1的單位單元可以佈置在資料區域211中。'0'或'1'的資料位元可以分別儲存在資料區域211的每個單位單元中。具有列位址0、1、......和M-1以及行地址N、......和N+j的單位單元可以佈置在列定向同位區域212中。'0'或'1'的列定向同位檢查位元可以儲存在列定向同位區域212的每個單位單元中。具有列位址M、......和M+i以及行地址0、1、......和N+j的單位單元可以佈置在行定向同位區域213中。'0'或'1'的行定向同位檢查位元可以儲存在行定向同位區域213的每個單位單元中。
錯誤校正操作可以針對每個符號來執行,並且每個符號的大小可以取決於錯誤校正操作中使用的演算法。如果錯誤校正操作採用使用二進位單元碼的ECC演算法、例如Bose-Chaudhuri-Hocquenghem(BCH)碼,則每個資料符號可以被配置為具有一個二進位資料位元,並且每個同位符號可以被配置為具有一個二進位同位檢查位元。代替地,如果錯誤校正操作採用使用裡德-所羅門(Reed-solomon,RS)碼的ECC演算法,則每個資料符號可以被配置為具有多個資料位元,並且每個同位符號可以被配置為具有多個同位檢查位元。
在本實施例中,可以假設錯誤校正操作採用使用合適的錯誤校正碼、例如裡德-所羅門(RS)碼的ECC演算法。因此,每個資料符號可以被配置為具有多個資料位元,例如,四位或八位元,並且每個同位符號可以被配置為具有多個同位檢查位元,例如,四位或八位。因此,經歷錯誤校正操作並被稱為目標資料符號的資料符號的列位址和行位址可與目標資料符號中的每個資料位元的列位址和行位址不一致,以及經歷錯誤校正操作並被稱為目標同位符號的同位符號的列位址和行位址可與目標同位符號中的每個同位檢查位元的列位址和行位址不一致。在以下實施例中,可以假設資料符號和同位符號、而不是資料位元和同位檢查位元,可以被儲存在記憶體介質200的單元陣列210中。本專利文獻中描述的實施例也可以應用於採用使用二進位單元碼或其他合適的碼來代替RS碼的ECC演算法的記憶體系統。在使用二進位單元碼的情況下,目標資料符號的列位址和行位址可以與目標資料符號中的資料位元的列位址和行位址一致,以及目標同位符號的列位址和行位址可以與目標同位符號中的同位檢查位元的列位址和行位址一致。
在一個實施例中,可以在各個頁(page)中實現對儲存在記憶體介質200的單元陣列210中的資料的存取,每個頁是共用一個列位址的資料區域。因此,在存取儲存在單元陣列210中的資料期間執行的錯誤校正操作,也可以針對彼此共用一個列位址的資料符號和同位符號來執行。如果錯誤資料符號的數量大於ECC引擎的錯誤校正能力,則即使執行錯誤校正操作,也不能校正錯誤資料符號。在根據實施例的記憶體系統100的情況下,可以將能夠儲存行定向同位檢查位元值的行定向同位區域213分配到單元陣列區域210中,使得即使錯誤資料符號的數量大於ECC引擎的錯誤校正能力、這些錯誤資料符號也全部被校正。
可以在第一錯誤校正模式或第二錯誤校正模式中執行記憶體系統100的錯誤校正操作。在第一錯誤校正模式中,可以以彼此共用一個列位址的資料符號和同位符號為單位來執行錯誤校正操作。在第二錯誤校正模式中,可以以彼此共用一個行位址的資料符號和同位符號為單位來執行錯誤校正操作。為了在第二錯誤校正模式中執行錯誤校正操作,可以在錯誤校正操作之前首先產生由列乘積碼和行乘積碼組成、或包括列乘積碼和行乘積碼的乘積碼。列乘積碼可以被配置為包括彼此共用一個列位址的、所有的資料符號(DS)和所有的同位符號(PS)。行乘積碼可以被配置為包括共用特定行位址的資料符號DS中的一些和共用所述特定行位址的所有的同位符號PS。列乘積碼的同位符號PS可以具有同位檢查位元值,並且在圖2中用虛線表示。在通過第二錯誤校正模式中的錯誤校正操作產生乘積碼字之前,行乘積碼中包括的同位符號PS可以不具有任何同位檢查位元值。
再次參見圖1,記憶體控制器300可以通過介質側實體層301耦接到記憶體介質200。記憶體控制器300還可以通過主機側實體層302耦接到主機。記憶體控制器300可以控制對記憶體介質200的存取。例如,記憶體控制器300可以響應於從主機輸出的寫入命令,來控制用於將寫入資料儲存到記憶體介質200中的寫入操作。另外,記憶體控制器300可以響應於從主機輸出的讀取命令,來控制用於將儲存在記憶體介質200中的讀取資料傳輸到主機的讀取操作。記憶體控制器300可以檢測在寫入操作和讀取操作期間產生的錯誤資料,並且如果發生錯誤導致要產生錯誤資料,則可以執行用於校正錯誤資料的錯誤校正操作。
記憶體控制器300可以包括執行錯誤校正操作的ECC引擎310。ECC引擎310可以包括ECC編碼器311和ECC解碼器312。ECC編碼器311可以在記憶體控制器300控制寫入操作時執行寫入資料的ECC編碼操作。例如,ECC編碼器311可以接收從主機輸出的、以資料符號形式的寫入資料。ECC編碼器311可以執行與寫入資料相對應的資料符號的ECC編碼操作以產生和輸出碼字。碼字可以被產生為包括資料符號和同位符號。從ECC編碼器311輸出的碼字可以儲存在記憶體介質200中。ECC解碼器312可以在記憶體控制器300控制讀取操作時執行ECC解碼操作。例如,ECC解碼器312可以接收從記憶體介質200輸出的、以碼字形式的讀取資料。ECC解碼器312可以執行與讀取資料相對應的碼字的ECC解碼操作,以產生並輸出用於ECC操作的資料符號。從ECC解碼器312輸出的資料符號可以被傳輸到主機。可以使用碼字中包括的同位符號來執行在由ECC解碼器312執行的ECC解碼操作期間的錯誤校正。
通常,ECC引擎可以被設計為具有可重組態的ECC方案,以便在各種實施方案中改進錯誤校正能力。可重組態的ECC方案可以提供用於錯誤校正操作的多個錯誤校正級別。例如,如果ECC引擎被設計為具有可重組態的ECC方案,則錯誤校正操作可以基於錯誤發生的程度而在不同的錯誤校正級別進行。如果將ECC引擎配置為具有可重組態的ECC方案,雖然提高了錯誤校正能力,但ECC引擎佔用的面積也可能增加,並且ECC引擎的電路可能變得更加複雜。認識到這些缺點,所公開技術的一些實施方案提供了用於這樣的記憶體系統100的設計,其中記憶體系統100的ECC引擎310包括執行不可重組態的ECC方案的ECC編碼器311和ECC解碼器312。與可配置的ECC方案不同,不可重組態的ECC方案提供用於錯誤校正操作的固定的錯誤校正級別,並且以相同的錯誤校正級別來執行錯誤校正操作。因此,在根據所公開技術的實施例的記憶體系統100中採用的ECC引擎310可以使用相對簡單的邏輯電路來實現,從而減小ECC引擎310的邏輯電路佔用的面積。
由於記憶體系統100的ECC引擎310被配置為具有不可重組態的ECC方案,因此在寫入操作期間由ECC編碼器311添加到資料符號的同位符號的數量可以是固定的。另外,在ECC解碼器312執行的ECC解碼操作期間可校正的資料符號的數量也可以是固定的。然而,根據本實施例的記憶體系統100的記憶體控制器300可以被配置為使用ECC引擎310更準確和有效地執行錯誤校正操作。根據來自命令控制器的命令,記憶體控制器300可以在第一錯誤校正模式或第二錯誤校正模式中執行錯誤校正操作。在一些實施方案中,記憶體控制器300可執行第一錯誤校正模式的控制操作,在第一錯誤校正模式中,由ECC引擎310根據錯誤校正級別執行錯誤校正操作。在一些實施方案中,記憶體控制器300還可以執行第二錯誤校正模式的控制操作,在第二錯誤校正模式中,當需要更嚴格的錯誤校正操作時,由ECC引擎310在更高的錯誤校正級別來更準確和有效地執行錯誤校正操作。
記憶體控制器300可以包括資料管理器320。資料管理器320可以包括緩衝記憶體。資料管理器320可以臨時儲存從主機輸出的寫入資料。資料管理器320的緩衝記憶體可以臨時儲存從記憶體介質200輸出的讀取資料。從主機輸出的寫入資料可以通過主機側實體層302傳輸到資料管理器320。從記憶體介質200輸出的讀取資料可以通過資料管理器320和主機側實體層302傳輸到主機。資料管理器320可以被配置為在第二錯誤校正模式中響應於寫入命令將寫入資料符號與乘積碼字組合。
記憶體控制器300可以包括第一緩衝器331、第二緩衝器332、第一至第三多工器341至343、以及第一至第三解多工器344至346。當在第二錯誤校正模式中執行ECC編碼操作時,第一緩衝器331可以用作臨時儲存資料的記憶體。當在第二錯誤校正模式中執行ECC編碼操作時,根據控制信號,第一緩衝器331可以接收並儲存從第一解多工器344輸出的ECC編碼資料,或者可以將儲存在其中的資料輸出到第三多工器343。當在第二錯誤校正模式中執行ECC解碼操作時,第二緩衝器332可以用作臨時儲存資料的記憶體。當在第二錯誤校正模式中執行ECC解碼操作時,根據控制信號,第二緩衝器332可以將儲存在其中的資料輸出到第一多工器341,或者可以接收和儲存從第三解多工器346輸出的ECC解碼資料。為了使第一緩衝器331和第二緩衝器332能夠在錯誤校正操作的第二錯誤校正模式中操作,第一緩衝器331和第二緩衝器332中的每一個可以被配置為在列方向和行方向兩者上都可以存取資料。
第一多工器341可以與介質側實體層301、第二緩衝器332和ECC編碼器通信。第一多工器341可以響應於從PC控制器370接收的控制信號、選擇性地輸出通過介質側實體層301從記憶體介質200輸出的資料和從第二緩衝器332輸出的資料中的任何一個。從第一多工器341輸出的資料可以輸入到ECC解碼器312。第二多工器342可以與第二解多工器345和資料管理器320通信以從其接收信號,並將輸出信號輸出到第三多工器343作為兩個輸入之一,所述第三多工器343從第一緩衝器331接收另一輸入。第二多工器342可響應於從PC控制器370接收的控制信號、選擇性地輸出從第二解多工器345輸出的資料和從資料管理器320輸出的資料中的任何一個。第三多工器343在被配置為與作為兩個輸入的第二多工器342和第一緩衝器331進行通信的同時,被耦接到ECC編碼器311以將輸出提供給ECC編碼器311。第三多工器343可以響應於從PC控制器370接收的控制信號、選擇性地輸出從第二多工器342輸出的資料和從第一緩衝器331輸出的資料中的任何一個。從第三多工器343輸出的資料可以輸入到ECC編碼器311。
第一解多工器344可以與ECC編碼器311、第一緩衝器331和記憶體介質通信。第一解多工器344可以響應於從PC控制器370接收的控制信號、將接收到的ECC編碼器311的輸出資料傳輸到第一緩衝器331或記憶體介質200。第二解多工器345可以與第二多工器342、資料管理器320和第三解多工器346通信,並且響應於從PC控制器370接收的控制信號、將接收的第三解多工器346的輸出資料傳輸到資料管理器320或第二多工器342。第三解多工器346可以與ECC解碼器312、第二緩衝器332和第二解多工器345通信,並且響應於控制信號將ECC解碼器312的輸出資料傳輸到第二解多工器345或者第二緩衝器332。
記憶體控制器300可以包括命令控制器350、調度器360、乘積碼(PC)控制器370、微控制器(MCU)380和錯誤日誌390。命令控制器350可以通過主機側實體層302從主機接收命令。例如,命令控制器350可以通過主機側實體層302從主機接收讀取命令和寫入命令。在一個實施例中,命令控制器350可以包括儲存按順序的一系列命令的命令佇列。輸入到命令控制器350的命令可以被傳輸到資料管理器320和調度器360。命令控制器350可以從資料管理器320和調度器360接收通知命令的處理結果的信號,並且可以通過主機側實體層302將通知所述命令的處理結果的信號傳輸給主機。關於錯誤校正操作,如果記憶體系統100的錯誤校正模式從第一錯誤校正模式改變為第二錯誤校正模式,命令控制器350可以將與錯誤校正操作的第二錯誤校正模式有關的命令傳輸到調度器360。
調度器360可以基於從命令控制器350接收的命令來確定由記憶體控制器300處理的命令的順序。調度器360可以在某個被程式設計的調度規則下確定由記憶體控制器300處理的命令的順序。處理順序由調度器360確定的命令,可以通過介質側實體層301傳輸到記憶體介質200,以及可以傳輸到PC控制器370。調度器360可以從PC控制器370接收通知命令的處理結果的信號。當記憶體控制器300在第二錯誤校正模式中執行錯誤校正操作時,調度器360可以延遲除了與在第二錯誤校正模式中執行的錯誤校正操作有關的命令之外的其他命令的處理。
PC控制器370可以回應於從調度器360輸出的命令來輸出多個控制。當在第一錯誤校正模式中執行ECC編碼操作時,PC控制器370可以分別將控制信號輸出到第二多工器342和第三多工器343,這使得能夠將從資料管理器320輸出的寫入資料登錄到ECC編碼器311中。在由ECC編碼器311執行ECC編碼操作之後,PC控制器370可以將用於傳輸從ECC編碼器311輸出的資料到介質側實體層301的控制信號輸出到第一解多工器344。當在第一錯誤校正模式中執行ECC編碼操作時,通過從PC控制器370輸出的控制信號,從資料管理器320輸出的寫入資料可以在沒有任何改變的情況下被輸入到ECC編碼器311。此外,ECC編碼器311產生的ECC編碼資料可以在沒有任何改變的情況下被傳輸到介質側實體層301。
當在第一錯誤校正模式中執行ECC解碼操作時,PC控制器370可以將控制信號輸出到第一多工器341,這使得能夠將從介質側實體層301輸出的讀取資料登錄到ECC解碼器312中。在ECC解碼器312執行ECC解碼操作之後,PC控制器370可以分別將控制信號輸出到第二解多工器345和第三解多工器346,這使得能夠將從ECC解碼器312輸出的資料傳輸到資料管理器320。當在第一錯誤校正模式下執行ECC解碼操作時,通過從PC控制器370輸出的控制信號,從介質側實體層301輸出的讀取資料可以在沒有任何改變的情況下被輸入到ECC解碼器312。另外,ECC解碼器312產生的ECC解碼資料可以在沒有任何改變的情況下傳輸到資料管理器320。
關於第二錯誤校正模式中的ECC編碼操作和ECC解碼操作,PC控制器370可以分別將控制信號輸出到第一、第二和第三多工器341、342和343,使得第一、第二和第三多工器341、342和343中的每個選擇性地輸出被輸入其的兩個輸入資料中的任何一個。另外,PC控制器370可以分別將控制信號輸出到第一、第二和第三解多工器344、345和346,使得第一、第二和第三解多工器344、345和346中的每一個將輸入到其的一個輸入資料輸出為其兩個輸出資料中的任何一個。此外,PC控制器370可以分別將控制信號輸出到第一緩衝器331和第二緩衝器,其分別將資料登錄和輸出操作使能。在一些實施例中,PC控制器370可以分別向ECC編碼器311和ECC解碼器312輸出編碼去能控制信號和解碼去能控制信號。編碼去能控制信號允許ECC編碼器311按原樣將輸入到其的輸入資料輸出,而不執行任何ECC編碼操作,解碼去能控制信號允許ECC解碼器312按原樣將輸入到其的輸入資料輸出,而不執行任何ECC解碼操作。
微控制器380可以在第一錯誤校正模式和第二錯誤校正模式之間確定錯誤校正操作的錯誤校正模式。為了在第一錯誤校正模式和第二錯誤校正模式之間進行確定,微控制器380可以被配置為包括:用於選擇第一和第二錯誤校正模式中的任何一個的演算法、以及具有用於第二錯誤校正模式的控制操作的演算法的固件。固件可以儲存在微控制器380的記憶體(例如,唯讀記憶體(ROM)裝置)中,並且可以在沒有隨機存取記憶體(RAM)裝置的任何説明的情況下直接被執行。如果在第一錯誤校正模式中執行錯誤校正操作,則微控制器380可以將與錯誤校正操作的第一錯誤校正模式有關的命令傳輸到命令控制器350。如果在第二錯誤校正模式中執行錯誤校正操作,則微控制器380可以將用於錯誤校正操作的第二錯誤校正模式的命令傳輸到命令控制器350。
錯誤日誌390可以從ECC解碼器312接收並且儲存錯誤資訊。在一個實施例中,錯誤資訊可以包括記憶體介質200中的、一個頁中的錯誤的數量、錯誤的位置、以及錯誤的可校正性,它們通過ECC解碼操作來獲得。微控制器380可以請求存取錯誤日誌390,以確定錯誤校正模式。錯誤日誌390可以響應於來自微控制器380的存取請求而將儲存在錯誤日誌390中的錯誤資訊傳輸到微控制器380。微控制器380可以基於從錯誤日誌390輸出的錯誤資訊來確定錯誤校正模式。
圖3是示出用於改變記憶體系統100的錯誤校正模式的過程的流程圖的示例。參考圖1和圖3,在步驟410,可以在記憶體介質200的讀取操作和寫入操作期間在第一錯誤校正模式中執行錯誤校正操作。第一錯誤校正模式持續到記憶體控制器300的微控制器380產生用於將錯誤校正模式從第一錯誤校正模式改變為第二錯誤校正模式的切換命令為止。在一些實施方案中,從主機輸出的寫入資料可以以資料符號的形式輸入到ECC編碼器311。ECC編碼器311可以執行ECC編碼操作,以輸出包括輸入到ECC編碼器311的資料符號和添加到資料符號的同位符號的碼字。從ECC編碼器311輸出的碼字可以被寫入記憶體介質200。從記憶體介質200輸出的讀取資料可以以碼字的形式輸入到ECC解碼器312。ECC解碼器312可以執行ECC解碼操作,以檢測以碼字形式的讀取資料中的錯誤。如果讀取資料具有至少一個錯誤位元,則ECC解碼器312可以校正錯誤資料並輸出校正的讀取資料。從ECC解碼器312輸出的校正資料可以以資料符號的形式傳輸到主機。當校正的資料從ECC解碼器312傳輸到主機時,ECC解碼器312可以根據ECC解碼操作的結果將與校正的資料有關的錯誤資訊傳輸到錯誤日誌390。
在步驟420,微控制器380可以存取錯誤日誌390。在一個實施例中,微控制器380可以被配置為週期性地存取錯誤日誌390。微控制器380可以分析儲存在錯誤日誌390中的錯誤資訊,以確定是否需要改變錯誤校正模式。可以基於錯誤資訊的一個或多個部分進行該確定。在本實施例中,微控制器380的確定可以基於與資料符號中的錯誤的數量有關的資訊。在步驟430,微控制器380可以確定位於第L列位址的資料符號中的錯誤的數量是否等於或大於預定值。所述預定值可以被設置為等於ECC引擎310的錯誤校正能力、或者小於但接近ECC引擎310的錯誤校正能力。在一個實施例中,如果ECC引擎310具有能夠校正五個資料符號的錯誤校正級別,則所述預定值可以設置為五,或四,其小於五但接近五。
如果在步驟430確定位於第L列位址的資料符號中的錯誤的數量小於預定值,則錯誤校正操作返回到步驟410、並繼續在第一種錯誤校正模式中執行錯誤校正操作。如果在步驟430確定位於第L列位址的資料符號中的錯誤的數量等於或大於預定值,則錯誤校正操作進行到步驟440,在其中第一錯誤校正模式可以改變為第二錯誤校正模式,使得在與第一錯誤校正模式相比具有相對更高的錯誤校正級別的第二錯誤校正模式中執行錯誤校正操作。
如果如步驟440所示在第二錯誤校正模式中執行錯誤校正操作,則微控制器380可以將用於錯誤校正操作的第二錯誤校正模式的命令傳輸到命令控制器350。命令控制器350可以從微控制器380接收命令,並且可以將命令傳輸到調度器360,使得在讀取操作和寫入操作期間執行的錯誤校正操作在第二錯誤校正模式中執行。調度器360可以確定命令的處理順序,並且可以將所確定的命令的處理順序傳輸到PC控制器370,使得錯誤校正操作在第二錯誤校正模式中執行。PC控制器370可以產生用於命令的多個控制信號,使得ECC引擎310執行的錯誤校正操作在第二錯誤校正模式中執行。
圖4是示出用於解釋在第一錯誤校正模式中執行的錯誤校正操作的多個碼字的示意圖的示例。在本實施例中,可以假設四個碼字(例如,第一至第四碼字CW1~CW4)儲存在記憶體介質200中,每個碼字包括共用一個列位址的資料符號。圖4示出了多個碼字的具體示例,多個碼字的數量不限於四。也就是說,根據記憶體介質200的存儲容量,多個碼字的數量可以小於或大於四。參考圖4,第一碼字CW1可以被佈置在第一列並且被配置為包括資料符號DS00、DS01、DS02和DS03以及同位符號PS04和PS05。資料符號DS00、DS01、DS02和DS03以及同位符號PS04和PS05可以彼此共用第一列位址'0'以形成第一頁。第二碼字CW2可以被佈置在第二列並且被配置為包括資料符號DS10、DS11、DS12和DS13以及同位符號PS14和PS15。資料符號DS10、DS11、DS12和DS13以及同位符號PS14和PS15可以共用第二列位址'1'以形成第二頁。第三碼字CW3可以被佈置在第三列並且被配置為包括資料符號DS20、DS21、DS22和DS23以及同位符號PS24和PS25。資料符號DS20、DS21、DS22和DS23以及同位符號PS24和PS25可以共用第三列位址'2'以形成第三頁。第四碼字CW4可以佈置在第四列並且被配置為包括資料符號DS30、DS31、DS32和DS33以及同位符號PS34和PS35。資料符號DS30、DS31、DS32和DS33以及同位符號PS34和PS35可以共用第四列位址'3'以形成第四頁。
儘管同位符號PS40、PS41、PS42、PS43、PS44、PS45不構成第一至第四碼字CW1~CW4,但同位符號PS40、PS41、PS42、PS43、PS44、PS45可以佈置在第五列中。另外,同位符號PS50、PS51、PS52、PS53、PS54、PS55可以佈置在第六列中。第五列和第六列可以用於在第二錯誤校正模式中執行的錯誤校正操作中,但不用於在第一錯誤校正模式中執行的錯誤校正操作。雖然圖4示出了每個碼字被配置為包括四個資料符號和兩個同位符號的示例,但是所公開技術不限於圖4中所示的示例,其他實施方案也是可能的。例如,每個碼字中包括的資料符號和同位符號的數量可以被設置為與四個不同,並且具有各種值。
碼字CW1至CW4中的每一個可以通過在寫入操作期間在第一錯誤校正模式中執行的ECC編碼操作來產生。另外,每個碼字CW1~CW4中的一個或多個錯誤可以通過在讀取操作期間在第一錯誤校正模式中執行的ECC解碼操作來校正。可以針對從主機輸出的寫入資料符號來執行在寫入操作期間在第一錯誤校正模式中執行的ECC編碼操作。寫入資料符號可以彼此共用一個列位址。ECC編碼操作可以將同位符號添加到寫入資料符號,以產生碼字CW1~CW4。由ECC編碼操作產生的碼字可以儲存在記憶體介質200中。可以針對具有一個列位址的碼字執行在讀取操作期間執行的ECC解碼操作。可以在ECC解碼操作期間使用同位符號來校正資料符號中的錯誤。可以將校正的資料符號傳輸到主機。
如圖4中所示,將結合第一、第二和第四碼字CW1、CW2和CW4中的每一個包括至少一個錯誤資料符號的示例來描述在第一錯誤校正模式中執行的錯誤校正操作。更具體地,可以假設第一碼字CW1具有一個資料符號(即,資料符號DS01)作為其錯誤資料符號,第二碼字CW2具有一個資料符號(即,資料符號DS11)作為其錯誤資料符號,並且第四碼字CW4具有三個資料符號(即,資料符號DS30、DS31和DS32)作為其錯誤資料符號。另外,可以假設ECC引擎310具有為'3'的錯誤校正能力,並且在圖3的步驟430的預定值設置為'2'。如果用於具有列位址'0'的資料符號DS00至DS03的讀取命令發出,則被包括在儲存於記憶體介質200中的第一碼字CW1中的資料符號DS00至DS03以及同位符號PS04和PS05可以通過記憶體控制器300中包括的介質側實體層301和第一多工器341被輸入到ECC解碼器312。ECC解碼器312可以接收第一碼字CW1,以執行第一碼字CW1的ECC解碼操作。在ECC解碼操作期間,可以使用同位符號PS04和PS05將資料符號DS00至DS03中的第二資料符號DS01檢測為錯誤資料符號。由於第一碼字CW1中的錯誤資料符號的數量是一,其小於被設置為在步驟430中提到的預定值“二”,因此ECC解碼器312可以校正錯誤資料符號DS01並且可以連同非錯誤資料符號一起輸出校正的資料符號。包括校正的資料符號DS01的資料符號DS00至DS03可以通過第三解多工器346、第二解多工器345、資料管理器320和主機側實體層302從ECC解碼器312傳輸到主機。當用於具有列位址'1'的資料符號DS10至DS13的讀取命令發出時,可以以與資料符號DS01相同的方式校正錯誤資料符號DS11,並且包括校正的資料符號DS11的資料符號DS10至DS13可以從ECC解碼器312傳輸到主機。
如果用於具有列位址'3'的資料符號DS30至DS33的讀取命令發出,則第四碼字CW4中包括的資料符號DS30至DS33和同位(parity)符號PS34和PS35可以通過記憶體控制器300中包括的介質側實體層301和第一多工器341從記憶體介質200傳輸到ECC解碼器312。ECC解碼器312可以接收第四碼字CW4,以執行第四碼字CW4的ECC解碼操作。在ECC解碼操作期間,可以使用同位符號PS34和PS35將資料符號DS30至DS33中的資料符號DS30、DS31和DS32檢測為錯誤資料符號。由於第四碼字CW4中的錯誤資料符號的數量是三,其大於被設置為在步驟430中提到的預定值“二”,因此在第一錯誤校正模式中不能校正所述錯誤資料符號DS30、DS31和DS32。
如先前所討論的,ECC解碼器312可以與錯誤日誌390通信,以提供關於錯誤校正操作的資訊。在第一碼字CW1的資料符號DS00至DS03、第二碼字CW2的資料符號DS10至DS13、以及第四碼字CW4的資料符號DS30至DS33的讀取操作期間,ECC解碼器312可以傳輸關於錯誤校正的資訊至錯誤日誌390。在用於第一碼字CW1的資料符號DS00至DS03和第二碼字CW2的資料符號DS10至DS13的ECC解碼操作期間,從ECC解碼器312輸出的錯誤校正資訊可以包括第一和第二碼字CW1和CW2中的每一個中的錯誤資料符號的數量和錯誤資料符號的位置。如參考圖3的步驟420和430所描述的,微控制器380可以存取儲存在錯誤日誌390中的錯誤校正資訊,並且在錯誤校正資訊(例如,錯誤的數量)和預定值之間進行比較。對於第一碼字CW1的資料符號DS00至DS03和第二碼字CW2的資料符號DS10至DS13,微控制器380可以繼續第一錯誤校正模式、而不對錯誤校正模式進行任何改變,因為在第一和第二碼字CW1和CW2中的每一個中的錯誤資料符號的數量是一,其小於二,“二”為錯誤校正能力的預定值。
在用於第四碼字CW4的資料符號DS30至DS33的ECC解碼操作期間從ECC解碼器312輸出的錯誤校正資訊可以包括第四碼字CW4中的錯誤資料符號的數量和錯誤資料符號的位置。如參考圖3的步驟420和430所描述的,微控制器380可以存取儲存在錯誤日誌390中的錯誤校正資訊,並且在錯誤校正資訊(例如,錯誤的數量)和預定值之間進行比較。對於第四碼字CW4的資料符號DS30至DS33,微控制器380可以將第一錯誤校正模式改變為第二錯誤校正模式,以在第二錯誤校正模式中執行第四碼字CW4的錯誤校正操作,因為第四碼字CW4中的錯誤資料符號的數量是三,其大於二,“二”是錯誤校正能力的預定值。如果確定第一錯誤校正模式改變為第二錯誤校正模式,則微控制器380可以向命令控制器傳輸命令,用於在錯誤校正操作中執行第二錯誤校正模式。
圖5是示出錯誤校正操作的第二錯誤校正模式的流程圖的示例。參考圖5,如果微處理器380將用於第L頁(包括參考圖3描述的共用第L列位址的資料符號)的錯誤校正模式從第一錯誤校正模式改變為第二錯誤校正模式,則可以產生包括共用第L列位址的資料符號的乘積碼(參見步驟441)。乘積碼可包括列乘積碼和行乘積碼。每個列乘積碼包括具有相同列位址的資料,並且每個行乘積碼包括具有相同行位址的資料。參考圖6,第一至第四列乘積碼PCR1至PCR4中的每一個包括具有相同列位址的資料符號和同位符號,並且第一至第六行乘積碼PCC1至PCC6中的每一個包括具有相同行位址的資料符號或同位符號。因此,資料符號和同位符號中的每一個可以被包括在特定列乘積碼以及特定行乘積碼中。
如圖4中所示,存在某些列,例如,第(M+1)到第(M+i)列,其僅包括同位符號、而沒有任何資料符號。在這種情況下,數量'M'是包括資料符號的列乘積碼的數量。因此,多個列乘積碼中的每一個,例如,第一到第(M+i)列乘積碼可以被配置為包括共用第一到第M列位址中的任何一個的資料符號和同位符號、或者僅包括共用第(M+1)到第(M+i)列位址中的任何一個的同位符號。第L列可以是第一列到第M列中的任何一列。共用第(M+1)至第(M+ i)列位址中的任何一個的同位符號可以具有如下位元值,其由在列定向ECC編碼操作之後進行的行定向ECC編碼操作確定。因此,在行定向ECC編碼操作之前,共用第(M+1)至第(M+i)列位址中的任何一個的同位符號可以不具有任何位元值。由於存在僅包括同位符號的某些行,所以多個行乘積碼(例如,第一至第N行乘積碼)中的每一個可以被配置為包括共用第一至第N行位址中的任何一個的資料符號和同位符號、或者僅包括共用第(N+1)到第(N+j)行位址中的任何一個的同位符號。共用第一至第N行位址中的任何一個的同位符號不具有任何位元值。在這種情況下,數量'N'是包括具有位元值的資料符號和不具有位元值的同位符號兩者的行位址的數量。因此,每個資料符號可以被包括在任何一個列乘積碼中以及任何一個行乘積碼中。例如,由列位址'M-1'和行位址'N-1'指定的資料符號可以被包括在列位址為'M-1'的列乘積碼中、以及行地址為'N-1'的行乘積碼中。
在產生乘積碼之後,可以執行用於列乘積碼中的第一至第M列乘積碼中的每一個列乘積碼的列定向ECC編碼操作,以產生列乘積碼字(參見步驟442)。由於第(M+1)至第(M+i)列乘積碼中的每一個列乘積碼中的同位符號不具有任何位元值,因此在步驟442不對第(M+1)到第(M+i)列乘積碼應用ECC編碼操作。隨後,可以執行用於行乘積碼的行定向ECC編碼操作,以產生行乘積碼字(參見步驟443)。可以通過在步驟443執行的行定向ECC編碼操作來確定第(M+1)到第(M+i)列乘積碼中包括的每一個列乘積碼中的同位符號的位元值。接下來,可以將通過在步驟442執行的列定向ECC編碼操作和在步驟443執行的行定向ECC編碼操作產生的乘積碼字寫入記憶體介質(圖1的200)(參見步驟444)。
圖6是示出針對錯誤校正操作的第二錯誤校正模式產生的乘積碼(PC)的示例的示意圖的示例。在本實施例中,可以假設乘積碼(PC)包括六個列乘積碼(例如,第一至第六列乘積碼)和六個行乘積碼(例如,第一至第六行乘積碼PCC1至PCC6),儘管圖6中未示出第五和第六列乘積碼PCR5和PCR6。在圖6中,僅示出了包括資料符號和同位符號兩者的第一至第四列乘積碼PCR1至PCR4。在圖6中,未示出僅包括同位符號、且不具有任何同位檢查位元值的第五和第六列乘積碼。參考圖6,在儲存於記憶體介質200中的資料符號中,具有列位址'1'的四個資料符號DS10至DS13是錯誤資料符號,因此,錯誤資料符號DS10至DS13的數量變為四。因此,錯誤資料符號的數量可大於ECC引擎310的錯誤校正能力(例如,3)。如果在第一錯誤校正模式中執行錯誤校正操作,則不能校正所有的錯誤資料符號DS10~DS13,因為錯誤資料符號DS10到DS13的數量(即,四)大於如圖3的步驟430中所提及的預定值(即,二)。在這種情況下,用於資料符號DS10至DS13的錯誤校正操作的錯誤校正模式可以從第一錯誤校正模式改變為第二錯誤校正模式。如果用於資料符號DS10至DS13的錯誤校正模式改變為第二錯誤校正模式,則可以通過步驟441產生乘積碼PC。可以在第二錯誤校正模式中執行用於乘積碼PC的錯誤校正操作,以便校正所有的錯誤資料符號DS10至DS13。下面將參考附圖詳細描述用於乘積碼PC的錯誤校正操作。
在一些實施方案中,乘積碼PC可以包括:包含資料符號和同位符號兩者的四個列乘積碼(例如,第一至第四列乘積碼PCR1至PCR4)、以及僅包含同位符號的兩個列乘積碼(未示出)。乘積碼PC可以包括多個行乘積碼,例如,第一至第六行乘積碼PCC1至PCC6。在乘積碼PC所包括的第一至第四列乘積碼PCR1至PCR4中,第二列乘積碼PCR2可以具有錯誤資料符號DS10至DS13,其數量等於或大於預定值。第一至第四列乘積碼PCR1至PCR4可以具有彼此相鄰的列位址。第一至第四列乘積碼PCR1至PCR4中的每一個可包括資料符號和同位符號兩者。第一列乘積碼PCR1可以被配置為包括共用列位址'0'的資料符號DS00至DS03以及同位符號PS04和PS05。第二列乘積碼PCR2可以被配置為包括共用列位址'1'的資料符號DS10至DS13以及同位符號PS14和PS15。第三列乘積碼PCR3可以被配置為包括共用列位址'2'的資料符號DS20至DS23以及同位符號PS24和PS25。第四列乘積碼PCR4可以被配置為包括共用列位址'3'的資料符號DS30至DS33以及同位符號PS34和PS35。
第一行乘積碼PCC1可以被配置為包括資料符號DS00至DS30和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'0'。第二行乘積碼PCC2可以被配置為包括資料符號DS01至DS31和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'1'。第三行乘積碼PCC3可以被配置為包括資料符號DS02至DS32和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'2'。第四行乘積碼PCC4可以被配置為包括資料符號DS03至DS33和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'3'。第五行乘積碼PCC5可以被配置為包括資料符號DS04至DS34和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'4'。第六行乘積碼PCC6可以被配置為包括資料符號DS05至DS35和不具有同位檢查位元值的同位符號(未示出),它們彼此共用行地址'5'。
圖7是示出在錯誤校正操作的第二錯誤校正模式期間產生列乘積碼字的過程的流程圖的示例。圖8示出了在執行圖7的步驟442-2至442-5時、圖1中所示的記憶體系統100的記憶體控制器300中的示例性資料交換路徑。圖9示出了在圖7所示的產生列乘積碼字的步驟被執行之後、在圖1所示的記憶體系統100的記憶體控制器300所包括的第一緩衝器331中儲存的列乘積碼字的示例。在圖8中,資料交換路徑用粗體箭頭表示。參見圖7、圖8和圖9,如果當錯誤校正模式從第一錯誤校正模式改變到第二錯誤校正模式時產生圖6中所示的乘積碼PC,則計數器的計數值可以被重置為零'0'(參見步驟442-1)。在一個實施例中,計數器可以被包括在記憶體控制器300的PC控制器370中。代替地,計數器可以被包括在記憶體控制器300的調度器360中。當計數值為零,並且從記憶體介質200可以進行讀出(參見步驟442-2)時,在乘積碼所包括的列乘積碼當中,第一列乘積碼(圖6的PCR1)對應於第(計數值+1)列乘積碼。如圖8中所示,從記憶體介質200讀出的第一列乘積碼(圖6的PCR1)可以通過介質側實體層301和第一多工器341輸入到ECC解碼器312。ECC解碼器312可以接收來自記憶體介質200的第一列乘積碼(圖6的PCR1),以對第一列乘積碼(圖6的PCR1)執行列定向ECC解碼操作(參見步驟442-3)。第一列中包括的資料符號DS00至DS03可以通過列定向ECC解碼操作來解碼,並且可以通過第三解多工器346、第二解多工器345,第二多工器342和第三多工器343傳輸到ECC編碼器311。
ECC編碼器311可以對解碼的資料符號DS00至DS03執行列定向ECC編碼操作,以產生第(計數值+1)列乘積碼字,即第一列乘積碼字PCWR1(參見步驟442-4)。由在步驟442-4執行的列定向ECC編碼操作產生的第一列乘積碼字PCWR1可以通過第一解多工器344儲存在第一緩衝器331中(參見步驟442-5)。在步驟442-5之後,包括資料符號DS00至DS03以及同位符號PS04和PS05的第一列乘積碼字PCWR1可以儲存在第一緩衝器331中,如圖9所示。隨後,計數值可以增加一(參見步驟442-6)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M'(參見步驟442-7)。數量'M'可以定義為包括資料符號的列乘積碼的數量。因此,在如圖6中所示的本實施例中,數量'M'可以設置為四。在這種情況下,由於在步驟442-7確定計數值不等於數量'M',即“四”,其與包括任何資料符號的列乘積碼的數量相對應,所以該過程返回到步驟442-2。由於在步驟442-6處計數值已從零增加到一,所以第(計數值+1)列乘積碼變為第二列乘積碼PCR2,因此,步驟442-2到442-7可以針對第二列乘積碼PCR2而重複。類似地,可以針對第三和第四列乘積碼PCR3和PCR4中的每一個而重複步驟442-2到442-7,直到計數值等於數量'M'、即圖6中所示的示例中的“四”為止。
在針對第一至第四列乘積碼PCR1至PCR4中的每一個執行步驟442-2至442-5之後,具有資料符號DS00至DS03和同位符號PS04和PS05的第一列乘積碼字PCWR1、具有資料符號DS10至DS13和同位符號PS14和PS15的第二列乘積碼字PCWR2、具有資料符號DS20~DS23和同位符號PS24和PS25的第三列乘積碼字PCWR3、以及具有資料符號DS30~DS33和同位符號PS34和PS35的第四列乘積碼字PCWR4可以儲存在第一緩衝器331中,如圖9所示。
圖10是示出在錯誤校正操作的第二錯誤校正模式期間產生行乘積碼字的過程的流程圖的示例。圖11示出了在執行圖10的步驟443-2至443-4時、圖1中所示的記憶體系統100的記憶體控制器300中的示例性資料交換路徑。圖12示出了在圖10中的產生行乘積碼字的步驟被執行之後,在圖1所示的記憶體系統100的記憶體控制器300所包括的第一緩衝器331中儲存的列乘積碼字和行乘積碼字的示例。在圖11中,資料交換路徑用粗體箭頭表示。參考圖5、圖7和圖10,當計數值等於數量'M'時圖5的步驟442終止,並且過程進行到步驟443-1,在其中計數器的計數值可以被重置為零'0'。可以從第一緩衝器331中讀出與儲存在第一緩衝器331中的第(計數值+1)行乘積碼相對應的第一行乘積碼的資料符號DS00至DS30(參見步驟443-2)。如圖11所示,從第一緩衝器331讀出的、第一行乘積碼的資料符號DS00至DS30可以通過第三多工器343輸入到ECC編碼器311。ECC編碼器311可以執行用於第一行乘積碼的資料符號DS00至DS30的行定向ECC編碼操作,並且可以輸出ECC編碼的資料符號作為第一行乘積碼字PCWC1(參見步驟443-3)。從ECC編碼器311輸出的第一行乘積碼字PCWC1可以通過第一解多工器344儲存到第一緩衝器331中(參見步驟443-4)。
隨後,計數值可以增加一(參見步驟443-5)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'N+j'(參見步驟443-6)。數量'N+j'可以被定義為乘積碼(圖6的PC)中包括的所有的行乘積碼的數量。因此,在如圖6所示的本實施例中,數量'N+j'可以設置為六。由於在步驟443-6確定計數值不等於數量'N+j'、例如六,其對應於乘積碼(圖中6的PC)中包括的所有的行乘積碼的數量,因此該過程返回到步驟443-2。由於計數值已經增加一並且在前一步驟443-5從零變為一,所以第(計數值+1)行變為第二行,因此,可以針對第二行乘積碼PCC2而重複步驟443-2至443-5。類似地,可以針對第三至第六行乘積碼PCC3至PCC6中的每一個而重複步驟443-2至443-5,直到計數值等於'N+J'、即圖6所示的示例中的“六”。
在針對乘積碼(圖6的PC)中包括的所有的第一至第六行乘積碼PCC1至PCC6執行步驟443-2至443-5之後,第一至第六行乘積碼字PCWC1至PCWC6可以與第一至第六列乘積碼字PCWR1至PCWR6一起儲存在第一緩衝器331中,如圖12所示。可以在對第一至第四列乘積碼(圖6的PCR1至PCR4)進行列定向編碼操作期間產生第一至第四列乘積碼字PCWR1至PCWR4,所述列定向編碼操作是在圖7的步驟442-4執行的。可以在對第一至第六行乘積碼(圖6的PCC1至PCC6)的行定向ECC編碼操作期間產生第五和第六列乘積碼字PCWR5和PCWR6以及第一至第六行乘積碼字PCWC1至PCWC6,所述行定向ECC編碼操作是在圖10的步驟443-3執行的。
第五列乘積碼字PCWR5可以被配置為包括彼此共用列位址'4'的同位符號PS40至PS45。第六列乘積碼字PCWR6可以被配置為包括彼此共用列位址'5'的同位符號PS50至PS55。第一行乘積碼字PCWC1可以被配置為包括彼此共用行位址'0'的資料符號DS00至DS30以及同位符號PS40和PS50。第二行乘積碼字PCWC2可以被配置為包括彼此共用行位址'1'的資料符號DS01至DS31以及同位符號PS41和PS51。第三行乘積碼字PCWC3可以被配置為包括彼此共用行位址'2'的資料符號DS02至DS32以及同位符號PS42和PS52。第四行乘積碼字PCWC4可以被配置為包括彼此共用行位址'3'的資料符號DS03至DS33以及同位符號PS43和PS53。第五行乘積碼字PCWC5可以被配置為包括彼此共用行位址'4'的同位符號PS04和PS54。第六行乘積碼字PCWC6可以被配置為包括彼此共用行位址'5'的同位符號PS05和PS55。
圖13是示出將在錯誤校正操作的第二錯誤校正期間產生的乘積碼字寫入記憶體介質的過程的流程圖的示例。圖14示出了在執行圖13的步驟444-2和444-3時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖15示出了在執行圖13的步驟444之後、在圖1所示的記憶體系統1所包括的記憶體介質200中儲存的列乘積碼字和行乘積碼字的示例。在圖14中,資料交換路徑用粗體箭頭表示。參考圖13、圖14和圖15,計數器的計數值可以被重置為零'0'(參見步驟444-1)。可以從第一緩衝器331讀出與儲存在第一緩衝器331中的第(計數值+1)列乘積碼字相對應的第一列乘積碼字PCWR1(參見步驟444-2)。從第一緩衝器331讀出的第一列乘積碼字PCWR1中的資料符號DS00至DS03和同位符號PS04和PS05可以被寫入記憶體介質200的第(計數值+1)行地址(即,第一列位址)(參見步驟444-3)。具體而言,如圖14中所示,從第一緩衝器331輸出的、第一列乘積碼字PCWR1的資料符號DS00至DS03和同位符號PS04和PS05可以通過第三多工器343輸入ECC編碼器311。PC控制器370可以施加如下控制信號到ECC編碼器311,其用於去能ECC編碼器311的操作、並使ECC編碼器311用作傳送資料符號DS00至DS03和同位符號PS04和PS05的傳送門。從ECC編碼器311輸出的同位符號PS04和PS05以及資料符號DS00至DS03可以通過第一解多工器344和介質側實體層301寫入記憶體介質200。
隨後,計數值可以增加一(參見步驟444-4)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M+i'(參見步驟444-5)。數量'M+i'可以被定義為所有的列乘積碼字的數量。因此,在如圖12中所示的本實施例中,數量'M+i'可以設置為六。由於在步驟444-5確定計數值不等於數量'M+i'、即對應於所有的列乘積碼字的數量“六”,所以過程進行到步驟444-2。因此,可以針對第二列乘積碼字PCWR2而重複步驟444-2到444-5。類似地,可以針對第三至第六列乘積碼字PCWR3至PCWR6中的每一個而重複步驟444-2至444-5,直到計數值等於數量'M+i'、即在該示例中的“六”為止。在針對乘積碼字中包括的第一至第六列乘積碼字PCWR1至PCWR6中的每一個執行步驟444-2至444-5之後,包括第一至第六行乘積碼字PCWC1至PCWC6和第一至第六列乘積碼字PCWR1至PCWR6的乘積碼字可以儲存在記憶體介質200中,如圖15所示。參考圖15,儲存在記憶體介質200中的乘積碼字可以具有與儲存在第一緩衝器331中相同的形式。
圖16是示出響應於用於記憶體系統100中的乘積碼字中包括的資料的讀取命令、在第二錯誤校正模式中執行的讀取操作的流程圖的示例。參考圖16,在步驟451,可以接收用於讀取乘積碼字中包括的資料的讀取命令。讀取命令可以從主機輸出。在步驟452,記憶體系統100可以執行用於乘積碼字的列定向ECC解碼操作。可以針對乘積碼字中包括的每個列乘積碼字執行列定向ECC解碼操作。隨後,在步驟453,記憶體系統100可以執行用於乘積碼字的行定向ECC解碼操作。可以針對乘積碼字中包括的每個行乘積碼字執行行定向ECC解碼操作。在步驟454,記憶體系統100可以執行用於具有讀取資料的列位址的列乘積碼字的列定向ECC解碼操作(參見步驟454)。隨後,可以將在步驟454產生的列定向ECC解碼的資料符號傳輸到主機(參見步驟455)。
圖17是示出執行圖16的讀取操作中包括的列定向ECC解碼操作的過程的流程圖的示例。圖18示出了在執行圖17的步驟452-2至452-6時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖19示出了在圖17的步驟452-2至452-6被執行之後、在記憶體控制器300所包括的第二緩衝器332中儲存的資料符號和同位符號的示例。圖20示出了在執行圖17的步驟452-7時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖21示出了在圖17的步驟452-7被執行之後、在記憶體控制器300所包括的第二緩衝器332中儲存的資料符號和同位符號的示例。在圖18和20中,資料交換路徑用粗體箭頭表示。將結合產生用於具有列位址'1'的第二頁的讀取命令的情況來描述根據本實施例的讀取操作。
參考圖17,在步驟451接收到讀取命令之後,可以在步驟452-1將計數值重置為零'0'。在步驟452-2,記憶體控制器300可以讀取儲存在記憶體介質200中的乘積碼字中的第(計數值+1)列乘積碼字。如圖18所示,從記憶體介質200讀出的第一列乘積碼字PCWR1可以通過介質側實體層301和第一多工器341輸入到ECC解碼器312。在步驟452-3,ECC解碼器312可以執行用於第一列乘積碼字PCWR1的列定向ECC解碼操作。可以通過在步驟452-3執行的列定向ECC解碼操作而從ECC解碼器312輸出具有列位址'0'的資料符號DS00至DS03和同位符號PS04和PS05。針對在後續的行定向ECC解碼操作期間執行的錯誤校正操作,同位符號PS04和PS05可不被去除。在步驟452-4,從ECC解碼器312輸出的資料符號DS00至DS03和同位符號PS04和PS05可以通過第三解多工器346儲存到第二緩衝器332中。
隨後,計數值可以增加一(參見步驟452-5)。因此,計數值可以從零變為一。接下來,在步驟452-6確定計數值是否等於數量'M'。如所討論的,數量'M'可以被定義為包括資料符號的列乘積碼字的數量。數量'M'可以設置為等於包括資料符號的列乘積碼的數量。對於圖12的具體示例,數量'M'可以設置為4。在這種情況下,由於在步驟452-6確定計數值不等於'M'、即“四”,所以過程返回到步驟452-2。由於在前一步驟452-5計數值已增加一,因此第(計數值+1)變為二,並且可針對第二列乘積碼字PCWR2執行步驟452-2至452-6。類似地,可以針對第三和第四列乘積碼字PCWR3和PCWR4中的每一個而重複步驟452-2到452-6,直到計數值變得等於'M'為止。
在針對包括資料符號的第一至第四列乘積碼字PCWR1至PCWR4中的每一個執行步驟452-2至452-6之後,第二緩衝器332可以儲存具有列位址'0'的資料符號DS00至DS03和同位符號PS04和PS05、具有列位址'1'的資料符號DS10至DS13以及同位符號PS14和PS15、具有列位址'2'的資料符號DS20至DS23以及同位符號PS24和PS25、以及具有列位址'3'的資料符號DS30至DS33以及同位符號PS34和PS35,如圖19所示。即使在圖17的步驟452-3執行用於第二列乘積碼字(圖15的PCWR2)的列定向ECC解碼操作,但是第二列乘積碼字PCWR2可能仍然具有未校正的錯誤資料,因為第二列乘積碼字PCWR2中的錯誤資料符號的數量(即'4')大於三、即ECC引擎(圖1中的310)的錯誤校正能力。
如果在步驟452-6確定計數值等於數量'M',其是包括資料符號的列乘積碼字的數量,該數量在圖12的具體示例中為四,這意味著已經針對包括至少一個資料符號的所有的列乘積碼字完成了ECC解碼操作。在這種情況下,可以從記憶體介質200讀取僅包括同位符號、而不具有資料符號的列乘積碼字,並且可以將其儲存到第二緩衝器332中(參見步驟452-7)。如圖20中所示,可以通過介質側實體層301和第一多工器341從記憶體介質200讀取僅包括同位符號PS40至PS45的第五列乘積碼字PCWR5,並且可以將其輸入到ECC解碼器312。ECC解碼器312可以被操作為跳過用於第五列乘積碼字PCWR5的ECC解碼操作,並且可以將第五列乘積碼字PCWR5輸出到第三解多工器346。為了防止ECC解碼器312對第五列乘積碼字PCWR5執行ECC解碼操作,PC控制器370可以將用於去能ECC解碼器312的ECC解碼操作的控制信號輸出到ECC解碼器312。第三解多工器346可以將第五列乘積碼字PCWR5傳輸到第二緩衝器332,並且第五列乘積碼字PCWR5可以被儲存到第二緩衝器332中。記憶體介質200中的第六列乘積碼字PCWR6也可以通過與結合第五列乘積碼字PCWR5而描述的相同方式儲存到第二緩衝器332中。結果,在執行圖17的步驟452-7之後,具有列位址'4'的同位符號PS40至PS45和具有列位址'5'的同位符號PS50至PS55可以附加地儲存到如圖21所示的第二緩衝器332中。
圖22是示出在圖16的讀取操作中執行行定向ECC解碼操作的過程的流程圖的示例。圖23和圖24示出了在執行圖22的步驟453-2至453-6時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖25至圖30示出了在圖17的步驟452-2至452-6被執行之後、在圖1的記憶體系統100所包括的第二緩衝器332中儲存的資料符號和同位符號。在圖23和圖24中,資料交換路徑用粗體箭頭表示。參考圖22,在圖16的步驟452被執行之後,在步驟453-1,計數值可以被重置為零。記憶體控制器300可以讀取與儲存在第二緩衝器332中的第(計數值+1)行乘積碼字相對應的第一行乘積碼字的資料符號DS00至DS30和同位符號PS40和PS50(參見步驟453-2)。
如圖23中所示,從第二緩衝器332讀出的資料符號DS00至DS30和同位符號PS40和PS50可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS00至DS30和同位符號PS40和PS50的行定向ECC解碼操作,以輸出行定向ECC解碼的資料符號和同位符號(見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的資料符號和同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖25中所示,行定向ECC解碼的資料符號DS00至DS30和同位符號PS40和PS50可以儲存到第二緩衝器332中。如圖25所示,在資料符號DS00至DS30中存在一個錯誤資料符號DS10,因此,通過行定向ECC解碼操作解碼的錯誤資料符號的數量可以是一,其小於ECC引擎(圖1的310)的錯誤校正能力。因此,在圖22的步驟453-3執行的行定向ECC解碼操作期間,可以使用同位符號PS40和PS50來校正對應於錯誤資料符號的資料符號DS10,並且可以將校正的資料符號DS10儲存在第二緩衝器332中。這與列定向ECC解碼操作不同,在所述列定向ECC解碼操作中不校正第二列乘積碼字中包含的錯誤資料符號DS10。
隨後,在步驟453-5,計數值可以增加一。因此,計數值可以從零變為一。接下來,在步驟453-6確定計數值是否等於數量'N+j'。數量'N+j'可以被定義為乘積碼字中包括的所有的行乘積碼字的數量。數量'N+j'可以等於乘積碼PC中包含的所有的行乘積碼的數量。因此,數量'N+j'可以設置為六。由於在步驟453-6確定計數值不等於數量'N+j',例如在該具體示例中的“六”,因此該過程返回到步驟453-2。由於計數值在前一步驟453-5增加了一,所以第(計數值+1)變為2。因此,可以從第二緩衝器332讀出第二行中的資料符號DS01至DS31和同位符號PS41和PS51(參見步驟453-2)。如圖23中所示,從第二緩衝器332讀出的資料符號DS01至DS31和同位符號PS41和PS51可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS01至DS31和同位符號PS41和PS51的行定向ECC解碼操作,以輸出行定向ECC解碼的資料符號和同位符號(參見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的資料符號和同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖26中所示,行定向ECC解碼的資料符號DS01至DS31以及同位符號PS41和PS51可以儲存到第二緩衝器332中。如圖26中所示,在資料符號DS01至DS31中存在一個錯誤資料符號DS11,因此,要通過行定向ECC解碼操作解碼的錯誤資料符號的數量可以是一,其小於ECC引擎(圖1中的310)的錯誤校正能力。因此,在圖22的步驟453-3執行的行定向ECC解碼操作期間,可以使用同位符號PS41和PS51來校正與錯誤資料符號相對應的資料符號DS11,並且可以將校正的資料符號DS11儲存在第二緩衝器332中。
隨後,計數值可以增加一(參見步驟453-5)。因此,計數值可以從一變為二。接下來,在步驟453-6確定計數值是否等於數量'N+j',其在該具體示例中為六。由於在步驟453-6確定計數值不等於對應於數量'N+j'的“六”,所以該過程進行到步驟453-2。由於計數值在前一步驟453-5增加了一,所以第(計數值+1)變為三。因此,可以從第二緩衝器332讀出對應於第(計數值+1)行的第三行中的資料符號DS02至DS32和同位符號PS42和PS52(參見步驟453-2)。如圖23中所示,從第二緩衝器332讀出的資料符號DS02到DS32以及同位符號PS42和PS52可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS02到DS32和同位符號PS42和PS52的行定向ECC解碼操作,以輸出行定向ECC解碼的資料符號和同位符號(見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的資料符號和同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖27中所示,行定向ECC解碼的資料符號DS02至DS32和同位符號PS42和PS52可以儲存在第二緩衝器332中。如圖27所示,在資料符號DS02至DS32中存在一個錯誤資料符號DS12,因此,要通過行定向ECC解碼操作解碼的錯誤資料符號的數量可以是一,其小於ECC引擎(圖1中的310)的錯誤校正能力。因此,在圖22的步驟453-3執行的行定向ECC解碼操作期間,可以使用同位符號PS42和PS52來校正與錯誤資料符號相對應的資料符號DS12,並且可以將校正的資料符號DS12儲存在第二緩衝器332中。
隨後,計數值可以增加一(參見步驟453-5)。因此,計數值可以從二變為三。接下來,在步驟435-6確定計數值是否等於數量'N+j',其在該具體示例中為“六”。由於在步驟453-6確定計數值不等於對應於數量'N+j'的“六”,所以過程進行到步驟453-2。計數值在前一步驟453-5已經增加了一,使得第(計數值+1)變為四。因此,可以從第二緩衝器332讀出對應於第(計數值+1)行的第四行中的資料符號DS03至DS33和同位符號PS43和PS53(參見步驟453-2)。如圖23所示,從第二緩衝器332讀出的資料符號DS03~DS33和同位符號PS43和PS53可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS03至DS33和同位符號PS43和PS53的行定向ECC解碼操作,以輸出行定向ECC解碼的資料符號和同位符號(見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的資料符號和同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖28中所示,行定向ECC解碼的資料符號DS03至DS33和同位符號PS43和PS53可以儲存在第二緩衝器332中。如圖28所示,在資料符號DS03至DS33中存在一個錯誤資料符號DS12,因此,要通過行定向ECC解碼操作解碼的錯誤資料符號的數量可以是一,其小於ECC引擎(圖1中的310)的錯誤校正能力。因此,在圖22的步驟453-3執行的行定向ECC解碼操作期間,可以使用同位符號PS43和PS53來校正與錯誤資料符號相對應的資料符號DS13,並且可以將校正的資料符號DS13儲存在第二緩衝器332中。
隨後,計數值可以增加一(參見步驟453-5)。因此,計數值可以從三變為四。接下來,在步驟435-6確定計數值是否等於數量'N+j',其在該具體示例中為六。由於在步驟453-6確定計數值不等於對應於數量'N+j'的“六”,所以過程進行到步驟453-2。由於計數值在前一步驟453-5已經增加了一,所以第(計數值+1)變為五。因此,可以從第二緩衝器332讀出對應於第(計數值+1)行的第五行中的同位符號PS04至PS54(參見步驟453-2)。如圖24中所示,從第二緩衝器332讀出的同位符號PS04到PS54可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於同位符號PS04至PS54的行定向ECC解碼操作,以輸出行定向ECC解碼的同位符號(見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖29中所示,行定向ECC解碼的同位符號PS04至PS54可以儲存在第二緩衝器332中。圖29示出在第五行中不存在錯誤的同位符號。即使在計數值變為四之前、在同位符號PS04至PS34中的一些中產生錯誤,只要同位符號PS04至PS34中的錯誤同位符號的數量小於ECC引擎(圖1的310)的錯誤校正能力,就可以在行定向ECC解碼操作步驟453-3期間使用同位符號PS44和PS54來校正錯誤的同位符號。
隨後,計數值可以增加一(參見步驟453-5)。因此,計數值可以從四變為五。接下來,在步驟453-6確定計數值是否等於數量'N+j',其在該具體示例中為六。由於在步驟453-6確定計數值不等於對應於數量'N+j'的“六”,所以過程進入步驟453-2。計數值在前一步驟453-5已經增加了一,使得第(計數值+1)變為六。因此,可以從第二緩衝器332讀出對應於第(計數值+1)行的第六行中的同位符號PS05~PS55(參見步驟453-2)。如圖24中所示,從第二緩衝器332讀出的同位符號PS05到PS55可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於同位符號PS05到PS55的行定向ECC解碼操作,以輸出行定向ECC解碼的同位符號(見步驟453-3)。從ECC解碼器312輸出的行定向ECC解碼的同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟453-4)。如圖30中所示,行定向ECC解碼的同位符號PS05至PS55可以儲存在第二緩衝器332中。圖30示出在第五行中不存在錯誤的同位符號。即使在計數值變為五之前、在同位符號PS05至PS35中的一些中產生錯誤,也可以在步驟453-3執行的行定向ECC解碼操作期間使用同位符號PS45和PS55來校正錯誤的同位符號,如果同位符號PS05至PS35中的錯誤的同位符號的數量小於ECC引擎(圖1的310)的錯誤校正能力。接下來,計數值可以增加一(參見步驟453-5)。因此,計數值可以從五變為六。隨後,在步驟453-6確定計數值是否等於數量'N+j',其在該具體示例中為六。由於在步驟453-6確定計數值等於對應於數量'N+j'的六,所以過程進行到圖16的步驟454。
圖31是示出執行圖16所示的讀取操作中的用於乘積碼字的行定向ECC解碼操作的過程的流程圖的示例,圖32示出了在執行圖31的步驟454-1至454-3時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。在圖32中,資料交換路徑用粗體箭頭表示。參考圖31和圖32,記憶體控制器300可以在步驟454-1從第二緩衝器332讀取具有列位址的資料符號和同位符號。作為示例,提供了對記憶體控制器300讀取具有列位址'1'的資料符號DS10至DS13以及同位符號PS14和PS15的情況的描述。如圖32中所示,從第二緩衝器332讀出的資料符號DS10至DS13和同位符號PS14和PS15可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS10至DS13和同位符號PS14和PS15的列定向ECC解碼操作(參見步驟454-2)。如關於圖22至圖30所討論的,通過行定向ECC解碼操作,儲存在第二緩衝器中的資料符號DS10至DS13是已經經過錯誤校正的資料符號。另外,即使在步驟454之前在同位符號PS14和PS15中的至少一個中產生錯誤,也可以通過在圖22的步驟453-3執行的行定向ECC解碼操作來校正錯誤的同位符號PS14或PS15。因此,在步驟454-2從ECC解碼器312輸出的所有的列定向ECC解碼的資料符號DS10至DS13可以都已被錯誤校正。從ECC解碼器312輸出的ECC解碼的資料符號DS10至DS13可以被傳輸到主機(參見步驟454-3)。具體地,從ECC解碼器312輸出的ECC解碼的資料符號DS10至DS13可以通過第三解多工器346和第二解多工器345傳輸到資料管理器320,並且資料管理器320可以通過主機側實體層302將ECC解碼的資料符號DS10至DS13傳輸給主機。
圖33至圖35是示出當錯誤數量大於記憶體系統中ECC引擎的錯誤校正能力時、用於校正錯誤的過程的示意圖。為了校正錯誤,使用根據所公開技術的實施例的記憶體系統的固定ECC引擎。如圖33中所示,在本實施例中,可以假設:具有列位址'0'的資料符號DS00至DS03中的資料符號DS00是錯誤資料符號,具有列位址'1'的所有的資料符號DS10至DS13是錯誤資料符號,具有列位址'2'的資料符號DS20至DS23中的資料符號DS23是錯誤資料符號,以及具有列位址'3'的資料符號DS30至DS33中的資料符號DS30是錯誤的資料符號。如果ECC編碼器311和ECC解碼器312具有固定的錯誤校正能力'2',則具有列位址'1'的錯誤資料符號的數量是比'2'大的四,因此,不能使用一般的錯誤校正操作來校正具有列位址'1'的錯誤資料符號DS10至DS13。然而,所公開的技術提供了即使當錯誤資料符號的數量大於ECC編碼器311和ECC解碼器312的固定錯誤校正能力(例如,在該具體示例中為'2')時,仍然可以校正所有的錯誤資料符號的實施方案。
圖34說明了列定向ECC解碼操作的示例。如圖34中所示,針對每列進行列定向ECC解碼操作。用於具有第一列位址'0'的資料的列定向ECC解碼操作校正錯誤資料符號DS00,因為錯誤資料符號的數量是'1',其小於'2'。與第一列位址'0'不同,列定向ECC解碼操作不能校正錯誤資料符號DS10至DS13,因為錯誤資料符號DS10至DS13的數量是'4',其大於ECC編碼器311和ECC解碼器312的固定錯誤校正能力。可以通過執行用於具有第三列位址的資料的列定向ECC解碼操作來校正具有第三列位址'2'的錯誤資料符號DS23。類似地,可以通過執行用於具有第四列位址的資料的列定向ECC解碼操作來校正具有第四列位址'3'的錯誤資料符號DS30。
圖35說明了行定向ECC解碼操作的示例。如圖35中所示,針對每行進行行定向ECC解碼操作。如關於圖34所討論的,使用列定向ECC解碼操作校正了除了具有列位址'1'的錯誤資料符號DS10至DS13之外的所有的錯誤資料符號。如果執行用於具有行位址'0'的資料符號DS00至DS30的行定向ECC解碼操作,則可以校正錯誤資料符號DS10。如果執行用於具有行位址'1'的資料符號DS01至DS31的行定向ECC解碼操作,則可以校正錯誤資料符號DS11。如果執行用於具有行位址'2'的資料符號DS02到DS32的行定向ECC解碼操作,則可以校正錯誤資料符號DS12。如果執行用於具有行位址'3'的資料符號DS03至DS33的行定向ECC解碼操作,則可以校正錯誤資料符號DS13。在上文中,已經解釋了對資料符號執行列定向解碼操作和行定向解碼操作。所公開的技術不限於此,並且其他實施方案也是可能的,使得對同位符號以及資料符號執行列定向解碼操作和行定向解碼操作。例如,雖然圖中未示出,但是如果在具有行位址'4'的同位符號PS04至PS34和具有行位址'5'的同位符號PS05至PS35中包括一些錯誤同位符號,則可以通過執行用於具有行位址'4'的同位符號PS04至PS34和具有行位址'5'的同位符號PS05~PS35的行定向ECC解碼操作來校正行位址'4'和'5'中的錯誤同位符號。
圖36是示出響應於用於將乘積碼字中包括的資料儲存到圖1所示的記憶體系統100中的存儲區域中的寫入命令、在第二錯誤校正模式中執行的寫入操作的流程圖的示例。參考圖36,在步驟461,記憶體控制器300可以接收用於將乘積碼字儲存到記憶體介質200中的寫入命令。響應於寫入命令,記憶體控制器300可以依序地執行:在第二錯誤校正模式中的ECC解碼操作、資料組合操作、在第二錯誤校正模式中的ECC編碼操作、和寫入操作。為了在第二錯誤校正模式中執行ECC解碼操作,記憶體控制器300可以執行用於包括至少一個資料符號的列乘積碼字的第一列定向ECC解碼操作(參見步驟462)。接下來,記憶體控制器300可以執行用於行乘積碼字的行定向ECC解碼操作(參見步驟463)。經受列定向ECC解碼操作和行定向ECC解碼操作的列乘積碼字和行乘積碼字可以儲存在記憶體介質200中。隨後,記憶體控制器300可以執行用於包括資料符號的列乘積碼字的第二列定向ECC解碼操作(參見步驟464)。在步驟462至464執行ECC解碼操作之後,可以執行資料組合操作(參見步驟465)。可以通過利用具有寫入資料所位於的特定列位址的資料符號來替換由步驟462至464的ECC解碼操作產生的資料符號中的具有相同列位址的資料符號,來執行資料組合操作。接下來,記憶體控制器300可以執行用於由步驟465產生的組合的資料符號的列定向ECC編碼操作(參見步驟466)。在步驟466之後,記憶體控制器300可以執行用於列定向ECC編碼的資料符號和同位符號的行定向ECC編碼操作(參見步驟467)。行定向ECC編碼的資料符號和同位符號可以寫入記憶體介質200(參見步驟468)。
圖37是示出在圖36的寫入操作期間執行第一列定向ECC解碼操作的過程的流程圖的示例。圖38示出了在執行圖37的步驟462-2至462-6時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖39示出了在執行圖37的步驟462-2至462-6之後、在圖1的記憶體系統100所包括的第二緩衝器332中儲存的資料符號和同位符號的示例。圖40示出了在執行圖37的步驟462-7時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖41示出了在執行圖37的步驟462-7之後、在圖1的記憶體系統100所包括的第二緩衝器332中儲存的資料符號和同位符號的示例。在圖38和圖40中,資料交換路徑用粗體箭頭表示。作為示例,對於下面的描述,可以假設在步驟461接收的寫入命令是用於乘積碼字所包括的資料符號中的、具有列位址'1'的資料符號的命令。
參見圖37至圖39,計數值可以被重置為零'0'(參見步驟462-1)。記憶體控制器300可以讀取儲存在記憶體介質200中的乘積碼字所包括的列乘積碼字中的、第(計數值+1)列乘積碼字(即,第一列乘積碼字PCWR1)(參見步驟462-2)。如圖38中所示,從主機輸出的寫入資料可以通過主機側實體層302臨時儲存在資料管理器320中。從記憶體介質200讀出的第一列乘積碼字PCWR1可以通過介質側實體層301和第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於第一列乘積碼字PCWR1的列定向ECC解碼操作(參見步驟462-3)。如果在步驟462-3執行列定向ECC解碼操作,則可以從ECC解碼器312輸出具有列位址'0'的資料符號DS00至DS03以及同位符號PS04和PS05。從ECC解碼器312輸出的資料符號DS00至DS03和同位符號PS04和PS05可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟462-4)。
隨後,計數值可以增加一(參見步驟462-5)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M'(參見步驟462-6)。數量'M'可以被定義為乘積碼字所包括的列乘積碼字中的、包括資料符號的列乘積碼字的數量。在本實施例中,數量'M'可以是四。由於計數值不等於四,即計數值不等於'M',過程可以返回到步驟462-2。由於計數值是一,所以可以依序地執行用於第二列乘積碼字PCWR2的步驟462-2到462-6。類似地,還可以執行用於第三和第四列乘積碼字PCWR3和PCWR4中的每一個的步驟462-2到462-6。
在執行用於包括資料符號的所有的第一至第四列乘積碼字PCWR1至PCWR4的步驟462-2至462-6之後,具有列位址'0'的資料符號DS00至DS03和同位符號PS04和PS05、具有列位址'1'的資料符號DS10至DS13和同位符號PS14和PS15、具有列位址'2'的資料符號DS20至DS23和同位符號PS24和PS25、以及具有列位址'3'的資料符號DS30至DS33和同位符號PS34和PS35,可以儲存在第二緩衝器332中,如圖39所示。
如果在步驟462-6確定計數值等於四,則表示包括至少一個資料符號的所有的列乘積碼字都已經通過列定向ECC解碼操作解碼。在這種情況下,可以從記憶體介質200讀出沒有資料符號的列乘積碼字(即,僅包括同位符號的列乘積碼字),並且可以將其儲存到第二緩衝器332中(參見步驟462-7)。例如,如圖40中所示,僅包括同位符號PS40至PS45的第五列乘積碼字PCWR5可以通過介質側實體層301和第一多工器341從記憶體介質200讀出,並且可以輸入到ECC解碼器312。解碼器312可以不執行用於第五列乘積碼字PCWR5的ECC解碼操作,並且可以將第五列乘積碼字PCWR5輸出到第三解多工器346。為了防止ECC解碼器312執行ECC解碼操作,PC控制器370可以將用於去能ECC解碼器312的ECC解碼操作的控制信號輸出到ECC解碼器312。第三解多工器346可以將第五列乘積碼字PCWR5傳輸到第二緩衝器332,並且第五列乘積碼字PCWR5可以被儲存到第二緩衝器332中。可以以與結合第五列乘積碼字PCWR5所述相同的方式來將記憶體介質200中的第六列乘積碼字PCWR6儲存到第二緩衝器332中。結果,在執行圖37的步驟462-7之後,具有列位址'4'的同位符號PS40至PS45和具有列位址'5'的同位符號PS50至PS55可以被儲存到第二緩衝器332中,如圖41所示。
圖42是說明在圖36的寫入操作期間執行用於行乘積碼字的行定向ECC解碼操作的步驟463的流程圖的示例。圖43和圖44示出了在執行圖42的步驟463-2至463-6時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖45示出了在圖37的步驟462-2至462-6被執行之後、在圖1的記憶體系統100所包括的第二緩衝器332中儲存的資料符號和同位符號的示例。在圖43和圖44中,資料交換路徑用粗體箭頭表示。參見圖42至圖45,在圖36的步驟462被執行之後,計數值可以被重置為零(參見步驟463-1)。記憶體控制器300可以讀取儲存在第二緩衝器332中的第一行乘積碼字的資料符號DS00至DS30以及同位符號PS40和PS50(參見步驟463-2)。
如圖43所示,從第二緩衝器332讀出的資料符號DS00至DS30和同位符號PS40和PS50可以通過第一多工器341輸入到ECC解碼器312。ECC解碼器312可以執行用於資料符號DS00至DS30和同位符號PS40和PS50的行定向ECC解碼操作,以輸出行定向ECC解碼的資料符號和同位符號(參見步驟463-3)。從ECC解碼器312輸出的行定向ECC解碼的資料符號和同位符號可以通過第三解多工器346儲存到第二緩衝器332中(參見步驟463-4)。隨後,計數值可以增加一(參見步驟463-5)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'N+j'(參見步驟463-6)。數量'N+j'可以被定義為儲存在記憶體介質200中的乘積碼字所包括的所有的行乘積碼字的數量。因此,數量'N+j'可以等於儲存在記憶體介質200中的乘積碼字的行的數量。在該具體示例中,數量'N+j'可以設置為六。由於在步驟463-6確定計數值(即,一)不等於六,所以過程返回到步驟463-2。在返回到步驟463-2之後,計數值變為一,因此可以針對第二行中的資料符號DS01至DS31和同位符號PS41和PS51執行步驟463-2至463-6。可以重複步驟463-2至463-6,直到計數值等於六。因此,可以重複步驟463-2到463-6,直到第六行中的同位符號PS05到PS55通過行定向ECC解碼操作被解碼,並且行定向ECC解碼的資料符號和同位符號被儲存在第二緩衝器332中。
第五行中的資料可以僅包括同位符號PS04至PS54,並且第六行中的資料可以僅包括同位符號PS05至PS55。如圖44中所示,當執行用於第五行和第六行中的每一個的步驟463-2到463-6時,只有行定向同位符號可以通過第一多工器341從第二緩衝器332傳輸到ECC解碼器312。ECC解碼器312可以執行用於同位符號PS04至PS54的行定向ECC解碼操作,以輸出行定向ECC解碼的同位符號。從ECC解碼器312輸出的行定向ECC解碼的同位符號可以通過第三解多工器346儲存到第二緩衝器332中。如圖45所示,所有的行定向ECC解碼的資料符號和同位符號可以儲存在第二緩衝器332中。例如,行定向ECC解碼的資料符號DS00至DS30和同位符號PS40和PS50可以儲存在第二緩衝器332的第一行中,行定向ECC解碼的資料符號DS01至DS31以及同位符號PS41和PS51可以儲存在第二緩衝器332的第二行中,行定向ECC解碼的資料符號DS02至DS32以及同位符號PS42和PS52可以儲存在第二緩衝器332的第三行中,行定向ECC解碼的資料符號DS03至DS33以及同位符號PS43和PS53可以儲存在第二緩衝器332的第四行中,行定向ECC解碼的同位符號PS04至PS54可以儲存在第二緩衝器332的第五行中,並且行定向ECC解碼的同位符號PS05至PS55可以儲存在第二緩衝器332的第六行中。在執行了用於第六行中的第六同位符號PS05和PS55的步驟463-2至463-5之後,計數值可以等於六。在這種情況下,過程進行到圖36的步驟464,然後可以執行步驟464。
圖46是說明在圖36的寫入操作期間來組合寫入資料的步驟465的流程圖的示例。圖47示出了在執行圖46的步驟465-2至465-4時、圖1中所示的記憶體系統100的記憶體控制器300中的資料交換路徑。圖48示出了在執行圖46的步驟465-5之前、臨時儲存在圖1的記憶體系統100所包括的資料管理器320中的資料的示例。圖49示出了在執行圖46的步驟465-5之後、在圖1的記憶體系統100所包括的資料管理器320中儲存的資料的示例。在圖47中,資料交換路徑用粗體箭頭表示。參見圖46至圖49,計數值可以被重置為零(參見步驟465-1)。在這種情況下,第(計數值+1)列變為第一列。因此,第一列中的資料符號DS00至DS03可以被傳輸到資料管理器320(參見步驟465-2)。如圖47中所示,第二緩衝器332的第一列中的資料符號DS00至DS03可以通過第一多工器341、ECC解碼器312、第三解多工器346和第二解多工器345傳輸到資料管理器320。在這種情況下,ECC解碼器312可以響應於從PC控制器370輸出的控制信號來輸出第一列中的資料符號DS00至DS03,而不執行用於資料符號DS00至DS03的ECC解碼操作。
隨後,計數值可以增加一(參見步驟465-3)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M'(參見步驟465-4)。數量'M'可以被定義為第二緩衝器332的列中的、包括資料符號的列的數量。數量'M'可以等於包括資料符號的列乘積碼的數量、以及列乘積碼字中的包括資料符號的列乘積碼字的數量。在該具體示例中,數量'M'可以被設置為四。在這種情況下,由於在步驟465-4確定計數值(即,一)不等於四,所以過程返回到步驟465-2。在這種情況下,計數值變為一,並且第(計數值+1)列變為二。因此,可以針對第二列中的資料符號DS10至DS13執行步驟465-2至465-4。此後,還可以執行步驟465-2至465-4,直到數量'M'等於四為止。
如果在圖46的步驟465-4確定數量'M'等於四,則傳輸到資料管理器320的資料符號可以與寫入資料符號組合(參見步驟465-5)。如圖48中所示,從第二緩衝器332輸出的資料符號DS00至DS03、DS10至DS13、DS20至DS23和DS30至DS33可以臨時儲存在資料管理器320中。從主機輸出的寫入資料符號DS10'至DS13'可以被臨時儲存在資料管理器320中。資料管理器320可以將從第二緩衝器332傳輸的資料符號與寫入資料符號DS10'至DS13'組合。可以通過利用寫入資料符號DS10'至DS13'來替換第二列中的資料符號DS10至DS13來實現資料組合。因此,如圖49中所示,資料管理器320可以產生包括資料符號DS00至DS03、DS10'至DS13'、DS20至DS23和DS30至DS33的組合資料符號。
圖50是說明在圖36的寫入操作期間執行用於組合的資料符號的列定向ECC編碼操作的步驟466的流程圖的示例。圖51示出了在執行圖50的步驟466-2至466-6時、圖1中所示的記憶體系統100的資料交換路徑。圖52示出了在圖36的寫入操作期間執行用於組合的資料符號的列定向ECC編碼操作的步驟466被執行之後、在圖1的記憶體系統100所包括的第一緩衝器331中儲存的資料的示例。在圖51中,資料交換路徑用粗體箭頭表示。參見圖50、圖51和圖52,在執行了圖36的步驟465之後,計數值可以被重置為零(參見步驟466-1)。第(計數值+1)列變為第一列。記憶體控制器300可以從資料管理器320讀取第一列中的資料符號DS00至DS03(參見步驟466-2)。記憶體控制器300可以執行用於從資料管理器320讀出的資料符號DS00至DS03的列定向ECC編碼操作,以產生第一列乘積碼字PCWR1(參見步驟466-3)。如圖51中所示,儲存在資料管理器200中的資料符號中的、第一列中的資料符號DS00至DS03可以通過第二和第三多工器342和343輸入到ECC編碼器311。ECC編碼器311可以執行用於資料符號DS00至DS03的列定向ECC編碼操作,以產生和輸出包括資料符號DS00至DS03和同位符號PS04和PS05的第一列乘積碼字PCWR1。從ECC編碼器311輸出的第一列乘積碼字PCWR1可以通過第一解多工器344儲存到第一緩衝器331中(參見步驟466-4)。
在執行步驟466-4之後,計數值可以增加一(參見步驟466-5)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M'(參見步驟466-6)。數量'M'可以被定義為乘積碼字所包括的列中的、包括資料符號的列的數量。數量'M'可以等於列乘積碼中的包括資料符號的列乘積碼的數量、以及列乘積碼字中的包括資料符號的列乘積碼字的數量。在該具體示例中,數量'M'可以被設置為四。由於計數值是一,在步驟466-6確定計數值不等於四,因此過程返回到步驟466-2。因此,可以針對包括資料符號DS20至DS23的第三列和包括資料符號DS30至DS33的第四列中的每一列來重複步驟466-2至466-6,直到數量'M'等於四。結果,如圖52中所示,包括資料符號DS00至DS03和同位符號PS04和PS05的第一列乘積碼字PCWR1、包括資料符號DS10'至DS13'和同位符號PS14'和PS15'的第二列乘積碼字PCWR2、包括資料符號DS20至DS23和同位符號PS24和PS25的第三列乘積碼字PCWR3、以及包括資料符號DS30至DS33和同位符號PS34和PS35的第四列乘積碼字PCWR4可以儲存在第一緩衝器331中。
圖53是示出在圖36的寫入操作期間執行行定向ECC編碼操作的步驟467的流程圖的示例。圖54示出了在執行圖53的步驟467-2至467-6時、圖1中所示的記憶體系統100的資料交換路徑。圖55示出了在執行圖36的步驟467之後、在圖1的記憶體系統100所包括的第一緩衝器331中儲存的資料的示例。在圖54中,資料交換路徑用粗體箭頭表示。參見圖53、圖54和圖55,如果在圖50的步驟466-6確定計數值等於與列的數量'M'相對應的四,則可以執行行定向ECC編碼操作。為了執行行定向ECC編碼操作,可以將計數值重置為零(參見步驟467-1)。在這種情況下,第(計數值+1)行變為第一行。因此,記憶體控制器300可以從第一緩衝器331讀取第一行中的資料符號DS00,DS10',DS20和DS30(參見步驟467-2)。記憶體控制器300可以執行用於從第一緩衝器331讀出的資料符號DS00、DS10'、DS20和DS30的行定向ECC編碼操作,以產生第一行乘積碼字PCWC1(參見步驟467-3)。第一行乘積碼字PCWC1可以儲存在第一緩衝器331中(參見步驟467-4)。如圖54中所示,從緩衝器331讀出的資料符號DS00、DS10'、DS20和DS30可以通過第三多工器343輸入到ECC編碼器311。ECC編碼器311可以執行用於資料符號DS00、DS10'、DS20和DS30行定向ECC編碼操作,以產生並輸出包括資料符號DS00、DS10'、DS20和DS30以及同位符號PS40'和PS50'的第一行乘積碼字PCWC1。從ECC編碼器311輸出的第一行乘積碼字PCWC1可以通過第一解多工器344儲存到第一緩衝器331中。
接下來,計數值可以增加一(參見步驟467-5)。因此,計數值可以從零變為一。隨後,可以確定計數值是否等於數量'N+j'(參見步驟467-6)。數量'N+j'可以定義為儲存在第一緩衝器331中的資料的行的數量。數量'N+j'可以等於乘積碼中包括的所有的行乘積碼的數量、以及乘積碼字中包括的所有的行乘積碼字的數量。在該具體示例中,數量'N+j'可以被設置為六。由於在步驟467-6確定計數值(即,一)不等於對應於數量'N+j'的“六”,所以過程返回到步驟467-2。因此,可以針對包括資料符號DS01、DS11'、DS21和DS31的第二行、包括資料符號DS02、DS12'、DS22和DS32的第三行、包括資料符號DS03、DS13'、DS23和DS33的第四行、包括資料符號DS04、DS14'、DS24和DS34的第五行、包括資料符號DS05、DS15'、DS25和DS35的第六行中的每一行來重複步驟467-2至467-6,直到數量'N+j'等於六為止。
如果反覆運算地執行步驟467-2到467-6直到數量'N+j'等於六為止,則包括資料符號DS00、DS10'、DS20和DS30以及同位符號PS40'和PS50'的第一行乘積碼字PCWC1、包括資料符號DS01、DS11'、DS21和DS31以及同位符號PS41'和PS51'的第二行乘積碼字PCWC2、包括資料符號DS02、DS12'、DS22和DS32以及同位符號PS42'和PS52'的第三行乘積碼字PCWC3、包括資料符號DS03、DS13'、DS23和DS33以及同位符號PS43'和PS53'的第四行乘積碼字PCWC4、包括資料符號DS04、DS14'、DS24和DS34以及同位符號PS44'和PS54'的第五行乘積碼字PCWC5、以及包括資料符號DS05、DS15'、DS25和DS35以及同位符號PS45'和PS55'的第六行乘積碼字PCWC6,可以被儲存在第一緩衝器331中,如圖55所示。
圖56是說明在圖36的寫入操作期間將行定向ECC編碼的資料符號和同位符號寫入記憶體介質200的步驟468的流程圖的示例。圖57示出了在執行圖56的步驟468-2至468-5時、圖1中所示的記憶體系統100中的資料交換路徑。圖58示出了在執行圖36的步驟468之後、在圖1的記憶體系統100所包括的記憶體介質200中儲存的資料的示例。在圖57中,資料交換路徑由粗體箭頭表示。參見圖56、圖57和圖58所示,如果在步驟467-7確定計數值等於六,則可以執行寫入操作以將儲存在第一緩衝器331中的資料寫入記憶體介質200中。在一些實施方案中,在執行圖36的步驟467之後,計數值可以被重置為零(參見步驟468-1)。記憶體控制器300可以讀取儲存在第一緩衝器331中的第一列乘積碼字PCWR1(參見步驟468-2)。接下來,可以將從第一緩衝器331讀出的第一列乘積碼字PCWR1寫入記憶體介質200的第一列(參見步驟468-3)。如圖57中所示,從第一緩衝器331讀出的第一列乘積碼字PCWR1可以通過第三多工器343輸入到ECC編碼器311。PC控制器370可以施加如下控制信號到ECC編碼器311:其去能ECC編碼器311的操作,並使ECC編碼器311用作第一列乘積碼字PCWR1的傳輸門。從ECC編碼器311輸出的第一列乘積碼字PCWR1可以通過第一解多工器344和介質側實體層301寫入與記憶體介質200的第一列相對應的存儲區域。
隨後,計數值可以增加一(參見步驟468-4)。因此,計數值可以從零變為一。接下來,可以確定計數值是否等於數量'M+i'(參見步驟468-5)。數量'M'可以被定義為包括資料符號的列乘積碼字的數量,並且數量'i'可以被定義為僅包括同位符號而不包括資料符號的列乘積碼字的數量。因此,數量'M+i'可以被定義為所有的列乘積碼字的數量。在本實施例中,數量'M'可以設置為四,數量'i'可以設置為二。結果,數量'M+i'可以設置為六。由於在步驟468-5計數值不等於六,所以過程返回到步驟468-2。因此,可以針對第二列乘積碼字PCWR2來重複步驟468-2到468-5。類似地,可以針對第三至第六列乘積碼字PCWR3至PCWR6中的每一個來重複步驟468-2至468-5。在針對乘積碼字中包括的所有的第一至第六列乘積碼字PCWR1至PCWR6執行步驟468-2至468-5之後,計數值可以等於六。結果,具有與儲存在第一緩衝器331中的乘積碼字相同形式的乘積碼字可以被儲存在記憶體介質200中,如圖58所示。
圖59是示出在圖1中所示的記憶體系統100的第二錯誤校正模式中執行的錯誤校正操作的另一示例的流程圖的示例。圖60至圖62是示出圖59中所示的錯誤校正操作的示意圖。在本實施例中,可以假設ECC編碼器311和ECC解碼器312的錯誤校正能力是一,使得可校正的錯誤資料符號的最大數量是一。參見圖59至圖62,可以在第二錯誤校正模式中執行錯誤校正操作(參見步驟510)。步驟510對應於圖3中的步驟440,其在步驟410至430之後進行。可以確定錯誤資料符號是否通過在第二錯誤校正模式中執行的錯誤校正操作而被校正(參見步驟520)。如果在步驟520確定至少一個錯誤資料符號未通過在第二錯誤校正模式中執行的錯誤校正操作而被校正,則可以在改變列定向錯誤校正操作和行定向錯誤校正操作的順序之後,在第二錯誤校正模式中執行錯誤校正操作(參見步驟530)。圖60示出了在行定向ECC解碼操作之前執行列定向ECC解碼操作時的乘積碼字的示例。如圖60中所示,可以假設第一列乘積碼字PCWR1中的第一資料符號DS00和第二資料符號DS01是錯誤資料符號,並且第二列乘積碼字PCWR2中的第二資料符號DS11和第三資料符號DS12是錯誤資料符號。在這種情況下,即使執行了用於第一列乘積碼字PCWR1的列定向ECC解碼操作,也不能校正錯誤資料符號、即第一資料符號DS00和第二資料符號DS01,因為錯誤資料符號的數量大於錯誤校正能力,在該具體示例中所述錯誤校正能力為“一”。類似地,即使執行了用於第二列乘積碼字PCWR2的列定向ECC解碼操作,也不能校正錯誤資料符號、即第二資料符號DS11和第三資料符號DS12。接下來,可以通過執行用於第一行乘積碼字PCWC1的行定向ECC解碼操作來校正第一列乘積碼字PCWR1中的第一資料符號DS00。類似地,可以通過執行用於第三行乘積碼字PCWC3的行定向ECC解碼操作來校正第二列乘積碼字PCWR2中的第三資料符號DS12。然而,即使執行了用於第二行乘積碼字PCWC2的行定向ECC解碼操作,也不能校正第二行乘積碼字PCWC2中的資料符號DS01和DS11。
圖61示出了在列定向ECC解碼操作之前執行行定向ECC解碼操作時的乘積碼字的示例。如圖61中所示,可以首先執行行定向ECC解碼操作,然後可以執行列定向ECC解碼操作。因此,可以執行用於第一行乘積碼字PCWC1的行定向ECC解碼操作。結果,可以通過用於第一行乘積碼字PCWC1的行定向ECC解碼操作來成功地校正錯誤資料符號DS00。接下來,可以執行用於第二行乘積碼字PCWC2的行定向ECC解碼操作。在這種情況下,錯誤資料符號DS01和DS11不能通過用於第二行乘積碼字PCWC2的行定向ECC解碼操作來校正。隨後,可以執行用於第三行乘積碼字PCWC3的行定向ECC解碼操作。結果,可以通過用於第三行乘積碼字PCWC3的行定向ECC解碼操作來成功地校正錯誤資料符號DS12。此後,還可以執行用於第四行乘積碼字PCWC4的行定向ECC解碼操作。
接下來,如圖62中所示,可以執行用於第一至第六列乘積碼字PCWR1至PCWR6的列定向ECC解碼操作。首先,可以執行用於第一列乘積碼字PCWR1的列定向ECC解碼操作。結果,可以通過用於第一列乘積碼字PCWR1的列定向ECC解碼操作來成功地校正錯誤資料符號DS01。隨後,可以執行用於第二列乘積碼字PCWR2的列定向ECC解碼操作。結果,也可以通過用於第二列乘積碼字PCWR2的列定向ECC解碼操作來成功地校正錯誤資料符號DS11。接下來,可以執行用於剩餘的列乘積碼字、例如第三至第六列乘積碼字PCWR3至PCWR6的列定向ECC解碼操作。如上所述,如果首先執行行定向ECC解碼操作、並且在行定向ECC解碼操作之後執行列定向ECC解碼操作,則可以成功地校正所有的錯誤資料符號DS00、DS01、DS11和DS12。隨後,在步驟540確定是否通過錯誤校正操作校正了所有的錯誤資料符號。如果在步驟540中至少一個錯誤資料符號沒有通過在第二錯誤校正模式中執行的錯誤校正操作而被校正,則可以將所述錯誤資料符號視為不可校正的錯誤資料符號,並且可以終止根據本實施例的錯誤校正操作(參見步驟550)。
圖63是示出在圖1中所示的記憶體系統100的第二錯誤校正模式中執行的錯誤校正操作的另一示例的流程圖。圖64和圖65是說明圖63中所示的錯誤校正操作的示意圖。在本實施例中,可以假設ECC編碼器311和ECC解碼器312的錯誤校正能力是一,從而可校正的錯誤資料符號的最大數量是一。參考圖63至圖65,可以在第二錯誤校正模式中執行錯誤校正操作(參見步驟610)。步驟610對應於圖3中的步驟440,其在步驟410至430之後進行。可以在步驟620確定錯誤資料符號是否通過在第二錯誤校正模式中執行的錯誤校正操作而被校正。如果在步驟620至少一個錯誤資料符號沒有通過在第二錯誤校正模式中執行的錯誤校正操作而被校正,則可以在改變位於一些列中的資料符號的位置之後、在第二錯誤校正模式中執行錯誤校正操作(參見步驟630)。例如,如圖64中所示,可以假設第一列乘積碼字PCWR1中的第一資料符號DS00和第二資料符號DS01是錯誤資料符號,並且第二列乘積碼字PCWR2中的第一資料符號DS10和第二資料符號DS11是錯誤資料符號。在這種情況下,即使執行了用於第一列乘積碼字PCWR1的列定向ECC解碼操作,也不能校正錯誤資料符號、即第一資料符號DS00和第二資料符號DS01。類似地,即使執行了用於第二列乘積碼字PCWR2的列定向ECC解碼操作,也不能校正錯誤資料符號、即第一資料符號DS10和第二資料符號DS11。接下來,即使執行了用於第一行乘積碼字PCWC1的行定向ECC解碼操作,也不能校正對應於錯誤資料符號的資料符號DS00和DS10。類似地,即使執行了用於第二行乘積碼字PCWC2的行定向ECC解碼操作,也不能校正對應於錯誤資料符號的資料符號DS01和DS11。
例如,如圖65中所示,可以在列方向上改變第二列至第四列中的資料符號的位置。例如,對於第二列乘積碼字PCWR2,位於第一行中的資料符號DS10可以移位元到第二行,位於第二行中的資料符號DS11可以移位元到第三行,位於第三行中的資料符號DS12可以被移位到第四行,並且位於第四行中的資料符號DS13可以被移動到第一行。資料符號DS10至DS13沿列方向改變它們的位置,使得改變位置的資料符號DS10至DS13的列位址在位置改變之後保持不變。結果,錯誤資料符號DS10可以位於第二列(具有列位址'1')和第二行(具有行位址'1'),並且錯誤資料符號DS11可以位於第二列(具有列位址'1')和第三行(具有行位址'2')。
在第三列乘積碼字PCWR3的情況下,位於第一行的資料符號DS20可以移動到第三行,位於第二行的資料符號DS21可以移動到第四行,位於第三行的資料符號DS22可以移動到第一行,位於第四行的資料符號DS23可以移動到第二行。資料符號DS20至DS23沿列方向改變它們的位置,使得改變位置的資料符號DS20至DS23的列位址在位置改變之後保持不變。類似地,對於第四列乘積碼字PCWR4,位於第一行的資料符號DS30可以移動到第四行,位於第二行的資料符號DS31可以移動到第一行,位於第三行的資料符號DS32可以移動到第二行,以及位於第四行的資料符號DS33可以移動到第三行。因此,資料符號DS30至DS33沿列方向改變它們的位置。在第二至第四列乘積碼字PCWR2至PCWR4所包括的資料符號的位置改變之後,可以執行位址映射操作,使得正確地映射位置改變的資料符號的行位址。
在一些資料符號的位置改變之後,在步驟640確定是否需要改變執行列定向ECC解碼操作和行定向ECC解碼操作的順序。如果在步驟640確定不需要改變錯誤校正操作的順序,則可以在第二錯誤校正模式期間依序地執行列定向ECC解碼操作和行定向ECC解碼操作,如參考圖1至圖58所述。如果在步驟640確定需要改變錯誤校正操作的順序,則可以在第二錯誤校正模式中依序地執行行定向ECC解碼操作和列定向ECC解碼操作,如參考圖61和62所述。
以上為了說明的目的公開了所公開技術的實施例。本領域普通技術人員將理解,可以進行各種修改、添加和替換。儘管該專利文獻包含許多細節,但這些細節不應被解釋為對任何發明或可要求保護的範圍的限制,而是作為特定於特定發明的特定實施例的特徵的描述。在單獨的實施例的背景中在本專利檔中描述的某些特徵也可以在單個實施例中組合地實現。反之,在單個實施例的背景中描述的各種特徵也可以在多個實施例中單獨地或以任何合適的子組合來實現。此外,儘管特徵在上面可以描述為以特定組合起作用、並且甚至最初如此聲明,但是在一些情況下可以從所要求保護的組合中去除來自所要求保護組合的一個或多個特徵,並且所要求保護的組合可以針對子組合或子組合的變型。
100‧‧‧記憶體系統200‧‧‧記憶體介質210‧‧‧記憶體單元陣列 / 單元陣列211‧‧‧資料區域212‧‧‧列定向同位區域213‧‧‧行定向同位區域221‧‧‧列222‧‧‧行300‧‧‧記憶體控制器301‧‧‧介質側實體層302‧‧‧主機側實體層310‧‧‧ECC引擎311‧‧‧ECC編碼器312‧‧‧ECC解碼器320‧‧‧資料管理器331‧‧‧第一緩衝器332‧‧‧第二緩衝器341‧‧‧第一多工器342‧‧‧第二多工器343‧‧‧第三多工器344‧‧‧第一解多工器345‧‧‧第二解多工器346‧‧‧第三解多工器350‧‧‧命令控制器360‧‧‧調度器370‧‧‧PC控制器380‧‧‧微控制器390‧‧‧錯誤日誌410‧‧‧步驟42 0‧‧‧步驟430‧‧‧步驟440‧‧‧步驟441‧‧‧步驟442‧‧‧步驟442-1~442-7‧‧‧步驟443‧‧‧步驟443-1~443-6‧‧‧步驟444‧‧‧步驟444-1~444-5‧‧‧步驟451‧‧‧步驟452‧‧‧步驟452-1~452-7‧‧‧步驟453‧‧‧步驟453-1~453-6‧‧‧步驟454‧‧‧步驟454-1~454-3‧‧‧步驟455‧‧‧步驟461‧‧‧步驟462‧‧‧步驟462-1~462-7‧‧‧步驟463‧‧‧步驟463-1~463-6‧‧‧步驟464‧‧‧步驟465‧‧‧步驟465-1~465-5‧‧‧步驟466‧‧‧步驟466-1~466-6‧‧‧步驟467‧‧‧步驟467-1~467-6‧‧‧步驟468‧‧‧步驟468-1~468-5‧‧‧步驟510‧‧‧步驟520‧‧‧步驟530‧‧‧步驟540‧‧‧步驟550‧‧‧步驟610‧‧‧步驟620‧‧‧步驟630‧‧‧步驟640‧‧‧步驟650‧‧‧步驟660‧‧‧步驟
通過參考附圖的各種實施例示出了所公開技術的某些特徵,其中:
圖1是示出根據本公開的實施例的示例性記憶體系統的方塊圖;
圖2是示出記憶體單元陣列中包括的列乘積碼和行乘積碼的示例的示意圖;
圖3是示出用於改變在記憶體系統中執行的錯誤校正模式的過程的示例的流程圖;
圖4示出了用於說明在記憶體系統中執行的錯誤校正操作的第一錯誤校正模式的多個碼字的示例;
圖5是示出在記憶體系統中執行的錯誤校正操作的第二錯誤校正模式的流程圖的示例;
圖6示出了用於在記憶體系統中執行的錯誤校正操作的第二錯誤校正而產生的乘積碼的示例;
圖7是示出產生列乘積碼字的過程的流程圖的示例;
圖8示出了記憶體系統的記憶體控制器中的資料交換路徑;
圖9示出了在記憶體系統的記憶體控制器所包括的第一緩衝器中儲存的列乘積碼字的示例;
圖10是示出產生行乘積碼字的過程的流程圖的示例;
圖11示出了記憶體系統的記憶體控制器中的資料交換路徑;
圖12示出了在記憶體系統的記憶體控制器所包括的第一緩衝器中儲存的列乘積碼字和行乘積碼字的示例;
圖13是示出圖5中所示的錯誤校正操作的過程的流程圖的示例;
圖14示出了在記憶體系統的存儲控制器中發生的資料交換路徑;
圖15示出了在記憶體系統所包括的記憶體介質中儲存的列乘積碼字和行乘積碼字的示例;
圖16是示出響應於用於乘積碼字中包括的資料的讀取命令、在第二錯誤校正模式中執行的讀取操作的流程圖的示例;
圖17是示出在圖16的讀取操作期間執行列定向ECC解碼操作的步驟的流程圖的示例;
圖18示出了在執行圖17的步驟452-2至452-6時、記憶體系統中的資料的示例性資料交換路徑;
圖19示出了在執行圖17的步驟452-2至452-6之後顯示的、在記憶體系統所包括的第二緩衝器中儲存的資料符號和同位符號的示例;
圖20示出了當執行圖17的步驟452-7時、記憶體系統中的資料的示例性資料交換路徑;
圖21示出了在執行圖17的步驟452-7之後在記憶體系統所包括的第二緩衝器中儲存的資料符號和同位符號的示例;
圖22是示出圖16的步驟453的流程圖的示例;
圖23和圖24示出了當執行圖22的步驟453-2至453-6時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖25至圖30示出了在執行圖17的步驟452-2至452-6之後、在記憶體系統中的第二緩衝器中儲存的資料符號和同位符號的示例;
圖31是示出圖16的步驟454的流程圖的示例;
圖32示出了當執行圖31的步驟454-1至454-3時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖33至圖35是示出使用基於公開技術的實施例的記憶體系統的固定ECC引擎來校正錯誤的過程的示例性示意圖;
圖36是示出響應於用於將乘積碼字中包括的資料儲存到記憶體系統的存儲區域中的寫入命令、在第二錯誤校正模式中執行的寫入操作的流程圖的示例;
圖37是示出圖36的步驟462的流程圖的示例;
圖38示出了當執行圖37的步驟462-2至462-6時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖39示出了在執行圖37的步驟462-2到462-6之後、在記憶體系統所包括的第二緩衝器中儲存的資料符號和同位符號的示例;
圖40示出了當執行圖37的步驟462-7時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖41示出了在執行圖37的步驟462-7之後、在記憶體系統所包括的第二緩衝器中儲存的資料符號和同位符號的示例;
圖42是示出圖36的步驟463的流程圖的示例;
圖43和圖44示出了當執行圖42的步驟463-2到463-6時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖45示出了在執行圖37的步驟462-2到462-6之後、在記憶體系統所包括的第二緩衝器中儲存的資料符號和同位符號的示例;
圖46是示出圖36的步驟465的流程圖的示例;
圖47示出了當執行圖46的步驟465-2至465-4時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖48示出了在執行圖46的步驟465-5之前、臨時儲存在記憶體系統所包括的資料管理器中的資料的示例;
圖49示出了在執行圖46的步驟465-5之後、儲存在記憶體系統所包括的資料管理器中的資料的示例;
圖50是示出圖36的步驟466的流程圖的示例;
圖51示出了當執行圖50的步驟466-2到466-6時、圖1中所示的記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖52示出了在執行圖36的步驟466之後、儲存在記憶體系統所包括的第一緩衝器中的資料的示例;
圖53是示出圖36的步驟467的流程圖的示例;
圖54示出了當執行圖53的步驟467-2至467-6時、記憶體系統的記憶體控制器中的示例性資料交換路徑;
圖55示出了儲存在記憶體系統所包括的第一緩衝器中的資料的示例;
圖56是示出圖36的步驟468的流程圖的示例;
圖57示出了當執行圖56的步驟468-2到468-5時、在記憶體系統的記憶體控制器中傳輸的示例性資料交換路徑;
圖58示出了在執行圖36的步驟468之後、儲存在記憶體系統所包括的記憶體介質中的資料的示例;
圖59是示出在第二錯誤校正模式中執行的錯誤校正操作的另一示例的流程圖的示例;
圖60至圖62是示出圖59中所示的錯誤校正操作的示意圖;
圖63是示出在第二錯誤校正模式中執行的錯誤校正操作的另一示例的流程圖;以及
圖64和圖65是示出圖63中所示的錯誤校正操作的示意圖。
100‧‧‧記憶體系統
200‧‧‧記憶體介質
300‧‧‧記憶體控制器
301‧‧‧介質側實體層
302‧‧‧主機側實體層
310‧‧‧ECC引擎
311‧‧‧ECC編碼器
312‧‧‧ECC解碼器
320‧‧‧資料管理器
331‧‧‧第一緩衝器
332‧‧‧第二緩衝器
341‧‧‧第一多工器
342‧‧‧第二多工器
343‧‧‧第三多工器
344‧‧‧第一解多工器
345‧‧‧第二解多工器
346‧‧‧第三解多工器
350‧‧‧命令控制器
360‧‧‧調度器
370‧‧‧PC控制器
380‧‧‧微控制器
390‧‧‧錯誤日誌

Claims (22)

  1. 一種記憶體系統,包括:記憶體介質,所述記憶體介質包括以行和列佈置的存儲區域,並且被配置為包括資料符號和同位符號,所述資料符號和所述同位符號中的每個具有行位址和列位址;以及記憶體控制器,所述記憶體控制器被佈置為與所述記憶體介質通信,並且被配置為包括錯誤校正碼(ECC)引擎,所述錯誤校正碼引擎在固定的錯誤校正級別執行錯誤校正操作,所述錯誤校正操作校正在與所述記憶體介質通信期間產生的錯誤資料符號,其中,所述記憶體控制器還被配置為產生列乘積碼和行乘積碼,每個列乘積碼包括具有相同列位址的所述資料符號和所述同位符號,並且每個行乘積碼包括具有相同行位址的所述資料符號和所述同位符號,其中,所述記憶體控制器還被配置為:對所述列乘積碼和所述行乘積碼執行所述錯誤校正操作,以在比所述固定的錯誤校正級別更高的錯誤校正級別來使能所述錯誤校正操作,以及其中,如果產生用於讀取第L列乘積碼字的所述資料符號的讀取命令,其中,'L'表示自然數,則所述記憶體控制器:執行用於列乘積碼字中的每個的列定向錯誤校正碼解碼操作,執行用於行乘積碼字中的每個的行定向錯誤校正碼解碼操作以產生被行定向錯誤校正碼解碼的碼字,執行用於所述被行定向錯誤校正碼解碼的碼字中的所述第L列乘積碼字的列定向錯誤校正碼解碼操作以產生被列定向錯誤校正碼解碼的碼字,以及將用於所述第L列乘積碼字的所述被列定向錯誤校正碼解碼的碼字傳輸給主機。
  2. 如請求項1所述的記憶體系統,其中,多個列包括:包含資料符號和同位符號的一些列以及僅包含同位符 號而沒有任何資料符號的另一些列,以及其中,多個行包括:包含資料符號和同位符號的一些行以及僅包含同位符號而沒有任何資料符號的另一些行。
  3. 如請求項1所述的記憶體系統,其中,如果所述錯誤資料符號的數量小於預定值,則所述記憶體控制器在固定的錯誤校正模式中執行所述錯誤校正操作;以及其中,如果所述錯誤資料符號的數量等於或大於所述預定值,則所述記憶體控制器在所述更高的錯誤校正級別執行所述錯誤校正操作。
  4. 如請求項3所述的記憶體系統,其中,所述預定值被設置為等於或小於由所述固定的錯誤校正級別固定的錯誤校正能力。
  5. 如請求項1所述的記憶體系統,其中,所述錯誤校正碼引擎包括:錯誤校正碼編碼器,其被配置為:在寫入操作期間,執行用於要被寫入的寫入資料符號的錯誤校正碼編碼操作,並且輸出包括所述寫入資料符號和同位符號的碼字;以及錯誤校正碼解碼器,其被配置為:在讀取操作期間,執行用於所述碼字的錯誤校正碼解碼操作,並且輸出讀取資料符號。
  6. 如請求項5所述的記憶體系統,其中,所述錯誤校正碼解碼器被構造為校正所述碼字中包括的錯誤,以輸出所述讀取資料符號,並且在所述錯誤校正碼解碼操作期間能夠校正的所述資料符號的數量由所述固定的錯誤校正級別來確定。
  7. 如請求項1所述的記憶體系統,其中,所述記憶體控制器以所述固定的錯誤校正級別來執行所述錯誤校正操作以產生碼字,每個碼字包括佈置在相同列中的所述資料符號和所述同位符 號中的至少一者。
  8. 如請求項1所述的記憶體系統,其中,由所述記憶體控制器產生的所述列乘積碼的數量和所述行乘積碼的數量分別為'M+i'和'N+j',其中,'M'、'N'、'i'和'j'表示自然數;其中,'M'是包括任何資料符號的列乘積碼的數量;其中,'i'是僅包括同位符號而沒有任何資料符號的列乘積碼的數量;其中,'N'是包括任何資料符號的行乘積碼的數量;以及其中,'j'是僅包括同位符號而沒有任何資料符號的行乘積碼的數量。
  9. 根據請求項8所述的記憶體系統,其中,所述記憶體控制器執行用於所述列乘積碼中的每一個的列定向錯誤校正碼解碼操作和列定向錯誤校正碼編碼操作,以產生列乘積碼字。
  10. 根據請求項9所述的記憶體系統,其中,所述記憶體控制器執行:用於包括任何資料符號的每個行中的所述資料符號以及用於沒有任何資料符號的每個行中的所述同位符號之行定向錯誤校正碼編碼操作,以產生行乘積碼字和附加的列乘積碼字。
  11. 如請求項10所述的記憶體系統,其中,所述記憶體控制器將所述附加的列乘積碼字和所述行乘積碼字儲存在所述記憶體介質中。
  12. 如請求項11所述的記憶體系統,其中,所述記憶體控制器將所述列乘積碼字儲存在所述記憶體介質中。
  13. 如請求項10所述的記憶體系統,其中,所述記憶體控制器依序地執行列定向錯誤校正操作和行定向錯誤校正操作。
  14. 根據請求項1所述的記憶體系統,其中,所述記憶體控制器在改變特定資料符號的行位址之後對所述列乘積碼執行所述錯誤校正操作。
  15. 如請求項1所述的記憶體系統, 其中,如果產生用於將寫入資料符號儲存在第L列乘積碼字中的寫入命令,其中,'L'表示自然數,則所述記憶體控制器:執行用於列乘積碼字中的每個的第一列定向錯誤校正碼解碼操作,執行用於行乘積碼字中的每個的行定向錯誤校正碼解碼操作,執行用於所述列乘積碼字中的每個的第二列定向錯誤校正碼解碼操作,將被第二列定向錯誤校正碼解碼的所述資料符號的第L列中的資料符號與所述寫入資料符號組合。
  16. 如請求項1所述的記憶體系統,其中,所述記憶體控制器包括:資料管理器,其被配置為:在所述記憶體控制器存取所述記憶體介質時臨時儲存資料;錯誤校正碼編碼器,其被配置為:在寫入操作期間,執行用於要被寫入的寫入資料符號的錯誤校正碼編碼操作,並且輸出包括所述寫入資料符號和同位符號的碼字;錯誤校正碼解碼器,其被配置為:在讀取操作期間,執行用於所述碼字的錯誤校正碼解碼操作,並且輸出讀取資料符號;錯誤日誌,其被配置為接收和儲存錯誤資訊;微控制器,其與所述錯誤日誌通信,並且被配置為:分析儲存在所述錯誤日誌中的所述錯誤資訊,以確定在所述固定的錯誤校正級別和所述更高的錯誤校正級別之間的錯誤校正級別來執行所述錯誤校正操作;以及乘積碼控制器,其與所述微控制器通信,並且被配置為產生用於在所述更高的錯誤校正級別執行的所述錯誤校正操作之控制信號;第一緩衝器,其被配置為在第二錯誤校正模式中儲存從所述錯誤校正碼編碼器輸出的資料;以及第二緩衝器,其被配置為在所述第二錯誤校正模式中儲存從所述錯誤校正 碼解碼器輸出的資料。
  17. 如請求項16所述的記憶體系統,其中,所述第一緩衝器和所述第二緩衝器中的每一個被配置為能夠在列方向和行方向兩者上存取資料。
  18. 如請求項16所述的記憶體系統,還包括:第一多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,將從所述記憶體介質輸出的資料或從所述第二緩衝器輸出的資料傳輸到所述錯誤校正碼解碼器;第一解多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,將從所述錯誤校正碼編碼器輸出的資料傳輸到所述第一緩衝器或所述記憶體介質;第二解多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,將從所述錯誤校正碼解碼器輸出的資料通過第一輸出線傳輸到所述第二緩衝器,或者通過第二輸出線輸出從所述錯誤校正碼解碼器輸出的所述資料;第三解多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,通過第一輸出線將經由所述第二解多工器的第二輸出線輸出的資料傳輸到所述資料管理器,或者通過第二輸出線輸出經由所述第二解多工器的第二輸出線輸出的所述資料;第二多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,輸出通過所述第三解多工器的第二輸出線輸出的資料或從所述資料管理器輸出的資料;以及第三多工器,其被配置為:響應於由所述乘積碼控制器產生的所述控制信號中的任何一個,將從所述第二多工器輸出的資料或輸出到所述第一緩衝器的 資料傳輸到所述錯誤校正碼編碼器。
  19. 如請求項17所述的記憶體系統,其中,所述錯誤校正碼編碼器被配置為:響應於與從所述乘積碼控制器輸出的所述控制信號中的一個相對應的編碼去能控制信號,輸出被輸入到所述錯誤校正碼編碼器的資料,而不執行所述錯誤校正碼編碼操作;以及其中,所述錯誤校正碼解碼器被配置為:響應於與從所述乘積碼控制器輸出的所述控制信號中的另一個相對應的解碼去能控制信號,輸出被輸入到所述錯誤校正碼解碼器的資料,而不執行所述錯誤校正碼解碼操作。
  20. 一種記憶體系統,包括:記憶體介質,其包括以列和行佈置的存儲區域,並且被配置為包括資料符號和同位符號,所述資料符號和所述同位符號中的每個具有列位址和行位址;以及記憶體控制器,其被配置為包括錯誤校正碼(ECC)引擎,所述錯誤校正碼引擎被設計為:在所述記憶體控制器存取所述記憶體介質時,在第一錯誤校正模式中以固定的錯誤校正級別來執行錯誤校正操作,其中,如果至少一個錯誤資料符號未通過在所述第一錯誤校正模式中執行的所述錯誤校正操作而被校正,則所述記憶體控制器將所述第一錯誤校正模式改變為第二錯誤校正模式,以產生包括'M'數量的列乘積碼字、'i'數量的列乘積碼字、'N'數量的行乘積碼字和'j'數量的行乘積碼字的乘積碼字,並且使用所述錯誤校正碼引擎來執行用於所述乘積碼字的所述錯誤校正操作,其中,'M','N'、'i'和'j'表示自然數,其中,所述'M'數量的列乘積碼字中的每一個包括資料符號和同位符號,所述'i'數量的列乘積碼字中的每一個僅包括同位符號而沒有任何資料符號,所述'N'數量的行乘積碼字中的每一個包括資料符號和同位符號,並且所述'j'數量的 行乘積碼字中的每一個僅包括同位符號而沒有任何資料符號,以及其中,如果產生用於讀取第L列乘積碼字的所述資料符號的讀取命令,其中,'L'表示等於或者小於自然數'M'的自然數,則所述記憶體控制器:執行用於所述'M'數量的列乘積碼字中的每一個的第一列定向錯誤校正碼解碼操作,執行用於所述'N+j'數量的行乘積碼字中的每一個的行定向錯誤校正碼解碼操作,執行用於被行定向錯誤校正碼解碼的碼字中的所述第L列乘積碼字的第二列定向錯誤校正碼解碼操作,以及將用於所述第L列乘積碼字的被第二列定向錯誤校正碼解碼的碼字傳輸給主機。
  21. 如請求項20所述的記憶體系統,其中,所述記憶體控制器產生包括'M+i'數量的列乘積碼和'N+j'數量的行乘積碼的乘積碼;其中,所述記憶體控制器執行用於包括至少一個資料符號的列乘積碼中的每一個的列定向錯誤校正碼編碼操作,以產生所述'M'數量的列乘積碼字;其中,所述記憶體控制器執行用於所述'N+j'數量的行乘積碼中的每一個的行定向錯誤校正碼編碼操作,以產生所述'N+j'數量的行乘積碼字;以及其中,所述記憶體控制器將包括所述列乘積碼字和所述行乘積碼字的所述乘積碼字寫入所述記憶體介質。
  22. 如請求項20所述的記憶體系統,其中,如果產生用於將寫入資料符號儲存在第L列乘積碼字中的寫入命令,其中,'L'表示等於或小於自然數'M'的自然數,則所述記憶體控制器:執行用於所述'M'數量的列乘積碼字中的每一個的第一列定向錯誤校正碼解碼操作,執行用於所述'N+j'數量的行乘積碼字中的每一個的行定向錯誤校正碼解碼操作,執行用於所述'M'數量的列乘積碼字中的每一個的第二列定向錯誤校正碼解碼操作,以及將被第二列定向錯誤校正碼解碼的資料符號的第L列中的資料符 號與所述寫入資料符號組合。
TW107142019A 2018-02-26 2018-11-26 使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統 TWI787401B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0023020 2018-02-26
KR1020180023020A KR102511903B1 (ko) 2018-02-26 2018-02-26 고정된 에러정정능력의 에러정정코드 엔진을 이용하여 재구성할 수 있는 에러정정동작을 수행하는 메모리 시스템

Publications (2)

Publication Number Publication Date
TW201937368A TW201937368A (zh) 2019-09-16
TWI787401B true TWI787401B (zh) 2022-12-21

Family

ID=67751419

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107142019A TWI787401B (zh) 2018-02-26 2018-11-26 使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統

Country Status (4)

Country Link
US (1) US10847246B2 (zh)
KR (1) KR102511903B1 (zh)
CN (1) CN110196783B (zh)
TW (1) TWI787401B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210010718A (ko) * 2019-07-17 2021-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템에서의 에러정정방법
US10963336B2 (en) 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US11200118B2 (en) * 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
KR20210051668A (ko) * 2019-10-31 2021-05-10 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 모듈
DE102020134945A1 (de) * 2020-02-27 2021-09-02 Taiwan Semiconductor Manufacturing Co., Ltd. Dynamische fehlerüberwachung und -reparatur
EP3985494B1 (en) 2020-04-01 2024-01-17 Changxin Memory Technologies, Inc. Read-write method and memory device
EP3936996A4 (en) 2020-04-01 2022-07-06 Changxin Memory Technologies, Inc. READ-WRITE METHOD AND STORAGE DEVICE
CN113495674B (zh) 2020-04-01 2023-10-10 长鑫存储技术有限公司 读写方法及存储器装置
CN113495671B (zh) 2020-04-01 2023-10-17 长鑫存储技术有限公司 读写方法及存储器装置
EP3964940A4 (en) 2020-04-01 2022-08-17 Changxin Memory Technologies, Inc. READ/WRITE METHOD AND STORAGE DEVICE
CN113495675B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
EP3964941B1 (en) 2020-04-01 2024-02-28 Changxin Memory Technologies, Inc. Read-write method and memory device
CN113495672B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
US11675731B2 (en) * 2020-08-20 2023-06-13 Global Unichip Corporation Data protection system and method thereof for 3D semiconductor device
US11972822B2 (en) 2021-09-24 2024-04-30 Sandisk Technologies Llc Programmable ECC for MRAM mixed-read scheme

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW579499B (en) * 2000-12-12 2004-03-11 Toshiba Corp Data processing method using error-correcting code and an apparatus using the same method
TW201040974A (en) * 2009-04-02 2010-11-16 Micron Technology Inc Extended single-bit error correction and multiple-bit error detection
US20150309875A1 (en) * 2014-04-25 2015-10-29 International Business Machines Corporation Error-correction encoding and decoding

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4653051A (en) * 1983-09-14 1987-03-24 Matsushita Electric Industrial Co., Ltd. Apparatus for detecting and correcting errors on product codes
US6048090A (en) * 1997-04-23 2000-04-11 Cirrus Logic, Inc. Error correction and concurrent verification of a product code
JP2000349652A (ja) * 1999-06-07 2000-12-15 Hitachi Ltd 誤り訂正手段を備えた記憶装置
JP2005242797A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd エラー訂正回路
US20070283223A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with all checkbits transferred last
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
KR20080076613A (ko) * 2007-02-16 2008-08-20 삼성전자주식회사 연접코드를 이용한 인코더/디코더 및 그의 인코딩/디코딩방법
GB2490461A (en) * 2010-01-28 2012-10-31 Ibm Method, device and computer program product for decoding a codeword
US8806295B2 (en) * 2012-05-24 2014-08-12 International Business Machines Corporation Mis-correction and no-correction rates for error control
KR101550762B1 (ko) * 2013-11-29 2015-09-08 한국과학기술원 연접 오류 정정 장치
US9252815B2 (en) * 2013-12-16 2016-02-02 International Business Machines Corporation Extension of product codes with applications to tape and parallel channels
US10146482B2 (en) * 2014-08-01 2018-12-04 Toshiba Memory Corporation Global error recovery system
US9606868B2 (en) * 2015-05-04 2017-03-28 International Business Machines Corporation Encoding and writing of data on multitrack tape
KR20170001777A (ko) 2015-06-25 2017-01-05 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10193576B2 (en) * 2015-10-30 2019-01-29 Toshiba Memory Corporation Memory system and memory device
US9946596B2 (en) * 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10439649B2 (en) * 2016-02-03 2019-10-08 SK Hynix Inc. Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US10201026B1 (en) * 2016-06-30 2019-02-05 Acacia Communications, Inc. Forward error correction systems and methods
US10348334B2 (en) * 2016-10-25 2019-07-09 International Business Machines Corporation Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes
US10291258B2 (en) * 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW579499B (en) * 2000-12-12 2004-03-11 Toshiba Corp Data processing method using error-correcting code and an apparatus using the same method
TW201040974A (en) * 2009-04-02 2010-11-16 Micron Technology Inc Extended single-bit error correction and multiple-bit error detection
US20150309875A1 (en) * 2014-04-25 2015-10-29 International Business Machines Corporation Error-correction encoding and decoding

Also Published As

Publication number Publication date
TW201937368A (zh) 2019-09-16
US10847246B2 (en) 2020-11-24
CN110196783A (zh) 2019-09-03
US20190385693A1 (en) 2019-12-19
CN110196783B (zh) 2023-05-30
KR102511903B1 (ko) 2023-03-21
KR20190102533A (ko) 2019-09-04

Similar Documents

Publication Publication Date Title
TWI787401B (zh) 使用具有固定的錯誤校正能力的錯誤校正碼引擎來執行可重組態的錯誤校正操作之記憶體系統
TWI646545B (zh) 用於儲存器件之階梯碼編碼及解碼之裝置及方法
US8522114B2 (en) Memory controller and memory system
US10762007B2 (en) Storage device and interface chip thereof
US10884848B2 (en) Memory device, memory system including the same and operation method of the memory system
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
CN111145827A (zh) 错误校正码解码器和半导体存储器装置
US11030040B2 (en) Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system
US20160139988A1 (en) Memory unit
US10439648B1 (en) Area efficient implementation of a product code error correcting code decoder
US10846175B2 (en) High throughput bit correction of data inside a word buffer for a product code decoder
US11237901B2 (en) Error correction using hierarchical decoders
US20160147598A1 (en) Operating a memory unit
US20190012231A1 (en) Memory device, memory system including the same, and operating method of memory system
US11048586B2 (en) Memory systems and methods of correcting errors in the memory systems
US11336296B2 (en) Controller and memory system having the controller
TWI859235B (zh) 記憶體系統和用於校正記憶體系統中的錯誤的方法