基于SIMD指令集的多码率多码长LDPC码解码方法与流程

文档序号:15098895发布日期:2018-08-04 15:15阅读:719来源:国知局

本发明属于信道编码技术领域,具体涉及一种解码方法,更为具体的说,是涉及一种基于SIMD指令集的多码率多码长LDPC码解码方法。



背景技术:

LDPC码即低密度奇偶校验(Low-Density Parity-Check,LDPC)码,它是由Robert G.Gallager博士于1963年首次提出的一类具有稀疏校验矩阵的线性分组码并在1995被D.J. C.Mackay和R.W.Neal重新提出。LDPC码具有逼近Shannon限的良好性能,而且译码复杂度较低、结构灵活、低延时,可实现高速并行译码,近二十年来一直是信道编码领域的研究热点。目前LDPC码已广泛应用于无线通信(WiFi,WiMAX)、深空通信、光纤通信、卫星数字视频和音频广播等领域。现在LDPC码已经成为5G信道编码中数据信道的编码方案, eMMB场景已经确定使用LDPC码的编码方案。

3GPP为LDPC码定义了两大类基矩阵,分别为BG1和BG2,其中BG1和BG2中各包括8个不同的基矩阵(参考文献2:3GPPTS 38.212,“Multiplexingandchannel coding,”v.1.0.0, Sep.2017;http://www.3gpp.org.)。BG_1中的基矩阵HBG_1的参数为Mb=46,Nb=68。BG2中的基矩阵的参数为Mb=42,Nb=52。BG1和BG2中各个基矩阵分别支持一组给定的扩展因子 Zc。标准规定,编码后的码字前2Zc个信息比特打孔不传输,详细速率匹配方案参考文献2。

图1给出了集合BG1中的LDPC码的矩阵结构示意图,整个矩阵结构由两部分组成,可以看做是核心矩阵和多个单奇偶校验码的级联。其中,核心矩阵是一个高码率矩阵,矩阵的右侧包含了一种双对角形式,并且第(Nb-Mb)列有“a-b-a”的形式,刚好可以满足编码算法的要求。核心矩阵与单奇偶校验码级联使得LDPC码支持码率低于核心矩阵的码字,并且构成了支持递增冗余混合重传(Incremental Redundancy Hybrid-Automatic-Repeat-request,IR-HARQ) 结构。BG2中的LDPC码除核心矩阵部分“a-b-a”的取值和“a-b-a”对应的行与BG1略有不同以外,其余均与图1所示的矩阵结构相似。

随着主要依靠时钟频率来提升处理器性能的方案达到了一个瓶颈,近些年来,作为继续提升处理器性能的并行处理技术受到了关注,主要包括单操作多数据流(Single Instruction MultipleData,SIMD)技术,单操作多线程(Single InstructionMultiple Threads,SIMT)技术,单程序多数据流(Single ProgramMultiple Data,SPMD)技术等,这些技术已经被集成于当前的 CPU和GPU。

纯软件实现的LDPC码译码器近些年来受到了广大研究人员的关注,然而近些年的研究主要集中于洪泛方式的LDPC译码和GPU实现方式,这不是最有效的LDPC码译码器实现方式。最新的研究(参考文献1:Gal B L,Jego C.High-Throughput Multi-Core LDPC Decoders Based on x86Processor[J].IEEE Transactions on Parallel&Distributed Systems,2016, 27(5):1373-1386.)提出了一种基于X86架构的LDPC码的高速解码器,然而该方法需要离线统计校验矩阵的相关信息,实现复杂度高,将其应用于面向5G的一类支持多码率多码长的 LDPC码比较困难。

目前已经提出的LDPC码解码算法中,分层译码算法具有收敛速度快,占用内存少的特点受到了广泛关注,虽然分层译码算法的并行度不高,但是适用于X86架构处理器的软件实现;目前的已有研究表明,送入LDPC码解码器的对数似然比采用6比特量化,解码器采用 8比特处理方式的定点译码和浮点译码相比,性能损失可以忽略不计。



技术实现要素:

为解决上述问题,本发明公开了基于SIMD指令集的多码率多码长LDPC码解码方法,能够克服已有方法的LDPC码软件实现需要离线统计校验矩阵信息的缺陷。本发明结合准循环结构的LDPC码基矩阵特点,通过外部配置文档实现对校验矩阵信息在线统计,采用定点分层译码方案,解码器为不同行重分别构造了一个特定校验节点计算单元,根据不同行重选择校验节点计算单元,校验节点计算单元内部采用循环展开方式,既降低了复杂度,同时提高了吞吐率。

本发明特点在于根据分块结构的LDPC码的基矩阵和扩展因子Zc,在线统计校验矩阵信息;解码器采用分层归一化最小和方式,为每一类行重构造相应的校验节点计算单元,校验节点计算单元内部采用循环展开方式。

为了达到上述目的,本发明提供如下技术方案:

基于SIMD指令集的多码率多码长LDPC码解码方法,包括如下步骤:

S101:统计校验矩阵信息

首先读取分块结构LDPC码的参数Mb、Nb和Zc以及基矩阵Hb,Mb为基矩阵的行数, Nb为基矩阵的列数,Zc为扩展因子;

将Hb按照行重dc从大到小重新排序,结合Zc统计扩展后的H中行重和对应行重的数目,并将其存储到数组degs和degsComputation中,统计不同行重的数目NoDegs以及H中1的数目NoOnes,H表示LDPC码的校验矩阵,H的行、列数分别为M、N,M=Mb*Zc,N=Nb*Zc;

根据Zc对Hb中非负元素hij进行取模,hij'=mod(hij,Zc),并用Zc*Zc的单位循环移位阵替换对应的非负元素,移位参数取hij',使用Zc*Zc的全零矩阵替换-1元素,得到校验矩阵H;

创建以SIMD数据类型为基本类型的长度为N的数组var_nodes,存储变量节点的对数似然比En;

使用一个指针数组p_vn_adr存储排序后H阵中每行中1对应的var_nodes的地址;

创建一个大小为NoOnes的数组var_mesg,存储信息Lmn,Lmn为校验节点cm传递给变量节点vn的信息;

S102:迭代初始化

根据SIMD数据类型的特点,对输入的对数似然比[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N] 重新排序,[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]是串行送入解码器,经过Q比特量化采用P 比特存储;将T个码字第j位的对数似然比依次排列成如[E1,j,E2,j,…,ET,j]所示格式,1≤j≤N,构成P*T比特的数据,存储到数组var_nodes中第j个位置,位宽为P*T比特;

初始化迭代次数k=0;

规定最大迭代次数为K;

初始化各个校验节点传递给相邻变量节点的信息

S103:迭代次数更新,k=k+1;

S104:循环初始化

初始化行度数索引j=0;

初始化分别用于顺序读取和写入En地址的指针数组,p_indice_nodr=p_vn_adr, p_indice_nodw=p_vn_adr;初始化分别用于读取和写入Lmn的指针p_msg_lr=var_mesg, p_msg_lw=var_mesg;

S105:行度数索引更新,j=j+1;

S106:选取校验节点计算单元

调用switch(degs[j]),进入对应的校验节点计算单元;

S107:校验节点单元初始化

初始化行迭代次数m=0;设定对应行重的行的数目degsComputation[j];

S108:行索引更新,m=m+1;

S109:更新

对于该行所有的变量节点vn∈B(m),B(m)为校验节点cm包含的变量节点的集合,分别从 p_indice_nodr和p_msg_lr读取En和根据公式

更新Lnm为变量节点vn传递给校验节点cm的信息,并做P比特限幅,将p_indice_nodr 和p_msg_lr自增,指向下一个位置;

S110:更新和En

对于该行的所有变量节点vn∈B(m),根据更新的采用归一化最小和方式,更新和 En:

其中,α为修正因子,sign(x)表示对x取符号位,

对En做P比特限幅写入p_indice_nodw,对做Q比特限幅写入p_msg_lr,然后将 p_indice_nodw和p_msg_lr自增;

S111:若m=degsComputatiom[j],则进入步骤S112;否则进入步骤S108;

S112:若j=NoDegs;则进入步骤S113;否则进入步骤S105;

S113:若k=K,则进入步骤S114;否则进入步骤S103;

S114:终止迭代译码,将迭代更新后的数组var_nodes中的对数似然比经过重新排序输出:

[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]

并且给出硬判决输出:

其中1≤t≤T,1≤j≤N。

进一步的,P≥Q。

进一步的,Q取6,P取8。

与现有技术相比,本发明具有如下优点和有益效果:

1.实现了校验矩阵信息的在线统计,相比于现有算法需要离线统计校验矩阵的信息,降低了多码率码长的LDPC码译码器的存储量。

2.在解码器中根据不同的行重分别构造了一个特定的校验节点计算单元,根据进入解码器的行重,选择不同的校验节点计算单元,与现有算法相比,消除了对矩阵统计信息的依赖,降低了译码器的实现复杂度;对校验矩阵按照行重重新排序,使得行重相同的校验节点计算只需要一次比较便可以选择相应的计算单元,减少了解码器中根据度数选择不同计算单元的比较次数,提高了解码效率。

3.与现有算法相比,本算法不存在速度损失,同时可以对在线计算的模块进行修正,支持任意结构的LDPC码,具有通用性。

附图说明

图1为5G中BG1对应的LDPC码矩阵结构示意图。

图2为本发明提供的基于SIMD指令集的多码率多码长LDPC码解码方法流程图。

图3为5G标准中制定的LDPC码BG1的一个基矩阵分块示意图。

图4为在不同码率下,本发明方法在给定码率R分别为1/3,1/2,2/3,11/12时,支持 Zc∈{2,4,8,16,32,64,128,256}的全部码字的存储量和参考文献1的存储量的对比曲线以及在 Zc=256时各个码率的吞吐率对比曲线。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。

本发明针对已有算法需要离线统计校验矩阵信息的缺点,结合准循环结构的LDPC码的基矩阵特性,提出了一种适用于多码率多码长的LDPC码的解码方法。根据配置文件,在线统计LDPC码校验矩阵信息。为了提高译码吞吐率和内存使用效率,采用定点分层译码方式,本发明消除了对离线统计结果的依赖特性,预先根据行重构造多个校验节点计算单元,解码过程中根据不同的dc选取相应的校验节点计算单元,同时根据dc对基矩阵进行重新排序,并统计了不同的行重对应的扩展后的H行的数目,减少了解码器中根据度数选择不同计算单元的比较次数,提高了解码效率;根据SIMD指令集自身的特性,使用并行度为T的SIMD指令集并行处理T个码字,实现了对SIMD指令集的100%利用,有效提高了解码吞吐率。

具体来说,本发明提供的基于SIMD指令集的多码率多码长LDPC码解码方法是针对一个Mb*Nb的基矩阵Hb表示的分块结构LDPC码,各参数定义如下:Mb为基矩阵的行数,Nb为基矩阵的列数,矩阵中每个元素用hij来表示,hij的取值为≥-1的整数;基矩阵每行中非负元素的个数dc代表行重即校验节点的度数;Hb支持多个扩展因子Zc,每个非负元素首先对 Zc取模,然后根据取模后的数值映射成一个Zc*Zc的单位阵循环移位阵,-1对应全零阵;LDPC 码的整体可以定义为一个M*N的校验矩阵H,M=Mb*Zc,N=Nb*Zc;vn代表第n(1≤n≤N)个变量节点,cm代表第m(1≤m≤M)个校验节点;B(m)为校验节点cm包含的变量节点的集合,B(m)\n 为除变量节点vn的B(m)集合;En为变量节点vn的对数似然比信息,Lnm、Lmn分别为变量节点vn传递给校验节点cm的信息和校验节点cm传递给变量节点vn的信息;sign(x)表示对x取符号位,

串行送入解码器的T(采用8比特处理方式,SSE模式下T取16,AVX模式下T取32)个经过 Q比特量化采用P(P≥Q,Q一般取6,P一般取8)比特存储的对数似然比数据为 [E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N],其中Et,j,1≤t≤T,1≤j≤N表示第t个码字的第j位的对数似然比。

本发明方法如图2所示,包括如下步骤:

S101:统计校验矩阵信息

首先读取参数Mb、Nb和Zc以及基矩阵Hb,假设给定的参数为Mb=4,Nb=8,Zc=8,基矩阵 Hb如式(1)所示:

将Hb按照行重dc从大到小重新排序,结合Zc统计扩展后的H中行重和对应行重的数目,并将其存储到数组degs和degsComputation中,统计不同行重的数目NoDegs以及H中1的数目NoOnes,对Hb重新排序的目的是为了使行重相同的校验行只需要调用一次switch语句便可以进入相应的校验节点处理单元,减少比较的次数,提高了解码效率;根据给定的Zc和基矩阵,我们可以计算得到degs={5,3},degsComputation={120,24},NoDegs=2,NoOnes=144;根据Zc对Hb中非负元素hij进行取模,hij'=mod(hij,Zc),并用Zc*Zc的单位循环移位阵替换对应的非负元素,移位参数取hij',使用Zc*Zc的全零矩阵替换-1元素,得到校验矩阵H,给定的Zc=8,此时排序取模后的矩阵和式(1)相同,将式(1)中每个非负元素用一个8*8的单位循环移位阵替换,循环右移的参数取对应位置的参数,以Hb第一行第一列的元素为例,使用一个8*8的单位阵循环右移4位后进行替换,如下式(2)所示:

每一个-1元素用一个8*8的全零矩阵替换;创建以SIMD数据类型为基本类型的长度为N的数组var_nodes,存储变量节点的对数似然比En;使用一个指针数组p_vn_adr存储排序后H 阵中每行中1对应的var_nodes的地址,引入p_vn_adr的目的是为了解码过程中可以直接通过p_vn_adr实现对En的读取,提高了内存读取效率;创建一个大小为NoOnes的数组var_mesg,存储校验节点向变量节点传输的信息Lmn;

S102:迭代初始化

根据SIMD数据类型的特点,对输入的对数似然比[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N] 重新排序,将T个码字第j位的对数似然比依次排列成如[E1,j,E2,j,…,ET,j](1≤j≤N)所示格式,构成P*T比特的数据,存储到数组var_nodes中第j个位置(位宽为P*T比特);初始化迭代次数k=0;规定最大迭代次数为K;初始化各个校验节点传递给相邻变量节点的信息

S103:迭代次数更新,k=k+1;

S104:循环初始化

初始化行度数索引j=0;初始化分别用于顺序读取和写入En地址的指针数组, p_indice_nodr=p_vn_adr,p_indice_nodw=p_vn_adr;初始化分别用于读取和写入Lmn的指针 p_msg_lr=var_mesg,p_msg_lw=var_mesg;

S105:行度数索引更新,j=j+1;

S106:选取校验节点计算单元

调用switch(degs[j]),根据degs[j]进行比较,选择相应的计算单元,进入对应的校验节点计算单元。

S107:校验节点单元初始化

初始化行迭代次数m=0;设定对应行重的行的数目degsComputation[j];

S108:行索引更新,m=m+1;

S109:更新

对于该行所有的变量节点vn∈B(m),分别从p_indice_nodr和p_msg_lr读取En和根据公式

更新并做P比特限幅,将p_indice_nodr和p_msg_lr自增,指向下一个位置;

S110:更新和En

对于该行的所有变量节点vn∈B(m),根据更新的采用归一化最小和方式,更新和 En,

α为修正因子,

对En做P比特限幅写入p_indice_nodw,对做Q比特限幅写入p_msg_lr,然后将p_indice_nodw和p_msg_lr自增;

S111:若m=degsComputation[j],则进入步骤S112;否则进入步骤S108;

S112:若j=NoDegs;则进入步骤S113;否则进入步骤S105;

S113:若k=K,则进入步骤S114;否则进入步骤S103;

S114:终止迭代译码,将迭代更新后的数组var_nodes中的对数似然比经过重新排序输出 [E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N],并且给出硬判决输出,其中(1≤t≤T, 1≤j≤N)。

以下基于本发明步骤实施一案例,以进一步说明本发明优越性。

图3为5G标准中制定的LDPC码BG1的一个基矩阵分块示意图,Mb=46,Nb=68。其中C矩阵为4行42列,每个元素的值都为-1,对应全零阵;D矩阵为42行42列,除对角元素为0,对应单位阵,其它元素均为-1;矩阵A和矩阵B为23行26列,具体元素值见表1 表2,矩阵的扩展因子可以取Zc∈{2,4,8,16,32,64,128,256},编码后码字的前2Zc列打孔不传输。

表1:R1_BG1_1LDPC码分块式校验矩阵A分块(23*26)

表2:R1_BG1_1LDPC码分块式校验矩阵B分块(23*26)

图4是针对图3给定的基矩阵,选取码率分别为R=1/3,1/2,2/3,11/12时,支持 Zc∈{2,4,8,16,32,64,128,256}的全部码字条件下,本发明方法与参考论文方法的存储量对比曲线以及在各码率下Zc取256时的吞吐率对比曲线。其中,最大迭代次数K=20,采用分层NMS 译码,固定乘性因子α=0.75,在单核模式下采用Intel SSE指令集,选用i5-3470T处理器,主频为2.9GHz,送入解码器的对数似然比采用Q=6比特量化,解码器采用P=8比特处理,前 2Zc列打孔不传输,由于上述解码过程中均需要为p_vn_adr,var_nodes和var_mesgs创建存储空间,因此不将上述变量引入比较范围。根据文献1的要求,在各个选取的码率下,需要分别离线统计8个码字的校验矩阵信息,这些信息是常驻内存的;而本发明方法则仅需要存储一个基矩阵,假设两种方法均采用4字节整数进行存储。其中本发明方法在完成对p_vn_adr 的初始化后可以释放为H创建的存储空间。从图4中可以看出,参考论文方法的存储量随着码率的提高而下降,这是由于低码率码字与高码率码字相比,需要包含更多的校验矩阵信息,而本发明方法则仅需要包含对应码率的基矩阵的信息即可;另外根据文献1的方法,如果需要支持对应码率的所有码字,需要为对应码字分别编写解码器,而本发明方法则仅需要编写一个解码器,与文献1相比,本发明方法应用方便;此外,从图上可以看出,本发明方法和参考论文方法不存在性能损失。

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1