CN116302670A - 编解码方法、编解码器、芯片、硬盘、通讯系统 - Google Patents
编解码方法、编解码器、芯片、硬盘、通讯系统 Download PDFInfo
- Publication number
- CN116302670A CN116302670A CN202310063826.1A CN202310063826A CN116302670A CN 116302670 A CN116302670 A CN 116302670A CN 202310063826 A CN202310063826 A CN 202310063826A CN 116302670 A CN116302670 A CN 116302670A
- Authority
- CN
- China
- Prior art keywords
- error correction
- data
- length
- correction code
- target 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.)
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
本申请实施例提供了一种编解码方法、编解码器、芯片、硬盘、通讯系统,纠错编码方法,包括:获取目标数据,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据;根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,其中,至少部分所述纠错码的长度不同;通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种编解码方法、编解码器、芯片、硬盘、通讯系统。
背景技术
纠错码(error correcting code,ECC)是一种保证数据有效性的重要手段,经常用于数据传输、数据存储等领域。以数据存储领域为例,一般情况下,会将数据块进行数据对齐(例如4k对齐)后,进行数据压缩,由于数据内容的不可预知性,导致压缩后的数据长度不一。而纠错码针对的是定长的数据,因此,需要将长度不一的数据进行拼接,得到长度符合纠错码要求的数据,再通过纠错码进行编码,得到纠错码码字。
而将长度不一的数据进行拼接得到长度符合纠错码要求的数据,可能会导致某一个数据位于两个不同的纠错码码字中,这会导致存在读放大,并且会降低数据获取过程的复杂度。
有鉴于此,现有技术中亟需解决的技术问题是如何降低在纠错编码过程中由于数据拼接导致的读放大。
发明内容
有鉴于此,本申请实施例提供一种编码或者解码方案,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种纠错编码方法,包括:获取目标数据,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据;根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,其中,至少部分所述纠错码的长度不同;通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
根据本申请实施例的第二方面,提供了一种编码器,包括:数据获取模块、纠错码编码器,所述数据获取模块,用于获取目标数据,根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据,至少部分所述纠错码的长度不同;所述纠错码编码器,用于通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
根据本申请实施例的第三方面,提供了一种纠错解码方法,包括:获得至少一个纠错码码字;根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码,其中,至少部分所述纠错码的长度不同;按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据。
根据本申请实施例的第四方面,提供了一种解码器,包括:码字获取模块,用于获得至少一个纠错码码字;纠错解码器,用于根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码,按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据,其中,至少部分所述纠错码的长度不同。
根据本申请实施例的第五方面,提供了一种存储控制芯片,包括:如上所述的编码器或者如上所述解码器。
根据本申请实施例的第六方面,提供了一种固态硬盘,包括:上述的存储控制芯片;至少一个闪存芯片,所述闪存芯片包括至少一个存储块,每个所述存储块包括多个存储页,每个所述存储页包括多个存储单元。
根据本申请实施例的第七方面,提供了一种通讯系统,包括发送端和接收端,所述发送端包括上述的编码器,所述接收端包括上述的解码器。
根据本申请实施例提供的校验码生成方案,通过设置多个纠错码且至少部分纠错码的长度不同,并根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,从而针对目标数据进行灵活编码,适用于数据长度不定的数据块,从而避免了首尾连接、切分等操作,实现了每个压缩后的目标数据的独立纠错码保护,并隔离了不同目标数据块的串扰,减少了读放大,方便进行元数据管理,且方便进行数据回收,可以及时释放存储空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为固态硬盘的示意性框图;
图2为现有的数据纠错编码示意图;
图3为本申请实施例的一种纠错编码方法的步骤流程图;
图4为本申请实施例的一种多个纠错码的示意图;
图5为本申请实施例的一种目标数据匹配与纠错码匹配的示意图;
图6为本申请实施例的另一种目标数据匹配与纠错码匹配的示意图;
图7为本申请实施例的一种编码器的结构框图;
图8为本申请实施例的另一种编码器的结构框图;
图9为本申请实施例的一种纠错解码方法的步骤流程图;
图10为本申请实施例的一种解码器的结构框图;
图11为本申请实施例的另一种解码器的结构框图;
图12为本申请实施例的一种通讯系统的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
首先,对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
与非型闪存:与非型闪存(NAND flash memory)又被称为NAND(NOT-AND)闪存,是一种非易失闪存。NAND闪存利用穿隧注入写入及穿隧释放擦除,地址线和数据线复用。隧穿注入写入是通过量子力学的隧穿效应实现电子注入向存储写入数据的过程,通过电压引起的电子穿隧释放是清除存储中的数据的过程。
存储单元:存储单元是构成NAND闪存的元件,NAND闪存包括多个存储块(block),每个存储块包括多个存储页(page)。
固态硬盘
图1示出一个固态硬盘100的示意性框图。固态硬盘(Solid State Disk或SolidState Drive,SSD)又称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。根据存储介质的不同,固态硬盘可以分为基于闪存(flash)的固态硬盘和基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)的固态硬盘,本申请实施例中的固态硬盘100是指基于NAND闪存的固态硬盘。
固态硬盘相对于传统的机械硬盘有诸多优势,其中最大的优势是存储数据的安全性。例如,在使用过程中晃动固态硬盘也无需担心损坏存储的数据,在使用过程中突然断电也不会造成固态硬盘中的数据丢失。基于此,固态硬盘广泛应用于各种复杂的工作环境,比如高可用的服务器,同时固态硬盘也是个人用户理想的存储设备。
如图1所示,固态硬盘100可以包括多个闪存芯片10,每个闪存芯片10可以包括多个存储块11,每个存储块11可以包括多个存储页12,固态硬盘100中的数据存储在闪存芯片10中的存储单元13中。比如,闪存芯片10包括1024个存储块11,每个存储块11包括64个存储页12,每个存储页12包括217个存储单元13,每个存储单元13可以存储1bit的数据,即每个存储单元13可以存储二进制数0或1。在本申请实施例中闪存芯片10是指NAND闪存。
固态硬盘100中除了用于存储数据的闪存芯片10之外,还可以包括存储控制芯片20和缓存芯片30。
存储控制芯片20用于控制固态硬盘的读写操作,并且存储控制芯片20中写入对应的软件程序。
具体地,存储控制芯片20中可以包括编码器和/或解码器。
进行数据写入时,存储控制芯片中的编码器可以对数据进行数据对齐并压缩,之后将压缩后的数据进行切分以及拼接后使得数据长度为纠错码对应的长度,并将数据发送至编码器。编码器可以将定长的数据进行纠错编码得到纠错码码字,并将纠错码码字存储至存储页12中。
进行数据读取时,存储控制芯片中的解码器可以从存储页12中读取数据,并输入至解码器中,通过解码器进行纠错解码,得到解码后的数据。
然而,参见图2,进行数据写入时,一般情况下先进行数据对齐并压缩,图2示出了对齐到固定大小的4个数据。
进行对齐后的数据可以输入至压缩引擎中进行数据压缩。由于数据的类型不可预期,导致压缩后的数据的长度不可预期。示例地,参见图2,四个数据对齐的原始块1、2、3、4压缩后得到的四个压缩块1、2、3、4的长度不同。
在进行数据写入时,需要将四个压缩块首尾连接并达到一定长度后,按照纠错码编码长度切割,得到符合纠错码所要求的数据长度的数据,具体可以例如图2所示的“压缩块1+压缩块2A”、“压缩块2B+压缩块3A”、“压缩块3B+压缩块4”三个数据,这三个数据可以通过纠错码编码解码器进行纠错编码后得到纠错码码文,并存储至NAND闪存的存储页12中。
但是,上述存储方式容易导致下述问题:
1.当一个压缩后数据块横跨多个纠错码码字时,元数据管理的工作量不可忽略,需要记录多个信息以寻址,例如,压缩块3需要记录两个纠错码码字的地址。
2.当读取一个原始数据块时,该数据块的部分或全部可能与其他数据块同在一个纠错码码字,从而造成读放大,即不需要的数据也需要一同读取并完成纠错码解码。例如,若希望获得原始块3的数据,需要对“压缩块2B+压缩块3A”、“压缩块3B+压缩块4”这两个对应的纠错码码文,并进行纠错解码。但是这个过程中还读取出了压缩块2B以及压缩块4,造成了读放大。
3.当一个纠错码码字中包含已删除或已更新的部分或全部压缩数据块(即无效数据)时,若该纠错码码字中此外仍含有效数据,则该码字中的无效数据不可删除,直到完成有效数据的可靠回收。尽管在诸如机械硬盘(Hard Disk Drive,HDD)等支持同位置覆盖写的介质中,也无法即时释放存储空间,造成了空间浪费和资源开销。例如,若原始块3已删除,但由于存储原始块3的两个纠错码码文中一个存在压缩块2B,另一个存在压缩块4,导致码字中的无效数据压缩块3A、压缩块3B不可删除,直至原始块2、4也被删除。
纠错编码
为了解决或者缓解上述问题,本申请实施例提供了一种纠错编码方法,如图3所示,其包括:
S301、获取目标数据,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据。
本实施例中,目标数据为任意数据,只要是通过原始数据进行数据对齐后再进行数据压缩得到的数据即可,类似的,原始数据可以为任意种类的数据。示例地,本实施例中的目标数据可以为待写入至存储区域的数据,也可以为待发送的数据,本实施例对此不进行限定。
S302、根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码。
至少部分所述纠错码的长度不同。
本实施例中,可以包括多个纠错码,部分或者全部纠错码的长度可以不相同。示例地,若存在10个纠错码,则10个纠错码的长度可以不同;或者,十个纠错码中的2个纠错码的长度相同,剩余纠错码的长度不同;或者,10个纠错码中的两组纠错码长度相同,每组中可以包括多个,剩余纠错码的长度不同。
本实施例中,由于数据内容存在不可预期性,使得压缩后的目标数据的长度也不可预期,但是压缩后的数据长度位于一定范围内。因此,本实施例中,可以预先设置多个纠错码,至少部分纠错码的长度不同,且多个纠错码的长度可以按照压缩后的数据长度对应的范围进行设置。
可选地,本实施例中,所述多个纠错码的长度以所述目标数据的最小长度为最小值并阶梯递增。目标数据的最小长度可以为进行数据对齐后的原始数据进行数据压缩后的最小长度,本实施例中,对齐后的数据可以为4KB,则最小长度可以为256B;若按照其他大小进行数据对齐与数据压缩,最小长度可适应更改,本实施例对此不进行限定。
本实施例中,以所述目标数据的最小长度为最小值阶梯递增,是指在最小长度上每次增加固定长度或者每次增加固定倍数。例如,纠错码的长度可以为L+an,L为最小长度,a为常数,a可以等于L也可以不等于,a还可以为L的整数倍,n为非负整数,n为0时对应最小长度;或者,纠错码的长度可以为bn*L,L为最小长度,b为任意大于1的常数,n为非负整数,n为0时对应最小长度。
通过使得纠错码的长度以目标数据的最小长度为最小值并阶梯递增,可以使得纠错码阶梯式地分布在压缩后的数据长度对应的数据范围内,在根据目标数据的数据长度确定对应的纠错码时,可以按照长度排序就近选择对应的纠错码,减少进行纠错编码过程中使用的纠错码的数量,进而减少纠错编码得到的用于进行校验的校验位。
可选地,本实施例中,如图4所示,多个纠错码的长度可以分别为2n*L,其中,L为所述目标数据的最小长度,n为非负整数。本实施例中,若对齐后的数据可以为4KB,则最小长度可以为256B,由于目标数据的数据长度不会大于4KB,因此,纠错码的长度也无需大于4KB,则n的最大值为4,使得长度对大为24*256B=4096B。由此,纠错码的长度分别为20*256B=256B;21*256B=512B;22*256B=1024B;23*256B=2048B;24*256B=4096B。
在获得目标数据后,可以根据目标数据的数据长度,从多个纠错码中选择出目标数据对应的纠错码,一个目标数据可以对应一个或者多个纠错码,由此,无需将目标数据进行首尾拼接并分割。
可选地,本实施例中,在获得目标数据后,目标数据可能与纠错码的长度不匹配,则可以先将所述目标数据的数据长度补齐,使得所述目标数据的长度等于最小长度的倍数。
具体地,本实施例中,由于多个纠错码的长度可以分别为2n*L,则可以确定最小长度L的整数倍能够等于多个纠错码的长度的和或者等于一个纠错码的长度,因此,本实施例中可以将目标数据的数据长度补齐至L的整数倍。具体地,可以直接用零向量进行补齐,以保证补齐的数据不会增加额外的计算量。
进行补齐后可以再将所述目标数据的数据长度与多个长度不同的纠错码进行长度匹配。
若存在长度等于所述数据长度的纠错码,则将所述纠错码确定为所述目标数据对应的纠错码。具体地,进行补齐后的目标数据的数据长度若与某一个纠错码的长度相等,则可以直接将该纠错码确定为目标数据对应的纠错码。例如图5所示,一个4KB原始数据块压缩后的目标数据的数据长度为495B,则可以将其补齐为512B,并将512B纠错码B确定为其对应的纠错码。当存在长度与目标数据的长度相同的多个纠错码时,可以根据纠错效果从多个纠错码中选择纠错效果较优的一个作为目标数据的纠错码。
具体地,本实施例中,若不存在长度等于所述数据长度的纠错码,则表明数据长度等于多个纠错码的长度的和,则可以根据多个所述纠错码的长度,将所述目标数据拆分为至少两个与所述纠错码长度相同的数据分块,并将与所述数据分块长度相同的纠错码确定为所述数据分块对应的纠错码,以确定出所述目标数据对应的至少两个纠错码,其中,所述数据长度等于所述至少两个纠错码长度的和。例如图6所示,一个4KB原始数据块压缩后的目标数据的数据长度为695B,则可以将其补齐为756B,并按照纠错码长度,将目标数据分割为256B的数据分块和512B的数据分块,并将256B纠错码A作为256B的数据分块1对应的纠错码,将512B纠错码B确定为512B的数据分块2对应的纠错码,数据长度756B=256B+512B。当存在长度与一个数据分块的长度相同的多个纠错码时,可以根据纠错效果从多个纠错码中选择纠错效果较优的一个作为该数据分块对应的纠错码。
S303、通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
本实施例中,具体对目标数据进行纠错编码的方法可参考相关技术,在此不再赘述。
示例地,纠错码可以对应有校验矩阵,校验矩阵的长度即为纠错码的长度,可以通过对目标数据与校验矩阵相乘,得到用于进行校验的冗余数据,冗余数据可以作为校验位增加至目标数据中,由于冗余数据的长度固定,使得增加冗余数据的目标数据的长度也固定。
具体地,若将目标数据拆分为了多个数据分块,并将与所述数据分块长度相同的纠错码确定为所述数据分块对应的纠错码,则步骤S303可以包括:通过与所述数据分块长度相同的纠错码,对所述数据分块分别进行纠错编码,得到至少两个所述纠错码码字。
或者,若将所述纠错码确定为与所述目标数据长度相同的纠错码,则步骤S303可以包括:通过与目标数据长度相等的纠错码,对目标数据进行纠错编码,得到一个纠错码码字。本实施例提供的方案,通过设置多个长度不同的纠错码,并根据所述目标数据的数据长度,从多个长度不同的纠错码中确定出所述目标数据对应的至少一个纠错码,从而针对目标数据进行灵活编码,适用于数据长度不定的数据块,从而避免了首尾连接、切分等操作,实现了每个压缩后的目标数据的独立纠错码保护,并隔离了不同目标数据块的串扰,减少了读放大,方便进行元数据管理,且方便进行数据回收,可以及时释放存储空间。
编码器
参见图7,示出了本实施例提供的一种编码器的结构示意图,如图所示,其包括:数据获取模块701、纠错码编码器702。
所述数据获取模块,用于获取目标数据,根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据,至少部分所述纠错码的长度不同;
所述纠错码编码器,用于通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
可选地,本实施例中,多个纠错码的长度以所述目标数据的最小长度为最小值并阶梯递增。
可选地,本实施例中,多个纠错码的长度分别为2n*L,其中,L为所述目标数据的最小长度,n为非负整数。
可选地,本实施例中,所述数据获取模块具体为数据分割模块,用于将所述目标数据的数据长度补齐,使得所述目标数据的长度等于所述最小长度的倍数;以及将所述目标数据的数据长度与多个纠错码进行长度匹配;若存在长度等于所述数据长度的纠错码,则将所述纠错码确定为所述目标数据对应的一个纠错码。
可选地,本实施例中,所述数据分割模块还用于若不存在长度等于所述数据长度的纠错码,则根据多个所述纠错码的长度,将所述目标数据拆分为至少两个与所述纠错码长度相同的数据分块,并将与所述数据分块长度相同的纠错码确定为所述数据分块对应的纠错码,以确定出所述目标数据对应的至少两个纠错码,其中,所述数据长度等于所述至少两个纠错码长度的和;所述纠错码编码器,还用于从预设纠错码库中获得与所述数据分块长度相同的纠错码,通过获得的所述纠错码对所述数据分块分别进行纠错编码,得到至少两个所述纠错码码字。
可选地,本实施例中,多个所述纠错码各自对应的冗余校验矩阵的基矩阵大小相同,所述纠错码编码器用于以所述基矩阵的长度为单位并行进行纠错编码。由此,可以通过一个纠错编码器实现多个纠错码长度的对应编码,类似的,也可以由解码器以所述基矩阵的长度为单位进行并行解码,使得一套编码硬件和解码硬件即可灵活适配不同长度的纠错码。
具体地,一般情况下,冗余校验矩阵可以分割为两种子矩阵,一种是非零矩阵,一种是全零矩阵,且非零矩阵一般是单位矩阵或者由单位矩阵变换得到,则可以将非零矩阵称为基矩阵。
示例地,冗余校验矩阵H可以为:
其具有八个子矩阵,其中的第一行第四个子矩阵为全零矩阵,剩余的7个为非零矩阵。
基矩阵的长度为4,纠错码编码器可以以所述基矩阵的长度为单位并行进行纠错编码,即以4为长度单位进行并行纠错编码。当然,上述仅以基矩阵长度为4作为示例进行举例说明,在其他实现方式中,基矩阵的长度可以与目标数据的最小长度相等,即当数据对齐为4KB时,目标数据的最小长度可以为256,则基矩阵的长度也可以为256,即长度最小的纠错码即为基矩阵。
参见图8,示出了一种编码器的结构示意图,如图所示,其包括:数据分割模块、纠错编码器、预设纠错码库、码字拼接模块。
如图8所示,已压缩的目标数据可以输入至数据分割模块,通过数据分割模块将所述目标数据的数据长度补齐至目标数据的最小长度的倍数。
若数据长度等于某一个纠错码的长度,说明数据长度等于所述至少两个纠错码长度的和,则数据分割模块输出目标数据,以将所述纠错码确定为所述目标数据对应的一个纠错码;若数据长度不等于任一个纠错码的长度,则按照预设的多个纠错码的长度进行数据分割,将所述目标数据拆分为至少两个与所述纠错码长度相同的数据分块,得到至少两个数据分块,数据分块的数据长度与一个纠错码的长度相等。
纠错码编码器可以预先输入配置信息,配置信息用于指示对应于数据分块的长度,所选择的当前纠错码的参数设置,例如纠错码的长度是多少、是否需要shorten等用于编码的设置。
纠错编码器可以根据数据分割模块输出的数据(目标数据或者分割得到的数据分块)的数据长度,从预设纠错码库中获得对应的纠错码,并进行纠错编码,输出冗余数据。
冗余数据可以作为校验位,增加至数据分割模块输出的数据中(目标数据或者数据分块)得到纠错码码字,纠错码码字可以被输入至码字拼接模块中,从而可以将一个或者多个纠错码码字进行拼接,得到与一个NADA的内存页大小相同的数据,并可以存储至NADA的内存页中。
需要说明的是,由于编码方法的细节在上述实施例中已进行了详细说明,具体过程可参见前述编码方法实施例中的描述,在此不再进行赘述。
纠错解码
本申请另一实施例还提供一种纠错解码方法,如图9所示,其包括:
S901、获得至少一个纠错码码字;
本实施例中,纠错码码字可以为从存储区域中读取出的,也可以为接收到的,本实施例对此不进行限定。
S902、根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码。
至少部分所述纠错码的长度不同。
本实施例中,由于在编码过程中,使用的多个纠错码中至少部分纠错码的长度不同,使得得到的纠错码码字的长度有多个,因此,根据纠错码码字的长度,可以从多个纠错码中确定出对应的纠错码。若存在长度相同的纠错码,可以中选择解码效果较优的确定为纠错码码字对应的纠错码。
S903、按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据。
若在编码过程中对目标数据进行了补齐,则在解码过程中,可以将被补齐的数据赋值为已知量,例如零,从而降低解码过程中所需要计算的数据数量,协助解码并加快收敛。
解码器
如图10所示,本实施例提供了一种解码器,如图所示,其包括:
码字获取模块1001,用于获得至少一个纠错码码字;
纠错解码器1002,用于根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码,按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据,其中,至少部分所述纠错码的长度不同。
另外,可选地,本实施例中,多个所述纠错码各自对应的冗余校验矩阵的基矩阵大小相同,所述纠错码解码器用于以所述基矩阵的长度为单位并行进行纠错解码。具体地,若基矩阵为PQ行、PQ列的矩阵,则并行度为PQ,即每次可并行处理PQ长度的解码。若需要进行解码的纠错码码字的长度较小,则可以并行对多个纠错码码字进行解码。示例地,若两个纠错码码字长度均为2KB,而纠错解码器能够支持的最大纠错码长度为4KB,则可以将两个纠错码码字长度进行同时解码。
另外需要说明的是,纠错解码器虽然可以进行并行解码,但是其中用于进行解码的设备要暂存解码过程中的数据,因此进行解码的设备需要按照最长解码数量设置。
参见图11,示出了另一种解码器的结构示意图,如图所示,解码器包括:后端存储模块、纠错解码模块、处理日程存储模块、纠错码查询节点存储区域、纠错码变量节点存储区域。
其中,后端存储模块可以用于从NAND闪存中读取纠错码码文并存储,并可以将多个纠错码码字1、2、3等乱序传输至纠错解码模块,纠错解码模块具体可以采用迭代信息传递解码方式。纠错码解码模块可以按照处理日程存储模块中存储的解码日程schedule中记载的解码内容,例如码A、B、C进行解码,并可以具体从纠错码查询节点内存空间进行纠错码查询,确定纠错码码字对应的纠错码,并可以采用分时复用的方式进行并行解码,以及将解码过程中产生的变量存储至纠错码变量节点内存空间。
由此,可以将纠错查询节点内存空间和纠错码变量节点内存空间按照最长解码数量设置,将纠错码解码模块按照以基矩阵的长度设置。
示例地,在图11中,可以读取多个纠错码码字1、2、3并缓存至后端缓存模块,其中码字1、3分别为2K,码字2为4KB,则可以将码字1、3进行同时解码,并将码字2进行单独解码。解码后可以根据预设的字段进行拼接组合等得到码A、B、C。由此,可以降低解码过程的延迟,提高资源利用率。
通讯系统
需要说明的是,上述纠错编码和纠错解码方案还可以用于通信领域,因此,参见图12,本申请另一实施例提供一种通讯系统,包括发送端1201和接收端1202,所述发送端包括可以包括上述编码器,用于对待发送数据进行纠错编码,接收端可以包括上述解码器,用于对接收到的数据进行纠错解码。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (14)
1.一种纠错编码方法,包括:
获取目标数据,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据;
根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,其中,至少部分所述纠错码的长度不同;
通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
2.根据权利要求1所述的方法,其中,多个纠错码的长度以所述目标数据的最小长度为最小值并阶梯递增。
3.根据权利要求2所述的方法,其中,多个纠错码的长度分别为2n*L,其中,L为所述目标数据的最小长度,n为非负整数。
4.根据权利要求3所述的方法,其中,所述根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,包括:
将所述目标数据的数据长度补齐,使得所述目标数据的长度等于所述最小长度的倍数;
将所述目标数据的数据长度与多个纠错码进行长度匹配;
若存在长度等于所述数据长度的纠错码,则将所述纠错码确定为所述目标数据对应的纠错码。
5.根据权利要求4所述的方法,其中,所述根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,还包括:
若不存在长度等于所述数据长度的纠错码,则根据多个所述纠错码的长度,将所述目标数据拆分为至少两个与所述纠错码长度相同的数据分块,并将与所述数据分块长度相同的纠错码确定为所述数据分块对应的纠错码,以确定出所述目标数据对应的至少两个纠错码,其中,所述数据长度等于所述至少两个纠错码长度的和;
所述通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字,包括:
通过与所述数据分块长度相同的纠错码,对所述数据分块分别进行纠错编码,得到至少两个所述纠错码码字。
6.一种编码器,包括:数据获取模块、纠错码编码器,
所述数据获取模块,用于获取目标数据,根据所述目标数据的数据长度,从多个纠错码中确定出所述目标数据对应的至少一个纠错码,所述目标数据为将原始数据进行数据对齐后再进行数据压缩的数据,至少部分所述纠错码的长度不同;
所述纠错码编码器,用于通过与所述目标数据对应的至少一个纠错码,对所述目标数据进行纠错编码,得到至少一个纠错码码字。
7.根据权利要求6所述的方法,其中,多个纠错码的长度分别为2n*L,其中,L为所述目标数据的最小长度,n为非负整数。
8.根据权利要求7所述的编码器,其中,所述数据获取模块具体为数据分割模块,用于将所述目标数据的数据长度补齐,使得所述目标数据的长度等于所述最小长度的倍数;以及将所述目标数据的数据长度与多个纠错码进行长度匹配;若存在长度等于所述数据长度的纠错码,则将所述纠错码确定为所述目标数据对应的一个纠错码。
9.根据权利要求6所述的编码器,其中,多个所述纠错码各自对应的冗余校验矩阵的基矩阵大小相同,所述纠错码编码器用于以所述基矩阵的长度为单位并行进行纠错编码。
10.一种纠错解码方法,包括:
获得至少一个纠错码码字;
根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码,其中,至少部分所述纠错码的长度不同;
按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据。
11.一种解码器,包括:
码字获取模块,用于获得至少一个纠错码码字;
纠错解码器,用于根据所述纠错码码字的长度,从多个纠错码中确定出所述纠错码码字对应的纠错码,按照所述纠错码对所述纠错码码字进行解码处理,得到解码后数据,其中,至少部分所述纠错码的长度不同。
12.一种存储控制芯片,包括:根据权利要求6-9所述的编码器或者根据权利要求11所述的解码器。
13.一种固态硬盘,包括:
根据权利要求12所述的存储控制芯片;
至少一个闪存芯片,所述闪存芯片包括至少一个存储块,每个所述存储块包括多个存储页,每个所述存储页包括多个存储单元。
14.一种通讯系统,包括发送端和接收端,所述发送端包括根据权利要求6-9所述的编码器,所述接收端包括根据权利要求11所述的解码器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310063826.1A CN116302670A (zh) | 2023-01-11 | 2023-01-11 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
PCT/CN2024/071647 WO2024149302A1 (zh) | 2023-01-11 | 2024-01-10 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310063826.1A CN116302670A (zh) | 2023-01-11 | 2023-01-11 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302670A true CN116302670A (zh) | 2023-06-23 |
Family
ID=86815835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310063826.1A Pending CN116302670A (zh) | 2023-01-11 | 2023-01-11 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116302670A (zh) |
WO (1) | WO2024149302A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116343890A (zh) * | 2023-05-31 | 2023-06-27 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
WO2024149302A1 (zh) * | 2023-01-11 | 2024-07-18 | 杭州阿里云飞天信息技术有限公司 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013542533A (ja) * | 2010-10-27 | 2013-11-21 | エルエスアイ コーポレーション | フラッシュメモリベースのデータ記憶のための順応ecc技術 |
CN104917588A (zh) * | 2015-04-13 | 2015-09-16 | 李焱 | 提高非视距毫米波室内通信系统传输可靠性信道编码方法 |
CN111446971A (zh) * | 2020-02-11 | 2020-07-24 | 上海威固信息技术股份有限公司 | 一种基于共享子矩阵的自适应低密度奇偶校验码编码方法 |
CN113473460B (zh) * | 2021-06-07 | 2022-07-01 | 西安电子科技大学 | 基于纠错码判决的无线物理层密钥协商方法 |
CN115459781A (zh) * | 2022-08-25 | 2022-12-09 | 东南大学 | 一种基于静态交织编码的长序列dna存储编码方法 |
CN116302670A (zh) * | 2023-01-11 | 2023-06-23 | 阿里巴巴(中国)有限公司 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
-
2023
- 2023-01-11 CN CN202310063826.1A patent/CN116302670A/zh active Pending
-
2024
- 2024-01-10 WO PCT/CN2024/071647 patent/WO2024149302A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024149302A1 (zh) * | 2023-01-11 | 2024-07-18 | 杭州阿里云飞天信息技术有限公司 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
CN116343890A (zh) * | 2023-05-31 | 2023-06-27 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
CN116343890B (zh) * | 2023-05-31 | 2023-07-25 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2024149302A1 (zh) | 2024-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116302670A (zh) | 编解码方法、编解码器、芯片、硬盘、通讯系统 | |
KR101759658B1 (ko) | 메모리 장치 및 메모리 시스템 | |
US9696910B2 (en) | Data compression and management | |
US11385962B2 (en) | Method and apparatus for error correction encoding compressed data | |
CN110795272B (zh) | 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 | |
US9336081B2 (en) | Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access | |
US11074124B2 (en) | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage | |
US9552163B1 (en) | Systems and methods for providing non-power-of-two flash cell mapping | |
US10055284B2 (en) | Systems and methods for providing error code detection using non-power-of-two flash cell mapping | |
WO2021012278A1 (zh) | 一种数据的处理方法、系统、编码器及解码器 | |
KR102426047B1 (ko) | 폴라 부호 복호화 장치 및 방법 | |
CN109785895B (zh) | 纠正NAND Flash中多比特错误的ECC装置和方法 | |
CN110209598B (zh) | 一种高速缓冲存储器、一种数据读写控制方法及系统 | |
CN106293542B (zh) | 一种文件解压缩的方法及装置 | |
CN110780806B (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
KR20210057787A (ko) | Turbo 곱 코드 디코딩 방법, 장치, 디코더 및 컴퓨터 기록 매체 | |
CN114203250B (zh) | 固态存储器的数据存储方法、数据读取方法及固态存储器 | |
US11397546B2 (en) | Memory system | |
US11461173B1 (en) | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 | |
US20220374152A1 (en) | Low latency ssd read architecture with multi-level error correction codes (ecc) | |
US11847342B2 (en) | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory | |
US11640395B2 (en) | Query compiler for record filtering | |
CN109857340B (zh) | Nor flash中文件的存储和读取方法、装置及存储介质 | |
CN117008841A (zh) | 固态硬盘中数据处理方法、装置、设备及存储介质 |
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 |