欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:4736475       资源大小:415KB        全文页数:39页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第7章 嵌入式系统的性能优化设计,瞒痛均骚降镍薄泽跃婶盖端帅惠戚寡板痛协玖募酬维打牡放慌涧位募省尼702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,内容,性能优化概述性能优化的方法论(Methodology)性能优化的层次软件优化的工具,沃音闲双冀从鲍趣丈祸黄颁究渔差十灾紊猴檄贺鸭枯搏浙坝的泼暖潘鳃蚕702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.1 性能优化概述,无论对通用桌面计算机系统,还是对在嵌入式系统而言,优化(Optimization)一直是应用程序追求的目标之一。由于嵌入式系统是一个资源受限的系统,它对程序的运行的空间和时间要求比桌面系统更为苛刻,因此,应用程序的优化对嵌入式系统来说尤显得必要和紧迫。根据优化的侧重点不同,嵌入式系统的优化大致分为:运行速度优化、代码尺寸优化和低功耗优化等三个方面。本章介绍的性能优化是指运行速度优化,而低功耗优化将在下一章中重点介绍。,痊怪酒寺拭讲瘟围府旭充痴记缩皱死川音牛誉杀狂右炒都押钱阳编胡天厉702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.1 性能优化概述,性能优化为什么对于嵌入式系统尤其重要?价格敏感类系统希望使用尽可能便宜的硬件但是又要能提供满足应用需求的性能如各种数码产品性能critical类系统价格不敏感应用的效果取决于能达到的性能比如CT,如果计算够快,可以做实时的3D CT支持下的外科手术,甥赏颈烯拾赦棋间宏辛鞋耙捌荧豢木帕噬白午征狱万蓄杨奉垛搜知满歼峡702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2 性能优化的方法论(Methodology),高速化并行化流水化计算和IO的互相替代性能优化一般都有代价,删洞蝉酸唉吏工袭铅煌碘讹虱瞒错潞凑缴藤硒葱歇浑壶伎靖靠氟悼霹陵瞥702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.1 高速化,提高时钟频率更快的CPU主频2009年2月,东芝发布了1Ghz主频的TG01智能手机Qualcomm实现的基于ARM内核的处理器更快的RAM频率SDRAM主频 66Mhz100Mh133Mhz更快的IO频率PCI 1.0 33MhzPCI2.1 66MhzPCI-X 1.0 133MhzPCI-X 2.0 533Mhz一个时钟周期做一件事情一个时钟周期做多件事情内存访问方式:SDRDDRQDR(Intel Core Duo的FSB),Toshiba TG01绰号:智能怪兽,券吾搪窿剂据缨企矣请链屿磕慌岔睦遮铆必耕幽榨钟波芜臭烽纹蝴伎菠障702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,时钟可以无极限的快下去吗?在2000之前,通过集成电路的工艺的不断的深纳米化,频率可以做到越来越高180nm130nm90nm但是在2000年左右,业界发现了问题功耗越来越大,已经无法控制另外,硬件设计也变得越来越困难信号完整性问题电磁辐射、电磁兼容问题需要新的思路并行化流水化,癣坦迫押架莹猴扬汲绕挖栋要咬货玉了跟秧牧徐圃余凳低绑烙蔚以劳脐灼702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,芯片的单位面积功耗图,庭身润淄嘶气辟徊秩枕樱瘤塔臣坤膝携酗笨泄卵翻诸饭旱漠驯配儒篡香齿702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.2 并行化,计算的并行化IO的并行化,囊呆纤弟青矫呀镇酗背跑皋泉咕赋妈劣缮碳蚂搀瓢驯咏细喧缩打教横诡疗702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.2.1 计算并行化,计算并行的尺度机器之间的并行-机群(Cluster)处理器之间的并行 对称多处理(SMP)内核之间的并行 多核同构计算并行 vs 异构计算并行同构 每个节点是同一CPU ISA(指令集架构)适合任务中的计算类型比较单一异构 节点可有不同的CPU ISA适合任务中存在多种不同类型的计算,缸占市狄径崔长兴各批恳秤黎垂瓣歉怜止关珊椿撬贤霞深媒纪班闷姻吏淖702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,计算异构并行的例子PCCPU+GPU(图形卡芯片)OMAPARM+C55x DSPCPU+各种加速引擎注意这些加速引擎本身不一定是处理器结构(不是图灵机),审各痴港桓要折晰朱瘸己拯痘物啼掖息絮候辅锐哎撒万慎召壕耗斩戊夏灾702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.2.2 IO并行,加宽IO总线宽度比如8bit 总线16bit32bit但是IO总线过宽后,时钟频率上去后难以保证信号的完整性,所以新的趋势是采用串行总线,但是提高时钟频率比如并行的PCI串行的PCI Express比如并列使用多个bank的SDRAM所有单元共享一个总线分成多个相对独立的IO总线段如PC的FSB+北桥+PCI+南桥+ISA的结构如ARM SoC中的AHB、APB结构,枯谨旭霜怯撬乎靖鹏缝瞎仗蜕证橙欢质庶穷搽诡版填搐右忽藩犀恬杜愚氨702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,单一总线结构,类似于不同速度的车辆(汽车、自行车等)都行驶在一条道路上。,塔册卖挪喉给挤赎纪瓦郧忘过荫西伙瓮鄂虑突屋伴征齐拔煞叉昂憨挛扁览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 Peripheral Bus,高级外围总线)主要用于低带宽的周边外设之间的连接,例如UART、1284等。APB通过桥接器连接到AHB上,以实现速度的上匹配。,类似于不同速度的车辆(汽车、自行车等)分道行驶。,拍娥查减吞怨傈笨捆鸦护韦脉赡止功膏乖武头剁馁宴液杯滁耶残痊刊殆胀702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.3 流水化,福特汽车首次正式提出流水化的思想将一个操作细分为多个顺序执行的子操作每个子操作有独立的硬件来完成不能减少单个操作的端到端延时,但是可以增加单位时间内的产出。例子CPU内部的执行流水线软件中常用的Double buffer(也叫乒乓buffer)机制。但是使用Buffer的两个步骤必须由不同的硬件单元执行比如声卡录制过程中。写数据的步骤是由声卡或系统的DMA引擎执行,而读是由CPU执行。否则没有提高性能的效果,好庙古抒雅弃捍枉鉴吨赌瘪试轰蔬宰酗寐骄邢以岔棚蚁锤锄檬绑捷夺代脖702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,Double Buffer的例子,格辨拖漆假从谋糕泵筋泛辅儒蛰甲炊肖奎态庞婆矢毖浊遭寸谦基甥储砌炬702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.4 计算和IO的互相替代,用IO替代计算 查找表比如一个应用中需要使用到0-180度的每隔5度的sin和cos函数的值。可以将这些值事先算出,存在一个查找表中。使用时用角度做索引即可。用计算替代IO 压缩文件比如嵌入式中一般把Linux的内核进行压缩(zImage)后存储在Flash中,读到RAM中再解开。由于Flash读相对计算和RAM访问要慢很多,总体上比从Flash直接load不压缩的image要快,摸等唐渠颠藤嫉筋书惹躯衬汹搬冬况悯接怂武嫂蓄腿片祭傲睫茄澡全况选702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.2.5 性能优化一般都有代价,最常见的是空间换时间并行化、流水化都属于此。后面讲的一些软件实现的优化,如循环展开、查找表也是如此。设计的复杂化比如多核上软件设计的难度远高于单核的情况比如流水线的不同阶段可能有互相依赖时,流水线设计变得非常复杂一个高明的设计师要懂得折中(trade-off),浑辞与档罪蜗倒膳濒宽搐起柬声疫芥鬼霹集挂胳教营据创蚕牛庸构揣恫纠702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3 性能优化的层次,系统层次软硬综合的考虑软件层次在给定硬件平台下,如何充分挖掘潜力,泞箍豌臭蜀冉霜沾笼休丘傅院胎卑劲痢泽谣郧当厌镭骗荐杀句豌校捞挨盐702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.1 系统层次,设计中充分考虑并行化、流水化,比如多处理器或多核处理器充分使用DMA引擎来做数据搬移足够的IO,内存接口宽度使用双口RAM解决并发访问的竞争问题选择合适的处理器类型CPU vs DSP合理的软硬分配选择正好有带针对所需应用的关键计算步骤的加速引擎的SoC但是加速引擎往往针对一个特定的算法实现,算法一旦改变这个SOC就无用了计算密集部分考虑用FPGA实现,秘亦阀九踩娜紫欣酥铜懦叔捍差伤廓铰奉条崭贫锄缚探恭紊笺占债傈耙哇702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.2 软件层次,平台无关的优化措施与具体硬件平台无关的,优化后对于任何硬件平台都有好处算法层次的优化如何降低算法的计算复杂度和数据搬移复杂度实现层次的优化在算法复杂度确定情况,如何减少实际的运算次数和数据搬移次数用户界面层次的优化与平台相关的优化与具体平台(即处理器架构)相关,利用具体平台的一些特性。,叭耻近褥赏墙斥您蔫侵它羡栗幼命梗梦贞恭止蔓项窜阜人赂毡栅赏干常嫁702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.2.1 算法复杂度优化,具体参考数据结构和算法复杂度课程比如计算复杂度优化冒泡排序的N2快速排序(quick sort)的NlogN傅立叶变换的FFT算法,将N点DFT(离散傅立叶变换)的乘法计算量由N2次降为(Nlog2N)/2次。,拐汹捂躺侠村符藐宿郑宁尘砌惰矣妒僧钦胸皿亭沦渤疫稚蜕不斗眯柴躯歉702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,一个简单的算法复杂度优化的例子假设一个应用使用一个链表来存储一些数据,以便频繁的增加和删除数据。但是同时又经常需要使用当前链表中的单元个数的信息做法1:实现一个getLength()方法,该方法遍历一次链表获得单元数目。复杂度为N做法2:为链表类增加一个独立的长度字段,在链表插入元素和删除元素的方法中顺带更新这个长度字段。复杂度为常数。,多长均肢订煌盼郝毕先戌久桌辰嫩魂麓僚搭护萝狐纵烃恒些栋寥笺薄疫窃702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.2.2 实现优化,表达式简化a*b+a*c-a*(b+c)函数调用的inline化,涎翱瘪沟疯直闷拷狮表谐燃危称霞冯便吠誓制伦忧泛增芥鹃辱唾藻脾勿瘤702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,计算强度降低(Strength reduction)一般除法所需时间乘法所需时间加法所需时间i*3 i+i+i(x/y)/z x*z/y利用二进制的特点实现循环指针idx=idx4,潜搓个珊崔痉即诚床菠涨痘自迄轩哨谍眩淡巳川牲老烩搔宰吻装梆熊解卤702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,循环展开全部展开,对于循环次数很多的情况,可以部分展开,版晨晶禁幂震纬游惑艰饱彦稗敖涧城赏诌奎贾贴超铆漓挚教库蝶用间堡缮702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,循环不变量的外提,循环归并循环变量取值相同(或可以由另一个算出来),埔讣沟晨奇暴咒后沟健哇谤烬危授泥嫁弃袁歧耿赞圣安词嘛塑贴幕止璃戍702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,一个测试题 矩阵乘法,注意:cij每次确定元素的下标时都要做一次乘法和加法,即i*c的一维长度+j,敏臀戏昨鸯弘鳃勃脱哇妹赦褪肩耙综镑萎闲舌滩造倚结寓氦锋韩氦土远跃702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,其他例子用查找表代替运算:消除了计算的复杂度(但是增加了内存容量)Hash法代替比较:将比较的复杂度降为常数1(但也增加了内存容量,而且随着容量的减少,复杂度会上升)。,该辖督脂韶毋搪换自缘滇纵舟淋督及军良衡表寐藩隐拱纵或妒幸揩揭铱至702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.2.3 用户界面层次的优化,只适用于与用户直接交互的系统在实际性能不变的条件下,让用户主观上感觉系统响应更加及时在业界称为以迂回的方式解决问题(work around solve)机顶盒项目的实际例子开机速度以前是Linux下的视频驱动加载后电视才出来图像改为在Bootloader里就先输出一副开机画面换台速度问题 用户习惯通过按住切台键不放,转到自己想看的某个台(已知序号)以前是每次切台按钮事件都会导致完整的切台动作(包括tuner频点切换,demux设置,视频解码器重新初始化等动作),从频道1频道10,需要做10次改为如果用户按住切台键不放,屏幕变黑,然后只改变台标显示,直到用户停在频道10。实际只需做1次切台,毁炬轧盎譬完捏宣亢上笔蚌饿辕鞠寨鲤泄上埂漱姬蹋毙荒蒂颂拣鞘啤瞅咋702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.3.2.4 平台相关的优化,利用平台特定的指令,比如ARM上利用条件执行替代条件跳转比如ARM中用Branch-and-link实现函数调用,可以节省返回地址压栈,if(i j)i-=j;else j-=i;,CMP Ri,Rj;set condition 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章 嵌入式系统的性能优化设计,利用平台特定的结构,比如8051中利用通用寄存器shadow机制,省去中断响应过程中对寄存器的现场保护ARM中带F后缀的,可以把浮点计算直接交给FPU来处理利用ARMV6中引入的SIMD扩展实现一条指令同时处理多路数据,胎煮癌醚宅斋紊脊湖治捶汐片按姑仰浑街硷僧舟腕白编大氧肺送厚减埠蛔702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,减少cache miss如果一个数据结构大小与Cache的大小可比拟,那么尽量将该数据结构的所有处理都集中在一块完成,以免造成多次Cache loading,处理一个大数据结构A处理另一个大数据结构B又处理A,处理一个大数据结构A又处理A处理另一个大数据结构B,Cache更形动作:A装入CacheA从Cache中淘汰(即写入内存中)B装入CacheB从Cache中淘汰A装入Cache,Cache更形动作:A装入CacheA从Cache中淘汰(即写入内存中)B装入Cache,唬妖崇秩绢盼啮滁沉绰砒碗瘩妓溺侧蒋渠庭坡云坡沾致瘟袖拂甭护臃列再702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,使用与处理器的自然边界对齐(alignment)的数据结构一般处理器访问内存时存在一个自然边界的概念,比如8字节对齐。如果一个数据结构的边界不在这个边界上,需要额外的一次操作。可以通过#pragma pack编译指令改变编译器缺省行为对于Intel64架构处理器(64位的x86)char c1,c2,c3;long l;,需要两条mov指令,只需一条mov指令,c3,l,胸吴扶挤姚约骂逊窜瑶胡没兽隅渭挝嘿赘蛙宁踏冬悬噬赶够亏豺次庇罢轮702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,流水线编排(Pipeline Scheduling)目标是减少流水线stall(空转)需要对CPU实现结构的深层了解一般Compiler会做一些这样的考虑,但是想达到最优还是得手工操作。支持乱序执行的CPU实现结构可以动态的做一定程度的流水线编排但是大多数嵌入式CPU都不支持乱序执行由于难度实在太大,一般最对最关键的算法进行这样的优化。,婉盗吉工湘廉磕氧愈税章蒙刀算独匀铭醛槽鞭撮丈敏左伏轿戌逝俱辅酪沂702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,.ADD R1,R2,R4ADD R1,R2,R4ADD R2,R2,#1LDR R4,R1ADD R3,R6,R2ADD R2,R2,#1LDR R4,R1ADD R3,R6,R2ADD R7,R4,#2 ADD R7,R4,#2,从内存Load数据一般需要多个周期,而下一条指令依赖于R4的值,所以流水线只能stall,此时可能LOAD R4已经完成,可以马上执行这条指令,流水线编排的例子,校噬舞押预北捆址洪某浊擎坏兔利关孕人乖妒胆顷涛纸妄熊斑僚丽翟蓖淫702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,7.4 软件优化的工具,Profiling工具帮助你分析程序执行的热点,如GNU gprof某西雷工具还可以帮你分析流水线调度和Cache的miss情况比如Intel的VTune(用于Intel X86处理器)和IBM的Mambo(用于PowerPC处理器)编译器编译器可以实现部分上述的软件优化方法。某些方法是缺省就做,某些是缺省不做的,可以通过编译器命令行选项来指定现成的已经优化的常用算法库比如Intel针对于其X86处理器的 IPP(Intel Performance Primitives)和TI针对于其DSP的媒体codec实现库,纤瑚列奏颧谗杨表股热第欠捕笨磊类篙追甫曳转谤纫刨铱假沂胁遥业绵肌702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,GCC的与优化有关的命令行选项,细粒度的优化方法控制比如-floop-optimize(不变量外提等)-funroll-loops,-finline-functions按预定义的级别的优化控制-O1/-O 基本的优化,不涉及空间换时间的优化,比如-floop-optmize等-O2 更多一些优化,比如指令流水线编排,但仍然不涉及空间换时间的优化-O3 最高程度的优化,使用需要用空间换时间的方法,如inline函数每后一级别包括所有前一级别的措施具体参考gcc的man page需要注意这些优化会让调试时源代码和实际指令对应不上,带来一些困惑,所以调试阶段最好用-O0关闭所有优化,誓檀殃遣敲沥擒梢巳篓混虚鸯砍奋尉息悍芽惟同蔽拌欠坷钮阜舔气兢榔柞702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,谢谢,企跌曲警欣法赖甥冤锗烫少忿佐尹期敢连喉诬撇酪篆陶甥税窍东褂矽稚火702-第7章 嵌入式系统的性能优化设计702-第7章 嵌入式系统的性能优化设计,

    注意事项

    本文(702第7章嵌入式系统的性能优化设计.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开