当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于Intel CPU的并行Turbo译码方法技术

技术编号:13623613 阅读:57 留言:0更新日期:2016-09-01 14:17
本发明专利技术公开一种基于Intel CPU的并行Turbo译码方法,包括如下步骤:(1)使用单指令多数据流指令加快Turbo译码运算。在单指令多数据流指令中,每个码块分配128位,根据CPU支持的指令位宽决定并行码块个数,编写针对性代码,使每码块内部操作与单码块译码时相同;(2)在单指令多数据流指令中,以对数似然比形式同时计算并行码块的前向状态度量值α和反向状态度量值β,计算过程中会产生状态分别为正负的两个中间矢量,在时序为k时,设定α的序号为k,β的序号为码长N‑1‑k。当k达到或超过N的一半时,将时序N‑1‑k的αβ载入矢量并互换位置,与时序k中的两个中间矢量进行计算,得到输出对数似然比信息。

【技术实现步骤摘要】

本专利技术属于数据传输领域,涉及一种发射机物理层中Turbo译码方法。
技术介绍
在通信系统中,为了使信道容量逼近香农极限,很多情况下会采用Turbo编译码技术。Turbo编码步骤较为简单,而译码则相对复杂。为了满足通信系统要求的高速率,需要尽可能提高Turbo译码的吞吐量。以往移动通信的Turbo译码往往是在特定的DSP平台上进行。随着Intel CPU单指令多数据流的发展,其计算能力越来越强,基于Intel CPU的Turbo译码也开始出现并不断改进。以往基于Intel CPU的Turbo译码并未实现在单指令多数据流指令下的并行译码。
技术实现思路
技术问题:本专利技术提供一种使用单指令多数据流指令实现多码块并行Turbo译码的方法。技术方案:本专利技术的基于Intel CPU的Turbo译码方法,具体包括如下步骤:(1)在单指令多数据流指令中,每个码块分配128位,设定并行码块个数为CPU支持的指令位宽除以128;设置迭代指示器index=0;(2)对每个码块分别进行解剪裁,每个码块得到两串系统信息Lsys0,Lsys1和两串校验信息Lp0,Lp1,所述系统信息Lsys1由系统信息Lsys0交织得到,所述Lsys0、Lp0由系统中的分量译码器0处理,所述Lsys1、Lp1由系统中的分量译码器1处理;(3)以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值γ11、γ10,即γ11=0.5(Lsys+Lp+La),γ10=0.5(Lsys-Lp+La),其中La为先验信息,Lsys为Lsys0和Lsys1的通用符号,Lp为Lp0和Lp1的通用符号;(4)分量译码器0中,在时序k,构建θk+1,具体为:根据各个码块的卷积码生成矩阵列出分支状态度量值γ11k、γ10k的对应序列,将γ11k、γ10k按所述对应序列构建矢量γk;使用单指令多数据流指令进行矢量运算,即θk+=θk+γk,θk-=θk-γk,然后根据卷积码生成矩阵对应状态位变化对θk+,θk-内部数据进行重新排列;求θk+和θk-对应数据的最大值作为下一时序的矢量θk+1,然后进行归一化处理;其中,θk由上一时序产生,θk中包含并行码块的八个前向状态度量值αjk和八个反向状态度量值βjm,j为状态序号,N为系统码长,当k=0时,θ0内部数据为:α00=-127,β0N-1=-127,αj≠00=0,βj≠0N-1=0;θk+、θk-为状态分别为正、负的中间矢量,m=N-k-1;(5)分量译码器0中,当时序k小于N的一半时,令k=k+1,并返回步骤(4),否则载入矢量θm,将其内部的αjm和βjk调换位置,根据下式计算Lk+和Lk-:Lk+=θm+θk+,Lk-=θm+θk-,其中Lk+和LK-分别为状态为正负的输出对数似然比中间矢量;所述Lk+和Lk-每个矢量内部分别有并行码块的八个k时序的输出对数似然比中间值和八个m时序的输出对数似然比中间值;分别求出Lk+中k时序和m时序的输出对数似然比中间值的最大值lk+和lm+,Lk-中k时序和m时序的输出对数似然比中间值的最大值lk-和lm-,然后计算出lk+-lk-即是k时刻的输出对数似然比信息,lm+-lm-即是m时刻的输出对数似然比信息;若k=N-1,则进入步骤(6),否则令k=k+1,并返回步骤(4);(6)按照所述步骤(3)至(5)中分量译码器0的处理方法和流程,在分量译码器1中进行分量译码,得到输出对数似然比信息,然后由公式Le=Lo-Lsys-La得到外部信息Le,当前译码器为译码器0时,将Le0交织得到译码器1的先验信息La1,当前译码器为译码器1时,将Le1解交织得到译码器0的先验信息La0,其中Le0、La0为译码器0的外部信息和先验信息,Le1、La1为译码器1的外部信息和先验信息,Le是Le0、Le1的通用符号,La是La0、La1的通用符号;(7)迭代指示器index累加一次,如index<6,则返回步骤(3),当index=6时,译码结束。进一步的,本专利技术方法中,所述步骤(1)中CPU指令集位宽为256位;设置并行码块个数为2,所述步骤(3)至(6)中的运算使用AVX2指令集处理。进一步的,本专利技术方法中,所述步骤(1)中CPU指令集位宽为512位,设置并行码块个数为4,所述步骤(3)至(6)中的运算使用AVX512指令集处理。进一步的,本专利技术方法中,所述步骤(4)中和(5)中使用单指令多数据流指令 实现前向状态度量值和反向状态度量值的并行计算。进一步的,本专利技术方法中,所述步骤(4)中的归一化处理为:θk+1内部8个状态的αk+1、βm-1都减去该度量值的0状态值α0k+1、β0m-1。本专利技术与现有的单码块译码方法相比,该方法在相同指令周期内处理多个码块数据,效率提升与并行码块数相同的倍数。与现有的分别正向计算α并反向计算β的方法相比,该方法在相同指令周期内完成前者的正反向计算,效率提升一倍。有益效果:本专利技术与现有技术相比,具有以下优点:当前的Turbo译码器实现方案中以github上的srsLTE项目较为完善、性能较好,此方案使用AVX指令集,128位高级矢量寄存器,16位定点化,单码块译码,顺序计算α、β的方法。本专利技术与此方案相比,具有如下特点:(1)当CPU支持的单指令多数据流指令集为AVX2、AVX512或更新的指令集时,本专利技术相应增加并行码块个数并在译码过程中使用对应的指令以充分利用指令集支持的位宽;srsLTE中并没有针对AVX2或更新的指令集的方法,无法充分发挥处理器性能;由于AVX、AVX2和AVX512的指令周期是相同的,但是处理的数据量一次翻倍,则使用AVX2和AVX512实现的并行译码和使用AVX单码块译码所需时间相同,当指令集为AVX2时,本方法对应的矢量运算吞吐量是srsLTE中矢量运算吞吐量的两倍,当指令集为AVX512时,本方法对应的矢量运算吞吐量是srsLTE中矢量运算吞吐量的四倍;(2)本专利技术使用的并行计算α、β的方法是用8位表示定点数,在128位中排列8个状态的α和8个状态的β,而srsLTE中用16位表示定点数,128位中只能排列8个16位定点数,因此相同指令周期中,本方法可以并行计算α、β,而srsLTE中的方法只能串行计算α、β;另外在计算输出对数似然比时,由于α、β的并行排列,每次可以计算出两个输出对数似然比信息,而srsLTE中的方法只能计算一个;使用8位定点和16位定点相比增加的误码率在0.3dB以内。附图说明图1是并行Turbo译码结构图。图2是生成矩阵[1 0 1 1;1 1 0 1]对应状态位变化图。图3是α、β矢量计算流程图。图4是输出对数似然比矢量计算流程图。具体实施方式下面结合实施例和说明书附图对本专利技术作进一步的说明。实施例1:一种基于Intel CPU的并行Turbo译码方法,此实施例中硬件平台采用Intel CPU Core i7-4790,支持AVX2指令集,配有16个256位高级矢量寄存器,主频3.6GHz;Turbo码生成矩阵为[1 0 1 1;1 1 0 1],数据采用8位定点表示。双码块并行译码时码块1在低128位,码块2在高128位,码块之间并没有交互,如图1所示。Turbo码本文档来自技高网...

【技术保护点】
一种基于Intel CPU的并行Turbo译码方法,其特征在于,该方法包括如下步骤:(1)在单指令多数据流指令中,每个码块分配128位,设定并行码块个数为CPU支持的指令位宽除以128;设置迭代指示器index=0;(2)对每个码块分别进行解剪裁,每个码块得到两串系统信息Lsys0,Lsys1和两串校验信息Lp0,Lp1,所述系统信息Lsys1由系统信息Lsys0交织得到,所述Lsys0、Lp0由系统中的分量译码器0处理,所述Lsys1、Lp1由系统中的分量译码器1处理;(3)以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值γ11、γ10,即γ11=0.5(Lsys+Lp+La),γ10=0.5(Lsys‑Lp+La),其中La为先验信息,Lsys为Lsys0和Lsys1的通用符号,Lp为Lp0和Lp1的通用符号;(4)分量译码器0中,在时序k,构建θk+1,具体为:根据各个码块的卷积码生成矩阵列出分支状态度量值γ11k、γ10k的对应序列,将γ11k、γ10k按所述对应序列构建矢量γk;使用单指令多数据流指令进行矢量运算,即θk+=θk+γk,θk‑=θk‑γk,然后根据卷积码生成矩阵对应状态位变化对θk+,θk‑内部数据进行重新排列;求θk+和θk‑对应数据的最大值作为下一时序的矢量θk+1,然后进行归一化处理;其中,θk由上一时序产生,θk中包含并行码块的八个前向状态度量值αjk和八个反向状态度量值βjm,j为状态序号,N为系统码长,当k=0时,θ0内部数据为:α00=‑127,β0N‑1=‑127,αj≠00=0,βj≠0N‑1=0;θk+、θk‑为状态分别为正、负的中间矢量,m=N‑k‑1;(5)分量译码器0中,当时序k小于N的一半时,令k=k+1,并返回步骤(4),否则载入矢量θm,将其内部的αjm和βjk调换位置,根据下式计算Lk+和Lk‑:Lk+=θm+θk+,Lk‑=θm+θk‑,其中Lk+和LK‑分别为状态为正负的输出对数似然比中间矢量;所述Lk+和Lk‑每个矢量内部分别有并行码块的八个k时序的输出对数似然比中间值和八个m时序的输出对数似然比中间值;分别求出Lk+中k时序和m时序的输出对数似然比中间值的最大值lk+和lm+,Lk‑中k时序和m时序的输出对数似然比中间值的最大值lk‑和lm‑,然后计算出lk+‑lk‑即是k时刻的输出对数似然比信息,lm+‑lm‑即是m时刻的输出对数似然比信息;若k=N‑1,则进入步骤(6),否则令k=k+1,并返回步骤(4);(6)按照所述步骤(3)至(5)中分量译码器0的处理方法和流程,在分量译码器1中进行分量译码,得到输出对数似然比信息,然后由公式Le=Lo‑Lsys‑La得到外部信息Le,当前译码器为译码器0时,将Le0交织得到译码器1的先验信息La1,当前译码器为译码器1时,将Le1解交织得到译码器0的先验信息La0,其中Le0、La0为译码器0的外部信息和先验信息,Le1、La1为译码器1的外部信息和先验信息,Le是Le0、Le1的通用符号,La是La0、La1的通用符号;(7)迭代指示器index累加一次,如index<6,则返回步骤(3),当index=6时,译码结束。...

【技术特征摘要】
1.一种基于Intel CPU的并行Turbo译码方法,其特征在于,该方法包括如下步骤:(1)在单指令多数据流指令中,每个码块分配128位,设定并行码块个数为CPU支持的指令位宽除以128;设置迭代指示器index=0;(2)对每个码块分别进行解剪裁,每个码块得到两串系统信息Lsys0,Lsys1和两串校验信息Lp0,Lp1,所述系统信息Lsys1由系统信息Lsys0交织得到,所述Lsys0、Lp0由系统中的分量译码器0处理,所述Lsys1、Lp1由系统中的分量译码器1处理;(3)以对数似然比形式计算分量译码器0各个码块中每个时序对应的分支度量值γ11、γ10,即γ11=0.5(Lsys+Lp+La),γ10=0.5(Lsys-Lp+La),其中La为先验信息,Lsys为Lsys0和Lsys1的通用符号,Lp为Lp0和Lp1的通用符号;(4)分量译码器0中,在时序k,构建θk+1,具体为:根据各个码块的卷积码生成矩阵列出分支状态度量值γ11k、γ10k的对应序列,将γ11k、γ10k按所述对应序列构建矢量γk;使用单指令多数据流指令进行矢量运算,即θk+=θk+γk,θk-=θk-γk,然后根据卷积码生成矩阵对应状态位变化对θk+,θk-内部数据进行重新排列;求θk+和θk-对应数据的最大值作为下一时序的矢量θk+1,然后进行归一化处理;其中,θk由上一时序产生,θk中包含并行码块的八个前向状态度量值αjk和八个反向状态度量值βjm,j为状态序号,N为系统码长,当k=0时,θ0内部数据为:α00=-127,β0N-1=-127,αj≠00=0,βj≠0N-1=0;θk+、θk-为状态分别为正、负的中间矢量,m=N-k-1;(5)分量译码器0中,当时序k小于N的一半时,令k=k+1,并返回步骤(4),否则载入矢量θm,将其内部的αjm和βjk调换位置,根据下式计算Lk+和Lk-:Lk+=θm+θk+,Lk-=θm+θk-,其中Lk+和LK-分别为状态为正负的输出对数似然比中间矢量;所述Lk+和Lk-每个矢量内部分别有并行码块的八个k...

【专利技术属性】
技术研发人员:王捷毕明勇范鹏博李磊粟勇王东明
申请(专利权)人:东南大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1