论文部分内容阅读
由于Turbo码接近香农极限的优异性能,Turbo码自问世以来就受到了学术界和工业界广泛关注,迅速成为研究热点。Turbo码已广泛应用于3G和4G通信标准,比如CDMA2000, WCDMA, WiMax和LTE。并行计算是一种在不提高时钟频率的前提下提高计算能力的方法。由于硬件资源限制、时钟频率等限制,并行计算得到了越来越多的关注。根据颗粒度的大小,并行计算可分划为位并行,指令级并行,数据级并行和任务并行。位并行通过增加处理器的字节长度来提高并行效率。指令级并行是通过多级指令流水线来实现的。数据并行是指多个不同的数据同时被相同的指令、指令集或者算法处理。任务并行是在多个不同的数据上执行不同的指令、指令集或者算法。GPU(图形处理器)计算是基于单指令多线程(SIMT)的一种并行计算模式。GPU作为显示卡的“大脑”,它决定显卡的档次和大部分性能。GPU最开始只用于3D图形处理,现在被广泛用于通用并行计算。CUDA是一种通用并行计算框架,它为通用GPU计算提供了便利。论文首先简要论述了并行计算,从并行计算的层次分别论述了位并行,指令级并行,数据级并行和任务并行。接着论文重点论述了基于SIMT模型的通用GPU计算。接着,详细阐述了两个通用GPU计算框架:CUDA和OpenCL。并在线程层次结构、存储器层次结构和计算模式等方面重点论述了CUDA架构。论文阐述了Turbo码原理和译码算法,重点论述了MAP算法和它的各个简化算法。本文重点在通用GPU架构下进行并行Turbo译码器的设计与实现,根据通用GPU的硬件架构和Turbo译码算法的特点,通过增加并行度、共享存储器优化和指令开销优化等方面进行优化,提高译码器的吞吐率。论文在四个并行级别进行译码器的设计:多码字并行、分量码并行、状态并行和分段并行。论文接着设计了一种符合调度原则,同时满足四个并行级别要求的Grid-Block-Thread模型。一个线程块(thread-block)包含来自8个码字的8个状态级线程,一共64个线程。在解决后向遍历过程中8个线程同时计算外信息带来的bank冲突,论文设计了一种线程号控制数据存储的算法,减少访问延时。在优化指令开销方面,论文通过最小化算数指令的吞吐量、保证半wrap组内的16个线程具有相同的执行路径、展开简单的控制指令可以有效的提高计算速度。本文的创新在于基于CUDA平台,提出了一种并行Turbo译码器实现方案,该方案将分量码并行与分段并行、多码并行、状态并行相结合。仿真结果表明,GeForce GTX550Ti上的并行Turbo译码器吞吐率可以达到70Mbps。同时在算法方面,本文研究了分量码并行,分段并行甚至节点级全并行对于译码迭代次数的要求,通过在并行度和迭代次数之间的折中取得误码率性能和吞吐率性能之间的折中。