基于DSP环境下C语言的编程优化
2017-04-14朱业腾
朱业腾
(中国船舶重工集团公司第七二三研究所,江苏扬州,225000)
基于DSP环境下C语言的编程优化
朱业腾
(中国船舶重工集团公司第七二三研究所,江苏扬州,225000)
DSP作为一项新型技术,具有实时、准时等优势,在此类系统中,能够运用合理的片内结构,实现对数字信号的专门性处理,提高信号处理有效性。但随着DSP应用范围愈发广泛,汇编语言程序可读性、可移植性等缺陷逐渐暴露出来,且汇编语言是非结构化语言,对于大型的结构化程序设计难以胜任,要求我们采用更为高级的语言完成该项工作。相比较现有汇编语言,C语言无疑是最为高效和灵活的,如何在DSP环境下实现对C语言编程优化受到了广泛关注。文章将从DSP的特点出发,深入分析在DSP环境下C语言编程的优化措施,希望对DSP平台完善提供参考。
DSP环境;C语言;编程优化
0 引言
相比较单片机,DSP多用于算法较为复杂、乘加运算量较大的通信、雷达及音视频处理等方面。为了追求高效的代码,一般主要采用汇编语言编写DSP程序。随着DSP应用范围不断拓展,汇编语言程序在可读性等方面无法满足实践应用需求,故积极引入了C语言,有效解决上述问题。但在实践中,C语言编程在细节上还存在诸多不足,有待进一步完善和优化,提高程序应用价值。
1 DSP概述
所谓DSP,是以电子信息技术为核心的数字信号处理,其基本概念、分析方法与信息、电路及生物医学等相互渗透和融合。信息时代背景下,对于数字信号问题的处理存在于人们生活和工作当中[1]。DSP诞生于上个世纪八十年代,在通信与信息系统、自动控制及雷达等多个领域得到了应用。
2 DSP开发环境下C语言编程优化
2.1 数据类型
标准C语言能够提供丰富的数据类型整型、浮点及指针等。从根本上来看,编程面对的问题,是如何将数据类型编译成为生成的代码小、效率高。对于整型而言,其具有signed与unsigned区别,由于缺少统一的标准和规范,这些模糊定义直接影响程序由一个处理器向另一个处理器转移。为了避免此类影响,在编程过程中,可以根据数据类型重新定义文件。在编程中,对于浮点的使用存在一定风险,除非系统具备专门的浮点设计处理器,否则将会存在很多不确定性。考虑到DSP常用可变定位方式,如果忽视对结构的处理,会浪费大量RAM与ROM空间。
2.2 数值操作优化
对于C语言编程优化,需要加强对数值操作的优化,从如下几个方面入手:一是利用比特移位操作,借助全新的方式,取代2次幂整数乘除法运算,能够取得更好效果。二是利用查表法,尤其是在FFT程序中,可以将一些运行时计算的参数视为查找表,进行编译计算,以此来提高运算有效性。三是当出现浮点设备时,要进一步明确数据类型,以此来缓解定点单位负担。四是避免数值上下溢出,除非是算法本身需求。通过对数值的优化,能够优化编程程序,提高编程有效性。
2.3 变量定义优化
C语言能够将局部变量放到堆栈中,此类访问为间接性,故整体速度较为缓慢。在优化中,更为高效的方法是将变量放在堆中,通过两种方法来实现。具体来说,一是声明为全局变量;二是声明变量为static,值得注意的是,在编程中要加强对全局变量利用率的提升。针对需要多次重复访问的for等变量,要设置为register变量,以此来提高编程效率,为工程师提供更多支持[2]。
2.4 调用函数
调用函数会产生大量代码,当C调用一个函数时,需要将参数传递到寄存器中。据此,如果函数参数不断增加,那么会在很大程度上增加调用开销。同时,还需要大量堆栈空间,最坏的情况是函数参数所传递的是结构,编译器在调用过程中,要将整个结构转移到堆栈当中。上述过程会增加诸多成本,为此,要禁止结构传递,可以利用结构指针取代,以此来减少成本,提高编程有效性[3]。除了上述开销外,还存在局部变量与返回值。如果需要返回值,需要在函数返回前,复制返回值,将其放置到指定位置,并将结果复制到调用程序当中。针对C++开发用户来说,采用inline技术能够完全消除函数调用开销,但采取该项措施,会增加目标代码的大小。
2.5 程序流程设计
在C语言中,程序流程控制主要有else、case、do等,合理选择控制方式对于代码生成效率与大小存在直接联系。针对具体控制语句的选择,可以考虑以下几个方面:首先,选择控制语句时要减少判断转移。在DSP环境中,流水线结构较为常见,如TMS320C54X中,采用了6级流水线结构,但受到频繁转移,在很大程度上影响流水线积极作用。如果面临着多项选择,switch、case语句具有较强的可读性,但其会带来更多的开销。而if、else语句更为灵活,但它需要更多的C代码。
3 结论
在DSP环境中,利用C语言开发能够缩短开发周期,提高程序开发有效性,使得程序的可读性等优势更加突出,增强系统适用性。针对程序开发全过程来看,本文从流程、函数调用及数值操作等角度入手,通过对C语言编程和优化,能够显著提高编程有效性。随着实时操作系统、嵌入式操作系统的不断引入,及DSP平台日益完善,利用C语言实现对DSP的应用将变得更为便利。
[1]陈川,闫昆,刘小剑,张坤.多核DSP供电设计及其环境适应性分析[J].电子器件,2017,40(03):577-580.
[2]张浩宇,徐建军,张南.JPEG2000的MQ模块在DSP环境下的优化实现[J].软件,2016,37(09):130-134.
Programming optimization of C language based on DSP environment
Zhu Yeteng
(The 723 Research Institute of China Shipbuilding Industry Corp,Yangzhou Jiangsu, 225000)
DSP is a new technology, has the advantages of real-time, time and other advantages, in such a system, can use reasonable internal structure, special realization of digital signal processing, signal processing to improve the effectiveness of But with the increasingly widespread application of DSP,assembly language program readability, portability and other defects gradually exposed, and the assembly language is non structured language for structured programming is difficult for large, we should adopt more advanced language to complete the work. Compared to the existing assembly language, C language is undoubtedly the most efficient and flexible, and how to achieve the optimization of C programming in the DSP environment has
widespread attention This article will start from the characteristics of DSP,in-depth analysis of the DSP environment in C programming language optimization measures, hoping to provide some reference for the improvement of the DSP platform
DSP environment; C language; programming optimization