CN110727540A - 利用错误更正码进行数据位错误的检测与更正 - Google Patents
利用错误更正码进行数据位错误的检测与更正 Download PDFInfo
- Publication number
- CN110727540A CN110727540A CN201910529942.1A CN201910529942A CN110727540A CN 110727540 A CN110727540 A CN 110727540A CN 201910529942 A CN201910529942 A CN 201910529942A CN 110727540 A CN110727540 A CN 110727540A
- Authority
- CN
- China
- Prior art keywords
- bit
- codeword
- data
- circuit
- matrix
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/102—Error in check bits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明的一些实施例提供利用错误更正码进行数据位错误的检测与更正。具体的,本发明的一些实施例提供一种更正存储器装置中的一或多个位错误的方法包含从存储器装置检索码字。所述码字包含数据和错误更正码。所述方法进一步包含:确定所述一或多个位错误是否存在于所述所检索码字中;和响应于确定单一位错误存在于所述所检索码字中而针对所述单一位错误来更正所述所检索码字。所述方法还包含:响应于确定多个位错误存在于所述所检索码字中而翻转所述所检索码字的位;和基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。本发明的一些实施例還包括一种数据存储系统。
Description
技术领域
本发明实施例涉及利用错误更正码进行数据位错误的检测与更正。
背景技术
数字系统(例如,计算机系统)通常包含用于读取和/或写入数据的一或多个数据存储系统。在一些例项中,数字系统内部的电干扰和/或磁干扰损毁一或多个数据存储系统中的所存储数据。也可在处理期间在通过数字系统中的有噪声通信信道而传输数据时损毁所述数据且将所损毁数据存储于一或多个数据存储系统中。对于此经损毁数据的检测和/或更正,可在一或多个数据存储系统中实施基于错误更正码(ECC)的系统和方法。
发明内容
根据本发明的实施例,一种更正存储器装置中的一或多个位错误的方法包括:从存储器装置检索码字,所述码字具有数据和错误更正码;确定所述一或多个位错误是否存在于所述所检索码字中;响应于确定单一位错误存在于所述所检索码字中而针对所述单一位错误来更正所述所检索码字;响应于确定多个位错误存在于所述所检索码字中而所述所检索码字的位;和基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。
根据本发明的另一实施例,一种更正存储器装置中的单一位错误的方法包括:从存储器装置检索码字,所述码字具有数据和错误更正码;确定所述单一位错误是否存在于所述所检索码字中;响应于确定所述单一位错误存在于所述所检索码字中而翻转所述所检索码字的位;和基于所述经位翻转码字而针对所述单一位错误来更正所述所检索码字。
根据本发明的又一实施例,一种数据存储系统包括:存储器数组,其经配置以存储码字,所述码字具有数据和错误更正码;编码器电路,其经配置以在所述存储器数组的写入模式操作期间利用所述错误更正码来编码所述数据以形成所述码字;和解码器电路,其包括:数据寄存器,其经配置以在所述存储器数组的读取模式操作期间检索所述码字;位错误检测电路,其经配置以确定一或多个位错误是否存在于所述所检索码字中;位翻转电路,其经配置以响应于多个位错误存在于所述所检索码字中而翻转所述所检索码字的位;和更正电路,其经配置以基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。
附图说明
当借助附图阅读时,从以下详细说明最优选地理解本公开的方面。应注意,根据工业中的标准准实践,各种构件未按比例绘制。实际上,为论述清晰起见,可任意地增加或减小各种构件的尺寸。
图1图解说明根据一些实施例的数据存储系统的框图。
图2A图解说明根据一些实施例的基于ECC的编码器电路的框图。
图2B图解说明根据一些实施例的基于ECC的编码器电路的ECC位产生电路。
图3A图解说明根据一些实施例的基于ECC的解码器电路的框图。
图3B图解说明根据一些实施例的基于ECC的数据存储系统的产生矩阵(G矩阵)与检查矩阵(H矩阵)之间的关系。
图3C图解说明根据一些实施例的基于ECC的解码器电路的校验子(syndrome)位产生电路。
图4是根据一些实施例的用于检测多位错误和更正单位错误的基于ECC的方法的流程图。
图5是根据一些实施例的基于ECC的位错误检测与更正电路的框图。
图6是根据一些实施例的用于检测和更正单位和多位错误的基于ECC的方法的流程图。
图7是根据一些实施例的基于ECC的位错误检测与更正电路的框图。
图8图解说明根据一些实施例的其中可实施本公开的实施例或其部分的计算机系统的框图。
现在将参考随附图式阐述说明性实施例。在图式中,相似参考编号一般指示相同、功能上类似和/或结构上类似的组件。
具体实施方式
以下公开提供用于实施所提供目标物的不同构件的诸多不同实施例或实例。下文阐述组件和布置的特定实例以简化本公开。当然,此些仅为实例且并非打算是限制性的。举例来说,在说明中第一构件在第二构件上方形成可包含其中第一构件与第二构件直接接触地形成的实施例且也可包含其中额外构件可形成于第一构件与第二构件之间使得第一构件与第二构件可不直接接触的实施例。如本文中所利用,第一构件在第二构件上形成意指第一构件与第二构件直接接触地形成。另外,本公开可在各种实例中重复参考编号和/或字母。此重复并非本质上指示所论述的各种实施例和/或配置之间的关系。
可在本文中为易于说明而利用空间相对术语(例如“下方”、“下面”、“下部”、“上面”、“上部”和例如此类)来阐述一个组件或构件与另一组件或构件的关系,如各图中所图解说明。所述空间相对术语打算囊括在利用OR运算中的装置的除图中所绘示定向之外的不同定向。设备可以其它方式定向(旋转90度或以其它定向)且可因此同样地理解本文中所利用的空间相对描述语。
注意,在说明书中提到的“一项实施例”、“一实施例”、“一实例性实施例”、“示范性”等指示所阐述的实施例可包含特定构件、结构或特性,但每一实施例可不必包含所述特定构件、结构或特性。此外,此些词组未必是指同一实施例。此外,当结合实施例阐述特定构件、结构或特性时,无论是否明确阐述,结合其它实施例来实现此构件、结构或特性在所属领域的技术人员的知识范围内。
应理解,本文中的措辞或术语是出于说明而非限制目的,使得所属领域的相关技术人员将鉴于本文中的教示来解释本说明书的术语或措辞。
如本文中所利用,术语“约”指示给定量的值,所述给定量可基于与目标半导体装置相关联的特定技术节点而变化。基于特定技术节点,术语“约”可指示给定量的值,所述给定量在(举例来说)所述值的10%到30%(例如,所述值的±10%、±20%或±30%)内变化。
如本文中所利用,术语“大体上”指示给定量的值在所述值的±5%内变化。
数据存储系统包含一或多个存储器装置,所述一或多个存储器装置具有通常布置成2维数组的存储器胞元。每一存储器胞元可通常通过在(举例来说)电容器中保持或不保持电荷而存储一个数据位。举例来说,电荷的存在或不存在指示逻辑1(当存储电荷时)和逻辑0(当不存储电荷时)。电扰动或磁扰动(例如来自噪声或辐射的干扰)可改变一或多个存储器胞元的内容和/或干扰用于读取数据和将数据写入到存储器胞元的电路且致使所存储数据被损毁。为确保被存储于数据存储系统中和从所述数据存储系统被读取且在所述系统的各种部分之间被传输的数据的完整性,期望检测和更正损毁的所存储数据。诸多当前数据存储系统利用基于ECC的系统和方法来进行位错误检测与更正。
然而,半导体技术中的存储器装置的积极按比例缩小已导致当前数据存储系统的基于ECC的系统中的越来越复杂逻辑电路。此逻辑电路已导致越来越长的电路传播延迟,以及因此基于ECC的系统的操作的较长处理时间和较高电力消耗。而且,基于ECC的系统的经增加复杂性易受其逻辑电路中的硬件错误影响,此可导致当前基于ECC的数据存储系统中的较高位错误率。
本公开提供用于检测和更正存储器装置中的单位错误和多位错误的实例性基于ECC的系统和方法,所述实例性基于ECC的系统和方法帮助克服当前基于ECC的数据存储系统中的以上所论述问题。本文中所公开的实例性基于ECC的方法帮助减少用于数据存储系统中的所公开实例性基于ECC的位错误检测与更正(BEDC)电路的实施方案的逻辑电路的复杂性。与当前位错误检测与更正方法相比,本文中所公开的用于位错误检测与更正的实例性方法帮助将BEDC电路的逻辑电路保持为尽可能简单的,以便避免可发生于电路中的错误且也能够尽可能快地操作逻辑电路以进行较快位错误检测与更正。与当前基于ECC的BEDC电路相比,降低逻辑电路的复杂性帮助减少用于逻辑电路的实施方案中的装置的数目,且因此帮助减少逻辑电路的集成电路布局面积、电力消耗、传播延迟和处理时间。在一些实施例中,与当前基于ECC的BEDC电路的处理时间相比,实例性基于ECC的BEDC电路的操作所需的处理时间可减少约10%到约50%。
图1图解说明根据一些实施例的数据存储系统100的框图。数据存储系统100可被实施为易失性存储器(例如需要电力来维持数据的随机存取存储器(RAM))或非易失性易失性存储器(例如即使在不被供电时仍维持数据的只读存储器(ROM))。RAM可被实施为动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和/或非易失性易失性随机存取存储器(NVRAM),例如提供实例:闪存。在一些实施例中,数据存储系统100可被实施为集成电路装置(举例来说,逻辑设备(例如,微控制器、微处理器或例如此类))的一部分,或存储器装置的一部分。在一些实施例中,连接图1的每一方块的线可表示平行数据总线。邻近于跨越数据总线的斜线的数目可指示总线中的数据线的数目。
数据存储系统100可包含存储器数组102、行解码器106、感测放大器/写入驱动器108、列解码器110、编码器电路124和解码器电路126。存储器数组102可包含布置成p个列和q个行的数组的存储器胞元104.1.1到104.p.q。然而,在不背离本公开的精神和范围的情况下,存储器胞元104.1.1到104.p.q的其它布置是可能的。在一些实施例中,p和q两个皆可为大于1的整数。在一些实施例中,p和q可彼此相等或不同。存储器胞元104.1.1到104.p.q中的每一个可连接到来自WL 114.1到114.q当中的对应字线(WL)和来自BL 116.1到116.p当中的对应位线(BL)。在一些实施例中,存储器数组102的p个列中的每一个中的存储器胞元104.1.1到104.p.q可共享来自BL 116.1到116.p当中的共同BL。类似地,存储器数组102的q个行中的每一个中的存储器胞元104.1.1到104.p.q共享来自WL 114.1到114.q当中的共同WL。举例来说,如图1中所展示,存储器数组102的行1的存储器胞元104.1.1到104.p.1共享WL 114.1且存储器数组102的列p的存储器胞元104.p.1到104.p.q共享BL 116.p。
数据存储系统100可在第一方向128上操作以将数据写入到经配置以形成存储器数组102的存储器胞元数组的一或多个存储器胞元,或在第二方向130上操作以从一或多个存储器胞元读取数据。第一方向128也可称为写入操作模式且第二方向130也可称为读取操作模式。在读取操作模式中,数据存储系统100可从对应于(x+y)位地址的一或多个存储器胞元读取数据。类似地,数据存储系统100可在写入操作模式中将数据写入到对应于(x+y)位地址的一或多个存储器胞元。
在一些实施例中,为针对操作模式(例如读取操作模式或写入操作模式)而从存储器胞元104.1.1到104.p.q当中选择特定存储器胞元,提供一些实例:选择与特定存储器胞元相关联的BL,且选择与此特定存储器胞元相关联的WL。举例来说,可选择BL 116.1和WL114.1以选择存储器胞元104.1.1。此后,可在写入操作模式中将数据写入到所选择存储器胞元中,或可在读取操作模式中从所选择存储器胞元读取数据。
在一些实施例中,可通过将来自对应(x+y)位地址当中的对应x位行地址应用于行解码器106而选择性地确证WL 114.1到114.q中的每一个。数据存储装置控制器(图1中未展示)可用于将x位行地址提供给数据存储装置100。行解码器106可经配置以译码对应x位行地址且将一或多个控制信号提供给对应于x位行地址的WL 114.1到114.q以从存储器胞元104.1.1到104.p.q当中选择存储器胞元行。类似地,可通过将来自对应(x+y)位地址当中的对应y位列地址应用于列解码器110而选择BL 116.1到116.p中的每一个。列解码器110可经配置以译码y位列地址且将一或多个控制信号120提供给对应于y位列地址的感测放大器/写入驱动器108。在一些实施例中,感测放大器/写入驱动器108可从存储器胞元104.1.1到104.p.q当中选择对应于y位列地址的存储器胞元列。
在一些实施例中,感测放大器/写入驱动器108可在读取模式操作期间利用感测放大器从来自BL 116.1到116.p当中的对应一或多个BL(其对应于来自存储器胞元104.1.1到104.p.q当中的所选择一或多个存储器胞元)读取数据以提供数据126a的n个位。另一选择是,感测放大器/写入驱动器108可在写入操作模式期间利用写入驱动器接收数据124b的n个位且将数据124b的n个位写入到来自BL 116.1到116.p当中的对应BL(其对应于来自存储器胞元104.1.1到104.p.q当中的所选择存储器胞元)。
根据一些实施例,存储器数组102可包含编码器电路124和解码器电路126以确保存储于存储器胞元104.1.1到104.p.q中的数据的完整性。为确保此完整性,可在于写入操作模式期间将由存储器数组102接收的数据写入于一或多个所选择存储器胞元104.1.1到104.p.q中之前对所述数据进行编码,且可在于读取操作模式期间从存储器数组102输出存储器数组102中的所存储经编码数据之前针对位错误而对所述所存储经编码数据进行测试和更正(如果必要)。
根据一些实施例,编码器电路124可经配置以接收具有k个位的位长度的数据124a且利用ECC来编码数据124a以形成具有n个位的位长度的码字124b(也称为数据124b),所述码字可在写入操作模式期间被写入到存储器数组102中的所选择存储器胞元中。可基于待检测和/或更正的位错误的所要数目而选择用于编码数据124a的ECC。在一些实施例中,所利用的ECC可检测多位错误,但更正1位错误。在一些实施例中,所利用的ECC可检测多位错误,但更正1位错误和2位错误。为利用ECC来编码数据124a,编码器电路124可经配置以产生具有n-k个位的位长度的ECC位(也称为检查位或冗余位)且在以写入操作模式进行操作时将此(n-k)位ECC与k位数据124a串接以将码字124b提供给感测放大器/写入驱动器108。可基于k位数据124a的一或多个子集而产生ECC的(n-k)个位中的每一个。根据一些实施例,参考图2A到2B而进一步阐述编码器电路124和其配置。
在一些实施例中,n和k两个皆可为整数且n可大于k。在一些实施例中,数据124a可表示由存储器数组102接收的数据流中的一或多个数据。将理解,可在不背离本公开的精神和范围的情况下将参考数据124a的论述应用于由存储器数组102接收且被写入于所述存储器数组中的一或多个数据。
在存储器数组102的读取模式操作期间,ECC位向所存储数据添加冗余且允许对所存储数据中的一或多个位错误进行检测和更正(如果必要)。在一些实施例中,ECC可包含线性码,例如,汉明(Hamming)码、李德-索罗门(Reed-Solomon)码、博斯-乍得胡里-霍昆格姆(Bose-Chaudhuri-Bocquenghem)(BCH)码、涡轮(Turbo)码或低密度同位检查(LDPC)码。在一些实施例中,ECC可为BCH码,所述BCH码是在有限域(伽罗华(Galois)域)上利用多项式构建的循环错误更正码的类别。在一些实施例中,BCH码的优点是在码设计期间,存在对可由码更正的符号错误的数目的精确控制。确切来说,设计可更正存储于存储器数组102中的数据中的多个位错误的二进制BCH码是可能的。在一些实施例中,BCH码的另一优点是可容易地解碼所述BCH码,即,通过被称作校验子解碼的代数方法。此可利用硬件简化解码器电路126的设计。
在一些实施例中,所产生ECC的位长度可取决于待检测和更正的位错误的数目。针对k位数据(例如,数据124a),更正k位数据中的1位错误所需要的ECC位的数目x需要满足:
x>=ceiling[log2(k+x+1)]………………方程式(1)
此方程式(1)产生,此乃因利用ECC的x个位,可编码指示k位数据中的位错误的位置的2x不同信息。以上方程序中的额外+1指示位错误的不存在。举例来说,针对128位数据,需要8位ECC来更正128位数据中的1位错误,此乃因由于ceiling[log2(128+8+1)]<8,因此满足以上方程式(1)。然而,如果ECC位的数目是7,那么由于ceiling[log2(128+7+1)]>7,因此不满足以上方程式,且因此7位ECC可不能够更正128位数据中的1位错误。此外,为更正每一额外位错误,需要ECC的另外x个位。举例来说,针对128位数据,需要2*8位(即,16位)ECC来更正128位数据中的2位错误,此乃因由于ceiling[log2(128+16+)]<16,因此满足以上方程式(1)。因此,通过k位数据与用于二进制数据的x位ECC的串接而形成的码字(例如,码字124b)的总位长度表示为n=k+x。在一些实施例中,如果x的值经选择以更正数据(例如,数据124a)中的1位错误,那么此x位ECC可帮助检测2位错误且更正1位错误。举例来说,用于64位数据(例如,数据124a)的8位ECC可检测整个72位码字中的2位错误且更正整个72位码字中的1位错误。此被称作SECDED码,其能够进行单错误更正(SEC)和双错误检测(DED)。在一些实施例中,如果x的值经选择以更正数据(例如,数据124a)中的2位错误,那么此x位ECC可帮助检测3位错误且更正1位错误和2位错误。
根据一些实施例,解码器电路126可经配置以在读取操作模式期间从存储器数组102中的所选择存储器胞元接收具有n个位的位长度的码字126b(也称为数据126b)。在一些实施例中,解码器电路126可进一步经配置以在译码和输出k位数据126a之前对码字126b中的单位错误和/或多位错误进行检测和更正(如果必要)。码字126b可包含k位数据126a'(未展示)和用于编码和存储由存储器数组102接收的k位数据126a'的(n-k)位ECC。如果数据126a'在存储于存储器数组102中时未被损毁,那么所述数据可类似于输出数据126a。在一些实施例中,数据126a可类似于数据124a且如果码字126b未被损毁,那么所述码字可类似于码字124b。在一些实施例中,码字126b可表示存储于存储器数组102的一或多个存储器胞元中的码字。将理解,可在不背离本公开的精神和范围的情况下将参考码字126b的论述应用于从存储器数组102的存储器胞元读取的其它码字。
在一些实施例中,码字126b的n-k个ECC位可用于检测码字126b中的单位错误和多位错误且更正码字126b中的1位错误。在此情形中,解码器电路126可经配置以检测码字126b中的1位错误的存在、确定所述1位错误的位置且更正所述1位错误。为检测码字126b中的1位错误,解码器电路126可经配置以产生码字126b的(n-k)位校验子S且确定校验子S是否等于零。当码字126b的校验子S等于零(此可指示码字126b是无位错误)时,解码器126可经配置以将n-k个ECC位与码字126b分离且在此无位错误情形中输出类似于数据126b'的数据126b。在本公开中,除非另外提到,否则校验子等于零是指校验子的所有位皆等于零。
当码字126b的校验子S不等于零(此可指示在码字126b中存在1位错误)时,解码器电路126可经配置以确定1位错误的位置。为确定所述位置,解码器电路126可经配置以依序翻转码字126b的每一位以形成新码字、在位翻转之后针对新码字中的每一个产生(n-k)位校验子S',且确定新码字的校验子S'中的任一个是否等于零。当新码字的校验子S'中的一个等于零时,此可指示与等于零的校验子S'对应的新码字具有码字126b中的1位错误的位置的信息。在一些实施例中,解码器电路126可经配置以利用此位置信息来更正码字126b中的1位错误、将n-k个ECC位与经更正码字126b分离,并且输出可为无位错误且未被损毁的数据126b。根据一些实施例,参考图3A到3C和图4到7进一步阐述用于1位错误检测与更正的解码器电路126和其配置。
当新码字的校验子S'中的任一个皆不等于零时,此可指示在码字126b中存在多位错误。在此情形中,解码器电路126可经配置以将n-k个ECC位与经损毁码字126b分离且输出指示在数据126b中存在不可更正多位错误的信号。
在一些实施例中,码字126b的n-k个ECC位可用于检测码字126b中的单位错误和多位错误且更正码字126b中的1位错误和2位错误。在此情形中,解码器电路126可经配置以检测码字126b中的1位错误和2位错误的存在、确定1位错误和2位错误的位置且更正1位错误和2位错误。在一些实施例中,解码器电路126可经配置以产生码字126b的(n-k)位校验子S且确定校验子S是否等于零。当码字126b的校验子S等于零(此可指示码字126b是无位错误)时,解码器126可经配置以将n-k个ECC位与码字126b分离且在此无位错误情形中输出类似于数据126b'的数据126b。
当码字126b的校验子S不等于零(此可指示在码字126b中存在单位错误或多位错误)时,解码器电路126可经配置以检测码字126b中的1位错误的存在和位置。在此情形中,解码器电路126可经配置以确定校验子S是否与预定值匹配。当校验子S与所述预定值匹配(此可指示在码字126b中存在1位错误且提供1位错误的位置)时,解码器电路126可经配置以更正码字126b中的1位错误、将n-k个ECC位与经更正码字126b分离,并且输出可为无位错误且未被损毁的数据126b。
当码字126b的校验子S不满足所述预定值(此可指示在码字126b中存在多位错误)时,解码器电路126可经配置以确定码字126b中的2位错误的位置。为确定所述位置,解码器电路126可经配置以依序翻转码字126b的每一位以形成新码字、在位翻转之后针对新码字中的每一个产生(n-k)位校验子S',且确定新码字的校验子S'中的任一个是否与预定值匹配。当新码字的校验子S'中的一个与预定值匹配(此可指示在码字126b中存在2位错误且提供2位错误的位置)时,解码器电路126可经配置以更正码字126b中的2位错误、将n-k个ECC位与经更正码字126b分离,并且输出可为无位错误且未被损毁的数据126b。根据一些实施例,参考图2和图5到6进一步阐述用于1位错误和2位错误检测与更正的解码器电路126和其配置。
当新码字的校验子S'中的任一个皆不与预定值匹配时,此可指示在码字126b中存在3位错误或更多位错误。在此情形中,解码器电路126可经配置以将n-k个ECC位与经损毁码字126b分离且输出指示在数据126b中存在不可更正位错误的信号。
与用于数据存储系统中的当前位错误检测电路中的解码器电路相比,上文所阐述的解码器电路126的用以确定位错误的位置的位翻转配置可帮助减少解码器电路126的复杂性和处理时间。根据一些实施例,参考图2到6进一步阐述用于1位错误和2位错误检测与更正的解码器电路126和其配置。在一些实施例中,解码器电路126可通过如用于数据存储系统中的当前解码器电路中的复杂多项式计算而帮助减少确定位错误位置的复杂性。在一些实施例中,与基于ECC的数据存储系统中的当前解码器电路的处理时间相比,解码器电路126的操作所需的处理时间可减少约10%到约50%。
尽管未展示控制信号和/或频率信号,但将理解,数据存储系统100可从一或多个控制电路和/或参考频率接收此些信号以控制数据存储系统100的一或多个组件的操作。
图2A图解说明根据一些实施例的可被实施为数据存储系统100的一部分的编码器电路224的框图。在一些实施例中,编码器电路224可被实施为编码器电路124的一部分。在一些实施例中,编码器电路224可表示编码器电路124。除非另外提到,否则对编码器电路124和其配置的以上论述适用于编码器电路224。在一些实施例中,连接图2A的每一方块的线可表示平行数据总线。邻近于跨越数据总线的斜线的数目可指示总线中的数据线的数目。
编码器电路224可经配置以接收k位数据124a且利用n-k位ECC来编码数据124a以形成可在写入操作模式期间被写入到存储器数组102的所选择存储器胞元中的n位码字124b。在一些实施例中,编码器电路224可包含数据寄存器234、G矩阵(也称为产生矩阵或产生器矩阵)产生电路236、ECC产生电路238和码字产生电路240。将理解,在不背离本公开的精神和范围的情况下,编码器电路224可具有其它组件(未展示),例如(但不限于)用以控制编码器电路224的一或多个组件(例如,数据寄存器234、G矩阵产生电路236、ECC位产生电路238、码字产生电路240)的操作的控制电路(例如,频率电路、电力电路)和/或控制信号(例如,频率信号)。还将理解,在不背离本公开的精神和范围的情况下,编码器电路224可从控制电路(未展示)接收控制信号(例如,频率信号)(未展示)以控制编码器电路224的一或多个组件(例如,数据寄存器234、G矩阵产生电路236、ECC位产生电路238、码字产生电路240)的操作,所述控制电路可被实施为数据存储系统100的一部分和/或被实施为数据存储系统100的其它组件(例如,解码器电路126、226)的一部分。
数据寄存器234可经配置以接收和存储数据124a。在一些实施例中,数据124a可暂时存储于数据寄存器234中直到可从编码器电路224输出码字124b为止。如上文所论述,码字124b可通过n-k位ECC与k位数据124a的串接而形成。图2A图解说明用于从n-k位ECC 238a和k位数据124a产生码字124b的示范性电路。可由ECC产生电路238基于从数据寄存器234接收的数据124a和从G矩阵产生电路236接收的G矩阵236a而产生ECC 238a。
在一些实施例中,可由G矩阵产生电路236基于从数据寄存器234接收的数据124a而产生G矩阵236a。G矩阵236a可为有限域(例如,伽罗华域(GF))上的产生器多项式(generator polynomial)g(x)的矩阵形式,此乃因可在有限域的元素上定义ECC 238a。在一些实施例中,有限域可为GF(2m)且可在GF(2m)的元素上定义ECC 238a。GF元素可被写入作为m位二进制向量。整个GF(2m)可被一对一映像到一个二进制空间(0到2m-1)。因此,可对GF元素执行二进制算术运算。在一些实施例中,具有长度2m-1的t位错误更正二进制线性码(例如,ECC 238a)的产生器多项式g(x)可为GF(2)上的最低次数多项式,所述最低次数多项式具有α、α2、α3、…、α2t作为其根,其中α是GF(2m)中的本原元素且m是大于或等于3的整数。
在一些实施例中,G矩阵产生电路236可经配置以首先产生产生器多项式g(x)的非系统矩阵形式且然后通过所产生非系统矩阵的线性变换而产生呈系统矩阵形式的G矩阵236a。从G矩阵产生电路236输出的G矩阵236a的系统形式可包含具有尺寸k乘n-k的同位矩阵(P矩阵)和具有k乘k的尺寸的单位矩阵(I矩阵),其中n是码字124b的大小且k是数据124a的大小。因此,G矩阵236a可具有k乘n、表示为Gk×n的尺寸。
在一些实施例中,ECC产生电路238可经配置以从G矩阵产生电路236接收G矩阵236a且从数据寄存器234接收数据124a。ECC产生电路238可进一步经配置以基于数据124a与G矩阵236a之间的点积而产生和输出ECC 238a。在一些实施例中,可由ECC产生电路238基于以下方程序(2)而产生ECC 238a:
E=D·P…………方程式(2)
其中E表示ECC 238a的位向量、D表示数据124a的位向量、P表示G矩阵236a的P矩阵且符号“·”表示点运算。
在一些实施例中,ECC产生电路238可包含用以实施方程式(2)的多个XOR树200(也称为XOR逻辑闸树),如图2B中所图解说明。多个XOR树200中的每一XOR树可输出ECC 238a的位。如图2B中所展示,多个XOR树200中的每一XOR树可包含布置成逻辑树架构的多个XOR逻辑闸,所述逻辑树架构包含多个XOR逻辑层级。在图2B中,多个XOR树200的节点242、244和246中的每一个表示XOR逻辑闸。在一些实施例中,可存在总共n-k个XOR树200,每一XOR树具有平均k/2个节点。因此,XOR树200中的每一个的深度可为log2n。圆形节点242、矩形节点244和三角形节点246分别表示多个XOR树200的XOR逻辑层级1、2和3。将理解,在不背离本公开的精神和范围的情况下,XOR树200可具有多于或少于3个层级。XOR树200的每一XOR逻辑层级的每一节点可包含一对输入,所述对输入用以从先前XOR逻辑层级的一对节点接收输出。在图2B中,每一节点的输入由通向节点的一对箭头表示且从每一节点的输出由离开节点的箭头表示。去往XOR树200的每一节点的所述对输入可包含数据124a的一对数据位。此些数据位对的位位置与G矩阵236a的P矩阵中的非零数据位位置的位置对应。
在一些实施例中,码字产生电路240可经配置以接收从ECC产生电路238输出的ECC238a且从数据寄存器234接收数据124a。码字产生电路240可进一步经配置以将ECC 238a与数据124a串接以形成并输出可在写入操作模式期间被写入到存储器数组102的所选择存储器胞元中的n位码字124b。
图3A图解说明根据一些实施例的可被实施为数据存储系统100的一部分的解码器电路326的框图。在一些实施例中,解码器电路326可被实施为解码器电路126的一部分。在一些实施例中,解码器电路326可表示解码器电路126。除非另外提到,否则对解码器电路126和其配置的以上论述适用于解码器电路326。在一些实施例中,连接图3A的每一方块的线可表示平行数据总线。邻近于跨越数据总线的斜线的数目可指示总线中的数据线的数目。
根据一些实施例,解码器电路326可经配置以在读取操作模式期间从存储器数组102中的所选择存储器胞元接收n位码字126b。在一些实施例中,解码器电路326可进一步经配置以在译码和输出k位数据126a之前对码字126b中的单位错误和/或多位错误进行检测和更正(如果必要)。在一些实施例中,解码器电路326可包含数据寄存器352、位翻转电路354、校验子产生电路356、H矩阵(也称为检查矩阵或同位检查矩阵)产生电路358、位错误检测电路360、更正电路362和控制电路364。
数据寄存器352可经配置以接收和存储码字126b。在一些实施例中,码字126b可暂时存储于数据寄存器352中直到可从解码器电路326输出数据126a为止。码字126b可包含k位数据126a'(未展示)和(n-k)位ECC,所述(n-k)位ECC用于通过编码器电路(例如,编码器电路124或224)而进行编码且存储由存储器数组102接收的k位数据126a'(未展示)。数据126a'可为码字126b的原始数据且如果所述数据在存储于存储器数组102中时未被损毁,那么所述数据可类似于输出数据126a。在一些实施例中,数据126a可类似于数据124a且如果码字126b未被损毁,那么所述码字可类似于码字124b。
图3A图解说明用于检测和更正数据(例如,码字126b)中的单位错误和多位错误的示范性电路。在一些实施例中,位翻转电路354可经配置以从数据寄存器352接收n位码字126b且基于从控制电路364接收的控制信号364a而输出n位码字126b'(也称为数据126b'),所述n位码字可与码字126b相同或可具有不同于码字126b的一个位。当在检测码字126b中的位错误的存在的步骤期间控制信号364a停用位翻转电路354的位翻转配置时,码字126b'可与码字126b相同。当在检测码字126b中的位错误的位置的步骤期间控制信号364a启用位翻转电路354的位翻转配置时,码字126b'可与码字126b相差一个位。位翻转电路354可经配置以在检测码字126b中的位错误的位置的每一反复步骤期间翻转码字126b的一或多个位。在一些实施例中,位翻转电路354可经配置以在检测码字126b中的位错误的位置的每一反复步骤期间连续地翻转码字126b的一个位。
在一些实施例中,校验子产生电路356可经配置以从H矩阵产生电路358接收码字126b'和经转置H矩阵358a。在一些实施例中,H矩阵产生电路358可经配置以从编码器电路224的G矩阵产生电路(例如G矩阵产生电路236)接收信息132。信息132可为可用于通过H矩阵产生电路358而产生并输出经转置H矩阵358a和H矩阵358b的G矩阵,例如G矩阵236a。在一些实施例中,G矩阵236a在呈系统形式时可与经转置H矩阵358a具有关系,如图3B中所图解说明。G矩阵236a与经转置H矩阵358a可共享P矩阵。H矩阵产生电路358可通过采用G矩阵236a的P矩阵的转置且将经转置P矩阵与具有尺寸(n-k)乘(n-k)的同位矩阵(I矩阵)串接而产生具有n乘(n-k)的尺寸的经转置H矩阵358a。H矩阵358b可具有(n-k)乘n的尺寸。在一些实施例中,经转置H矩阵358a和H矩阵358b可呈系统形式。
返回参考图3A,校验子产生电路356可进一步经配置以基于码字126b'与经转置H矩阵358a之间的点积而产生并输出码字126b'的(n-k)位校验子356a。在一些实施例中,可由校验子产生电路356基于以下方程序(3)而产生(n-k)位校验子356a:
S=C·HT…………方程式(3)
其中S表示校验子356a的位向量、C表示码字126b'的位向量、HT表示经转置H矩阵358a且符号“·”表示点运算。
在一些实施例中,校验子产生电路356可包含用以实施方程式(3)的多个XOR树300(也称为XOR逻辑闸树),如图3C中所图解说明。多个XOR树300中的每一XOR树可输出校验子356a的位。如图3C中所展示,多个XOR树300中的每一XOR树可包含布置成逻辑树架构的多个XOR逻辑闸,所述逻辑树架构包含多个XOR逻辑层级。在图3C中,多个XOR树300的节点342、344和346中的每一个表示XOR逻辑闸。在一些实施例中,可存在总共n-k个XOR树300,每一XOR树具有平均n/2个节点。因此,XOR树300中的每一个的深度可为log2n。圆形节点342、矩形节点344和三角形节点346分别表示多个XOR树300的XOR逻辑层级1、2和3。将理解,在不背离本公开的精神和范围的情况下,XOR树300可具有多于或少于3个层级。XOR树300的每一XOR逻辑层级的每一节点可包含一对输入,所述对输入用以从先前XOR逻辑层级的一对节点接收输出。在图3B中,每一节点的输入由通向节点的一对箭头表示且从每一节点的输出由离开节点的箭头表示。去往XOR树300的每一节点的所述对输入可包含码字126b'的一对数据位。此些数据位对的位位置与经转置H矩阵358a中的非零数据位位置的位置对应。
返回参考图3A,在一些实施例中,位错误检测电路360可经配置以检测码字126b中的位错误的存在,且基于来自控制电路364的控制信号364b和/或从校验子产生电路356接收的校验子356a而检测码字126b中的位错误(如果存在)的位置。在一些实施例中,位错误检测电路360可经配置以确定校验子356a是否等于零且基于此确定,位错误检测电路360可经配置以检测码字126b中的位错误的存在。如果确定校验子356a等于零,那么位错误检测电路360可经配置以将指示码字126b为无错误的信号360b提供给控制电路364。否则,位错误检测电路360可经配置以将指示码字126b具有一或多个位错误的信号360b提供给控制电路364。
在一些实施例中,位错误检测电路360可经配置以确定校验子356a是否等于预定值且基于此确定,位错误检测电路360可经配置以检测码字126b中的位错误的位置。在一些实施例中,所述预定值可为从H矩阵产生电路358接收的H矩阵358b的列。H矩阵358b的每一列可具有n-k个位。如果确定校验子356a与H矩阵358b的列中的一个相等或匹配,那么位错误检测电路360可经配置以将指示码字126b在码字126b的位位置处具有位错误的信号360b提供给控制电路364,所述位位置与H矩阵358b的所匹配列的索引对应。举例来说,如果H矩阵358b的第三列与校验子356a匹配,即,H矩阵358b的第三列的位向量与校验子356a的位向量匹配,那么码字126b的第三位位置具有位错误。否则,位错误检测电路360可经配置以将指示码字126b在不同位置处具有位错误的信号360b提供给控制电路364。
在一些实施例中,更正电路362可经配置以基于来自控制电路364的控制信号364c而输出k位数据126a。如果位错误检测电路360将指示码字126b是无错误的信号360b提供给控制电路364,那么更正电路362可经配置以基于控制信号364c而输出数据126a。否则,如果位错误检测电路360将指示码字126b具有一或多个位错误的信号360b提供给控制电路364,那么更正电路362可经配置以在从更正电路362输出数据126a之前基于控制信号364c、基于从各别位错误检测电路360和/或位翻转电路354接收的位错误位置信息360a和/或354a和/或基于从数据寄存器352接收的码字126b而更正码字126b。数据126a可为码字126b的k位数据部分,在从控制电路364接收无错误信号364c之后或在更正码字126b之后通过更正电路362而将所述k位数据部分与码字126b的n-k位ECC部分分离。如果数据126a由更正电路362在接收无错误信号364c之后输出,那么数据126a可为码字126b的被存储于存储器数组102中的原始k位数据部分,或如果数据126a由更正电路362在更正码字126b之后输出,那么数据126a可为经更正码字126b的k位数据部分。
在一些实施例中,控制电路364可经配置以控制解码器电路326的除此处所阐述的电路354、360和362之外的其它组件的操作。来自控制电路364的控制信号(例如,364a到364c)可呈频率信号、电压信号、电流信号、数字信号或其组合的形式。在一些实施例中,控制电路364可在解码器电路326外部实施。将理解,在不背离本公开的精神和范围的情况下,解码器电路326可具有用以控制解码器电路326的一或多个组件的操作的除控制电路364之外的其它组件(未展示)。还将理解,在不背离本公开的精神和范围的情况下,解码器电路326可从控制电路(未展示)接收控制信号(例如,频率信号、电压信号、电流信号、数字信号或其组合)(未展示)以控制解码器电路326的一或多个组件的操作,所述控制电路可被实施为数据存储系统100的一部分和/或被实施为数据存储系统100的其它组件(例如,编码器电路124、224)的一部分。
图4是根据一些实施例的实例性方法400的流程图,所述实例性方法用于利用解码器电路(例如,解码器电路126、326和/或526)来检测存储于存储器装置(例如,存储器数组102)中的数据(例如,数据124b或126b)中的1位错误和2位错误且更正1位错误。可以不同次序来执行操作或取决于特定应用而不执行操作。出于说明性目的,将参考图1、2A到2B、3A到3C和5中所图解说明的装置和电路而阐述图4中所图解说明的操作中的一些操作。
图5图解说明根据一些实施例的可被实施为数据存储系统100的一部分的解码器电路526的框图。在一些实施例中,解码器电路526可表示解码器电路126和/或326。除非另外提到,否则对解码器电路126和326以及其组件和配置的以上论述适用于解码器电路526。在一些实施例中,解码器电路526可包含数据寄存器352、位翻转电路554、校验子产生电路356、H矩阵产生电路358(图5中未展示)、位错误检测电路360、更正电路562和控制电路564。上文阐述图5中的具有与图3A中的组件相同的注释的组件。除非另外提到,否则对位翻转电路354、控制电路364、更正电路362、控制信号364a到364c和信息354a的以上论述分别适用于位翻转电路554、控制电路564、更正电路562、控制信号564a到564c和信息570a。
在一些实施例中,方法400可为解码器电路126、326和/或526的操作流程。应注意,方法400并未阐述解码器电路126、326和/或526的全部操作。因此,应理解,可在方法400期间提供额外操作,且可仅在本文中简要地阐述一些其它操作。
参考图4,在操作402中,从存储器装置接收所存储数据且将所述所存储数据提供给校验子产生电路。举例来说,如图5中所展示,可由解码器电路526的数据寄存器352从存储器数组102接收码字126b且可将等于码字126b的码字126b'提供给校验子产生电路356。在一些实施例中,将等于码字126b的码字126b'提供给校验子产生电路356可包含将位翻转电路554的移位寄存器570初始化为零,即,基于从控制电路564接收的控制信号564a而将移位寄存器570的所有位设定为逻辑值零。所述提供可进一步包含在码字126b与移位寄存器570的位之间执行逐位逻辑XOR运算,如图5中所图解说明。在一些实施例中,移位寄存器570可为具有n个位的位长度的串行输入并列输出移位寄存器。
参考图4,在操作404中,产生接收的所存储数据的校验子。举例来说,如图5中所展示,可由校验子产生电路356基于在操作402中接收的码字126b且基于从H矩阵产生电路358(图3A中所展示)接收的经转置H矩阵358a而产生校验子356a。在一些实施例中,校验子356a的产生可包含基于上文参考图3A所阐述的方程式(3)而在于操作402中接收的码字126b与经转置H矩阵358a之间执行点积。所述产生可进一步包含在码字126b与经转置H矩阵358a之间执行逻辑XOR运算,如上文参考图3A和3C所阐述。
参考图4,在操作406中,比较接收的所存储数据的所产生校验子与零。举例来说,如图5中所展示,可将校验子356a提供给位错误检测电路360,所述位错误检测电路可经配置以比较校验子356a与零。在一些实施例中,所述比较可包含通过位错误检测电路360而执行校验子356a的n-k个位的逻辑OR运算。如果逻辑OR运算的输出(例如,信号360b)是逻辑值零(此指示校验子356a等于零),那么方法400可继续进行到操作408。否则,如果逻辑OR运算的输出(例如,信号360b)是逻辑值1(此指示校验子356a不等于零),那么方法400可继续进行到操作410。在一些实施例中,校验子356a等于零指示码字126b是无错误的且校验子356a不等于零指示码字126b可具有1位错误。
参考图4,在操作408中,输出接收的所存储数据的k位数据。举例来说,如图5中所展示,可由更正电路562输出数据126a。在一些实施例中,从更正电路562输出数据126a可包含在码字126b与操作402的移位寄存器570的经初始化n个位之间执行逐位逻辑XOR运算,后续接着通过电路572而将码字126b的k位数据部分与码字126b的n-k位ECC部分分离。所述输出可进一步包含由控制电路564从位错误检测电路360接收指示校验子356a等于零的信号360b,后续接着控制电路564将控制信号564c提供给逻辑电路574。控制信号564c可启用逻辑电路574以允许将来自电路572的k位数据部分从更正电路562输出。在一些实施例中,控制电路564可经配置以提供信号564c,当控制电路564从位错误检测电路360接收到指示校验子356a不等于零的信号360b时,信号564c停用逻辑电路574。
参考图4,在操作410中,翻转接收的所存储数据的位。举例来说,如图5中所展示,可通过位翻转电路554而翻转码字126b的位以输出与码字126b相差一个位的码字126b'。在一些实施例中,位翻转可包含在码字126b与移位寄存器570的位之间执行逐位逻辑XOR运算(图5中所展示),其中移位寄存器570的位中的一个具有逻辑值1且其它位具有逻辑值零。移位寄存器570的具有逻辑值1的位的位置与码字126b的可被翻转的位的位置对应。
在一些实施例中,操作410可为用于确定码字126b中的1位错误的位置的反复循环的一部分。所述反复循环可包括操作410到414。第一反复可以在操作410处在移位寄存器570的最高有效位(MSB)位置中输入逻辑值1开始。在每一反复期间,在操作410处,可将移位寄存器570中的逻辑值1朝向其最低有效位(LSB)位置移位一个位位置,而移位寄存器570的其余位位置具有逻辑值零。最后反复可在操作410期间在移位寄存器570的LSB位置中具有逻辑值1。因此,第一反复可以在操作410处翻转码字126b的MSB开始且最后反复可在操作410期间使码字126b的LSB翻转。在每一反复期间,在操作410处,可翻转码字126b的连续位,所述连续位与移位寄存器570中的逻辑1的位位置对应。在一些实施例中,移位寄存器570的操作(例如,逻辑值1的移位)可为基于来自控制电路564的控制信号564a。
参考图4,在操作412中,产生经位翻转数据的校验子。举例来说,如图5中所展示,可由校验子产生电路356基于在操作410处输出的码字126b'且基于从H矩阵产生电路358(图3A中所展示)接收的经转置H矩阵358a而产生码字126b'的校验子356a。在一些实施例中,校验子356a的产生可包含基于上文参考图3A所阐述的方程式(3)而在于操作410中输出的码字126b'与经转置H矩阵358a之间执行点积。所述产生可进一步包含在码字126b'与经转置H矩阵358a之间执行逻辑XOR运算,如上文参考图3A和3C所阐述。
参考图4,在操作414中,比较经位翻转数据的所产生校验子与零。举例来说,如图5中所展示,可将在操作412处产生的校验子356a提供给位错误检测电路360,所述位错误检测电路可经配置以比较校验子356a与零。在一些实施例中,所述比较可包含通过位错误检测电路360而执行校验子356a的n-k个位的逻辑OR运算。如果逻辑OR运算的输出(例如,信号360b)是逻辑值零(此指示校验子356a等于零),那么方法400可继续进行到操作416。否则,如果逻辑OR运算的输出(例如,信号360b)是逻辑值1(此指示校验子356a不等于零),那么方法400可继续进行到操作410。
在一些实施例中,在操作412处产生的校验子356a等于零指示在操作410处输出的码字126b'的经翻转位位置是码字126b中的1位错误的位置。在操作412处产生的校验子356a不等于零指示在操作410处输出的码字126b'的经翻转位位置并非是码字126b中的1位错误的位置。在此不等情形中,执行操作410到414的反复循环的另一反复。可执行反复循环的反复直到在操作414处发现在操作412处产生的校验子356a是零为止。如果在反复循环的n数目个反复之后于操作414处未发现在操作412处产生的校验子356a是零,那么位错误检测电路360可将指示码字126b具有不可更正2位错误的信号360b提供给控制电路564。
参考图4,在操作416中,更正接收的所存储数据的1位错误。举例来说,如图5中所展示,可由更正电路562基于从数据寄存器352接收的码字126b且基于从移位寄存器570接收的信息570a而更正数据码字126b中的1位错误。在一些实施例中,所述更正可包含在操作410处,在码字126b与移位寄存器570的n个位的逻辑值之间执行逐位逻辑XOR运算,后续接着通过电路572而将经更正码字126b的k位数据部分与经更正码字126b的n-k位ECC部分分离。
参考图4,在操作418中,输出经更正所存储数据的k位数据。举例来说,如图5中所展示,可由更正电路562输出数据126a。在一些实施例中,从更正电路562输出数据126a可包含由控制电路564从位错误检测电路360接收指示在操作412处产生的校验子356a等于零的信号360b,后续接着控制电路564将控制信号564c提供给逻辑电路574。控制信号564c可启用逻辑电路574以允许将来自电路572的经分离k位数据部分从更正电路562输出。在一些实施例中,控制电路564可经配置以提供信号564c,当控制电路564从位错误检测电路360接收到指示在操作412处产生的校验子356a不等于零的信号360b时,信号564c停用逻辑电路574。
图6是根据一些实施例的实例性方法600的流程图,所述实例性方法用于利用解码器电路(例如,解码器电路126、326和/或726)来检测存储于存储器装置(例如,存储器数组102)中的数据(例如,数据124b或126b)中的1位错误和多位错误且更正所述数据中的1位错误和2位错误。可以不同次序来执行操作或取决于特定应用而不执行操作。出于说明性目的,将参考图1、2A到2B、3A到3C和7中所图解说明的装置和电路而阐述图6中所图解说明的操作中的一些操作。
图7图解说明根据一些实施例的可被实施为数据存储系统100的一部分的解码器电路726的框图。在一些实施例中,解码器电路726可表示解码器电路126和/或326。除非另外提到,否则对解码器电路126和326以及其组件和配置的以上论述适用于解码器电路726。在一些实施例中,解码器电路726可包含数据寄存器352、位翻转电路754、校验子产生电路356、H矩阵产生电路358(图7中未展示)、位错误检测电路760、更正电路762和控制电路764。上文阐述图7中的具有与图3A中的组件相同的注释的组件。除非另外提到,否则对位翻转电路354、位错误检测电路360、控制电路364、更正电路362、控制信号364a到364c以及信息354a和360a的以上论述分别适用于位翻转电路754、位错误检测电路760、控制电路764、更正电路762、控制信号764a到764c以及信息770a和780a。
在一些实施例中,方法600可为解码器电路126、326和/或726的操作流程。应注意,方法600并未阐述解码器电路126、326和/或726的全部操作。因此,应理解,可在方法600期间提供额外操作,且可仅在本文中简要地阐述一些其它操作。
参考图6,在操作602中,从存储器装置接收所存储数据且将所述所存储数据提供给校验子产生电路。举例来说,如图7中所展示,可由解码器电路726的数据寄存器352从存储器数组102接收码字126b且可将等于码字126b的码字126b'提供给校验子产生电路356。在一些实施例中,将等于码字126b的码字126b'提供给校验子产生电路356可包含将位翻转电路754的移位寄存器770初始化为零,即,基于从控制电路764接收的控制信号764a而将移位寄存器770的所有位设定为逻辑值零。所述提供可进一步包含在码字126b与移位寄存器770的n个位之间执行逐位逻辑XOR运算,如图7中所图解说明。在一些实施例中,移位寄存器770可为具有n个位的位长度的串行输入并列输出移位寄存器。
参考图6,在操作604中,产生接收的所存储数据的校验子。举例来说,如图7中所展示,可由校验子产生电路356基于在操作602中接收的码字126b且基于从H矩阵产生电路358(图3A中所展示)接收的经转置H矩阵358a而产生校验子356a。在一些实施例中,校验子356a的产生可包含基于上文参考图3A所阐述的方程式(3)而在于操作602中接收的码字126b与经转置H矩阵358a之间执行点积。所述产生可进一步包含在码字126b与经转置H矩阵358a之间执行逻辑XOR运算,如上文参考图3A和3C所阐述。
参考图6,在操作606中,比较接收的所存储数据的所产生校验子与零。举例来说,如图7中所展示,可将校验子356a提供给位错误检测电路760的比较器776。比较器776可经配置以比较校验子356a与零。在一些实施例中,所述比较可包含通过比较器776而执行校验子356a的n-k个位的逻辑OR运算。如果逻辑OR运算的输出信号760b是逻辑值零(此指示校验子356a等于零),那么方法600可继续进行到操作608。否则,如果逻辑OR运算的输出信号760b是逻辑值1(此指示校验子356a不等于零),那么方法600可继续进行到操作610。在一些实施例中,校验子356a等于零指示码字126b是无错误的且校验子356a不等于零指示码字126b可具有1位错误或2位错误。在一些实施例中,在操作606中,可基于来自控制电路764的控制信号764b而停用比较器778且可将移位寄存器780的n个位初始化为逻辑值零。在一些实施例中,移位寄存器780可为具有n个位的位长度的并列输入并列输出移位寄存器。
参考图6,在操作608中,输出接收的所存储数据的k位数据。举例来说,如图7中所展示,可由更正电路762输出数据126a。在一些实施例中,从更正电路762输出数据126a可包含在码字126b与操作602的移位寄存器770的经初始化n个位之间执行逐位逻辑XOR运算,后续接着通过电路772而将码字126b的k位数据部分与码字126b的n-k位ECC部分分离。所述输出可进一步包含由控制电路764从位错误检测电路760接收指示校验子356a等于零的信号760b,后续接着控制电路764将控制信号764c提供给逻辑电路774。控制信号764c可启用逻辑电路774以允许将来自电路772的k位数据部分从更正电路762输出。
参考图6,在操作610中,比较接收的所存储数据的所产生校验子与H矩阵的列。举例来说,如图7中所展示,可将在操作604处产生的校验子356a提供给位错误检测电路760的比较器778。比较器778可经配置以比较校验子356a与H矩阵358b的n个列中的每一个。在一些实施例中,控制电路764可控制计数器(未展示)以将H矩阵358b的每一列依序输出到比较器778。计数器可耦合到控制电路764和H矩阵产生电路358。可并列地(即,同时地)完成与每一列的比较,或可串行地(即,一个接一个地)完成所述比较。在一些实施例中,所述比较可包含从控制电路764接收控制信号764b以启用比较器778的操作。可响应于控制电路764接收到指示在操作606处产生的校验子356a不等于零的信号760b而将控制信号764b提供给比较器778。
所述比较可进一步包含将每一比较结果的输出输入到移位寄存器780的每一位位置中。移位寄存器780的每一位位置可与H矩阵358b的列的每一索引对应。举例来说,如果校验子356a与H矩阵358b的第n列匹配,那么从比较器778输出逻辑值1且将逻辑值1输入到移位寄存器780的第n位位置中,并且如果校验子356a不与H矩阵358b的第n列匹配,那么从比较器778输出逻辑值零且将逻辑值零输入到移位寄存器780的第n位位置中。在操作604处产生的校验子356a与H矩阵358b的一列匹配可指示码字126b具有1位错误且H矩阵358b的所匹配列的索引指示码字126b中的1位错误的位置。举例来说,如果校验子356a与H矩阵358b的第n列匹配,那么码字126b的第n位位置具有1位错误。
操作610中的比较可进一步包含通过控制电路764而执行移位寄存器780的n个位的逻辑OR运算。如果逻辑OR运算的输出是逻辑值1(此指示移位寄存器780的n个位中的至少一个等于1),那么方法600可继续进行到操作612。否则,如果逻辑OR运算的输出信号是逻辑值零(此指示移位寄存器780的n个位中的任一个皆不等于零),那么方法600可继续进行到操作616。
参考图6,在操作612中,更正接收的所存储数据的1位错误。举例来说,如图7中所展示,可由更正电路762基于从数据寄存器352接收的码字126b、基于从移位寄存器770接收的信息770a且基于从移位寄存器780接收的信息780a而更正码字126b中的1位错误。在一些实施例中,所述更正可包含在操作610处,在码字126b与移位寄存器770的n个位的逻辑值之间执行第一逐位逻辑XOR运算,后续接着在操作610处,在移位寄存器780的n个位的逻辑值与第一逐位逻辑XOR运算的n位输出之间执行第二逐位逻辑XOR运算。第二逐位逻辑XOR运算可后续接着通过电路772而将经更正码字126b的k位数据部分与经更正码字126b的n-k位ECC部分分离。
参考图6,在操作614中,输出1位错误更正的所存储数据的k位数据。举例来说,如图7中所展示,可由更正电路762输出数据126a。在一些实施例中,从更正电路762输出数据126a可包含从控制电路764接收控制信号764c以启用逻辑电路774来允许将来自电路772的经分离k位数据部分从更正电路762输出。可基于在控制电路764中进行的移位寄存器780的n个位的逻辑OR运算输出逻辑值1而触发控制信号764c来启用逻辑电路774。在一些实施例中,当控制电路764从比较器776接收到指示在操作606处产生的校验子356a不等于零的信号360b且在控制电路764中进行的移位寄存器780的n个位的逻辑OR运算输出逻辑值零时,可触发控制信号764c来停用逻辑电路774。
参考图6,在操作616中,翻转接收的所存储数据的位。举例来说,如图7中所展示,可通过位翻转电路754而翻转码字126b的位以输出与码字126b相差一个位的码字126b'。在一些实施例中,位翻转可包含在码字126b与移位寄存器770的位之间执行逐位逻辑XOR运算(图7中所展示),其中移位寄存器770的位中的一个具有逻辑值1且其它位具有逻辑值零。移位寄存器770的具有逻辑值1的位的位置与码字126b的可被翻转的位的位置对应。
在一些实施例中,操作616可为用于确定码字126b中的2位错误的位置的反复循环的一部分。所述反复循环可包括操作616到620。第一反复可以在操作616处在移位寄存器770的最高有效位(MSB)位置中输入逻辑值1开始。在每一反复期间,在操作616处,可将移位寄存器770中的逻辑值1朝向其最低有效位(LSB)位置移位一个位位置,而移位寄存器770的其余位位置具有逻辑值零。最后反复可在操作616期间在移位寄存器770的LSB位置中具有逻辑值1。因此,操作616到620的反复循环的第一反复可以在操作616处翻转码字126b的MSB开始且所述反复循环的最后反复可在操作616期间使码字126b的LSB翻转。在每一反复期间,在操作616处,可翻转码字126b的连续位,所述连续位与移位寄存器770中的逻辑1的位位置对应。在一些实施例中,移位寄存器770的操作(例如,逻辑值1的移位)可为基于来自控制电路764的控制信号764a。
参考图6,在操作618中,产生经位翻转数据的校验子。举例来说,如图7中所展示,可由校验子产生电路356基于在操作616处输出的码字126b'且基于从H矩阵产生电路358(图3A中所展示)接收的经转置H矩阵358a而产生码字126b'的校验子356a。在一些实施例中,校验子356a的产生可包含基于上文参考图3A所阐述的方程式(3)而在于操作616中输出的码字126b'与经转置H矩阵358a之间执行点积。所述产生可进一步包含在码字126b'与经转置H矩阵358a之间执行逻辑XOR运算,如上文参考图3A和3C所阐述。
参考图6,在操作620中,比较经位翻转数据的所产生校验子与H矩阵的列。举例来说,如图7中所展示,可将在操作618处产生的校验子356a提供给比较器778,所述比较器可经配置以比较校验子356a与H矩阵358b的n个列中的每一个。可并列地(即,同时地)完成与每一列的比较,或可串行地(即,一个接一个地)完成所述比较。所述比较可包含将每一比较结果的输出输入到移位寄存器780的每一位位置中。移位寄存器780的每一位位置可与H矩阵358b的列的每一索引对应。举例来说,如果在操作618处产生的校验子356a与H矩阵358b的第n列匹配,那么从比较器778输出逻辑值1且将逻辑值1输入到移位寄存器780的第n位位置中,并且如果在操作618处产生的校验子356a不与H矩阵358b的第n列匹配,那么从比较器778输出逻辑值零且将逻辑值零输入到移位寄存器780的第n位位置中。操作620中的比较可进一步包含通过控制电路764而执行移位寄存器780的n个位的逻辑OR运算。如果逻辑OR运算的输出是逻辑值1(此指示移位寄存器780的n个位中的至少一个等于1),那么方法600可继续进行到操作622。否则,如果逻辑OR运算的输出信号是逻辑值零(此指示移位寄存器780的n个位中的任一个皆不等于零),那么方法600可继续进行到操作616。
在操作618处产生的校验子356a与H矩阵358b的列匹配可指示码字126b具有2位错误且H矩阵358b的所匹配列的索引指示码字126b中的2位错误的位置中的一个。举例来说,如果在操作618处产生的校验子356a与H矩阵358b的第n列匹配,那么码字126b的第n位位置具有2位错误的位错误中的一个。可通过码字126b'中的经翻转位位置而提供码字126b中的2位错误的另一位置,在操作618中基于所述经翻转位位置而产生在操作620中与H矩阵358b的列匹配的校验子356a。
在一些实施例中,在操作618处产生的校验子356a与H矩阵358b的任何列之间的不匹配指示在操作616处输出的码字126b'的经翻转位位置并非是码字126b中的2位错误的位置中的一个。在此不匹配情形中,可执行操作616到620的反复循环的另一反复。可执行反复循环的反复直到在操作620处发现在操作618处产生的校验子356a与H矩阵358b的n个列中的一个匹配为止。如果在反复循环的n数目个反复之后于操作620处未发现在操作618处产生的校验子356a与H矩阵358b的列中的一个匹配,那么位错误检测电路760可将指示码字126b具有不可更正3位错误的信号360b提供给控制电路764。
参考图6,在操作622中,更正接收的所存储数据的2位错误。举例来说,如图7中所展示,可由更正电路762基于从数据寄存器352接收的码字126b、基于从移位寄存器770接收的信息770a且基于从移位寄存器780接收的信息780a而更正码字126b中的2位错误。在一些实施例中,所述更正可包含在操作620处,在码字126b与移位寄存器770的n个位的逻辑值之间执行第一逐位逻辑XOR运算,后续接着在操作620处,在移位寄存器780的n个位的逻辑值与第一逐位逻辑XOR运算的n位输出之间执行第二逐位逻辑XOR运算。第二逐位逻辑XOR运算可后续接着通过电路772而将经更正码字126b的k位数据部分与经更正码字126b的n-k位ECC部分分离。
参考图6,在操作624中,输出2位错误更正的所存储数据的k位数据。举例来说,如图7中所展示,可由更正电路762输出数据126a。在一些实施例中,从更正电路762输出数据126a可包含从控制电路764接收控制信号764c以启用逻辑电路774来允许将来自电路772的经分离k位数据部分从更正电路762输出。可基于在控制电路764中进行的移位寄存器780的n个位的逻辑OR运算输出逻辑值1而触发控制信号764c来启用逻辑电路774。
应理解,除非以由实心黑色圆圈(“·”)表示的节点来图解说明相交点,否则图1、2A到2B、3A到3C和4到8的相交线并非是电连接的。
可以软件、固件、硬件或其组合来实施本公开的各种方面。图8是根据一些实施例的其中可实施本公开的实施例或其部分的计算机系统800的图解说明。举例来说,可在系统800中实施分别由图4和6的流程图图解说明的方法400和600。应注意,可通过使用计算机可读码而部分地实现本公开的各种实施例的模拟、合成和/或制造,所述计算机可读码包含一般程序设计语言(例如C或C++)、硬件描述语言(HDL)(例如,VerilogHDL、VHDL、Altera HDL(AHDL))或其它可用程序设计和/或示意图检索工具(例如电路检索工具)。此计算机可读码可被置于任何已知计算机可用媒体(包含半导体、磁盘、光盘(例如CD-ROM、DVD-ROM))中。如此,可经由包含因特网的通信网络而传输所述码。
计算机系统800可为能够执行本文中所阐述的功能和操作的任何众所周知的计算机。计算机系统800包含一或多个处理器(也称作中央处理单元,或CPU),例如处理器804。处理器804连接到通信基础设施或总线806。计算机系统800还包含通过输入/输出接口802而与通信基础设施或总线806进行通信的输入/输出装置803,例如监视器、键盘、指向装置等。EDA工具可接收指令以经由输入/输出装置803而实施本文中所阐述的功能和操作—例如,分别图4和/或6的方法400和/或600。计算机系统800还包含主要或主存储器808,例如随机存取存储器(RAM)。主要存储器808可包含一或多个高速缓存层级。主要存储器808在其中存储有控制逻辑(例如,计算机软件)和/或数据。在一些实施例中,控制逻辑(例如,计算机软件)和/或数据可包含上文关于分别图4和/或6的方法400和/或600所阐述的操作中的一或多个。
计算机系统800还可包含一或多个次要存储装置或存储器810。次要存储器810可包含(举例来说)硬盘驱动器812和/或可移动的存储装置或驱动器814。可移动的存储驱动器814可为软盘驱动器、磁带驱动器、光盘驱动器、光学存储装置、磁带备份装置和/或任何其它存储装置/驱动器。
可移动的存储驱动器814可与可移动的存储单元818交互。可移动的存储单元818包含其上存储有计算机软件(控制逻辑)和/或数据的计算机可用或可读存储装置。可移动的存储单元818可为软盘、磁带、光盘、DVD、光学存储磁盘和/或任何其它计算机数据存储装置。可移动的存储驱动器814从可移动的存储单元818读取和/或写入到所述可移动的存储单元。
根据一些实施例,次要存储器810可包含用于允许计算机程序和/或其它指令和/或数据由计算机系统800存取的其它构件、手段或其它方法。此些构件、手段或其它方法可包含(举例来说)可移动的存储单元822和接口820。可移动的存储单元822和接口820的实例可包含程序盒和盒式接口(例如存在于视频游戏设备中)、可移动的存储器芯片(例如EPROM或PROM)以及相关联套接口、存储棒和USB端口、存储卡和相关联存储器卡槽和/或任何其它可移动的存储单元和相关联接口。在一些实施例中,次要存储器810、可移动的存储单元818和/或可移动的存储单元822可包含上文关于分别图4和/或6的方法400和/或600所阐述的操作中的一或多个。
计算机系统800可进一步包含通信或网络接口824。通信接口824使得计算机系统800能够与远程装置、远程网络、远程物理等(个别地和共同地由参考编号828参考)的任何组合进行通信和介接。举例来说,通信接口824可允许计算机系统800通过通信路径826而与远程装置828进行通信,所述通信路径可为有线和/或无线的且可包含LAN、WAN、因特网等的任何组合。可通过通信路径826而向计算机系统800且从所述计算机系统传输控制逻辑和/或数据。通信路径826携载信号且可利用导线或缆线、光纤、电话线、蜂窝式电话链路、RF链路或其它通信信道来实施。
可以各种各样的配置和架构来实施先前实施例中的操作。因此,可以硬件、软件或此两种来执行先前实施例—例如,分别图4和/或6的方法400和/或600中的操作中的一些或所有操作。在一些实施例中,在其上存储有控制逻辑(软件)的包括有形计算机可用或可读媒体的有形设备或制造对象也在本文中称为计算机程序产品或程序存储装置。此包含但不限于计算机系统800、主要存储器808、次要存储器810和可移动的存储单元818和822以及体现前述各项的任何组合的有形制造对象。此控制逻辑在由一或多个数据处理装置(例如计算机系统800)执行时致使此些数据处理装置如本文中所阐述而操作。确切来说,控制逻辑或计算机程序在被执行时使得处理器804能够实施本公开的实施例的程序,例如分别图4和/或6的方法400和/或600中的步骤。在利用软件来实施本公开的实施例的情况下,可利用可移动的存储驱动器814、接口820、硬盘驱动器812或通信接口824将所述软件存储于计算机程序产品中且加载到计算机系统800中。
在一些实施例中,计算机系统800与软件安装在一起以执行如分别图4和/或6的方法400和/或600中所图解说明的操作。在一些实施例中,计算机系统800包含用于光罩制造和电路制作的硬件/装备。举例来说,硬件/装备可连接到计算机系统800的组件828(远程装置、网络、实体)或是所述组件的一部分。
以上实施例阐述用于检测和更正存储器装置中的单位错误和多位错误的系统和方法,所述系统和方法帮助克服当前基于ECC的数据存储系统中的以上所论述问题。本文中所公开的实例性基于ECC的方法帮助减少用于数据存储系统中的所公开实例性基于ECC的位错误检测与更正(BEDC)电路的实施方案的逻辑电路的复杂性。举例来说,本文中所公开的用于位错误检测的实例性方法使用位翻转方案来确定经损毁数据中的位错误的位置。与当前位错误检测与更正方法相比,此位翻转方案帮助将BEDC电路的逻辑电路保持为尽可能简单的,以便避免可发生于电路中的错误且也能够尽可能快地操作逻辑电路以进行较快位错误检测与更正。与当前基于ECC的BEDC电路相比,降低逻辑电路的复杂性帮助减少用于逻辑电路的实施方案中的装置的数目,且因此帮助减少逻辑电路的集成电路布局面积、电力消耗、传播延迟和处理时间。在一些实施例中,与当前基于ECC的BEDC电路的处理时间相比,实例性基于ECC的BEDC电路的操作所需的处理时间可减少约10%到约50%。
在一些实施例中,一种更正存储器装置中的一或多个位错误的方法包含从存储器装置检索码字。所述码字包含数据和错误更正码。所述方法进一步包含:确定所述一或多个位错误是否存在于所述所检索码字中;和响应于确定单一位错误存在于所述所检索码字中而针对所述单一位错误来更正所述所检索码字。所述方法还包含:响应于确定多个位错误存在于所述所检索码字中而翻转所述所检索码字的位;和基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。
在一些实施例中,一种更正存储器装置中的单一位错误的方法包含从存储器装置检索码字。所述码字包含数据和错误更正码。所述方法进一步包含:确定所述单一位错误是否存在于所述所检索码字中;响应于确定所述单一位错误存在于所述所检索码字中而翻转所述所检索码字的位;和基于所述经位翻转码字而针对所述单一位错误来更正所述所检索码字。
在一些实施例中,一种数据存储系统包含:存储器数组,其经配置以存储码字,所述码字具有数据和错误更正码;编码器电路,其经配置以在所述存储器数组的写入模式操作期间利用所述错误更正码来编码所述数据以形成所述码字;和解码器电路。所述解码器电路包含:数据寄存器,其经配置以在所述存储器数组的读取模式操作期间检索所述码字;位错误检测电路,其经配置以确定一或多个位错误是否存在于所述所检索码字中;位翻转电路,其经配置以响应于多个位错误存在于所述所检索码字中而翻转所述所检索码字的位;和更正电路,其经配置以基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。
前述公开概述数个实施例的构件,使得所属领域的技术人员可较好地理解本公开的方面。所属领域的技术人员应了解,其可容易地使用本公开作为设计或修改用于实施与本文中介绍的实施例相同的目的和/或达成与所述实施例相同的优点的其它程序和结构的基础。所属领域的技术人员还应认识到,此些等效构造并不背离本公开的精神和范围,且其可在不背离本公开的精神和范围的情况下在本文中做出各种改变、替换和更改。
符号说明
100 数据存储系统/数据存储装置
102 存储器数组
104.1.1 存储器胞元
104.1.q 存储器胞元
104.p.1 存储器胞元
104.p.q 存储器胞元
106 行解码器
108 感测放大器/写入驱动器
110 列解码器
114 字线
116 位线
120 控制信号
124 编码器电路
124a 数据/k位数据
124b 数据/码字/n位码字
126 解码器电路/解码器
126a 数据/k位数据
126b 码字/数据/n位码字
126b' 数据/n位码字/码字
130 第二方向
132 信息
200 XOR树
224 编码器电路
234 数据寄存器
236 G矩阵产生电路/产生矩阵产生电路/产生器矩阵产生电路
236a G矩阵
238 错误更正码产生电路/错误更正码位产生电路
238a n-k位错误更正码/错误更正码
240 码字产生电路
242 节点/圆形节点
244 节点/矩形节点
246 节点/三角形节点
300 XOR树
326 解码器电路
342 节点/圆形节点
344 节点/矩形节点
346 节点/三角形节点
352 数据寄存器
354 位翻转电路/电路
354a 位错误位置信息/信息
356 校验子产生电路
356a (n-k)位校验子/校验子
358 H矩阵产生电路/检查矩阵产生电路/同位检查矩阵产生电路
358a 经转置H矩阵
358b H矩阵
360 位错误检测电路/电路
360a 位错误位置信息/信息
360b 信号
362 更正电路/电路
364 控制电路
364a 控制信号
364b 控制信号
364c 控制信号/无错误信号
400 方法
402 操作
404 操作
406 操作
408 操作
410 操作
412 操作
414 操作
416 操作
418 操作
526 解码器电路
554 位翻转电路
562 更正电路
564 控制电路
564a 控制信号
564c 控制信号/信号
570 移位寄存器
570a 信息
572 电路
574 逻辑电路
600 方法
602 操作
604 操作
606 操作
608 操作
610 操作
612 操作
614 操作
616 操作
618 操作
620 操作
622 操作
624 操作
726 解码器电路
754 位翻转电路
760 位错误检测电路
760b 输出信号/信号
762 更正电路
764 控制电路
764a 控制信号
764b 控制信号
764c 控制信号
770 移位寄存器
770a 信息
772 电路
774 逻辑电路
776 比较器
778 比较器
780 移位寄存器
780a 信息
800 计算机系统/系统
802 输入/输出接口
803 输入/输出装置
804 处理器
806 通信基础设施/总线
808 主要存储器/主存储器
810 次要存储装置/次要存储器
812 硬盘驱动器
814 可移动的存储装置/可移动的存储驱动器
818 可移动的存储单元
820 接口
822 可移动的存储单元
824 通信接口/网络接口
826 通信路径
828 远程装置/组件
Claims (1)
1.一种更正存储器装置中的一或多个位错误的方法,所述方法包括:
从存储器装置检索码字,所述码字具有数据和错误更正码;
确定所述一或多个位错误是否存在于所述所检索码字中;
响应于确定单一位错误存在于所述所检索码字中而针对所述单一位错误来更正所述所检索码字;
响应于确定多个位错误存在于所述所检索码字中而翻转所述所检索码字的位;和
基于所述经位翻转码字而针对所述多个位错误来更正所述所检索码字。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862698658P | 2018-07-16 | 2018-07-16 | |
US62/698,658 | 2018-07-16 | ||
US16/128,967 | 2018-09-12 | ||
US16/128,967 US10761927B2 (en) | 2018-07-16 | 2018-09-12 | Detection and correction of data bit errors using error correction codes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110727540A true CN110727540A (zh) | 2020-01-24 |
Family
ID=69138261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910529942.1A Pending CN110727540A (zh) | 2018-07-16 | 2019-06-19 | 利用错误更正码进行数据位错误的检测与更正 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10761927B2 (zh) |
CN (1) | CN110727540A (zh) |
TW (1) | TW202006544A (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761927B2 (en) * | 2018-07-16 | 2020-09-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Detection and correction of data bit errors using error correction codes |
WO2021176244A1 (en) | 2020-03-03 | 2021-09-10 | Micron Technology, Inc. | Counter-based sense amplifier method for memory cells |
US11349498B2 (en) * | 2020-10-08 | 2022-05-31 | Micron Technology, Inc. | Bit flipping low-density parity-check decoders with low error floor |
US12061793B1 (en) * | 2020-11-25 | 2024-08-13 | Astera Labs, Inc. | Capacity-expanding memory control component |
US11722152B1 (en) | 2020-11-25 | 2023-08-08 | Astera Labs, Inc. | Capacity-expanding memory control component |
JP2023005919A (ja) * | 2021-06-29 | 2023-01-18 | ルネサスエレクトロニクス株式会社 | 半導体装置および誤り検出方法 |
US11942966B2 (en) * | 2021-08-17 | 2024-03-26 | Micron Technology, Inc. | Managing error control information using a register |
KR102387463B1 (ko) | 2021-10-21 | 2022-04-15 | 삼성전자주식회사 | 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법 |
US11923867B1 (en) * | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Iterative decoder with a dynamic maximum stop condition |
US11923868B1 (en) * | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Stall mitigation in iterative decoders |
US11901911B1 (en) | 2022-08-18 | 2024-02-13 | Micron Technology, Inc. | Stall detection and mitigation in iterative decoders |
US12119074B2 (en) | 2022-09-28 | 2024-10-15 | Texas Instruments Incorporated | Data correction of redundant data storage |
US20240168847A1 (en) * | 2022-11-21 | 2024-05-23 | Micron Technology, Inc. | Efficient memory use to support soft information in bit flipping decoders |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096414B2 (en) * | 2003-08-04 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | In-line wire error correction |
KR101418467B1 (ko) * | 2008-08-15 | 2014-07-10 | 엘에스아이 코포레이션 | 니어 코드워드들의 ram 리스트-디코딩 |
DE102013112020B4 (de) * | 2013-10-31 | 2016-04-07 | Hochschule Nordhausen | Verfahren und Vorrichtung zum Erkennen von Bitfehlern |
US9411683B2 (en) * | 2013-12-26 | 2016-08-09 | Intel Corporation | Error correction in memory |
US9543981B2 (en) * | 2014-03-25 | 2017-01-10 | Texas Instruments Incorporated | CRC-based forward error correction circuitry and method |
US10177787B1 (en) * | 2015-09-17 | 2019-01-08 | Seagate Technology Llc | Mitigation of error correction failure due to trapping sets |
US10372531B2 (en) * | 2017-01-05 | 2019-08-06 | Texas Instruments Incorporated | Error-correcting code memory |
US10707899B2 (en) * | 2017-08-31 | 2020-07-07 | SK Hynix Inc. | Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes |
US10761927B2 (en) | 2018-07-16 | 2020-09-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Detection and correction of data bit errors using error correction codes |
US11016843B2 (en) * | 2018-12-06 | 2021-05-25 | Micron Technology, Inc. | Direct-input redundancy scheme with adaptive syndrome decoder |
-
2018
- 2018-09-12 US US16/128,967 patent/US10761927B2/en active Active
-
2019
- 2019-04-10 TW TW108112556A patent/TW202006544A/zh unknown
- 2019-06-19 CN CN201910529942.1A patent/CN110727540A/zh active Pending
-
2020
- 2020-08-31 US US17/007,942 patent/US11314587B2/en active Active
-
2022
- 2022-04-25 US US17/728,413 patent/US11740960B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11314587B2 (en) | 2022-04-26 |
US20220245023A1 (en) | 2022-08-04 |
TW202006544A (zh) | 2020-02-01 |
US20200401475A1 (en) | 2020-12-24 |
US10761927B2 (en) | 2020-09-01 |
US20200019456A1 (en) | 2020-01-16 |
US11740960B2 (en) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
US7278085B1 (en) | Simple error-correction codes for data buffers | |
US8091010B2 (en) | Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit | |
JP5043562B2 (ja) | エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
US7370264B2 (en) | H-matrix for error correcting circuitry | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
KR20200058106A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
CN110941505B (zh) | 产生错误校正电路的方法 | |
US10498364B2 (en) | Error correction circuits and memory controllers including the same | |
US10090860B2 (en) | Memory system using integrated parallel interleaved concatenation | |
US20180151197A1 (en) | Error correction code encoder, encoding method, and memory controller including the encoder | |
US20160285478A1 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
TWI627834B (zh) | 用於執行內建式自我測試的獨立磁碟冗餘陣列解碼系統 | |
US10133628B2 (en) | Apparatuses and methods for encoding using error protection codes | |
Badack et al. | Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors | |
US20180219560A1 (en) | List decode circuits | |
Mittelholzer et al. | High-throughput ecc with integrated chipkill protection for nonvolatile memory arrays | |
CN115408198A (zh) | 数据纠错方法、装置、设备及存储介质 | |
TWI551058B (zh) | 最小-總和演算法之低密度奇偶校驗碼解碼器及其解碼方法 | |
TWI706416B (zh) | 多個記憶體裝置共用的錯誤更正系統 | |
Evain et al. | Error correction schemes with erasure information for fast memories | |
Kumar et al. | BURST-ERROR DETECTION AND CORRECTION USING PARALLEL DECODING | |
US20240305312A1 (en) | Coding circuit and memory device including the same | |
KR20140039980A (ko) | 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200124 |