● 摘要
嵌入式DSP系统在预警探测、情报处理、精确制导等国防电子系统中具有重要作用。但对于高帧频高分辨率视频的快速目标跟踪等应用场合,现有的单DSP系统已经无法满足需求,需要研究更为高效的并行处理系统。为解决数据传输低延迟和快速处理的问题,论文基于TI6678设计了可扩展的双多核DSP高速处理系统,利用SRIO完成多处理器间的快速数据传输,实现了多DSP的高效并行处理。随着硬件复杂度的增加,并行算法开发变得极为困难,为降低算法实现难度,论文还研究解决了多DSP系统对OpenCL并行编程模型的支持问题,提高了算法开发效率,同时显著提升了并行系统的效能。
针对数据低延迟和快速处理的要求,论文设计了支持OpenCL并行编程模型并可进行板级互联的双TI6678DSP并行处理系统,实现双DSP的多核并行处理,构成16核处理器,通过VPX和QSFP接口实现板级互连,可重构成Nx2 TI6678系统(N≤5),完成Nx16核的并行处理。利用高速的SRIO链路实现多处理器间数据传输的低延迟;针对OpenCL并行编程模型的支持需要,在系统设计中引入PowerPC处理器作为host(主控),完成程序调度和加载;在多DSP核调度方式上采用引入FPGA,完成集中式调度,从而在硬件设计上实现对OpenCL并行编程模型的支持。
针对多处理器负载平衡问题,OpenCL的执行模型中采用了按细粒度动态调度的方法,但一般由主控通过互连链路如SRIO来调度多个DSP,由于调度开销很大且链路延迟不确定,从而影响调度效率。本文采用高效的FPGA作为中央调度器,以中断和总线直接访问相结合的方式来调度多个DSP核,显著提高细粒度调度方法的效率,能够更好保持负载平衡。
针对OpenCL工作组内多个工作单元之间切换慢的问题,本文提出了增加二级调度器的方法。通过研究DSP的C66内核并行结构,设计了运行于SYS/BIOS系统之上的二级任务调度器,该调度器的切换效率是SYS/BIOS效率的6倍,显著提高了OpenCL工作单元切换效率和算法的执行效率。
针对OpenCL内核(kernel)不能在DSP上编译和加载的问题,本文利用开源编译器LLVM实现源代码的转换,解决代码编译问题;通过增加代码产生模块提取内核中的路障(Barrier)调用等信息,与底层运行库(Run-Time Library)配合,实现高效调度。在内核程序加载上,设计了动态模块加载器,对OpenCL内核中访问的全局符号和函数地址进行重定位,解决了主机控制内核在设备上运行的问题。
最后本文对硬件系统及其OpenCL支持进行了测试,首先用来自NVIDIA、AMD、Parboil以及NPB的测试算法进行测试验证,结果显示系统完全支持OpenCL并能达到比较高的加速比。其次,用基于BVH的三维渲染算法进行测试验证,通过双板互联在共32个DSP核的系统中渲染1024*1024的图像,速度达到了1秒,比PC提高了30倍。最后,用常用的互相关目标跟踪算法进行测试验证,对测试目标的跟踪能在2毫秒内完成,满足500帧高帧频目标跟踪场景的要求。