702第7章嵌入式系统的性能优化设计

上传人:M****1 文档编号:578305898 上传时间:2024-08-23 格式:PPT 页数:39 大小:415KB
返回 下载 相关 举报
702第7章嵌入式系统的性能优化设计_第1页
第1页 / 共39页
702第7章嵌入式系统的性能优化设计_第2页
第2页 / 共39页
702第7章嵌入式系统的性能优化设计_第3页
第3页 / 共39页
702第7章嵌入式系统的性能优化设计_第4页
第4页 / 共39页
702第7章嵌入式系统的性能优化设计_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《702第7章嵌入式系统的性能优化设计》由会员分享,可在线阅读,更多相关《702第7章嵌入式系统的性能优化设计(39页珍藏版)》请在金锄头文库上搜索。

1、座跃烩搽趾亏脚套秩道吗管窟乱圈诵掀乡胳琼杜愧叭兔蛆椒冶府魏遮褂鄂702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计第第7章章 嵌入式系统的性嵌入式系统的性能优化设计能优化设计瞒痛均骚降镍薄泽跃婶盖端帅惠戚寡板痛协玖募酬维打牡放慌涧位募省尼702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计内容内容p性能优化概述p性能优化的方法论(Methodology)p性能优化的层次p软件优化的工具沃音闲双冀从鲍趣丈祸黄颁究渔差十灾紊猴檄贺鸭枯搏浙坝的泼暖潘鳃蚕702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.1 性

2、能优化概述性能优化概述p无论对通用桌面计算机系统,还是对在嵌入式系统而言,优化(Optimization)一直是应用程序追求的目标之一。由于嵌入式系统是一个资源受限的系统,它对程序的运行的空间和时间要求比桌面系统更为苛刻,因此,应用程序的优化对嵌入式系统来说尤显得必要和紧迫。p根据优化的侧重点不同,嵌入式系统的优化大致分为:运行速度优化、代码尺寸优化和低功耗优化等三个方面。uu本章介绍的性能优化是指运行速度优化,而低功耗优本章介绍的性能优化是指运行速度优化,而低功耗优化将在下一章中重点介绍。化将在下一章中重点介绍。痊怪酒寺拭讲瘟围府旭充痴记缩皱死川音牛誉杀狂右炒都押钱阳编胡天厉702-第7章

3、嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.1 性能优化概述性能优化概述p性能优化为什么对于嵌入式系统尤其重要?uu价格敏感类系统价格敏感类系统希望使用尽可能便宜的硬件希望使用尽可能便宜的硬件但是又要能提供满足应用需求的性能但是又要能提供满足应用需求的性能如各种数码产品如各种数码产品uu性能性能criticalcritical类系统类系统价格不敏感价格不敏感应用的效果取决于能达到的性能应用的效果取决于能达到的性能比如比如CTCT,如果计算够快,可以做实时的,如果计算够快,可以做实时的3D CT3D CT支持支持下的外科手术下的外科手术甥赏颈烯拾赦棋间宏辛鞋耙捌荧豢木帕噬

4、白午征狱万蓄杨奉垛搜知满歼峡702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2 性能优化的方法论性能优化的方法论(Methodology)p高速化p并行化p流水化p计算和IO的互相替代p性能优化一般都有代价删洞蝉酸唉吏工袭铅煌碘讹虱瞒错潞凑缴藤硒葱歇浑壶伎靖靠氟悼霹陵瞥702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.1 高速化高速化p提高时钟频率uu更快的更快的CPUCPU主频主频20092009年年2 2月,东芝发布了月,东芝发布了1Ghz1Ghz主频的主频的TG01TG01智智能手机能手机QualcommQualc

5、omm实现的基于实现的基于ARMARM内核的处理器内核的处理器uu更快的更快的RAMRAM频率频率SDRAMSDRAM主频主频 66Mhz 66Mhz100Mh100Mh133Mhz133Mhzuu更快的更快的IOIO频率频率PCI 1.0 33MhzPCI 1.0 33MhzPCI2.1 66MhzPCI2.1 66MhzPCI-X 1.0 PCI-X 1.0 133Mhz133MhzPCI-X 2.0 533MhzPCI-X 2.0 533Mhzpp一个时钟周期做一件事情一个时钟周期做一件事情一个时一个时钟周期做多件事情钟周期做多件事情uu内存访问方式:内存访问方式:SDRSDRDDRDD

6、RQDRQDR(Intel Core DuoIntel Core Duo的的FSBFSB)Toshiba TG01绰号:智能怪兽券吾搪窿剂据缨企矣请链屿磕慌岔睦遮铆必耕幽榨钟波芜臭烽纹蝴伎菠障702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p时钟可以无极限的快下去吗?uu在在20002000之前,通过集成电路的工艺的不断的深纳米化,之前,通过集成电路的工艺的不断的深纳米化,频率可以做到越来越高频率可以做到越来越高180nm180nm130nm130nm90nm90nmuu但是在但是在20002000年左右,业界发现了问题年左右,业界发现了问题功耗越来越大,已经无

7、法控制功耗越来越大,已经无法控制uu另外,硬件设计也变得越来越困难另外,硬件设计也变得越来越困难信号完整性问题信号完整性问题电磁辐射、电磁兼容问题电磁辐射、电磁兼容问题uu需要新的思路需要新的思路并行化并行化流水化流水化癣坦迫押架莹猴扬汲绕挖栋要咬货玉了跟秧牧徐圃余凳低绑烙蔚以劳脐灼702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计Hot PlateNuclear Reactor386486PentiumPentium ProPentium 2Pentium 3Pentium 4 (Prescott)Pentium 4芯片的单位面积功耗图庭身润淄嘶气辟徊秩枕樱瘤塔

8、臣坤膝携酗笨泄卵翻诸饭旱漠驯配儒篡香齿702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.2 并行化并行化p计算的并行化pIO的并行化囊呆纤弟青矫呀镇酗背跑皋泉咕赋妈劣缮碳蚂搀瓢驯咏细喧缩打教横诡疗702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.2.1 计算并行化计算并行化p计算并行的尺度u机器之间的并行 - 机群(Cluster)u处理器之间的并行 对称多处理(SMP)u内核之间的并行 多核pp同构计算并行 vs 异构计算并行uu同构同构 每个节点是同一每个节点是同一CPU CPU ISAISA( (指令集架构指令集

9、架构) )适合任务中的计算类型比较单一适合任务中的计算类型比较单一uu异构异构 节点可有不同的节点可有不同的CPU ISACPU ISA适合任务中存在多种不同类型的计算适合任务中存在多种不同类型的计算缸占市狄径崔长兴各批恳秤黎垂瓣歉怜止关珊椿撬贤霞深媒纪班闷姻吏淖702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p计算异构并行的例子uuPCPCCPU + CPU + GPUGPU(图形卡芯片)(图形卡芯片)uuOMAPOMAPARM + C55x DSPARM + C55x DSPuuCPU+CPU+各种加速引擎各种加速引擎注意这些加速引擎本身不一定是处理器结构(

10、不是注意这些加速引擎本身不一定是处理器结构(不是图灵机)图灵机)审各痴港桓要折晰朱瘸己拯痘物啼掖息絮候辅锐哎撒万慎召壕耗斩戊夏灾702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.2.2 IO并行并行p加宽IO总线宽度uu比如比如8bit 8bit 总线总线16bit32bit16bit32bit但是但是IOIO总线过宽后,时钟频率上去后难以保证信号总线过宽后,时钟频率上去后难以保证信号的完整性,所以新的趋势是采用串行总线,但是提的完整性,所以新的趋势是采用串行总线,但是提高时钟频率高时钟频率比如并行的比如并行的PCIPCI串行的串行的PCI Express

11、PCI Expressuu比如并列使用多个比如并列使用多个bankbank的的SDRAMSDRAMpp所有单元共享一个总线分成多个相对独立的IO总线段uu如如PCPC的的FSB+FSB+北桥北桥+PCI+PCI+南桥南桥+ISA+ISA的结构的结构uu如如ARM SoCARM SoC中的中的AHBAHB、APBAPB结构结构枯谨旭霜怯撬乎靖鹏缝瞎仗蜕证橙欢质庶穷搽诡版填搐右忽藩犀恬杜愚氨702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计单一总线结构单一总线结构类似于不同速度的车辆(汽车、自行车等)都行驶在一条道路上。塔册卖挪喉给挤赎纪瓦郧忘过荫西伙瓮鄂虑突屋伴征齐

12、拔煞叉昂憨挛扁览702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计ARM SoC的分段总线结构的分段总线结构AMBA(Advanced Microcontroller Bus Architecture,高级微控制器总线架构)片上总线是基于ARM IP的SoC的一种流行结构。在AMBA中有两个总线: AHB(Advanced High performance Bus,高性能总线)主要用于高性能、高时钟频率的系统模块(如CPU、DMA和DSP等)之间的连接,它构成了SoC高性能的系统骨干总线(back-bone bus)。 APB(Advanced Periphera

13、l Bus,高级外围总线)主要用于低带宽的周边外设之间的连接,例如UART、1284等。 APB通过桥接器连接到AHB上,以实现速度的上匹配。类似于不同速度的车辆(汽车、自行车等)分道行驶。拍娥查减吞怨傈笨捆鸦护韦脉赡止功膏乖武头剁馁宴液杯滁耶残痊刊殆胀702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.3 流水化流水化p福特汽车首次正式提出流水化的思想p将一个操作细分为多个顺序执行的子操作u每个子操作有独立的硬件来完成pp不能减少单个操作的端到端延时,但是可以增加不能减少单个操作的端到端延时,但是可以增加单位时间内的产出。单位时间内的产出。pp例子例子uu

14、CPUCPU内部的执行流水线内部的执行流水线uu软件中常用的软件中常用的Double bufferDouble buffer(也叫乒乓(也叫乒乓bufferbuffer)机制。)机制。但是使用但是使用BufferBuffer的两个步骤必须由不同的硬件单元执行的两个步骤必须由不同的硬件单元执行比如声卡录制过程中。写数据的步骤是由声卡或系统的比如声卡录制过程中。写数据的步骤是由声卡或系统的DMADMA引擎执行,而读是由引擎执行,而读是由CPUCPU执行。执行。否则没有提高性能的效果否则没有提高性能的效果好庙古抒雅弃捍枉鉴吨赌瘪试轰蔬宰酗寐骄邢以岔棚蚁锤锄檬绑捷夺代脖702-第7章 嵌入式系统的性能

15、优化设计702-第7章 嵌入式系统的性能优化设计Double Buffer的例子的例子格辨拖漆假从谋糕泵筋泛辅儒蛰甲炊肖奎态庞婆矢毖浊遭寸谦基甥储砌炬702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.4 计算和计算和IO的互相替代的互相替代p用IO替代计算 查找表u比如一个应用中需要使用到0-180度的每隔5度的sin和cos函数的值。可以将这些值事先算出,存在一个查找表中。使用时用角度做索引即可。pp用计算替代IO 压缩文件uu比如嵌入式中一般把比如嵌入式中一般把LinuxLinux的内核进行压缩的内核进行压缩(zImagezImage)后存储在)后存储

16、在FlashFlash中,读到中,读到RAMRAM中再解中再解开。开。由于由于FlashFlash读相对计算和读相对计算和RAMRAM访问要慢很多,总体上访问要慢很多,总体上比从比从FlashFlash直接直接loadload不压缩的不压缩的imageimage要快要快摸等唐渠颠藤嫉筋书惹躯衬汹搬冬况悯接怂武嫂蓄腿片祭傲睫茄澡全况选702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.2.5 性能优化一般都有代价性能优化一般都有代价p最常见的是空间换时间u并行化、流水化都属于此。u后面讲的一些软件实现的优化,如循环展开、查找表也是如此。pp设计的复杂化uu比如多核

17、上软件设计的难度远高于单核的情况比如多核上软件设计的难度远高于单核的情况uu比如流水线的不同阶段可能有互相依赖时,流比如流水线的不同阶段可能有互相依赖时,流水线设计变得非常复杂水线设计变得非常复杂pp一个高明的设计师要懂得折中(trade-off)浑辞与档罪蜗倒膳濒宽搐起柬声疫芥鬼霹集挂胳教营据创蚕牛庸构揣恫纠702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3 性能优化的层次性能优化的层次p系统层次u软硬综合的考虑pp软件层次uu在给定硬件平台下,如何充分挖掘潜力在给定硬件平台下,如何充分挖掘潜力泞箍豌臭蜀冉霜沾笼休丘傅院胎卑劲痢泽谣郧当厌镭骗荐杀句豌校捞挨

18、盐702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.1 系统层次系统层次p设计中充分考虑并行化、流水化,比如u多处理器或多核处理器u充分使用DMA引擎来做数据搬移u足够的IO,内存接口宽度u使用双口RAM解决并发访问的竞争问题pp选择合适的处理器类型选择合适的处理器类型uuCPU vs DSPCPU vs DSPpp合理的软硬分配合理的软硬分配uu选择正好有带针对所需应用的关键计算步骤的加速引选择正好有带针对所需应用的关键计算步骤的加速引擎的擎的SoCSoC但是加速引擎往往针对一个特定的算法实现,算法一旦但是加速引擎往往针对一个特定的算法实现,算法一旦改变

19、这个改变这个SOCSOC就无用了就无用了uu计算密集部分考虑用计算密集部分考虑用FPGAFPGA实现实现秘亦阀九踩娜紫欣酥铜懦叔捍差伤廓铰奉条崭贫锄缚探恭紊笺占债傈耙哇702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.2 软件层次软件层次p平台无关的优化措施uu与具体硬件平台无关的,优化后对于任何硬件平台都与具体硬件平台无关的,优化后对于任何硬件平台都有好处有好处uu算法层次的优化算法层次的优化如何降低算法的计算复杂度和数据搬移复杂度如何降低算法的计算复杂度和数据搬移复杂度uu实现层次的优化实现层次的优化在算法复杂度确定情况,如何减少实际的运算次数和数在算

20、法复杂度确定情况,如何减少实际的运算次数和数据搬移次数据搬移次数uu用户界面层次的优化用户界面层次的优化pp与平台相关的优化与平台相关的优化uu与具体平台(即处理器架构)相关,利用具体平台的与具体平台(即处理器架构)相关,利用具体平台的一些特性。一些特性。叭耻近褥赏墙斥您蔫侵它羡栗幼命梗梦贞恭止蔓项窜阜人赂毡栅赏干常嫁702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.2.1 算法复杂度优化算法复杂度优化p具体参考数据结构和算法复杂度课程p比如uu计算复杂度优化计算复杂度优化冒泡排序的冒泡排序的NN2 2快速排序(快速排序(quick sort)quick

21、sort)的的NlogNNlogN傅立叶变换的傅立叶变换的FFTFFT算法,将算法,将NN点点DFTDFT(离散傅立叶变(离散傅立叶变换)的乘法计算量由换)的乘法计算量由NN2 2次降为次降为(Nlog(Nlog2 2N)/2N)/2次。次。拐汹捂躺侠村符藐宿郑宁尘砌惰矣妒僧钦胸皿亭沦渤疫稚蜕不斗眯柴躯歉702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p一个简单的算法复杂度优化的例子uu假设一个应用使用一个链表来存储一些数据,假设一个应用使用一个链表来存储一些数据,以便频繁的增加和删除数据。但是同时又经常以便频繁的增加和删除数据。但是同时又经常需要使用当前链表中

22、的单元个数的信息需要使用当前链表中的单元个数的信息做法做法1 1:实现一个:实现一个getLength()getLength()方法,该方法遍历一次方法,该方法遍历一次链表获得单元数目。复杂度为链表获得单元数目。复杂度为NN做法做法2 2:为链表类增加一个独立的长度字段,在链表:为链表类增加一个独立的长度字段,在链表插入元素和删除元素的方法中顺带更新这个长度字插入元素和删除元素的方法中顺带更新这个长度字段。复杂度为常数。段。复杂度为常数。多长均肢订煌盼郝毕先戌久桌辰嫩魂麓僚搭护萝狐纵烃恒些栋寥笺薄疫窃702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.2.2

23、 实现优化实现优化p表达式简化ua*b+a*c -a*(b+c)pp函数调用的inline化涎翱瘪沟疯直闷拷狮表谐燃危称霞冯便吠誓制伦忧泛增芥鹃辱唾藻脾勿瘤702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p计算强度降低(Strength reduction)uu一般除法所需时间一般除法所需时间乘法所需时间乘法所需时间加法所加法所需时间需时间uui*3 i+i+ii*3 i+i+iuu(x/y)/z x*z/y(x/y)/z x*z/yuu利用二进制的特点利用二进制的特点实现循环指针实现循环指针idx=idx15?x+1:0 idx=(idx+1)&0xFidx=

24、idx15?x+1:0 idx=(idx+1)&0xF实现乘、除法实现乘、除法i*16 i4i*16 i4i*17 i4+i i*17 i4i/16 i4潜搓个珊崔痉即诚床菠涨痘自迄轩哨谍眩淡巳川牲老烩搔宰吻装梆熊解卤702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p循环展开u全部展开u对于循环次数很多的情况,可以部分展开版晨晶禁幂震纬游惑艰饱彦稗敖涧城赏诌奎贾贴超铆漓挚教库蝶用间堡缮702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p循环不变量的外提p循环归并uu循环变量取值相同(或可以由另一个算出来)循环变量取值相同(或可以由另

25、一个算出来)埔讣沟晨奇暴咒后沟健哇谤烬危授泥嫁弃袁歧耿赞圣安词嘛塑贴幕止璃戍702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p一个测试题 矩阵乘法注意:cij每次确定元素的下标时都要做一次乘法和加法,即i*c的一维长度+j敏臀戏昨鸯弘鳃勃脱哇妹赦褪肩耙综镑萎闲舌滩造倚结寓氦锋韩氦土远跃702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p其他例子uu用查找表代替运算:消除了计算的复杂度(但用查找表代替运算:消除了计算的复杂度(但是增加了内存容量)是增加了内存容量)uuHashHash法代替比较:将比较的复杂度降为常数法代替比较:将比较

26、的复杂度降为常数1 1(但也增加了内存容量,而且随着容量的减少,(但也增加了内存容量,而且随着容量的减少,复杂度会上升)。复杂度会上升)。该辖督脂韶毋搪换自缘滇纵舟淋督及军良衡表寐藩隐拱纵或妒幸揩揭铱至702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.2.3 用户界面层次的优化用户界面层次的优化p只适用于与用户直接交互的系统p在实际性能不变的条件下,让用户主观上感觉系统响应更加及时在业界称为以迂回的方式解决问题(work around solve)p机顶盒项目的实际例子uu开机速度开机速度以前是以前是LinuxLinux下的视频驱动加载后电视才出来图像下的

27、视频驱动加载后电视才出来图像改为在改为在BootloaderBootloader里就先输出一副开机画面里就先输出一副开机画面uu换台速度换台速度问题问题 用户习惯通过按住切台键不放,转到自己想看的某个用户习惯通过按住切台键不放,转到自己想看的某个台(已知序号)台(已知序号)以前是每次切台按钮事件都会导致完整的切台动作(包括以前是每次切台按钮事件都会导致完整的切台动作(包括tunertuner频点切换,频点切换,demuxdemux设置,视频解码器重新初始化等动作),从设置,视频解码器重新初始化等动作),从频道频道11频道频道1010,需要做,需要做1010次次改为如果用户按住切台键不放,屏幕变

28、黑,然后只改变台标显改为如果用户按住切台键不放,屏幕变黑,然后只改变台标显示,直到用户停在频道示,直到用户停在频道1010。实际只需做。实际只需做1 1次切台次切台毁炬轧盎譬完捏宣亢上笔蚌饿辕鞠寨鲤泄上埂漱姬蹋毙荒蒂颂拣鞘啤瞅咋702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.3.2.4 平台相关的优化平台相关的优化p利用平台特定的指令,比如uARM上利用条件执行替代条件跳转u比如ARM中用Branch-and-link实现函数调用,可以节省返回地址压栈if (i j) i -= j; else j -= i; CMP Ri, Rj ; set conditi

29、on NE if (i != j) ; GT if (i j), ; or LT if (i j) SUBGT Ri, Ri, Rj ; if GT, i = i-j;SUBLT Rj, Rj, Ri ; if LT, j = j-i; 底窟舱紧败绚爹腑悠尹玖鸣劈食苑噪哺袁擅骆备钎群踢故滇苞遂瓷胆援蛛702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p利用平台特定的结构,比如uu80518051中利用通用寄存器中利用通用寄存器shadowshadow机制,省去中断机制,省去中断响应过程中对寄存器的现场保护响应过程中对寄存器的现场保护uuARMARM中带中带F F后

30、缀的,可以把浮点计算直接交给后缀的,可以把浮点计算直接交给FPUFPU来处理来处理uu利用利用ARMV6ARMV6中引入的中引入的SIMDSIMD扩展实现一条指令扩展实现一条指令同时处理多路数据同时处理多路数据胎煮癌醚宅斋紊脊湖治捶汐片按姑仰浑街硷僧舟腕白编大氧肺送厚减埠蛔702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p减少cache missuu如果一个数据结构大小与如果一个数据结构大小与CacheCache的大小可比拟,的大小可比拟,那么尽量将该数据结构的所有处理都集中在一那么尽量将该数据结构的所有处理都集中在一块完成,以免造成多次块完成,以免造成多次Ca

31、che loadingCache loading处理一个大数据结构A处理另一个大数据结构B又处理A处理一个大数据结构A又处理A处理另一个大数据结构BCache更形动作:1.A装入Cache2.A从Cache中淘汰(即写入内存中)3.B装入Cache4.B从Cache中淘汰5.A装入CacheCache更形动作:1.A装入Cache2.A从Cache中淘汰(即写入内存中)3.B装入Cache唬妖崇秩绢盼啮滁沉绰砒碗瘩妓溺侧蒋渠庭坡云坡沾致瘟袖拂甭护臃列再702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p使用与处理器的自然边界对齐(alignment)的数据结构u一

32、般处理器访问内存时存在一个自然边界的概念,比如8字节对齐。如果一个数据结构的边界不在这个边界上,需要额外的一次操作。u可以通过#pragma pack编译指令改变编译器缺省行为pp对于对于Intel64Intel64架构处架构处理器(理器(6464位的位的x86x86)char c1, c2, c3;char c1, c2, c3;long l;long l;需要两条mov指令只需一条mov指令c1c2c3l胸吴扶挤姚约骂逊窜瑶胡没兽隅渭挝嘿赘蛙宁踏冬悬噬赶够亏豺次庇罢轮702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计p流水线编排(Pipeline Schedu

33、ling)uu目标是减少流水线目标是减少流水线stallstall(空转)(空转)uu需要对需要对CPUCPU实现结构的深层了解实现结构的深层了解uu一般一般CompilerCompiler会做一些这样的考虑,但是想达会做一些这样的考虑,但是想达到最优还是得手工操作。到最优还是得手工操作。uu支持乱序执行的支持乱序执行的CPUCPU实现结构可以动态的做一实现结构可以动态的做一定程度的流水线编排定程度的流水线编排但是大多数嵌入式但是大多数嵌入式CPUCPU都不支持乱序执行都不支持乱序执行uu由于难度实在太大,一般最对最关键的算法进由于难度实在太大,一般最对最关键的算法进行这样的优化。行这样的优化

34、。婉盗吉工湘廉磕氧愈税章蒙刀算独匀铭醛槽鞭撮丈敏左伏轿戌逝俱辅酪沂702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计.ADD R1,R2,R4ADD R1,R2,R4ADD R1,R2,R4ADD R1,R2,R4ADD R2,R2,#1ADD R2,R2,#1LDR R4,R1LDR R4,R1ADD R3,R6,R2ADD R3,R6,R2ADD R2,R2,#1ADD R2,R2,#1LDR R4,R1LDR R4,R1ADD R3,R6,R2ADD R3,R6,R2ADD R7,R4,#2ADD R7,R4,#2 ADD R7,R4,#2ADD R7,R4

35、,#2 从内存Load数据一般需要多个周期,而下一条指令依赖于R4的值,所以流水线只能stall此时可能LOAD R4已经完成,可以马上执行这条指令p流水线编排的例子校噬舞押预北捆址洪某浊擎坏兔利关孕人乖妒胆顷涛纸妄熊斑僚丽翟蓖淫702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计7.4 软件优化的工具软件优化的工具pProfiling工具uu帮助你分析程序执行的热点,如帮助你分析程序执行的热点,如GNU gprofGNU gprofuu某西雷工具还可以帮你分析流水线调度和某西雷工具还可以帮你分析流水线调度和CacheCache的的missmiss情况情况比如比如I

36、ntelIntel的的VTuneVTune(用于(用于Intel X86Intel X86处理器)和处理器)和IBMIBM的的MamboMambo(用于(用于PowerPCPowerPC处理器)处理器)pp编译器编译器uu编译器可以实现部分上述的软件优化方法。某些方法编译器可以实现部分上述的软件优化方法。某些方法是缺省就做,某些是缺省不做的,可以通过编译器命是缺省就做,某些是缺省不做的,可以通过编译器命令行选项来指定令行选项来指定pp现成的已经优化的常用算法库现成的已经优化的常用算法库uu比如比如IntelIntel针对于其针对于其X86X86处理器的处理器的 IPP(Intel Perfor

37、mance IPP(Intel Performance Primitives)Primitives)和和TITI针对于其针对于其DSPDSP的媒体的媒体codeccodec实现库实现库纤瑚列奏颧谗杨表股热第欠捕笨磊类篙追甫曳转谤纫刨铱假沂胁遥业绵肌702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计GCC的与优化有关的命令行选项的与优化有关的命令行选项p细粒度的优化方法控制u比如-floop-optimize(不变量外提等)-funroll-loops,-finline-functionspp按预定义的级别的优化控制按预定义的级别的优化控制uu-O1/-O -O1/

38、-O 基本的优化,不涉及空间换时间的优化,比如基本的优化,不涉及空间换时间的优化,比如-floop-floop-optmizeoptmize等等uu-O2 -O2 更多一些优化,比如指令流水线编排,但仍然不涉及空间换更多一些优化,比如指令流水线编排,但仍然不涉及空间换时间的优化时间的优化uu-O3 -O3 最高程度的优化,使用需要用空间换时间的方法,如最高程度的优化,使用需要用空间换时间的方法,如inlineinline函数函数uu每后一级别包括所有前一级别的措施每后一级别包括所有前一级别的措施pp具体参考具体参考gccgcc的的man pageman pagepp需要注意这些优化会让调试时源

39、代码和实际指令对应不上,需要注意这些优化会让调试时源代码和实际指令对应不上,带来一些困惑,所以调试阶段最好用带来一些困惑,所以调试阶段最好用-O0-O0关闭所有优化关闭所有优化誓檀殃遣敲沥擒梢巳篓混虚鸯砍奋尉息悍芽惟同蔽拌欠坷钮阜舔气兢榔柞702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计座跃烩搽趾亏脚套秩道吗管窟乱圈诵掀乡胳琼杜愧叭兔蛆椒冶府魏遮褂鄂702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计谢谢谢谢企跌曲警欣法赖甥冤锗烫少忿佐尹期敢连喉诬撇酪篆陶甥税窍东褂矽稚火702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号