CN114826283A - 译码方法、装置、设备以及计算机可读存储介质 - Google Patents
译码方法、装置、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114826283A CN114826283A CN202110112883.5A CN202110112883A CN114826283A CN 114826283 A CN114826283 A CN 114826283A CN 202110112883 A CN202110112883 A CN 202110112883A CN 114826283 A CN114826283 A CN 114826283A
- Authority
- CN
- China
- Prior art keywords
- data
- decoding
- target
- storage
- row
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种译码方法、装置、设备以及计算机可读存储介质,属于通信技术领域。由于码字中m行n列的数据能够组成多个维度的数据,例如m行数据或者n列数据,而本方法通过将码字中m行n列的数据存储在一个存储地址,便于从该存储地址中读取到码字中m行n列的数据,以兼容码字中各个维度的数据存储和读取,且便于后续对读取到的码字中多个维度的数据进行多维译码,例如行向译码或者列向译码。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种译码方法、装置、设备以及计算机可读存储介质。
背景技术
前向纠错编码(forward error coding,FEC)以较小的额外开销提供可靠的数字传输的功能,在通信系统中得到了广泛应用。尤其是FEC中的多维代数码能够在较低的复杂度和功耗下提供较高的性能增益,例如乘积码(turbo product code,TPC)、阶梯码(staircase code)以及连续相间的BCH码(continuously interleaved Bose RayHocquenghem,CIBCH)等。
目前,一般译码设备通过迭代译码的方式,对多维代数码进行译码,在每次迭代译码的过程中,译码设备均对缓存中多维代数码的各个维度的数据分别进行至少一次译码,以TPC码字为例,TPC码字的每次迭代译码过程均包含一次行译码过程和一次列译码过程,其中,行译码过程是指译码设备对TPC码字中的各个行向子码进行译码,列译码过程是指译码设备对TPC码字中的各个列向子码进行译码。
由于译码设备是对多维代数码中的数据从多个维度进行译码,则在对多维代数码进行迭代译码的过程中,译码设备需要从缓存中读取多维代数码中各个维度的数据,那么,如何兼容多维代数码中各个维度的数据存储和读取,是译码过程中亟待解决的一个问题。
发明内容
本申请实施例提供了一种译码方法、装置、设备以及计算机可读存储介质,能够兼容码字中各个维度的数据存储和读取。该技术方案如下:
第一方面,提供了一种译码方法,所述方法包括:
将码字存储在多个存储地址,其中,一个存储地址用于存储所述码字中m行n列的m*n个数据,所述m和所述n均是大于或等于1的整数;对于所述多个存储地址中的任一存储地址,从所述任一存储地址中读取所述任一存储地址中存储的m*n个数据;对读取到的m*n个数据进行译码。
由于码字中m行n列的数据能够组成多个维度的数据,例如m行数据或者n列数据,而本方法通过将码字中m行n列的数据存储在一个存储地址,便于从该存储地址中读取到码字中m行n列的数据,以兼容码字中各个维度的数据存储和读取,且便于后续对读取到的码字中多个维度的数据进行多维译码,例如行向译码或者列向译码。
在一种可能的实现方式中,所述对读取到的m*n个数据进行译码包括:
若本次译码过程为行向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定m个行数据组;对所述m个行数据组进行译码,其中,一个行数据组包括所述读取到的m*n个数据中的n个数据,所述n个数据在所述码字中位于同一行。
基于上述可能的实现方式,对数据组中的每一行数据进行译码,从而能够实现对该数据组的行向译码,也即是实现了对该数据组在行向这一维度上的译码。
在一种可能的实现方式中,所述对所述m个行数据组进行译码包括:
将所述m个行数据组分别发送至m个第一译码节点,由每个第一译码节点对接收到的行数据组进行译码。
基于上述可能的实现方式,通过将m个行数据组分别发送至m个第一译码节点,由每个第一译码节点分别对接收到一个行数据组进行译码,从而实现并行对m个行数据组进行译码,提高了数据组的译码效率。
在一种可能的实现方式中,所述对读取到的m*n个数据进行译码包括:
若本次译码过程为列向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定n个列数据组;对所述n个列数据组进行译码,其中,一个列数据组包括所述读取到的m*n个数据中的m个数据,所述m个数据在所述码字中位于同一列。
基于上述可能的实现方式,对数据组中的每一列数据进行译码,从而能够实现对该数据组的列向译码,也即是实现了对该数据组在列向这一维度上的译码。
在一种可能的实现方式中,所述对所述n个列数据组进行译码包括:
将所述n个列数据组分别发送至n个第二译码节点,由每个第二译码节点对接收到的列数据组进行译码。
基于上述可能的实现方式,通过将n个行数据组分别发送至n个第二译码节点,由每个第二译码节点分别对接收到一个列数据组进行译码,从而实现并行对n个列数据组进行译码,提高了数据组的译码效率。
在一种可能的实现方式中,所述对读取到的m*n个数据进行译码之后,所述方法还包括:
将所述任一存储地址中存储的m*n个数据修改为m*n个译码数据,所述m*n个译码数据为所述读取到的m*n个数据译码后的数据。
在一种可能的实现方式中,所述将码字存储在多个存储地址包括:
按照m行n列的粒度,将所述码字中的数据划分成多个数据组;将所述多个数据组存储在所述多个存储地址,其中,一个数据组包括所述码字中m行n列的m*n个数据,一个存储地址中存储一个数据组。
在一种可能的实现方式中,所述多个存储地址属于同一个存储节点。
在一种可能的实现方式中,所述多个存储地址属于多个存储节点;
所述将所述多个数据组存储在所述多个存储地址包括:
将所述多个数据组合并为多个数据集;将所述多个数据集中的数据组存储在所述多个存储地址,其中,一个数据集包括所述多个数据组中相邻的多个数据组,一个存储地址中存储一个数据组,同一数据集中的多个数据组存储在不同存储节点内的存储地址中。
在一种可能的实现方式中,所述将所述多个数据集中的数据组存储在所述多个存储地址之后,所述方法还包括:
对于所述多个数据集中的任一数据集,从所述多个存储节点读取所述任一数据集的多个数据组。
基于上述可能的实现方式,可以一次从多个存储节点读取出一个数据集,以便对读取到的数据集中的多个数据组并行译码,提高了译码过程中的并行度以及译码效率。
在一种可能的实现方式中,所述码字包括多个子码,所述将码字存储在多个存储地址之后,所述方法还包括:
对于所述多个子码中相邻的多个目标子码,从所述多个数据集中确定与所述多个目标子码相关的至少一个目标数据集,其中,所述至少一个目标数据集包括与所述多个目标子码相关的至少一个目标数据组,一个目标数据组包括所述多个目标子码中部分目标子码的数据;
从所述多个存储节点读取所述至少一个目标数据集中的目标数据组;对读取到的目标数据组进行译码。
在一种可能的实现方式中,所述读取到的目标数据组包括至少一个奇目标数据组以及至少一个偶目标数据组,一个奇目标数据组为位于所述码字的奇数行层的目标数据组,一个偶目标数据组为位于所述码字的偶数行层的目标数据组;
所述对读取到的多个目标数据组进行译码包括:
将所述至少一个奇目标数据组发送给多个第三译码节点,由所述多个第三译码节点对接收到的奇目标数据组进行译码;将所述至少一个偶目标数据组发送给多个第四译码节点,由所述多个第四译码节点对接收到的偶数据组进行译码。
第二方面,提供了一种译码装置,用于执行上述译码方法。具体地,该译码装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的译码方法的功能模块。
第三方面,提供一种译码设备,该译码设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载并执行以实现如上述译码方法所执行的操作。
第四方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现如上述译码方法所执行的操作。
第五方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,译码设备的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种TCP码字的结构示意图;
图2是本申请实施例提供的一种OFEC码字的结构示意图;
图3是本申请实施例提供的一种译码系统的示意图;
图4是本申请实施例提供的一种译码设备的结构示意图;
图5是本申请实施例提供的一种译码方法的流程图;
图6是本申请实施例提供的一种码字存储的示意图;
图7是本申请实施例提供的一种迭代译码的示意图;
图8是本申请实施例提供的一种译码方法的流程图;
图9是本申请实施例提供的一种码字存储的示意图;
图10是本申请实施例提供的一种TPC码字中数据组与存储节点之间的对应关系示意图;
图11是本申请实施例提供的一种卷积码的译码过程;
图12是本申请实施例提供的一种OFEC码字译码过程的示意图;
图13是本申请实施例提供的一种译码装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于理解本申请所提供的译码过程,在此先对以下多种码字的码字结构进行如下介绍。
1、TPC码字
图1是本申请实施例提供的一种TCP码字的结构示意图,参见图1,图1中的TCP码字包括R行K列的R*K个数据,每个数据占用1个比特位,其中,R和K均为大于1的整数。在一种可能的实现方式中,该TPC码字包括多个子码,每个子码包括该TPC码字中的多个数据。例如该TPC码字中的每一行数据为一个子码,或者,该TCP码字中的每一列数据为一个子码。
2、开放式前向纠错编码(open FEC,OFEC)码字
图2是本申请实施例提供的一种OFEC码字的结构示意图,参见图2,该OFEC码字为无线延伸的卷积码。该OFEC码字包括多行多列的多个数据,每个数据占用一个比特位。该OFEC码字中的数据基于生成的先后顺序可以分为历史数据和未来数据,以该OFEC码字中的某一行数据为例,该行数据的下一行数据相对于该行数据为未来数据,而该行数据相对于该行数据的下一行数据为历史数据。
在一种可能的实现方式中,该OFEC码字包括多个块(block),每个block包括m行n列的m*n个数据,每个数据占用一个比特位,其中,m和n均为大于1的整数,例如图2中的m=n=16。
OFEC码字中处于同一行的多个block为一个行层,例如图2所示的每个行层包括8个block,若m=n=16,则每个行层包括8*6*16个数据。可选地,每个行层用一个行层号来标识,例如图2中的OFEC码字包括[-∞,+∞]个行层,每个行层具有一个行层号。为了便于描述,将行层号为奇数的行层记为奇数行层,行层号为偶数的行层记为偶数行层。其中,相邻的一奇一偶两个行层为一个OFEC帧,也即是一个OFEC帧包括2个相邻的基数行层层和偶数行层,图2中的一个OFEC帧包括8*16*16*2=128*16*2个数据。
OFEC码字中处于同一列的多个block为一个列层。可选地,每个列层用一个列层号来标识,例如图2中的OFEC码字包括列层0至7。在一个可能的实现方式中,码字中一个数据的位置信息包括该数据所在的目标行层的行层号、该数据所在的目标列层的列层号、该数据在目标行层中所在行的行号以及该数据在目标列层中所在列的列号。以图2所示的该OFEC码字中-2行层中第一个block内的2个数据为例,位于该block内的第1行第1列的数据的位置信息表示为[-2,0,0,0],其中,-2,0,0,0分别用于指示-2行层,0列层、-2行层中的第1行以及0列层中的第1列;位于该block内的第2行第1列的数据的位置信息可以表示为[-2,0,1,0],其中,-2,0,1,0分别用于指示-2行层,0列层、-2行层中的第2行以及0列层中的第1列;需要说明的是,图2中该block处所标记B为该block的边长,可以理解为对于一个m*n大小的block,m和n均等于B。
在一种可能的实现方式中,OFEC码字包括多个子码,每个子码的前一半数据由OFEC码字中斜向的多个短列以及横向的多个短列组成,其中,斜向的多个短列中每个短列为不同行层中的一个block内的一列数据,横向的多个短列中每个短列为一个block内的一行数据,且横向的多个短列处于一个行层中的同一行。以图2所示的OFEC码字中的子码为BCH(256,239)子码,每个block包括16*16个数据为例,在图2中相同线型的多个短列构成一个BCH(256,239)子码,一种线型的多个短列包括排成斜线的8个短列以及位于同一行的8个短列,其中,排成斜线的8个短列为BCH(256,239)子码中斜向的多个短列,是BCH(256,239)子码的前128比特的数据,位于同一行的8个短列为BCH(256,239)子码中横向的多个短列,是BCH(256,239)子码的后128比特的数据。
从图2可知,OFEC码字中子码的数据是交织在一起的,该OFEC码字中的交织关系用下述公式(1)-(2)来表示。
Ift<W:{(H^1)–2G-2W/B+2[t/B],[t/B],(t%B)^p,p} (1)
Ift≥W:{H,[(t–W)/B],p,(t%B)^p} (2)
其中,t为OFEC码字中一个子码的某一个数据在该子码中的位置序号,例如该子码为BCH(256,239)子码,BCH(256,239)子码中第一个比特位上的数据的位置序号为1,第二个比特位上的数据的位置序号为2。W为该子码的码长的一半,例如若该子码为BCH(256,239)子码,则W的取值为128。(H^1)–2G-2W/B+2[t/B]为当该数据为该子码的前半部分数据时,该数据所在行层的行层号。其中,B为一个block的边长,例如取值为16。[t/B]为当该数据为该子码的前半部分数据时,该数据所在列层的列层号。例如,t=1,B=16,0<1/16<1,则0为该数据所在列层的列层号,再例如,t=17,B=16,1<17/16<2,则1为该数据所在列层的列层号。G为大于等于1的整数,用于表示保护间隔,连续的2G+2个行层中各行数据之间相互无编码关系,则译码设备可以将连续的2G+2个行层记为一个复帧,并行对一个复帧进行编译码。(t%B)^p为当该数据为该子码的前半部分数据时,该数据所在列的行号,其中,“%”用于指示下取整操作,“^”用于指示按比特进行异或操作。当该数据为该子码的前半部分数据时,p为该数据所在列的列号,当该数据为该子码的后半部分数据时,p为该数据所在行的行号。H为当该数据为该子码的后半部分数据时,该数据所在行层的行层号。[(t–W)/B]为当该数据为该子码的后半部分数据时,该数据所在列层的列层号。通过以上对公式(1)-(2)的描述可知,上述公式(1)和(2)分别为子码前半部分数据的位置信息和后半部分数据的位置信息。
图3是本申请实施例提供的一种译码系统的示意图,参见图3,该系统300包括数据处理节点301、存储节点302、数据分发节点303以及译码节点304。其中,该数据处理节点301用于获取码字,并将获取到的码字存储在存储节点302。在一种可能的实现方式中,该数据处理节点301将码字中的数据划分为多个数据组,每个数据组包括该码字中m行n列的m*n个数据,并将每个数据组存储在存储节点302内的一个存储地址中。在对该码字进行行迭代译码的过程中,该数据分发节点303一次从该存储节点302的一个存储地址中读取出一个数据组;若本次译码过程为行译码过程,该数据分发节点303确定读取到该数据组中的多个行数据组,并将每个行数据组分发至一个译码节点304,由多个译码节点304对接收到的行数据组进行译码,从而由多个译码节点304并行实现在一个数据组上一个维度的数据译码过程。若本次译码过程为列译码过程,该数据分发节点303确在定读取到该数据组中的多个列数据组,并将每个列数据组分发至一个译码节点304,由多个译码节点304对接收到的列数据组进行译码,从而由多个译码节点304并行实现在一个数据组上另一个维度的数据译码过程。
在另一种可能的实现方式中,该数据处理节点301将码字中相邻的多个数据组合并为一个数据集,并将该数据集中的多个数据组存储在多个存储节点302内的存储地址,且该数据集中的多个数据组位于不同的存储节点302内。在对该码字进行行迭代译码的过程中,该数据分发节点303一次从多个存储节点302读取出该数据集的多个数据组。若本次译码过程为行译码过程,该数据分发节点303确定读取到的该数据集中各个数据组的多个行数据组,并将各个数据组的每个行数据组分发至一个译码节点304,此时,一个译码节点304用于接收该数据集中各个数据组中的一个行数据组,由多个译码节点304对接收到的各个行数据组进行译码,从而由多个译码节点304并行实现在一个数据集上一个维度的数据译码过程。若本次译码过程为列译码过程,该数据分发节点303确定读取到的该数据集中各个数据组中的多个列数据组,并将各个数据组的每个列数据组分发至一个译码节点304,此时一个译码节点304用于接收该数据集中各个数据组中的一个列数据组,由多个译码节点304对接收到的各个列数据组进行译码,从而由多个译码节点304并行实现在一个数据集上另一个维度的数据译码过程。且相对于一次对一个数据组进行译码的过程,一次对一个数据集中多个数据组进行译码的过程并行度更高,译码效率更高。
在一种可能的实现方式中,译码节点304为具有译码功能的任一译码器,例如,软入软出(soft in soft out,SISO)BCH子译码器、硬入硬出(hard in hard out,HIHO)BCH子译码器等。
当每个译码节点304对一个行数据组或者一个列数据组译码完成后,该译码节点304将译码所得到译码数据原路写回该存储节点302内的存储地址中,以覆盖该存储地址中存储的相应数据。以便后续数据分发节点303再次从该存储地址中读取数据,并进行下一次译码过程,以实现迭代译码。
在一种可能的实现方式中,该系统300中各个节点为相互独立的装置。在另一种可能的实现方式中,该系统300可以部署在一个译码设备上,此时该系统300中的各个节点分别为该译码设备中的一个模块。当然,该系统300中多个节点的功能也可以由一个译码设备上的同一个模块来实现,或者由多个设备来实现。
例如图4所示的本申请实施例提供的一种译码设备的结构示意图,该译码设备400可因配置或性能不同而产生比较大的差异,包括一个或一个以上处理器401和一个或一个以上的存储器402,其中,所述处理器包括中央处理器(central processing units,CPU)所述存储器402中存储有至少一条程序代码,所述至少一条程序代码由所述处理器401加载并执行以实现下述各个方法实施例提供的译码方法。例如每个存储器401为一个存储节点,例如,当该译码设备400包括一个处理器401时,该一个处理器401用于实现数据处理节点、数据分发节点、以及译码节点的功能,当该译码设备400包括多个处理器401时,一个处理器401可以用于实现数据处理节点、数据分发节点以及译码节点中一个节点的功能。
当然,该译码设备400还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该译码设备400还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由终端中的处理器执行以完成下述实施例中的译码方法。例如,该计算机可读存储介质是非临时计算机可读存储介质,如只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-onlymemory,CD-ROM)、磁带、软盘和光数据存储设备等。
示例性地,为了进一步说明,译码设备采用数据组的存储方式和读取方式,来存储和读取码字,并通过对读取到的数据组进行译码,来实现码字的译码过程,参见图5所示的本申请实施例提供的一种译码方法的流程图。
501、译码设备获取码字。
该码字为待译码的码字,该码字为任一类型的多维代码,例如TPC码字、卷积码字、阶梯码字以及CIBCH等。该码字的维度大于或等于2,当该码字为二维代码时,该码字包括R行K列的R*K个数据,每个数据占用1个比特位,例如图1所示的TPC码字。当该码字为三维代码时,该码字包括高度为F的R行K列的F*R*K个数据,每个数据占用1个比特位,其中,F为大于1的整数。在此本申请实施例对该码字的类型以及维度不做限定。
在一种可能的实现方式中,本步骤501由该译码设备中的数据处理节点来执行。该数据处理节点从目标节点获取该码字,该目标节点为存储有码字的任一节点,或者编码出该码字的任一节点。可选地,该目标节点是该译码设备以外的节点,例如当编码出该码字的编码设备和该译码设备不是同一个设备时,编码出该码字的编码设备为该目标节点,当该编码设备编码出该码字后,向该译码设备的数据传输接口发送该码字,该译码设备内的数据处理节点从该数据传输接口接收该码字。或者,该目标节点是该译码设备内的一个模块,例如该译码设备同时还具有编码的功能,该译码设备中的目标节点编码出该码字后,将该码字发送至该译码设备中的数据处理节点。
502、译码设备将该码字存储在多个存储地址,一个存储地址用于存储该码字中m行n列的m*n个数据,该m和该n均是大于或等于1的整数。
可选地,该多个存储地址属于同一个存储节点,该存储节点所提供存储空间由存储地址来指示,例如该存储节点为一个RAM,该译码设备可以将该码字存储在该RAM中的多个存储地址中。
当该码字为图1所示的TCP码字时,m为大于等于1且小于R的整数,n为大于等于1且小于K的整数。其中,m和n相等或不相等,R和K相等或不相等。在一些实施例中,R能整除m和/或K能整除n。在一些实施例中,R不能整除m和/或K不能整除n。
在一些实施例中,该译码设备先将该码字划分多个数据组,再将多个数据组存储该多个存储地址中。在一种可能的实现方式中,本步骤502由下述步骤5021-5022所示的过程来实现。
步骤5021,该译码设备按照m行n列的粒度,将该码字中的数据划分成多个数据组,一个数据组包括该码字中m行n列的m*n个数据。
在一个可能的实现方式中,该译码设备设置m行n列个比特位的滑窗,该译码设备通过在该码字上滑动该滑窗,将该码字划分多个数据组。
可选地,初始时,该译码设备将该滑窗滑动到该码字的左上角,此时该滑窗覆盖该码字中处于第1至m行以及第1至n列的数据,则该译码设备将此时该滑窗所覆盖的所有数据确定为一个数据组;该译码设备以n个比特位为滑动步长,向右滑动该滑窗,当滑动完成后,该滑窗覆盖该码字中处于第1至m行以及第n+1至2n列的数据,则该译码设备将此时该滑窗所覆盖的所有数据确定为一个数据组;以此类推,该译码设备继向右滑动该滑窗,直至该滑窗能够覆盖该码字中处于第1至m行以及第K列的数据,该译码设备结束在码字中第1至m行上滑动;并参照上述滑动方式,该译码设备将滑窗在第m+1至2m行进行滑动,以将该码字中处于第m+1至2m行的数据划分为多个数据组;依此类推,直至该数据节点将该滑窗滑动到能够覆盖该码字中处于第R行第K列的数据为止,结束滑动。例如图6所示的本申请实施例提供的一种码字存储的示意图,图6中码字上的各个矩形框为滑窗每次滑动后所覆盖的区域,每个矩形框内所有的数据组成一个数据组。
需要说明的是,当R能整除m且K能整除n时,该译码设备每一次滑动完滑窗后,该滑窗均能够覆盖该码字中的m*n个数据。当R不能整除m或K不能整除n时,若滑窗滑动到第K列或滑窗在第R行滑动,则该滑窗并不能覆盖到该码字中的m*n个数据,此时该译码设备所确定的数据组中的数据没有m*n个。
在一些实施例中,当将该码字划分为多个数据组后,该译码设备将在该码字中处于同一行的多个数据组作为一个行层,将在该码字中处于同一列的多个数据组作为一个列层。该译码设备为每个行层设置一个行层号,以标识每个行层,为每个列层设置一个列层号,以标识每个列层。一个数据组由该数据组的位置信息来标识,该数据组的位置信息包括该数据组所在行层的行层号以及该数据组所在列层的列层号。例如图6中码字内的第一个数据组的位置信息为1-1,表示处于第1行层以及第1列层的数据组。
需要说明的是,上述步骤5021所示的过程为对该码字中一个维度上的数据所进行的分组,该译码设备可以根据上述步骤5021所示的过程,对该码字中另一个维度上的数据进行一次分组。
步骤5022、该译码设备将该多个数据组存储在该多个存储地址,一个存储地址中存储一个数据组。
可选地,该译码设备将该多个数据组发送至一个存储节点,该存储节点将该多个数据组中的每个数据组分别存储在该存储节点内的一个存储地址。如图6所示,该存储节点将该码字中的数据组1-1、1-2以及1-3,分别存储在该存储节点内的存储地址1至3。
对于该多个数据组中的任一数据组,该存储节点将该任一数据组中的数据,按行依次存储在该存储节点内的一个存储地址。如图6所示的,该存储节点将数据组1-1中3行的4个数据依次存储在存储地址1中,在存储地址1中的12个数据排布成1行。
需要说明的是,在一些实施例中,本步骤502所示的过程由该译码设备中的数据处理节点来执行。本步骤501-502所示的过程执行一次即可,无须多次执行。
当译码设备将该码字在该存储节点内存储完成后,该译码设备对该存储节点内存储该码字进行译码。由于该码字为多维代码,该译码设备对该码字进行的译码为多维译码,或者也可以理解为迭代译码,译码设备对该码字进行迭代译码的过程包括行译码过程和列译码过程。对于行译码过程或者列译码过程中的任一译码过程,该译码设备先从该存储节点内读取属于该码字的各个数据组,并将读取到的各个数据组中的数据进行译码。为了进一步说明该任一译码过程,请参见下述步骤503-504。
需要说明的是,本步骤502是以2维码字为例进行说明的。在一些实施例中,当该码字的维度大于2时,该译码设备将该码字划分为多个多维的数据块,每个多维的数据块位于该码字的所有维度上,该译码设备将每个多维的数据块存储在一个存储地址中。以3维码字为例,该译码设备将9*9*9的3维码字中的数据划分为多个3*3*3*的3维数据块,并将每个3*3*3*的3维数据块分别存储在一个存储地址。
503、对于该多个存储地址中的任一存储地址,译码设备从该任一存储地址中读取该任一存储地址中存储的m*n个数据。
一个存储地址中存储的数据组为该译码设备读写数据的基本单元,该译码设备能够从任一存储地址一次读取出一个数据组中的m*n个数据。可选地,本步骤503所示的过程由该译码设备中数据分发节点来执行。
504、该译码设备对读取到的m*n个数据进行译码。
在一种可能的实现方式中,若本次译码过程为行向译码过程,该译码设备确定本次读取出的m*n个数据在该码字行向维度上的排布,并对行向维度上排布的数据进行译码。可选地,本步骤504所示的过程由下述步骤5041-5042所示的过程来实现。
步骤5041、若本次译码过程为行向译码过程,该译码设备基于该读取到的m*n个数据在该码字中的位置,确定m个行数据组,一个行数据组包括该读取到的m*n个数据中的n个数据,该n个数据在该码字中位于同一行。
m个行数据组为本次读取出的m*n个数据在该数据组行向维度上的排布。由于任一存储地址中存储的m*n个数据在任一存储地址是一行数据,因此,译码设备从该任一存储地址中读取出的m*n个数据也是一行数据,为了便于进行译码,该译码设备则还需要确定出本次读取出的m*n个数据在该码字中的位置,以便基于m*n个数据在该码字中的位置,确定读取到的数据组中的各个数据在行向维度上的排布。
该译码设备基于该读取到的m*n个数据在该码字中的位置,将读取出的m*n个数据中第(i-1)*n+1个数据至第i*n个数据作为一个行数据组。其中,i为大于等于1且小于等于m的整数。例如当i=1时,该译码设备将排布成一行的m*n个数据中的第1个数据至第n个数据作为一个行数据组。再例如当i=2时,该译码设备将排布成一行的m*n个数据中的第n+1个数据至第2n个数据为一个行数据组。
需要说明的是,在一些实施例中,本步骤5041所示的过程由该译码设备中的数据分发节点来执行。
步骤5042、该译码设备对该m个行数据组进行译码。
在一些实施例中,该译码设备并行对该m个行数据组进行译码,以提高该译码设备对该任一存储地址内存储的数据组的译码效率。在一种可能的实现方式中,本步骤5042由该译码设备中的数据分发节点以及多个第一译码节点配合完成。当该数据分发节点确定出m个行数据组后,将该m个行数据组分别发送至m个第一译码节点,由每个第一译码节点对接收到的行数据组中的一个行数据组进行向译码,不同的第一译码节点接收到的行数据组不同。
在一种可能的实现方式中,该数据分发节点内设置有m*n个比特位的数据分发队列,该数据分发队列中第(i-1)*n+1个比特位至第i*n个比特位与一个第一译码节点连接。该数据分发节点将读取到的m*n个数据依次排列在该数据分发队列中的各个比特位上,从而使得该数据分发队列中第(i-1)*n+1个比特位至第i*n个比特位上的n个数据也即是一个行数据组。对于该m个行数据组中的任一行数据组,该数据分发队列通过该任一行数据组所处的比特位与一个第一译码节点之间的连接,将该任一行数据组中的n个数据发送至该第一译码节点,由该第一译码节点对该任一行数据组中的n个数据进行译码。
为了进一步说明步骤5041-5042所示的过程,参见图7中所示的第一维度数据的译码过程,其中,图7为本申请例提供的一种迭代译码的示意图,第一维度数据也即是读取到m*n数据在该码字行向维度上排布的数据。当该数据分发节点从任一存储地址中读取到排列成一行的m*n个数据后,该数据分发节点将m*n个数据拆分成m个行数据组,分别为行数据组1至m,并将m个行数据组分发至m个第一译码节点,分别为第一译码节点1至m,从而实现第一维度数据的分发,由每个第一译码节点对一个行数据组中的n个数据进行译码。
在一种可能的实现方式中,若本次译码过程为列向译码过程时,该译码设备确定本次读取出的m*n个数据在该码字列向维度上的排布,并对列向维度上排布的数据进行译码。可选地,本步骤504所示的过程由下述步骤504A-504B所示的过程来实现。
步骤504A、若本次译码过程为行向译码过程,该译码设备基于该读取到的m*n个数据在该码字中的位置,确定n个列数据组,一个列数据组包括该读取到的m*n个数据中的m个数据,该m个数据在该码字中位于同一列。
n个列数据组为本次读取出的m*n个数据在该数据组列向维度上的排布。由于任一存储地址中存储的m*n个数据在任一存储地址是一行数据,因此,译码设备从该任一存储地址中读取出的m*n个数据也是一行数据,为了便于进行译码,该译码设备则还需要确定出本次读取出的m*n个数据在该码字中的位置,以便基于m*n个数据在该码字中的位置,确定读取到的数据组中的各个数据在该数据组列向维度上的排布。
该译码设备基于该读取到的m*n个数据在该码字中的位置,确定m个行数据组,并将该m个行数据组中的第j个数据,确定为该n个列数据组中第j个列数据组,其中,j为大于等于1且小于等于n的整数。例如译码设备将m个行数据组中第1个数据,组成n个列数据组中的第1个列数据组。再例如译码设备将将m个行数据组中第2个数据,组成n个列数据组中的第2个列数据组。
需要说明的是,在一些实施例中,本步骤504A所示的过程由该译码设备中的数据分发节点来执行。
步骤504B、该译码设备对该n个列数据组进行译码。
在一些实施例中,该译码设备并行对该n个列数据组进行译码,以提高该译码设备对该任一存储地址内存储的数据组的译码效率。在一种可能的实现方式中,本步骤504B由该译码设备中的数据分发节点以及多个第二译码节点配合完成。当该数据分发节点确定出n个列数据组后,将该n个列数据组分别发送至n个第二译码节点,由每个第二译码节点对接收到的列数据组中的一个列数据组进行译码,不同的第二译码节点接收到的列数据组不同。
在一种可能的实现方式中,对于任一行数据组,该数据分发节点中的数据分发队列内该任一行数据组所处的n个比特位分别与一个第二译码节点连接,从而使得一个第二译码节点能够连接到m个数据组中一个数据所处的比特位。可以理解的是,一个第二译码节点所连接到m个比特位上的m个数据为一个列数据组。该数据分发节点将读取到的m*n个数据依次排列在该数据分发队列中的各个比特位上。对于该n个列数据组中的任一列数据组,该数据分发队列通过该任一列数据组所处的比特位与一个第二译码节点之间的连接,将该任一列数据组中的m个数据发送至该第二译码节点,由该第二译码节点对该任一列数据组中的m个数据进行译码。
为了进一步说明步骤504A-504B所示的过程,参见图7中所示的第二维度数据的译码过程,第二维度数据也即是读取到m*n数据在该码字列向维度上排布的数据。当该数据分发节点从任一存储地址中读取到排列成一行的m*n个数据后,该数据分发节点将m*n个数据拆分成n个列数据组,分别为列数据组1至n,并将n个列数据组分发至n个第二译码节点,分别为第二译码节点1至n,从而实现第二维度数据的分发,由每个第二译码节点对一个列数据组中的m个数据进行译码。
需要说明的是,在一些实施例中,m个第一译码节点和n个第二译码节点为不同的译码节点。而在另外一些实施例中,第一译码节点和第二译码节点可以为复用。若m大于或等于n,在进行列向译码的过程中,该m个第一译码节点中的n个第一译码节点复用为n个第二译码节点。若m小于n,在进行行向译码的过程中,该n个第二译码节点中的m个第二译码节点复用为m个第一译码节点,以减小该译码设备中的译码节点的个数。由于译码设备在对码字中的一个数据组进行迭代译码过程中,要先进行完行译码过程,再进行列译码过程,或者是先进行完列译码过程,再进行行译码过程,可见,译码设备对一个数据组所进行的列译码过程和行译码过程不会同时发生,因此,第一译码节点和第二译码节点能够复用。
需要说明的是,本步骤504是以2维码字为例进行说明的。在一些实施例中,当该码字的维度大于2时,该译码设备从任一存储地址中读取到的是一个多维的数据块,并不是一个二维的数据组,则该译码设备可以先将该多维的数据块划分为多个二维的数据组,再对每个二维的数据组执行本步骤504。
505、该译码设备将该任一存储地址中的m*n个数据修改为m*n个译码数据,该m*n个译码数据为该读取到的m*n个数据译码后的数据。
该任一存储地址中的m*n个数据与该m*n个译码数据一一对应。当该译码设备对该任一存储地址中的m*n个数据译码完成后,得到m*n个译码数据,该译码设备按照该任一存储地址中的m*n个数据与该m*n个译码数据一一对应关系,将该m*n个译码数据原路写回该任一存储地址,以覆盖该任一存储地址中存储的m*n个数据,从而实现修改。
在一些实施例中,本步骤505所示的过程由译码设备中数据分发节点以及译码节点配合完成。在一种可能的实现方式中,若本次译码过程为行向译码过程,对于该m个第一译码节点中的任一第一译码节点,任一第一译码节点对一个行数据组中的n个数据译码完成后,得到n个译码数据,该n个译码数据与该n个数据一一对应。该任一第一译码节点将该n个译码数据写回该数据分发节点,当该m个第一译码节点均将各自译码后得到的n个译码数据写回到数据分发节点后,该数据分发节点能够获取到m*n个译码数据,该数据分发节点将该m*n个译码数据写回该任一存储地址。
在另一种可能的实现方式中,若本次译码过程为列向译码过程,对于该n个第二译码节点中的任一第二译码节点,任一第二译码节点对一个列数据组中的m个数据译码完成后,得到m个译码数据,该m个译码数据与该m个数据一一对应。该任一第二译码节点将该m个译码数据写回该数据分发节点,当该n个第二译码节点均将各自译码后得到的m个译码数据写回到数据分发节点后,该数据分发节点能够获取到m*n个译码数据,该数据分发节点将该m*n个译码数据写回该任一存储地址。
当该译码设备对属于该码字的每个数据组均执行完成上述步骤503-505所示的过程时,该译码设备对该码字一个维度上所进行的译码过程完成。该译码设备跳转执行上述步骤503-505所示的过程,继续对该码字进行另一个维度的译码过程,从而实现对该码字的迭代译码过程。例如,当该译码设备通过上述步骤503-505,对该码字中的每个数据组均执行完行向译码过程后,该译码设备继续通过执行上述步骤503-505,对该码字中的每个数据组均执行列向译码过程。
由于该任一数据组中存储的m*n个数据满足行向维度的分布以及列向维度的分布,在一些实施例中,该译码设备以数据组为迭代译码的基本单位。该译码设备通过执行上述步骤503-505,对任一存储地址内存储的一个数据组,完成行向译码后,无须等待其他存储地址中存储的数据组完成行向译码,该译码设备直接通过上述步骤503-505,对任一存储地址内当前存储的数据组进行列译码过程,从而实现对该码字中一个数据组的迭代译码过程。
以任一存储地址中存储的数据组为[1,2;3,4]为例,在行译码过程中,数据分发节点从任一存储地址中读取到数据组[1,2;3,4],并基于读取到的数据组[1,2;3,4],确定出2个行数据组,分别为行数据组[1,2]和行数据组[3,4]。数据分发节点将行数据组[1,2]和行数据组[3,4]分别发送至译码节点1和2。译码节点1对行数据组[1,2]进行译码,得到译码数据5和6,译码节点2对行数据组[3,4]进行译码,得到译码数据7和8。译码节点1将译码数据5、6写回数据分发节点,译码节点2将译码数据7、8写回数据分发节点。数据分发节点将译码数据5、6、7、8写回任一存储地址,并覆盖任一存储地址中存储的1、2、3、4,此时任一存储地址中存储的数据组更新为[5,6;7,8]。在列译码的过程中,数据分发节点从任一存储地址读取数据组[5,6;7,8],并基于读取到的数据组[5,6;7,8],确定出2个列数据组,分别为列数据组[5,7]和列数据组[6,8]。数据分发节点将列数据组[5,7]和列数据组[6,8]分别发送至译码节点3和4。译码节点3对列数据组[5,7]进行译码得到译码数据9和10,译码节点4对列数据组[6,8]进行译码得到译码数据11和12。译码节点3将译码数据9、10写回数据分发节点,译码节点4将译码数据11、12写回数据分发节点。数据分发节点将译码数据9、11、10、12写回任一存储地址,并覆盖任一存储地址中存储的5、6、7、8。此时任一存储地址中存储的数据组更新为[9,11;10,12],任一存储地址中存储的数据经过一次行译码以及一次列译码,当该译码设备对一个码字中的每个数据组均执行一次行译码过程和一次列译码过程时,也即是对该码字进行了一次迭代译码过程。其中,上述的译码节点1和2均为第一译码节点,译码节点3和4均为第二译码节点。
由于码字中m行n列的数据能够组成多个维度的数据,例如m行数据或者n列数据,因此,本申请实施例通过将码字中m行n列的数据存储在一个存储地址,便于从该存储地址中读取到码字中m行n列的数据,以兼容码字中各个维度的数据存储和读取,且便于后续对读取到的码字中多个维度的数据进行多维译码,例如行向译码或者列向译码。且可不受子码长度的限制支持任意并行度的灵活设计,支撑高流量的FEC设计需求。
图5所示的过程为译码设备以一个数据组为一个译码处理单元,对码字进行译码的过程。当码字中的数据较多时,该译码设备还可以以多个数据组为一个译码处理单元,同时对多个数据组进行译码,以提高译码的并行度以及译码效率。为了进一步说明该过程,请参见图8所示的本申请实施例提供的一种译码方法的流程图。
801、译码设备获取码字。
本步骤801所示的过程与上述步骤501所示的过程同理,在此,本申请实施例对本步骤801不做赘述。
802、该译码设备按照m行n列的粒度,将该码字中的数据划分成多个数据组。
本步骤802所示的过程与上述步骤5021所示的过程同理,在此,本申请实施例对本步骤802不做赘述。
803、该译码设备将该多个数据组合并为多个数据集,一个数据集包括该多个数据组中相邻的多个数据组。
其中,该相邻的多个数据组具有多种相邻的形式。可选地,该相邻的多个数据组为处于同一个行层中连续的多个数据组。以图9中的码字为例,该译码设备将码字的第一个行层中的数据组1-1、1-2以及1-3组作为一个数据集,其中,图9为本申请实施例提供的一种码字存储的示意图。可选地,相邻的多个数据组为处于同一列行层中连续的多个数据组,以图9中的码字为例,该译码设备将该码字的第一个列层中的数据组1-1、2-1以及3-1作为一个数据集。可选地,相邻的多个数据组为处于相邻的行层或相邻的列层的多个数据组,以图9中的码字为例,该译码设备该码字中的数据组1-1、1-2、2-1以及2-2作为一个数据集,其中,数据组1-1、1-2、2-1以及2-2所在的行层和列层均相邻。
需要说明的是,图9所示的实施例是以译码设备将处于同一个行层中连续的多个数据组合并为一个数据集为例的。在一些实施例中,本步骤803所示的过程由译码设备中数据处理节点来执行。
804、该译码设备将该多个数据集中的数据组存储在多个存储节点中的多个存储地址,其中,一个存储地址中存储一个数据组,同一数据集中的多个数据组存储在不同存储节点内的存储地址中。
对于该多个数据集中的任一数据集,该译码设备将该任一数据集中的多个数据组分别存储在该多个存储节点内的一个存储地址,其中,该任一数据集中的每个数据组对应不同的存储节点。以图9为例,一个数据集包括数据组1-1、1-2以及1-3,该译码设备将数据组1-1存储在存储节点1的存储地址1,将数据组1-2存储在存储节点2的存储地址1,将数据组1-3存储在存储节点3的存储地址1。
在一种可能的实现方式,该译码设备采用循环移位的方式,将该多个数据集中的数据组存储在多个存储节点。可选地,该译码设备采用循环移位的方式,建立该多个数据集中的各个数据组与多个存储节点的对应关系,并将每个数据组存储在对应的存储节点中的一个存储地址。
在一种可能的实现方式中,该译码设备采用循环移位的方式,建立该多个数据集中各个数据组与多个存储节点的对应关系包括:若每个数据集中数据组的个数均为s,多个存储节点有s个,在该码字中相邻的s个行层中,对于该s个行层中的第z个行层,该译码设备将该第z个行层内每个数据集中的s个数据组向右转移(z-1)位后,依次与s个存储节点对应,其中,s为大于1且小于n的整数,z为大于等于1且小于等于z的整数。
当z=1时,在该s个行层中的第1个行层内,该译码设备将该第1个行层内每个数据集中的s个数据组依次与s个存储节点对应。例如第1个行层内每个数据集中的第1个数据组与s个存储节点中的第1个存储节点对应,第1个行层内每个数据集中的第2个数据组与s个存储节点中的第2个存储节点对应,依此类推。例如s=3,z=1,图9所示的码字中第1个行层中的第1个数据集包括数据组1-1、数据组1-2以及数据组1-3,数据组1-1与存储节点1对应,数据组1-2与存储节点2对应,数据组1-3与存储节点对应。
当z=2时,在该s个行层中的第2个行层内,该译码设备将该第2个行层内每个数据集中的s个数据组向右转移1位后,依次与s个存储节点对应。例如第2个行层内每个数据集中的数据组向右转移1位后,每个数据集中的第2个数据组与s个存储节点中的第1个存储节点对应,每个数据集中的第3个数据组与s个存储节点中的第4个存储节点对应,依此类推,每个数据集中的第s-1个数据组与s个存储节点中的第s个存储节点对应,每个数据集中的第s个数据组与s个存储节点中的第1个存储节点对应。例如s=3,z=2,图9所示的码字中第2个行层中的第1个数据集包括数据组2-1、数据组2-2以及数据组2-3,数据组2-2与存储节点1对应,数据组2-3与存储节点2对应,数据组2-1与存储节点3对应。
当z=3时,在该s个行层中的第3个行层内,该译码设备将该第3个行层内每个数据集中的s个数据组向右转移2位后,依次与s个存储节点对应。例如第3个行层内每个数据集中的数据组向右转移2位后,每个数据集中的第3个数据组与s个存储节点中的第1个存储节点对应,每个数据集中的第4个数据组与s个存储节点中的第4个存储节点对应,依此类推,每个数据集中的第s-2个数据组与s个存储节点中的第s个存储节点对应,每个数据集中的第s-1个数据组与s个存储节点中的第1个存储节点对应,每个数据集中的第s个数据组与s个存储节点中的第2个存储节点对应。例如s=3,z=3,图9所示的码字中第3个行层中的第1个数据集包括数据组3-1、数据组3-2以及数据组3-3,数据组3-3与存储节点1对应,数据组3-1与存储节点2对应,数据组3-2与存储节点3对应。
为了进一步说明该译码设备采用循环移位的方式,建立该多个数据集中各个数据组与多个存储节点的对应关系的过程,参见图10所示的本申请实施例提供的一种TPC码字中数据组与存储节点之间的对应关系示意图。图10以码字为TPC(256,239)(256,239)为例,TPC(256,239)(256,239)为二维的分组码,TPC(256,239)(256,239)中每个行子码或者每个列子码均为扩展(extended)BCH(256,239)子码,TPC(256,239)(256,239)的总码长为256*256=65536比特。译码设备以m=n=16,将TPC(256,239)(256,239)中的65536个数据划分成256个数据组,分别为数据组1至256,每个数据组包括16*16个数据。若s=4,该译码设备按照行层,将同一行层中相邻的4个数据组合并为一个数据集,从而一个数据集包括4*16*16=1024个数据。对于TPC(256,239)(256,239)中的前4个行层,译码设备将第1个行层中的各个数据组依次与4个存储节点对应,如第1个行层中的一个数据集包括数据组1至4,数据组1至4分别与存储节点1至4对应。译码设备将第2个行层中的各个数据组向右转移1位后,依次与4个存储节点对应,如从第2个行层中的第2个数据组开始,数据组18至21依次与存储节点1至4对应,…,数据组30至32依次与存储节点1-3对应,数据组32对应完后,循环至第2个行层的第1个数据组,从第2个行层的第1个数据组开始,数据组17与存储节点4对应,从而在第2个行层形成向右转移1位的循环移位过程。且从数据集的角度来说,第2个行层包括4个数据集,这4个数据集分别包括数据组17至20、数据组21至24、数据组25至28以及数据组29至32,经过向右转移1位后,这4个数据集中的第2个数据组(数据组18、22、26以及30)均与存储节点1对应,这4个数据集中的第3个数据组(数据组19、23、27以及31)均与存储节点2对应,这4个数据集中的第4个数据组(数据组20、24、28以及32)均与存储节点3对应,这4个数据集中的第1个数据组(数据组17、21、25以及29)均与存储节点1对应。然后,按照第2个行层的移位方式,译码设备将第3个行层中的各个数据组向右转移2位后,依次与4个存储节点对应,将第4个行层中的各个数据组向右转移3位后,依次与4个存储节点对应。
需要说明的是,在一种可能的实现方式中,本步骤804所示的过程由该译码设备中的数据处理节点来执行。上述步骤803-804所示的过程为译码设备将码字的多个数据组存储在多个存储地址的过程,且这多个存储地址属于多个存储节点。且该译码设备存储该码字一次即可,无须多次存储。
805、对于该多个数据集中的任一数据集,该译码设备从该多个存储节点读取该任一数据集的多个数据组。
该译码设备从多个存储节点的多个存储地址中,确定用于存储该任一数据集的多个目标存储地址,该多个目标存储地址属于不同的存储节点,一个目标存储地址中存储有该任一数据集中的一个数据组。该译码设备从该多个目标存储地址中读取出该任一数据集的多个数据组。在一种可能的实现方式,在一个数据读取周期内,该译码设备从该多个目标存储地址中分别读取出该任一数据集中的一个数据组。以任一数据集为图10所示的码字中第一行层的第1个数据集为例,在一个数据读取周期内,该译码设备从4个存储节点的4个存储地址中分别读取出数据组1至4。
在一种可能的实现方式中,本步骤805所示的过程由该译码设备中的数据分发节点来执行。
806、译码设备对该任一数据集中的多个数据组进行译码。
在一种可能的实现方式中,该译码设备同时对该任一数据集的多个数据组进行译码,其中,对于该任一数据集的多个数据组中的任一数据组,译码设备对该任一数据组中的m*n个数据进行译码,得到m*n个译码数据。
在一种可能的实现方式中,本步骤806所示的过程由该译码设备中的数据分发节点以及译码节点配合完成。若本次译码过程为行译码过程,当数据分发节点读取到该任一数据集中的多个数据组后,该译码设备确定该多个数据组中每个数据组的m个行数据组,并将每个数据组的m个行数据组分别发送至m个第一译码节点,从而每个第一译码节点能够接收到该多个数据组中的一个行数据组。可以理解的是,每个第一译码节点均能够接收到多个行数据组,且接收到的每个行数据组分别来自该多个数据组中的一个数据组。当每个第一译码节点接收到多个行数据组后,对接收到的每个行数据组中的n个数据进行译码。
若本次译码过程为列译码过程,当数据分发节点读取到该任一数据集中的多个数据组后,该译码设备确定该多个数据组中每个数据组的n个列数据组,并将每个数据组的n个列数据组分别发送至n个第二译码节点,从而每个第二译码节点能够接收到该多个数据组中的一个列数据组。可以理解的是,每个第二译码节点均能够接收到多个列数据组,且接收到的每个列数据组分别来自该多个数据组中的一个数据组。当每个第二译码节点接收到多个列数据组后,对接收到的每个列数据组中的m个数据进行列译码。
以图10为例。若本次译码过程为行译码过程,当数据分发节点读取到一个数据集中的数据组1至4后,该数据分发节点将数据组1至4中每个数据组的16行数据发送至16个第一译码节点,由每个第一译码节点对数据组1至4的一行数据(包括4*16=64个数据)进行译码。若本次译码过程为列译码过程,当数据分发节点读取到数据组1至4后,该数据分发节点将数据组1至4中每个数据组的16列数据发送至16个第二译码节点,由每个第二译码节点对数据组1至4的一列数据(包括4*16=64个数据)进行译码。
需要说明的是,当该译码设备对属于该码字的每个数据集均执行完成上述步骤805-806所示的过程时,该译码设备对该码字一个维度上所进行的译码过程完成。该译码设备跳转执行步骤805-806所示的过程,继续对该码字进行另一个维度的译码过程,从而实现对该码字的迭代译码过程。例如,当该译码设备通过上述步骤805-806,对该码字中的每个数据集均执行过行向译码过程后,该译码设备继续通过执行上述步骤805-806,对该码字中的每个数据集均执行列向译码过程。
由于该任一数据组中存储的m*n个数据满足行向维度的分布以及列向维度的分布,在一些实施例中,该译码设备以数据集为迭代译码的基本单位。该译码设备通过执行上述步骤805-806,对任一数据集完成行向译码后,无须等待其他数据集完成列向译码,该译码设备直接通过上述步骤805-806,对行译码后的该数据集进行列译码过程,从而实现对该码字中一个数据集的迭代译码过程。
807、对于该任一数据集中的任一数据组,该译码设备将存储有该任一数据组的存储地址中的m*n个数据修改为m*n个译码数据,该m*n个译码数据为该读取到的m*n个数据译码后的数据。
本步骤807所示的过程与上述步骤505所示的过程同理,在此,本申请实施例对本步骤807不做赘述。
本申请实施例提供的方法,通过译码设备并行对一个数据集中的多个数据组组进行译码,提高了译码的并行度以及译码效率。且可不受子码长度的限制支持任意并行度的灵活设计,支撑高流量的FEC设计需求。
对于不同类型的码字,该译码设备均能够按照数据组的存储方式,将不同类型的码字存储在存储地址中。且译码设备也可以并行译码一个码字中的多个数据组,但是由于不同类型码字的构造不同,译码设备在并行译码多个数据组时,译码设备读取多个数据组方式可能有所不同。对于TCP码字,该译码设备可以采用图8所示的过程来并行译码TCP码字中的多个数据组,而卷积码的构造与TCP码字的构造不同,该译码设备在并行译码卷积码的多个数据组时,读取多个数据组的方式与读取TCP码字中多个数据组方式不同。为了进一步说明这个不同之处,参见图11所示的本申请实施例提供的一种卷积码的译码过程。
1101、译码设备获取码字。
可选地,该码字为OFEC码字,例如图2所示的OFEC码字。本步骤1101所示的过程与上述步骤501所示的过程同理,在此,本申请实施例对本步骤1101不做赘述。
1102、该译码设备按照m行n列的粒度,将该码字中的数据划分成多个数据组。
若该码字为OFEC码字,且该OFEC码字中的每个block包括m行n列的m*n个数据,则该译码设备将该OFEC码字中的每个block确定为一个数据组,从而实现该译码设备按照m行n列的粒度,将该码字中的数据划分成多个数据组。
以图12所示的OFEC码字为例,其中,图12为本申请实施例提供的一种OFEC码字译码过程的示意图。图12中的OFEC码字包括24个行层、8个列层,也即是该OFEC码字包括24*8个block,且每个block包括16*16个数据,该译码设备将24*8个block分别作为一个数据组,分别为数据组1至192。
1103、该译码设备将该多个数据组合并为多个数据集。
该译码设备将处于相邻的行层或相邻的列层的多个数据组合并为一个数据集。以图12为例,该译码设备将OFEC码字中的数据组1、2、9以及10合并为一个数据集,数据组1、2、9以及10处于2个相邻的行层和2个相邻的列层。
1104、该译码设备将该多个数据集中的数据组存储在多个存储节点中的多个存储地址,其中,同一数据集中的多个数据组存储在不同存储节点内的存储地址中,且一个OFEC帧对中相邻的两个数据集中不同列层的数据组存储在不同的存储节点。
一个OFEC帧对为相邻的2个OFEC帧,也即是OFEC码字4个连续的行层。从图2所示的OFEC码字可知,OFEC码字的一个子码中斜向的多个短列位于不同的OFEC帧,且均处于偶数行层或奇数行层,后续若在对该子码进行译码的过程中,若要对该子码中斜向的多个短列同时译码,则需要保证这多个短列存储在不同的存储节点,这多个短列可能位于一个OFEC帧对内的不同列层,因此,该译码设备在将每个数据集中的多个数据组分别存储到多个存储节点中的过程中,还要保证同一OFEC帧对中相邻的两个数据集中不同列层的数据组存储在不同的存储节点。
在一种可能实现方式中,对于一个OFEC帧对中相邻的两个数据集,若这个两个数据集均包括s个数据组,该译码设备将这两个数据集中的第z个数据组均存储在s个存储节点中的第z个存储节点。以图10为例,图10所示的OFEC码字中前4个行层为一个OFEC帧对,在这个OFEC帧对中,数据组7、8、15以及16为数据集1,数据组23、24、31以及32为数据集2,且该数据集1和2在这个OFEC帧对中相邻。该译码设备将数据集1和2中的第1个数据组(数据组7和数据组23)均存储在存储节点1,该译码设备将数据集1和2中的第2个数据组(数据组8和数据组24)均存储在存储节点2,该译码设备将数据集1和2中的第3个数据组(数据组15和数据组31)均存储在存储节点3,该译码设备将数据集1和2中的第4个数据组(数据组16和数据组32)均存储在存储节点4。这种存储方式,不仅保证了数据集1或2中的各个数据组存储在不同的存储节点,且能够保证数据集1和2中处于不同列层的数据组也存储在不同的存储节点。
1105、对于多个子码中相邻的多个目标子码,该译码设备从该多个数据集中确定与该多个目标子码相关的至少一个目标数据集,该至少一个目标数据集包括与该多个目标子码相关的至少一个目标数据组,一个目标数据组包括所述多个目标子码中部分目标子码的部分数据。
该码字包括多个子码。该多个目标子码相关的至少一个目标数据集,也即是包括该多个目标子码的数据的数据集。
通过上述公式(1)-(2)可知,OFEC码字中的一个子码位于多个行层和多个列层,且该子码的前半部分数据位于不相邻的行层和列层,该子码的后半部分数据位于相邻的行层和列层。而译码设备在存储该OFEC码字时,是将处于相邻的行层或相邻的列层的多个数据组合并为一个数据集,因此一个数据集中的数据组可能包括多个子码中的部分数据。若是对多个目标子码进行译码的过程中,该译码设备可以先从该多个数据集中确定与该多个目标子码相关的至少一个目标数据集,然后再对至少一个目标数据集中与该多个目标子码相关的至少一个目标数据组进行译码。
对于该多个目标子码中的任一目标子码,该译码设备基于上述公式(1)-(2),确定任一目标子码中各个数据的位置信息,并根据任一目标子码中各个数据的位置信息,确定任一目标子码中各个数据所在的数据组,并将任一目标子码中的数据所在的任一数据组作为目标数据组,将该目标数据组所属的数据集作为目标数据集。
以图10为例,若至少一个目标数据集有2个,分别为图10中的数据集1和数据集2,该数据集1中数据组1内列向上的16个短列分别属于16个相邻的子码,分别为子码1至16,该数据集2中数据组23内列向上的16个短列也分别属于子码1至16。该数据集1中数据组16内列向上的16个短列分别属于16个相邻的子码,分别为子码17至32,该数据集2中数据组23内列向上的16个短列也分别属于子码17至32。从图10可知,相邻的子码1至32中的数据均位于数据集1和2,则该译码设备将数据集1和2确定为与该子码1至32相关的目标数据集,将该数据集1中的数据组6和数据集2中的数据组23,确定为与该子码1至16相关的目标数据组,将该数据集1中的数据组16和数据集2中的数据组31,确定为与该子码17至32相关的目标数据组。
若至少一个目标数据集有1个,分别为图10中的数据集3,其中,该数据集3包括数据167、168、175以及176,数据组167和168中每个数据组横向上的16个短列分别属于子码1至16,数据组175和176中每个数据组横向上的16个短列分别属于子码17至32。则该译码设备将该数据集3确定为与子码1至32相关的一个目标数据集,将该数据集3中的数据组167和168,确定为与子码1至16相关的目标数据组,将该数据集3中的数据组175和176,确定为与子码17至32相关的目标数据组。
1106、该译码设备从该多个存储节点读取该至少一个目标数据集中的目标数据组。
由于该至少一个目标数据集中的多个目标数据组存储于不同的存储节点,该译码设备在一个数据读取周期内,从多个存储节点分别读取出一个目标数据组。
1107、该译码设备对读取到的目标数据组进行译码。
该读取到的目标数据组包括至少一个奇目标数据组以及至少一个偶目标数据组,也即是该至少一个目标数据集中的目标数据组,其中,一个奇目标数据组为位于该码字的奇数行层的目标数据组,一个偶目标数据组为位于该码字的偶数行层的目标数据组。以该至少一个目标数据组为图10中的数据组8、16、23以及31为例,数据组8和23分别位于码字的第1个行层和第3个行层,则数据组8和23均为奇目标数据组,而数据组16和31分别位于码字的第2个行层和第4个行层,则数据组16和31均为偶目标数据组。
由于该多个目标数据组中,部分目标数据组位于奇数行层,部分目标数据组位于偶数行层,且位于奇偶行层的目标数据组所属的目标子码不同,因此,该译码设备在对该多个目标子码进行译码的过程中,可以由两组奇偶译码节点分别对位于奇数行层和位于偶数行层的目标数据组进行译码。在一种可能的实现方式中,本步骤1107由下述步骤11071-11072所示的过程来实现。
步骤11071、该译码设备将该至少一个奇目标数据组发送给多个第三译码节点,由该多个第三译码节点对接收到的奇目标数据组进行译码。
该多个第三译码节点为用于对码字中的奇数据组进行译码的一组译码节点,也可以被称为奇译码节点。其中,码字中的奇数据组为码字中处于奇数行层的数据组。例如图10所示的码字中第1个行层的所有数据组均是奇数据组,奇目标数据组也是奇数据组。
若该至少一个奇目标数据组位于该至少一个奇目标数据组所相关的多个目标子码的前半部分,对于该至少一个奇目标数据组中的任一奇目标数据组,该数据分发节点基于该任一奇目标数据组中的m*n个数据在该码字中的位置,确定n个列数据组,每个列数据组属于一个目标子码,为一个目标子码中的一个短列;该数据分发节点将该n个列数据组分别发送至n个第三译码节点。每个第三译码节点均能够接收到至少一个列数据组,且至少一个列数据组分别来自至少一个奇目标数据组,由每个第三译码节点对接收到的该至少一个列数据组进行译码。
以该至少一个目标数据组为图10中的数据组8、16、23以及31为例,由于数据组8和23处于目标子码1至16的前半部分,且均为奇目标数据组,该数据分发节点将数据组8和16中每个数据组的16*16个数据划分为16个列数据组,并将每个数据组的16个列数据组分别发送至16个第三译码点,从而每个第三译码节点均能够接收到2个列数据组,并对2个列数据组中的16*2个数据进行译码。
若该至少一个奇目标数据组位于该至少一个奇目标数据组所相关的多个目标子码的后半部分,对于该至少一个奇目标数据组中的任一奇目标数据组,该数据分发节点基于该任一奇目标数据组中的m*n个数据在该码字中的位置,确定m个行数据组,每个行数据组属于一个目标子码,一个目标子码中的一个短列;该数据分发节点将该m个行数据组分别发送至m个第三译码节点。每个第三译码节点均能够接收到至少一个行数据组,且至少一个行数据组分别来自至少一个奇目标数据组,由每个第三译码节点对接收到的至少一个行数据组进行译码。
以该至少一个目标数据组为图10中的数据组167、168、175以及176为例,由于数据组167和168处于目标子码17至32的前半部分,且均为奇目标数据组,该数据分发节点将数据组167和168中每个数据组的16*16个数据划分为16个行数据组,并将每个数据组的16个行数据组分别发送至16个第三译码点,从而每个第三译码节点均能够接收到2个行数据组,并对2个行数据组中的16*2个数据进行译码。
11072、该译码设备将该至少一个偶目标数据组发送给多个第四译码节点,由该多个第四译码节点对接收到的偶目标数据组进行译码。
该多个第四译码节点为用于对码字中的偶数据组进行译码的一组译码节点,也可以被称为偶译码节点。其中,码字中的偶数据组为码字中处于偶数行层的数据组。例如图10所示的码字中第2个行层的所有数据组均是偶数据组,偶目标数据组也是偶数据组。
若该至少一个偶目标数据组位于该至少一个偶目标数据组所相关的多个目标子码的前半部分,对于该至少一个偶目标数据组中的任一偶目标数据组,该数据分发节点基于该任一偶目标数据组中的m*n个数据在该码字中的位置,确定n个列数据组,每个列数据组属于一个目标子码,为一个目标子码中的一个短列;该数据分发节点将该n个列数据组分别发送至n个第四译码节点。每个第四译码节点均能够接收到至少一个列数据组,且至少一个列数据组分别来自至少一个偶目标数据组,由每个第四译码节点对接收到的至少一个列数据组进行译码。
以该至少一个目标数据组为图10中的数据组8、16、23以及31为例,由于数据组16、和31处于目标子码1至16的前半部分,且均为偶目标数据组,该数据分发节点将数据组16和31中每个数据组的16*16个数据划分为16个列数据组,并将每个数据组的16个列数据组分别发送至16个第四译码点,从而每个第四译码节点均能够接收到2个列数据组,并接收到的2个列数据组中的16*2个数据进行译码。
若该至少一个偶目标数据组位于该至少一个偶目标数据组所相关的多个目标子码的后半部分,对于该至少一个偶目标数据组中的任一偶目标数据组,该数据分发节点基于该任一偶目标数据组中的m*n个数据在该码字中的位置,确定m个行数据组,每个行数据组属于一个目标子码;该数据分发节点将该m个行数据组分别发送至m个第四译码节点。每个第四译码节点均能够接收到至少一个行数据组,且至少一个行数据组分别来自至少一个偶目标数据组,由每个第四译码节点对接收到的至少一个行数据组进行译码。
以该至少一个目标数据组为图10中的数据组167、168、175以及176为例,由于数据组175和176处于目标子码17至32的前半部分,且均为偶目标数据组,该数据分发节点将数据组175和176中每个数据组的16*16个数据划分为16个行数据组,并将每个数据组的16个行数据组分别发送至16个第四译码点,从而每个第四译码节点均能够接收到2个行数据组,并对接收到的2个行数据组中的16*2个数据进行译码。
需要说明的是,上述步骤11071和11072为并行步骤,在执行顺序上没有先后之分,从而该译码设备能够同时对该多个目标数据组进行译码,提高了译码过程中的并行度以及译码效率。
在一种可能的实现方式中,该译码设备先基于该多个目标数据组所在的行层,确定该多个目标数据组中的至少一个奇目标数据组以及至少一个偶目标数据组,然后,再执行上述步骤11071-11072。可选地,该译码设备确定该至少一个目标数据组以及该至少一个偶目标数据组的过程由该译码设备中的数据分发节点来执行。
1108、对于读取到的目标数据组中的任一数据组,该译码设备将存储有该任一数据组的存储地址中的m*n个数据修改为m*n个译码数据,该m*n个译码数据为该任一数据组中的m*n个数据译码后的数据。
本步骤1108所示的过程与上述步骤505所示的过程同理,在此,本申请实施例对本步骤1108不做赘述。
本申请实施例提供的方法,通过译码设备并行对多个目标数据组组进行译码,提高了译码的并行度以及译码效率。且可不受子码长度的限制支持任意并行度的灵活设计,支撑高流量的FEC设计需求。
图13是本申请实施例提供的一种译码装置的结构示意图,所述装置1300包括:
存储模块1301,用于将码字存储在多个存储地址,一个存储地址用于存储所述码字中m行n列的m*n个数据,所述m和所述n均是大于或等于1的整数;
读取模块1302,用于对于所述多个存储地址中的任一存储地址,从所述任一存储地址中读取所述任一存储地址中存储的m*n个数据;
译码模块1303,用于对读取到的m*n个数据进行译码。
可选地,所述译码模块1303包括:
第一确定单元,用于若本次译码过程为行向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定m个行数据组,一个行数据组包括所述读取到的m*n个数据中的n个数据,所述n个数据在所述码字中位于同一行;
第一译码单元,用于对所述m个行数据组进行译码。
可选地,所述第一译码单元用于:
将所述m个行数据组分别发送至m个第一译码节点,由每个第一译码节点对接收到的行数据组进行译码。
可选地,所述译码模块1303包括:
第二确定单元,用于若本次译码过程为列向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定n个列数据组,一个列数据组包括所述读取到的m*n个数据中的m个数据,所述m个数据在所述码字中位于同一列;
第二译码单元,用于对所述n个列数据组进行译码。
可选地,所述第二译码单元用于:
将所述n个列数据组分别发送至n个第二译码节点,由每个第二译码节点对接收到的列数据组进行译码。
可选地,所述装置1300还包括:
修改模块,用于将所述任一存储地址中存储的m*n个数据修改为m*n个译码数据,所述m*n个译码数据为所述读取到的m*n个数据译码后的数据。
可选地,所述存储模块1301用于:
按照m行n列的粒度,将所述码字中的数据划分成多个数据组,一个数据组包括所述码字中m行n列的m*n个数据;
将所述多个数据组存储在所述多个存储地址,一个存储地址中存储一个数据组。
可选地,所述多个存储地址属于同一个存储节点。
可选地,所述多个存储地址属于多个存储节点;
所述存储模块1301用于:
将所述多个数据组合并为多个数据集,一个数据集包括所述多个数据组中相邻的多个数据组;
将所述多个数据集中的数据组存储在所述多个存储地址,其中,一个存储地址中存储一个数据组,同一数据集中的多个数据组存储在不同存储节点内的存储地址中。
所述读取模块1302还用于:
对于所述多个数据集中的任一数据集,从所述多个存储节点读取所述任一数据集的多个数据组。
可选地,所述装置1300还包括:
确定模块,用于对于所述多个子码中相邻的多个目标子码,从所述多个数据集中确定与所述多个目标子码相关的至少一个目标数据集,所述至少一个目标数据集包括与所述多个目标子码相关的至少一个目标数据组,一个目标数据组包括所述多个目标子码中部分目标子码的数据;
所述读取模块1302,还用于从所述多个存储节点读取所述至少一个目标数据集中的目标数据组;
所述译码模块1303,还用于对读取到的目标数据组进行译码。
可选地,所述读取到的目标数据组包括至少一个奇目标数据组以及至少一个偶目标数据组,一个奇目标数据组为位于所述码字的奇数行层的目标数据组,一个偶目标数据组为位于所述码字的偶数行层的目标数据组;
所述译码模块1303用于:
将所述至少一个奇目标数据组发送给多个第三译码节点,由所述多个第三译码节点对接收到的奇目标数据组进行译码;
将所述至少一个偶目标数据组发送给多个第四译码节点,由所述多个第四译码节点对接收到的偶数据组进行译码。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的译码装置在对码字进行译码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的译码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,译码设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该处理器执行上述译码方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (26)
1.一种译码方法,其特征在于,所述方法包括:
将码字存储在多个存储地址,一个存储地址用于存储所述码字中m行n列的m*n个数据,所述m和所述n均是大于或等于1的整数;
对于所述多个存储地址中的任一存储地址,从所述任一存储地址中读取所述任一存储地址中存储的m*n个数据;
对读取到的m*n个数据进行译码。
2.根据权利要求1所述的方法,其特征在于,所述对读取到的m*n个数据进行译码包括:
若本次译码过程为行向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定m个行数据组,一个行数据组包括所述读取到的m*n个数据中的n个数据,所述n个数据在所述码字中位于同一行;
对所述m个行数据组进行译码。
3.根据权利要求2所述的方法,其特征在于,所述对所述m个行数据组进行译码包括:
将所述m个行数据组分别发送至m个第一译码节点,由每个第一译码节点对接收到的行数据组进行译码。
4.根据权利要求1所述的方法,其特征在于,所述对读取到的m*n个数据进行译码包括:
若本次译码过程为列向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定n个列数据组,一个列数据组包括所述读取到的m*n个数据中的m个数据,所述m个数据在所述码字中位于同一列;
对所述n个列数据组进行译码。
5.根据权利要求4所述的方法,其特征在于,所述对所述n个列数据组进行译码包括:
将所述n个列数据组分别发送至n个第二译码节点,由每个第二译码节点对接收到的列数据组进行译码。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述对读取到的m*n个数据进行译码之后,所述方法还包括:
将所述任一存储地址中存储的m*n个数据修改为m*n个译码数据,所述m*n个译码数据为所述读取到的m*n个数据译码后的数据。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将码字存储在多个存储地址包括:
按照m行n列的粒度,将所述码字中的数据划分成多个数据组,一个数据组包括所述码字中m行n列的m*n个数据;
将所述多个数据组存储在所述多个存储地址,一个存储地址中存储一个数据组。
8.根据权利要求7所述的方法,其特征在于,所述多个存储地址属于同一个存储节点。
9.根据权利要求7所述的方法,其特征在于,所述多个存储地址属于多个存储节点;
所述将所述多个数据组存储在所述多个存储地址包括:
将所述多个数据组合并为多个数据集,一个数据集包括所述多个数据组中相邻的多个数据组;
将所述多个数据集中的数据组存储在所述多个存储地址,其中,一个存储地址中存储一个数据组,同一数据集中的多个数据组存储在不同存储节点内的存储地址中。
10.根据权利要求9所述的方法,其特征在于,所述将所述多个数据集中的数据组存储在所述多个存储地址之后,所述方法还包括:
对于所述多个数据集中的任一数据集,从所述多个存储节点读取所述任一数据集的多个数据组。
11.根据权利要求9所述的方法,其特征在于,所述码字包括多个子码,所述将码字存储在多个存储地址之后,所述方法还包括:
对于所述多个子码中相邻的多个目标子码,从所述多个数据集中确定与所述多个目标子码相关的至少一个目标数据集,所述至少一个目标数据集包括与所述多个目标子码相关的至少一个目标数据组,一个目标数据组包括所述多个目标子码中部分目标子码的数据;
从所述多个存储节点读取所述至少一个目标数据集中的目标数据组;
对读取到的目标数据组进行译码。
12.根据权利要求11所述的方法,其特征在于,所述读取到的目标数据组包括至少一个奇目标数据组以及至少一个偶目标数据组,一个奇目标数据组为位于所述码字的奇数行层的目标数据组,一个偶目标数据组为位于所述码字的偶数行层的目标数据组;
所述对读取到的多个目标数据组进行译码包括:
将所述至少一个奇目标数据组发送给多个第三译码节点,由所述多个第三译码节点对接收到的奇目标数据组进行译码;
将所述至少一个偶目标数据组发送给多个第四译码节点,由所述多个第四译码节点对接收到的偶数据组进行译码。
13.一种译码装置,其特征在于,所述装置包括:
存储模块,用于将码字存储在多个存储地址,一个存储地址用于存储所述码字中m行n列的m*n个数据,所述m和所述n均是大于或等于1的整数;
读取模块,用于对于所述多个存储地址中的任一存储地址,从所述任一存储地址中读取所述任一存储地址中存储的m*n个数据;
译码模块,用于对读取到的m*n个数据进行译码。
14.根据权利要求13所述的装置,其特征在于,所述译码模块包括:
第一确定单元,用于若本次译码过程为行向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定m个行数据组,一个行数据组包括所述读取到的m*n个数据中的n个数据,所述n个数据在所述码字中位于同一行;
第一译码单元,用于对所述m个行数据组进行译码。
15.根据权利要求14所述的装置,其特征在于,所述第一译码单元用于:
将所述m个行数据组分别发送至m个第一译码节点,由每个第一译码节点对接收到的行数据组进行译码。
16.根据权利要求13所述的装置,其特征在于,所述译码模块包括:
第二确定单元,用于若本次译码过程为列向译码过程,基于所述读取到的m*n个数据在所述码字中的位置,确定n个列数据组,一个列数据组包括所述读取到的m*n个数据中的m个数据,所述m个数据在所述码字中位于同一列;
第二译码单元,用于对所述n个列数据组进行译码。
17.根据权利要求16所述的装置,其特征在于,所述第二译码单元用于:
将所述n个列数据组分别发送至n个第二译码节点,由每个第二译码节点对接收到的列数据组进行译码。
18.根据权利要13-17任一项所述的装置,其特征在于,所述装置还包括:
修改模块,用于将所述任一存储地址中存储的m*n个数据修改为m*n个译码数据,所述m*n个译码数据为所述读取到的m*n个数据译码后的数据。
19.根据权利要求13-18任一项所述的装置,其特征在于,所述存储模块用于:
按照m行n列的粒度,将所述码字中的数据划分成多个数据组,一个数据组包括所述码字中m行n列的m*n个数据;
将所述多个数据组存储在所述多个存储地址,一个存储地址中存储一个数据组。
20.根据权利要求19所述的装置,其特征在于,所述多个存储地址属于同一个存储节点。
21.根据权利要求19所述的装置,其特征在于,所述多个存储地址属于多个存储节点;
所述存储模块用于:
将所述多个数据组合并为多个数据集,一个数据集包括所述多个数据组中相邻的多个数据组;
将所述多个数据集中的数据组存储在所述多个存储地址,其中,一个存储地址中存储一个数据组,同一数据集中的多个数据组存储在不同存储节点内的存储地址中。
22.根据权利要求21所述的装置,其特征在于,所述读取模块还用于:
对于所述多个数据集中的任一数据集,从所述多个存储节点读取所述任一数据集的多个数据组。
23.根据权利要求21所述的装置,其特征在于,所述装置还包括:
确定模块,用于对于所述多个子码中相邻的多个目标子码,从所述多个数据集中确定与所述多个目标子码相关的至少一个目标数据集,所述至少一个目标数据集包括与所述多个目标子码相关的至少一个目标数据组,一个目标数据组包括所述多个目标子码中部分目标子码的数据;
所述读取模块,还用于从所述多个存储节点读取所述至少一个目标数据集中的目标数据组;
所述译码模块,还用于对读取到的目标数据组进行译码。
24.根据权利要求23所述的装置,其特征在于,所述读取到的目标数据组包括至少一个奇目标数据组以及至少一个偶目标数据组,一个奇目标数据组为位于所述码字的奇数行层的目标数据组,一个偶目标数据组为位于所述码字的偶数行层的目标数据组;
所述译码模块用于:
将所述至少一个奇目标数据组发送给多个第三译码节点,由所述多个第三译码节点对接收到的奇目标数据组进行译码;
将所述至少一个偶目标数据组发送给多个第四译码节点,由所述多个第四译码节点对接收到的偶数据组进行译码。
25.一种译码设备,其特征在于,所述译码设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述程序代码由所述处理器加载并执行以实现如权利要求1至权利要求12任一项所述的译码方法所执行的操作。
26.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至权利要求12任一项所述的译码方法所执行的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110112883.5A CN114826283A (zh) | 2021-01-27 | 2021-01-27 | 译码方法、装置、设备以及计算机可读存储介质 |
PCT/CN2022/071135 WO2022161147A1 (zh) | 2021-01-27 | 2022-01-10 | 译码方法、装置、设备以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110112883.5A CN114826283A (zh) | 2021-01-27 | 2021-01-27 | 译码方法、装置、设备以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114826283A true CN114826283A (zh) | 2022-07-29 |
Family
ID=82524567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110112883.5A Pending CN114826283A (zh) | 2021-01-27 | 2021-01-27 | 译码方法、装置、设备以及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114826283A (zh) |
WO (1) | WO2022161147A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024078230A1 (zh) * | 2022-10-11 | 2024-04-18 | 深圳市中兴微电子技术有限公司 | 晶体振荡器、晶体振荡器的控制方法、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100538886C (zh) * | 2005-03-04 | 2009-09-09 | 中国科学院计算技术研究所 | 多维数组在动态随机存取存储器上的快速读写方法和装置 |
CN101930402B (zh) * | 2009-06-23 | 2012-10-24 | 北京兆易创新科技有限公司 | 具有检错/纠错电路的非挥发存储器及其读写方法 |
GB2531783B (en) * | 2014-10-30 | 2016-09-28 | Ibm | Method and device for removing error patterns in binary data |
CN110415748A (zh) * | 2018-04-27 | 2019-11-05 | 华为技术有限公司 | 存储器及信号处理方法 |
CN110661593B (zh) * | 2018-06-29 | 2022-04-22 | 中兴通讯股份有限公司 | 一种译码器、方法和计算机存储介质 |
CN110113058B (zh) * | 2019-06-04 | 2023-04-25 | 翰顺联电子科技(南京)有限公司 | 编译码方法、装置、设备及计算机可读存储介质 |
-
2021
- 2021-01-27 CN CN202110112883.5A patent/CN114826283A/zh active Pending
-
2022
- 2022-01-10 WO PCT/CN2022/071135 patent/WO2022161147A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024078230A1 (zh) * | 2022-10-11 | 2024-04-18 | 深圳市中兴微电子技术有限公司 | 晶体振荡器、晶体振荡器的控制方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022161147A1 (zh) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100808664B1 (ko) | 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치 | |
US6519732B1 (en) | Error-correcting encoding apparatus | |
JP2824474B2 (ja) | 誤り訂正方式及びこの誤り訂正方式を用いた復号器 | |
KR20040044590A (ko) | Ldpc 코드를 이용한 부호화기 및 부호화 방법 | |
CN1514548A (zh) | 纠错编码设备及方法 | |
US11245423B2 (en) | Interleaving method and apparatus | |
US8850275B2 (en) | Encoding apparatus, decoding apparatus, and encoding and decoding system | |
KR102244117B1 (ko) | 폴라 코드의 레이트 매칭을 프로세싱하기 위한 방법 및 장치 | |
JP2001028549A (ja) | 衛星アプリケーション用の積符号によって、セルを符号化する方法 | |
CN114826283A (zh) | 译码方法、装置、设备以及计算机可读存储介质 | |
JP5488472B2 (ja) | 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置 | |
US11070313B2 (en) | Staircase code decoding method and staircase code decoding apparatus | |
US8959403B2 (en) | QPP interleaver/de-interleaver for turbo codes | |
CN110741559A (zh) | 极化编码器、通信单元、集成电路及其方法 | |
KR20090064709A (ko) | Ldpc 부호의 패리티 검사 행렬 생성 장치 및 그방법과, 그를 이용한 ldpc 부/복호화 장치 | |
JP3628013B2 (ja) | 信号送信装置および符号化装置 | |
WO2018141292A1 (zh) | 数据处理方法及设备 | |
EP0674395A2 (en) | Error correction code encoding device and error correction code encoding method | |
JP2023519407A (ja) | データ通信のためのコーディング方法および装置 | |
CN110022158B (zh) | 一种译码方法及装置 | |
EP3493435A1 (en) | Encoding method and apparatus | |
JP2001332980A (ja) | インタリーブ装置及びインタリーブ方法 | |
JP4308226B2 (ja) | 誤り訂正符号化装置 | |
KR102324655B1 (ko) | 계단 코드의 디코딩 방법, 계단 코드 디코딩 장치, 및 저장매체 | |
RU2791016C1 (ru) | Способ и устройство для кодирования кода с низкой плотностью проверок на чётность (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 |