一种基于IntelCPU的并行Turbo译码方法

文档序号:10555309阅读:309来源:国知局
一种基于Intel CPU的并行Turbo译码方法
【专利摘要】本发明公开一种基于Intel CPU的并行Turbo译码方法,包括如下步骤:(1)使用单指令多数据流指令加快Turbo译码运算。在单指令多数据流指令中,每个码块分配128位,根据CPU支持的指令位宽决定并行码块个数,编写针对性代码,使每码块内部操作与单码块译码时相同;(2)在单指令多数据流指令中,以对数似然比形式同时计算并行码块的前向状态度量值α和反向状态度量值β,计算过程中会产生状态分别为正负的两个中间矢量,在时序为k时,设定α的序号为k,β的序号为码长N?1?k。当k达到或超过N的一半时,将时序N?1?k的αβ载入矢量并互换位置,与时序k中的两个中间矢量进行计算,得到输出对数似然比信息。
【专利说明】
一种基于Inte I GPU的并行Turbo译码方法
技术领域
[0001] 本发明属于数据传输领域,涉及一种发射机物理层中Turbo译码方法。
【背景技术】
[0002] 在通信系统中,为了使信道容量逼近香农极限,很多情况下会采用Turbo编译码技 术。Turbo编码步骤较为简单,而译码则相对复杂。为了满足通信系统要求的高速率,需要尽 可能提高Turbo译码的吞吐量。
[0003] 以往移动通信的Turbo译码往往是在特定的DSP平台上进行。随着Intel CPU单指 令多数据流的发展,其计算能力越来越强,基于Intel CPU的Turbo译码也开始出现并不断 改进。以往基于Intel CPU的Turbo译码并未实现在单指令多数据流指令下的并行译码。

【发明内容】

[0004] 技术问题:本发明提供一种使用单指令多数据流指令实现多码块并行Turbo译码 的方法。
[0005] 技术方案:本发明的基于Intel CPU的Turbo译码方法,具体包括如下步骤:
[0006] (1)在单指令多数据流指令中,每个码块分配128位,设定并行码块个数为CPU支持 的指令位宽除以128;设置迭代指示器index = 0;
[0007] (2)对每个码块分别进行解剪裁,每个码块得到两串系统信息LsysQ,L sysjP两串校 验信息LpQ,Lpl,所述系统信息LsysI由系统信息LsysQ交织得到,所述L sysQ、Lp()由系统中的分量 译码器0处理,所述Lsysl、L pl由系统中的分量译码器1处理;
[0008] (3)以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值 y 11、y 10,即 y 11 = 0 · 5(LSyS+Lp+La),y 10 = 0 · 5(LSys-Lp+La),其中La为先验f目息,L sys为LsysO和 Lsysl的通用符号,LALpq和Lpl的通用符号;
[0009] (4)分量译码器0中,在时序k,构建0k+1,具体为:根据各个码块的卷积码生成矩阵 列出分支状态度量值γ nk、γ 1Qk的对应序列,将γ nk、γ 1Qk按所述对应序列构建矢量γk;
[0010] 使用单指令多数据流指令进行矢量运算,即0k+= 0k+γ k,0k-= 0k-γ k,然后根据卷 积码生成矩阵对应状态位变化对9k+,0k-内部数据进行重新排列;求0 k+和Θ1-对应数据的最大 值作为下一时序的矢量91"1,然后进行归一化处理;
[0011] 其中,0k由上一时序产生,0k中包含并行码块的八个前向状态度量值α/和八个反 向状态度量值& m,j为状态序号,N为系统码长,当k = 0时,Qt3内部数据为:^ = -!〗?,!^1 =-127,ajW = 〇,β护〇N-1 = 〇; 0k+、0k-为状态分别为正、负的中间矢量,m = Ν-k-l;
[0012] (5)分量译码器0中,当时序k小于N的一半时,令k = k+l,并返回步骤(4),否则载入 矢量θ'将其内部的〇/和|3/调换位置,根据下式计算Lk+和L k^
[0013] Lk+ = 9m+0k+,Lk-=9m+0k-,
[0014] 其中Lk+和LK_分别为状态为正负的输出对数似然比中间矢量;所述Lk+和L 1-每个矢 量内部分别有并行码块的八个k时序的输出对数似然比中间值和八个m时序的输出对数似 然比中间值;
[0015 ]分别求出Lk+中k时序和m时序的输出对数似然比中间值的最大值lk+和Γ+,L k冲k时 序和m时序的输出对数似然比中间值的最大值IkIPl'然后计算出lk+-lk1卩是k时刻的输出 对数似然比信息,Γ+-11卩是m时刻的输出对数似然比信息;若k = N-l,则进入步骤(6),否 则令k = k+l,并返回步骤(4);
[0016] (6)按照所述步骤(3)至(5)中分量译码器0的处理方法和流程,在分量译码器1中 进行分量译码,得到输出对数似然比信息,然后由公式U = U-Lsys-La得到外部信息U,当前 译码器为译码器0时,将Uo交织得到译码器1的先验信息L al,当前译码器为译码器1时,将U1 解交织得到译码器0的先验信息LaQ,其中U)、LaQ为译码器0的外部信息和先验信息,L el、Lal 为译码器1的外部信息和先验信息,Le是Let)、Lel的通用符号,1^是1^0、Ul的通用符号;
[0017] (7)迭代指示器index累加一次,如index〈6,则返回步骤(3),当index = 6时,译码 结束。
[0018] 进一步的,本发明方法中,所述步骤(1)中CPU指令集位宽为256位;设置并行码块 个数为2,所述步骤(3)至(6)中的运算使用AVX2指令集处理。
[0019] 进一步的,本发明方法中,所述步骤(1)中CPU指令集位宽为512位,设置并行码块 个数为4,所述步骤(3)至(6)中的运算使用AVX512指令集处理。
[0020] 进一步的,本发明方法中,所述步骤(4)中和(5)中使用单指令多数据流指令实现 前向状态度量值和反向状态度量值的并行计算。
[0021] 进一步的,本发明方法中,所述步骤(4)中的归一化处理为:0k+1内部8个状态的 α15+1、!^1都减去该度量值的0状态值a〇k+1 jf1。
[0022] 本发明与现有的单码块译码方法相比,该方法在相同指令周期内处理多个码块数 据,效率提升与并行码块数相同的倍数。与现有的分别正向计算α并反向计算邱勺方法相比, 该方法在相同指令周期内完成前者的正反向计算,效率提升一倍。
[0023] 有益效果:本发明与现有技术相比,具有以下优点:
[0024]当前的Turbo译码器实现方案中以github上的srsLTE项目较为完善、性能较好,此 方案使用AVX指令集,128位高级矢量寄存器,16位定点化,单码块译码,顺序计算α、β的方 法。本发明与此方案相比,具有如下特点:
[0025] (1)当CPU支持的单指令多数据流指令集为AVX2、AVX512或更新的指令集时,本发 明相应增加并行码块个数并在译码过程中使用对应的指令以充分利用指令集支持的位宽; srsLTE中并没有针对AVX2或更新的指令集的方法,无法充分发挥处理器性能;由于AVX、 AVX2和AVX512的指令周期是相同的,但是处理的数据量一次翻倍,则使用AVX2和AVX512实 现的并行译码和使用AVX单码块译码所需时间相同,当指令集为AVX2时,本方法对应的矢量 运算吞吐量是srsLTE中矢量运算吞吐量的两倍,当指令集为AVX512时,本方法对应的矢量 运算吞吐量是srsLTE中矢量运算吞吐量的四倍;
[0026] (2)本发明使用的并行计算α、β的方法是用8位表示定点数,在128位中排列8个状 态的α和8个状态的β,而srsLTE中用16位表示定点数,128位中只能排列8个16位定点数,因 此相同指令周期中,本方法可以并行计算α、β,而srsLTE中的方法只能串行计算α、β;另外在 计算输出对数似然比时,由于α、邱勺并行排列,每次可以计算出两个输出对数似然比信息, 而srsLTE中的方法只能计算一个;使用8位定点和16位定点相比增加的误码率在0.3dB以 内。
【附图说明】
[0027] 图1是并行Turbo译码结构图。
[0028]图2是生成矩阵[1 0 I 1;1 I 0 1]对应状态位变化图。
[0029]图3是α、β矢量计算流程图。
[0030] 图4是输出对数似然比矢量计算流程图。
【具体实施方式】
[0031] 下面结合实施例和说明书附图对本发明作进一步的说明。
[0032]实施例1:一种基于Intel CPU的并行Turbo译码方法,此实施例中硬件平台采用 Intel CPU Core i7-4790,支持AVX2指令集,配有16个256位高级矢量寄存器,主频3.6GHz; Turbo码生成矩阵为[1 0 I 1;1 I 0 1],数据采用8位定点表示。双码块并行译码时码块1 在低128位,码块2在高128位,码块之间并没有交互,如图1所示。Turbo码携带信息为系统信 息L sysQ,校验信息一和Lpl,Lsysl由Lsys〇经过交织得到。以下说明其中一个码块的译码过程: [0033] (1)对码块进行解剪裁,得到两串系统信息L syst),Lsysl和两串校验信息一,Lpl,所述 系统信息Lsysl由系统信息Lsyst)交织得到,所述LsysQ、L p()由系统中的分量译码器0处理,所述 Lsysl、LPi由系统中的分量译码器1处理;
[0034] (3)以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值 γ 11、γ ?ο;
[0035] 根据分支状态度量计算公式:
[0036]
[0037] Lsys,Lp,La,U分别为系统信息,校验信息,先验信息和外部信息;u k,pk分别表示系 统码和校验码;Slk表示k步第i个状态位;
[0038] 得到 y 11 = 0 · 5(Lsys+Lp+La),y IQ = O · 5(LSyS-Lp+La),其中La为先验f目息,Lsys为LsysO 和Lsysl的通用符号,LpSlpq和Lpl的通用符号;
[0039] (4)分量译码器0中,在时序k,构建0k+1,具体为:根据码块的卷积码生成矩阵列出 分支度量值γ nk、γ IQk的对应序列,如图2所示,将γ nk、γ IQk按所述对应序列构建矢量γk; 矢量 9k 内部的定点数排列是 因此本例中从高位到低位对应的γ排列为γ nm,γ i〇m,γ i〇m,γ nm,γ nm,γ i〇m,γ i〇m,γ nm, γ nk,γ nk,γ i〇k,γ i〇k,γ i〇k,γ i〇k,γ nk,γ nk,m为k的反向时序,m=N-k-l,N为系统码长 度;
[0040] 根据前向状态度量计算公式计算α:
[0041]
[0042I 集合F包含了 k步中与Sj(k+1)有关的2 个状态位,aQ = {0,-00,-00,-00,-00,-00,- OO ^ -00 I .
[0043 ]根据后向状态度量计算公式计算β:
[0044]
[0045]集合B包含与状态Sj(k-υ有关的k步的状态位,β Ν-1= {0,-°° OO ^ -OO I .
[0046] 使用单指令多数据流指令进行矢量运算,如图3所示, 然后根据卷积码生成矩阵对应状态位变化对91{+,01-内部数据进行重新排列;求0&和Θ 1-对应 数据的最大值作为下一时序的矢量9k+1;使用单指令多数据流指令进行计算时,由于8位定 点的限制,得到9 k+1后要进行归一化处理,即内部8个状态的#+1、^1都减去该度量值的0状 态值a〇 k+1、β〇η-1,BP 归一化后内部排列为β/-Ιβ,-1,β6η-1ItT 1,β5η-Ιβ,-1,β/-Ιβ,-1,工一 Po""1, P2m^1-Pom"1, ^r1-Pom"1,0, a7k+1-a〇k+1, a6k+1-a〇k+1, a5k+1-a〇k+1, a4k+1-a〇k+1, a3k+1-a〇k+1, a2k+1-a0k+1,ai k+1-a0k+1,〇;
[0047] 其中,当k = 〇时,θ°部数据为:α〇° = -127,β〇Ν-1 = -127,α护。。=〇,β护〇Ν-1 = 〇; 0k+、0k-为状态分别为正、负的中间矢量,9k由上一时序产生,9 k中包含并行码块的八个前向状态度 量值ajk和八个反向状态度量值β/,j为状态序号;
[0048]此步骤所涉及的矢量计算中,每个码块占用矢量内部的128位,所涉及的矢量计算 中,低64位计算前向状态度量值a,高64位计算反向状态度量值β,高64位和低64位之间不会 有数据交换;
[0049] (5)分量译码器0中,当时序k小于N的一半时,令k = k+l,并返回步骤(4),否则根据 以下公式计算输出对数似然比L。:
[0050]
[00511集合U1和IT1包含了当Uk分别为1和-1时的状态位;
[0052]如图4所示,载入矢量θ'将其内部的调换位置,根据下式计算Lk+和L1^ [0053] Lk+ = 0m+0k+,Lk- = 0m+0k-,其中Lk+和Lk-分别为状态为正负的输出对数似然比中间矢 量;所述L k+和L1^每个矢量内部分别有并行码块的八个k时序的输出对数似然比中间值和 八个m时序的输出对数似然比中间值;
[0054] 分别求出Lk+中k时序和m时序的输出对数似然比中间值的最大值Ik+和Γ+,Ι^中k时 序和m时序的输出对数似然比中间值的最大值I kIPl'然后计算出lk+-lk1卩是k时刻的输出 对数似然比信息,Γ+-Γ_即是m时刻的输出对数似然比信息,为视图简洁,图中l k+、lk_用1表 示,而lm+、lm,x表示,状态标注在框图右侧;若k=N-l,执行下一步操作,否则令k = k+l,并 返回步骤(4);
[0055] 此步骤所涉及的矢量计算中,每个码块占用矢量内部的128位,低64位计算当前时 序k的输出对数似然比,高64位计算时序Ν-k-l的输出对数似然比,除了将矢量Θ Ν^内部的 α/+1和β/调换位置时高64位数据和低64位数据互换外,其余矢量计算中高64位和低64位 之间不会有数据交换;
[0056] (6)按照所述步骤(3)至(5)中分量译码器0的处理方法和流程,在分量译码器1中 进行分量译码,得到输出对数似然比信息,然后由公式U = U-Lsys-U得到外部信息U,当前 译码器为译码器0时,将Uo交织得到译码器1的先验信息Lal,当前译码器为译码器1时,将U1 解交织得到译码器0的先验信息LaQ,其中U)、LaQ为译码器0的外部信息和先验信息,L el、Lal 为译码器1的外部信息和先验信息,Le是LeQ、Lel的通用符号,1^是1^0、Ul的通用符号;
[0057] (7)迭代指示器index累加一次,如index〈6,则返回步骤(3),当index = 6时,译码 结束。
[0058] 这种基于Intel CPU的并行Turbo译码方法主要优点在于吞吐量高,而误码率性能 损失有限。实施例1的结果如表格1所示,对照组为SrsLTE中的顺序计算α、β的Turbo单码块 译码方案。误码率损失的比较对象是MTLAB下使用双精度浮点数进行Turbo译码的误码率。 [0059] 表格1单码块和双码块并行Turbo译码性能比较
[0061]上述实施例仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术 人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发 明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。
【主权项】
1. 一种基于InteI CPU的并行Turbo译码方法,其特征在于,该方法包括如下步骤: (1) 在单指令多数据流指令中,每个码块分配128位,设定并行码块个数为CPU支持的指 令位宽除以128;设置迭代指示器index = 0; (2) 对每个码块分别进行解剪裁,每个码块得到两串系统信息LsysQ,Lsysl和两串校验信 息LpQ,Lpl,所述系统信息Lsysl由系统信息LsysQ交织得到,所述LsysQ、LpQ由系统中的分量译码 器0处理,所述L sysl、Lpl由系统中的分量译码器1处理; (3) 以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值γη、 y 10,即 y 11 = 0 · 5(Lsys+Lp+La),y IQ = O · 5(LSyS-Lp+La),其中La为先验f目息,Lsys为LsysQ和Lsysl 的通用符号,LALpq和Lpl的通用符号; (4) 分量译码器0中,在时序k,构建0k+1,具体为:根据各个码块的卷积码生成矩阵列出 分支状态度量值γ nk、γ IQk的对应序列,将γ nk、γ以按所述对应序列构建矢量γk; 使用单指令多数据流指令进行矢量运算,即9k+ = 0k+ γ k,Θ1-= 0k- γ k,然后根据卷积码 生成矩阵对应状态位变化对θ'θ1-内部数据进行重新排列;求0&和Θ1-对应数据的最大值作 为下一时序的矢量9 k+1,然后进行归一化处理; 其中,9k由上一时序产生,0k中包含并行码块的八个前向状态度量值a/和八个反向状态 度量值&m,j为状态序号,N为系统码长,当k = 0时,Qt3内部数据为:€^ = -127 4(^ = -127, a护oQ = 0,β护oN-1 = 0; 0k+、0k-为状态分别为正、负的中间矢量,m = Ν-k-l; (5) 分量译码器0中,当时序k小于N的一半时,令k = k+l,并返回步骤(4),否则载入矢量 Sm,将其内部的〇/和0/调换位置,根据下式计算Lk+和L1-: Lk+=0m+0k+,Lk-= 9m+0k-, 其中Lk+和LK_分别为状态为正负的输出对数似然比中间矢量;所述Lk+和L k_每个矢量内 部分别有并行码块的八个k时序的输出对数似然比中间值和八个m时序的输出对数似然比 中间值; 分别求出Lk+中k时序和m时序的输出对数似然比中间值的最大值Ik+和Γ+,Ι^中k时序和 m时序的输出对数似然比中间值的最大值IkIPl'然后计算出lk+-lk1卩是k时刻的输出对数 似然比信息,Γ+-Γ1卩是m时刻的输出对数似然比信息;若k=N-l,则进入步骤(6),否则令k = k+l,并返回步骤(4); (6) 按照所述步骤(3)至(5)中分量译码器0的处理方法和流程,在分量译码器1中进行 分量译码,得到输出对数似然比信息,然后由公式U = U-Lsys-U得到外部信息U,当前译码 器为译码器0时,将Uo交织得到译码器1的先验信息Lal,当前译码器为译码器1时,将U 1解交 织得到译码器0的先验信息LaQ,其中LeQ、LaQ为译码器0的外部信息和先验信息,L el、Lal为译 码器1的外部?目息和先验?目息,Le是Le〇、Lel的通用符号,La是LaO、Lal的通用符号; (7) 迭代指示器index累加一次,如index〈6,则返回步骤(3),当index = 6时,译码结束。2. 根据权利要求1所述的基于Intel CPU的并行Turbo译码方法,其特征在于,所述步骤 (1)中CTU指令集位宽为256位;设置并行码块个数为2,所述步骤(3)至(6)中的运算使用 AVX2指令集处理。3. 根据权利要求1所述的基于Intel CPU的并行Turbo译码方法,其特征在于,所述步骤 (1)中CTU指令集位宽为512位,设置并行码块个数为4,所述步骤(3)至(6)中的运算使用 AVX512指令集处理。4. 根据权利要求1、2或3所述的基于Intel CPU的并行Turbo译码方法,其特征在于,所 述步骤(4)中和(5)中使用单指令多数据流指令实现前向状态度量值和反向状态度量值的 并行计算。5. 根据权利要求1、2或3所述的基于Intel CPU的并行Turbo译码方法,其特征在于,所 述步骤(4)中的归一化处理为:0k+1内部8个状态的a k+1 j-1都减去该度量值的〇状态值aQk+1、 β〇Μ-、
【文档编号】H03M13/29GK105915235SQ201610218721
【公开日】2016年8月31日
【申请日】2016年4月8日
【发明人】王捷, 毕明勇, 范鹏博, 李磊, 粟勇, 王东明
【申请人】东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1