近年来,数字信号处理器(DSP芯片)的发展极为迅猛, DSP芯片的应用越来越广泛。通常的DSP设备是与嵌入式系统相结合,来实时地完成某一特定任务。随着信号采集速度和处理速度的要求越来越高,许多领域都需要进行多处理器运算,其中包括医学、图像处理、军事等许多领域。多处理器系统可以根据所需实现的功能和处理器的性能来调节处理结点的数目,使系统达到最佳的性能价格比。本文介绍了一种基于VxWorks的多DSP通用并行处理系统的实现,并行处理模块选用AD 公司的SHARC 级处理器ADSP21160。 ADSP21160是高性能的32位DSP芯片,它具有单指令多数据流(SIMD)结构,提供两个计算处理单元的并行运算。单指令周期为10ns,最大处理能力为600MFLOPS。ADSP21160 拥有很大的片内存储区、多重内部总线结构、独立的I/O子系统,其最大的优势在于它拥有强大的通信接口,能够真正支持处理器数目的可调节功能,十分适合组成高性能浮点的多DSP系统。 AD 公司提供的集成开发环境VisualDSP++ 支持对 SHARC系列DSP芯片的开发。VisualDSP++能够编译多片 DSP的源代码,并产生下载文件,可以很方便地进行多DSP 系统的调试。 VxWorks是目前世界上用户数量最大的实时操作系统,除了具有优越的技术性能之外,它还具有丰富的应用软件支持、良好的技术服务和可靠的系统稳定性。VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。
1 系统方案设计及并行处理平台介绍
作为一个通用并行处理平台,我们设计的系统以PC机为主控机,以6片ADSP21160芯片构成的并行处理模块(M6- ADSP21160)为目标机,整个系统把嵌入式实时操作系统 VxWorks和并行处理完美地结合在一起。 M6-ADSP21160模块通过CPCI接口与主控机连接。M6 -ADSP21160模块通过FLASH来存放初始化程序和各片DSP 要运行的程序,在系统上电后这些程序被下载到各片DSP 中;模块上还添加了LEDs用来显示各DSP的运行状态,如复位、正常运行等。系统结构如图1所示。我们设计的并行处理模块实际上是6片DSP使用链路口 实现DSP间相当于松耦合的星型 联结。6片DSP的内存被统一映射到多处理器空间,6M-ADSP21160模块中的DSP内存和内存映射的IO寄存器可以被主机和各片DSP直接访问。一般情况下,片内存储器的访问速度是很快的,而片间存储器的访问速度,由于通信接口的限制,通常会较低。为了解决这一问题,一方面借助于 ADSP21160芯片特有的80MB/s高速链路口(linkport),另一方面,通过设计合理的并行算法,尽量减少DSP芯片间通信量。为了验证并行处理模块的处理能力和并行效率,我们把并行处理模块上的6片DSP按实现的功能分割成3个子系统 (如图2所示):一个用来进行程序流控制,由U3构成;一个用来进行单片DSP的脉压处理,由U6构成,称为单片脉压处理子系统;还有一个用来进行4片DSP的并行脉压处理,由U1、U2、U4、U5构成,称为并行脉压处理子系统。后两个系统处理相同的任务(雷达距离向脉冲压缩),对运算时间进行比较。
2.1目标模块并行算法设计
影响并行算法效率的因素比较多,其中算法本身的特点和硬件拓扑结构在算法分解和映射过程中的作用最为重要。构成FFT的最基本、最内层的循环体是蝶形单元(见图 4),对它最大程度的优化和提高并行性是在软件上提高处理速度的根本方法。我们考虑以下3点因素对其优化:(1)合理利用ADSP21160芯片SIMD(单指令多数据流)的特性;(2)蝶形系数在算法中相乘的次序;(3)ADSP-21160最多可以在一个指令周期实现乘/双加减/双存、取的指令特点。综合以上因素,设计了4种适用于不同硬件拓扑结构、可达到不同效率的并行算法[7]。再综合考虑本系统的硬件拓扑结构,我们选用分段滑窗算法的流水处理来实现脉压算法。即每片DSP单独处理1 024点数据的脉压,4片DSP采用流水方式工作,且各DSP之间不进行数据传输。这样片间数据相对独立,每片DSP的输出数据仅与该片1 024点输入数据相关。这样最大程度降低了片间相关性,提高并行效率,降低程序复杂度。处理时序如图5。