如何运用C 语言进行DSP 软件设计优化
文/杨静
摘要:随着信息时代的发展,各类应用软件也逐渐被开发利用。其中应用于机械化设计的C 语言程序,对DSP 软件的开发与利用方面尤为突出,将DSP 软件的黄金分割法与二插法应用到了极点。因此,本文就C 语言在DSP 软件设计中的运用做出简要分析。
【关键词】C 语言 DSP 软件设计 优化
C 语言是在20 世纪80 年代被移植到各类微型机上的,是世界上最流行、使用最为广泛的高级程序设计语言之一。因其具有高级语言及汇编语言双重特点的一种计算机设计语言,C 语言既可以作为DSP 软件设计的语言,又可以作为DSP 系统编写的应用程序,使DSP软件在不依赖计算机硬件应用程序的作用下运行。C 语言具有较强的绘图能力,且具有可移植性,可增强DSP 软件的数据处理力度,并可编成DSP 系统软件的二维、三维的动画与图形,使DSP 软件实现高级语言数据。
1 DSP概述
DSP 是20 世纪80 年代开发生产得到的,一种具有特殊结构的数字信号微处理器。DSP因其具有高效的代码处理功能,所以在通信和信息系统、信号和信号系统、自动控制、军事、雷达、航空、医疗、家电等方面都得到了广泛的应用。
DSP 在算法的处理上、乘加运算量的运用上都优于单片机,尤其在通信、音视频处理方面更具有高效性。现今随着一般用词汇语言的编制复杂程度的变化,导致了DSP 应用范围也不断扩大,随着而来的诸如:程序可读性、可修改性、可移植性及可重用性的缺点日益突出,软件需求与软件生产力之间的矛盾也日益严重起来。
2 运用C语言进行DSP软件设计优化
C 语言可针对DSP 应用的繁琐性,来进行DSP 软件的开发,一般在基于通用微处理器的PC 机或者工作站来进行仿真推算,并通过C 程序进行DSP 平台的移植。根据软件开发的顺序,对应的优化工作主要包括:仿真环境下的优化与DSP目标环境中的两部分优化,其具体优化工作如下:
2.1 仿真环境下的优化
C 语言程序的特殊性是仿真环境下优化的基本条件,其主要的优化可采用计算表格化、快速算法和数组指针化三个工作面操控。(1)计算表格化。计算表格化,即根据将要参考的以及查找的数据资料,做成常数数值的数据查找表,将计算常数数值表格化,有利于减少系统的操作计算时间,提高算法的效率。计算表格化不仅适用于比较规范性的参数表,对于一些较为杂乱性的参数表(例如:浮点除等),也可使其表格化,让数据的参考、利用、阅读、整合更具有条理性。
(2)快速算法。在DSP 应用软件优化时,利用快速算法应注重数据方式的选择。快速算法与直接算法不同,其不具备直接算法的条理清晰性,但却比直接算法更快速、更高效。例如:对于一个30×30 的离散余弦变换来讲,快速算法只需做1200 次处理即可。因快速算法具有对特殊位的反转型特点。因此,在采用快速算法时,应在数据移动的增多量与运算的减少量之间选择一个折中点。
(3)数组指针化。对于数组的寻址,尤其是多维数组的寻址在C 语言成语中,一直是即耗时又繁琐的工作之一。采用数组的C程序进行处理,比起采用指针的C 程序进行处理,其表达更清晰明了。读性更简明直白。
2.2 DSP环境下的优化
当C 语言程序向DSP 平台进行最后的目标移植时,必须在考虑DSP 器件特点的前提下进行特殊的优化考虑。主要包括:局部嵌入汇编与储存空间重排两种。
(1)单指令与块重复。C 语言对DSP 软件进行处理时,在应用时,经常会出现大量的重复性操作处理。因此,应在DSP 软件上提供单指令重复与块重复,是支持重复性操作,简化操作处理的最有效的方法。例如:提供具有RRTB 与RPT 两条指令的,具有零开销控制的TMS320C54×。
(2)延迟转移。在所有的处理器中,最耗时的指令莫过于转移指令。是在可在执行转移指令的同时,又进行下一步的执行命令,使转移指令的周期数变小的判定条件。延迟转移可大大缩短转移指令的运行时间,减少操作程序。
(3)独特的寻址方式。因DSP 处理的数据虽然较为复杂但却有一定的规律可循。因此,DSP 地址产生的寻址方式支持自动的增减,采用嵌入汇编实现环形缓冲区的硬件管理。在实际的应用过程中常常需要对缓冲区进行一定的环形处理,即处理完尾数后再从头数据继续处理,并将环形处理缓冲到相对待定的储存空间。关于普通的处理方式,其每次的寻址的时候都需要将所要寻找的地址与尾地址进行比较,若超出了限定的范围,则寻址将从新开始,这样即耗费时间又使操作繁琐,降低了相关代码的处理效率。
(4)并行指令。采用并行指令是在一周期内同时完成2 个数据单元的操作的指令,一组是数据写总线,一组是数据读总线。例如:在TMS320C54× 中,可将周期内累加器的内容储存与一个特定的单元内,并将另一个储存单元的内容装入累加器中。
(5)使用寄存器。在所有的存储器中,DSP 对片内寄存器的存取速度是最快的。因此,尽可能提高寄存器的利用率。一方面可根据丰富的寻址和特殊性的操作,进一步提高通用寄存器的使用率,另一方面可以将系统尚未使用到的不同规格的寄存器分配给一些使用频率特别高的变量。例如:C 编辑器可在ARI 做局部的变量暂时储存的条件下,对TMS320C54×中的8 个通用寄存器,可做出全局的变量,也可以考察编辑所产生的汇编码,直接使用尚未被编译器用到的AR6 或AR7。
(6)减少函数调用。减少函数的调用,即在一个程序中的代码做简单的处理后,对下一个程序采用C 库函数进行代码调用。减少函数的调用,不仅可以使代码的效率大幅度提高,而且可以使操作更简单。例如:在TMS320C54× 中的MIN 和MAX 两个单周期指令中,可分别实现两个书中的取小和取大。若在代码移植过程中采用嵌入汇编,则可以将下一个程序的例子改成接下来要进行程序中的汇编码。
3 结束语
C 语言是现今新型的计算机技术领域的产物,其具有良好的技术性、可控性操作价值。将C 语言应用到DSP 软件的开发与利用中,可有助于DSP 软件的利用,更有助于传媒、网络、军事系统的传输与发展,是现今传媒通信领域的重点研发项目,也是现今计算机软件开发领域的重要研究成果。
参考文献
[1] 任志考. 用C 语言进行DSP 软件设计的优化方法[J]. 山东青岛科技大学:信息与
控制工程学院,2011(24).
[2] 胡世锋; 张海涛. 用C 语言实现DSP 程序设计的新方法[J]. 河北北方学院学报( 自然科学版),2009(03).
[3] 成利香.TMS320C54XDSP 混合编程的研究[J]. 福建电脑,2010(03).
作者单位
常州旅游商贸高等职业技术学校 江苏省常州市 213000