CN103475380A - 用于图像处理器的并行Turbo 译码方法 - Google Patents

用于图像处理器的并行Turbo 译码方法 Download PDF

Info

Publication number
CN103475380A
CN103475380A CN2013104044080A CN201310404408A CN103475380A CN 103475380 A CN103475380 A CN 103475380A CN 2013104044080 A CN2013104044080 A CN 2013104044080A CN 201310404408 A CN201310404408 A CN 201310404408A CN 103475380 A CN103475380 A CN 103475380A
Authority
CN
China
Prior art keywords
state variable
parallel
centerdot
image processor
turbo decoding
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
Application number
CN2013104044080A
Other languages
English (en)
Inventor
汪玉
陈翔
朱继
温子煜
杨华中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN2013104044080A priority Critical patent/CN103475380A/zh
Publication of CN103475380A publication Critical patent/CN103475380A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明提出一种用于图像处理器的并行Turho译码方法。包括以下步骤:接收待处理编码数据,并将编码数据分为多个编码块,其中,每个编码块包括前向状态变量和后向状态变量;对前向状态变量和后向状态变量进行并行递推计算,以获得遍历网格的多个状态的变量值;根据遍历网格的多个状态的变量值获得多个比特的对数似然比信息;以及对多个比特的对数似然比信息进行迭代运算直至满足预设条件时,输出译码序列。根据本发明实施例的方法,通过Turbo译码的并行性和图像处理器的多核特性,实现了译码的稿吞吐速率,同时保证了译码的误比特率性能。

Description

用于图像处理器的并行Turbo 译码方法
技术领域
本发明涉及电子信息技术领域,特别涉及一种用于图像处理器的并行Turbo译码方法。
背景技术
1993年,C.Berrou等人提出了Turbo码的编译码方案,打破了将截止速率作为可靠通信速率门限的观念,误比特率达到了接近Shannon极限的性能。Turbo码的提出,使人们更关注基于概率的软判决迭代译码方法。由于Turbo码接近Shannon极限的误比特率性能,它被广泛用于无线通信系统中。
由于Turbo码的译码使用软输入软输出(SISO)译码器,需要迭代译码、交织和解交织的过程,导致了较大的译码延时。随着下一代移动通信系统的飞速发展,Turbo码的现有译码方法已渐渐不能满足高吞吐量、低时延的要求。
当前研究和采用比较多的Turbo译码加速方法是在FPGA和ASIC平台上设计并行化的Turbo译码电路。基于FPGA/ASIC的Tubro译码方法虽然能够显著提高译码吞吐速率,满足通信系统实时性要求,但电路灵活性差,通常难以适用于多种体制、多种参数并存的无线通信系统需求,而且开发周期长,维护和升级成本较高。而随着基于通用处理器(GeneralPurpose Processor-GPP)的软件无线电(Software Radio-SR)技术的不断发展,越来越多的研究开发人员考虑在GPP平台上实现和优化Turbo译码算法,其中GPU就是一种很好的GPP备选平台。GPP原本用于图像计算,随着科技的发展,GPU逐渐开始用于通用计算目的,即所谓的GPGPU(General Purpose GPU)。利用GPU的多核特性实现Turbo译码的并行,不但能够满足实时性要求,而且具有很高的灵活性,易于修改和维护,升级成本低。因此,从GPP-SR应用的角度看,相比FPGA和ASIC,用GPU实现Turbo译码并行化是灵活性更高、升级维护更方便的实现方案。
CUDA(Compute Unified Device Architecture),是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以使用C语言为CUDA架构编写程序,通过核函数(kernel)定义各线程操作,通过多线程并发执行达到超高计算性能。
支持CUDA的GPU包含多个多核流处理器(stream multiprocessor,SM),每个SM内含8个单指令多数据流(SIMD)的核。CUDA将多个线程划分为线程块(block),每32个warp成一个线程束(warp)。如果warp内的32个线程都执行同样的指令,那么32个操作可以同时进行,并在4个指令周期内完成。访问存储器经常会造成线程操作的延迟等待,GPU通过切换执行不同warp来隐藏访存造成的延时。GPU可使用的存储器有全局存储器、共享存储器、常量存储器和寄存器。后三种存储器位于片上,能够提供快速访问。其中每个线程可以有各自独立的寄存器,而共享存储器的数据可被一个block内的线程共享,从而实现线程通信。每个block的共享存储器分为16个bank,数据依次存储在这些bank中。当不同的线程访问同一个bank中的数据时,会发生bank冲突,造成等待延时。常量存储器大多情况下被用来存储不变的只读数据。由于GPU的片上存储器资源十分有限,因此合理地分配存储器来最小化访存延时显得尤为重要。
目前关于Turbo译码器的GPU实现的研究较少,且大都基于较早的GPU硬件平台,计算能力为1.x,并行方法和性能都受到了一定的限制,例如Wu,M.,Yang Sun,Cavallaro,J.R.,″Implementation of a3GPP LTE turbo decoder accelerator on GPU,″Signal ProcessingSystems(SIPS),2010IEEE Workshop on,vol.,no.,pp.192-197,6-8Oct.2010中使用的GPU型号是NVIDIA Tesla C1060,其计算能力是1.3。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为此,本发明的目的在于提出一种用于图像处理器的并行Turbo译码方法。
为达到上述目的,本发明的实施例提出一种用于图像处理器的并行Turbo译码方法,包括以下步骤:接收待处理编码数据,并将所述编码数据分为多个编码块,其中,每个编码块包括前向状态变量和后向状态变量;对所述前向状态变量和后向状态变量进行并行递推计算,以获得遍历网格的多个状态的变量值;根据所述遍历网格的多个状态的变量值获得多个比特的对数似然比信息;以及对所述多个比特的对数似然比信息进行迭代运算直至满足预设条件时,输出译码序列。
根据本发明实施例的方法,通过Turbo译码的并行性和图像处理器的多核特性,实现了译码的稿吞吐速率,同时保证了译码的误比特率性能。
在本发明的一个实施例中,所述接收待处理编码数据,并将所述编码数据分为多个编码块之后还包括:通过保护机制对所述前向状态变量和后向状态变量进行保护。
在本发明的一个实施例中,所述保护机制包括前次迭代值初始化法、双训练窗口法或双滑动窗训练法。
在本发明的一个实施例中,对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算通过N个分组线程实现,其中,N为正整数。
在本发明的一个实施例中,所述通过N个分组线程对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算,进一步包括:通过N/2个分组线程对所述前向状态变量进行并行递推计算;以及通过剩余N/2个分组线程对所述后向状态变量进行并行递推计算。
在本发明的一个实施例中,所述N个分组线程对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算中每个线程运算互不干扰。
在本发明的一个实施例中,所述对数似然比信息通过如下计算,所述公式为, Λ ( x k i ) = max S + [ α t - 1 ( s k - 1 ) + γ t ( s k - 1 , s k ) + β t ( s k ) ] - max S - [ α t - 1 ( s k - 1 ) + γ t ( s k - 1 , s k ) + β t ( s k ) ] , = max S + Λ 1 ( x k i ) - max S - Λ 0 ( x k i ) 其中,
Figure BDA0000378688850000032
为对数似然比信息,αt-1(sk-1)为前向状态变量,γk(sk-1,sk)为sk-1和sk之间的分支度量,βk(sk)为后向状态变量,S+为是有序偶(sk-1,sk)的子集即信息比特
Figure BDA0000378688850000033
的状态子集,S-为信息比特
Figure BDA0000378688850000034
的状态子集,
Figure BDA0000378688850000035
为信息比特,
Figure BDA0000378688850000038
为第i个比特为1的概率,
Figure BDA0000378688850000039
为第i个比特为0的概率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的用于图像处理器的并行Turbo译码方法的流程图;
图2为根据本发明一个实施例的Turbo码网格状态转移图;
图3为根据本发明一个实施例的SISO译码器输入输出图;
图4为根据本发明一个实施例的Turbo迭代译码流程结构图;
图5为根据本发明一个实施例的采用双滑动窗法分段保护机制的示意图;以及
图6为根据本发明一个实施例的线程规划示意图;以及
图7为根据本发明一个实施例的误比特率性能示意图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
图1为根据本发明一个实施例的用于图像处理器的并行Turbo译码方法的流程图。如图1所示,根据本发明实施例的用于图像处理器的并行Turbo译码方法包括以下步骤:
步骤101,接收待处理编码数据,并将编码数据分为多个编码块,其中,每个编码块包括前向状态变量和后向状态变量。
在本发明的一个实施例中,将编码数据分为多个编码块之后通过保护机制对前向状态变量和后向状态变量进行保护,从而提高译码误比特率性能。保护机制包括前次迭代值初始化法、双训练窗口法或双滑动窗训练法。
步骤102,对前向状态变量和后向状态变量进行并行递推计算,以获得遍历网格的多个状态的变量值。
在本发明的一个实施例中,对每个编码块的前向状态变量和后向状态变量进行并行递推计算通过N个分组线程实现,其中,N为正整数,且每个线程运算互不干扰。本发明的实施例中采用32个分组线程。
在本发明的一个实施例中,通过N/2个分组线程对前向状态变量进行并行递推计算,同时通过剩余N/2个分组线程对后向状态变量进行并行递推计算。
步骤103,根据遍历网格的多个状态的变量值获得多个比特的对数似然比信息。
在本发明的一个实施例中,对数似然比信息通过如下计算,公式为, Λ ( x k i ) = max S + [ α t - 1 ( s k - 1 ) + γ t ( s k - 1 , s k ) + β t ( s k ) ] - max S - [ α t - 1 ( s k - 1 ) + γ t ( s k - 1 , s k ) + β t ( s k ) ] = max S + Λ 1 ( x k i ) - max S - Λ 0 ( x k i ) , 其中,
Figure BDA0000378688850000042
为对数似然比信息,αt-1(sk-1)为前向状态变量,γk(sk-1,sk)为sk-1和sk之间的分支度量,βk(sk)为后向状态变量,S+为是有序偶(sk-1,sk)的子集即信息比特
Figure BDA0000378688850000051
的状态子集,S-为信息比特
Figure BDA0000378688850000052
的状态子集,
Figure BDA0000378688850000053
为信息比特,
Figure BDA0000378688850000054
为第i个比特为1的概率,
Figure BDA0000378688850000055
为第i个比特为0的概率。
步骤104,对多个比特的对数似然比信息进行迭代运算直至满足预设条件时,输出译码序列。
在本发明的一个实施例中,以码率为1/2的3GPP Turbo码为例,一帧码块的长度假设为6144比特。Turbo码是一种卷积码,其状态转移的过程可以用网格图表示。图2为根据本发明一个实施例的Turbo码网格状态转移图。图2给出了码率为1/2的Turbo码网格图第k阶到第k+1阶的状态转移过程。
Figure BDA0000378688850000056
分别表示网格第k阶上编码器产生的信息比特和校验比特,
Figure BDA0000378688850000057
分别表示经过AWGN信道后译码器接收到的信息比特和校验比特。当发送比特
Figure BDA0000378688850000058
时,接收到的条件对数似然比(LLR)定义为:
Figure BDA00003786888500000510
Lch也称为“信道观察值”。对于BPSK调制并经过AWGN信道的情况时, L ch ( x k i ) = 4 E b N 0 · y k i = L c · y k i , 其中,
Figure BDA00003786888500000512
为AWGN信道的信噪比, L c = 4 E b N 0 为信道可信度量值(channel reliability value)。
图3为根据本发明一个实施例的SISO译码器输入输出图。图3给出了Turbo译码中使用的SISO译码器的输入输出结构。SISO译码器的输出软信息为信息比特的对数似然比(LLR), Λ ( x k i ) = ln P ( x k i = 1 | y 1 · · · L i , y 1 · · · L p ) P ( x k i = 0 | y 1 · · · L i , y 1 · · · L i ) = ln P ( x k i = 1 , y 1 · · · L i , y 1 · · · L p ) P ( x k i = 0 , y 1 · · · L i , y 1 · · · L i ) ,
其中,
Figure BDA00003786888500000515
分别表示接收到的信息比特和校验比特序列,序列长度为L,
Figure BDA00003786888500000516
为常数。译码器通过
Figure BDA00003786888500000517
与0进行比较以做出判决,即 x k i = 1 , &Lambda; ( x k i ) &GreaterEqual; 0 0 , &Lambda; ( x k i ) < 0 ,
Figure BDA00003786888500000519
可以分解为, &Lambda; ( x k i ) = L ch ( x k i ) + L a ( x k i ) + L e ( x k i ) , 其中,第一项
Figure BDA00003786888500000521
为“信道观察值”,第二项
Figure BDA00003786888500000522
为先验概率对数似然比,对
Figure BDA00003786888500000523
的定义为, L a ( x k i ) = ln P ( x k i = 1 ) P ( x k i = 0 ) , 第三项
Figure BDA00003786888500000525
为外部信息。由上式可知, L e ( x k i ) = &Lambda; ( x k i ) - L c &CenterDot; y k i - L a ( x k i ) .
SISO译码器可基于对数最大后验概率译码算法(Max-Log-MAP)完成译码(还可以采用MAP或Log-MAP算法,本发明中为简单起见以Max-Log-MAP为例)。该算法的任务就是计算对数似然比信息
Figure BDA00003786888500000617
用sk表示在Turbo码网格图上第k阶的编码器状态,对数似然比信息
Figure BDA00003786888500000618
可表示为, &Lambda; ( x k i ) = ln P ( x k i = 1 , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) p ( x k p = 0 , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) = ln &Sigma; ( s k - 1 , s k ) &Element; S + P ( s k - 1 , s k , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) &Sigma; ( s k - 1 , s k ) &Element; S - P ( s k - 1 , s k , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) , 其中,S+为是有序偶(sk-1,sk)的子集,表示状态转移sk-1→sk由信息比特
Figure BDA0000378688850000063
引起,S-是对应的状态子集。
根据贝叶斯公式, ln P ( s k - 1 , s k , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) 可以分解为
ln P ( s k - 1 , s k , y 1 &CenterDot; &CenterDot; &CenterDot; L i , y 1 &CenterDot; &CenterDot; &CenterDot; L p ) = ln P ( s k - 1 , y 1 &CenterDot; &CenterDot; &CenterDot; k - 1 i , y 1 &CenterDot; &CenterDot; &CenterDot; k - 1 P )
+ ln P ( s k , y k i , y k p | s k - 1 )
+ ln P ( y k + 1 &CenterDot; &CenterDot; &CenterDot; L i , y k + 1 &CenterDot; &CenterDot; &CenterDot; L p | s k ) ,
= &alpha; k - 1 ( s k - 1 ) + &gamma; k ( s k - 1 , s k ) + &beta; k ( s k )
为此,定义:
&alpha; k ( s k ) = ln P ( s k , y 1 &CenterDot; &CenterDot; &CenterDot; k i , y 1 &CenterDot; &CenterDot; &CenterDot; k p )
&gamma; k ( s k - 1 , s k ) = P ( s k , y k i , y k p | s k - 1 ) ,
&beta; k ( s k ) = ln P ( y k + 1 &CenterDot; &CenterDot; &CenterDot; L i , y k + 1 &CenterDot; &CenterDot; &CenterDot; L p | s k )
其中,αk(sk)是前向状态度量,βk(sk)是后向状态度量,γk(sk-1,sk)是sk-1和sk之间的分支度量。分支度量γk(sk-1,sk)的计算公式如下:
&gamma; k ( s k - 1 , s k ) = ( L c ( y k i ) + L a ( k ) ) x k i + L c ( y k p ) x k p ,
其中,前向状态度量αk(sk)和后向状态度量βk(sk)分别通过前向和后向递推计算得到。为了避免计算复杂度较高的指数运算,采用最大值近似计算公式如下:
&alpha; k ( s k ) = max s k - 1 &Element; S 1 ( &alpha; k - 1 ( s k - 1 ) + &gamma; k ( s k - 1 , s k ) )
&beta; k ( s k ) = max s k + 1 &Element; S 2 ( &beta; k + 1 ( s k + 1 ) + &gamma; k + 1 ( s k , s k + 1 ) ) ,
其中,S1表示下一个状态是sk的所有可能的sk-1的集合,S2表示上一个状态是sk的所有可能的sk+1的集合。
由此可以得到对数似然比的最大值的近似值,其公式为:
&Lambda; ( x k i ) = max S + [ &alpha; t - 1 ( s k - 1 ) + &gamma; t ( s k - 1 , s k ) + &beta; t ( s k ) ]
- max S - [ &alpha; t - 1 ( s k - 1 ) + &gamma; t ( s k - 1 , s k ) + &beta; t ( s k ) ]
= max S + &Lambda; 1 ( x k i ) - max S - &Lambda; 0 ( x k i )
其中,
Figure BDA0000378688850000074
为对数似然比信息,αt-1(sk-1)为前向状态变量,γk(sk-1,sk)为sk-1和sk之间的分支度量,βk(sk)为后向状态变量,S+为是有序偶(sk-1,sk)的子集即信息比特
Figure BDA0000378688850000075
的状态子集,S_为信息比特
Figure BDA0000378688850000076
的状态子集,为信息比特,
Figure BDA0000378688850000078
为第i个比特为1的概率,
Figure BDA0000378688850000079
为第i个比特为0的概率。
图4为根据本发明一个实施例的Turbo迭代译码流程结构图。如图4所示,将接收到的系统信息
Figure BDA00003786888500000710
校验信息
Figure BDA00003786888500000711
和先验信息
Figure BDA00003786888500000712
输入到SISO译码器1后,SISO译码器1根据Max-Log-MAP算法完成译码,输出信息比特的外信息
Figure BDA00003786888500000713
经过交织后,作为SISO译码器2的信息比特的先验信息
Figure BDA00003786888500000714
接收到的系统信息
Figure BDA00003786888500000715
序列经过交织,作为SISO译码器2的系统信息输入。译码器2利用交织后得到的先验信息
Figure BDA00003786888500000716
系统信息
Figure BDA00003786888500000717
及校验信息
Figure BDA00003786888500000718
计算并输出外信息
Figure BDA00003786888500000719
经解交织后作为译码器1的先验信息进入下一迭代运算。当迭代次数完成或达到预设条件时,根据输出对数似然比序列
Figure BDA00003786888500000720
的判决结果输出译码序列。
在迭代译码算法中,一次迭代过程里两个SISO译码器都执行相同的计算操作,定义单个核函数来完成两次译码操作。本发明将长为L的码块平均分割成P个子码块,每个子码块的长度为W=L/P。分配M个block,每个block包含N个线程组,使得M×N=P,使得在一次迭代中,每个block处理N个子码块。
首先计算每个子码块的前向状态度量α和后向状态度量β。让每个block的前N/2个线程组计算α,后N/2个线程组计算β。每个线程组由两个半线程组组成,每个半线程组的前8个线程用于计算对应状态度量,实现上述的8状态并行,其余线程空闲。
然后计算对数似然比Λ和外部信息Le。令由于Turbo译码网格图中,不同阶之间以及每一阶的不同状态对应的Λ0,Λ1和外部信息Le可以独立计算,本发明中每个线程组对应一个子码块,每个线程计算一阶的Λ0,Λ1和Le。因为共享存储器共有16个bank,而每一阶包含有8对Λ0,Λ1,所以偶(奇)数阶上计算得到的Λ0,Λ1会占用同一个bank,造成bank冲突。为了解决这个问题,本发明设计了一种共享存储器访问方法,该方法可用伪代码如下表1所示:
Figure BDA0000378688850000081
表1
表1中Thread ID表示线程的标识号。
在本发明的一个实施例中,将全局存储器中存储的输入信息(即信息比特、校验比特、先验信息等)预存取到共享存储器中。由于共享存储资源有限,本发明设计了一种节约共享存储器的方法,使用共享存储器只存储网格图中一阶的状态变量,然后用全局存储器存储计算得到所有阶的状态变量。例如,将第k-1阶的8个前向状态变量αk-1(sk-1)存入共享存储器,根据αk-1(sk-1)计算出下一阶的前向状态变量αk(sk)后,将αk(sk)写入全局存储器,并用其更新共享存储器中存储的状态变量。计算完α和β并进行线程同步后,每个block分配N×W×8×2个浮点数的存储空间用来存储每个子码块计算得到的Λ0和Λ1
此外,本发明计算中所有的常数只读数据,例如Turbo码网格图状态转移参数表等使用常量存储器存储。
对于MAP类算法,由于在译码过程中需要计算后向状态度量值,因此只有在整个序列全部接收后才能开始译码。为了降低译码时延,本发明采用分块并行译码方法,一整帧码块平均分成若干个子码块,每一子块同时独立进行译码。下面结合图5对分块并行译码的操作过程进行说明。
图5为根据本发明一个实施例的采用双滑动窗法分段保护机制的示意图。如图5所示,一整帧码块长度为L,将其平均分成P个子码块,每个子码块的长度为W=L/P,训练序列长度为g,其中子码块1尾部增加后向递推训练序列,子码块L开头增加前向递推训练序列,其余子码块首尾分别增加前向和后向递推训练序列。在第一次迭代译码时,除第一块首状态和最后一块尾状态已知外,其他子块首尾的状态都是未知的,对于已知子块的八个状态变量α(或β)的初始值,令已知状态的为0,未知状态的为负无穷。对未知子块的八个状态变量α(或β)的初始值,都设为0。图6为根据本发明一个实施例的线程规划示意图。如图6所示,在后续迭代译码时,保存各个子块位于图6中向下箭头对应的位置处前向状态变量α的值,并作为下一次迭代对应的后一个子块训练序列计算α时的初始值。同样,在每次迭代译码时,保存各个子块位于图6中向上箭头对应的位置处后向状态度量β的值,并作为下一次迭代对应的前一个子块计训练序列计算β时的初始值。依次类推,直到满足迭代终止条件完成译码。
上述分段保护机制是一种结合了前次迭代值初始化法(Previous Iteration ValueInitialization,PIVI)和双训练窗口法(Double Sided Training Window,DSTW)形成的双滑动窗训练法(PIVIDSTW),除此之外采用前次迭代值初始化法(PIVI)或者双训练窗口法(DSTW)均可以有效地改善分段并行译码操作导致的误码率性能的下降。
为了验证本发明的有益效果进行了如下试验。将本发明的译码方法在GTX580型号的通用图像处理器上进行了试验,其中采用的编译环境是Nvidia公司的CUDA2.0版本。在GTX580处理器上,一共有512个流处理器,分成了16组多核处理器,主频为1.6GHz,显存为1.5GByte。其试验结果见图7所示。从图7中可以看出,在同样子块长度为32下采用分段保护机制的性能损失远小于不采用保护机制下在的性能损失,其性能损失小于0.1dB,且经过测试译码器吞吐量在迭代次数4次情况下可达5Mbps。
根据本发明实施例的方法,通过Turbo译码的并行性和图像处理器的多核特性,实现了译码的稿吞吐速率,同时保证了译码的误比特率性能。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (7)

1.一种用于图像处理器的并行Turbo译码方法,其特征在于,包括以下步骤:
接收待处理编码数据,并将所述编码数据分为多个编码块,其中,每个编码块包括前向状态变量和后向状态变量;
对所述前向状态变量和后向状态变量进行并行递推计算,以获得遍历网格的多个状态的变量值;
根据所述遍历网格的多个状态的变量值获得多个比特的对数似然比信息;以及
对所述多个比特的对数似然比信息进行迭代运算直至满足预设条件时,输出译码序列。
2.如权利要求1所述的用于图像处理器的并行Turbo译码方法,其特征在于,所述接收待处理编码数据,并将所述编码数据分为多个编码块之后还包括:
通过保护机制对所述前向状态变量和后向状态变量进行保护。
3.如权利要求2所述的用于图像处理器的并行Turbo译码方法,其特征在于,所述保护机制包括前次迭代值初始化法、双训练窗口法或双滑动窗训练法。
4.如权利要求1所述的用于图像处理器的并行Turbo译码方法,其特征在于,对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算通过N个分组线程实现,其中,N为正整数。
5.如权利要求4所述的用于图像处理器的并行Turbo译码方法,其特征在于,所述通过N个分组线程对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算,进一步包括:
通过N/2个分组线程对所述前向状态变量进行并行递推计算;以及
通过剩余N/2个分组线程对所述后向状态变量进行并行递推计算。
6.如权利要求4所述的用于图像处理器的并行Turbo译码方法,其特征在于,所述N个分组线程对所述每个编码块的前向状态变量和后向状态变量进行并行递推计算中每个线程运算互不干扰。
7.如权利要求1所述的用于图像处理器的并行Turbo译码方法,其特征在于,所述对数似然比信息通过如下计算,所述公式为,
&Lambda; ( x k i ) = max S + [ &alpha; t - 1 ( s k - 1 ) + &gamma; t ( s k - 1 , s k ) + &beta; t ( s k ) ]
- max S - [ &alpha; t - 1 ( s k - 1 ) + &gamma; t ( s k - 1 , s k ) + &beta; t ( s k ) ] ,
= max S + &Lambda; 1 ( x k i ) - max S - &Lambda; 0 ( x k i )
其中,为对数似然比信息,αt-1(sk-1)为前向状态变量,γk(sk-1,sk)为sk-1和sk之间的分支度量,βk(sk)为后向状态变量,S+为是有序偶(sk-1,sk)的子集即信息比特
Figure FDA0000378688840000021
的状态子集,S-为信息比特的状态子集,
Figure FDA0000378688840000023
为信息比特,
Figure FDA0000378688840000024
为第i个比特为1的概率,
Figure FDA0000378688840000025
为第i个比特为0的概率。
CN2013104044080A 2013-09-06 2013-09-06 用于图像处理器的并行Turbo 译码方法 Pending CN103475380A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013104044080A CN103475380A (zh) 2013-09-06 2013-09-06 用于图像处理器的并行Turbo 译码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013104044080A CN103475380A (zh) 2013-09-06 2013-09-06 用于图像处理器的并行Turbo 译码方法

Publications (1)

Publication Number Publication Date
CN103475380A true CN103475380A (zh) 2013-12-25

Family

ID=49800107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013104044080A Pending CN103475380A (zh) 2013-09-06 2013-09-06 用于图像处理器的并行Turbo 译码方法

Country Status (1)

Country Link
CN (1) CN103475380A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109379088A (zh) * 2018-12-13 2019-02-22 浙江天则通信技术有限公司 一种并行Turbo码迭代译码的方法及系统
CN112134649A (zh) * 2016-10-12 2020-12-25 Oppo广东移动通信有限公司 传输数据的方法和发送端设备
CN113014267A (zh) * 2019-12-18 2021-06-22 华为技术有限公司 译码方法、设备、可读存储介质、芯片及计算机程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置
CN102158235A (zh) * 2011-04-26 2011-08-17 中兴通讯股份有限公司 turbo译码的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置
CN102158235A (zh) * 2011-04-26 2011-08-17 中兴通讯股份有限公司 turbo译码的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
葛帅等: "基于GPU的LDPC存储优化并行译码结构设计", 《北京航空航天大学学报》, vol. 39, no. 3, 31 March 2013 (2013-03-31), pages 421 - 426 *
马红柯: "异构多核中Turbo并行译码器的设计与实现", 《硕士学位论文》, 1 April 2013 (2013-04-01) *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112134649A (zh) * 2016-10-12 2020-12-25 Oppo广东移动通信有限公司 传输数据的方法和发送端设备
CN112134649B (zh) * 2016-10-12 2023-05-02 Oppo广东移动通信有限公司 传输数据的方法和发送端设备
CN109379088A (zh) * 2018-12-13 2019-02-22 浙江天则通信技术有限公司 一种并行Turbo码迭代译码的方法及系统
CN109379088B (zh) * 2018-12-13 2022-03-08 浙江天则通信技术有限公司 一种并行Turbo码迭代译码的方法及系统
CN113014267A (zh) * 2019-12-18 2021-06-22 华为技术有限公司 译码方法、设备、可读存储介质、芯片及计算机程序产品
WO2021120729A1 (zh) * 2019-12-18 2021-06-24 华为技术有限公司 译码方法、设备、可读存储介质、芯片及计算机程序产品
CN113014267B (zh) * 2019-12-18 2024-04-23 华为技术有限公司 译码方法、设备、可读存储介质、芯片及计算机程序产品

Similar Documents

Publication Publication Date Title
CN101777924B (zh) 一种Turbo码译码方法和装置
CN101286817B (zh) 传统二进制和双二进制Turbo码通用译码方法
KR20060068168A (ko) 저 복잡도 ldpc복호 장치 및 그 방법
CN102111162B (zh) Turbo 分量译码方法、分量译码器、支路计算器及Turbo 译码器
CN106301390A (zh) LDPC/Turbo码双模译码器
CN102523076A (zh) 通用可配置的高速率Turbo码译码系统及其方法
CN101373978B (zh) 一种Turbo码译码方法以及装置
CN103475380A (zh) 用于图像处理器的并行Turbo 译码方法
CN106027200B (zh) 一种基于gpu的卷积码高速并行译码方法及译码器
CN103986557A (zh) 低路径延迟的LTE Turbo码并行分块译码方法
CN109981117A (zh) 一种四模前向纠错码处理器
CN103986477A (zh) 矢量viterbi译码指令及viterbi译码装置
Chandrachoodan A GPU implementation of belief propagation decoder for polar codes
Briffa A GPU implementation of a MAP decoder for synchronization error correcting codes
Murugappa et al. Parameterized area-efficient multi-standard turbo decoder
CN206099947U (zh) 一种低资源消耗的多参数可配置Viterbi译码器
Natarajan et al. Lossless parallel implementation of a turbo decoder on GPU
CN105610550B (zh) 一种用于电力线载波通信的Viterbi译码方法
Zhang et al. The acceleration of turbo decoder on the newest GPGPU of kepler architecture
CN103905066A (zh) Turbo码译码装置和方法
CN103701475B (zh) 移动通信系统中8比特运算字长Turbo码的译码方法
CN102571107A (zh) LTE系统中高速并行Turbo码的解码系统及方法
CN102594507A (zh) 一种软件无线电系统中的高速并行Turbo译码方法及系统
CN103916141B (zh) Turbo码译码方法及装置
CN105589082A (zh) 一种北斗导航系统的维特比译码装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20131225