当前位置:首页 > 嵌入式 > 嵌入式硬件

工作阶段:  工作流程一般分为三个阶段。

  阶段一:直接按照需要用c语言实现功能。在实际的dsp应用中,许多算法都是非常复杂,直接用汇编代码编写,虽然优化效率很高,可是实现的难度却很大,所以一般都采用先用c语言来实现,然后编译运行,利用c64x开发环境的profile?clock工具测试程序运行时间,若不能满足要求,则进行第二阶段。

  阶段二:c语言级的优化。选择c64x开发环境提供的优化方式以及充分运用其他技巧,优化c代码,若还不能满足效率要求,则进行第三步。

  阶段三:汇编级的优化。将上一阶段c程序中优化效率较低的部分提出来,用线性汇编语言编写,利用汇编优化器进行优化。汇编优化器的作用是让开发人员在不考虑c64x流水线结构和分配其内部寄存器的情况下,编写线形汇编语言程序,然后汇编优化器通过分配寄存器和循环优化将汇编语言程序转化为利用流水线方式的高速并行汇编程序。
上述的三个阶段不是都必须经过,当在某一阶段获得了期望的性能,就不必进行下一阶段的优化。
  1) 选用c编译器提供的优化选项
  在编译器中提供了分为若干等级和种类的自动优化选项,如下:

  ● -o:使能软件流水和其他优化方法
  ● -pm:使能程序级优化
  ● -mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。
  ● -mg:使能分析(profile)优化代码
  ● -ms:确保不产生冗余循环,从而减小代码尺寸
  ● -mh:允许投机执行
  ● -mx:使能软件流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳方案。
根据实际编译的程序,选择合适的优化选项,进行源程序的优化。
  2) 减小存储器相关性

  为使指令达到最大效率,c64x编译器尽可能将指令安排为并行执行。为使指令并行操作,编译器必须知道指令间的关系,因为只有不相关的指令才可以并行执行。当编译器不能确定两条指令是否相关时,则编译器假定它们是相关的,从而不能并行执行。设计中常采用关键字const来指定目标,const表示一个变量或一个变量的存储单元保持不变。因此,在代码中加入关键字const,可以去除指令间的相关性。例如下面的程序:

void vecsum(short *sum,short*in1,short*in2,unsigned int n)
{
int i;
for(i=0;i<n;i++)
sum[i]=in1[i]+in2[i];
}
由其相关图2(a)可见,写sum可能对指针in1、in2所指向的地址有影响,从而in1和in2的读操作必须等到写sum操作完成之后才能进行,降低了流水效率,为帮助编译器确定存储器的相关性,使用const关键字来指定一个目标,上面的源程序可改为含关键字const的优化源代码:
void vecsum(short * sum, const short*in1,const short*in2,unsigned int n)
{
int i;
for(i=0;i<n;i++)
sum[i]=in1[i]+in2[i];
}  由其相关图2(b)可见,由于使用了关键字const,消除了指令之间的相关路径,从而使编译器能够判别内存操作之间的相关性,找到更好的指令执行方案。

  3) 使用内联函数(intrinsics)

  内联函数是c64x编译器提供的专门函数,它们与嵌入式的汇编指令是一一对应的,其目的是快速优化c源程序。在源程序中调用内联函数,与调用一般的函数相同,只不过内联函数名称前有下划线作特殊标识。当汇编指令功能不易采用c语言表达时,可采用内联函数表示。例如在定点运算中经常要求出源操作数的冗余符号位数,这一功能如果用c完成的话,需要如下的代码:

unsigned int norm(int src1)
{
unsigned int sign, result = 0;
sign = src1 & 0×80000000;
while(1)
{
if(sign)
{
if((src1 = src1 << 1) & sign)
result += 1;
else
return result;
}
else
{
if((src1 = src1 << 1) | sign)
return result;
else
result += 1;
}
}
}
  该源程序代码冗长,有较多的逻辑操作和判断跳转,运行效率低下。若用内联函数,则是result =_norm(src1),减少了代码长度,提高了运行效率。因此对于需要大量c代码才能表示的复杂功能,应该尽量用c64x的内联函数来表示。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

数字信号处理器(DSP)在通信、控制、图像处理等多个领域扮演着越来越重要的角色。TMS320F2808PZA作为德州仪器(Texas Instruments)推出的一款高性能DSP控制器,其独特的架构和强大的功能使其在众...

关键字: tms320f2808pza 数字信号处理器 DSP

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

今天,小编将在这篇文章中为大家带来数字信号处理器DSP的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: DSP 数字信号处理器

DSP的国产替代不会是一件很容易的事情,但受到当前国际竞争态势的影响,本土开发者亟需拥有降本优势、供应链安全保证,以及能协助打造极高竞争力产品的DSP芯片。也就是说,发展国产DSP是不二选择。

关键字: DSP

嵌入式处理器是一种特殊的计算机处理器,它被设计用于嵌入到各种设备和系统中,以实现特定的功能。由于其低功耗、高性能和可靠性等特点,嵌入式处理器在许多领域都有广泛的应用,如汽车电子、工业控制、医疗设备等。本文将对嵌入式处理器...

关键字: 嵌入式处理器 嵌入式系统

将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。

关键字: 单片机 spi通信 DSP

随着科技的不断发展,微控制器(MCU)和数字信号处理器(DSP)已经成为了电子行业中不可或缺的重要组成部分。它们在各种电子设备中发挥着关键作用,如智能手机、平板电脑、家用电器等。然而,尽管它们都是用于处理数字信号的集成电...

关键字: MCU DSP 数字信号处理器 微控制器

2023年10月10日, [恩智浦创新技术论坛] 在深圳湾万丽酒店举行,众多工业、物联网、新能源和医疗等行业的企业出席论坛,深入交流市场趋势与行业洞察,一同讨论如何协同面对市场的机遇与挑战,共同促进未来市场的发展。米尔电...

关键字: NXP 嵌入式处理器

随着环境保护和能源可持续性的日益关注,电动汽车作为一种清洁、高效的交通工具逐渐成为全球汽车行业的热点。与传统的内燃机驱动汽车相比,电动汽车具有零排放、低噪音和高能量利用效率等显著优势。

关键字: DSP 芯片 混合动力汽车

在平常的日常生活中,噪声总是不可避免的。每个人承受噪声的能力也不尽相同,喜欢安静的人需要一些降噪措施,降噪耳机应运而生,甚至都能算得上是城市生活的必备品了

关键字: 主动降噪 DSP ANC
关闭
关闭