Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5896
  • 博文数量: 12
  • 博客积分: 800
  • 博客等级: 准尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-10 10:22
文章分类
文章存档

2009年(1)

2008年(11)

我的朋友
最近访客

分类: 嵌入式

2009-10-29 14:16:43

XScale性能发挥很大程度上依赖于应用程序优化技术。本文从XScale嵌入式系统设计、开发工具选择、编译优化和编程开发等角度讨论和提出了XScale应用程序优化策略和技术。XScale嵌入式应用系统性能优化可以下几个方面考虑。
一、算法结构优化
    实现某种应用功能通常可采用多种算法或方法,不同算法复杂度和效率差别很大。选择一种高效算法或对算法进行优化,可以使应用程序获得最大优化性能。选择高效算法,如果算法效率低下,再快处理器也会显得不够有,而一个高效算法却可以弥补处理器性能不足。 算法优化是首选优化技术。
二、 编译优化
    随着编译技术成熟,很多编译器都实现了较强代码优化功能,可在编译过程中自动对应用程序进行优化,改进一些不合理结构,生成效率较高目标代码。多数编译器都可基于数据流分析实现别名分析、常数拆叠、常数传播、公共子表达式消除、冗余代码和死码删除、循环不变量移动、循环逆转、循环展开、函数嵌入等与体系结构无关优化。GNU gcc、WindRiverdiab、Intl XScale Compiler等常见编译器都针对XScale体系结构进行了优化设计,可以有效地利用XScale/ARM指令条件执行、条件设置和操作数移位等功能,生成高效指令序列,提高应用程序性能。
    一些优化编译器可借用并行程序设计技术,进行相关性分析,获得源程序语义信息,采用软件流水线、数据规划、循环重构等技术,使应用程序呈现更好局部性,提高Cache命中率,从而提高计算密集型应用程序性能。应用程序开发过程中应该充分利用编译器代码优化功能,在编码时将主要精力集中在业务逻辑算法流程设计上,提高编程效率和代码可读性。
三、编程优化
    编译优化是静态优化。优化编译器可以自动完成程序段和代码块范围内优化问题,但编译器很难获取程序语义信息、算法流程和程序运行状态信息。很多情况下也需要编译人员以某种方式将程序运行状态信息传递给编译器,或进行手工优化。以下是常用编译优化技术。
1、使用inline函数
    多数编译器支持inline关键字。如果一个函数被设计成一个inline函数,那么在调用它们地方将会用函数体来替代函数调用语句,这样将会彻底省去函数调用开销。使用inline最大缺点是函数在被多处调用时,代码量将增大。
2、减少函数调用参数
    根据
过程调用规范,4个以下形参通过寄存器传递,第5个以上形参通过存储器栈传递。显然,通过存储器栈传送参数开销较大。函数调用形参限制在4个以内,可以降低函数调用开销。
3、在Switch是一种使用普通编程技术
    编译器为之产生if-else-if嵌套代码,并按照顺序进行比较,发现匹配则跳到满足条件语句执行。编程时,根据发生相对频率排序,将最可能发生情况放在第一位,最不可能情况放在最后一位,可以提高Switch语句块执行速度。 实际上,程序中if条件处理也有类似特性。
4、避免使用C 昂贵功耗
    C 在支持软件工程、面向对象程序设计、结构化对C进行卓有成效改进,但在代码尺寸、执行速度等方面比C语言差一些。C 类机制与C语言结构差别不大,但C 多重继承、虚拟基类、模板和运行类型识别等特性对代码尺寸和运行效率有负面影响。对这些功能要慎重使用,可以通过试验测试其影响大小。
阅读(151) | 评论(0) | 转发(0) |
0

上一篇:龙芯嵌入式收款机

下一篇:没有了

给主人留下些什么吧!~~