如何编写电力实时应用的运行在DSP上的高效C代码
摘要:数字信号处理器(DSP)因其出色的处理能力,在包括电力应用在内的各个领域得到十分广泛的应用。为了满足电力应用的高实时性的要求,需要为DSP编写高效的代码。目前对DSP进行程序设计时,使用得最多的是C语
准库函数中所使用的数组操作方式。也许指针方式在很多时候比下标方式来得更方便,然而下标方式比指针方式具有更高的效率。因此,在DSP程序设计中在能使用下标方式的地方尽量使用下标方式。
例如下面一个初始化数组的函数,用指针方式写成:
void InitArray(int *array, int arrayLenth)
{
int n;
for(n=0;n<arrayLength;n++)
{
*array++=0;
}
}
用下标方式写成:
void InitArray(int *array, int arrayLenth)
{
int n;
for(n=0;n<arrayLength;n++)
{
array[n]=0;
}
}
用下标方式写成的函数,其执行的时间效率要比用指针方式写成的函数高很多。
3.2.2 少用判断语句和分支语句
判断语句和分支语句的使用会打断流水线,因而严重降低程序的执行效率。从DSP的汇编指令集中可以看得很清楚,一条同时完成乘法和加法的复杂指令只需要DSP的一个指令周期,而一条简单的条件跳转指令则需要DSP的六条指令周期【4】【5】。究其原因,条件跳转语句将打断流水线。在C代码中,if…else…语句和switch…case…语句都属于条件跳转语句。因此,判断语句和分支语句的使用会降低代码的时间效率,要尽量少用。
在实际操作时,可以通过各种方法来避免判断语句和分支语句的使用,用其他代码取而代之。例如下面的返回最大值的函数,如果使用判断语句,函数一般写成如下形式:
int MaxOfTwo(int a, int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
我们可以改写这个函数以避免判断语句的使用,改写后的函数如下:
int MaxOfTwo(int a, int b)
{
unsigned int c;
c=a<b;
return (a-c*(a-b));
}
改写后的函数比改写前的函数具有更高的时间效率。
3.2.3 register关键字的使用
在多数DSP程序设计中,都允许使用register关键字【2】。它的作用就在于将register关键字所修饰的变量放在DSP的寄存器中,而不是放在片内存储器中。由于DSP对寄存器的访问速度比对片内存储器的访问速度还要快,因此提高了代码的时间效率。特别是作为循环的计数变量,更需要放入寄存器中。例如前面提到的初始化数组的函数,如果写成:
void InitArray(int *array, int arrayLenth)
{
register int n;
for(n=0;n<arrayLength;n++)
{
array[n]=0;
}
}
则变量n将被放入寄存器。虽然多数DSP编译器的自动优化功能有时候会根据自己的判断自动将一些没有进行register修饰的变量放入寄存器,但是编译器的选择往往不是最明智的,需要人为添加register修饰词。如果register变量太多,以至于寄存器的数目不够,编译器会忽视一部分register修饰词,因此不会造成程序的错误。但这不代表所有的变量都可以放入寄存器中。为
责任编辑:和硕涵
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞
-
现货模式下谷电用户价值再评估
2020-10-10电力现货市场,电力交易,电力用户 -
PPT | 高校综合能源服务有哪些解决方案?
2020-10-09综合能源服务,清洁供热,多能互补 -
深度文章 | “十三五”以来电力消费增长原因分析及中长期展望
2020-09-27电力需求,用电量,全社会用电量
-
PPT | 高校综合能源服务有哪些解决方案?
2020-10-09综合能源服务,清洁供热,多能互补 -
深度文章 | “十三五”以来电力消费增长原因分析及中长期展望
2020-09-27电力需求,用电量,全社会用电量 -
我国电力改革涉及的电价问题
-
贵州职称论文发表选择泛亚,论文发表有保障
2019-02-20贵州职称论文发表 -
《电力设备管理》杂志首届全国电力工业 特约专家征文
2019-01-05电力设备管理杂志 -
国内首座蜂窝型集束煤仓管理创新与实践
-
人力资源和社会保障部:电线电缆制造工国家职业技能标准
-
人力资源和社会保障部:变压器互感器制造工国家职业技能标准
-
《低压微电网并网一体化装置技术规范》T/CEC 150
2019-01-02低压微电网技术规范
-
现货模式下谷电用户价值再评估
2020-10-10电力现货市场,电力交易,电力用户 -
建议收藏 | 中国电价全景图
2020-09-16电价,全景图,电力 -
一张图读懂我国销售电价附加
2020-03-05销售电价附加
-
电气工程学科排行榜发布!华北电力大学排名第二
-
国家电网61家单位招聘毕业生
2019-03-12国家电网招聘毕业生 -
《电力设备管理》杂志读者俱乐部会员招募
2018-10-16电力设备管理杂志