CN108574495B - 错误定位多项式解码器及方法 - Google Patents
错误定位多项式解码器及方法 Download PDFInfo
- Publication number
- CN108574495B CN108574495B CN201810205270.4A CN201810205270A CN108574495B CN 108574495 B CN108574495 B CN 108574495B CN 201810205270 A CN201810205270 A CN 201810205270A CN 108574495 B CN108574495 B CN 108574495B
- Authority
- CN
- China
- Prior art keywords
- locator polynomial
- error locator
- error
- value
- data
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
一种解码器,包括错误定位多项式生成器电路,所述错误定位多项式生成器电路配置为在时钟信号的第一周期期间确定参数的第一值。所述参数的第一值与解码操作的第一迭代相关并且基于错误定位多项式的与解码操作的之前迭代相关的值。所述错误定位多项式生成器电路还配置为在时钟信号的顺序跟随第一周期的第二周期期间或在时钟信号的顺序跟随第二周期的第三周期期间确定错误定位多项式的经调节值。所述错误定位多项式的经调节值与解码操作的第二迭代相关并且基于所述参数的第一值。
Description
相关申请的交叉引用
本申请要求于2017年3月13日提交的美国专利申请15/456,648的优先权,该专利的全部内容通过引用合并于此。
技术领域
本公开总体上涉及电子设备,并且更具体地涉及电子设备的解码器。
背景技术
数据存储装置使用户能够存储和检索数据。数据存储装置的示例包括易失性存储器装置和非易失性存储器装置。非易失性存储器可以在掉电事件后保留数据,并且易失性存储器在掉电事件后可能会丢失数据。
在一些情况下,数据可能经受一个或多个错误。例如,电噪声可能导致逻辑“0”值被读取为逻辑“1”值(反之亦然)。电噪声可能影响电子装置内的数据以及经由网络(诸如无线网络或有线网络)发送的数据。例如,移动电话可能接收受到用来接收数据的无线信道影响的数据。
为了能够校正数据错误,编码器可以使用编码方案对数据编码,诸如通过在将数据存储到存储器之前或者在传输数据之前向数据添加冗余信息。编码方案可以指明将数据与编码方案的码字相关联的码本。解码器可以通过使用冗余信息来解码该数据以定位和校正一个或多个数据错误(取决于编码方案的特定错误校正能力)。
解码数据消耗了装置的功率和时钟周期。例如,解码器可以使用迭代解码过程来定位数据错误,其每次迭代利用功率和一个或多个时钟周期。
附图说明
图1是包括数据存储装置的系统的特定说明性示例的图,该数据存储装置包括被配置为基于错误奇偶校验位来调节错误定位多项式的长度的解码器。
图2是示出图1的解码器的特定示例的方面的图。
图3是包括数据存储装置的系统的特定说明性示例的图,该数据存储装置包括配置为基于偶数错误奇偶校验位来调节第一错误定位多项式的长度并且基于奇数错误奇偶校验位来调节第二错误定位多项式的长度的解码器。
图4是可由解码器执行的一组操作的特定说明性示例的流程图,该解码器诸如是图1至图3中的一个或多个解码器。
图5是解码器的操作方法的特定说明性示例的流程图,该解码器诸如是图1的解码器、图2的解码器或两者。
图6是解码器的操作方法的另一特定说明性示例的流程图,该解码器诸如是图1的解码器、图2的解码器或两者。
图7是解码器的操作方法的另一特定说明性示例的流程图,该解码器诸如是图3的解码器。
图8是包括数据存储装置的系统的特定说明性示例的框图,该数据存储装置包括具有快速错误定位多项式收敛检测器的解码器。
图9是具有多个处理路径的解码器的特定示例的框图。
图10是确定错误定位多项式的系数的方法的特定示例的流程图。
图11是在解码器处定位错误的方法的特定示例的流程图。
图12是具有多个处理路径的解码器的另一示例的框图。
图13是检测错误定位多项式收敛的方法的特定示例的流程图。
图14是包括数据存储装置的系统的特定说明性示例的框图,该数据存储装置包括被配置为确定具有降低的延迟的错误定位多项式的解码器。
图15是示出可根据图14的数据存储装置的第一示例执行的操作的流程图。
图16是示出可根据图14的数据存储装置的第二示例执行的操作的流程图。
图17是示出可根据图14的数据存储装置的第三示例执行的操作的流程图。
图18是可由图14的数据存储装置执行的确定错误定位多项式的方法的特定示例的流程图。
图19是包括数据存储装置的非易失性存储器系统的特定说明性实施方式的框图,该数据存储装置是诸如图1的数据存储装置、图3的数据存储装置、图8的数据存储装置或者图14的数据存储装置。
图20是包括图19的多个非易失性存储器系统的存储系统的特定说明性实施方式的框图。
图21是包括图19的多个存储系统的分级存储系统的特定说明性实施方式的框图。
图22是存储器系统的框图并描绘了图19的非易失性存储器系统的控制器的特定说明性实施方式的部件。
图23是存储器系统的框图并描绘了图19的非易失性存储器系统的非易失性存储器管芯的特定说明性实施方式的部件。
具体实施方式
一种装置,被配置为使用解码过程来解码数据,该解码过程包括基于与该数据相关联的错误奇偶校验位来调节错误定位多项式的长度。作为一说明性示例,通过使用包括每个具有偶数个逻辑“1”值的码字的“偶数”码本对数据编码,该装置可以确定该数据的感测表示是包括奇数个错误还是偶数个错误(即,错误奇偶校验位是奇数还是偶数)。
错误奇偶校验位可以使器件能够“缩合”解码过程的某些操作。例如,解码过程可以包括迭代地调节错误定位多项式的长度,并且基于与数据相关联的校正子信息来检查经调节的长度是否“正确”。在该示例中,在某些情况下,错误奇偶校验位可以使装置能够将错误定位多项式的长度调节2的值。为了说明,如果错误定位多项式的长度是偶数(基于待解码的数据的错误奇偶校验位),则在一些情况下,该装置可以“跳过”将长度调节为奇数(例如通过将长度从2的值调节到4的值,作为一说明性示例)。或者,如果错误定位多项式的长度是奇数(基于待解码的数据的错误奇偶校验位),则在一些情况下,该装置可以“跳过”将长度调节为偶数。
使用错误奇偶校验位来调节错误定位多项式的长度可以减少用于解码数据的时钟周期的数量。结果,解码延迟和功耗可以被降低。
下面参照附图描述本公开的特定方面。在描述中,共同的或相似的特征可以由共同的附图标记指示。当在这里使用时,“示例性”可以指示示例、实施方案和/或方面,并且不应该被解释为限制或者指示优先的或优选的实施方案。
参照图1,系统的特定说明性示例被描绘并且总体上被指定为100。系统100包括数据存储装置102(例如,设备)和装置170(例如,主机装置或接入装置)。数据存储装置102包括存储器装置103和控制器130。控制器130耦接到存储器装置103。在一些实施方案中,数据存储装置102集成在装置170内,诸如结合固态驱动(SSD)实施方案。
存储器装置103包括存储器104,诸如包含在一个或多个存储器管芯中的非易失性存储元件阵列。作为说明性示例,存储器104可以包括闪速存储器(例如NAND闪速存储器)或电阻式存储器,诸如电阻式随机存取存储器(ReRAM)。存储器104可以具有三维(3D)存储器配置。当在这里使用时,3D存储器件可以包括多个物理层级的存储元件(而不是如在平面存储器件中的具有单个物理层级的存储元件)。作为一示例,存储器104可以具有3D垂直位线(VBL)配置。在特定实施方案中,存储器104是具有一体地形成在存储器单元阵列的一个或多个物理层中的3D存储器阵列配置的非易失性存储器,该存储单元阵列具有设置在硅衬底之上的有源区。或者,存储器104可以具有另外的配置,诸如二维(2D)存储器配置或非一体3D存储器配置(例如堆叠管芯3D存储器配置)。
存储器104包括一个或多个存储元件区域。存储区域的示例是块,诸如存储元件的NAND闪速存储器擦除组或ReRAM实施方案中的一组基于电阻的存储元件。存储区域的另一示例是存储元件的字线(例如NAND闪速存储元件的字线或基于电阻的存储元件的字线)。作为说明性示例,存储区域可以具有单级单元(SLC)配置、多级单元(MLC)配置或三级单元(TLC)配置。存储器104的每个存储元件可以是可编程为指示一个或多个值的状态(例如闪存配置中的阈值电压或电阻式存储器配置中的电阻状态)的。作为一示例,在说明性TLC方案中,存储元件可以是可编程为指示三个值的状态的。作为一附加示例,在说明性MLC方案中,存储元件可以是可编程为指示两个值的状态的。
控制器130包括到存储器装置103的存储器接口132,并且还包括到装置170的装置接口172。控制器130还包括电路140和解码器150。电路140耦接到解码器150。控制器130还包括编码器160。
编码器160被配置为使用一种或多种ECC编码技术对数据编码以生成一个或多个错误校正码(ECC)码字。编码器160可以被配置为使用代数码对数据编码。编码器160可以包括:里德-所罗门(Reed-Solomon)(RS)编码器、鲍斯-查德胡里-霍克奎恩海姆(Bose-Chaudhuri-Hocquenghem)(BCH)编码器、被配置为根据一种或多种其它ECC技术编码数据的编码器、或其组合。
解码器150被配置为对从存储器104读取的数据解码,以检测并校正(取决于ECC方案的错误校正能力)可能存在于数据中的一个或多个位错误。解码器150可以被配置为使用代数码来解码数据。解码器150可以包括RS解码器、BCH解码器、被配置为根据一种或多种其它ECC技术解码数据的解码器、或其组合。在一些实施方案中,解码器150被配置为根据伯利坎普-梅西(Berlekamp–Massey)(BM)技术或彼得森-戈伦斯坦-勒尔(Peterson-Gorenstein-Zierler)(PGZ)技术中的一种或多种来操作。
在操作期间,控制器130可以从装置170接收数据174,诸如结合对存储器104的写入访问的请求。控制器130可以将数据174输入到编码器160以生成编码数据,诸如数据106。作为一说明性示例,可以根据BCH码对数据174编码以生成数据106。
数据106可以包括与用于生成数据106的特定码(例如BCH码,作为一说明性示例)的码本162相关联的一个或多个码字。在一说明性示例中,码本162指示的每个码字可以包括偶数个逻辑1值(即码本162可以对应于“偶数码本”)。
编码器160可以被配置为生成每个具有偶数个逻辑1值的一组码字。例如,编码器160可以被配置为使用生成多项式164对数据174编码,该生成多项式164具有被选择以使得该组码字中的每个码字具有偶数个逻辑1值的因子166。为了说明,生成多项式164可以对应于g(x)*(1+x),其中g(x)是BCH码的生成器函数并且(1+x)对应于因子166。
控制器130可以被配置为将数据106发送到存储器装置103。存储器装置103可以将数据106存储到存储器104的特定区域。
控制器130可以访问来自存储器104的数据106。作为一说明性示例,控制器130可以接收对数据106的读取访问的请求。控制器130可以将读取命令发送到存储器装置103以发起读取数据106。响应于读取命令,存储器装置103可以对数据106感测以生成感测数据,诸如第一数据134。由于一个或多个错误,第一数据134可以不同于数据106。存储器装置103可以将第一数据134提供给控制器130。
控制器130可以将第一数据134输入到电路140。例如,电路140可以耦接到存储器接口132并且可以从存储器接口132接收第一数据134。电路140被配置为确定第一数据134的错误奇偶校验位142(这里也被称为“p”)。为了说明,如果码本162对应于“偶数”码本,则电路140可以被配置为基于第一数据134是指示偶数个逻辑1值还是奇数个逻辑1值而确定错误奇偶校验位。
为了进一步说明,电路140可以识别(例如计数)包含在第一数据134中的逻辑1值的数量。在该示例中,错误奇偶校验位142对应于逻辑1值的数量与码字奇偶校验位之间的差异,该码字奇偶校验位与用于编码第一数据134的编码方案的每个码字相关联。在一说明性实施方案中,电路140被配置为响应于确定包含在第一数据134中的逻辑1值的数量是偶数而将错误奇偶校验位142设定为特定逻辑值(例如逻辑零值)。在该示例中,电路140还可以被配置以响应于确定包含在第一数据134中的逻辑1值的数目为奇数而将错误奇偶校验位142设定为另一逻辑值(例如逻辑1值)。
解码器150被配置为接收第一数据134(例如从电路140或从存储器接口132)。解码器150还被配置为从电路140接收错误奇偶校验位142的指示。解码器150被配置为解码第一数据134以生成第二数据136。第二数据136可以对应于数据174(例如第一数据134的经错误校正版本),作为一说明性示例。
解码器150被配置为通过基于第一数据134的错误奇偶校验位142来调节错误定位多项式152(这里也被称为“C(D)”)而生成第二数据136。作为一说明性示例,错误定位多项式152具有长度L,诸如错误定位多项式152的系数的正整数量。
为了进一步说明,解码器150可以被配置为执行包括一个或多个迭代的解码过程以解码第一数据134。解码过程可以包括基于估计的第一数据134的错误数目来调节长度L,诸如通过迭代地增加长度L。在调节长度L之后,解码器150可以使用错误定位多项式152来校正第一数据134的一个或多个错误。通过访问错误奇偶校验位142,解码器150可以在某些情况下省略(或“跳过”)解码过程的某些迭代,诸如通过在解码过程的某些迭代中基于错误奇偶校验位142跳过将错误定位多项式152的长度调节为偶数值或奇数值。在这种情况下,解码器150可以被配置为将长度L调节2的值。
解码器150可以被配置为基于错误奇偶校验位142与错误定位多项式152的奇偶校验位的比较而将长度L调节特定值。例如,如果错误奇偶校验位142等于错误定位多项式152的奇偶校验位,则解码器150可以被配置为将长度L增加2的值。作为另一示例,如果错误奇偶校验位142不等于错误定位多项式152的奇偶校验位,则解码器150可以被配置为将长度L增加1的值。
解码器150可以被配置为在解码过程的单次迭代中调节长度L(例如调节2的值或1的值)以解码第一数据134。例如,解码器150可以被配置为根据改进的BM技术对第一数据134解码以生成第二数据136。在该示例中,通过在某些迭代中将长度L增加2的值,解码器150可以被配置为将BM技术的两次迭代操作“缩合”为单次迭代(例如并行执行改进的BM解码过程的两次迭代)。作为另一示例,解码器150可以被配置为根据改进的PGZ技术解码第一数据134以生成第二数据136。
为了进一步说明,示例1的伪代码示出了可结合改进的BM解码过程执行的某些操作。为了理解该示例,首先查看用于对原始的狭义BCH码进行解码的BM算法的另一版本可能是有益的,如表1的伪代码所示:
表1
在BM算法中,对于狭义BCH码,对C(D)的长度L的每次改变导致长度的奇偶校验位从奇数变为偶数或从偶数变为奇数的改变。这由关于“新”长度(Lnew)到当前长度(L)的等式得出:Lnew=2T+1–L。
如果L的“正确”奇偶校验位是事先已知的,并且如果长度L在两次连续迭代中被更新,则可以一次执行两次迭代,从而使奇偶校验位反转两次(或在BM算法期间“保持”L的奇偶校验位)。这可以加速BM算法,并且可以将算法收敛的时间减少高达50%。条件是L≤T并且Lnew=2T+1-L≤T+1,其具有解L=T。
因此,如果“真”C(D)的长度的奇偶校验位是事先已知的,则可以将BM算法修改为IBM算法,如以下在示例1中所描绘的。解码器150可以被配置为根据示例1的伪代码操作。
示例1
在示例1中,C(D)可以对应于错误定位多项式152,并且D可以指示错误定位多项式的变量。L可以对应于错误定位多项式152的次数(这里也被称为错误定位多项式152的长度),并且t可以指示与特定ECC方案相关联的错误校正能力。T可以指示(例如跟踪)在特定解码过程中执行的迭代的数量,B(D)可以指示C(D)的先前估计(例如在调节L之前),ci可以指示C(D)的第i个系数,bi可以指示B(D)的第i个系数,并且Si可以指示第i个校正子。
在根据示例1执行的解码过程期间,可以迭代地增加L。在某些迭代中,可以并行执行第一迭代和第二迭代(而不是执行第一迭代,然后检查是否满足收敛或者是否满足执行第二迭代的条件)。在这种情况下,L可以增加2(即L=L+2)。如果错误奇偶校验位p对应于C(D)的当前估计次数L(即如果parity(L)==p)并且迭代数目T等于次数L,则发生这些迭代。在这种情况下,解码过程的两次迭代可以被“缩合”为单次迭代,并且L可以增加2。
通过将解码过程的两次迭代的操作“缩合”为单次迭代,可以更快地解码数据。结果,数据存储装置102的性能可以改善。
图2示出图1的解码器150的一说明性示例的某些方面。在图2的示例中,解码器150包括校正子生成器电路204、错误定位多项式生成器电路208和错误校正器电路210。校正子生成器电路204耦接到错误定位多项式生成器电路208,并且错误定位多项式生成器电路208耦接到错误校正器电路210。
在操作期间,校正子生成器电路204可以接收第一数据134。第一数据134可以包括k个错误(其中k是正整数)。校正子生成器电路204可以被配置为基于第一数据134生成校正子多项式206。
错误定位多项式生成器电路208可以被配置为接收校正子多项式206、错误奇偶校验位的指示142和时钟信号202。错误定位多项式生成器电路208可以被配置为基于校正子多项式206生成错误定位多项式152并且基于错误奇偶校验位142调节错误定位多项式152的长度L。
错误定位多项式生成器电路208可以被配置为基于时钟信号202执行操作。例如,可以在时钟信号202的每个周期期间执行示例1的while循环的一次迭代。生成错误定位多项式152并调节错误定位多项式152的长度L可以因此基于时钟信号202而被执行。错误定位多项式生成器电路208可以被配置为基于校正子多项式206并且基于时钟信号202来调节错误定位多项式152的系数。错误定位多项式生成器电路208可以被配置为调节错误定位多项式152的长度L,直到基于校正子多项式206确定长度L是“正确的”。例如,错误定位多项式生成器电路208可以被配置为基于错误定位多项式152与校正子多项式206的乘积来确定错误定位多项式152是“正确的”。在调节错误定位多项式152之后,错误定位多项式生成器电路208可以将错误定位多项式152提供给错误校正器电路210。
在图2的示例中,错误定位多项式生成器电路208被配置为使用时钟信号202的j个时钟周期(其中j是正整数)来生成错误定位多项式152。时钟周期的数量j小于第一数据134的错误的数量k(即j<k)。例如,通过将由解码器150执行的解码过程的至少两次迭代“缩合”到时钟信号202的一个时钟周期中,可以使用j个时钟周期校正第一数据134的k个错误。在一些示例中,时钟周期(j)的数量小于第一数据134的错误数量(k)的四分之三。在另一示例中,时钟周期(j)的数量约为第一数据134的错误数量(k)的一半。在其它示例中,j和k可以具有不同的关系。
错误校正器电路210可以被配置为基于错误定位多项式152来确定第一数据134的一个或多个错误位置212。例如,错误校正器电路210可以包括钱氏(Chein)搜索电路,其被配置为执行对错误定位多项式152的钱氏搜索以确定第一数据134的一个或多个错误位置212。在一说明性示例中,错误校正器电路210被配置为通过确定一组错误定位多项式152的根(root)来确定一个或多个错误位置212。在某些情况下(例如如果L≤4),则错误定位多项式152的根可以被解析地求解出(例如代替使用钱氏搜索)。
错误校正器电路210可以被配置为基于一个或多个错误位置212来调节第一数据134的值以产生第二数据136。例如,错误校正器电路210可以基于一个或多个错误位置212“翻转”第一数据134的一位或多个位以生成第二数据136。第二数据136可以对应于图1的数据174,作为一说明性示例。
图2的示例示出了在一些情况下,错误定位多项式生成器电路208可以使用时钟信号202的j个时钟周期来生成错误定位多项式152。在图2的示例中,j小于第一数据134的错误的数目k。因为j<k,所以与对于每个错误使用至少一个时钟周期以产生错误定位多项式的装置相比,可以提高解码器150的性能。
参照图3,系统的特定说明性示例被描绘并且总体地被指定为300。系统300包括数据存储装置302(例如设备)和装置170(例如主机装置或接入装置)。数据存储装置302包括存储器装置103和控制器330。控制器330耦接到存储器装置103。在一些实施方案中,数据存储装置302被集成在装置170内,诸如结合SSD实施方案。存储器装置103包括存储器104。
控制器330包括到存储器装置103的存储器接口132,并且还包括到装置170的装置接口172。控制器330还包括解码器350和编码器360。解码器350包括第一电路352、第二电路354以及耦接到第一电路352和耦接到第二电路354的第三电路356。在一些实施方案中,解码器350还包括图2的校验生成器电路204和错误校正器电路210。第一电路352和第二电路354每个包括对应于图2的错误定位多项式生成器电路208的电路。
编码器360被配置为使用一种或多种ECC编码技术对数据编码以生成一个或多个ECC码字。编码器360可以包括RS编码器、BCH编码器、被配置为根据一种或多种其它ECC技术对数据编码的编码器、或其组合。
解码器350被配置为对从存储器104读取的数据解码,以检测和校正(取决于ECC方案的错误校正能力)可能存在于数据中的一个或多个位错误。解码器350可以包括RS解码器、BCH解码器、被配置为根据一种或多种其它ECC技术解码数据的解码器、或其组合。
电路352、354可以被配置为并行地执行某些操作。为了说明,解码器350可以被配置为使用电路352、354并行执行BM解码过程的多个迭代。
在操作期间,控制器330可以从装置170接收数据174,诸如结合对存储器104的写入访问的请求。控制器330可以将数据174输入到编码器360以生成编码数据,诸如数据106。作为一说明性示例,数据174可以根据RS码或根据BCH码被编码以生成数据106。
控制器330可以被配置为将数据106发送到存储器装置103。存储器装置103可以将数据106存储到存储器104的特定区域。
控制器330可以访问来自存储器104的数据106。作为一说明性示例,控制器330可以接收对数据106的读取访问的请求。控制器330可以将读取命令发送到存储器装置103以发起数据106的读取。响应于读取命令,存储器装置103可以对数据106感测以生成感测数据,诸如第一数据134。由于一个或多个错误,第一数据134可以不同于数据106。作为一说明性示例,第一数据134可以包括根据RS码或BCH码编码的一组符号(或符号的表示)。存储器装置103可以将第一数据134提供给控制器330。
控制器330可以将第一数据134输入到第一电路352并输入到第二电路354。在一说明性示例中,控制器330被配置为将第一数据134并行输入到第一电路352和第二电路354(例如在由控制器330使用的时钟信号的公共时钟周期期间)。
解码器150可以被配置为基于第一数据134来确定校正子多项式。例如,解码器350可以包括图2的校正子生成器电路204。第一电路352可以被耦接以接收图2的校正子多项式206。第二电路354也可以被耦接以接收图2的校正子多项式206。
在一些示例中,第一数据134包括一组符号(例如根据使用符号来表示数据的非二进制编码技术)。在一些情况下,确定与一组符号相关联的错误奇偶校验位可能是低效率的或不可行的。解码器350可以被配置为分别“假设”第一数据134的偶数错误奇偶校验位和奇数奇偶校验位两者,并且基于偶数错误奇偶校验位和奇数错误奇偶校验位并行地执行操作。
第一电路352被配置为接收第一数据134并且通过基于第一数据134的偶数错误奇偶校验位调节第一错误定位多项式358而基于第一数据134执行一组解码操作。在图3的示例中,并非如参照图1和图2所述地确定错误奇偶校验位142,第一电路352可以“假设”第一数据134的错误奇偶校验位是偶数(例如基于第一数据134的偶数错误奇偶校验位342)。第一电路352可以基于偶数错误奇偶校验位342如参照图1所述地调节第一错误定位多项式358的长度L(例如代替使用图1的错误奇偶校验位142)。
第二电路354被配置为接收第一数据134并通过基于第一数据134的奇数错误奇偶校验位调节第二错误定位多项式359而执行一组解码操作(例如根据BM解码技术执行的一组解码操作,作为一说明性示例)。在图3的示例中,并非如参照图1和图2所述地使用电路140来确定错误奇偶校验位142,第二电路354可以“假设”第一数据134的错误奇偶校验位是奇数(例如基于第一数据134的奇数错误奇偶校验位343)。第二电路354可以如参照图1所述地基于奇数错误奇偶校验位343调节第二错误定位多项式359的长度L(例如代替使用图1的错误奇偶校验位142)。
第三电路356被配置为选择第一电路352或第二电路354的输出。例如,第一电路352可以被配置为将第一错误定位多项式358提供给第三电路356,并且第二电路354可以被配置为将第二错误定位多项式359提供给第三电路356。第三电路356可以被配置为基于第一数据134的“正确的”奇偶校验位是奇数还是偶数来选择第一错误定位多项式358或第二错误定位多项式359。例如,第三电路356可以被配置为响应于检测到输出满足与关联于第一数据134的码(例如RS码或BCH码)相关联的收敛标准而选择第一电路352或第二电路354的输出。确定是否满足收敛标准可以包括确定哪个错误定位多项式358、359对应于图2的校正子多项式206。如果第一数据134的“正确”奇偶校验位是偶数,则第一电路352的输出可以满足收敛标准,并且如果第一数据134的“正确”奇偶校验位是奇数,则第二电路354的输出可以满足收敛标准。
在一些实施方案中,第三电路356可以包括比较器电路和耦接到比较器电路的多路复用器(MUX)电路。比较器电路可以被配置为确定第一错误定位多项式358和第二错误定位多项式359中的哪个满足收敛标准。比较器电路可以被配置为将信号提供给MUX电路。该信号可以具有第一值或第二值中的一个,第一值指示第一错误定位多项式358满足收敛标准,第二值指示第二错误定位多项式359满足收敛标准。MUX电路可以基于该信号来选择第一错误定位多项式358或第二错误定位多项式359。
第三电路356可以被配置为基于电路352、354的所选择的输出(即基于第一错误定位多项式358或第二错误定位多项式359)来执行第一数据134的解码。例如,第三电路356可以包括图2的错误校正器电路210。在该示例中,错误校正器电路210可以被配置为接收所选择的输出(即第一错误定位多项式358或第二错误定位多项式359)并且基于所选择的输出识别图2的一个或多个错误位置212。错误校正器电路210可以被配置为基于图2的一个或多个错误位置212来校正第一数据134的一个或多个错误以生成第二数据136。
通过使用电路352、354并行地确定错误定位多项式358、359,解码器350可以减少与确定错误定位信息相关联的时钟周期的数量。这种技术可用于改善某些应用中的性能,诸如结合使用符号来表示数据的非二进制编码技术,在上述情况下确定图1的错误奇偶校验位142可能是低效率的或不可行的。
图4是一组操作400的一说明性示例的流程图。该组操作400中的一个或多个操作可以在解码器150处、在解码器350处或其组合处执行。该组操作400可以对应于由示例1的伪代码指示的操作。
在402处,操作400包括初始化操作。初始化操作可以包括将C(D)、B(D)、x和b设定为1并将L和T设定为零。初始化操作可以包括将p设定为错误奇偶校验位142的值(例如如果第一数据134具有偶数个“1”值,则将p设定为0,或者如果第一数据134具有奇数个“1”值,则将p设定为1,作为一说明性示例)。在另一示例中,初始化操作可以包括将p设置为偶数错误奇偶校验位342的值(例如通过第一电路352)或将p设定为奇数错误奇偶校验位343的值(例如通过第二电路354)。
操作400还包括:在404处,一组求和操作。该组求和操作可以包括确定d、e1和e2。
在406处,确定是否d=0。如果d=0,则该组操作进一步包括:在408处将x增加2(x=x+2),并且T(迭代计数器)增加1(T=T+1)。否则,在412处,确定是否L>T。
如果L>T,则操作400进一步包括:在414处基于C(D)=bC(D)+dDxB(D)调节C(D)。否则,在416处确定定位多项式的当前次数L是否等于迭代计数器T(L=T)以及L的奇偶校验位是否等于错误奇偶校验位(L(mod 2)=p)。
如果L=T且L(mod 2)=p,则操作400进一步包括:在418处,第一组操作。第一组操作可以对应于BM解码过程的“双迭代”,其中L增加2。在这种情况下,操作400进一步包括:在422处将T增加2(例如以指示已经执行了两次迭代的操作)。
否则,操作400进一步包括:在420处,第二组操作。第二组操作可以对应于BM解码过程的“单次迭代”,其中L被递增1。在这种情况下,操作400进一步包括:在410处,将T增加2(例如以指示已经执行了两次迭代的操作)。
在424处可以确定迭代计数器是否大于错误校正能力(T>t)。如果T≤t,则可以在404处通过执行该组求和操作来继续操作400。否则,如果T>t,则操作400可以在426处结束。
参照图5,方法的说明性示例被描绘并总体地被指定为500。作为一说明性示例,方法500可以由诸如解码器150的解码器执行。
方法500包括:在502处,在解码器处接收第一数据。例如,解码器150可以接收第一数据134。
方法500还包括:在504处,基于第一数据在解码器处生成第二数据。生成第二数据包括基于第一数据的错误奇偶校验位来调节错误定位多项式。为了说明,解码器150可以通过基于错误奇偶校验位142调节错误定位多项式152的长度L来生成第二数据136。
参照图6,方法的另一说明性示例被描绘并且总体地被指定为600。作为一说明性示例,方法600可以由诸如解码器150的解码器执行。
方法600包括:在602处,使用时钟信号的第一数量的时钟周期基于第一数据生成错误定位多项式。第一数量小于第一数据的错误数量。为了说明,第一数据134可以包括k个错误,并且解码器150可以使用时钟信号202的j个时钟周期来生成错误定位多项式152,其中j<k。
方法600还包括:在604处,通过基于错误定位多项式调节第一数据来生成第二数据。作为一说明性示例,错误校正器电路210可以基于错误定位多项式152来识别一个或多个错误位置212,并且解码器150可以基于一个或多个错误位置212来调节第一数据134的值以生成第二数据136。
参照图7,方法的另一说明性示例被描绘并且总体地被指定为700。作为一说明性示例,方法700可以由诸如解码器350的解码器执行。
方法700包括:在702处在解码器的第一电路处接收数据、以及在704处在解码器的第二电路处接收数据。例如,第一电路352和第二电路354可以接收第一数据134。在一说明性示例中,第一电路352和第二电路354并行地接收第一数据134(例如在公共时钟周期期间)。
方法700还包括:在706处,通过基于数据的偶数错误奇偶校验位调节第一错误定位多项式而基于数据在第一电路处执行一组解码操作。作为一说明性示例,第一电路352可以基于偶数错误奇偶校验位342来调节第一错误定位多项式358的长度。
方法700还包括:在708处,通过基于数据的奇数错误奇偶校验位调节第二错误定位多项式而基于数据在第二电路处执行一组解码操作。作为一说明性示例,第二电路354可以基于奇数错误奇偶校验位343来调节第二错误定位多项式359的长度。
在一说明性示例中,第一电路352与由第二电路354执行的一组解码操作并行地执行一组解码操作(例如在一组公共时钟周期期间)。该组解码操作可以包括参照示例1的伪代码描述的一个或多个操作、图4的一组操作400的一个或多个操作、或其组合,作为一说明性示例。
方法700还包括:在710处,选择第一电路或第二电路的输出。例如,第三电路356可以选择第一错误定位多项式358或第二错误定位多项式359作为输出。
通过并行地确定快速终止条件可以改善使用迭代错误定位多项式生成技术在解码器处的总体延迟。例如,参照以上结合伯利坎普-梅西技术或改进的伯利坎普-梅西技术描述的表1和示例1,错误定位多项式生成的每次迭代评估并且如果d=0则不改变错误定位多项式C(D)的当前值。一旦错误定位多项式收敛到其最终值,则通常可以满足条件d=0。进一步通过检查d对于每个剩余迭代(例如直到T>=t)继续评估为0来执行检查,以验证错误定位多项式已经收敛。
然而,对于错误定位多项式的当前值d的评估仅基于循环变量T、多项式长度L、多项式系数ci和校正子Si,所有这些在每次迭代期间对于错误定位多项式的当前值都是已知的。因此,对于T的所有剩余值d的计算可以并行执行,使得可以在单个解码时钟周期期间确定错误定位多项式在任何特定迭代处的收敛或不收敛。如在图8的示例中进一步描述的,可以在完成表1和示例1中描述的迭代之前检测错误定位多项式的收敛,使得错误定位多项式生成能够快速终止并减少平均解码延迟。
示例2示出了表1的伪代码的修改以包括快速收敛检测,并且示例3示出了示例1的伪代码的修改以包括快速收敛检测。
示例2
示例3
在示例2和示例3中,添加了收敛条件测试,其在每次迭代T期间计算从j=T(当前迭代)到j=t-1(最终调度迭代)的所有dj以查看在任何剩余的迭代中是否会发生对C(D)的任何改变。如果dj的所有值均为零,则检测到收敛。
参照图8,系统800的特定实施方式被示出,其包括耦接到接入装置170的数据存储装置102。数据存储装置102包括耦接到控制器130的存储器装置103。控制器130包括解码器802,解码器802包括被配置为执行与解码从存储器装置103检索的数据相关联的功能的一个或多个部件。例如,解码器802可以包括具有校正子生成器806的BCH解码器、错误定位多项式生成器电路808和根求解器810。解码器802还包括耦接到错误定位多项式生成器电路808的收敛检测器电路812。收敛检测器电路812被配置为确定错误定位多项式(ELP)的快速收敛以加速对从存储器装置103读取的数据的解码。
校正子生成器806可以被配置为处理从存储器装置103读取的数据并且生成对应于所接收的数据的一组校正子。该组校正子可以被提供给错误定位多项式生成器电路808。错误定位多项式生成器电路808可以被配置为执行迭代过程以生成错误定位多项式。例如,错误定位多项式生成器电路808可以被配置为根据诸如参照表1所述的伯利坎普-梅西(BM)技术来生成错误定位多项式。或者,错误定位多项式生成器电路808可以执行诸如参照示例1描述的修改的BM技术。在完成错误定位多项式的生成时,错误定位多项式生成器电路808可以被配置为将错误定位多项式(或对应于错误定位多项式的数据)提供到根求解器810。
根求解器810可以被配置为执行一个或多个搜索过程以确定错误定位多项式的根。例如,根求解器810可以执行钱氏搜索以定位错误定位多项式的根。解码器802可以被配置为基于由根求解器810指示的错误位置值来修改从存储器装置103读取的数据以生成要提供给接入装置170的经错误校正的数据。
收敛检测器电路812包括至少两个并行计算电路,其包括第一计算电路816和与第一计算电路816并联的第二计算电路818。多个计算电路还可以包括与第一计算电路816和第二计算电路818并联的一个或多个其它计算电路,直到第N计算电路820。
N个计算电路816-820中的每个可以被配置为基于来自错误定位多项式生成器电路808的错误定位多项式(ELP)824生成相应的收敛信号。例如,第一计算电路816可以被配置为基于ELP 824生成第一收敛信号830。第一收敛信号830可以对应于错误定位多项式生成器电路808的第一迭代。类似的,第二计算电路818可以被配置与由第一计算电路816生成的第一收敛信号830并行地、基于ELP 824并且对应于错误定位多项式生成器电路808的第二迭代来生成第二收敛信号832。因为每个计算电路816-820使用相同的ELP 824以产生其相应的收敛信号,ELP 824可以被称为“相互”错误定位多项式。尽管每个计算电路816-820使用相同的错误定位多项式,但是每个计算电路816-820使用与每个其它计算电路816-820不同的一组校正子来计算其相应的收敛信号,如下面进一步详细描述的那样。
评估电路822可以包括比较器,诸如加法器或逻辑或门。评估电路822耦接到多个计算电路816-820并且被配置为生成指示是否已检测到快速收敛条件的指示符826(例如收敛指示符或未收敛指示符)。例如,评估电路822可以被配置为响应于从多个计算电路816-820中的至少一个接收指示未收敛的收敛信号(例如信号830-834中的一个或多个)而生成未收敛指示符。指示符826可以被提供给错误定位多项式生成器电路808以指示是否已经检测到收敛,诸如经由使得错误定位多项式生成器电路808停止处理并且将ELP824的当前版本提供到根求解器810的中断信号。
每个计算电路816-820可以包括多个乘法器和加法器,诸如第一计算电路816的代表性的多个乘法器840和加法器842。多个乘法器840中的每个乘法器可以被配置以将校正子值与ELP 824的系数相乘,并且加法器842可以具有耦接到多个乘法器840的输出的输入。例如,多个乘法器840和加法器842可以被配置为执行如表1或示例1中的计算(例如多个乘法器840可以包括L+1个乘法器,每个被配置为将ELP 824的相应系数ci与对应的校正子S2T+1-i相乘)。第一收敛信号830可以具有逻辑“0”以指示d等于0(例如指示可能的收敛),或者可以具有逻辑“1”值以指示d不等于0(例如指示未收敛)。
收敛检测器电路812可以配置每个计算电路816-820以执行与错误定位多项式生成器电路808的不同迭代对应的计算(例如每个计算电路816-820被分配了j的值并且如示例2或示例3的伪代码中所述地计算dj的对应值。例如,在错误定位多项式生成器电路808的第一顺序迭代期间(例如,如表1或示例1中的T=0),收敛检测器电路812可以接收用于第一迭代的ELP 824,并且第一计算电路816可以对j的第一值(即j=T=0)执行d的计算,第二计算电路818可以对j的第二值(即j=1)执行d的计算,并且第N计算电路820可以对j的第(t-1)(即j=t-1)值执行计算,使得对于错误定位多项式生成器电路808的j的所有可能值(即对于j=0至j=t-1)的d的计算是在对于来自第一迭代的ELP 824的单个时钟周期期间被并行执行的。
尽管每个计算电路816-820可以使用相同一组ELP系数{c0,c1,…,cL},但是每个计算电路816-820可以使用不同组的校正子值。例如,当L=1时,第一计算电路816可以针对j=0使用一组校正子{S0,S1},第二计算电路818可以针对j=1使用不同组的校正子{S2,S3},并且第N计算电路820还可以针对j=(t-1)使用不同组的校正子{S2t-2,S2t-1}。因此,收敛检测器电路812包括至少两个计算电路(例如计算电路816和计算电路818),其被配置为基于相同组的ELP系数(例如{c0,c1,…,cL})以及基于至少两个不同组的校正子(例如{S0,S1}和{S2,S3})来生成至少两个收敛信号(例如信号830、832)。不同组的校正子的每个组对应于各收敛信号中不同的一个(例如当第一计算电路在信号830的生成期间使用{S0,S1}时,该组校正子{S0,S1}对应于信号830;当第二计算电路818在信号832的生成期间使用一组校正子{S2,S3}时,该组校正子{S2,S3}对应于信号832)。
如果d的所有并行计算都等于0,则第一次迭代的ELP 824具有收敛值,并且不需要错误定位多项式生成器电路808的进一步迭代。否则,可以执行错误定位多项式生成器电路808的第二顺序迭代(例如对于T=1),可以在收敛检测器电路812处接收用于第二迭代的ELP 824的值,并且第一计算电路816可以执行对j的第一值(j=T=1)的d的计算,第二计算电路818可以执行对j的第二值(即j=2)的d的计算,并且第(N-1)计算电路可以执行对j的第(t-1)值(即j=t-1)的计算。在第二时钟周期期间,对于错误定位多项式生成器电路808的所有剩余迭代(即对于T=1到T=t-1)的d的计算是被并行执行的。对于错误定位多项式生成器电路808的每个顺序迭代处理可以继续直到检测到收敛(或直到该过程在迭代T>=t处终止而没有收敛)。
如上所述,收敛检测器电路812可以包括足够数量的N个计算电路816-820,以使得完全并行的收敛检测操作能够在单个时钟周期内完成。例如,计算电路816-820的数量N可以基本上匹配“t”,“t”是ECC方案可校正的最大数量的错误。为了说明,在特定实施方案中,N可以等于t或t-1。然而,在具有宽松延迟标准的其它实施方案中,通过将计算电路的数量N减小为小于错误的最大可校正数量,可以以较小的硬件封装和减少的成本获得较慢的收敛检测(例如两个或多个时钟周期以检测收敛而不是单个时钟周期)。例如,N可以等于t/2,并且收敛验证可以在两个时钟周期中执行。作为另一示例,N可以等于2,并且收敛验证可以在t/2个时钟周期中执行。在使用多时钟周期验证的实施方案中,应注意,尽管可能需要多个时钟周期来检测收敛,但未收敛可以在单个时钟周期中检测到(例如响应于任何计算电路816-820指示d的非零值)。
另外,随着已经执行的迭代数量增加,剩余待验证收敛的单独d计算的数量减少。在N等于t/2的实施方案中,可以对先t/2个迭代(例如T<t/2)的迭代执行两时钟周期收敛验证,并且对于后t/2个迭代(例如t/2<T<t)的每个可以执行一时钟周期收敛验证。
使用包括多个并行解码路径的解码架构也可以改善平均解码延迟,所述多个并行解码路径包括一个路径,该路径与对于较大数量的错误执行迭代定位错误多项式生成器的另一路径并行地执行对于相对小数量的错误的错误位置的直接计算。图9中描绘了这种使用修改的BM技术以减少错误多项式生成器的迭代的架构的一示例,图10描绘了包括诸如参照图8所描述的收敛检测器电路的第二示例。
图9是根据本公开的另一实施方案的错误校正码(ECC)电路900的框图。在一个示例中,ECC电路900能用在图1、图2、图3或图8的解码器的一个或多个中。该ECC电路900包括用于存储校正子的校正子队列902、“快速”数据路径904、“慢速”数据路径906、控制信号生成器电路922和选择器电路918。快速数据路径904和慢速路径906并行工作,并且彼此“竞争”,其中当码字的总错误m小于预选阈值TE(例如小于4的错误数量)时,预期快速路径收敛得更快。在一些实施方案中,预选阈值TE可以具有6或更小的值。在一个特定实施方案中,阈值TE可以具有4的值。当总错误m大于预选阈值TE(例如大于4的错误数量)时,使用慢速数据路径906结果,并且在这种情况下快速路径将不收敛。
快速数据路径904还可以被称为直接求解器电路904,其被耦接到选择器电路918的第一输入并被配置为确定至少一个错误位置。在示出的示例中,快速数据路径904可以包括用于计算错误定位多项式(ELP)系数的直接计算单元910、以及ELP队列加上用于ELP根的直接求解器912(直接根求解器)。直接计算单元910被配置为确定与校正子对应的ELP的系数。直接根求解器912被配置为确定ELP的根,从而确定可能存储在错误定位队列中的错误位置。
快速路径904执行“推测性”计算,这意味着快速路径计算TE个不同组的ELP系数、和相应的TE个组的推测性错误位置。仅在慢速路径906计算ELP的次数L之后,快速路径才被设定为对于特定解收敛(或提交(commit))。在这一点,如果L≤TE,则快速路径将提交来自该组推测性解的、与L对应的解。另一方面,如果L>TE,则快速路径904将不会提交解,并且解码将继续直到慢速路径906收敛到解。慢速路径906包括错误定位多项式生成器电路,其被配置为基于错误奇偶校验位(诸如改进的伯利坎普-梅西算法(BMA)求解器914)来调节错误定位多项式,用于从存储在校正子队列902处的校正子确定ELP的系数。改进的BMA求解器914可以对应于参照图1至图7描述的修改的BM解码器。慢速路径906还包括耦接到错误定位多项式生成器电路的输出的根求解器电路,诸如ELP队列加上钱氏求根搜索(CRS)求解器916(CRS根求解器),用于确定ELP的根从而确定可能存储在错误位置队列中的错误位置。
校正子队列902可以是可用于存储数据的任何合适类型的存储器,该数据诸如为由校正子检查器确定的校正子,校正子检查器为诸如图2中的校正子生成器电路204。例如,校正子队列902可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、闪速存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或任何合适的数据存储装置。
在一个实施方案中,快速数据路径904可以如下所述地被操作。用于接收到的码字的许多校正子(Si)被存储在校正子队列902中。基于这些校正子,直接计算单元910能对于相应的错误定位多项式(ELP)的系数执行若干候选组的推测性直接计算,该系数被提供给直接根求解器912。直接根求解器912可以具有用于接收由直接计算单元910确定的ELP系数的队列或缓冲器,并且被配置为对于ELP的候选系数组中的每个组确定ELP的根。
校正子可以从ELP方面被表示为如下:
在一个实施方案中,参照图10,直接计算单元910被用于在框1002和1004至到框1006和1008计算ELP的4个不同组的系数(Λ1,Λ2,…,Λm-1和Λm)。
如果m=1(第一阶ELP多项式),则可以如下确定ELP的候选系数组:
Λ1=S1
如果m=2(第二阶ELP多项式),则可以如下确定ELP的候选系数组:
Λ1=S1
如果m=3(第三阶ELP多项式),则可以如下确定ELP的候选系数组:
Λ1=S1
Λ3=(S1 3+S3)+S1Λ2
如果m=4(第四阶ELP多项式),则可以如下确定ELP的候选系数组:
Λ1=S1
Λ3=(S1 3+S3)+S1Λ2
在直接计算单元910计算ELP的所有候选系数组之后,它们被存储在直接根求解器912中,其可以具有用于存储这些系数的队列或任何合适的数据存储体。直接根求解器912被配置为针对每个候选系数组求解ELP的根。直接根求解器912可以使用任何已知的方法以求解ELP的根。对于小的多项式次数(例如4),对根的求解可以通过直接计算来完成,即通过在预定义的函数中分配特定值。一旦慢速路径906将计算ELP次数,快速路径904可以提交与由BMA求解器914计算的次数L对应的特定组的根(只要L≤4)。根(多个根)指示接收到的码字中的错误位的位置。错误位置可以被存储在错误位置队列中并且可以被提供给码字队列,该码字队列可以基于错误位置来校正接收到的码字中的错误位。可以通过反转或翻转错误位,来校正该位。错误位置队列可以是可用于存储数据的任何适当类型的存储器。例如,错误位置队列可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、闪速存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。
参照图11,如果ELP的错误数量大于阈值TE(例如T=6),则可以在框1102处通过使用改进的BMA求解器914来确定ELP的系数。在改进的BMA求解器914确定ELP的系数之后,它们被存储在CRS根求解器916中,其可以具有用于存储这些系数的队列或任何合适的数据存储器。然后,在框1104处,CRS根求解器916可以使用钱氏搜索算法来确定ELP的根。可以使用任何已知的钱氏搜索算法或方法。错误位置可以被存储在错误位置队列中并且可以被提供给用于校正码字的码字队列。
回到图9,控制信号生成器922可以响应于错误定位生成器电路的输出,如改进的BMA求解器914所示。控制信号生成器922可以被配置为基于来自改进的BMA求解器914的输出来确定错误定位多项式生成是否收敛于与小于或等于阈值TE的错误数量对应的值。响应于改进的BMA求解器914指示小于或等于阈值TE的错误数量,控制信号生成器922可以将控制信号920提供给选择器电路918的控制输入,该控制信号920使得选择器电路918选择快速路径904的输出,并且根求解器916的操作可以被禁用或跳过。否则,当错误数量超过阈值TE时,根求解器916可以基于由改进的BMA求解器914生成的错误定位多项式操作以找出错误位置,并且控制信号生成器922可以提供控制信号920,该控制信号920使得选择器电路918选择根求解器916的输出。
尽管快速路径904对于小于或等于阈值TE的错误的数目生成错误位置,但是,直到错误定位多项式已经由改进的BMA求解器914产生,将要被校正的错误的实际数目才会被确定。与参照图1-图7描述的表1的BM技术相比,改进的BMA求解器914可以以更少的迭代(例如,许多迭代的一半)产生错误定位多项式,诸如通过基于错误奇偶校验位来更新错误定位多项式。因此,由于改进的BMA求解器914所使用的时钟周期数量减少,与使用表1的BM技术的解码器相比,ECC电路900可以在减少数量的时钟周期中确定错误位置。此外,当被解码的数据中的错误数量小于阈值TE并能够选择快速路径904的输出时,也可以避免与根求解器916的操作相关联的延迟。
对ECC电路900的各种修改是可能的。例如,在一种实施方式中,直接计算单元910和改进的BMA求解器914可以被结合到单个求解装置中。在另一些实施方式中,直接计算单元910、直接根求解器912、改进的BMA求解器914和CRS根求解器916中的一些或全部可以被包括在相同的装置中。在一种实施方式中,预先选择的错误阈值(TE)可以是四而不是六。在另一些实施方式中,预先选择的错误阈值(TE)可以具有其它合适的值。直接计算单元910、直接根求解器912、改进的BMA求解器914和CRS根求解器916可以每个使用本领域已知的任何对应和合适的部件来实现。
实际上,相比慢速路径906,快速路径904可以提供对码字中的错误更快的定位。每个路径被配置为基于校正子中的预期的错误总数来快速有效地对错误定位,其可以随后通过错误定位多项式的收敛而被确认。这种双路径方法可以提供比传统的单路径方法更快且更高效的错误定位。
图9的ECC电路系统900的解码延迟可以通过应用诸如参照图8描述的快速收敛技术而被进一步减小。利用图9的双路径架构实现收敛检测器电路812的示例在图12中示出。
图12绘出ECC电路1200的说明性示例,该ECC电路1200包括:校正子队列902、可以包括直接ELP求解器910和直接根求解器912的“快速”路径1204、以及可以包括错误定位多项式生成器电路1214和根求解器916的“慢”路径1206。快速路径1204和慢速路径1206的输出耦接到选择器电路918的输入,并响应于来自控制信号生成器922的控制信号920而被选择。
图8的收敛检测器电路812耦接到错误定位多项式生成器电路1214,并可以配置为在每个时钟周期接收由错误定位多项式生成器电路1214产生的ELP 824并且在单个时钟周期中确定ELP 824是否具有收敛值或将会在错误定位多项式生成器电路1214的随后迭代中改变,如参照图8所述。尽管收敛检测器电路812是以完全并行的配置对于单个时钟周期收敛检测来描述的(例如N=t),但是在另一些实施方式中,收敛检测器电路812可以包括更少的计算电路并可以配置为在大于1的平均时钟周期数中检测收敛(例如N<t)。
收敛检测器电路812配置为在检测到错误定位多项式的收敛时向控制信号生成器922输出收敛信号,与图9相比能够更快地选择快速路径1204的输出。例如,在错误定位多项式生成器914使用表1的BM技术并且将被求解的数据包括四个错误的实施方式中,收敛检测器电路812可以确定在错误位置多项式生成器914的第四次迭代期间生成的ELP具有收敛值,并可以(例如在第四次迭代或第五次迭代期间)向控制信号生成器电路922发送该数据包括四个错误的信号。控制信号生成器电路922可以(例如在第四次迭代或第五次迭代期间)向选择器电路918发信号以选择快速路径1204的、对应于4个错误解的输出。因此,可以选择快速路径1204的输出,而不用等待错误定位多项式生成器1204完成t次迭代以验证ELP的收敛。
在错误定位多项式生成器1204实现如参照图1-图7所述的改进的BM技术(诸如包括基于接收到的数据的错误奇偶校验位调节错误定位多项式)的实施方式中,可以实现额外的延迟减少。例如,错误定位多项式生成器1214可以对应于图2的错误定位多项式生成器电路208。在数据包括四个错误的示例中,与使用表1的BM技术的实施方式中的4个时钟周期相比,错误定位多项式生成器1204可以在2个时钟周期或3个时钟周期中生成ELP的收敛值。因此,在某些情况下,ECC电路1200可以在第一时钟周期期间从快速路径1204中选择1个错误或2个错误的解,或者可以在第二时钟周期期间从快速路径1204中选择3个错误或4个错误的解(例如由于图4的组合BM迭代和图8的快速收敛检测的结合),并可以另外地在与错误定位多项式生成器1204处生成ELP的收敛值相同的时钟周期期间选择慢速路径1206的输出(例如当数据包括10个错误时在第五时钟周期期间)。
图13绘出可由解码器(诸如图8的解码器802)或图12的ECC电路1200执行的方法的示例。该方法包括:在1302处,发起对于特定次数的迭代计划的迭代错误定位多项式生成操作。
在1304处,在错误定位多项式生成操作的最终计划迭代之前的迭代期间,同时测试收敛标准的多次迭代以确定错误定位多项式生成操作的随后迭代是否配置为改变错误定位多项式。收敛标准可以对应于基于校正子值和错误定位多项式的系数的计算,诸如参照图8所述的d的计算。为了说明,收敛标准可以被计算为示例2或示例3的收敛标准。
例如,收敛标准的多次迭代可以对应于错误定位多项式生成操作的所有剩余迭代,并可以在单个时钟周期期间并行地测试,诸如在图8的解码器802的完全并行实施方案中(其中N=t)。作为另一示例,收敛标准的多次迭代可以对应于少于错误定位多项式生成操作的所有剩余迭代,诸如在图8的解码器802的部分并行实施方案中(其中N大于2但是小于t)。
在1306处,响应于确定没有错误定位多项式的随后迭代被配置为改变错误定位多项式,错误定位多项式生成操作在最终计划的迭代之前被终止。
通过在检测到错误定位多项式的收敛时(例如在检测到错误定位多项式在任何将来的迭代中不会改变时)终止错误定位多项式生成操作,可以减少解码延迟。
参照图14,示出了系统1400的特定实施方式,其包括耦接到装置170的数据存储装置1402(例如数据存储装置102)。数据存储装置1402包括耦接到控制器130的存储器装置103。
控制器130包括错误校正装置,诸如耦接到存储器接口132的解码器1450。解码器1450配置为执行解码操作以解码从存储器件103取回的数据,诸如通过执行解码操作以解码包含在数据106中的一个或多个码字的表示1476。为了说明,解码器1450可以包括BCH解码器,该BCH解码器具有校正子生成器电路1452(例如校正子生成器电路204或校正子生成器806)、错误定位多项式生成器电路1410和错误校正器电路1456(例如错误校正器电路210或根求解器810)。校正子生成器电路1452可以耦接到错误定位多项式生成器电路1410的输入,并且错误校正器电路1456可以耦接到错误定位多项式生成器电路1410的输出。
解码器1450的一个或多个部件可以响应于时钟信号1402。例如,错误定位多项式生成器电路1410可以响应于时钟信号1402。在图14的示例中,时钟信号1402包括第一周期1404、顺序地跟随第一周期1404的第二周期1406、以及顺序地跟随第二周期1406的第三周期1408。
在操作期间,校正子生成器电路1452可以处理从存储器件103读取的数据并生成对应于所接收的数据的一组校正子。例如,存储器接口132配置为接收包含在数据106中的一个或多个码字的表示1476,并且校正子生成器电路1452可以配置为生成对应于表示1476的校正子多项式1454。校正子多项式1454可以被提供给错误定位多项式生成器电路1410。
错误定位多项式生成器电路1410可以配置为执行迭代过程以基于校正子多项式1454来生成错误定位多项式。例如,错误定位多项式生成器电路1410可以配置为根据Berlekamp-Massey(BM)技术(诸如参照表1所述的)来生成错误定位多项式。如这里使用的,BM技术可以指的是使用线性反馈移位寄存器(LFSR)技术来识别导致码字的表示的所有校正子对应于零的错误定位多项式C(x)的“最小”次数,以识别该表示的一个或多个错误的指示的解码技术。替代地或除了BM技术之外,错误定位多项式生成器电路808可以执行另外的技术。
结合使用BM技术的解码操作,错误定位多项式生成器电路1410可以配置为设定错误定位多项式1412的特定值(这里也被称为在迭代T处的C(D))或称为CT)并在BM技术的随后迭代期间迭代地更新错误定位多项式1412的特定值(例如以确定CT+1和/或CT+2)。例如,错误定位多项式生成器电路1410可以配置为将错误定位多项式1412设定为标量1值并可以在BM技术的随后迭代期间更新该值。取决于特定的迭代,可以在更新错误定位多项式1412的值同时改变C(D)的次数,可以更新错误定位多项式1412的值而不改变C(D)的次数,或者C(D)可以不变。
在说明性的示例中,错误定位多项式生成器电路1410配置为执行将常规BM技术的操作“缩合”的某些操作以便减少延迟,诸如通过将用来确定CT+2而执行的操作从时钟信号1402的四个周期“缩合”到时钟信号1402的两个周期或三个周期。例如,某些BM技术使用两个时钟周期来确定与BM解码过程的特定迭代相关的参数值。在图14中,错误定位多项式生成器电路1410可以配置为确定与解码过程的特定迭代相关的一个或多个参数,同时确定与解码过程的另一迭代相关的一个或多个参数。
为了进一步说明,表2描绘了在基于BM技术的解码期间可使用的某些参数。在表2中,每个参数与基于BM的技术的特定迭代T相关(例如,在该特定迭代T期间生成)(其中T=0,...,t,并且其中t表示特定错误校正码的校正能力)。在表2和图14-图18中,使用上标来标记某些指标,而不是如在描述的其它部分中使用的下标。此外,结合表2和图14-图18,迭代T的输入可以由上标“T”表示,并且来自迭代T的输出可以由上标“T+1”表示。(关于图1-图13,迭代T的输出可以由下标“T”表示)。因此,示例2中的“dT”、示例3中的“dT”和表2中的“d(T +1)”可以指的是相同的参数。
表2
某些常规的BM解码技术可以使用第一时钟周期在迭代T期间确定值,如下:
与迭代T有关的一个或多个其它参数可以在第二时钟周期中确定。例如,取决于d(T +1)的值的一个或多个参数可以被“推迟”到第二时钟周期。作为一示例,C(T+1)(D)可以使用与d(T+1)的乘法来确定并可以被“推迟”到第二时钟周期。为了进一步说明,常规的BM解码技术可以如下在第二时钟周期中确定某些参数:
在根据图14的第一示例中,可以在迭代T的第二时钟周期期间使用在迭代T的第一时钟周期上执行的一个或多个辅助计算来计算d(T+2)。因此,迭代T和T+1可以在三个时钟周期(而不是四个)中计算出。在第一示例中,与迭代T相关的输入参数值可以包括B(T)(D)、C(T)(D)、d(T)、b(T)、L(T)和x(T),并且与迭代T相关的输出参数值可以包括B(T+1)(D)、C(T+1)(D)、d(T +1)、b(T+1)、L(T+1)和x(T+1)。在迭代T结束时,迭代索引可以被设定为T+1。
为了进一步说明第一示例的方面,在第一周期1404期间,错误定位多项式生成器电路1410可以确定与第一迭代1416(例如迭代T)相关的值。例如,在第一周期1404期间,错误定位多项式生成器电路1410可以确定参数1418(例如d)的第一值1420(例如d(T+1))、第一辅助参数1434(例如e1)和第二辅助参数1436(例如e2)。为了说明,参数1418的第一值1420和辅助参数1434、1436可以被如下确定:
参数1418的第一值1420基于与解码操作的之前迭代相关的错误定位多项式1412的值。例如,CT可以在迭代T之前发生的解码操作的迭代期间确定(例如在迭代T=0期间),并且第一值1420可以基于CT。
辅助参数1434、1436的计算可以具有与d(T+1)的计算复杂度相似的复杂度,并可以与d(T+1)的计算并行地执行。辅助参数1434、1436可以对应于参照示例1和3以及图4描述的参数e1和e2。
在第二周期1406期间,错误定位多项式生成器电路1410可以确定与第一迭代1416相关的一个或多个其它值、以及与第二迭代1422(例如迭代T+1)相关的一个或多个值。例如,错误定位多项式生成器电路1410可以基于参数1418的第一值1420、第一辅助参数1434和第二辅助参数1436来确定参数1418的第二值1422(例如d(T+2))。参数1418的第二值1422与第二迭代1422相关(例如在第二迭代1422期间生成)。在第二周期1406期间,错误定位多项式生成器电路1410还可以确定与第一迭代1416相关的一个或多个参数,诸如错误定位多项式1412的值(例如C(T+1)(D))。错误定位多项式生成器电路1410还可以确定与第一迭代1416相关的一个或多个其它参数,诸如b(T+1)、B(T+1)(D)、L(T+1)和x(T+1)。
为了进一步说明,在第二周期1406期间,d(T+2)、b(T+1)、C(T+1)(D)、B(T+1)(D)、L(T+1)和x(T+1)可以如下确定:
在第三周期1408期间,错误定位多项式生成器电路1410可以确定与第二迭代1422相关的一个或多个其它值。例如,错误定位多项式生成器电路1410可以确定错误定位多项式1412的经调节值1424(例如C(T+2)(D))。错误定位多项式生成器电路1410还可以确定b(T +2)、B(T+2)(D)、L(T+2)和x(T+2)。
为了进一步说明,在第三周期1408期间,C(T+2)(D)、B(T+2)(D)、L(T+2)和x(T+2)可以被如下确定:
根据第一示例,错误定位多项式生成器电路1410可以使用三个时钟周期(例如周期1404、1406和1408)而不是使用四个周期来确定与BM技术的两次迭代相关的值(例如与迭代1416、1422相关的值)。结果,与使用常规BM技术的装置相比,根据第一示例的方面的装置可以将时钟周期的数量减少25%。第一示例的某些说明性方面参照图15进一步描述。
在根据图14的第二示例中,d(T+2)、b(T+2)、C(T+2)(D)、B(T+2)(D)、L(T+2)和x(T+2)可以从对迭代T的输入参数直接确定(例如从d(T)、b(T)、C(T)(D)、B(T)(D)、L(T)和x(T)直接确定)。为了进一步说明,表3示出可与第二示例相关的某些方面。在表3中,为了方便描述,最左列表示条件参考编号,中间列表示对于迭代T和迭代T+1的条件,最右列表示简化的条件(例如逻辑等效条件)。
表3
在第二示例中,d(T+2)、b(T+2)、C(T+2)(D)、B(T+2)(D)、L(T+2)和x(T+2)可以根据以下公式基于b(T)、C(T)(D)、B(T)(D)、L(T)和x(T)以及进一步基于d(T+1)、e1和e2来确定。在下面的公式中,为了可读性将某些上标从方程的右侧去除。例如,在右侧d可以表示d(T+1),并且b、C(D)、B(D)、L和x可以分别表示b(T)、C(T)(D)、B(T)(D)、L(T)和x(T)。公式的右侧的数字表示来自表3的最左列的相应条件参考编号。
在第二示例的特定实施方式中,d、e1和e2的确定在时钟信号1402的一个时钟周期中(例如在第一周期1404期间)进行。在确定d、e1和e2之后,其它参数(例如b(T+2)、B(T+2)(D)、L(T+2)和x(T+2))可以在时钟信号1402的另一个周期中(例如在第二周期1406期间)确定。在某些情况下,C(T+2)(D)可以在第二周期1406期间与b(T+2)、B(T+2)(D)、L(T+2)和x(T+2)的确定并行地确定,在另一些情况下,C(T+2)(D)可以在第三周期1408期间(例如在b(T+2)、B(T+2)(D)、L(T+2)和x(T+2)的确定之后)确定。为了说明,对于条件6、7、8或9,C(T+2)(D)的确定可以包括三个输入值的乘法。在这种情况下,C(T+2)(D)可以在第三周期1408期间确定。第二示例的某些说明性方面参照图16进一步描述。
在第三示例中,错误定位多项式生成器电路1410包括三输入乘法器电路1432。在第三示例中,三输入乘法器电路1432配置为执行一个或多个三输入乘法操作,以在条件6、7、8或9的情况下能够在第二周期1406期间与b(T+2)、B(T+2)(D)、L(T+2)和x(T+2)的确定并行地进行C(T+2)(D)的确定。通过使用时钟信号1402的两个周期(例如使用周期1404、1406)来确定C(T+2)(D),与某些常规BM技术(其对于两次迭代使用四个周期来确定错误定位多项式的更新值)相比,错误定位多项式生成器电路1410可以使延迟减少50%。
在确定C(T+2)(D)(例如使用第一示例、第二示例或第三示例)并继续解码直到确定错误定位多项式已经收敛之后,错误定位多项式生成器电路1410可将错误定位多项式提供给错误校正器电路1456。例如,C(T+2)(D)可以对应于最终解码迭代处的错误定位多项式1412的经调节值1424,并且错误定位多项式生成器电路1410可以提供错误定位多项式的经调节值1424给错误校正器电路1456。
错误校正器电路1456可以配置为识别一个或多个错误位置1458并使用错误定位多项式1412的经调节值1424来校正表示1476的一个或多个错误。例如,错误校正器电路1456可以配置为确定对应于一个或多个错误位置1458的、错误定位多项式1412的经调节值1424的根。在说明性的示例中,错误校正器电路1456配置为使用钱氏搜索技术确定错误定位多项式1412的经调节值1424的根。如这里使用的,钱氏搜索技术可以指的是通过以与有限域的生成器元件相关的特定阶数测试多项式的值来识别有限域上的多项式的根的技术(例如,与“蛮力”搜索多项式根相比,减少了计算的次数)。替代地或除了钱氏搜索技术之外,错误校正器电路1456可以配置为使用另外的技术来确定错误定位多项式1412的经调节值1424的根。
参照图14描述的示例减少了与迭代解码过程相关的延迟。例如,通过在迭代T期间确定与迭代T+1相关的一个或多个参数的值,某些操作可以在解码器1450处被“缩合”。结果,与对表示1476的解码相关的延迟可以减少。
尽管为了方便已经分开地描述了某些方面,但是应当理解,某些方面可以结合而不脱离本公开的范围。例如,参照图14描述的一个或多个方面可以与参照图1-图13描述的一个或多个方面结合。在说明性的示例中,快速收敛检测(例如,如参照示例2、示例3中的一个或多个或者图8-图13描述的)可以由图14的解码器1450执行。在说明性的示例中,解码器1450包括图8的收敛检测器电路812。或者,收敛检测器电路812可以从图14的解码器1450省略。
图15是示出可根据参照图14描述的数据存储装置102的第一示例执行的操作1500的流程图。操作1500可以由图14的错误定位多项式生成器电路1410执行。
操作1500包括:在1504处,接收与表示1476相关的一组参数。该组参数可以包括C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)和校正子(例如校正子多项式1454)。该组参数可以在错误定位多项式生成器电路1410处被接收。
操作1500还包括:在1508处,确定d(T+1)(例如参数1418的第一值1420)、e1(例如第一辅助参数1434)和e2(例如第二辅助参数1436)。作为说明性的示例,d(T+1)、e1和e2的值可以在时钟信号1402的第一周期1404期间确定,并且C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)以及校正子可以在第一周期1404之前的周期期间确定。
操作1500还包括:在1512处,确定C(T+1)(D)、B(T+1)(D)、x(T+1)、L(T+1)和b(T+1),并且,在1516处,确定d(T+2)。在说明性的示例中,C(T+1)(D)、B(T+1)(D)、x(T+1)、L(T+1)和b(T+1)以及d(T+2)在公共时钟周期期间确定,诸如在时钟信号1402的第二周期1406期间。
操作1500还包括:在1520处,确定C(T+2)(D)、B(T+2)(D)、x(T+2)、L(T+2)和b(T+2)。例如,C(T +2)(D)、B(T+2)(D)、x(T+2)、L(T+2)和b(T+2)可以在时钟信号1402的第三周期1408期间确定。
图16是示出可根据参照图14描述的数据存储装置102的第二示例执行的操作1600的各方面的流程图。操作1600可以由图14的错误定位多项式生成器电路1410执行。
操作1600包括:在1604处,接收与表示1476相关的一组参数。该组参数可以包括C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)和校正子(例如校正子多项式1454)。该组参数可以在错误定位多项式生成器电路1410处被接收。
操作1600还包括:在1608处,确定d(T+1)(例如参数1418的第一值1420)、e1(例如第一辅助参数1434)和e2(例如第二辅助参数1436)。作为说明性的示例,d(T+1)、e1和e2的值可以在时钟信号1402的第一周期1404期间确定,并且C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)以及该校正子可以在第一周期1404之前的周期期间确定。
操作1600还包括:在1612处,确定bC(T)(D)、dB(T)(D)、e1B(T)(D)、B(T+2)(D)、x(T+2)、L(T +2)、b(T+2)和(be1+de2)。例如,bC(T)(D)、dB(T)(D)、e1B(T)(D)、B(T+2)(D)、x(T+2)、L(T+2)、b(T+2)和(be1+de2)可以在第二周期1406期间被确定。
操作1600还包括:在1616处,确定C(T+2)(D)。例如,C(T+2)(D)可以在第三周期1408期间被确定。
图17是示出可根据参照图14描述的数据存储装置102的第三示例执行的操作1700的各方面的流程图。操作1700可以由图14的错误定位多项式生成器电路1410执行。
操作1700包括:在1704处,接收与表示1476相关的一组参数。该组参数可以包括C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)和校正子(例如校正子多项式1454)。该组参数可以在错误定位多项式生成器电路1410处被接收。
操作1700还包括:在1708处,确定d(T+1)(例如参数1418的第一值1420)、e1(例如第一辅助参数1434)和e2(例如第二辅助参数1436)。作为说明性的示例,d(T+1)、e1和e2的值可以在时钟信号1402的第一周期1404期间确定,并且C(T)(D)、B(T)(D)、x(T)、L(T)、b(T)以及校正子可以在第一周期1404之前的周期期间确定。
操作还包括:在1712处,确定d(T+2)=(be1+de2)、C(T+2)(D)、B(T+2)(D)、x(T+2)、L(T+2)和b(T+2)。例如,d(T+2)=(be1+de2)、C(T+2)(D)、B(T+2)(D)、x(T+2)、L(T+2)和b(T+2)可以在第二周期1406期间被确定。
参照图18,方法的说明性示例被绘出并总地指定为1800。在说明性的示例中,方法1800由数据存储装置执行,诸如由图14的数据存储装置102的错误定位多项式生成器电路1410执行。
方法1800包括:在1804处,在错误校正器件处发起解码过程以对数据进行错误校正。例如,解码器1450可以(例如经由存储器接口132从存储装置103)接收表示1476,并可以发起解码过程以校正可能存在于表示1476中的一个或多个错误。
方法1800还包括:在1808处,在时钟信号的第一周期期间,确定错误定位多项式调节参数的与解码过程的第一迭代相关的第一值。错误定位多项式调节参数的第一值基于错误定位多项式的与解码过程的之前迭代相关的值。为了说明,错误定位多项式调节参数可以对应于参数1418,并且参数1418的第一值1420可以与第一迭代1416(例如迭代T)相关。错误定位多项式生成器电路1410可以配置为基于错误定位多项式1412的、与解码过程的之前迭代(例如迭代T=0)相关的值(例如基于CT)而在时钟信号1402的第一周期1404期间确定参数1418的第一值1420。
方法1800还包括:在1812处,在时钟信号的顺序跟随第一周期的第二周期期间或在时钟信号的顺序跟随第二周期的第三周期期间,确定错误定位多项式的经调节值。错误定位多项式的经调节值与解码过程的第二次迭代相关,并且基于错误定位多项式调节参数的第一值。为了说明,错误定位多项式生成器电路1410可以配置为基于参数1418的第一值1420而在第二周期1406期间确定错误定位多项式1412的经调节值1424。错误定位多项式1412的经调节值1424与第二次迭代1422(例如迭代T+1)相关。
在一些实施方式中,错误定位多项式生成器电路1410配置为在第二周期1406期间确定参数1418的第二值1422并在第三周期1408期间基于参数1418的第二值1422确定错误定位多项式1412的经调节值1422。为了说明,错误定位多项式生成器电路1410可以配置为根据参照图14描述的第一示例的一个或多个方面、参照图15的操作1500描述的一个或多个方面、或其组合来操作。
在另一实施方式中,错误定位多项式生成器电路1410配置为在第二周期1406期间确定错误定位多项式1412的经调节值1422。为了说明,错误定位多项式生成器电路1410可以配置为根据参照图14描述的第二示例的一个或多个方面、参照图16的操作1600描述的一个或多个方面、或其组合来操作。
在另一实施方式中,错误定位多项式生成器电路1410配置为使用诸如三输入乘法器电路1432的三输入乘法器来确定错误定位多项式1412的经调节值1422。三输入乘法器电路1432可以配置为在第二周期1406期间确定错误定位多项式1412的经调节值1422。在此示例中,错误定位多项式生成器电路1410可以配置为根据参照图14描述的第三示例的一个或多个方面、参照图17的操作1700描述的一个或多个方面、或其组合来操作。
参照图19,系统1900包括可耦接到装置1970(例如装置170)的非易失性存储器系统1902(例如图1或图8的数据存储装置102、图3的数据存储装置302或图14的数据存储装置1402)。非易失性存储器系统1902包括控制器1930(例如控制器130或控制器330)和可由一个或多个非易失性存储器管芯1904(例如包含在存储器件103中的一个或多个存储器管芯)制成的非易失性存储器。如这里使用的,术语“存储器管芯”是指形成在单个半导体衬底上的非易失性存储器单元的集合以及用于管理那些非易失性存储器单元的物理操作的相关电路。控制器1930与装置1970相接口,并将用于读取、编程和擦除操作的命令序列传输到一个或多个非易失性存储器管芯1904。
控制器1930包括配置为执行快速错误定位多项式调节的解码器1906。作为说明性的示例,解码器1906可以对应于图14的解码器1450。
控制器1930(其可以是闪存控制器)可以采用处理电路、微处理器或处理器以及存储计算机可读程序代码(例如固件)的计算机可读介质的形式,该计算机可读程序代码可由例如(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行。控制器1930可以配置有硬件和/或固件以执行下面描述并在流程图中示出的各种功能。此外,示出为在控制器1930内部的一些部件可以被存储在控制器1930的外部,并且可以使用其它部件。此外,短语“可操作地与...通信”可以表示直接与…通信或者与通过一个或多个部件与…间接地(有线地或无线地)通信,这些部件可以或可以不在这里示出或描述。
如这里使用的,闪存控制器是管理存储在闪存上的数据并与主机诸如计算机或电子装置通信的装置。除了这里描述的特定功能之外,闪存控制器可以具有各种功能。例如,闪存控制器可以对闪存格式化、映射坏闪存单元、并分配备用单元以替代将来出故障的单元。备用单元的某些部分可以用于保存固件以操作闪存控制器并实现其它特征。在操作中,当主机装置要从闪存读取数据或向闪存写入数据时,主机装置与闪存控制器通信。如果主机装置提供数据将被读取/写入的逻辑地址,则闪存控制器可以将从主机装置接收的逻辑地址转换为闪存中的物理地址。(或者,主机装置可以提供物理地址)。闪存控制器还可以执行各种存储器管理功能,诸如但不限于,磨损均衡(分配写入以避免磨损存储器的特定块,否则该特定块将被反复地写入)和垃圾收集(在块满之后,仅将有效页面的数据移动到新的块,因而该满的块可以被擦除并再次使用)。
一个或多个非易失性存储器管芯1904可以包括任何合适的非易失性存储介质,包括NAND闪存单元和/或NOR闪存单元。存储器单元可以采取固态(例如闪速)存储器单元的形式,并可以是一次性可编程的、数次可编程的或者多次可编程的。存储器单元还可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)、或使用现在已知或以后发展的其它存储单元级技术。此外,存储器单元可以以二维或三维的方式制造。
控制器1930与一个或多个非易失性存储器管芯1904之间的接口可以是任何适合的闪存接口,诸如切换模式200、400或800。在一个实施方式中,非易失性存储器系统1902可以是基于卡的系统,诸如安全数字(SD)或微型安全数字(微型SD)卡。在可选的实施方式中,非易失性存储器系统1902可以是嵌入式存储器系统的一部分。
尽管在图19所示的示例中非易失性存储器系统1902(这里有时被称为存储模块)包括控制器1930与所述一个或多个非易失性存储器管芯1904之间的单个通道,但是这里描述的主题不限于具有单个存储器通道。例如,在一些NAND存储器系统架构(诸如图20和图21中示出的那些)中,取决于控制器能力,在控制器1930和NAND存储器器件之间可以存在2个、4个、8个或更多个NAND通道。在这里描述的实施方式的任一个中,即使在附图中示出单个通道,但是在控制器1930和一个或多个非易失性存储器管芯1904之间也可以存在多于单个通道。
图20示出包括多个非易失性存储器系统1902的存储系统2000。因而,存储系统2000可以包括与装置1970(例如主机装置)相接口以及与包括多个非易失性存储器系统1902的存储系统2002相接口的存储控制器2030。存储控制器2030与非易失性存储器系统1902之间的接口可以是总线接口,诸如串行高级技术附件(SATA)或外围组件接口快速(PCIe)接口。存储系统2000可以对应于固态驱动器(SSD),诸如在便携式计算装置诸如膝上型计算机和平板计算机中发现的。图19的一个或多个控制器1930可以包括解码器1906。可选地或另外地,存储控制器2030可以包括解码器1906。
图21是示出分级存储系统2100的方框图。分级存储系统2100包括多个存储控制器2030,每个存储控制器2030控制相应的存储系统2002。装置1970(例如一个或多个主机装置或接入装置)可以经由总线接口访问分级存储系统2100内的存储器。在一个实施方式中,总线接口可以是NVMe或以太网光纤通道(FCoE)接口。在一个实施方式中,图21所示的分级存储系统2100可以是可由多个主机计算机访问的可机架安装的大容量存储系统,诸如在需要大容量存储的数据中心或其它位置将会发现的。图21的一个或多个存储控制器2030可以包括解码器1906。
图22是更详细地示出非易失性存储器系统1902的控制器1930的示范性部件的方框图。控制器1930可以包括解码器1906。控制器1930还包括与主机装置相接口的前端部件2208、与一个或多个非易失性存储器管芯1904相接口的后端部件2210、以及执行其它功能的各种其它模块。模块可以例如采取以下形式:被设计用于与其它部件一起使用的封装功能硬件单元的形式、可由(微)处理器执行的程序代码(例如软件或固件)的一部分或通常执行相关功能的特定功能的处理电路、或与更大的系统相接口的独立的硬件或软件部件。
再次参照控制器1930,缓冲器管理器/总线控制器2214管理随机存取存储器(RAM)2216中的缓冲器并控制控制器1930的内部总线仲裁。只读存储器(ROM)2218存储系统启动代码。尽管在图22中示出为位于控制器1930内,但是在另一些实施方式中,RAM 2216和ROM2218中的一个或两者可以位于控制器1930外部。在另一些实施方式中,RAM和ROM的部分可以位于控制器1930内和控制器1930外两者。
前端部件2208包括提供与主机装置或下一级存储控制器的电气上相接口的主机接口2220和物理层接口(PHY)2222。主机接口2220的类型的选择可以取决于正在使用的存储器的类型。主机接口2220的示例包括但不限于SATA、SATA Express、SAS、光纤通道、USB、PCIe和NVMe。主机接口2220通常便于传输数据、控制信号和定时信号。
后端部件2210包括对从主机装置接收的数据进行编码的错误校正码(ECC)引擎2224,并对从非易失性存储器读取的数据进行解码和错误校正。命令定序器2226产生命令序列诸如编程和擦除命令序列以发送到一个或多个非易失性存储器管芯1904。RAID(独立驱动器冗余阵列)部件2228管理RAID奇偶校验位的产生和故障数据的恢复。RAID奇偶校验位可以用作写入到一个或多个非易失性存储器管芯1904中的数据的附加级别的完整性保护。在一些情况下,RAID部件2228可以是ECC引擎2224的部分。存储器接口2230将命令序列提供给非易失性存储器管芯1904,并从一个或多个非易失性存储器管芯1904接收状态信息。例如,存储器接口2230可以是双倍数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制层2232控制后端部件2210的整个操作。
图22所示的非易失性存储器系统1902的附加部件包括电源管理部件2212和介质管理层2238,该介质管理层2238执行一个或多个非易失性存储器管芯1904的存储器单元的损耗均衡。非易失性存储器系统1902还包括其它分立的部件2240,诸如外部电气接口、外部RAM、电阻器、电容器或可与控制器1930相接口的其它部件。在可选的实施方式中,物理层接口2222、RAID部件2228、介质管理层2238和缓冲管理/总线控制器2214中的一个或多个是从控制器1930省略的可选部件。
图23是更详细地说明非易失性存储器系统1902的一个或多个非易失性存储器管芯1904的示范性部件的方框图。一个或多个非易失性存储器管芯1904包括外围电路2341和非易失性存储器阵列2342。非易失性存储器阵列2342包括用于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何合适的非易失性存储器单元,包括以二维和/或三维配置的NAND闪存单元和/或NOR闪存单元。外围电路2341包括向控制器1930提供状态信息的状态机2352。外围电路2341还可以包括电源管理或数据锁存控制部件2354。一个或多个非易失性存储器管芯1904还包括分立的部件2340、地址解码器2348、地址解码器2350和高速缓存数据的数据高速缓存2356。图23还示出控制器1930可以包括解码器1906。
结合所描述的实施方式,一种设备,包括用于接收码字的表示(诸如表示1476)的构件(例如存储器接口132)。该设备还包括用于在时钟信号的第一周期期间(例如在时钟信号1402的第一周期1404期间)确定参数的第一值(例如参数1418的第一值1420)并且用于在时钟信号的顺序跟随第一周期的第二周期期间或者在时钟信号的顺序跟随第二周期的第三周期期间(例如在第二周期1406期间或在第三周期1408期间)确定错误定位多项式的经调节值(例如错误定位多项式1412的经调节值1424)的构件(例如错误定位多项式生成器电路1410)。该参数的第一值与用于解码码字的表示的解码操作的第一迭代(例如可对应于迭代T的第一迭代1416)相关。该参数的第一值基于错误定位多项式的与解码操作的之前迭代相关的值(例如错误定位多项式1412的值1414,其可以对应于CT)(例如基于迭代T)。错误定位多项式的经调节值与解码操作的第二迭代(例如第二迭代1422,其可对应于迭代T+1)相关并基于该参数的第一值。
该设备还可以包括用于确定与码字的表示相关的校正子多项式(例如校正子多项式1454)的构件(例如校正子生成器电路1452)。用于确定第一值的构件可以配置为进一步基于校正子多项式来确定错误定位多项式的经调节值。该设备还可以包括用于基于错误定位多项式的经调节值识别码字的表示的一个或多个错误位置(例如一个或多个错误位置1458)的构件(例如错误校正器电路1456)。
尽管这里描绘的各种部件被示出为块部件并以一般的术语描述,但是这样的部件可以包括配置为使得这样的部件能够执行这里描述的一个或多个操作的一个或多个微处理器、状态机或其它电路。例如,错误定位多项式生成器电路1410、校正子生成器电路1452或错误校正器电路1456中的一个或多个可以表示物理部件,诸如硬件控制器、状态机、逻辑电路或其它结构,以使解码器1450能够执行这里描述的一个或多个操作。
可选地或附加地,错误定位多项式生成器电路1410、校正子生成器电路1452或错误校正器电路1456中的一个或多个可以使用被编程为执行解码操作的微处理器或微控制器来实现。在特定的实施方式中,错误定位多项式生成器电路1410、校正子生成器电路1452或错误校正器电路1456中的一个或多个包括执行存储在存储器104处的指令(例如固件)的处理器。可选地或另外地,由处理器执行的可执行指令可以被存储在不是存储器104的一部分的单独存储位置处,诸如在只读存储器(ROM)处。
应当理解,这里描述的如由控制器130和控制器330执行的一个或多个操作可以在存储器装置103处执行。作为说明性的示例,参照解码器802描述的一个或多个解码操作可以在存储器装置103处执行。
数据存储装置102、302可以耦接到、附接到或嵌入在一个或多个接入装置内,诸如在装置170的壳体内。例如,根据联合电子器件工程委员会(JEDEC)固态技术协会通用闪存(UFS)配置,数据存储装置102、302可以嵌入在装置170内。为了进一步说明,数据存储装置102、302可以集成在电子装置(例如装置170)内,电子装置诸如移动电话、计算机(例如膝上型计算机、平板电脑或笔记本电脑)、音乐播放器、视频播放器、游戏装置或控制台、电子书阅读器、个人数字助理(PDA)、便携式导航装置或使用内部非易失性存储器的其它装置。
在一个或多个其它实施方案中,数据存储装置102、302可以在配置为选择性地耦接到一个或多个外部装置(诸如主机装置)的便携式装置中实现。例如,数据存储装置102、302可以从装置170移除(即,“可移除地”耦接到装置170)。作为示例,数据存储装置102、302可以根据可移动通用串行总线(USB)配置可移除地耦接到装置170。
装置170可以对应于移动电话、计算机(例如膝上型计算机、平板电脑或笔记本电脑)、音乐播放器、视频播放器、游戏装置或控制台、电子书阅读器、个人数字助理(PDA)、便携式导航装置、另一电子装置、或其组合。装置170可以经由控制器进行通信,该控制器可以使装置170能够与数据存储装置102、302进行通信。装置170可以按照JEDEC固态技术协会工业规范(诸如嵌入式多媒体卡(eMMC)规范或通用闪存(UFS)主机控制器接口规范)进行操作。作为说明性的示例,装置170可以按照一个或多个其它规范(诸如安全数字(SD)主机控制器规范)进行操作。或者,装置170可以根据另外的通信协议与数据存储装置102、302通信。在一些实施方式中,作为说明性的示例,数据存储装置102、302可以集成在网络可访问的数据存储系统(诸如企业数据系统、NAS系统或云数据存储系统)内。
在一些实施方式中,数据存储装置102、302中的一个或两者可以包括固态驱动器(SSD)。数据存储装置102、302中的一个或两者可以用作嵌入式存储驱动器(例如移动装置的嵌入式SSD驱动器)、企业存储驱动器(ESD)、云存储装置、网络附加存储(NAS)装置、或客户端存储装置,作为说明性的非限制性的示例。在一些实施方式中,数据存储装置102、302中的一个或两者可以经由网络耦接到装置170。例如,该网络可以包括数据中心存储系统网络、企业存储系统网络、存储区域网络、云存储网络、局域网(LAN)、广域网(WAN)、因特网和/或另外的网络。
为了进一步说明,数据存储装置102、302中的一个或两者可以配置为作为嵌入式存储器耦接到装置170,诸如结合嵌入式多媒体卡(JEDEC固态技术协会的商标,阿灵顿,弗吉尼亚州)的配置,作为说明性的示例。数据存储装置102、302中的一个或两者可以对应于eMMC装置。作为另一个示例,数据存储装置102、302中的一个或两者可以对应于存储卡,诸如安全数字卡、卡、miniSDTM卡(SD-3C LLC的商标,威尔明顿,特拉华州)、MultiMediaCardTM(MMC TM)卡(JEDEC固态技术协会的商标,阿灵顿,弗吉尼亚州)或(CF)卡(SanDisk公司的商标,米尔皮塔斯,加利福尼亚)。数据存储装置102、302中的一个或两者可以根据JEDEC工业规范进行操作。例如,数据存储装置102、302可以根据JEDEC eMMC规范、JEDEC通用闪存(UFS)规范、一个或多个其它规范、或其组合来操作。
存储器104可以包括电阻随机存取存储器(ReRAM)、闪存(例如NAND存储器、NOR存储器、单级单元(SLC)闪存、多级单元(MLC)闪存、分隔位线NOR(DINOR)存储器、AND存储器、高电容耦接比(HiCR)装置、非对称非接触晶体管(ACT)装置、或另一闪存)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、一次性可编程存储器(OTP)、另一种类型的存储器、或其组合。存储器104可以包括半导体存储器件。
半导体存储装置包括易失性存储装置诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)装置、非易失性存储装置诸如电阻式随机存取存储器(ReRAM)、磁阻随机存取存储器(MRAM)、电可擦除可编程只读存储器(EEPROM)、闪存(其也可以被认为是EEPROM的子集)、铁电随机存取存储器(FRAM)以及能够存储信息的其它半导体元件。每种类型的存储装置可以具有不同的配置。例如,闪存装置可以配置为NAND或NOR配置。
存储装置可以由无源和/或有源元件以任何组合形成。通过非限制性的示例,无源半导体存储器元件包括ReRAM装置元件,其在一些实施方式中包括电阻率切换存储元件诸如反熔丝、相变材料等、以及可选地包括导引元件诸如二极管等。进一步通过非限制性的示例,有源半导体存储器元件包括EEPROM和闪存装置元件,其在一些实施方式中包括包含电荷区的元件,诸如浮置栅极、导电纳米颗粒或电荷存储电介质材料。
多个存储器元件可以配置为使得它们串联连接或者使得每个元件可单独访问。通过非限制性的示例,NAND配置的闪存器件(NAND存储器)通常包含串联连接的存储器元件。NAND存储器阵列可以配置为使得该阵列由多个存储器串组成,其中存储器串是由共用单条位线并作为一组被访问的多个存储器元件组成的。可选地,存储器元件可以配置为使得每个元件都是可单独访问的,例如NOR存储器阵列。NAND和NOR存储器配置是示范性的,并且存储器元件可以被另外地配置。
位于衬底内和/或之上的半导体存储器元件可以以二维或三维地布置,诸如二维存储器结构或三维存储器结构。在二维存储器结构中,半导体存储器元件布置在单个平面或单个存储器器件层级中。通常,在二维存储器结构中,存储器元件布置在基本上平行于支撑存储器元件的衬底的主表面延伸的平面中(例如在x-z方向平面中)。衬底可以是存储器元件的层形成在其上或其中的晶片,或者它可以是在存储器元件形成之后附接到存储器元件的载体衬底。作为非限制性的示例,衬底可以包括半导体诸如硅。
存储器元件可以按有序阵列(诸如以多个行和/或列)布置在单个存储器件层级中。然而,存储器元件可以以不规则或非正交配置排布。存储器元件可以每个具有两个或多个电极或接触线,诸如位线和字线。
三维存储器阵列被布置为使得存储器元件占据多个平面或多个存储器件层级,从而形成三维(即,在x、y和z方向上,其中y方向是基本上垂直的并且x和z方向基本上平行于衬底的主表面)的结构。作为非限制性的示例,三维存储器结构可以垂直地布置为多个二维存储器器件层级的堆叠。作为另一个非限制性的示例,三维存储器阵列可以布置为多个垂直列(例如基本上垂直于衬底的主表面(即在y方向上)延伸的列),每列具有在每个列中的多个存储器元件。所述列可以以二维的配置(例如在x-z平面中)布置,产生存储器元件的三维布置,其中元件在多个垂直堆叠的存储器平面上。三维的存储器元件的其它配置也可以构成三维存储器阵列。
通过非限制性的示例,在三维NAND存储器阵列中,存储器元件可以耦接在一起以在单个水平(例如x-z)存储器件层级内形成NAND串。或者,存储器元件可以耦接在一起以形成跨过多个水平存储器件层级的垂直NAND串。可以设想其它三维的配置,其中一些NAND串包含单个存储器层级中的存储器元件,而其它串包含跨越多个存储器层级的存储器元件。三维存储器阵列也可以设计成NOR配置和ReRAM配置。
通常,在单片三维存储器阵列中,一个或多个存储器件层级形成在单个衬底之上。可选地,单片三维存储器阵列还可以具有至少部分地在单个衬底内的一个或多个存储器层。作为非限制性的示例,衬底可以包括诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器件层级的层通常形成在该阵列的下面的存储器件层级的层之上。然而,单片三维存储器阵列的相邻存储器件层级的层可以是共用的或具有存储器件层级之间的居间层。
或者,二维阵列可以单独地形成、然后被封装在一起以形成具有多层存储器的非单片存储器件。例如,非单片堆叠存储器可以通过在单独的衬底上形成存储器层级、然后将存储器层级堆叠在彼此之上来构建。在堆叠之前,衬底可以被减薄或从存储器件层级移除,但是由于存储器件层级最初形成在分开的衬底上,所以所得的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以形成在单独的芯片上、然后封装在一起以形成堆叠芯片存储装置。
对于存储器元件的操作和与存储器元件的通信通常需要相关的电路。作为非限制性的示例,存储器装置可以具有用于控制和驱动存储器元件以实现诸如编程和读取的功能的电路。此相关电路可以在与存储器元件相同的衬底上和/或在单独的衬底上。例如,用于存储器读写操作的控制器可以位于单独的控制器芯片上和/或在与存储器元件相同的衬底上。
本领域技术人员将认识到,本公开不限于所描述的二维和三维示范性结构,而是覆盖如这里描述且被本领域技术人员理解的在本公开的精神和范围内的所有相关存储器结构。这里描述的实施方式的说明旨在提供对各种实施方式的总体理解。其它实施方式可以被使用并从本公开获得,使得结构和逻辑的替换和改变可以进行而不脱离本公开的范围。本公开旨在涵盖各种实施方式的任何和所有的随后适配或变化。本领域技术人员将认识到,这样的修改在本公开的范围内。
以上公开的主题将被认为是说明性的而不是限制性的,所附权利要求书旨在涵盖落入本公开的范围内的所有这样的修改、增强和其它实施方式。因此,至法律允许的最大程度,本发明的范围由权利要求书及其等同物的最宽可允许解释来确定,而不应受之前的详细描述约束或限制。
Claims (20)
1.一种装置,包括:
接口,配置为接收码字的表示;和
解码器,耦接到所述接口并且配置为执行对所述码字的表示解码的解码操作,所述解码器包括:
错误定位多项式生成器电路,配置为在时钟信号的第一周期期间确定参数的第一值,所述参数的第一值与所述解码操作的第一迭代相关并且基于错误定位多项式的与所述解码操作的之前迭代相关的值,
其中所述错误定位多项式生成器电路还配置为在所述时钟信号的顺序跟随所述第一周期的第二周期期间或者在所述时钟信号的顺序跟随所述第二周期的第三周期期间确定所述错误定位多项式的经调节值,所述错误定位多项式的经调节值与所述解码操作的第二迭代相关并且基于所述参数的第一值。
2.根据权利要求1所述的装置,其中所述错误定位多项式生成器电路还配置为在所述第二周期期间确定所述参数的第二值,并且基于所述参数的第二值且在所述第三周期期间确定所述错误定位多项式的经调节值。
3.根据权利要求1所述的装置,其中所述错误定位多项式生成器电路还配置为在所述第二周期期间确定所述错误定位多项式的经调节值。
4.根据权利要求3所述的装置,还包括所述错误定位多项式生成器电路的三输入乘法器,所述三输入乘法器配置为在所述第二周期期间确定所述错误定位多项式的经调节值。
5.根据权利要求1所述的装置,其中所述错误定位多项式生成器电路还配置为根据使用所述第一迭代和所述第二迭代的伯利坎普-梅西(BM)技术确定所述错误定位多项式的经调节值。
6.根据权利要求1所述的装置,还包括所述解码器的校正子生成器电路,所述校正子生成器电路耦接到所述错误定位多项式生成器电路的输入并且配置为基于所述码字的表示来确定校正子多项式。
7.根据权利要求6所述的装置,其中所述错误定位多项式生成器电路还配置为在所述第一周期期间且基于所述校正子多项式来确定第一辅助参数和第二辅助参数。
8.根据权利要求7所述的装置,其中所述错误定位多项式生成器电路还配置为基于所述第一辅助参数和所述第二辅助参数来确定所述错误定位多项式的经调节值。
9.根据权利要求1所述的装置,还包括所述解码器的错误校正器电路,所述错误校正器电路耦接到所述错误定位多项式生成器电路的输出并且配置为基于所述错误定位多项式的经调节值来识别所述码字的表示的一个或多个错误位置。
10.根据权利要求1所述的装置,还包括:
控制器,包括所述接口和所述解码器;和
非易失性存储器,耦接到所述控制器。
11.一种方法,包括:
在错误校正装置处发起解码过程以对数据进行错误校正;
在时钟信号的第一周期期间,确定错误定位多项式调节参数的第一值,所述错误定位多项式调节参数的第一值与所述解码过程的第一迭代相关并且基于错误定位多项式的与所述解码过程的之前迭代相关的值;以及
在所述时钟信号的顺序跟随所述第一周期的第二周期期间或在所述时钟信号的顺序跟随所述第二周期的第三周期期间,确定所述错误定位多项式的经调节值,所述错误定位多项式的经调节值与所述解码过程的第二迭代相关并且基于所述错误定位多项式调节参数的第一值。
12.根据权利要求11所述的方法,其中所述错误定位多项式的经调节值根据包括所述第一迭代和所述第二迭代的伯利坎普-梅西(BM)技术来确定。
13.根据权利要求11所述的方法,还包括确定校正子多项式。
14.根据权利要求13所述的方法,还包括在所述第一周期期间且基于所述校正子多项式来确定第一辅助参数和第二辅助参数。
15.根据权利要求14所述的方法,其中所述错误定位多项式的经调节值进一步基于所述第一辅助参数和所述第二辅助参数来确定。
16.根据权利要求11所述的方法,还包括基于所述错误定位多项式的经调节值来识别所述数据的一个或多个错误位置。
17.根据权利要求16所述的方法,其中所述一个或多个错误位置使用钱氏搜索技术来识别。
18.一种装置,包括:
用于接收码字的表示的构件;和
用于在时钟信号的第一周期期间确定参数的第一值并且在所述时钟信号的顺序跟随所述第一周期的第二周期期间或者在所述时钟信号的顺序跟随所述第二周期的第三周期期间确定错误定位多项式的经调节值的构件,所述参数的第一值与对所述码字的表示解码的解码操作的第一迭代相关并且基于错误定位多项式的与所述解码操作的之前迭代相关的值,所述错误定位多项式的经调节值与所述解码操作的第二迭代相关并且基于所述参数的第一值。
19.根据权利要求18所述的装置,还包括用于确定与所述码字的表示相关的校正子多项式的构件,其中用于确定所述第一值的构件配置为进一步基于所述校正子多项式来确定所述错误定位多项式的经调节值。
20.根据权利要求18所述的装置,还包括用于基于所述错误定位多项式的经调节值来识别所述码字的表示的一个或多个错误位置的构件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/456,648 US10097208B2 (en) | 2015-07-14 | 2017-03-13 | Error locator polynomial decoder method |
US15/456,648 | 2017-03-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108574495A CN108574495A (zh) | 2018-09-25 |
CN108574495B true CN108574495B (zh) | 2021-07-16 |
Family
ID=63574049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810205270.4A Active CN108574495B (zh) | 2017-03-13 | 2018-03-13 | 错误定位多项式解码器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108574495B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11170870B1 (en) * | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5517509A (en) * | 1993-03-31 | 1996-05-14 | Kabushiki Kaisha Toshiba | Decoder for decoding ECC using Euclid's algorithm |
US5742620A (en) * | 1995-07-21 | 1998-04-21 | Canon Kabushiki Kaisha | GMD decoding apparatus and a method therefor |
US6571368B1 (en) * | 2000-02-02 | 2003-05-27 | Macronix International Co., Ltd. | Systolic Reed-Solomon decoder |
US7096408B1 (en) * | 2002-02-21 | 2006-08-22 | Ciena Corporation | Method and apparatus for computing the error locator polynomial in a decoder of a forward error correction (FEC) system |
CN101257312A (zh) * | 2008-03-03 | 2008-09-03 | 炬才微电子(深圳)有限公司 | 一种解码伴随式的计算方法、电路及解码器 |
CN101834616A (zh) * | 2009-03-12 | 2010-09-15 | 普然通讯技术(上海)有限公司 | 里德-索罗蒙解码器实现方法 |
CN102891689A (zh) * | 2012-09-26 | 2013-01-23 | 成都国微电子有限公司 | 一种错误位置多项式求解方法及装置 |
CN103762991A (zh) * | 2013-12-20 | 2014-04-30 | 记忆科技(深圳)有限公司 | 一种bch码译码方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6990624B2 (en) * | 2001-10-12 | 2006-01-24 | Agere Systems Inc. | High speed syndrome-based FEC encoder and decoder and system using same |
-
2018
- 2018-03-13 CN CN201810205270.4A patent/CN108574495B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5517509A (en) * | 1993-03-31 | 1996-05-14 | Kabushiki Kaisha Toshiba | Decoder for decoding ECC using Euclid's algorithm |
US5742620A (en) * | 1995-07-21 | 1998-04-21 | Canon Kabushiki Kaisha | GMD decoding apparatus and a method therefor |
US6571368B1 (en) * | 2000-02-02 | 2003-05-27 | Macronix International Co., Ltd. | Systolic Reed-Solomon decoder |
US7096408B1 (en) * | 2002-02-21 | 2006-08-22 | Ciena Corporation | Method and apparatus for computing the error locator polynomial in a decoder of a forward error correction (FEC) system |
CN101257312A (zh) * | 2008-03-03 | 2008-09-03 | 炬才微电子(深圳)有限公司 | 一种解码伴随式的计算方法、电路及解码器 |
CN101834616A (zh) * | 2009-03-12 | 2010-09-15 | 普然通讯技术(上海)有限公司 | 里德-索罗蒙解码器实现方法 |
CN102891689A (zh) * | 2012-09-26 | 2013-01-23 | 成都国微电子有限公司 | 一种错误位置多项式求解方法及装置 |
CN103762991A (zh) * | 2013-12-20 | 2014-04-30 | 记忆科技(深圳)有限公司 | 一种bch码译码方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108574495A (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10116333B2 (en) | Decoder with parallel decoding paths | |
US10218789B2 (en) | Erasure correcting coding using temporary erasure data | |
US10097208B2 (en) | Error locator polynomial decoder method | |
US9197247B2 (en) | Memory system and error correction method | |
US10461777B2 (en) | Error locator polynomial decoder and method | |
US20180032396A1 (en) | Generalized syndrome weights | |
US10120585B2 (en) | Memory system of optimal read reference voltage and operating method thereof | |
KR102277521B1 (ko) | 저장 장치 및 그것의 리드 리클레임 및 읽기 방법 | |
US9411679B2 (en) | Code modulation encoder and decoder, memory controller including them, and flash memory system | |
US9244767B1 (en) | Data storage device with in-memory parity circuitry | |
CN109428606B (zh) | 具有ldpc解码器的存储器系统及其操作方法 | |
US10985780B2 (en) | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller | |
US10572189B2 (en) | Method and decoder to adjust an error locator polynomial based on an error parity | |
US9824760B2 (en) | Systems and methods of generating shaped random bits | |
US10142419B2 (en) | Erasure correcting coding using data subsets and partial parity symbols | |
US9524794B1 (en) | Constrained data shaping | |
US11095310B2 (en) | Error correction apparatus, operation method thereof and memory system using the same | |
US10439644B2 (en) | Error locator polynomial decoder and method | |
US10379940B2 (en) | Pipeline delay detection during decoding by a data storage device | |
US9787327B2 (en) | Low-power partial-parallel chien search architecture with polynomial degree reduction | |
CN108574495B (zh) | 错误定位多项式解码器及方法 | |
US20160006458A1 (en) | Decoding techniques for low-density parity check codes | |
CN110941567B (zh) | 存储器控制器及其操作方法 | |
US11062758B2 (en) | Memory system to process multiple word line failures with limited storage and method of operating such memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |