CN117176185B - 一种基于极化码的数据编解码方法、装置和存储介质 - Google Patents
一种基于极化码的数据编解码方法、装置和存储介质 Download PDFInfo
- Publication number
- CN117176185B CN117176185B CN202311348188.4A CN202311348188A CN117176185B CN 117176185 B CN117176185 B CN 117176185B CN 202311348188 A CN202311348188 A CN 202311348188A CN 117176185 B CN117176185 B CN 117176185B
- Authority
- CN
- China
- Prior art keywords
- data
- channel
- channel group
- decoding
- decoded
- 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
- 230000010287 polarization Effects 0.000 title claims abstract description 182
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000003860 storage Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 24
- 238000010586 diagram Methods 0.000 claims description 40
- 238000009826 distribution Methods 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 26
- 230000007704 transition Effects 0.000 claims description 24
- 125000004122 cyclic group Chemical group 0.000 claims description 20
- 238000013138 pruning Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 239000007787 solid Substances 0.000 abstract description 11
- 238000013403 standard screening design Methods 0.000 description 30
- 238000010276 construction Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000012937 correction Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 108091026890 Coding region Proteins 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000009928 pasteurization Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 238000000342 Monte Carlo simulation Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 206010011906 Death Diseases 0.000 description 1
- 101100001677 Emericella variicolor andL gene Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Abstract
本发明涉及安全技术领域,公开了一种基于极化码的数据编解码方法、装置和存储介质,基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合。将待编码数据写入可靠度第一高的第一信道组以及由可靠度第二高的第二信道组和扩展信道组二次极化操作得到的第三信道组;根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。降低了极化码在固态硬盘上应用的难度。
Description
技术领域
本发明涉及安全技术领域,特别是涉及一种基于极化码的数据编解码方法、装置和存储介质。
背景技术
纠错能力是反映固态硬盘(Solid State Drives,SSD)质量的重要指标。目前阶段主要采用低密度校验码(Low Density Parity Check,LDPC)作为主要的纠错码方案。相比较LDPC而言,极化码的设计基于递归结构,无论在编码还是译码上,所需资源较少,其编码复杂度也比LDPC低。由于极化码可以极大程度利用到信道的信息,也可以在闪存生存期的不同阶段自适应的调整编码方案,提高纠错性能。这使得下一代存储装置中极化码作为纠错码方案成为有竞争力的选择之一。
但是极化中在实际应用中需要考虑两方面的问题。一方面,递归的结构使得极化码的码长限制为2的幂次,需要根据实际情况针对码长设计。另一方面,极化码是一种信道高度相关的码字,且实际中并不是无限长,因此需要对可靠度高的信道进行选择,确定出放置信息位的索引集合。
目前主流的SSD是以4KB数据进行ECC(Error Correction Code,纠错码)编码,即信息长度为4KB。由于高码率的设置,比如0.89或0.91,码长往往略大于4KB的长度。在一般线性码的领域,想要获得任意长度的码长,通常需要从的母码进行打孔和缩短操作,表示向上取整,M表示所需获取的码长。但是在SSD应用中,如采用0.89的码率,码长为4.5KB。按照传统方案,需要从8KB的原始极化码进行打孔和缩短操作,打孔和缩短的节点过多,性能损失大。
可见,如何降低极化码在固态硬盘上应用的难度,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种基于极化码的数据编解码方法、装置和存储介质,可以降低极化码在固态硬盘上应用的难度。
为解决上述技术问题,本发明实施例提供一种基于极化码的数据编解码方法,包括:
基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
将所述待编码数据写入所述第一信道组以及所述第三信道组,将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0;
根据所述第三信道组的信道索引,对所述第二信道组的数据和所述扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;
利用理论码长所对应的编码结构,对所述第一层编码输出数据进行编码处理,以得到所述理论码长对应的码字序列;
将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列。
一方面,所述基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合包括:
根据所述待编码数据写入的闪存对应的擦写次数,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述编码索引表中包含了不同区间各自对应的信息位集合,不同区间有其各自对应的擦写次数范围。
一方面,针对于所述编码索引表的建立过程,所述方法包括:
根据不同存储单元的擦写次数,划分不同的区间;
依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度;其中,所述目标区间为所有区间中的任意一个区间;
基于实际码长、实际码率以及所述目标区间内各信道的可靠度,构建出所述目标区间对应的信息位集合;其中,所述信息位集合包括用于存储数据的各信道的信道索引。
一方面,所述基于实际码长、实际码率以及所述目标区间内各信道的可靠度,构建出所述目标区间对应的信息位集合包括:
根据所述实际码率和极化码的理论码长,确定出信息位长度;
依据所述信息位长度、所述实际码长、所述理论码长以及所述理论码长对应的各信道的可靠度,从各所述信道中选取出第一信道组和第二信道组;
将所述第一信道组包含的各第一信道的信道索引以及所述第二信道组包含的各第二信道的信道索引分别记录至所述信息位集合;
将所述第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到第三信道组;其中,所述扩展信道组包括根据所述理论码长与实际码长的偏差所补充的信道;
将所述第三信道组包含的各信道的信道索引记录至所述信息位集合。
一方面,所述依据所述信息位长度、所述实际码长、所述理论码长以及所述理论码长对应的各信道的可靠度,从各所述信道中选取出第一信道组和第二信道组包括:
根据所述理论码长对应的各信道的可靠度,对各所述信道进行排序;
从排序后的各所述信道中选取出可靠度最高的K-(M-N)个信道作为第一信道组;其中,K表示信息位长度,M表示实际码长,N表示理论码长;
从剩余信道中选取出可靠度最高的(M-N)个信道作为第二信道组。
一方面,所述将所述第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到第三信道组包括:
将所述第二信道组中包含的各第二信道与所述扩展信道组中包含的各扩展信道成对进行二次极化操作;
从二次极化后的每对信道中选取可靠度最高的信道作为增强信道。
一方面,所述根据所述实际码率和极化码的理论码长,确定出信息位长度包括:
计算所述实际码率与所述理论码长的乘积值;
将所述乘积值向上取整作为所述信息位长度。
一方面,所述依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度包括:
对所述目标区间内极化码的信道转移概率进行处理,以得到所述目标区间内各信道的错误概率;其中,所述错误概率的取值与可靠度成反比。
一方面,在所述将所述待编码数据写入所述第一信道组以及所述第三信道组,将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0之前,还包括:
在获取到待编码数据的情况下,根据信息位长度以及循环冗余码校验对应的冗余长度,确定出编码长度;
从所述待编码数据中读取与所述编码长度对应的信息序列;
对所述信息序列进行循环冗余码校验编码,以得到最终的待编码数据。
一方面,在所述将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列之后,还包括:
将所述编码后的码字序列存储至闪存。
本发明实施例还提供了一种基于极化码的数据编解码方法,包括:
在获取到译码指令的情况下,从闪存中读取待译码数据;
从编码索引表中选取出与所述待译码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
根据所述信息位集合,确定出所述待译码数据中各子数据所属的信道类型;
按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果。
一方面,所述按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于属于第一信道组的所有第一待译码子数据,根据各所述第一待译码子数据的度量值,确定出各所述第一待译码子数据对应的第一译码结果。
一方面,所述根据各所述第一待译码子数据的度量值,确定出各所述第一待译码子数据对应的第一译码结果包括:
将度量值大于或等于0的第一待译码子数据的第一译码结果设置为0;
将度量值小于0的第一待译码子数据的第一译码结果设置为1。
一方面,所述按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于不属于第一信道组并且不属于第三信道组的第二待译码子数据,将所述第二待译码子数据的译码结果设置为0。
一方面,所述按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于属于第三信道组的第三待译码子数据,判断所述第三待译码子数据的通道索引是否属于所述第二信道组的通道索引;
在所述第三待译码子数据的通道索引属于所述第二信道组的通道索引的情况下,根据所述第三待译码子数据的通道索引在所述第二信道组中的位置顺序,确定出与所述第三待译码子数据匹配的二次极化操作的目标通道;
在所述第三待译码子数据的通道索引不属于所述第二信道组的通道索引的情况下,从所述第二信道组中获取与所述第三待译码子数据的通道索引相对应的目标通道;
根据所述第三待译码子数据的对数似然比以及所述目标通道上数据的对数似然比,确定出译码结果;
将所述译码结果反馈给所述第三待译码子数据,以得到更新后的第三待译码子数据;
根据所述更新后的第三待译码子数据,对所述待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果。
一方面,所述根据所述更新后的第三待译码子数据,对所述待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果包括:
在所述更新后的第三待译码子数据取值为0的情况下,删除所述译码路径图中路径值为1的路径;
在所述更新后的第三待译码子数据取值为1的情况下,删除所述译码路径图中路径值为0的路径;
将所述译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果。
一方面,所述将所述译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果包括:
将L条路径各自的路径值拼接作为每个路径的译码结果;其中,L表示预设列表宽度。
一方面,在所述将L条路径各自的路径值拼接作为每个路径的译码结果之后,还包括:
将通过循环冗余校验并且度量值最大的一条路径所对应的译码结果作为最终的译码结果。
本发明实施例还提供了一种基于极化码的数据编解码装置,包括选取单元、写入单元、置零单元、第一编码单元、第二编码单元和合并单元;
所述选取单元,用于基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
所述写入单元,用于将所述待编码数据写入所述第一信道组以及所述第三信道组;
所述置零单元,用于将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0;
所述第一编码单元,用于根据所述第三信道组的信道索引,对所述第二信道组的数据和所述扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;
所述第二编码单元,用于利用理论码长所对应的编码结构,对所述第一层编码输出数据进行编码处理,以得到所述理论码长对应的码字序列;
所述合并单元,用于将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列。
一方面,所述选取单元用于根据所述待编码数据写入的闪存对应的擦写次数,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述编码索引表中包含了不同区间各自对应的信息位集合,不同区间有其各自对应的擦写次数范围。
一方面,针对于所述编码索引表的建立过程,所述装置包括划分单元、确定单元和构建单元;
所述划分单元,用于根据不同存储单元的擦写次数,划分不同的区间;
所述确定单元,用于依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度;其中,所述目标区间为所有区间中的任意一个区间;
所述构建单元,用于基于实际码长、实际码率以及所述目标区间内各信道的可靠度,构建出所述目标区间对应的信息位集合;其中,所述信息位集合包括用于存储数据的各信道的信道索引。
一方面,所述构建单元包括信息位长度确定子单元、信道选取子单元、第一记录子单元、极化子单元、第二记录子单元;
所述信息位长度确定子单元,用于根据所述实际码率和极化码的理论码长,确定出信息位长度;
所述信道选取子单元,用于依据所述信息位长度、所述实际码长、所述理论码长以及所述理论码长对应的各信道的可靠度,从各所述信道中选取出第一信道组和第二信道组;
所述第一记录子单元,用于将所述第一信道组包含的各第一信道的信道索引以及所述第二信道组包含的各第二信道的信道索引分别记录至所述信息位集合;
所述极化子单元,用于将所述第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到第三信道组;其中,所述扩展信道组包括根据所述理论码长与实际码长的偏差所补充的信道;
所述第二记录子单元,用于将所述第三信道组包含的各信道的信道索引记录至所述信息位集合。
一方面,所述信道选取子单元用于根据所述理论码长对应的各信道的可靠度,对各所述信道进行排序;从排序后的各所述信道中选取出可靠度最高的K-(M-N)个信道作为第一信道组;其中,K表示信息位长度,M表示实际码长,N表示理论码长;从剩余信道中选取出可靠度最高的(M-N)个信道作为第二信道组。
一方面,所述极化子单元用于将所述第二信道组中包含的各第二信道与所述扩展信道组中包含的各扩展信道成对进行二次极化操作;从二次极化后的每对信道中选取可靠度最高的信道作为增强信道。
一方面,所述信息位长度确定子单元用于计算所述实际码率与所述理论码长的乘积值;将所述乘积值向上取整作为所述信息位长度。
一方面,所述确定单元用于对所述目标区间内极化码的信道转移概率进行处理,以得到所述目标区间内各信道的错误概率;其中,所述错误概率的取值与可靠度成反比。
一方面,还包括长度确定单元、信息读取单元和第三编码单元;
所述长度确定单元,用于在获取到待编码数据的情况下,根据信息位长度以及循环冗余码校验对应的冗余长度,确定出编码长度;
所述信息读取单元,用于从所述待编码数据中读取与所述编码长度对应的信息序列;
所述第三编码单元,用于对所述信息序列进行循环冗余码校验编码,以得到最终的待编码数据。
一方面,还包括存储单元;
所述存储单元,用于将所述编码后的码字序列存储至闪存。
本发明实施例还提供了一种基于极化码的数据编解码装置,包括数据读取单元、集合选取单元、信道类型确定单元和译码单元;
所述数据读取单元,用于在获取到译码指令的情况下,从闪存中读取待译码数据;
所述集合选取单元,用于从编码索引表中选取出与所述待译码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
所述信道类型确定单元,用于根据所述信息位集合,确定出所述待译码数据中各子数据所属的信道类型;
所述译码单元,用于按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果。
一方面,所述译码单元用于对于属于第一信道组的所有第一待译码子数据,根据各所述第一待译码子数据的度量值,确定出各所述第一待译码子数据对应的第一译码结果。
一方面,所述译码单元用于将度量值大于或等于0的第一待译码子数据的第一译码结果设置为0;
将度量值小于0的第一待译码子数据的第一译码结果设置为1。
一方面,所述译码单元用于对于不属于第一信道组并且不属于第三信道组的第二待译码子数据,将所述第二待译码子数据的译码结果设置为0。
一方面,所述译码单元包括判断子单元、第一确定子单元、第二确定子单元、第三确定子单元、更新子单元和剪枝子单元;
所述判断子单元,用于对于属于第三信道组的第三待译码子数据,判断所述第三待译码子数据的通道索引是否属于所述第二信道组的通道索引;
所述第一确定子单元,用于在所述第三待译码子数据的通道索引属于所述第二信道组的通道索引的情况下,根据所述第三待译码子数据的通道索引在所述第二信道组中的位置顺序,确定出与所述第三待译码子数据匹配的二次极化操作的目标通道;
所述第二确定子单元,用于在所述第三待译码子数据的通道索引不属于所述第二信道组的通道索引的情况下,从所述第二信道组中获取与所述第三待译码子数据的通道索引相对应的目标通道;
所述第三确定子单元,用于根据所述第三待译码子数据的对数似然比以及所述目标通道上数据的对数似然比,确定出译码结果;
所述更新子单元,用于将所述译码结果反馈给所述第三待译码子数据,以得到更新后的第三待译码子数据;
所述剪枝子单元,用于根据所述更新后的第三待译码子数据,对所述待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果。
一方面,所述剪枝子单元用于在所述更新后的第三待译码子数据取值为0的情况下,删除所述译码路径图中路径值为1的路径;在所述更新后的第三待译码子数据取值为1的情况下,删除所述译码路径图中路径值为0的路径;将所述译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果。
一方面,所述剪枝子单元用于将L条路径各自的路径值拼接作为每个路径的译码结果;其中,L表示预设列表宽度。
一方面,还包括作为单元;
所述作为单元,用于将通过循环冗余校验并且度量值最大的一条路径所对应的译码结果作为最终的译码结果。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述基于极化码的数据编解码方法的步骤。
本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述基于极化码的数据编解码方法的步骤。
由上述技术方案可以看出,基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合;信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;将待编码数据写入第一信道组以及第三信道组,将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0;根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。本发明的有益效果在于,通过增加扩展信道组可以满足SSD的不同码长需求,解决了SSD中编码序列的长度通常不是2的幂次的问题。为了保证数据存储的可靠性,由第二信道组和扩展信道组进行二次极化操作可以获取到可靠度更高的第三信道组,从而由第一信道组和第三信道组存储数据。相比较于原始的极化码,编码操作仅在外部增加了一层由第二信道组和扩展信道组进行二次极化的操作,编码复杂度仍然保持线性,相比于传统打孔压缩的方式,降低了极化码在固态硬盘上应用的难度,仍保持了低计算复杂度的特点,增加了极化码在SSD中应用的竞争力。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为传统的信道极化操作的合并过程示意图;
图2为本发明实施例提供的一种基于极化码的数据编解码方法的流程图;
图3为本发明实施例提供的一种极化码两级编码的示意图;
图4为本发明实施例提供的一种构建目标区间对应的信息位集合的方法的流程图;
图5为本发明实施例提供的一种数据编译码处理流程的示意图;
图6为本发明实施例提供的一种数据译码的方法的流程图;
图7为本发明实施例提供的一种SCL译码中路径扩展示意图;
图8为本发明实施例提供的一种基于极化码的数据编解码装置的结构示意图;
图9为本发明实施例提供的另一种基于极化码的数据编解码装置的结构示意图;
图10为本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
在计算机闪存(NAND flash memory,NAND)中存储数据,从开始的SLC(Single-Level Cell,单比特存储单元)到MLC(Multi-Level Cell,双比特存储单元),TLC(Trinary-Level Cell,3比特存储单元)和QLC(Quad-Level Cell,4比特存储单元),每个存储单元存放的比特数越来越多,存储密度不断增加。随着NAND堆叠层数的逐渐增加,器件尺寸变少,存储单元之间的电气耦合性变得复杂,对于每个页中的单个比特的读取,读电压控制能力要求更加细致。这种情况下,闪存出错概率大大增加,需要SSD主控实现的纠错能力更强。好的纠错码可以保证SSD在生命末期和恶劣环境下都能够读取正确的有效数据,因此主控都包含纠错码模块。
极化码对于任意信道均可适用,且极大程度的利用了信道的特性,在理论上被证明可以达到香农限。其编译码均具有线性复杂度,易于实现。极化码的实际应用性已经在5G通信领域得到验证,在其他场景中的应用中具有强的竞争力。在SSD领域,目前阶段主要采用的LDPC码作为主要的纠错码方案。相比较LDPC码而言,极化码的涉及基于递归结构,无论在编码还是译码上,所需资源较少,其编码复杂度也比LDPC低;由于极化码可以极大程度利用到信道的信息,也可以在闪存生存期的不同阶段自适应的调整编码方案,提高纠错性能。
图1为传统的信道极化操作的合并过程示意图,两个相同的信道W,通过合并操作后再进行拆分操作,得到两个新的信道和/>,信道容量发生极化现象,即一个容量变大,称为“好”信道,一个容量变小,称为“差”信道:
;其中,/>表示信道/>的容量,/>表示信道W的容量,/>表示信道/>的容量。递归的重复此操作,将两个“好”信道和两个“差”信道继续进行一个极化变化,则获得更“好”的信道和更“差”的信道以及部分“中间”信道。当合并信道的个数N趋于无限时,“中间”信道消失,所有的信道变换成完全“好”的信道和完全“差”的信道。因此可以在“好”信道上传信息比特,在“差”信道上传收发端都已知的冻结比特,从而实现无差错传输。极化码就是基于此信道极化过程设计的,每个信道对应于码字中的每个比特,信道个数对应于码长。
目前主流的SSD是以4KB数据进行ECC编码,由于高码率的设置,码长往往略大于4KB的长度。但是在SSD应用中,如采用0.89的码率,码长为4.5KB,若选择传统方案,需要从8KB的原始极化码进行打孔或缩短操作,打孔或缩短的节点过多,性能损失大。
故此,本发明实施例提供了一种基于极化码的数据编解码方法、装置和存储介质,基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合;信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;将待编码数据写入第一信道组以及第三信道组,将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0;根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。通过增加扩展信道组可以满足SSD的不同码长需求。相比较于原始的极化码,编码操作仅在外部增加了一层由第二信道组和扩展信道组进行二次极化的操作,降低极化码在固态硬盘上应用的难度。
接下来,详细介绍本发明实施例所提供的一种基于极化码的数据编解码方法。图2为本发明实施例提供的一种基于极化码的数据编解码方法的流程图,该方法包括:
S201:基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合。
其中,信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到。
对于编码索引表中包含的信息位集合的构建方式将在图4中展开介绍,在此不再赘述。
极化码的构造基于信道的信息,即信道转移概率,因此构造需要对SSD中NAND闪存中的数据存储出错概率分布进行估计。由于NAND闪存中主要的噪声由热噪声引起的,基本服从高斯分布,因此用高斯分布拟合闪存中噪声是合适的。由于噪声作用于每个闪存单元即存储单元,直接影响NAND读数据时的阈值电压,所以噪声的分布可以通过对阈值电压的集合进行收集。利用纠错机制(read-retry)技术,统计不同闪存单元的阈值电压从而获得构造极化码的信道模型。
由于阈值电压受多个因素的影响,在本发明实施例中,可以主要考虑擦写次数(Program Erase,PE)这一类参数。
在实际应用中,在获取到待编码数据后,可以根据待编码数据写入的闪存对应的擦写次数,从编码索引表中选取出与待编码数据匹配的信息位集合。其中,编码索引表中包含了不同区间各自对应的信息位集合,不同区间有其各自对应的擦写次数范围。
S202:将待编码数据写入第一信道组以及第三信道组,将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0。
第一信道组中各第一信道的可靠度最高。第三信道组中各第三信道是由可靠度第二高的第二信道组和扩展信道组进行二次极化操作得到的可靠度更优的信道,因此第三信道组中各信道可靠度高于第二信道组和扩展信道组中各信道的可靠度。因此在本发明实施例中,可以将待编码数据写入第一信道组以及第三信道组,其余的位置全部置0。
S203:根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据。
每个信道有其对应的信道索引,信道索引可以是信道的编号,每个信息有其唯一对应的一个编号。例如,一共有M个信道,各信道的编号可以依次为1至M。
信息位集合中记录了各信道组中每个信道的信道索引,基于信道索引便可以确定出极化码中各信道属于哪个信道组。
由于第三信道组是由第二信道组和扩展信道组进行二次极化操作得到的可靠度更优的信道。一个第二信道和一个扩展信道二次极化操作后可以得到两个新的信道,选取这两个新的信道中可靠度最高的信道作为第三信道。
以任意一个第三信道为例,根据第三信道的信道索引,便可以获知第二信道和扩展信道这两个信道中哪个信道的可靠度高,从而确定出成对编码时数据的编码方式。
举例说明,结合图1所示的信道极化操作的合并过程示意图,两个新的信道和,/>对应的是x 2,/>对应的是x 1,由于/>的可靠度高于/>的可靠度,因此在编码时可以令x 2= u 2,/>。
S204:利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列。
极化码的理论码长N为2的幂次方即,理论码长所对应的编码结构指的是传统的极化码所对应的编码结构。传统的极化码指的是码长为/>的极化码。
在本发明实施例中,第一层编码输出数据的长度为N。通过将第一层编码输出数据传输至理论码长所对应的编码结构中,可以完成数据的编码处理,从而得到码长为N的码字序列。
S205:将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。
假设,实际码长为M,理论码长为N,M大于N。通过增加(M-N)个扩展信道,可以满足实际码长需求。为了便于描述,可以将N+1至M作为扩展信道组中每个信道的信道索引。
在得到码长为N的码字序列后,将其与扩展信道组对应的(M-N)个数据进行合并,可以得到码长为M的码字序列。
在本发明实施例中,可以将编码后的码字序列存储至闪存。
图3为本发明实施例提供的一种极化码两级编码的示意图,虚线框内为理论码长N所对应的编码结构即内层子模块,R N 表示置换矩阵,实现极化过程中将两个相同的“好”信道置换到相邻的位置从而进行下一步极化。虚线框中左上角的实线框表示编译码过程中的基础计算单元。图3中极化码的实际码长为M,实际码长M对应的M个信道包括理论码长N对应的N个信道,还包括扩展信道组包括的(M-N)个信道。
基于图3所示的编码示意图,编码过程可以分为两层进行,定义原始信息序列。
每个信道有其对应的信道索引,在信息位集合中记录了不同信道组下各信道的信道索引,基于信道索引便可以确定出信道的具体位置。在实际应用中,可以在第一信道组和第三信道组所对应的位置放置需要写入闪存的数据,其余的位置全部置0。
编码时,依据第三信道组中记录的信道索引,可以对第二信道组中数据v i 和最后的(M-N)个信息比特进行成对的一层编码计算;第一层编码后得到第一层编码输出数据,作为输入进入第二层编码,即大小为N的编码子模块。编码子模块中,其中,G N 表示极化码的生成矩阵,/>,/>表示n次内积。
最终获得编码后的码字序列,可以将/>写入闪存,方便后续译码时调用。译码调用时从闪存中读取的数据可以称作接收序列。
由上述技术方案可以看出,基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合;信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;将待编码数据写入第一信道组以及第三信道组,将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0;根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。本发明的有益效果在于,通过增加扩展信道组可以满足SSD的不同码长需求,解决了SSD中编码序列的长度通常不是2的幂次的问题。为了保证数据存储的可靠性,由第二信道组和扩展信道组进行二次极化操作可以获取到可靠度更高的第三信道组,从而由第一信道组和第三信道组存储数据。相比较于原始的极化码,编码操作仅在外部增加了一层由第二信道组和扩展信道组进行二次极化的操作,编码复杂度仍然保持线性,相比于传统打孔压缩的方式,降低了极化码在固态硬盘上应用的难度,仍保持了低计算复杂度的特点,增加了极化码在SSD中应用的竞争力。
编码索引表中记录的信息位集合是实现数据编码的基础,在本发明实施例中,针对于编码索引表的建立过程可以包括:根据不同存储单元的擦写次数,划分不同的区间。
针对于阈值电压在不同SSD不同生存期变化的特点,提前对NAND闪存在生存期不同PE次数划分区间,确定t个不同的时期的转移概率分布,t个区间对应地设计t组极化码,极大程度的利用极化码构造集合信道的特征。
t值大小可以由需求进行配置,t值越大,对NAND不同生存期信道拟合更好,对应编码方案的性能更好。
每个区间所对应的信息位集合的构建方式类型,以所有区间中的任意一个区间即目标区间为例,可以依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度;基于实际码长、实际码率以及目标区间内各信道的可靠度,构建出目标区间对应的信息位集合;其中,信息位集合包括用于存储数据的各信道的信道索引。
在SSD的主控中采用极化码作为ECC编码进行数据保护。由于极化码的构造需要已经信道的信息,在SSD中通过拟合不同存储单元状态的阈值电压分布,通过均值和方差的计算,确定出信道的噪声分布即信道转移概率,从而构造极化码。
对于区间的划分,由于不同存储单元的状态通常有不同的分布,且擦除态往往和其他状态区别较大,因此选择除擦除态之外的存储单元状态确定其阈值电压在高斯分布中的均值和方差。
以TLC为例,一共有8个存储状态,包括1个擦除状态和7个写入状态P1至P7,确定除了擦除态的其余7个状态阈值电压分布的方差和均值。由于高斯分布的和仍是高斯分布,且其和分布的均值和方差分布为子分布均值和方差的和,因此取7个分布均值的平均值记为μ,取7个方差的平均值记为σ。
基于均值μ和方差σ,在当前的PE设置下,其噪声分布即极化码构造中的信道转移概率可以近似用如下公式(1)来表示:
(1);
其中,x表示输入,y表示输出,表示极化码构造的信道转移概率。
为了便于描述,对于N个信道的可靠度,可以采用表示,其中,/>表示N个信道中的第i个信道,/>。
在实际应用中,可以对目标区间内极化码的信道转移概率进行处理,以得到目标区间内各信道的错误概率;其中,错误概率的取值与可靠度成反比。
对信道转移概率进行处理得到错误概率的方式可以有两种,一种方式可以利用蒙特卡洛仿真算法,对目标区间内极化码的信道转移概率进行处理,以得到目标区间内各信道的错误概率;其中,错误概率的取值与可靠度成反比。
错误概率可以采用表示。错误概率越低,说明可靠度越高。
另一种方式可以利用高斯近似算法,对目标区间内极化码的信道转移概率进行处理,以得到目标区间内各信道的错误概率。
为了便于区分,可以将基于高斯近似算法确定出的错误概率称作巴氏参数,巴氏参数的取值与可靠度成反比。
巴氏参数可以采用表示。巴氏参数的取值越小,说明可靠度越高。
在实际应用中,每次随机生成长为N的序列,传入基于公式(1)的信道模型中。对于接收到的接收序列/>,利用公式(1)计算出接收序列的信道转移概率,作为极化码连续删除译码的输入进行译码,将译码结果和生成的随机序列/>做对比。执行多次上述过程后,统计每个位置x i 的译码中的错误频次,作为该点的错误概率,即为信道/>的错误概率/>。/>的计算过程类型,利用公式(1)的通道转移概率,执行连续删除译码,从而得到/>。
图4为本发明实施例提供的一种构建目标区间对应的信息位集合的方法的流程图,该方法包括:
S401:根据实际码率和极化码的理论码长,确定出信息位长度。
在实际应用中,可以计算实际码率与理论码长的乘积值;将乘积值向上取整作为信息位长度。
实际码长大于理论码长即,/>。假设,实际码率为R,信息位长度可以为/>。
S402:依据信息位长度、实际码长、理论码长以及理论码长对应的各信道的可靠度,从各信道中选取出第一信道组和第二信道组。
在实际应用中,可以根据理论码长对应的各信道的可靠度,对各信道进行排序;从排序后的各信道中选取出可靠度最高的K-(M-N)个信道作为第一信道组;其中,K表示信息位长度,M表示实际码长,N表示理论码长。从剩余信道中选取出可靠度最高的(M-N)个信道作为第二信道组。
S403:将第一信道组包含的各第一信道的信道索引以及第二信道组包含的各第二信道的信道索引分别记录至信息位集合。
为了方便后续数据编译码操作,可以将第一信道组包含的各第一信道的信道索引记录至信息位集合,将第二信道组包含的各第二信道的信道索引记录至信息位集合。
S404:将第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到第三信道组。
其中,扩展信道组包括根据理论码长与实际码长的偏差所补充的信道。
以实际码长为M,理论码长N为例,扩展信道组包含的信道个数可以(M-N)个。
在实际应用中,可以将第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道成对进行二次极化操作;从二次极化后的每对信道中选取可靠度最高的信道作为增强信道。
S405:将第三信道组包含的各信道的信道索引记录至信息位集合。
在确定出第三信道组后,可以将第三信道组包含的各信道的信道索引记录至信息位集合,从而方便后续的调取使用。
举例说明,对于实际码长为M的信道,对前N个节点进行极化码构造,其中,/>表示向下取整。极化码过程中计算N个信道的可靠度,记为/>,。排序后选择可靠度最高的K-(M-N)个信道的信道索引作为信息位集合的一部分,记为S N 。
选择N个信道中可靠度次高的(M - N)个子信道,其信道索引记作集合τ。
对于集合τ对应的信道,与M个节点中的后(M-N)个节点成对的进行二次极化操作。类似于图1中原始极化对两个相同的信道进行操作,对于两个不同的信道W 1和W 2,仍可以进行和图1中类似的合并操作。
在拆分操作后仍会发生信道容量的极化。因此,对于两个不同的信道(/>)和/>采用上述极化操作后得到的两个新的信道/>和/>。根据极化操作的特性可知两个新的信道中一个信道的容量比原始两个信道大,另一个信道容量比原始两个信道小,获得的信道/>比原始的两个信道都“好”。从而可以选择二次极化后的(M-N)个信道可靠度增大的信道/>作为第三信道。所有第三信道的信道索引记为S E 。则用于存储数据的信息位选,/>;其中,/>表示第一信道组的信道索引总数,/>表示第三信道组的信道索引总数。
对应于不同PE次数划分出来的t个区间,分别构造一组信息位集合。将t个区间对应的集合S N ,S E 和τ进行存储,构成一个大小为的编码索引表,可以将编码索引表存储在主控的缓存中。
在本发明实施例中,可以将极化码用于SSD主控中的纠错码模块,编码索引表的构建可以离线进行,将构建结果即编码索引表存储在主控中,不增加SSD使用中的复杂度。
在实际应用中,首先针对于极化码构造需要已知信道信息的情况,对SSD中闪存在不同生存期用其存储单元的阈值电压分布,获得近似的信道转移概率分布,从而构造极化码。其次,针对主流SSD中编码序列的长度通常不是2的幂次的问题,提出了适应于SSD中应用的码字。相比较于原始的极化码,编码操作仅在外部增加了一层极化,编码复杂度仍然保持线性,增加了极化码在下一代SSD中的应用的竞争力。
在本发明实施例中,编码操作可以对应两层操作,选择循环冗余码校验(CyclicRedundancy Check,CRC)和极化码级联,并将CRC作为外码。
在获取到待编码数据的情况下,可以根据信息位长度以及循环冗余码校验对应的冗余长度,确定出编码长度;从待编码数据中读取与编码长度对应的信息序列;对信息序列进行循环冗余码校验编码,以得到最终的待编码数据。
举例说明,CRC的冗余长度为K-k,CRC编码后可以得到长度为K的序列,将该序列输入极化码的编码器。
CRC编码器和极化码编码器均在主控中实现。图5为本发明实施例提供的一种数据编译码处理流程的示意图,对于主机传来的待编码数据,先通过循环冗余码编码器进行CRC编码,并将CRC编码器的输出作为极化码编码器的信息位进行极化码编码,最终架构获得的码字存入闪存。
在本发明实施例中,通过极化码级联CRC可以有效提升码距,进而提升纠错性能。
结合图5所示的示意图,在译码模块将图5中极化码译码器和循环冗余码校验结合,进行自适应的CA-SCL(Crc-Aided Successivecan Cellation List,具有循环冗余校验的串行抵消列表)译码方案设计,从而得到译码结果。译码过程仍基于图3实现,在原始CA-SCL译码算法的基础上进行了修改,在内层子模块和外层进行信息交互。以内部大小为N的子结构的译码为主,外部译码作为边信息对内部译码进行辅助。
图6为本发明实施例提供的一种数据译码的方法的流程图,该方法包括:
S601:在获取到译码指令的情况下,从闪存中读取待译码数据。
在具体实现中,可以通过读取闪存获得待译码数据,查表得到各子数据对应的对数似然比(Log-Likelihood Ratio,LLR),将待译码数据及其对应的LLR值序列/>作为译码器的输入。
S602:从编码索引表中选取出与待译码数据匹配的信息位集合。
其中,信息位集合中可以包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到。
S603:根据信息位集合,确定出待译码数据中各子数据所属的信道类型。
在本发明实施例中,可以将第一信道组、第二信道组和第三信道组看作是三种类型的信道。在信息位集合中包含了各类信道的信道索引。在获取到待译码数据之后,结合信息位集合便可以确定出待译码数据中各子数据所在的信道所属的信道类型。
S604:按照待译码数据中各子数据所属的信道类型对应的译码方式,对各子数据进行译码以得到译码结果。
在本发明实施例中,采用第一信道组和第三信道组存储具体的数据。因此在执行数据的译码时,可以将待译码子数据划分为三种,一种是属于第一信道组的第一待译码子数据,一种是不属于第一信道组并且不属于第三信道组的第二待译码子数据,最后一种是属于第三信道组的第三待译码子数据。
对于属于第一信道组的所有第一待译码子数据,可以根据各第一待译码子数据的度量值,确定出各第一待译码子数据对应的第一译码结果。
在实际应用中,可以利用判决公式,将度量值大于或等于0的第一待译码子数据的第一译码结果设置为0;将度量值小于0的第一待译码子数据的第一译码结果设置为1。
判决公式如下:
(2);
其中,表示第i个信道对应的译码结果;LLR(u i )表示第i个信道的数据对应的度量值。
对于不属于第一信道组并且不属于第三信道组的第二待译码子数据,说明该第二待译码子数据所在的信道属于冻结位,此时可以将第二待译码子数据的译码结果设置为0,即可以令。
对于属于第三信道组的第三待译码子数据,可以判断第三待译码子数据的通道索引是否属于第二信道组的通道索引。
第三待译码子数据的个数可能有多个,每个第三待译码子数据的处理方式类似,为了方便介绍,均以一个第三待译码子数据为例展开说明。
在第三待译码子数据的通道索引属于第二信道组的通道索引的情况下,根据第三待译码子数据的通道索引在第二信道组中的位置顺序,确定出与第三待译码子数据匹配的二次极化操作的目标通道。
位置顺序用于表示通道索引在所有第二通道的通道索引中的位置。
举例说明,假设第二通道组一共包括100个通道,通道索引依次为101至200,第三待译码子数据的通道索引为105,通道索引105属于第二通道组所有通道索引的第5位,因此位置顺序为5。
为了便于描述,可以采用j表示位置顺序。
假设,第三待译码子数据u i 的通道索引i属于第二信道组的通道索引,此时可以获取该通道索引i位于第二信道组的位置顺序j,也即第二信道中第j个信道的信道索引为i。结合理论码长为N,因此与第三待译码子数据匹配的二次极化操作的目标通道的通道索引为N+j。
在第三待译码子数据的通道索引不属于第二信道组的通道索引的情况下,从第二信道组中获取与第三待译码子数据的通道索引相对应的目标通道。
假设,第三待译码子数据u i 的通道索引i不属于第二信道组的通道索引,根据通道索引i可以获取第二通道组中对应的通道索引为τ(i-n),此时可以令τ(i-n)=j。
根据第三待译码子数据的对数似然比以及目标通道上数据的对数似然比,确定出译码结果;将译码结果反馈给第三待译码子数据,以得到更新后的第三待译码子数据。
根据更新后的第三待译码子数据,对待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果。
译码路径图可以按照传统方式构建,图7为本发明实施例提供的一种SCL译码中路径扩展示意图。对于子结构中i=1toN,同原始CA-SCL译码算法相同,从第1个比特开始,进行列表译码的树图形路径扩展,即对于每一个比特u i ,进行“0”和“1”两条路径扩展,并且计算每条路径的可靠度。预设列表宽度为L,L的取值一般在8至16之间。
在扩展过程中,当列表宽度大于L时,依据路径可靠度进行路径修剪,保留可靠度最大的L条路径,其余路径进行剪枝。之后每次将L条路径扩展为2L条,再根据可靠度大小修剪为L条路径。
路径扩展如图7所示,图中每个节点对应的数据表示该条的度量值,例如u 1对应的两个数据0.65和0.35均为度量值。为了方便表示,图7中采用LLR值作为度量值。采用LLR值表示度量值时,LLR值的绝对值越大,说明路径可靠度越高。
为了便于硬件实现,度量值计算采用硬件友好的度量计算,信息在一个2*2的基本计算单元中,LLR的近似计算公式如下所示:
(3);/>
(4);
其中,L 1和L 2分别表示基本计算单元中右侧的两个节点的LLR值,L u 表示左上角节点的LLR值,L B 表示左下角节点的LLR值,表示左上角节点的判决值,sign(x)函数是符号函数,表示x的正负。
对于第三待译码子数据u i 的通道索引i属于第二信道组的通道索引的情况,可以令L 1=LLR(y N+j ),L 2=LLR(u i )。结合公式(3)和公式(4)可以计算出L u 和L B ,可以令LLR(v i )=L B ,LLR(v N+j )=L u 。
对于第三待译码子数据u i 的通道索引i不属于第二信道组的通道索引的情况,可以令L 1=LLR(u j ),L 2=LLR(y i )。结合公式(3)和公式(4)可以计算出L u 和L B ,可以令LLR(v i )=L B ,LLR(v j )=L u 。
对于通道索引属于第二信道组的通道索引的子数据,在CA-SCL译码过程中由于列表宽度的设置,保留了L条路径,因此有L个可能的值。在外部一层译码计算中,也仍然保留L组值的计算,因此,计算出的结果也包含了L对结果,分别对两个节点的L个度量值,排序后选择最大的一个度量,利用判决公式(2)得到译码结果,并将译码结果反馈给u i 。
结合上述举例,计算出L组LLR(v i )和LLR(v N+j ),选出L个LLR(v i )中绝对值最大的一个,选出L个LLR(v N+j )中绝对值最大的一个,结合判决公式(2)可以计算出和/>。将译码结果反馈给u i ,令/>;/>。
在得到更新后的第三待译码子数据后,可以在更新后的第三待译码子数据取值为0的情况下,删除译码路径图中路径值为1的路径;在更新后的第三待译码子数据取值为1的情况下,删除译码路径图中路径值为0的路径;将译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果。
结合上述举例,若,则保留节点处L条路径中扩展为“0”的路径,修剪掉当前扩展为“1”的路径;若/>,则保留节点处L条路径中扩展为“1”的路径,修剪掉当前所有扩展为“0”的路径。
举例说明,假设L=4,第三待译码子数据u i 的通道索引i属于第二信道组的通道索引,每条路径对应的度量值分别为-0.5、0.4、-0.2、-1.8,结合判决公式(2)可以确定出四条路径对应的判决结果为1011。假设LLR(y N+j )=0.6。结合公式(3)可以计算出L u =g(-0.5,0.6)=-0.5,L u =g(0.4,0.6)=0.4,L u =g(-0.2,0.6)=-0.2,L u =g(-1.8,0.6)=-0.6。对这4个L u 取绝对值后选择取值最大的一个:LLR(v N+j )=0.6,利用判决公式(2)可以得到。
结合公式(4)可以计算出L B =(-1)1*0.6-0.5=-1.1,L B =(-1)0*0.6+0.4=-0.2,L B =(-1)0*0.6-0.2=-0.8,L B =(-1)-1*0.6-1.8=-2.4。对这4个L B 取绝对值后选择取值最大的一个:LLR(v i )=-2.4,利用判决公式(2)可以得到。根据/>和/>,可以得到/>,因此可以修剪掉u i 当前位置对应的路径值为0的路径,继续进行u i 后续的译码。
在实际应用中,将L条路径各自的路径值拼接作为每个路径的译码结果。
对于最后的L条路径,可以将通过循环冗余校验并且度量值最大的一条路径所对应的译码结果作为最终的译码结果。
由于SSD中ECC模块中通常采用CRC作为数据完整性检验的方案,因此本发明中针对于提出的速率匹配方案设计了自适应的CA-SCL译码算法,该算法将外层扩展的极化操作作为边信息对内部模块的译码进行辅助和路径修剪,相比较原始的CA-SCL译码算法降低了部分的计算复杂度,且大数逻辑的修剪方式对硬件实现友好。
图8为本发明实施例提供的一种基于极化码的数据编解码装置的结构示意图,包括选取单元81、写入单元82、置零单元83、第一编码单元84、第二编码单元85和合并单元86;
选取单元81,用于基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合;其中,信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;
写入单元82,用于将待编码数据写入第一信道组以及第三信道组;
置零单元83,用于将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0;
第一编码单元84,用于根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;
第二编码单元85,用于利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;
合并单元86,用于将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。
在一些实施例中,选取单元用于根据待编码数据写入的闪存对应的擦写次数,从编码索引表中选取出与待编码数据匹配的信息位集合;其中,编码索引表中包含了不同区间各自对应的信息位集合,不同区间有其各自对应的擦写次数范围。
在一些实施例中,针对于编码索引表的建立过程,装置包括划分单元、确定单元和构建单元;
划分单元,用于根据不同存储单元的擦写次数,划分不同的区间;
确定单元,用于依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度;其中,目标区间为所有区间中的任意一个区间;
构建单元,用于基于实际码长、实际码率以及目标区间内各信道的可靠度,构建出目标区间对应的信息位集合;其中,信息位集合包括用于存储数据的各信道的信道索引。
在一些实施例中,构建单元包括信息位长度确定子单元、信道选取子单元、第一记录子单元、极化子单元、第二记录子单元;
信息位长度确定子单元,用于根据实际码率和极化码的理论码长,确定出信息位长度;
信道选取子单元,用于依据信息位长度、实际码长、理论码长以及理论码长对应的各信道的可靠度,从各信道中选取出第一信道组和第二信道组;
第一记录子单元,用于将第一信道组包含的各第一信道的信道索引以及第二信道组包含的各第二信道的信道索引分别记录至信息位集合;
极化子单元,用于将第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到第三信道组;其中,扩展信道组包括根据理论码长与实际码长的偏差所补充的信道;
第二记录子单元,用于将第三信道组包含的各信道的信道索引记录至信息位集合。
在一些实施例中,信道选取子单元用于根据理论码长对应的各信道的可靠度,对各信道进行排序;从排序后的各信道中选取出可靠度最高的K-(M-N)个信道作为第一信道组;其中,K表示信息位长度,M表示实际码长,N表示理论码长;从剩余信道中选取出可靠度最高的(M-N)个信道作为第二信道组。
在一些实施例中,极化子单元用于将第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道成对进行二次极化操作;从二次极化后的每对信道中选取可靠度最高的信道作为增强信道。
在一些实施例中,信息位长度确定子单元用于计算实际码率与理论码长的乘积值;将乘积值向上取整作为信息位长度。
在一些实施例中,确定单元用于利用蒙特卡洛仿真算法,对目标区间内极化码的信道转移概率进行处理,以得到目标区间内各信道的错误概率;其中,错误概率的取值与可靠度成反比。
在一些实施例中,确定单元用于利用高斯近似算法,对目标区间内极化码的信道转移概率进行处理,以得到目标区间内各信道的巴氏参数;其中,巴氏参数的取值与可靠度成反比。
在一些实施例中,还包括长度确定单元、信息读取单元和第三编码单元;
长度确定单元,用于在获取到待编码数据的情况下,根据信息位长度以及循环冗余码校验对应的冗余长度,确定出编码长度;
信息读取单元,用于从待编码数据中读取与编码长度对应的信息序列;
第三编码单元,用于对信息序列进行循环冗余码校验编码,以得到最终的待编码数据。
在一些实施例中,还包括存储单元;
存储单元,用于将编码后的码字序列存储至闪存。
图8所对应实施例中特征的说明可以参见图1至图7所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与待编码数据匹配的信息位集合;信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;将待编码数据写入第一信道组以及第三信道组,将实际码长对应的所有信道中除第一信道组和第三信道组外的剩余信道全部置0;根据第三信道组的信道索引,对第二信道组的数据和扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;利用理论码长所对应的编码结构,对第一层编码输出数据进行编码处理,以得到理论码长对应的码字序列;将理论码长对应的码字序列与扩展信道组对应的数据合并作为编码后的码字序列。本发明的有益效果在于,通过增加扩展信道组可以满足SSD的不同码长需求,解决了SSD中编码序列的长度通常不是2的幂次的问题。为了保证数据存储的可靠性,由第二信道组和扩展信道组进行二次极化操作可以获取到可靠度更高的第三信道组,从而由第一信道组和第三信道组存储数据。相比较于原始的极化码,编码操作仅在外部增加了一层由第二信道组和扩展信道组进行二次极化的操作,编码复杂度仍然保持线性,相比于传统打孔压缩的方式,降低了极化码在固态硬盘上应用的难度,仍保持了低计算复杂度的特点,增加了极化码在SSD中应用的竞争力。
图9为本发明实施例提供的另一种基于极化码的数据编解码装置的结构示意图,包括数据读取单元91、集合选取单元92、信道类型确定单元93和译码单元94;
数据读取单元91,用于在获取到译码指令的情况下,从闪存中读取待译码数据;
集合选取单元92,用于从编码索引表中选取出与待译码数据匹配的信息位集合;其中,信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到;
信道类型确定单元93,用于根据信息位集合,确定出待译码数据中各子数据所属的信道类型;
译码单元94,用于按照待译码数据中各子数据所属的信道类型对应的译码方式,对各子数据进行译码以得到译码结果。
在一些实施例中,译码单元用于对于属于第一信道组的所有第一待译码子数据,根据各第一待译码子数据的度量值,确定出各第一待译码子数据对应的第一译码结果。
在一些实施例中,译码单元用于将度量值大于或等于0的第一待译码子数据的第一译码结果设置为0;
将度量值小于0的第一待译码子数据的第一译码结果设置为1。
在一些实施例中,译码单元用于对于不属于第一信道组并且不属于第三信道组的第二待译码子数据,将第二待译码子数据的译码结果设置为0。
在一些实施例中,译码单元包括判断子单元、第一确定子单元、第二确定子单元、第三确定子单元、更新子单元和剪枝子单元;
判断子单元,用于对于属于第三信道组的第三待译码子数据,判断第三待译码子数据的通道索引是否属于第二信道组的通道索引;
第一确定子单元,用于在第三待译码子数据的通道索引属于第二信道组的通道索引的情况下,根据第三待译码子数据的通道索引在第二信道组中的位置顺序,确定出与第三待译码子数据匹配的二次极化操作的目标通道;
第二确定子单元,用于在第三待译码子数据的通道索引不属于第二信道组的通道索引的情况下,从第二信道组中获取与第三待译码子数据的通道索引相对应的目标通道;
第三确定子单元,用于根据第三待译码子数据的对数似然比以及目标通道上数据的对数似然比,确定出译码结果;
更新子单元,用于将译码结果反馈给第三待译码子数据,以得到更新后的第三待译码子数据;
剪枝子单元,用于根据更新后的第三待译码子数据,对待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果。
在一些实施例中,剪枝子单元用于在更新后的第三待译码子数据取值为0的情况下,删除译码路径图中路径值为1的路径;在更新后的第三待译码子数据取值为1的情况下,删除译码路径图中路径值为0的路径;将译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果。
在一些实施例中,剪枝子单元用于将L条路径各自的路径值拼接作为每个路径的译码结果;其中,L表示预设列表宽度。
在一些实施例中,还包括作为单元;
作为单元,用于将通过循环冗余校验并且度量值最大的一条路径所对应的译码结果作为最终的译码结果。
图9所对应实施例中特征的说明可以参见图1至图7所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,在获取到译码指令的情况下,从闪存中读取待译码数据;从编码索引表中选取出与待译码数据匹配的信息位集合;其中,信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;第三信道组由第二信道组和扩展信道组二次极化操作得到。根据信息位集合,确定出待译码数据中各子数据所属的信道类型;按照待译码数据中各子数据所属的信道类型对应的译码方式,对各子数据进行译码以得到译码结果。本发明的有益效果在于,通过信息位集合可以清楚的获知各子数据所属的信道类型,从而按照信道类型对应的译码方式,可以完成各子数据的译码。编码操作仅在外部增加了一层极化,编码复杂度仍然保持线性;译码操作将外层极化作为边信息对内部译码过程进行辅助和剪枝操作,降低了计算复杂度。该实现方式可以很好的适用于固态硬盘,增加了极化码在固态硬盘中应用的竞争力。
图10为本发明实施例提供的一种电子设备的结构图,如图10所示,电子设备包括:存储器10,用于存储计算机程序;
处理器11,用于执行计算机程序时实现如上述实施例基于极化码的数据编解码方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器11可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器11可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器11也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器11可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器11还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器10可以包括一个或多个存储介质,该存储介质可以是非暂态的。存储器10还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器10至少用于存储以下计算机程序1001,其中,该计算机程序被处理器11加载并执行之后,能够实现前述任一实施例公开的基于极化码的数据编解码方法的相关步骤。另外,存储器10所存储的资源还可以包括操作系统1002和数据1003等,存储方式可以是短暂存储或者永久存储。其中,操作系统1002可以包括Windows、Unix、Linux等。数据1003可以包括但不限于编码索引表等。
在一些实施例中,电子设备还可包括有显示屏12、输入输出接口13、通信接口14、电源15以及通信总线16。
本领域技术人员可以理解,图10中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的基于极化码的数据编解码方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对目前技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述基于极化码的数据编解码方法的步骤。
以上对本发明实施例所提供的一种基于极化码的数据编解码方法、装置和存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本发明所提供的一种基于极化码的数据编解码方法、装置和存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (21)
1.一种基于极化码的数据编解码方法,其特征在于,包括:
基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
将所述待编码数据写入所述第一信道组以及所述第三信道组,将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0;
根据所述第三信道组的信道索引,对所述第二信道组的数据和所述扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;
利用理论码长所对应的编码结构,对所述第一层编码输出数据进行编码处理,以得到所述理论码长对应的码字序列;
将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列。
2.根据权利要求1所述的基于极化码的数据编解码方法,其特征在于,所述基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合包括:
根据所述待编码数据写入的闪存对应的擦写次数,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述编码索引表中包含了不同区间各自对应的信息位集合,不同区间有其各自对应的擦写次数范围。
3.根据权利要求1所述的基于极化码的数据编解码方法,其特征在于,针对于所述编码索引表的建立过程,所述方法包括:
根据不同存储单元的擦写次数,划分不同的区间;
依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度;其中,所述目标区间为所有区间中的任意一个区间;
基于实际码长、实际码率以及所述目标区间内各信道的可靠度,构建出所述目标区间对应的信息位集合;其中,所述信息位集合包括用于存储数据的各信道的信道索引。
4.根据权利要求3所述的基于极化码的数据编解码方法,其特征在于,所述基于实际码长、实际码率以及所述目标区间内各信道的可靠度,构建出所述目标区间对应的信息位集合包括:
根据所述实际码率和极化码的理论码长,确定出信息位长度;
依据所述信息位长度、所述实际码长、所述理论码长以及所述理论码长对应的各信道的可靠度,从各所述信道中选取出所述第一信道组和所述第二信道组;
将所述第一信道组包含的各第一信道的信道索引以及所述第二信道组包含的各第二信道的信道索引分别记录至所述信息位集合;
将所述第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到所述第三信道组;其中,所述扩展信道组包括根据所述理论码长与实际码长的偏差所补充的信道;
将所述第三信道组包含的各信道的信道索引记录至所述信息位集合。
5.根据权利要求4所述的基于极化码的数据编解码方法,其特征在于,所述依据所述信息位长度、所述实际码长、所述理论码长以及所述理论码长对应的各信道的可靠度,从各所述信道中选取出所述第一信道组和所述第二信道组包括:
根据所述理论码长对应的各信道的可靠度,对各所述信道进行排序;
从排序后的各所述信道中选取出可靠度最高的K-(M-N)个信道作为所述第一信道组;其中,K表示信息位长度,M表示实际码长,N表示理论码长;
从剩余信道中选取出可靠度最高的(M-N)个信道作为所述第二信道组。
6.根据权利要求4所述的基于极化码的数据编解码方法,其特征在于,所述将所述第二信道组中包含的各第二信道与扩展信道组中包含的各扩展信道进行二次极化操作,以得到所述第三信道组包括:
将所述第二信道组中包含的各第二信道与所述扩展信道组中包含的各扩展信道成对进行二次极化操作;
从二次极化后的每对信道中选取可靠度最高的信道作为增强信道。
7.根据权利要求4所述的基于极化码的数据编解码方法,其特征在于,所述根据所述实际码率和极化码的理论码长,确定出信息位长度包括:
计算所述实际码率与所述理论码长的乘积值;
将所述乘积值向上取整作为所述信息位长度。
8.根据权利要求3所述的基于极化码的数据编解码方法,其特征在于,所述依据目标区间内极化码的信道转移概率,确定出目标区间内各信道的可靠度包括:
对所述目标区间内极化码的信道转移概率进行处理,以得到所述目标区间内各信道的错误概率;其中,所述错误概率的取值与可靠度成反比。
9.根据权利要求1所述的基于极化码的数据编解码方法,其特征在于,在所述将所述待编码数据写入所述第一信道组以及所述第三信道组,将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0之前,还包括:
在获取到所述待编码数据的情况下,根据信息位长度以及循环冗余码校验对应的冗余长度,确定出编码长度;
从所述待编码数据中读取与所述编码长度对应的信息序列;
对所述信息序列进行循环冗余码校验编码,以得到最终的所述待编码数据。
10.根据权利要求1所述的基于极化码的数据编解码方法,其特征在于,在所述将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列之后,还包括:
将所述编码后的码字序列存储至闪存。
11.一种基于极化码的数据编解码方法,其特征在于,包括:
在获取到译码指令的情况下,从闪存中读取待译码数据;
从编码索引表中选取出与所述待译码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
根据所述信息位集合,确定出所述待译码数据中各子数据所属的信道类型;
按照所述待译码数据中各所述子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果。
12.根据权利要求11所述的基于极化码的数据编解码方法,其特征在于,所述按照所述待译码数据中各所述子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于属于所述第一信道组的所有第一待译码子数据,根据各所述第一待译码子数据的对数似然比,确定出各所述第一待译码子数据对应的第一译码结果。
13.根据权利要求12所述的基于极化码的数据编解码方法,其特征在于,所述根据各所述第一待译码子数据的对数似然比,确定出各所述第一待译码子数据对应的第一译码结果包括:
将对数似然比大于或等于0的第一待译码子数据的第一译码结果设置为0;
将对数似然比小于0的第一待译码子数据的第一译码结果设置为1。
14.根据权利要求11所述的基于极化码的数据编解码方法,其特征在于,所述按照所述待译码数据中各所述子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于不属于所述第一信道组并且不属于所述第三信道组的第二待译码子数据,将所述第二待译码子数据的译码结果设置为0。
15.根据权利要求11所述的基于极化码的数据编解码方法,其特征在于,所述按照所述待译码数据中各所述子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果包括:
对于属于所述第三信道组的第三待译码子数据,判断所述第三待译码子数据的通道索引是否属于所述第二信道组的通道索引;
在所述第三待译码子数据的通道索引属于所述第二信道组的通道索引的情况下,根据所述第三待译码子数据的通道索引在所述第二信道组中的位置顺序,确定出与所述第三待译码子数据匹配的二次极化操作的目标通道;
在所述第三待译码子数据的通道索引不属于所述第二信道组的通道索引的情况下,从所述第二信道组中获取与所述第三待译码子数据的通道索引相对应的目标通道;
根据所述第三待译码子数据的对数似然比以及所述目标通道上数据的对数似然比,确定出译码结果;
将所述译码结果反馈给所述第三待译码子数据,以得到更新后的第三待译码子数据;
根据所述更新后的第三待译码子数据,对所述待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果。
16.根据权利要求15所述的基于极化码的数据编解码方法,其特征在于,所述根据所述更新后的第三待译码子数据,对所述待译码数据对应的译码路径图进行剪枝,以得到最终的译码结果包括:
在所述更新后的第三待译码子数据取值为0的情况下,删除所述译码路径图中路径值为1的路径;
在所述更新后的第三待译码子数据取值为1的情况下,删除所述译码路径图中路径值为0的路径;
将所述译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果。
17.根据权利要求16所述的基于极化码的数据编解码方法,其特征在于,所述将所述译码路径图中剩余的所有路径的路径值拼接作为最终的译码结果包括:
将L条路径各自的路径值拼接作为每个路径的译码结果;其中,L表示预设列表宽度。
18.根据权利要求17所述的基于极化码的数据编解码方法,其特征在于,在所述将L条路径各自的路径值拼接作为每个路径的译码结果之后,还包括:
将通过循环冗余校验并且度量值最大的一条路径所对应的译码结果作为最终的译码结果。
19.一种基于极化码的数据编解码装置,其特征在于,包括选取单元、写入单元、置零单元、第一编码单元、第二编码单元和合并单元;
所述选取单元,用于基于待编码数据写入的闪存的噪声分布,从编码索引表中选取出与所述待编码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
所述写入单元,用于将所述待编码数据写入所述第一信道组以及所述第三信道组;
所述置零单元,用于将实际码长对应的所有信道中除所述第一信道组和所述第三信道组外的剩余信道全部置0;
所述第一编码单元,用于根据所述第三信道组的信道索引,对所述第二信道组的数据和所述扩展信道组的数据进行成对的编码处理,以得到第一层编码输出数据;
所述第二编码单元,用于利用理论码长所对应的编码结构,对所述第一层编码输出数据进行编码处理,以得到所述理论码长对应的码字序列;
所述合并单元,用于将所述理论码长对应的码字序列与所述扩展信道组对应的数据合并作为编码后的码字序列。
20.一种基于极化码的数据编解码装置,其特征在于,包括数据读取单元、集合选取单元、信道类型确定单元和译码单元;
所述数据读取单元,用于在获取到译码指令的情况下,从闪存中读取待译码数据;
所述集合选取单元,用于从编码索引表中选取出与所述待译码数据匹配的信息位集合;其中,所述信息位集合中包括可靠度第一高的第一信道组的信道索引、可靠度第二高的第二信道组的信道索引、以及第三信道组的信道索引;所述第三信道组由所述第二信道组和扩展信道组二次极化操作得到;
所述信道类型确定单元,用于根据所述信息位集合,确定出所述待译码数据中各子数据所属的信道类型;
所述译码单元,用于按照所述待译码数据中各子数据所属的信道类型对应的译码方式,对各所述子数据进行译码以得到译码结果。
21.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10任意一项和/或权利要求11至18任意一项所述基于极化码的数据编解码方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348188.4A CN117176185B (zh) | 2023-10-18 | 2023-10-18 | 一种基于极化码的数据编解码方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311348188.4A CN117176185B (zh) | 2023-10-18 | 2023-10-18 | 一种基于极化码的数据编解码方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117176185A CN117176185A (zh) | 2023-12-05 |
CN117176185B true CN117176185B (zh) | 2024-02-09 |
Family
ID=88937651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311348188.4A Active CN117176185B (zh) | 2023-10-18 | 2023-10-18 | 一种基于极化码的数据编解码方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117176185B (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015108995A1 (en) * | 2014-01-17 | 2015-07-23 | California Institute Of Technology | Asymmetric error correction and flash-memory rewriting using polar codes |
CN105811998A (zh) * | 2016-03-04 | 2016-07-27 | 深圳大学 | 一种基于密度演进的极化码构造方法及极化码编译码系统 |
CN106685434A (zh) * | 2016-12-28 | 2017-05-17 | 北京航空航天大学 | 一种部分极化的polar码的构造方法 |
CN107425857A (zh) * | 2017-06-19 | 2017-12-01 | 华为技术有限公司 | 一种极化码编译码方法及装置 |
WO2018142839A1 (en) * | 2017-02-06 | 2018-08-09 | Mitsubishi Electric Corporation | Irregular polar coding |
CN108540260A (zh) * | 2017-03-02 | 2018-09-14 | 华为技术有限公司 | 用于确定Polar码编解码的方法、装置和设备 |
CN109257140A (zh) * | 2017-07-14 | 2019-01-22 | 华为技术有限公司 | 一种极化信道可靠度排序的方法、极化码编码方法及装置 |
CN109525360A (zh) * | 2017-09-18 | 2019-03-26 | 华为技术有限公司 | 极化码的速率匹配的方法和装置 |
CN109981224A (zh) * | 2019-04-04 | 2019-07-05 | 西安电子科技大学 | 一种深空通信信道编译码系统及其方法 |
CN110868226A (zh) * | 2019-11-19 | 2020-03-06 | 武汉理工大学 | 基于混合极化核的极化码的编译码方法 |
CN111193519A (zh) * | 2020-01-09 | 2020-05-22 | 广西大学 | 一种基于辅助译码比特的Polar码编译码方法 |
CN111200444A (zh) * | 2020-01-16 | 2020-05-26 | 西安电子科技大学 | 基于可靠性的系统极化码删余方法及系统 |
CN114285418A (zh) * | 2021-12-14 | 2022-04-05 | 重庆邮电大学 | 一种改进的极化码epc-ms-scl译码方法 |
CN114598331A (zh) * | 2022-03-08 | 2022-06-07 | 深圳市国电科技通信有限公司 | Polar码的编码方法、编译码方法及装置 |
CN115473536A (zh) * | 2021-06-11 | 2022-12-13 | 华为技术有限公司 | 一种极化码编码方法、译码方法及装置 |
CN116318551A (zh) * | 2023-03-21 | 2023-06-23 | 重庆邮电大学 | 一种LDPC-Polar级联系统的中间信道选择及译码方法 |
CN116318185A (zh) * | 2023-02-28 | 2023-06-23 | 西安电子科技大学 | 一种Polar码编译码方法和利用该方法的低频无线通信系统 |
CN116470987A (zh) * | 2022-01-17 | 2023-07-21 | 华为技术有限公司 | 编码方法、解码方法和通信装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210383220A1 (en) * | 2020-06-04 | 2021-12-09 | Ramot At Tel-Aviv University Ltd. | Deep neural network ensembles for decoding error correction codes |
US20230198672A1 (en) * | 2021-12-17 | 2023-06-22 | Samsung Electronics Co., Ltd. | Autoencoders with list decoding for reliable data transmission over noisy channels and methods thereof |
US11791844B2 (en) * | 2021-12-22 | 2023-10-17 | Huawei Technologies Co., Ltd. | Systems and methods for using special nodes for polar encoding in polar codes |
-
2023
- 2023-10-18 CN CN202311348188.4A patent/CN117176185B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015108995A1 (en) * | 2014-01-17 | 2015-07-23 | California Institute Of Technology | Asymmetric error correction and flash-memory rewriting using polar codes |
CN105811998A (zh) * | 2016-03-04 | 2016-07-27 | 深圳大学 | 一种基于密度演进的极化码构造方法及极化码编译码系统 |
CN106685434A (zh) * | 2016-12-28 | 2017-05-17 | 北京航空航天大学 | 一种部分极化的polar码的构造方法 |
WO2018142839A1 (en) * | 2017-02-06 | 2018-08-09 | Mitsubishi Electric Corporation | Irregular polar coding |
CN108540260A (zh) * | 2017-03-02 | 2018-09-14 | 华为技术有限公司 | 用于确定Polar码编解码的方法、装置和设备 |
CN107425857A (zh) * | 2017-06-19 | 2017-12-01 | 华为技术有限公司 | 一种极化码编译码方法及装置 |
CN109257140A (zh) * | 2017-07-14 | 2019-01-22 | 华为技术有限公司 | 一种极化信道可靠度排序的方法、极化码编码方法及装置 |
CN109525360A (zh) * | 2017-09-18 | 2019-03-26 | 华为技术有限公司 | 极化码的速率匹配的方法和装置 |
CN109981224A (zh) * | 2019-04-04 | 2019-07-05 | 西安电子科技大学 | 一种深空通信信道编译码系统及其方法 |
CN110868226A (zh) * | 2019-11-19 | 2020-03-06 | 武汉理工大学 | 基于混合极化核的极化码的编译码方法 |
CN111193519A (zh) * | 2020-01-09 | 2020-05-22 | 广西大学 | 一种基于辅助译码比特的Polar码编译码方法 |
CN111200444A (zh) * | 2020-01-16 | 2020-05-26 | 西安电子科技大学 | 基于可靠性的系统极化码删余方法及系统 |
CN115473536A (zh) * | 2021-06-11 | 2022-12-13 | 华为技术有限公司 | 一种极化码编码方法、译码方法及装置 |
CN114285418A (zh) * | 2021-12-14 | 2022-04-05 | 重庆邮电大学 | 一种改进的极化码epc-ms-scl译码方法 |
CN116470987A (zh) * | 2022-01-17 | 2023-07-21 | 华为技术有限公司 | 编码方法、解码方法和通信装置 |
CN114598331A (zh) * | 2022-03-08 | 2022-06-07 | 深圳市国电科技通信有限公司 | Polar码的编码方法、编译码方法及装置 |
CN116318185A (zh) * | 2023-02-28 | 2023-06-23 | 西安电子科技大学 | 一种Polar码编译码方法和利用该方法的低频无线通信系统 |
CN116318551A (zh) * | 2023-03-21 | 2023-06-23 | 重庆邮电大学 | 一种LDPC-Polar级联系统的中间信道选择及译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117176185A (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113032178B (zh) | 存储器控制器及快闪存储器的存取方法 | |
US8250437B2 (en) | Memory system and control method for the same | |
CN103888148B (zh) | 一种动态阈值比特翻转的ldpc码硬判决译码方法 | |
US8996972B1 (en) | Low-density parity-check decoder | |
US20100223538A1 (en) | Semiconductor memory apparatus and method of decoding coded data | |
CN106341136A (zh) | Ldpc解码方法及其装置 | |
US11768732B2 (en) | Soft decoding method using LLR conversion table | |
US9032278B2 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
KR20110031322A (ko) | 복잡도를 줄인 ldpc 디코더 | |
CN112929033A (zh) | 基于深度学习的MLC型NAND闪存Polar-RNNA量化器的优化方法 | |
US8832525B2 (en) | Memory controller with low density parity check code decoding capability and relevant memory controlling method | |
TW201322646A (zh) | 具有減少的記憶體與功率需求之錯誤校正解碼 | |
CN109361403A (zh) | Ldpc译码方法、ldpc译码器及其存储设备 | |
CN111294061B (zh) | 一种原始比特错误率感知的译码软判决延迟降低方法 | |
US20150149856A1 (en) | Decoding with log likelihood ratios stored in a controller | |
CN109032834B (zh) | 一种基于Polar码的码率自适应方法 | |
CN103354101A (zh) | 一种用于快闪存储器纠错的ldpc码解码装置 | |
KR20160075001A (ko) | 플래시 메모리 시스템 동작 방법 | |
CA2918136A1 (en) | High sum-rate write-once memory | |
CN117176185B (zh) | 一种基于极化码的数据编解码方法、装置和存储介质 | |
CN103137213A (zh) | 具有低密度奇偶校验码译码能力的存储器控制装置及方法 | |
CN110071726B (zh) | 多层单元闪存中联合ldpc码的构造方法及其译码装置 | |
CN111130567A (zh) | 添加噪声扰动和比特翻转的极化码置信传播列表译码方法 | |
US9859925B2 (en) | Low-complexity flash memory data-encoding techniques using simplified belief propagation | |
CN107423159B (zh) | 一种基于闪存错误模式提升ldpc译码性能的方法 |
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 |