论文部分内容阅读
伴随着音视频娱乐行业的迅速进步,数字信号处理器正逐渐成为研究人员重点关注的对象,如何提高数字信号处理器平台上相关应用的性能和效率也受到越来越多的重视。然而,当前流行的多核、超标量、单指令流多数据流(Single Instruction,Multiple Data,SIMD)、乱序执行、超长指令字(Very Long Instruction Word, VLIW)技术使得数字信号处理器的体系结构越来越复杂,普通用户很难编写出能够充分发挥处理器性能的软件。针对特定数字信号处理器平台进行函数库改进是软件优化领域当前重点关注的问题之一,其关键在于提升代码对处理器、存储器等硬件的使用效率。本文针对上述问题,基于国产BWDSP100进行深入研究,针对其搭载的基本信号处理函数库实施并行优化。考虑到该函数库结构复杂、例程数量较多,本文采用重点研究典型函数的方式,对其中最为重要的数字信号变换函数进行优化,使用到的主要优化方案有如下三个层次:(1)利用BWDSP100汇编指令集提供的特殊指令改编函数库中部分函数的实现,从而达到减少代码量,提升程序执行效率的目的。BWDSP100提供的特殊指令包括累加、累减、复数、选大、选小、定点、超算,其中超算指令包括正余弦、倒数、自然对数等。(2)针对数字信号处理函数循环计算多的特点,通过循环展开技术对函数内的循环操作进行重点优化。循环展开能够成倍的提升每一轮迭代时参与运算的数据个数,这样做的效果是有效的降低了循环体执行的总次数。该技术可以提高软件效率的原因有二:一方面它提高了单次迭代内部有效计算(非索引比较)的数目;另一方面它拉长了程序代码,基于此可以进一步变换代码以便进行指令调度、对变量进行重命名以减少数据相关。(3)依据BWDSP100支持指令多发射的特点,通过指令调度技术对指令次序进行调整,这样不仅可以减少流水线的空转和等待时间,同时可以提高循环展开的展开数。实验结果表明,经过优化之后,本文中所有函数的加速均超过9,其中80%的函数加速比超过10。本文的工作成果对其它软件的优化工作有借鉴意义。