CN104298572B - 一种纠错方法、纠错装置、主控制器和纠错系统 - Google Patents
一种纠错方法、纠错装置、主控制器和纠错系统 Download PDFInfo
- Publication number
- CN104298572B CN104298572B CN201310306315.4A CN201310306315A CN104298572B CN 104298572 B CN104298572 B CN 104298572B CN 201310306315 A CN201310306315 A CN 201310306315A CN 104298572 B CN104298572 B CN 104298572B
- Authority
- CN
- China
- Prior art keywords
- data
- error correction
- master controller
- mark
- correction device
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及数据处理领域,特别是一种纠错方法、装置和系统,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述方法包括:接收所述主控制器发送的第一数据,所述第一数据为当判断读出的返回数据集与写入的初始数据集不一致时由主控制器向纠错装置发送的数据,其中,所述第一数据包括第一标识;将接收的所述第一数据分配给一个或多个纠错模块;所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种纠错方法、装置和系统。
背景技术
固态硬盘(Solid State Disk,SSD)是一种由固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成。一般的固态硬盘通常使用FLASH芯片作为存储单元。FLASH即闪存,主要有NOR FLASH和NAND FLASH两种类型。由于NORFLASH的成本高于NAND FLASH,因此,固态硬盘SSD一般采用NAND FLASH作为存储芯片。
NAND FLASH具有一个特点,即在每次写入新数据前必须先做擦除操作以恢复到可以重新写入的状态,写入和擦除是一一对应的关系,因此衡量NAND flash性能的一个重要参数就是擦写次数。在NAND FLASH被不停擦写的过程中,有可能在读出时产生错误数据。这时,原来写入NAND FLASH的内容在重新读出时可能会和原来写入的内容不一致,也就是读出数据时产生错误数据。随着擦写次数的增多,读出数据时出错的位数也会增多。
现有技术中,SSD通常由一片FPGA芯片和若干NAND FLASH芯片组成。其中,FPGA芯片作为主控制器,NAND FLASH芯片作为存储单元,二者通过FLASH通道连接。为了实现对NAND FLASH芯片错误数据的纠正,在主控制器中设置编码电路、解码电路、纠错电路和更正电路。其中,编码电路用于产生校验数据,由解码电路利用校验数据判断读出数据是否包含错误,如果包含错误则由纠错电路发现错误位置,并由相应的更正电路对错误数据进行修改、更正。为了提高SSD的存储性能,通常会设置多个FLASH通道,每个FLASH通道均对应一个编码模块和一个解码模块。FLASH通道的数量越多,编码电路、解码电路占用的资源就越多,留给纠错电路的资源就越少。如果在主控制器中为每一个FLASH通道配置一个纠错模块,会导致大量占用主控制器的资源,导致主控制器资源不够用。因此,通常在主控制器中设置一个或数个(远小于FLASH通道的数量)纠错模块,被所有的flash通道复用。
发明人在实现本发明的过程中发现,现有技术至少存在以下问题:NAND flash在使用过程中随着擦写次数的增加,读出时出错的位数越来越多,所需的纠错时间越来越长。由于将多个解码模块、一个纠错模块均放在主控制器中,解码模块复用纠错模块,当多个解码模块均需要使用纠错模块时,只能顺序等候纠错。由于纠错电路不能及时纠正所有错误,导致产品实际性能会明显的下降,甚至可能降至标称性能的10%。
发明内容
为解决上述技术问题,本发明实施例提供了一种纠错方法、装置和系统,可以有效提高纠错效率,提升产品性能。技术方案如下:
根据本发明实施例的第一方面,公开了一种纠错方法,所述方法应用于纠错装置侧,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述方法包括:
接收所述主控制器发送的第一数据,所述第一数据为当判断读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
将接收的所述第一数据分配给一个或多个纠错模块;
所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据;其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
进一步的,所述纠错装置还包括第一缓存模块,则所述方法还包括:
在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中;
则所述将接收的所述第一数据分配给一个或多个纠错模块包括:
当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。
进一步的,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,将所述第二数据保存在第二缓存模块中,并向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
进一步的,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
进一步的,所述主控制器包括第三缓存模块,则所述判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果包括:
接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
根据本发明实施例的第二方面,公开了一种纠错方法,所述方法应用于主控制器侧,所述主控制器包括编码模块、解码模块和更正模块,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,则所述方法包括:
所述编码模块在写入原始有效数据后,产生校验数据,所述原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中;
所述解码模块对读取的返回数据集进行运算,判断读取的返回数据集与写入的初始数据集是否一致;
当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系;
获取第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
进一步的,在向所述纠错装置发送第一数据之前,所述方法还包括:
判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;
判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;
当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
进一步的,在获取第二数据之前,所述方法还包括:
接收所述纠错装置发送的第一信号;
则所述获取第二数据包括:
当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
进一步的,所述获取第二数据包括:
接收所述纠错装置发送的第二数据。
进一步的,所述主控制器包括第三缓存模块,所述方法还包括:
向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
根据本发明实施例的第三方面,公开了一种纠错装置,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述装置包括:
第一接收模块,用于接收所述主控制器发送的第一数据,所述第一数据为当判断读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
分配模块,用于将接收的所述第一数据分配给一个或多个纠错模块;
纠错模块,用于对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据;其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
进一步的,所述纠错装置还包括:
第一缓存模块,用于在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中;
则所述分配模块具体用于:
当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。
进一步的,所述装置还包括:
第二缓存模块,用于当所述纠错装置获得包含第二标识的第二数据时,保存所述第二数据;
第一发送模块,用于向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
进一步的,所述装置还包括:
第二发送模块,用于当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
进一步的,所述主控制器包括第三缓存模块,则第二发送模块还用于:
接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
根据本发明实施例的第四方面,公开了一种主控制器,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,所述主控制器包括编码模块、解码模块、第三发送模块、获取模块和更正模块,其中:
所述编码模块用于在写入原始有效数据后,产生校验数据,所述原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中;
所述解码模块用于对读取的返回数据集进行运算,判断读取的返回数据集与写入的初始数据集是否一致;
所述第三发送模块用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系;
所述获取模块用于获取第二数据;
所述更正模块用于利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
进一步的,所述第三发送模块包括:
第二判断单元,用于判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;
第三判断单元,用于判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;
发送单元,用于当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
进一步的,所述主控制器还包括:
第二接收模块,用于接收所述纠错装置发送的第一信号;
则所述获取模块具体用于:当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
进一步的,所述获取模块具体用于:
接收所述纠错装置发送的第二数据。
进一步的,所述主控制器包括第三缓存模块,所述主控制器还包括:
第四发送模块,用于向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
根据本发明实施例的第五方面,公开了一种纠错系统,所述纠错系统包括主控制器和纠错装置,所述主控制器与所述纠错装置数据连接,所述主控制器与所述纠错装置独立设置,其中:
所述主控制器用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,其中,所述第一数据包含第一标识,用于唯一标识所述第一数据;以及,获取第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据;其中,所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;所述纠错装置用于接收所述主控制器发送的第一数据,将接收的所述第一数据分配给一个或多个纠错模块;所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,其中,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系。
进一步的,所述纠错系统为固态硬盘设备SSD。
本发明实施例能够达到的有益效果为:在本发明提供的纠错方法、装置和系统中,将主控制器与纠错装置独立设置,二者数据连接,当主控制器判断读取的返回数据集与写入的初始数据集不一致时则向所述纠错装置发送第一数据,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据。所述纠错装置接收所述主控制器发送的第一数据,并将接收的所述第一数据分配给一个或多个纠错模块,以使得所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识以及错误位置信息的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据。在本发明中,由于将主控制器与纠错装置独立设置,不再占用主控制器有限的资源,并使得纠错装置可以设置更多的纠错模块用于纠错,提高了纠错的效率,并提升了产品的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的纠错方法第一实施例示意图;
图2为本发明实施例提供的纠错方法第二实施例示意图;
图3为本发明实施例提供的纠错方法第三实施例示意图;
图4为本发明实施例提供的主控制器向纠错装置写入第一数据的时序示意图;
图5为本发明实施例提供的主控制器向纠错装置读出第二数据的时序示意图;
图6为本发明实施例提供的纠错方法第四实施例示意图;
图7为本发明实施例提供的纠错装置向主控制器写入第二数据的时序示意图;
图8为本发明实施例提供的纠错系统第一实施例示意图;
图9为本发明实施例提供的主控制器第一实施例示意图;
图10为本发明实施例提供的纠错装置第一实施例示意图;
图11为本发明实施例提供的纠错系统第二实施例示意图;
图12为本发明实施例提供的纠错系统第三实施例示意图;
图13为本发明实施例提供的纠错系统第四实施例示意图;
图14为本发明实施例提供的纠错系统第五实施例示意图。
具体实施方式
本发明实施例提供了一种纠错方法、装置和系统,可以有效提高纠错效率,提升产品性能。
下面首先对本发明的思想进行阐述。
现有技术中,SSD通常由一片FPGA芯片和若干NAND FLASH芯片组成。其中,FPGA芯片作为主控制器,NAND FLASH芯片作为存储单元。为了提高SSD的存储性能,通常会设置多个FLASH通道(大于16),每个FLASH通道均对应一个编码模块和一个解码模块。FLASH通道的数量越多,编码电路、解码电路占用的资源就越多,留给纠错电路的资源就越少。如果在主控制器中为每一个FLASH通道配置一个纠错模块,会导致大量占用主控制器的资源,导致主控制器资源不够用。因此,通常在主控制器中设置一个或数个(远小于FLASH通道的数量)纠错模块,被所有的flash通道复用。
发明人在实现本发明的过程中发现,NAND flash在使用过程中随着擦写次数的增加,读出时出错的位数越来越多,所需的纠错时间越来越长。由于将多个解码模块、一个纠错模块均放在主控制器中,解码模块复用纠错模块,当多个解码模块均需要使用纠错模块时,只能顺序等候纠错。由于纠错电路不能及时纠正所有错误,导致产品实际性能会明显的下降,甚至可能降至标称性能的10%。
发明人在实现本发明的过程中发现:为了提高纠错效率,提升产品性能,一种可能的实现方式为:在SSD的主控制器中设置多个解码模块以及多个纠错模块,所述解码模块与纠错模块配对使用,具有一一对应关系。发明人发现,这种方式可以从一定程度上缓解错误较多时需要顺序排队纠错的问题,但多个纠错模块均放置在主控制器中,将占用很大电路面积。以主控制器采用FPGA为例,由于FPGA内部资源是一定的,纠错模块占用资源多了,其它电路占用资源势必减少,最终将导致不得不减少flash通道数,留出资源容纳更多的纠错模块。然而,较少的flash通道数会导致SSD产品性能降低。此外,由于将多个纠错模块设置在主控制器中,如果希望对纠错模块做设计改动,则相当于主控制器的电路进行改动,这样的改动通常成本高昂。另外,如果降低纠错模块的可纠错位数,则可以带来较小的电路面积和资源占用,但这种方式的缺点是产品寿命受到影响,在出错位数还较少时就因超出纠错能力而不能使用。
本发明提供了一种纠错方法、装置和系统,将主控制器与纠错装置独立设置,即纠错模块从主控制器中独立出来,独立成为一个新的器件,完全解决了现有技术方案的局限。本发明无需在算法级别做改进,通过使用适当的半导体工艺就可以使现有的纠错电路达到要求,避免了改进算法难度大,时间不可控的问题。本发明将纠错装置独立出来,减少了主控制器中的资源占用,避免了为给纠错电路留资源而被迫减少flash通道数的尴尬。此外,本发明把纠错功能用专用的器件实现,这个专用器件的电路资源可以不受主控制器资源限制,预先做充分规划,从而为实现较多的纠错位数提供了可能,而较多的纠错位数可以为产品提供更长的寿命,并有效提高纠错效率,提升产品性能。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参见图1,本发明实施例提供的纠错方法第一实施例示意图。
本发明第一实施例提供的方法应用于纠错装置侧,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接。具体的,纠错装置与主控制器可以通过总线连接。本领域技术人员可以理解的是,纠错装置与主控制还可以通过无线连接实现数据传输。其中,所述纠错装置与主控制器独立设置,所述主控制器可以采用FPGA芯片,也可以采用ASIC芯片,所述纠错装置可以采用FPGA芯片,也可以采用ASIC芯片。所述主控制器和所述纠错装置可以是物理上完全独立的器件。也可以物理上集成在一起,例如集成在固态硬盘设备SSD中,所述固态硬盘设备SSD包括主控制器和纠错装置。其中,主控制器包括编码模块、解码模块、更正模块。进一步的,主控制器和存储器件相连,存储器件具体可以为FLASH芯片,用于存储数据。
所述方法包括:
S101,接收所述主控制器发送的第一数据。
其中,所述第一数据为当判断读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据。所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据。
当主控制器判断读取的返回数据集与写入的初始数据集不一致时,则向所述纠错装置发送第一数据,所述纠错装置用于接收所述第一数据。在本发明第一实施例中,主控制器包括编码模块、解码模块、更正模块。其中,所述编码模块用于原始有效数据写入后,产生校验数据。具体实现时,编码模块可以由循环移位寄存器(LFSR)构成,用于将原始有效数据顺序地输入编码模块,当输入完成时,编码模块将产生校验数据。其中,原始有效数据和校验数据的集合称为初始数据集。原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中。解码模块用于对读出的返回数据集进行运算,判断读出的返回数据集与写入的初始数据集是否一致。具体地,写入存储器件的数据包括原始有效数据以及校验数据,即初始数据集。从存储器件读出的数据包括有效数据和校验数据,即返回数据集。具体实现时,解码模块对返回数据集(读出的有效数据和校验数据)做运算来决定此次读出的数据是否包含错误,如果发现包含错误,则由主控制器将第一数据发送给纠错装置。解码模块可以由循环移位寄存器(LFSR)组成,但与编码模块使用的LFSR的长度和结构有所不同。具体实现时,将读出的原始有效数据和校验数据顺序地输入解码模块,当输入完成时,解码模块将产生一些中间计算结果,称为伴随式。这些伴随式是后续纠错模块运算的输入数据。在本发明中,所述伴随式称为第一数据。在一种具体实现方式中,解码模块对整个返回数据集做整体运算来确定读出数据时是否有错,具体通过判断解码模块的计算结果即伴随式是否为0来确定读出数据时是否出错。当伴随式有一位为1时,则读取数据发生错误。这时,主控制器将包含伴随式的第一数据发送给纠错装置,由纠错装置进一步确定错误位置。具体实现时,主控制器为第一数据分配唯一的第一标识,用于唯一标识第一数据以及原始有效数据。具体实现时,第一标识可以根据返回数据集在存储器件中的地址生成,也可以通过其他方式生成,但需要唯一标识第一数据和原始有效数据。主控制器保存第一标识,并将包含第一标识的第一数据发送给纠错装置。在后续的实现步骤中,主控制器的更正模块则需要利用第一标识与第二标识的对应关系,将用于纠错的第二数据和与它对应的原始有效数据进行匹配,以利用第二数据对原始有效数据进行更正。
S102,将接收的所述第一数据分配给一个或多个纠错模块。
在本发明第一实施例中,纠错装置还可以进一步包括第一缓存模块,在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中。
则所述将接收的所述第一数据分配给一个或多个纠错模块包括:当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。其中,当第一数据包括一组数据时,将第一数据分配给一个纠错模块。当第一数据包括多组数据时,将第一数据分别分配给多个纠错模块,其中,纠错模块的个数可以与第一数据的个数/组数相匹配,即一组数据对应一个纠错模块,也可以是一组或多组数据对应一个纠错模块,即一个纠错模块被一个或数个第一数据组复用。较佳地,由于本发明将纠错器件从主控制器中独立出来,在成本允许的情况下,可以在纠错器件中设置尽可能多的纠错模块,以使得纠错模块能够与发送至纠错器件进行纠错的第一数据的数量匹配,以提高纠错的效率,提升产品性能。
S103,所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据。其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
在本发明第一实施例中,纠错装置包括多个纠错模块,所述纠错模块用于对第一数据进行运算,获得包含错误数据位置信息的第二数据。其中,第二数据还可以包括第二标识,所述第二标识与所述第一标识具有一一对应关系。
具体实现时,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,将所述第二数据保存在第二缓存模块中,并向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
具体实现时,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。其中,判断主控制器的状态是否符合第一预设条件,获得第一判断结果包括:接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
在本发明第一实施例中,将主控制器与纠错装置独立设置,二者数据连接,当主控制器判断读取的数据与写入的数据不一致时则向所述纠错装置发送第一数据,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据。所述纠错装置接收所述主控制器发送的第一数据,并将接收的所述第一数据分配给纠错模块,以使得所述纠错模块对所述第一数据进行运算,获得包含第二标识以及错误位置信息的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据。在本发明中,由于将主控制器与纠错装置独立设置,不再占用主控制器有限的资源,并使得纠错装置可以设置更多的纠错模块用于纠错,提高了纠错的效率,并提升了产品的性能。
图2为本发明实施例提供的纠错方法第二实施例示意图。
本发明第二实施例提供的纠错方法应用于主控制器侧,所述主控制器包括编码模块、解码模块和更正模块,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,则所述方法包括:
S201,所述编码模块在原始有效数据写入后,产生校验数据。
具体实现时,编码模块可以由循环移位寄存器(LFSR)构成,用于将原始有效数据顺序地输入编码模块,当输入完成时,编码模块将产生校验数据。其中,原始有效数据和校验数据的集合称为初始数据集。原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中。
S202,所述解码模块对读取的返回数据集进行运算,判断读取的返回数据集数据与写入的初始数据集是否一致。其中,所述返回数据集包括读出的有效数据和校验数据。
具体实现时,解码模块用于对读出的返回数据集做运算来确定此次读出的数据是否包含错误,如果发现包含错误,则由主控制器将第一数据发送给纠错装置。解码模块可以由循环移位寄存器(LFSR)组成,但与编码模块使用的LFSR的长度和结构有所不同。具体实现时,将读出的数据(即读出的原始有效数据和校验数据顺序地输入解码模块,当输入完成时,解码模块将产生一些中间计算结果,称为伴随式。这些伴随式是后续纠错模块运算的输入数据。在本发明中,所述伴随式称为第一数据。在一种具体实现方式中,解码模块对整个返回数据集做整体运算来确定读出数据时是否有错,具体通过判断解码模块的计算结果即伴随式是否为0来确定读出数据时是否出错。当伴随式有一位为1时,则读取数据发生错误。这时,主控制器将包含伴随式的第一数据发送给纠错装置,由纠错装置进一步确定错误位置。具体实现时,主控制器为第一数据分配唯一的第一标识,用于唯一标识第一数据以及原始有效数据。具体实现时,第一标识可以根据解码模块读取数据的地址生成,也可以通过其他方式生成,但需要唯一标识第一数据和原始有效数据。主控制器保存第一标识,并将包含第一标识的第一数据发送给纠错装置。
S203,当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系。
在本发明一种优选实现方式中,在向所述纠错装置发送第一数据之前,所述方法还包括:判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
其中,主控制器为第一数据分配唯一的第一标识,用于唯一标识第一数据以及原始有效数据。具体实现时,第一标识可以根据解码模块读取数据的地址生成,也可以通过其他方式生成,但需要唯一标识第一数据和原始有效数据。主控制器保存第一标识,并将包含第一标识的第一数据发送给纠错装置。在后续的实现步骤中,主控制器的更正模块则需要利用第一标识与第二标识的对应关系,将用于纠错的第二数据与它对应的原始有效数据进行匹配,以利用第二数据对原始有效数据进行更正。
S204,获取第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
具体实现时,在获取第二数据之前,所述方法还包括:接收所述纠错装置发送的第一信号;则所述获取第二数据包括:当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
具体实现时,本发明获取第二数据的另外一种可能的实现方式为:接收所述纠错装置发送的第二数据。具体实现时,主控制器向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
在本发明中,主控制器的更正电路用于根据纠错装置发送的第二数据,以及第一标识与第二标识的对应关系确定与第二数据对应的原始有效数据,并利用第二数据更正原始有效数据。
下面以几个具体的实现方式对本发明进行详细地说明。
图3为本发明实施例提供的纠错方法第三实施例示意图。
S301,主控制器的编码模块在原始有效数据写入后,产生校验数据。
具体实现时,将原始有效数据顺序地输入主控制器的编码模块,当输入完成时,编码模块将产生校验数据。其中,原始有效数据和校验数据的集合称为初始数据集。原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中。
S302,主控制器的解码模块对读回的有效数据和读回的校验数据进行运算,判断读回的返回数据集与写入的初始数据集是否一致,生成第一数据。
具体实现时,将读取的返回数据集即读取的有效数据和校验数据顺序地输入解码模块,当输入完成时,解码模块将产生一些中间计算结果,称为伴随式(对应第一数据)。同时主控制器为这些伴随式分配一个唯一的标签(即第一标识),这个标签也是第一数据即中间结果的一部分,第一标识用于唯一标识第一数据和初始数据集(原始有效数据和校验数据)。
S303,主控制器将包含第一标识的第一数据发送给纠错装置。
在本发明第三实施例中,主控制器包括多个解码模块。所述主控制器还包含第一数据排序电路,所述第一数据排序电路包含一个队列,队列的深度不小于主控制器中解码模块的个数。所述第一数据排序电路的请求队列用于按照时间顺序排列各个解码模块发送的所述第一数据。例如,当某个解码模块(假设是解码模块A)的中间结果(即第一数据)产生后,则向第一数据排序电路发送请求,解码模块A的请求将被排在队列的最后。如果同时有多个解码模块向队列发送请求,则按照解码模块的编号依次顺序将这些请求排到队列中。
在主控制器向纠错装置发送第一数据之前,所述方法还包括:判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。具体实现时,当主控制器判断第一数据排序电路中的请求队列不为空且纠错装置的第一缓存模块存在空闲空间时,则第一数据发送电路就从队列的头部取出一个发送请求,根据这个请求从相应的解码模块读取第一数据,将第一数据发送给纠错装置。
具体实现时,主控制器和纠错装置可以通过总线连接,主控制器可以根据写数据线向纠错装置发送第一数据。具体信号定义如下:
信号定义表一
参见图4为本发明实施例提供的主控制器向纠错装置写入第一数据的时序示意图。下面将结合信号定义表一以及图4对主控制器向所述纠错装置发送第一数据的过程进行说明。
具体实现时,主控制器根据下列条件决定是否向纠错装置写入第一数据:
(1)主控制器中的第一数据排序电路中的请求队列不为空。
(2)纠错装置的第一缓存不满,即第一缓存模块存在空闲空间(FULL信号为低电平)。
当上述条件都成立则主控制器将按照图4中的时序将第一数据即中间结果写入纠错装置。具体实现时,下面对图4进行说明。写时钟信号WCLK为写时序提供同步机制,所谓同步机制是指主控制器和纠错装置都在WCLK的上升沿判断对方信号的逻辑电平并在上升沿之后驱动各自的信号到一个新的逻辑电平,此逻辑电平在上升沿之后的一个时钟周期内应保持不变。本领域技术人员可以理解的是,现实电路中电平的翻转和到达期望电压值并不是像时序图中所画的会立刻完成,现实中的电平翻转通常需要一个非常短暂的时间,本时序图并未刻意画出这段非常短暂的翻转时间。
当纠错装置的FULL信号为高时,表示纠错装置的第一缓存(用于存储第一数据)已满,主控制器不能向纠错装置写数据,WEN信号必须保持在低电平。如上图中箭头1所表示的因果关系。
当纠错装置的FULL信号为低时,表示纠错装置的第一缓存未满,主控制器可以向纠错装置写数据,如果此时主控制器中没有第一数据要发送,则WEN信号应该保持在低电平。如果此时主控制器中有第一数据要发送,则第一数据发送电路负责将WEN信号输出变为高电平,并在同一个时钟周期内将第一数据的一部分驱动到WDATA线上。
当纠错装置在WCLK的上升沿判断到WEN信号为高时,第一数据缓存会将此时WDATA线上的信号状态存在自己的电路中,这样就完成了本时钟周期内的写数据传递。
WEN可以在连续的WCLK周期内被驱动为高电平,也可以是断续地被驱动为高电平,第一数据在每个WEN为高的WCLK周期内被传送一部分。
当一组第一数据被全部传送完成后,主控制器将WEN连续的驱动为低电平。当WEN为低时WDATA线上的状态不重要,可以是任意电平。
S304,纠错装置接收所述主控制器发送的第一数据。
如前面提到的,当纠错装置在WCLK的上升沿判断到WEN信号为高时,第一数据缓存会将此时WDATA线上的信号状态存在自己的电路中,这样就完成了本时钟周期内的写数据传递。
S305,纠错装置将接收的所述第一数据分配给一个或多个纠错模块。
纠错装置中的第一缓存模块会存储接收到的第一数据。纠错装置还可以包括第一数据分配电路,第一数据分配电路(即分配模块)包含一个队列,这个队列记录了当前所有空闲的纠错模块,刚空闲下来的纠错模块排在队列的最后。第一数据分配电路一旦发现第一数据缓存不空且它的队列中有空闲的纠错模块,则从缓存中取出最早收到的一组第一数据并分配给队列中第一个空闲的纠错模块。
S306,纠错装置的纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据。
当纠错模块收到第一数据后就开始计算,经过计算得到第二数据。第二数据可以包括以下信息:(1)本次运算的最终结果即第二数据是否有效,如果无效我们称为纠错失败,也就是错误个数超出了纠错模块的能力,无法纠错。(2)错误个数。如果没出纠错失败,那么错误个数是几个。(3)错误数据的位置信息。对每个错误给出错误位置,具体实现时,错误位置就是一个数字。这个数字表明返回数据集(有效数据+校验数据)中哪个比特错了,比如数字是5就是说比特5出错了。(4)第二标识,第二标识用于唯一标识第二数据。其中,第二标识与第一标识具有一一对应关系。具体实现时,第二标识与第一标识可以是相同的标识。例如,纠错模块可以将接收到的第一数据中的第一标识同样作为唯一标识第二数据的第二标识。
具体实现时,在本发明实施例中,纠错装置进行纠错所采用的纠错算法(ErrorCorrection or Correcting Code,ECC)可以包括BCH算法。其中,BCH码取自Bose、Ray-Chaudhuri与Hocquenghem的缩写,是用于校正多个随机错误模式的多级、循环、错误校正、变长数字编码。BCH码使用有限域上的域论与多项式。为了检测错误可以构建一个检测多项式,这样接收端就可以检测是否有错误发生。其中,纠错模块用于由解码模块提供的伴随式(即第一数据)经过计算得到错误位置。这个过程通常由两个部分构成,第一部分是用伴随式构造错误位置多项式,第二部分是计算错误位置多项式的根,这些根就是最终想要的错误位置信息。本领域技术人员可以理解的是,以上仅为示例性说明,本发明纠错装置进行纠错所采用的纠错算法还可以是LDPC(低密度奇偶校验码,Low Density Parity CheckCode)、RS码(Reed-solomon codes,是一种低速率的前向纠错的信道编码,对由校正过采样数据所产生的多项式有效)等,本发明对此不进行限制。
S307,纠错装置将所述第二数据保存在第二缓存模块中,并向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空。
具体实现时,纠错模块得到第二数据后发送请求给第二数据排序电路。第二数据排序电路包含一个队列,队列的深度不小于纠错装置中纠错模块的个数。新的纠错模块的请求被排在队列的最后,如果同时有多个纠错模块发送请求给第二数据排序电路,则按照纠错模块的编号依次顺序将请求排入队列中。当第二数据排序电路一旦发现队列中有新的请求且第二数据缓存未满时,第二数据排序电路从队列的头部取出一个请求,并从该请求对应的纠错模块读取第二数据并写入第二缓存模块。
当第二缓存模块不为空时,纠错装置向主控制器发送第一信号。
S308,主控制器接收第一信号,当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
如图5所示,为本发明实施例提供的主控制器向纠错装置读出第二数据的时序示意图。
主控制器根据下列条件判读是否从纠错装置读取第二数据:
(1)纠错装置的第二数据缓存不空(EMPTY为低)
(2)主控制器的更正模块处在空闲状态。
当以上条件都满足时主控制器将启动上图中的时序从纠错装置中读取第二数据。具体实现时,读时钟信号RCLK为上图的读时序提供同步机制,所谓同步机制是指主控制器和纠错装置都在RCLK的上升沿判断对方信号的逻辑电平并在上升沿之后驱动各自的信号到一个新的逻辑电平,此逻辑电平在上升沿之后的一个时钟周期内应保持不变,本领域技术人员可以理解的是,现实电路中电平的翻转和到达期望电压值并不是像时序图中所画的会立刻完成,现实中的电平翻转通常需要一个非常短暂的时间,本时序图并未刻意画出这段非常短暂的翻转时间。
当纠错装置的EMPTY信号为高时,表示纠错装置的第二数据缓存已空,主控制器不能再从纠错装置读数据,REN信号必须保持在低电平。如上图中箭头2所表示的因果关系。
当纠错装置的EMPTY信号为低时,表示纠错装置的第二数据缓存中还有数据,主控制器可以从纠错装置中读数据,如果此时主控制器中的更正电路处于空闲状态,则第二数据读取电路负责将REN信号输出变为高电平,纠错装置将在下一个RCLK的上升沿采样到REN信号的高电平,并在接下来的一个时钟周期内将第二数据的一部分驱动到RDATA线上。
主控制器将在它驱动REN为高的下一个时钟周期采样RDATA线的状态。REN可以在连续的RCLK周期内被驱动为高电平,也可以是断续地被驱动为高电平,经过多个REN为高的时钟周期,就完成了第二数据从纠错装置到主控制器的传递。
当一组第二数据被全部读取完成后,主控制器有权决定暂时将REN驱动为低电平以处理刚收到的第二数据还是继续驱动REN为高电平以读取下一组第二数据(前提是EMPTY信号为低)。
S309,主控制器利用所述第二标识与所述第一标识的对应关系确定与第二数据对应的原始有效数据,并利用所述第二数据更正所述原始有效数据。
具体实现时,当主控制器判断纠错装置的第二数据缓存不为空且自己的更正模块处在空闲状态,则由第二数据读取电路从纠错装置中读出一组第二数据,第二数据读取电路根据第二数据中的第二标识找到对应的初始数据集(即原始有效数据和校验数据)并将初始数据集的索引和第二数据(最终结果)中的纠错状态信息(包括纠错运算是否成功,出错数量,出错位置信息)传给更正模块。更正模块根据这些信息对初始数据集进行更正。具体的,根据纠错器件的错误位置信息可以确定出错的是有效数据还是校验数据,如果是有效数据读出时出错,则需要确定有效数据的位置并对其进行更正。如果是校验数据出错,由于其不是有效数据,可以对其进行修改,也可以直接丢弃。
在本发明一个实施例中,对主控制器和纠错装置之间传输的数据结构进行了定义。本领域技术人员可以理解的是,以下仅为示例型说明,并不视为对本发明的限制。本领域技术人员在不付出创造学习劳动下获取的其他实现方式,均属于本发明的保护范围。
具体实现时,WDATA信号线上传输的数据以帧(frame)为单位,称为第一数据帧,一帧数据是为了传递一组第一数据而定义的数据集。一帧数据由若干个字构成,每个字是32比特,与WDATA数据线的宽度相同。主控制器按照写数据时序将一帧数据中的每个字依次写入纠错装置的第一数据缓存,一个时钟周期只能写一个字。一个第一数据帧中的字按照前后顺序如下排列:一个帧头字,一个第一标识字,若干个第一数据字,一个帧尾字。其中,帧头字和帧尾字使用固定的数据图样,此图样一定不会在第一标识字和第一数据字中出现。当纠错装置从第一缓存读出数据时,帧头和帧尾将被识别出来并用于确定帧的开始和结束。
RDATA信号线上传输的数据以帧(frame)为单位,称为第二数据帧,一帧数据是为了传递一组第二数据而定义的数据集。一帧数据由若干个字构成,每个字是32比特,与RDATA数据线的宽度相同。主控制器按照读数据时序将每一帧数据中的每个字依次从第二缓存读出。一个第二数据帧中的字按照前后顺序如下排列:一个帧头字,一个帧长度字,一个第二标识字,若干个第二数据字,一个帧尾字。其中帧头和帧尾字使用固定的数据图样,此图样一定不会在帧长度字,第二标识字和第二数据字中出现。当主控制器从纠错装置的第二缓存读出数据时,帧头和帧尾将被识别出来并用于确定帧的开始和结束。
图6为本发明实施例提供的纠错方法第四实施例示意图。
S601,主控制器的编码模块在写入原始有效数据后,产生校验数据。
具体实现时,将原始有效数据顺序地输入主控制器的编码模块,当输入完成时,编码模块将产生校验数据。其中,原始有效数据和校验数据的集合称为初始数据集。原始有效数据和校验数据作为初始数据集由主控制器写入存储器件。
S602,主控制器的解码模块对读取的返回数据集进行运算,判断读回的返回数据集与写入的初始数据集是否一致,生成第一数据。
具体实现时,将读取的返回数据集即读取的有效数据和校验数据顺序地输入解码模块,当输入完成时,解码模块将产生一些中间计算结果,称为伴随式(对应第一数据)。同时主控制器为这些伴随式分配一个唯一的标签(即第一标识),这个标签也是第一数据的一部分,第一标识用于唯一标识第一数据和初始数据集(原始有效数据和校验数据)。
S603,主控制器将包含第一标识的第一数据发送给纠错装置。
在本发明第三实施例中,主控制器包括多个解码模块。所述主控制器还包含第一数据排序电路,所述第一数据排序电路包含一个队列,队列的深度不小于主控制器中解码模块的个数。所述第一数据排序电路的请求队列用于按照时间顺序排列各个解码模块发送的所述第一数据。例如,当某个解码模块(假设是解码模块A)的中间结果(即第一数据)产生后,则向第一数据排序电路发送请求,解码模块A的请求将被排在队列的最后。如果同时有多个解码模块向队列发送请求,则按照解码模块的编号依次顺序将这些请求排到队列中。
在主控制器向纠错装置发送第一数据之前,所述方法还包括:判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。具体实现时,当主控制器判断第一数据排序电路中的请求队列不为空且纠错装置的第一缓存模块存在空闲空间时,则第一数据发送电路就从队列的头部取出一个发送请求,根据这个请求从相应的解码模块读取第一数据,将第一数据发送给纠错装置。
具体实现时,主控制器和纠错装置可以通过总线连接,主控制器可以根据写数据线向纠错装置发送第一数据。具体信号定义如下:
信号定义表二
参见图4为本发明实施例提供的主控制器向纠错装置写入第一数据的时序示意图。下面将结合信号定义表二以及图4对主控制器向所述纠错装置发送第一数据的过程进行说明。
具体实现时,主控制器根据下列条件决定是否向纠错装置写入第一数据:
(1)主控制器中的第一数据排序电路中的请求队列不为空。
(2)纠错装置的第一缓存不满,即第一缓存模块存在空闲空间(FULL信号为低电平)。
当上述条件都成立则主控制器将按照图4中的时序将第一数据即中间结果写入纠错装置。具体实现时,下面对图4进行说明。写时钟信号WCLK为写时序提供同步机制,所谓同步机制是指主控制器和纠错装置都在WCLK的上升沿判断对方信号的逻辑电平并在上升沿之后驱动各自的信号到一个新的逻辑电平,此逻辑电平在上升沿之后的一个时钟周期内应保持不变。本领域技术人员可以理解的是,现实电路中电平的翻转和到达期望电压值并不是像时序图中所画的会立刻完成,现实中的电平翻转通常需要一个非常短暂的时间,本时序图并未刻意画出这段非常短暂的翻转时间。
当纠错装置的FULL信号为高时,表示纠错装置的第一缓存(用于存储第一数据)已满,主控制器不能向纠错装置写数据,WEN信号必须保持在低电平。如上图中箭头1所表示的因果关系。
当纠错装置的FULL信号为低时,表示纠错装置的第一缓存未满,主控制器可以向纠错装置写数据,如果此时主控制器中没有第一数据要发送,则WEN信号应该保持在低电平。如果此时主控制器中有第一数据要发送,则第一数据发送电路负责将WEN信号输出变为高电平,并在同一个时钟周期内将第一数据的一部分驱动到WDATA线上。
当纠错装置在WCLK的上升沿判断到WEN信号为高时,第一数据缓存会将此时WDATA线上的信号状态存在自己的电路中,这样就完成了本时钟周期内的写数据传递。
WEN可以在连续的WCLK周期内被驱动为高电平,也可以是断续地被驱动为高电平,第一数据在每个WEN为高的WCLK周期内被传送一部分。
当一组第一数据被全部传送完成后,主控制器将WEN连续的驱动为低电平。当WEN为低时WDATA线上的状态不重要,可以是任意电平。
S604,纠错装置接收所述主控制器发送的第一数据。
如前面提到的,当纠错装置在WCLK的上升沿判断到WEN信号为高时,第一数据缓存会将此时WDATA线上的信号状态存在自己的电路中,这样就完成了本时钟周期内的写数据传递。
S605,纠错装置将接收的所述第一数据分配给一个或多个纠错模块。
纠错装置中的第一缓存模块会存储接收到的第一数据。纠错装置还可以包括第一数据分配电路,第一数据分配电路(即分配模块)包含一个队列,这个队列记录了当前所有空闲的纠错模块,刚空闲下来的纠错模块排在队列的最后。第一数据分配电路一旦发现第一数据缓存不空且它的队列中有空闲的纠错模块,则从缓存中取出最早收到的一组第一数据并分配给队列中第一个空闲的纠错模块。
S606,纠错装置的一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据。
当纠错模块收到第一数据后就开始计算,经过计算得到第二数据。第二数据可以包括以下信息:(1)本次运算的最终结果即第二数据是否有效,如果无效我们称为纠错失败,也就是错误个数超出了纠错模块的能力,无法纠错。(2)错误个数。如果没出纠错失败,那么错误个数是几个。(3)错误数据的位置信息。对每个错误给出错误位置,具体实现时,错误位置就是一个数字。这个数字表明返回数据集(有效数据+校验数据)中哪个比特错了,比如数字是5就是说比特5出错了。(4)第二标识,第二标识用于唯一标识第二数据。其中,第二标识与第一标识具有一一对应关系。具体实现时,第二标识与第一标识可以是相同的标识。例如,纠错模块可以将接收到的第一数据中的第一标识同样作为唯一标识第二数据的第二标识。
S607,纠错装置判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
具体实现时,当主控制器的第三缓存模块存在空闲空间时,则向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间。纠错装置接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
下面进行详细地说明。纠错模块得到第二数据后发送请求给第二数据排序电路。第二数据排序电路包含一个队列,队列的深度不小于纠错装置中纠错模块的个数。新的纠错模块的请求被排在队列的最后,如果同时有多个纠错模块发送请求给第二数据排序电路,则按照纠错模块的编号依次顺序将请求排入队列中。
当第二数据排序电路一旦判断队列中有新的请求且主控制器可以接收第二数据时,第二数据排序电路从队列的头部取出一个请求,并从该请求对应的纠错模块读取第二数据并写入主控制器。其中,第二数据排序电路判断主控制器可以接收第二数据的一个条件为:接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件,即主控制器可以接收第二数据。
图7为本发明实施例提供的纠错装置向主控制器写入第二数据的时序示意图。下面结合图7进行说明。
纠错装置根据下列条件决定是否向主控制器写入第二数据:
(1)纠错装置中的第二数据排序电路中的请求队列不为空。
(2)主控制器中的第三缓存模块不满(FULL2信号为低电平)。
当上述条件都成立则纠错装置将按照图7中的时序将第二数据写入主控制器。写时钟信号WCLK2为图7的写时序提供同步机制,所谓同步机制是指主控制器和纠错装置都在WCLK2的上升沿判断对方信号的逻辑电平并在上升沿之后驱动各自的信号到一个新的逻辑电平,此逻辑电平在上升沿之后的一个时钟周期内应保持不变,本领域技术人员可以理解的是,现实电路中电平的翻转和到达期望电压值并不是像时序图中所画的会立刻完成,现实中的电平翻转通常需要一个非常短暂的时间,本时序图并未刻意画出这段非常短暂的翻转时间。
当主控制器的FULL2信号为高时,表示主控制器的第三缓存(用于存储第二数据)已满,纠错装置不能向主控制器写数据,WEN2信号必须保持在低电平。如上图中箭头2所表示的因果关系。
当主控制器的FULL2信号为低时,表示主控制器的第三缓存未满,纠错装置可以向主控制器写数据,如果此时纠错装置中没有第二数据要发送,则WEN2信号应该保持在低电平。如果此时纠错装置中有第二数据要发送,则第二数据发送电路负责将WEN2信号输出变为高电平,并在同一个WCLK2的时钟周期内将第二数据的一部分驱动到WDATA2线上。
当主控制器在WCLK2的上升沿判断到WEN2信号为高时,第三缓存会将此时WDATA2线上的信号状态存在自己的电路中,这样就完成了本时钟周期内的写数据传递。
WEN2可以在连续的WCLK2周期内被驱动为高电平,也可以是断续地被驱动为高电平,第二数据在每个WEN2为高的WCLK2周期内被传送一部分。
当一组第二数据被全部传送完成后,纠错装置将WEN2连续的驱动为低电平。当WEN2为低时WDATA2线上的状态不重要,可以是任意电平。
S608,主控制器接收纠错装置发送的第二数据。
S609,主控制器利用所述第二标识与所述第一标识的对应关系确定与第二数据对应的原始有效数据,并利用所述第二数据更正所述原始有效数据。
具体实现时,当主控制器接收到纠错装置发送的第二数据,将所述第二数据保存在第三缓存模块中。第二数据读取电路判断第三缓存模块不为空且更正模块处于空闲状态时,则从第三缓存模块中读出一组第二数据,第二数据读取电路根据第二数据中的第二标识找到对应的初始数据集(即原始有效数据和校验数据)并将初始数据集的索引和第二数据(最终结果)中的纠错状态信息(包括纠错运算是否成功,出错数量,出错位置信息)传给更正模块。更正模块根据这些信息对初始数据集做更正。
在本发明一个实施例中,对主控制器和纠错装置之间传输的数据结构进行了定义。本领域技术人员可以理解的是,以下仅为示例型说明,并不视为对本发明的限制。本领域技术人员在不付出创造性劳动下获取的其他实现方式,均属于本发明的保护范围。
具体实现时,WDATA信号线上传输的数据以帧(frame)为单位,称为第一数据帧,一帧数据是为了传递一组第一数据而定义的数据集。一帧数据由若干个字构成,每个字是32比特,与WDATA数据线的宽度相同。主控制器按照写数据时序将一帧数据中的每个字依次写入纠错装置的第一数据缓存,一个时钟周期只能写一个字。一个第一数据帧中的字按照前后顺序如下排列:一个帧头字,一个第一标识字,若干个第一数据字,一个帧尾字。其中,帧头字和帧尾字使用固定的数据图样,此图样一定不会在第一标识字和第一数据字中出现。当纠错装置从第一缓存读出数据时,帧头和帧尾将被识别出来并用于确定帧的开始和结束。
WDATA2信号线上传输的数据以帧(frame)为单位,称为第二数据帧,一帧数据是为了传递一组第二数据而定义的数据集。一帧数据由若干个字构成,每个字是32比特,与WDATA2数据线的宽度相同。纠错装置按照写第二数据时序将每一帧数据中的每个字依次从纠错装置写入主控制器的第三缓存中。一个第二数据帧中的字按照前后顺序如下排列:一个帧头字,一个帧长度字,一个第二标识字,若干个第二数据字,一个帧尾字。其中帧头和帧尾字使用固定的数据图样,此图样一定不会在帧长度字,第二标识字和第二数据字中出现。主控制器的第二数据读取电路从第三数据缓存模块读出数据时,帧头和帧尾将被识别出来并用于确定帧的开始和结束。
图8为本发明实施例提供的纠错系统第一实施例示意图。
一种纠错系统,所述纠错系统包括主控制器900和纠错装置1000,所述主控制器900与所述纠错装置1000数据连接,所述主控制器900与所述纠错装置100独立设置,其中:
所述主控制器900用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置1000发送第一数据,其中,所述第一数据包含第一标识,用于唯一标识所述第一数据;以及,获取第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
所述纠错装置1000用于接收所述主控制器900发送的第一数据,将接收的所述第一数据分配给一个或多个纠错模块;所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,其中,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系。
优选的,所述纠错系统为固态硬盘设备SSD。
图9为本发明实施例提供的主控制器第一实施例示意图。
一种主控制器900,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,所述主控制器包括编码模块901、解码模块902、第三发送模块903、获取模块904和更正模块905,其中:
所述编码模块901用于在原始有效数据写入后,产生校验数据;其中,所述原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中;
所述解码模块902用于对读取的返回数据集进行运算,判断读取的返回数据集与写入的初始数据集是否一致;其中,所述返回数据集包括读出的有效数据和校验数据;
所述第三发送模块903用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系;
所述获取模块904用于获取第二数据;
所述更正模块905用于利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
进一步的,所述第三发送模块包括:
第二判断单元,用于判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;
第三判断单元,用于判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;
发送单元,用于当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
进一步的,所述装置还包括:
第二接收模块,用于接收所述纠错装置发送的第一信号;
则所述获取模块具体用于:当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
进一步的,所述获取模块具体用于:
接收所述纠错装置发送的第二数据。
进一步的,所述主控制器包括第三缓存模块,所述装置还包括:
第四发送模块,用于向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
参见,图10为本发明实施例提供的纠错装置第一实施例示意图。
一种纠错装置1000,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述装置包括:
第一接收模块1001,用于接收所述主控制器发送的第一数据,所述第一数据为当读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
分配模块1002,用于将接收的所述第一数据分配给一个或多个纠错模块;
纠错模块1003,用于对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据;其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
进一步的,所述纠错装置还包括:
第一缓存模块,用于在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中;
则所述分配模块具体用于:
当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。
进一步的,所述装置还包括:
第二缓存模块,用于当所述纠错装置获得包含第二标识的第二数据时,保存所述第二数据;
第一发送模块,用于向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
进一步的,所述装置还包括:
第二发送模块,用于当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
进一步的,所述主控制器包括第三缓存模块,则第二发送模块还用于:
接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
参见图11,为本发明实施例提供的纠错系统第二实施例示意图。在这一实施例中,纠错系统具体为固态硬盘SSD,其包含主控制器、多个FLASH器件(即存储器件)以及纠错器件。其中主控制器采用FPGA芯片或者ASIC芯片。其中纠错器件采用FPGA芯片或者ASIC芯片。其中,主控制器与纠错器件直接连接。其中,SSD的接口可以是PCIE接口、SATA接口或者SAS接口。
参见图12为本发明实施例提供的纠错系统第三实施例示意图。在这一实施例中,纠错系统具体为固态硬盘SSD,其包含主控制器、多个FLASH器件(即存储器件)以及纠错器件。其中主控制器采用FPGA芯片或者ASIC芯片。其中纠错器件采用FPGA芯片或者ASIC芯片。其中,主控制器与纠错器件间接连接,主控制器与纠错器件连接输入输出装置FIFO。其中,SSD的接口可以是PCIE接口、SATA接口或者SAS接口。
参见图13为本发明实施例提供的纠错系统第四实施例示意图。其为本发明方法第三实施例对应的装置示意图。其中,纠错装置可独立设置,其包含的模块也可以如图13所示。其中,纠错系统包括主控制器和纠错器件,其中主控制器和纠错器件独立设置。主控制器包括m个解码模块、第一数据排序电路、第一数据发送电路、第二数据读取电路以及更正电路。所述纠错器件包括第一缓存模块、第一数据分发电路、第二缓存模块、第二数据排序电路以及n个纠错模块。
参见图14为本发明实施例提供的纠错系统第五实施例示意图。其为本发明方法第四实施例对应的装置示意图。其中,纠错装置可独立设置,其包含的模块也可以如图14所示。其中,纠错系统包括主控制器和纠错器件,其中主控制器和纠错器件独立设置。主控制器包括m个解码模块、第一数据排序电路、第一数据发送电路、第三缓存模块、第二数据读取电路以及更正电路。所述纠错器件包括第一缓存模块、第一数据分发电路、第二数据排序电路、第二数据发送电路以及n个纠错模块。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (22)
1.一种纠错方法,其特征在于,所述方法应用于纠错装置侧,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述方法包括:
接收所述主控制器发送的第一数据,所述第一数据为当判断读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
将接收的所述第一数据分配给一个或多个纠错模块;
所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据;其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
2.根据权利要求1所述的方法,其特征在于,所述纠错装置还包括第一缓存模块,则所述方法还包括:
在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中;
则所述将接收的所述第一数据分配给一个或多个纠错模块包括:
当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,将所述第二数据保存在第二缓存模块中,并向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
5.根据权利要求4所述的方法,其特征在于,所述主控制器包括第三缓存模块,则所述判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果包括:
接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
6.一种纠错方法,其特征在于,所述方法应用于主控制器侧,所述主控制器包括编码模块、解码模块和更正模块,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,则所述方法包括:
所述编码模块在写入原始有效数据后,产生校验数据,所述原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中;
所述解码模块对读取的返回数据集进行运算,判断读取的返回数据集与写入的初始数据集是否一致;其中,所述返回数据集包括读出的有效数据和校验数据;
当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系;
获取第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
7.根据权利要求6所述的方法,其特征在于,在向所述纠错装置发送第一数据之前,所述方法还包括:
判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;
判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;
当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
8.根据权利要求6所述的方法,其特征在于,在获取第二数据之前,所述方法还包括:
接收所述纠错装置发送的第一信号;
则所述获取第二数据包括:
当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
9.根据权利要求6所述的方法,其特征在于,所述获取第二数据包括:
接收所述纠错装置发送的第二数据。
10.根据权利要求6或9所述的方法,其特征在于,所述主控制器包括第三缓存模块,所述方法还包括:
向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
11.一种纠错装置,其特征在于,所述纠错装置包括多个纠错模块,所述纠错装置与主控制器数据连接,所述纠错装置与所述主控制器独立设置,则所述装置包括:
第一接收模块,用于接收所述主控制器发送的第一数据,所述第一数据为当判断读取的返回数据集与写入的初始数据集不一致时由所述主控制器向所述纠错装置发送的数据,其中,所述第一数据包括第一标识,所述第一标识用于唯一标识所述第一数据;所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
分配模块,用于将接收的所述第一数据分配给一个或多个纠错模块;
纠错模块,用于对所述第一数据进行运算,获得包含第二标识的第二数据,以使得所述主控制器在获得所述第二数据时利用第二标识与第一标识的对应关系确定原始有效数据并利用所述第二数据包含的错误数据位置信息更正所述原始有效数据;其中,所述第二数据至少包括错误数据的位置信息,所述第二标识与所述第一标识具有一一对应关系。
12.根据权利要求11所述的装置,其特征在于,所述纠错装置还包括:
第一缓存模块,用于在接收所述主控制器发送的第一数据后,将第一数据按照时间顺序保存在所述第一缓存模块中;
则所述分配模块具体用于:
当判断所述纠错装置有至少一个纠错模块空闲时,将所述第一缓存模块中最早收到的第一数据分配至空闲的纠错模块。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二缓存模块,用于当所述纠错装置获得包含第二标识的第二数据时,保存所述第二数据;
第一发送模块,用于向所述主控制器发送第一信号,所述第一信号用于表明所述第二缓存模块不为空,以使得所述主控制器在接收到第一信号时,从所述纠错装置读取所述第二数据。
14.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二发送模块,用于当所述纠错装置获得包含第二标识的第二数据时,判断所述主控制器的状态是否符合第一预设条件,获得第一判断结果;当所述第一判断结果表明所述主控制器的状态符合第一预设条件时,则向所述主控制器发送所述第二数据。
15.根据权利要求14所述的装置,其特征在于,所述主控制器包括第三缓存模块,则第二发送模块还用于:
接收主控制器发送的第二信号,当所述第二信号表明所述第三缓存模块存在空闲空间时,则确定所述主控制器的状态符合第一预设条件。
16.一种主控制器,其特征在于,所述主控制器与纠错装置数据连接,所述主控制器与所述纠错装置独立设置,所述主控制器包括编码模块、解码模块、第三发送模块、获取模块和更正模块,其中:
所述编码模块用于在写入原始有效数据后,产生校验数据;其中,所述原始有效数据和所述校验数据作为初始数据集由主控制器写入存储器件中;
所述解码模块用于对读取的返回数据集进行运算,判断读取的返回数据集与写入的初始数据集是否一致;其中,所述返回数据集包括读出的有效数据和校验数据;
所述第三发送模块用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,以使得所述纠错装置利用接收的所述第一数据获得包含第二标识的第二数据;其中,所述第一数据包含第一标识,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系;
所述获取模块用于获取第二数据;
所述更正模块用于利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据。
17.根据权利要求16所述的主控制器,其特征在于,所述第三发送模块包括:
第二判断单元,用于判断所述主控制器的第一数据排序电路中的请求队列是否不为空,获得第二判断结果;其中,所述第一数据排序电路的请求队列用于按照时间顺序排列所述第一数据;
第三判断单元,用于判断所述纠错装置的第一缓存模块是否存在空闲空间,获得第三判断结果;
发送单元,用于当所述第二判断结果和所述第三判断结果均为是时,向所述纠错装置发送第一数据。
18.根据权利要求16所述的主控制器,其特征在于,所述主控制器还包括:
第二接收模块,用于接收所述纠错装置发送的第一信号;
则所述获取模块具体用于:当判断所述第一信号表明所述纠错装置的第二缓存模块不为空时,从所述第二缓存模块读取第二数据。
19.根据权利要求16所述的主控制器,其特征在于,所述获取模块具体用于:
接收所述纠错装置发送的第二数据。
20.根据权利要求16或19所述的主控制器,其特征在于,所述主控制器包括第三缓存模块,所述主控制器还包括:
第四发送模块,用于向所述纠错装置发送第二信号,所述第二信号用于表明所述主控制器的第三缓存模块存在空闲空间,以使得所述纠错装置在接收到第二信号时向所述主控制器发送第二数据。
21.一种纠错系统,其特征在于,所述纠错系统包括主控制器和纠错装置,所述主控制器与所述纠错装置数据连接,所述主控制器与所述纠错装置独立设置,其中:
所述主控制器用于当判断读取的返回数据集与写入的初始数据集不一致时,向所述纠错装置发送第一数据,其中,所述第一数据包含第一标识,用于唯一标识所述第一数据;以及,获取包含第二标识的第二数据,利用所述第二标识与所述第一标识的对应关系确定原始有效数据并利用所述第二数据更正所述原始有效数据;其中,所述初始数据集包括写入的原始有效数据和校验数据;所述返回数据集包括读出的有效数据和校验数据;
所述纠错装置用于接收所述主控制器发送的第一数据,将接收的所述第一数据分配给一个或多个纠错模块;所述一个或多个纠错模块对所述第一数据进行运算,获得包含第二标识的第二数据,其中,所述第二数据包含第二标识以及错误数据的位置信息,所述第一标识与所述第二标识具有一一对应关系。
22.根据权利要求21所述的系统,其特征在于,所述纠错系统为固态硬盘设备SSD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310306315.4A CN104298572B (zh) | 2013-07-19 | 2013-07-19 | 一种纠错方法、纠错装置、主控制器和纠错系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310306315.4A CN104298572B (zh) | 2013-07-19 | 2013-07-19 | 一种纠错方法、纠错装置、主控制器和纠错系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104298572A CN104298572A (zh) | 2015-01-21 |
CN104298572B true CN104298572B (zh) | 2018-01-26 |
Family
ID=52318308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310306315.4A Active CN104298572B (zh) | 2013-07-19 | 2013-07-19 | 一种纠错方法、纠错装置、主控制器和纠错系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298572B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108118B (zh) * | 2016-11-24 | 2021-02-26 | 深圳大心电子科技有限公司 | 数据写入方法以及存储控制器 |
CN108665939B (zh) * | 2017-03-31 | 2021-01-05 | 厦门旌存半导体技术有限公司 | 为存储器提供ecc的方法与装置 |
KR102499794B1 (ko) * | 2018-05-21 | 2023-02-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN109783411B (zh) * | 2018-12-20 | 2022-05-17 | 成都旋极历通信息技术有限公司 | 一种基于fpga的flash阵列控制方法及控制器 |
CN111858129B (zh) * | 2019-04-28 | 2024-02-23 | 深信服科技股份有限公司 | 一种纠删码读请求处理方法、系统、设备及计算机介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848070B1 (en) * | 1999-11-24 | 2005-01-25 | Intel Corporation | Error correcting code scheme |
CN1577292A (zh) * | 2003-07-28 | 2005-02-09 | 深圳市朗科科技有限公司 | 存储控制芯片及数据存储控制方法 |
CN101794623A (zh) * | 2009-06-01 | 2010-08-04 | 深圳市朗科科技股份有限公司 | 存储设备的纠错装置及方法 |
CN102323913A (zh) * | 2011-09-01 | 2012-01-18 | 记忆科技(深圳)有限公司 | 固态硬盘的数据读出方法及系统 |
CN102543209A (zh) * | 2010-12-31 | 2012-07-04 | 深圳市朗科科技股份有限公司 | 多通道闪存控制器的纠错装置、方法及多通道闪存控制器 |
-
2013
- 2013-07-19 CN CN201310306315.4A patent/CN104298572B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848070B1 (en) * | 1999-11-24 | 2005-01-25 | Intel Corporation | Error correcting code scheme |
CN1577292A (zh) * | 2003-07-28 | 2005-02-09 | 深圳市朗科科技有限公司 | 存储控制芯片及数据存储控制方法 |
CN101794623A (zh) * | 2009-06-01 | 2010-08-04 | 深圳市朗科科技股份有限公司 | 存储设备的纠错装置及方法 |
CN102543209A (zh) * | 2010-12-31 | 2012-07-04 | 深圳市朗科科技股份有限公司 | 多通道闪存控制器的纠错装置、方法及多通道闪存控制器 |
CN102323913A (zh) * | 2011-09-01 | 2012-01-18 | 记忆科技(深圳)有限公司 | 固态硬盘的数据读出方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104298572A (zh) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298572B (zh) | 一种纠错方法、纠错装置、主控制器和纠错系统 | |
CN109716661A (zh) | 用于存储装置的阶梯码编码及解码的设备及方法 | |
US7810013B2 (en) | Memory device that reflects back error detection signals | |
CN103427846B (zh) | 动态可重构高速串行总线中错误控制方法 | |
CN107403646A (zh) | 闪存装置及闪存存储管理方法 | |
CN104699577B (zh) | 用于在分布式码字存储系统中定位故障管芯的计数器 | |
CN101573694A (zh) | 用于小数据结构的ecc保护的方法、系统和装置 | |
CN105553485B (zh) | 基于fpga的bch编解码装置及其编解码方法 | |
US12013756B2 (en) | Method and memory system for writing data to dram submodules based on the data traffic demand | |
EP3731096A1 (en) | Technologies for providing error correction for row direction and column direction in a cross point memory | |
CN114664366B (zh) | 存储器装置以及其读取方法 | |
CN101395583B (zh) | 具有存储着包含附加数据在内的页面的存储矩阵的电子电路 | |
CN102609221A (zh) | 一种硬件raid5/6存储系统的架构及数据处理方法 | |
CN104268253A (zh) | 一种基于查找表配置位统计的部分三模冗余方法 | |
CN107807788A (zh) | 多平面闪存的数据组织方法与装置 | |
CN103034559B (zh) | 基于rdma架构设计的pq检验模块及检验方法 | |
CN105161137B (zh) | 一种MLC架构中Nand Flash控制器电路实现装置 | |
KR20230049537A (ko) | 머신러닝 오류 정정 코드 컨트롤러 | |
CN108845890A (zh) | 基于Nand Flash存储器阵列的数据校验方法 | |
CN101848001A (zh) | Flash控制器中BCH编译码的数据长度扩展方法 | |
CN112134572B (zh) | Ldpc译码方法、ldpc译码器、芯片以及设备 | |
CN104461764A (zh) | 一种内置crc校验码的fpga配置文件生成方法 | |
CN104615380B (zh) | 一种基于分组编码的磁盘阵列构建方法 | |
CN102594334A (zh) | 一种流水线型fpga回读帧ecc电路 | |
TWI503833B (zh) | 針對快閃儲存系統以bch引擎進行檢測與修正錯誤的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |