设计方法

在本章中,我们讨论了基带处理块的各种SDR设计方法的分类,即GPP、GPU、DSP、FPGA和基于协同设计的方法。在这个分类中,我们根据一组标准中的性能指标对SDR平台进行分析和比较,这个标准包括:

  • 灵活性和可重构性。仅仅通过在平台上加载新软件,调制,空中接口算法和协议就可以进化。
  • 适应性。SDR平台可以根据网络或流量运营需求的变化调整其功能。
  • 计算能力。SDR平台的处理速率,即每秒Giga的操作(GOPS)。
  • 能量有效性 。总功耗(通常在几百毫瓦内),特别是移动和物联网的部署。
  • 费用。SDR平台的总费用,包括上市时间、开发和硬件费。

A.基于GPP的SDR

实现SDR平台的第一种方法之一是使用通用处理器(GPP)或通用计算机微处理器(如x86/64和ARM体系结构)。

  • 1)定义和用途:GPP是一种基于时钟驱动和寄存器基的数字电路,它能够处理不同的函数,并能在二进制的数据流上工作。这些GPP可以有好几种用途,对于无限数量的应用程序非常有用,消除了构建特定于应用程序的电路的需要,也降低了运行应用程序的总体费用。GPP以其灵活性、丰富性、易编程性等优点,成为学术界研究人员普遍青睐的硬件平台,也是SDR平台的主要需求之一。此外,与DSP和FPGA相比,研究人员更喜欢GPP,因为他们更熟悉GPP及其软件框架。从性能的角度来看,GPP的性能正在迅速提高,这不仅归功于CMOS技术的进步,而且还归功于每个时钟周期处理的指令平均数量的增加。后者是通过不同的方法实现的,特别是利用处理器内部和处理器之间的并行性。这也促使了多核GPP的发展。

  • 2)GPU:在体系结构上,GPP指令集包括针对不同操作的指令,如算术和逻辑单元(ALU)、数据传输和I/O。GPP按顺序处理这些指令。由于采用顺序处理,GPP不具备实时需求的高通量计算(即,高吞吐量和低时延)。例如,使用GNU Radio来实现IEEE 802.11标准(需要20MHz的采样率)就是一个挑战,因为GNU Radio受到GPP有限的处理能力的限制。这将导致GPP内核达到饱和。此外,为了保证满足时间限制,无线协议需要可预测的性能。然而,GPP指令集中的条件分支指令会导致无序执行,这使得实现可预见性变得不可行。

为了弥补GPPs的局限性,研究人员提出了多种解决方案,其中一种是添加协同处理器,例如图形处理单元(GPU)。GPU是专门为处理图形相关任务而设计的处理器,它们可以高效、并行处理大量流动数据。由GPP和GPU组成的SDR平台具有灵活性和更高的处理能力。但是,却导致了功率效率变低(例如,GPP的单精度功率效率为∼9 GFLOPS/W,而GPU的功率效率为20 GFLOPS/W)。GPU充当GPP的协处理器,因为GPP需要作为控制单元并从外部存储器传输数据。完成传输后,GPU执行信号处理算法。

GPU通常用于处理图形,但它们在信号处理算法中同样具有作用。在过去的几年中,GPU和GPP在单精度和双精度处理方面的理论峰值性能一直在增长。例如,将Intel Haswell的900 GFLOPs与NVIDIA GTX TITAN的4500 GFLOPS进行单精度比较,显然GPU的计算能力远远超过GPP。除了相对合理的价格和信用卡大小的外形,它们最吸引人的特点在于多核架构和并行处理器。这些特点使它们在基于GPU的SDR中成为协同处理器的最佳候选。它们也在加速计算密集型块方面发挥重要作用。另一个优势是它们的功率效率,每一种新型号都在不断提高(例如,单精度从0.5提高到20 GFLOPS/W)。为了充分利用GPU,算法必须符合其架构。从架构的角度来看,GPU有许多优点,这些优点使它们成为视频处理等应用程序的首选解决方案。特别是,GPU使用了一个称为单程序多数据(SPMD)的概念,它允许多个指令流执行同一程序。此外,由于它们的多线程方案,数据加载指令效率更高了。GPU还具有较高的计算密度(缓存到ALU的比率很低)。

在表2中,证实了信号检测算法(包括密集的FFT计算)在GPU通过GPP的情况下显示了更快的并行处理,同时实时操作。这是由于为NVIDIA GPU开发的用于更有效的FFT处理的CuFFT库的可用性。关于GPU的架构优势,几百个CUDA核可以同时执行一个操作,而在多核GPP的情况下则是几个核。

表2 信号检测算法在GPP和GPU上的性能

使用GPU与GPP一起构建SDR平台的例子就是其中的工作,除了使用GPU实现FM接收机之外,还在桌面PC上构建了一个框架。本文研究了利用笔记本电脑和NVIDIA Quadro M4000M构成的SDR平台进行实时信号检测的方法。市场上现有GPU的例子见表3。在这个表中,我们展示了两个高性能GPU(>5500 GFLOPS)的例子,这些GPU适用于具有严格的时序和性能要求的SDR。我们还展示了两个功能较少和价格便宜的GPU的例子,这些GPU适合在学术环境中创建SDR原型。

表3 不同GPU的对比

  • 3)不足之处:最先进的GPP和基于GPU的平台,如SORA和USRP,可以利用台式电脑来实现这些系统。然而,这些平台为一个性能目标消耗了大量的功率,而且它们的形式因素很大,这使得实际部署不能完成。值得注意的是,GPPS和GPU一样,在满足Koomey定律的同时也存在缩比限制。定律告诉我们,计算机的能源效率大约每18个月翻一番。这种限制要求在保持能源效率不变的同时提供更高的计算能力。另一种选择是混合或协同设计方法,在这种方法中,软件和硬件实现是结合在一起的。这将在第三篇D节中详细讨论。

当GPP和GPU都用于SDR设计时,GPP和GPU之间的数据传输操作可能成为瓶颈,特别是为了满足实时性要求,会造成性能损失。然而,为了减少或消除数据传输的时间开销,人们一直在努力通过引入多流调度来实现内存复制任务的流水线化操作。这将确保流水线中没有停顿,从而提高处理并行性。最后,虽然微处理器的处理能力在不断提高,但在充分的计算能力与能源消耗和成本这一具体目标之间取得平衡,仍然是现在和将来的一项非常困难的任务。尤其是对于需要处理更多数据和能够并行处理数据的块的需求越来越大。

B.基于DSP的SDR

基于DSP的解决方案可以看作是GPP解决方案的一个特例,但由于其流行程度和独特的处理特性,值得单独讨论。基于DSP的SDR的其中一个例子是使用TI TMS320C6670 DSP的Atomix平台。

  • 1)定义和用途:DSP是一种专门用于数字信号处理的微处理器。为了帮助理解DSP与GPP的区别,我们首先应该注意,两者都能够实现和处理复杂的算术任务。调制/解调、过滤、编码/解码等任务在包括语音识别、图像处理和通信系统在内的应用程序中经常使用。然而,由于DSP的架构(例如,类似于RISC的架构、并行处理),DSP可以使它们速度更快、效率更高,而这种架构是专门为处理算术运算,特别是乘法而优化的。由于DSP能够以较低的功耗提供较高性能,因此与GPP相比,它更适合于SDR的部署。特别为SDR平台设计的DSPs示例有TI TMS320C6657和TMS320C6655。这些DSP都配备了硬件加速器,可以用于Viterbi和Turbo解码器等复杂功能。

  • 2)采用:正如上一篇所讨论的那样,GPP为广泛的应用程序提供了平均水平的性能。不用说,这一性能水平对研究和学术界来说可能是足够的,但如果要将该系统商业化部署,则必须满足某些性能要求。为此,与GPPS相比,DSP是为有效地处理数字信号而量身定做的,它利用了组合乘法累加运算(MAC单元)和并行性等特性。DSP制造商通常以两种方式销售这些产品:性能优化和能耗优化。因此,在SDR中高性能和节能产品可以分别用于BS和边界设备。

就指令集而言,DSP可分为两组:(1)单指令多数据(SIMD)架构,(2)多指令多数据(MIMD)架构;正如Michael J. Flynn在Flynn分类法中所描述的那样。此分类法是根据并发指令和数据流的数量对各种架构进行分类的方法,如下所示:

  • 基于SIMD的DSP可以同时在多个数据流上执行指令。当算法中存在较高的数据并行时,该架构非常有效。这表明可以同时在不同的数据集中执行类似的操作。基于SIMDbased DSPs的例子包括支持256 GFLOPS的单元处理器。更多针对低功耗进行优化的DSP示例有NXP CoolFlux DSP和Icera livanto。SODA的架构是采用SIMD DSP的SDR。增加更多的核心以实现性能和能力之间的更好的平衡是一种常见的做法。随着每个额外的核心使用超长指令字(VLIW),更高水平的并行也可以实现。

  • 另一方面,MIMD能够在任意时刻对多个数据流执行多条指令。本质上,这是SIMD架构的扩展,其中不同的指令或程序可以同时在多个内核上运行。在不同块之间的并行性不一致的情况下,这一点尤其重要和有用,但是MIMD架构允许并行执行,从而提高速度。基于MIMD的DSP的例子还有德克萨斯州仪器SMJ320C80和带有100 MFLOPS的SM320C80 DSP。

由于DSP是为满足某些与信号处理相关的需求而自定义的,因此必须明确这些自定义,以了解DSP是如何脱颖而出,以及它们如何成功地不仅满足需求,而且成为无线通信领域的重要参与者的。这些自定义主要是与架构相关,如下所示。

在此基础上,还讨论了DSP的能效问题。一般来说,DSP比ASIC消耗更多的功率,但是存在针对低功耗无线实现而优化的DSP,例如TI C674x DSP。降低功耗的方法之一是使用多个数据存储器总线(例如,一个用于写,两个用于读)。这为更高的内存带宽做了准备,并允许多个操作数指令,从而减少了周期。同样,正如上面所讨论的,VLIW架构加上专门的指令可以提供更高的效率,从而降低公率消耗。这些改进可以在诸如TI TMS320C6x和ADI TigerSHARC等DSP中看到。这些技术,再加上经过验证的节能技术,如时钟门控和将部分或整个系统置于睡眠模式,可以进一步降低功耗。可以在表4中找到市场上可用的DSP的例子。在本表中,我们给出了三个不包括协处理器的DSP示例,以及三个基于DSP的SoC,它们除了DSP核外,还包括额外的软核作为控制处理器。

表4 比较DSP和基于DSP的SoC

  • 3)不足之处:虽然DSP已被广泛用于SDR中,但仍然存在很多不足之处,比如:由于更多的应用程序需要增加并行性和可重配置性,以便处理计算密集型任务,因此DSP可能不够。此外,为实现更高水平的并行性可预见性而编程DSP也是一项具有挑战性的工作。这为SDR所采用的诸如FPGA或多核GPP这样的并行架构,甚至是两者的混合架构打开了大门。此外,由于在高频下工作,DSP的功耗通常高于FPGA。

C.基于FPGA的SDR

另一种实现SDR的方法是使用可编程硬件,如FPGA。基于FPGA的SDR平台是基于AirBlue、XilinxZynq的IEEE802.11ah的实现,使用相同的FPGA板实现了完整的信道编码通信系统。

  • 1)定义和用途:FPGA是一组可编程逻辑块,如通用逻辑、存储器和乘法器块,它们被路由结构包围,路由结构也是可编程的。该电路具有实现任何设计或功能的能力,且易于更新。虽然FPGA比ASIC消耗更多的功率和占用更多的面积,但FPGA的可编程特性是它们在广泛的应用中被越来越多地采用的原因。此外,当重构延迟为毫秒级时,SDR可以无缝地在不同的模式和协议之间切换。另一个主要区别是,ASIC的制造成本很高(至少要数十万人民币),而且需要几个月的时间,而FPGA可以快速重新编程,而且它们的成本最多在几十到几千人民币之间。与GPP和DSP等处理器相比,低端产品周期以及具有吸引力的硬件处理优势(如高速性能、低功耗和便携性)使FPGA成为两者的竞争对手。

在一项研究中,作者比较了Xilinx FPGA与16核GPP的性能。GPP的峰值性能计算是通过将每个核上浮点函数单元的数目乘以核数和时钟频率来实现的。对于FPGA来说,性能的计算方法是选择配置,将所需的查找表(LUT)、触发器和DSP片相加,然后将它们乘以适当的时钟频率。计算一下64位浮点算法的理论峰值,结果表明Xilinx Virtex-7 FPGA比16核GPP快约4.2倍。这可以在图2中看到。即使采用一对一加法器/乘法器配置,V7-2000T也能实现345.35GFLOPS,比16核GPP更好。从Intel开始,Stratix 10 FPGA能够提供10Tera FLOPS的浮点性能。这是由于GPP的固定架构,不能充分利用所有的功能单元,以及FPGA的固有并行性及其动态架构。此外,尽管FPGA具有较低的时钟频率(最多300MHz),但由于它们的架构允许通过自定义设计实现更高级别的并行性,因此可以获得更好的性能。在一项研究中,比较了FPGA的性能和功率效率,GPP和GPU采用的是双精度浮点矩阵向量乘法。结果表明,FPGA在保持灵活性的同时,能够优于其他平台。在另一项研究中,通过各种算法的实现对FPGA和GPU进行了深入的分析和比较。得出了结论,虽然这两种体系结构都支持高度的并行性(这是信号处理应用程序的关键),但是FPGA提供了更大的并行性,而GPU由于其数据路径和存储系统而具有固定的并行性。

  • 2)采用:在过去的十年里,FPGA在计算方面有了很大的进步,变得更加强大,现在已经存在于许多不同的网络版本中,比如Xilinx Kintex UltraScale和Intel Arria 10。此外,各种工具集的可用性使FPGA更易于访问,从而使它们具有优势。这是由具有寄存器-传送级(RTL)代码能力的编译器(如Verilog和VHDL)所支持的,这些代码是从高级编程语言在FPGA上运行所需要的。这个过程通常被称为高级综合(HLS)。此类编译器的示例包括用于MATLAB代码的HDL Coder和用于C、C++和SystemC的Xilinx HLS或Altera Nios II C2H编译器。我们将在第四章中解释其中的一些工具。

HLS允许软件工程师使用一种熟悉的编程语言(即C、C++、SystemC和MATLAB)在FPGA上设计和实现应用程序(比如SDR),而无需事先掌握关于目标硬件架构的丰富知识。(请参阅第四章-A)(周四更)。这些编译器还可用于加速或加速在GPP或DSP上运行的部分软件代码,这部分会导致整体性能下降或倒退。这一点将在第三章-D节中进一步讨论。此外,FPGA还可以实现高性能,同时仍比前面讨论过的处理器消耗更少的能量。此外,通过实现本文讨论的几种技术,可以进一步降低功耗。这些技术可以在系统、设备和/或架构级别,如时钟门控和故障排除。表5概述了广泛使用的FPGA平台。

表5 FPGA和基于FPGA的SoC的比较

  • 3)不足之处:使用FPGA的挑战之一可能是对目标硬件架构和资源的知识,为了有效的为FPGA设计应用程序,开发人员需要拥有这些知识。在SDR领域,设计平台通常是软件工程师的工作,因此将这些经验运用到硬件设计中会消耗很多时间,而且也没那么简单。但是正如第四章-A(周四更)中讨论的那样,通过使用HLS工具可以使采用FPGA解决方案变得更加可行。

D.混合设计(协同设计)

实现SDR的第四种方法是混合法,就是将硬件和软件技术结合到一个平台上。通常被称为协同设计或混合法。采用协同设计方法的SDR的例子有WARP和CODIPHY。

  • 1)定义:硬件/软件协同设计作为一种概念已经存在了十多年,在过去的几年里,由于人们对用一种新的、不同的方法解决集成电路设计问题的兴趣越来越大,它的发展速度也越来越快。即使GPP变得比以往任何时候都更强大,多核设计也很明显,为了获得更高的性能和实现需要实时处理的应用程序,设计者不得不将注意力转向使用硬件解决方案的新设计方案,即FPGA和ASIC。协同设计是指采用以FPGA结构为代表的硬件设计方法和以处理器为代表的软件设计方法。

随着越来越多的应用程序(如汽车、通信和医疗)的复杂性和规模的增加,将软件(如固件和操作系统)和硬件结合起来的系统设计已经成为一种常见的做法。近年来,由于高级综合和开发工具的进步,这种设计已经成为可能,这些工具不仅有能够从软件代码中生成高效的RTL,而且还定义了双方之间的接口。业界已经看到到了协同设计的巨大市场,并提供了各种SoC板,其中除了FPGA结构外,还包含多个处理器。例如,XilinxZynq板包括一个FPGA结构以及两个ARM Cortex-A9处理器。

除了上述优势之外,还有其他一些原因使得协同设计更加有趣,包括:更快的上市时间、更低的功耗(为此进行优化时)、灵活性和更高的处理速度,因为这些系统中的硬件通常被用来加速解决软件的瓶颈。

采用协同设计方法实质上是将系统划分为可综合硬件和可执行软件块的问题。此过程取决于设计人员制定的严格标准。本文讨论了划分方法,并给出了做出适当的架构决策的过程。常用的方法通常为设计人员提供有用的信息,帮助他们做出在硬件中实现什么以及在软件中保留什么的最佳决策。这些信息可以包括可能的加速比、通信开销、数据相关性以及计算的局域性和规律性。市面上提供的SoC板的例子见表五。

  • 2)采用:如第二节所述,SDR可被视为固有的混合或异构系统,因此意味着需要硬件和软件块。这是因为控制部分通常由通用处理器和其他功能(如信号处理)由DSP等专用处理器处理,有时使用专用硬件(如FPGA)加速。这种设计方法非常适合SDR。例如,加速块的部分或将其完全移动到FPGA结构可以帮助将处理时间推向极限,从而实现实时部署的实时性能。此外,通过仔细实施RTL优化技术,可以开发适用于移动和物联网应用的高效系统。另一方面,在处理器上或多处理器上运行大多数MAC层操作,可以方便地重新配置。因此,可以采用不同的分区方案来满足当前应用的要求。

值得注意的是,由于对SoC和多处理器SoCs(MPSoCs)的需求不断增长,FPGA厂商,即Intel和Xilinx,正在扩大其产品基础,增加更多的soc和多处理器soc (MPSoCs)。在SDR平台上实现的实例有MPSoC。在一份白皮书中,美国国家仪器公司(拥有USRP的公司)预测SDR的未来本质上是实现协同设计,特别是随着FPGA的引入,这些FPGA配备了大量DSP片来处理密集的信号处理任务,如下图所示。这也可以从USRP E 310模型中看出,它包含了Xilinx Zynq SoC。

  • 3)不足之处:与前面提到的设计方法相比,它们的价格通常更高,因为在同一个板上有多个组件,即处理器和FPGA结构。造成这种情况的其他因素包括额外的内存和复杂的接口。协同设计的另一个挑战是共享内存访问,例如处理器和FPGA结构之间的外部DDR存储器。研究表明,GPP执行的内存读写操作数量要高于FPGA。这是因为处理器在寄存器上执行操作,而FPGA在缓冲区上执行操作。由于内存访问加在一起会导致整个延迟,这可能会对整体性能造成瓶颈。此外,还开发了一种使用功能等效软件预测共享内存带宽的方法。这使得设计人员能够在实现整个协同设计之前意识到瓶颈在哪里。

E.对比

当我们讨论了各种SDR平台的不同设计方法和硬件平台时,我们打算使用一种无线通信协议的跨平台实现,对它们进行一对一的分析比较。相反,文献中提供的是一系列抽象的比较,使用一组针对高性能计算(HPC)的基准,而不一定是SDR应用程序。仅仅从这些数字中很难得出结论,因为SDR领域的性能比较需要在现实生活中对它们进行测试。

在表6中我们提供了三种主要设计方法的比较,作为设计人员选择最符合其应用规范方法的指南。在这些比较中,我们将重点放在对SDR设计很重要的特性上。但是,我们并不对什么是最好的方法做出假设,并且相信开发人员有责任根据应用领域做出最好的判断。请注意,在这个表中,没有GPU,因为它们通常是GPP的共同处理器,它们的添加通常会提高性能。也没有包括协同设计,因为它结合了GPPS和FPGA。

如表6所示,虽然GPP易于编程,而且非常灵活,但它们缺乏实时满足规格的能力,而且在能耗方面效率很低。为了提高它们的性能,在同一个GPP平台中包含了多个具有类似指令集的核,以利用并行性,并在每个时钟周期执行更多的操作。但是,硬件复制(即,向GPP添加更多的内核)不一定可以转化为更高的性能。GPU通过为几个功能单元提供相同的控制逻辑来解决这个问题。代码的顺序部分运行在GPP上,GPP可以在多核GPP上进行优化,而计算密集型部分运行在几百个核心GPU上(核心并行工作)。另一个定制处理器的例子是DSP,它比GPP性能要好得多,同时保持GPP所具有的易用性,这使它们非常具有吸引力。它们还具有更高的功率效率,更适合于信号处理的应用。另一方面,它们更贵,这是需要考虑的地方。最后,FPGA结合了处理器的灵活性和硬件的效率。FPGA可以通过动态重构实现高度的并行性,同时产生更好的功率效率。FPGA通常更适用于定点算法,如信号处理任务,但近年来它们的浮点性能有了显著提高。然而,设计人员应对硬件有更多的了解,这有时是一项令人望而却步的功能。

表6 比较SDR设计方法

在一项比较分析中,研究了GPU和FPGA在目标应用、复杂性和数据类型方面的性能和能源效率。结论是,GPU对于流应用来说性能更好,而FPGA更适合于使用密集FFT计算的应用程序,因为它们能够以更快、更节能的方式处理非顺序内存访问。同样,也回顾和报告了不同应用的可持续性能和能源效率。他们与SDR有关的一个发现是,FPGA应该用于不带浮点的信号处理,从而证实了上述结果。此外,在另一份报告中指出,在FFT处理方面,GPU比FPGA快十倍,而在矩阵运算方面,FPGA的功率效率总是优于GPU。最后,通过LDPC译码器的实现对GPPS、GPU和FPGA进行了比较,得出GPU和FPGA的性能优于GPP的结论。从上述研究中可以明显看出,当采用特定的设计方法时,需要进行权衡,因此应事先进行仔细的分析。其他比较研究也包括类似的结果和结论。