首页 / 专利库 / 电脑编程 / 算法 / 一种基于矢量指令集的LDPC码快速译码方法

一种基于矢量指令集的LDPC码快速译码方法

阅读:323发布:2024-01-11

专利汇可以提供一种基于矢量指令集的LDPC码快速译码方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于矢量指令集的LDPC码快速译码方法,包括:对校验信息矩阵进行集中化存储;利用矢量指令对所述的校验信息矩阵进行初始化;利用矢量指令和所述的校验信息矩阵的集中化存储结构完成校验信息的计算和更新;利用矢量指令计算后验概率,根据后验概率结果进行判决;利用矢量指令计算校验值;若校验通过则输出译码结果。本发明方法将其译码过程中的初始化、校验位的 位置 存储、校验信息在矩阵 水 平方向和垂直方向上的快速 访问 、校验信息计算、校验信息的更新以及判决输出等过程和矢量指令集架构进行良好的适配,解决了利用矢量指令集完成LDPC译码的问题,具有灵活高效,应用广泛的特点。,下面是一种基于矢量指令集的LDPC码快速译码方法专利的具体信息内容。

1.一种基于矢量指令集的LDPC码快速译码方法,其特征在于,包括以下步骤:
步骤1,对校验信息矩阵进行集中化存储,形成行和列两个方向上的分矩阵的形式;
步骤2,利用矢量指令对所述的校验信息矩阵进行初始化;
步骤3,利用矢量指令和所述的校验信息矩阵的集中化存储结构完成校验信息的计算和更新;
步骤4,利用矢量指令计算后验概率,根据后验概率结果进行判决;
步骤5,利用矢量指令计算校验值;
步骤6,若校验通过则输出译码结果,若校验未通过且迭代未达到最大次数,则回到步骤3继续执行计算。
2.根据权利要求1所述的快速译码方法,其特征在于,所述校验信息的计算和更新采用基于软判决信息的置信传播类算法,包括和积译码算法、最小和译码算法、归一化最小和译码算法、偏置最小和译码算法或自修正最小和译码算法。
3.根据权利要求1所述的快速译码方法,其特征在于,步骤3中所述的校验信息的计算和更新包括平计算更新操作和垂直计算更新操作,所述的水平计算更新操作是指,使用矢量指令进行校验信息矩阵水平方向上的更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵;所述的垂直计算更新操作是指,使用矢量指令进行校验信息矩阵垂直方向上的更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵。
4.根据权利要求3所述的快速译码方法,其特征在于,所述的水平计算更新操作是指,对校验信息矩阵在水平方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法的改进算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值一项或多项指令的组合。
5.根据权利要求3所述的快速译码方法,其特征在于,所述的垂直计算更新操作是指,对校验信息矩阵在垂直方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法的改进算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值一项或多项指令的组合。
6.根据权利要求1所述的快速译码方法,其特征在于,所述的矢量指令包括单指令多数据的处理器架构中的矢量指令集,当存在多个可以并行处理数据的计算单元时,通过所述的矢量指令集中的一条指令即可以实现多路数据的并行读取、并行操作和并行写回。
7.根据权利要求1所述的快速译码方法,其特征在于,所述的校验信息矩阵采用校验位置矩阵的形式记录,将原本稀疏形式的校验信息矩阵中校验节点的位置记录下来,跳过矩阵中为0的位置,按照译码处理的顺序进行排列,实现紧凑结构的存储,且便于矢量化访问
8.根据权利要求1所述的快速译码方法,其特征在于,所述的对校验信息矩阵进行集中化存储的方法为:将校验信息矩阵在行和列两个方向根据所采用的矢量指令集的并行度划分成子块;然后再将子块的各行或列首尾相连形成矢量从而映射到连续的存储空间中。
9.根据权利要求1所述的快速译码方法,其特征在于,步骤2中对所述的校验信息矩阵进行初始化是指,将输入的软判决信息按照校验位置矩阵内存储的位置信息写入到校验信息矩阵中。
10.根据权利要求1所述的快速译码方法,其特征在于,步骤4中所述的计算后验概率包括求和操作;步骤4中所述的判决方法采用基于矢量指令的并行比较法;步骤5中所述的计算校验值是将校验信息矩阵和译码输出进行联合计算。

说明书全文

一种基于矢量指令集的LDPC码快速译码方法

技术领域

[0001] 本发明涉及纠错码中的LDPC码的译码技术领域,具体涉及基于矢量指令集的LDPC译码过程的快速译码方法。

背景技术

[0002] 无线通信中通常需要使用纠错编码来实现对传输中由于无线信道的影响而造成的误码,提升传输的可靠性。纠错编码有很多种类型,其中低密度奇偶校验码(LDPC码)因为其性能逼近香农限,易于进行理论分析和研究的特点,成为近年纠错编码领域研究和应用的热点。由于其结构描述简单,编译码过程易于实现,已经在地面移动通信、卫星通信等领域得到广泛应用。
[0003] LDPC码的编码较为简单,而由于LDPC码一般具有较长的码长,因此对于该码型的译码,由于其特殊的编码结构可实现并行操作的特点,其核心就是在校验信息矩阵的行方向(平方向)和列方向(垂直方向)上反复进行校验值的计算,对于任何一种LDPC码,其校验信息矩阵都具有稀疏特性,而译码过程中必须要频繁的从校验信息矩阵中读取和写回信息,这种分散的存储器读取和写回操作往往制约了译码的速度。已有的LDPC码的译码很多选择了在FPGA上进行实现,利用FPGA提供的处理架构的灵活性来实现并行译码过程。于此同时,大量的基于单指令多数据(SIMD)架构的处理器及处理内核也进入市场,该类型的处理器或内核支持的矢量指令集可以实现单条指令操作多个数据构成的数据矢量,也具有天然的并行处理特性,并且灵活性和平均功耗优于FPGA,因此也成为信号处理器件的一大类型。
[0004] 目前基于SIMD架构的矢量指令集已经可以实现数字信号处理的大部分功能,一些专用的指令可以很好的支撑数字信号处理的特殊需求,并出现了大量搭载SIMD架构矢量处理内核的片上系统芯片(SoC),这些芯片已经广泛应用于通信以及雷达信号处理过程当中。将数字信号处理过程的各类型功能都在SIMD架构的处理器上使用相应的矢量指令集来实现可以有效降低系统实现的体积功耗以及成本。矢量指令一般适合于连续存储的数据结构,而LDPC译码时主要对具有稀疏特性的校验信息矩阵进行操作,如果直接使用矢量指令对校验信息矩阵中所有数据进行操作,则会产生大量针对零值的无效操作,大大降低处理效率,所以目前利用矢量指令集来完成LDPC译码还缺乏高效的方法,如何将译码算法与适量指令集的处理结构相匹配也是需要解决的问题,这也限制了矢量处理器在信号处理领域的应用范围。

发明内容

[0005] 本发明的目的在于提供一种基于矢量指令集的LDPC码快速译码实现方法,将其译码过程中的初始化、校验位的位置存储、校验信息在矩阵水平方向和垂直方向上的快速访问、校验信息计算、校验信息的更新以及判决输出等过程和矢量指令集架构进行良好的适配,稍作修改即可以适用LDPC译码过程中的多种译码算法。
[0006] 本发明的目的是这样实现的,包括以下步骤:
[0007] 步骤1,对校验信息矩阵进行集中化存储,形成行和列两个方向上的分矩阵的形式;
[0008] 步骤2,利用矢量指令对所述的校验信息矩阵进行初始化;
[0009] 步骤3,利用矢量指令和所述的校验信息矩阵的集中化存储结构完成校验信息的计算和更新;
[0010] 步骤4,利用矢量指令计算后验概率,根据后验概率结果进行判决;
[0011] 步骤5,利用矢量指令计算校验值;
[0012] 步骤6,若校验通过则输出译码结果,若校验未通过且迭代未达到最大次数,则回到步骤3继续执行计算。
[0013] 具体地,步骤3中所述的校验信息的计算和更新包括水平计算更新操作和垂直计算更新操作,所述的水平计算更新操作是指,使用矢量指令进行校验信息矩阵水平方向上的更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵;所述的垂直计算更新操作是指,使用矢量指令进行校验信息矩阵垂直方向上的更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵。
[0014] 所述校验信息的计算和更新采用基于软判决信息的置信传播类算法,包括和积译码算法、最小和译码算法、归一化最小和译码算法、偏置最小和译码算法或自修正最小和译码算法。
[0015] 具体地,所述的水平计算更新操作是指,对校验信息矩阵在水平方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法的改进算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值等一项或多项指令的组合。
[0016] 具体地,所述的垂直计算更新操作是指,对校验信息矩阵在垂直方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法的改进算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值等一项或多项指令的组合。
[0017] 优选地,所述的矢量指令包括单指令多数据的处理器架构中的矢量指令集,当存在多个可以并行处理数据的计算单元时,通过所述的矢量指令集中的一条指令即可以实现多路数据的并行读取、并行操作和并行写回。
[0018] 优选地,所述的校验信息矩阵采用校验位置矩阵的形式记录,将原本稀疏形式的校验信息矩阵中校验节点的位置记录下来,跳过矩阵中为0的位置,按照译码处理的顺序进行排列,实现紧凑结构的存储,且便于矢量化访问。
[0019] 具体地,所述的对校验信息矩阵进行集中化存储的方法为:将校验信息矩阵在行和列两个方向根据所采用的矢量指令集的并行度划分成子块;然后再将子块的各行或列首尾相连形成矢量从而映射到连续的存储空间中。
[0020] 具体地,步骤2中对所述的校验信息矩阵进行初始化是指,将输入的软判决信息按照校验位置矩阵内存储的位置信息写入到校验信息矩阵中。
[0021] 具体地,步骤4中所述的计算后验概率包括求和操作。
[0022] 具体地,步骤5中所述的计算校验值是将校验信息矩阵和译码输出进行联合计算。
[0023] 优选地,步骤4中所述的判决方法采用基于矢量指令的并行比较法。
[0024] 本发明提出的快速译码方法可以支持常见的基于软判决信息的置信传播类译码算法,包括:和积译码算法、最小和译码算法以及最小和译码算法的改进。本发明方法利用SIMD架构的思想和矢量指令集实现上述过程,解决了利用矢量处理器完成LDPC译码的问题,具有灵活高效的特点,适合于当前众多搭载了矢量处理器内核的片上系统芯片(SoC)。附图说明
[0025] 图1为本发明方法的流程示意图。
[0026] 图2为本发明实施例中简化的矢量处理器结构框图
[0027] 图3为本发明实施例中具有稀疏结构的LDPC码校验信息矩阵和紧凑存储结构示例图;
[0028] 图4为本发明实施例中将分块存储结构进一步转化为连续存储结构的示意图。

具体实施方式

[0029] 下面结合附图和实施例对本发明作进一步的说明,但不以任何方式对本发明加以限制,基于本发明教导所作的任何变更或改进,均属于本发明的保护范围。
[0030] 如图1所示,本发明提供了一种基于矢量指令集的LDPC码快速译码方法,包括以下步骤:
[0031] 步骤1,对校验信息矩阵进行集中化存储,形成行和列两个方向上的分块矩阵的形式;在步骤1中,由于LDPC码的校验信息矩阵具有很强的稀疏性,故可以根据校验信息矩阵生成校验位置矩阵,用来存储用于进行校验的节点的位置。
[0032] 步骤2,利用矢量指令对所述的校验信息矩阵进行初始化;对校验信息矩阵进行初始化,一般初始化为输入的软信息。实际中,所述的对校验信息的初始化,使用矢量指令将指定数据批量的写入到校验信息矩阵变形后形成的连续的存储空间中。
[0033] 步骤3,利用矢量指令和所述的校验信息矩阵的集中化存储结构完成校验信息的计算和更新;步骤3中所述的校验信息的计算和更新包括水平计算更新操作和垂直计算更新操作,所述的水平计算更新操作是指,使用矢量指令进行对校验信息矩阵水平更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵;所述的垂直计算更新操作是指,使用矢量指令进行对校验信息矩阵垂直更新操作,将多路信号以特定的方式进行矢量化的读取和运算,最终以矢量化的方式存储回校验信息矩阵。所述校验信息的计算和更新采用基于软判决信息的置信传播类算法,包括和积译码算法、最小和译码算法、归一化最小和译码算法、偏置最小和译码算法或自修正最小和译码算法。
[0034] 所述的水平计算更新操作是指,对校验信息矩阵在水平方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值等一项或多项的组合。由于数据已经通过前面的初始化过程实现了信息的连续存储,因此可以通过本发明描述的方法使用矢量指令操作实现。
[0035] 所述的垂直计算更新操作是指,对校验信息矩阵在垂直方向进行更新操作,操作的依据是LDPC的译码算法,所述的译码算法包括和积译码算法、最小和译码算法以及最小和译码算法,所述译码算法执行过程中使用的矢量指令包括连乘、连加、求和、求绝对值以及求最小/大值等一项或多项的组合。由于数据已经通过前面的初始化过程实现了信息的连续存储,可以通过本发明描述的方法使用矢量指令操作实现。
[0036] 步骤4,利用矢量指令计算后验概率,根据后验概率结果进行判决;所述的计算后验概率包括求和操作。
[0037] 步骤5,利用矢量指令计算校验值;所述的计算校验值是将校验信息矩阵和译码输出进行联合计算。
[0038] 步骤6,若校验通过则输出译码结果,若校验未通过且迭代未达到最大次数,则回到步骤3继续执行计算。
[0039] 基于矢量指令集的快速译码实现方法中的矢量指令,主要指“单指令多数据”(SIMD)的处理器架构中,当存在多个可以并行处理数据的计算单元时,通过一条指令即可以实现多路数据的并行读取、并行操作和并行写回,实现不同操作的指令构成的集合就是矢量指令集。目前常见的矢量指令集一般都支持常见的数学操作。
[0040] 所述的快速译码方法步骤中的校验位置矩阵为实施本发明所需的重要参量,指将稀疏形式的校验信息矩阵中校验节点的位置记录下来,跳过矩阵中为0的位置,实现一个紧凑结构的存储,一方面节约存储空间,一方面将稀疏的数据按照译码处理的顺序进行排列,因为矢量化的访问要求连续存储,所以如此进行排列便于后面步骤的矢量化访问。
[0041] 一个简化的矢量处理器结构框图如图2所示,此时的并行处理单元共24个,处理单元可以接收相同的指令并且都可以独立访问数据存储区,矢量指令集包含24个处理单元的加减乘除算术运算以及乘累加、批量比较等矢量化操作。本发明可以扩展到具有不同并行处理单元数目的情况。一个LDPC码的校验信息矩阵有288行,576列,本发明方法可以扩展到不同大小的校验信息矩阵的情况。通过以下步骤完成该LDPC码在矢量指令集上的快速译码过程:
[0042] 1)根据LDPC码的校验信息矩阵的具体结构,在行和列的方向上对具有稀疏结构的LDPC码进行集中存储,形成一系列分块矩阵的形式,在新的存储结构中不再有原矩阵中的零元素;图3具有稀疏结构的LDPC码校验信息矩阵和紧凑存储结构示例图,假设校验信息矩阵是288*576的矩阵,其中空白部分都为0。
[0043] 2)对集中存储后的校验信息分块矩阵进行初始化,具体指将译码过程的输入存储到校验信息矩阵的具体位置上去;
[0044] 3)根据行方向上划分的行分块矩阵,在每个分块矩阵的列方向上使用矢量指令,或者通过一系列矢量指令的组合,根据具体的LDPC译码算法完成校验信息的更新;
[0045] 4)根据列方向上划分的列分块矩阵,在每个分块矩阵的列方向上使用矢量指令,或者通过一系列矢量指令的组合,根据具体的LDPC译码算法完成校验信息的更新;
[0046] 5)根据更新后的校验信息矩阵内的信息来计算后验概率信息并进行判决;
[0047] 6)计算校验值,判断是否还需要进行迭代并输出结果。
[0048] 上述实施例中步骤1)是方法中的关键步骤,中所述的矩阵变换和集中存储方式的方法是:首先考虑水平(行)方向上的集中存储,将所有的行按照矢量指令集的并行度的大小,也就是24进行分组,本实施例中校验信息矩阵共用288行,可以分为12块,也就是说每个子块包含24行,在每个子块中,将各行中不为零的元素的位置记录到分块矩阵当中,当一个子块中各行不为零的元素的个数不相同时,取最大的个数作为这个子块的列数,不足的位置补零,在实施例中,第一个行方向上的子块的大小就是24*6。对列方向采用同一方法,将所有的列根据并行度24进行分组,本实施例中校验信息矩阵共有576列,可以分为576/24=24块,也就是每个子块包含24个列;在每个列的子块中,将各列中不为零的元素的位置记录到分块矩阵当中,当一个子块中各列不为零的元素的个数不相同时,取最大的个数作为这个子块的行数,不足的位置补零,在实施例中,第一个列方向上的块的大小就是3*24。由于LDPC码的校验信息矩阵事先已经确定,因此这部分可以以离线的方式计算并存储到芯片中供查询和调用。
[0049] 上述数据的存储结构可以是
[0050] 实施方法一:以分块矩阵结构在存储区进行存储,适合于可以对数据进行二维访问的存储结构,例如数据以二维数组形式存储;
[0051] 实施方法二:在实施方法一的基础上,如图4所示,可以进一步将分块矩阵进行各行(列)进行首尾相接,形成一个一维的长向量,适合于常见连续存储的结构;
[0052] 上述实施例中步骤2)中所述的信息初始化方法的实施方式是:通过矢量指令集中的批量读取指令,一次读取24个数据,再用矢量指令集中的批量写入指令一次性写入到校验信息矩阵相应的位置上,多次重复即可以完成对所有数据的赋值,如果实际的信息长度不是24的整数倍,则最后一次读写操作还是按照24个数据进行,舍弃无效数据即可;
[0053] 上述实施例中步骤3)中所述的对行分块矩阵进行校验信息更新的实施方式是:使用矢量操作指令可以操作这个行分块矩阵的一列或多列,例如对于多个列的累加操作,可以使用矢量加法指令逐个完成累加操作;因此根据LDPC译码算法的具体方式,使用矢量指令完成算法所要求的各个列之间的算术运算,运算完成后再将运算结果放回行分块矩阵的原位置;
[0054] 上述实施例中步骤4)中所述的对列分块矩阵进行校验信息更新的实施方式是:使用矢量操作指令刚好可以操作这个行分块矩阵的一行或多行,例如对于多个行的累加操作,可以使用矢量加法指令逐个完成累加操作;因此根据LDPC译码算法的具体方式,使用矢量指令完成算法要求的各个行之间的算术运算,运算完成后再将运算结果存储回列分块矩阵的原位置;
[0055] 其中,具体的LDPC译码算法可以是和积译码算法、最小和译码算法以及最小和译码算法的多种改进算法中的一种。
[0056] 上述实施例中步骤5)中所述的对后验信息的计算并判决的实施方式是使用矢量指令按照最大的并行度读取校验信息并按照具体算进行矢量化计算,计算结果再使用矢量化的比较指令,将每个长度为24的存储有后验信息的矢量和长度为24的全零矢量相比较,后验信息大于0的判决为比特1,后验信息小于0的判决为比特0。
[0057] 上述实施例中步骤6)中所述的计算校验值的实施方式是,使用矢量读取操作分别读取判决后信息比特和校验信息矩阵,然后使用相乘并累加指令将信息比特和校验信息矩阵相乘并获得累加值,多次重复此操作可以完成信息比特所构成的向量和校验信息矩阵的相乘运算结果,该结果和全零矢量进行比较,如果为比较值全部相同,说明校验通过,结束译码过程;如果比较值不全相同,则信息比特中仍有错误,继续回到步骤3)进行校验信息的迭代更新,直到步骤6)中的校验通过或者到达最大迭代次数。
[0058] 本发明提出的基于矢量指令集的快速译码方法的工作原理如下:对于给定的LDPC码方案,一定有一个确定的校验信息矩阵,一般具有稀疏结构,该稀疏结构不利于使用矢量指令进行并行化处理。首先通过本发明提出的方法并根据矢量处理器的并行度对校验信息矩阵行和列方向进行集中化存储,实现存储空间上的连续性。然后对校验信息进行初始化。初始化完毕后,已经集中化存储的校验信息已经可以支持矢量化的访问,此时使用本发明提出的方法根据行方向上的集中化存储结构和矢量指令特性,通过矢量化的算术操作完成校验信息在水平方向上的更新;水平更新完毕后,使用本发明提出的方法根据列方向上的集中化存储结构和矢量指令特性,通过矢量化的算术操作完成校验信息在垂直方向上的更新;两次更新的结果又重新使用矢量指令批量写回到校验信息矩阵中。校验信息全部更新完毕后使用本发明提出的方法使用矢量指令集完成后验概率的计算和判决以及校验值的计算,最后根据校验值和迭代次数判断译码过程是否结束并输出最终译码结果。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈