- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 嵌入式系统的性能优化设计;内容;7.1 性能优化概述;7.1 性能优化概述;7.2 性能优化的方法论(Methodology);7.2.1 高速化;时钟可以无极限的快下去吗?
在2000之前,通过集成电路的工艺的不断的深纳米化,频率可以做到越来越高
180nm→130nm→90nm
但是在2000年左右,业界发现了问题
功耗越来越大,已经无法控制
另外,硬件设计也变得越来越困难
信号完整性问题
电磁辐射、电磁兼容问题
需要新的思路
并行化
流水化;Hot Plate;7.2.2 并行化;7.2.2.1 计算并行化;计算异构并行的例子
PC
CPU + GPU(图形卡芯片)
OMAP
ARM + C55x DSP
CPU+各种加速引擎
注意这些加速引擎本身不一定是处理器结构(不是图灵机);7.2.2.2 IO并行;单一总线结构;ARM SoC的分段总线结构;7.2.3 流水化;Double Buffer的例子;7.2.4 计算和IO的互相替代;7.2.5 性能优化一般都有代价;7.3 性能优化的层次;7.3.1 系统层次;7.3.2 软件层次;7.3.2.1 算法复杂度优化;一个简单的算法复杂度优化的例子
假设一个应用使用一个链表来存储一些数据,以便频繁的增加和删除数据。但是同时又经常需要使用当前链表中的单元个数的信息
做法1:实现一个getLength()方法,该方法遍历一次链表获得单元数目。复杂度为N
做法2:为链表类增加一个独立的长度字段,在链表插入元素和删除元素的方法中顺带更新这个长度字段。复杂度为常数。;7.3.2.2 实现优化;计算强度降低(Strength reduction)
一般除法所需时间乘法所需时间加法所需时间
i*3 → i+i+i
(x/y)/z → x*z/y
利用二进制的特点
实现循环指针
idx=idx15?x+1:0 → idx=(idx+1)0xF
实现乘、除法
i*16 → i4
i*17 → i4+i – 一般来说后者要快,但不一定
i/16 → i4;循环展开
全部展开
;循环不变量的外提;一个测试题 – 矩阵乘法;其他例子
用查找表代替运算:消除了计算的复杂度(但是增加了内存容量)
Hash法代替比较:将比较的复杂度降为常数1(但也增加了内存容量,而且随着容量的减少,复杂度会上升)。
;7.3.2.3 用户界面层次的优化;7.3.2.4 平台相关的优化;利用平台特定的结构,比如
8051中利用通用寄存器shadow机制,省去中断响应过程中对寄存器的现场保护
ARM中带F后缀的,可以把浮点计算直接交给FPU来处理
利用ARMV6中引入的SIMD扩展实现一条指令同时处理多路数据;减少cache miss
如果一个数据结构大小与Cache的大小可比拟,那么尽量将该数据结构的所有处理都集中在一块完成,以免造成多次Cache loading;使用与处理器的自然边界对齐(alignment)的数据结构
一般处理器访问内存时存在一个自然边界的概念,比如8字节对齐。如果一个数据结构的边界不在这个边界上,需要额外的一次操作。
可以通过#pragma pack编译指令改变编译器缺省行为
对于Intel64架构处理器(64位的x86)
char c1, c2, c3;
long l;;流水线编排(Pipeline Scheduling)
目标是减少流水线stall(空转)
需要对CPU实现结构的深层了解
一般Compiler会做一些这样的考虑,但是想达到最优还是得手工操作。
支持乱序执行的CPU实现结构可以动态的做一定程度的流水线编排
但是大多数嵌入式CPU都不支持乱序执行
由于难度实在太大,一般最对最关键的算法进行这样的优化。;... ...
ADD R1,R2,R4 ADD R1,R2,R4
ADD R2,R2,#1 LDR R4,[R1]
ADD R3,R6,R2 ADD R2,R2,#1
LDR R4,[R1] ADD R3,R6,R2
ADD R7,R4,#2 ADD R7,R4,#2
;7.4 软件优化的工具;GCC的与优化有关的命令行选项;谢谢
您可能关注的文档
最近下载
- 仁爱版初中英语九年级上册全册教案.pdf VIP
- 新建热网首站项目土建施工和设备安装工程技术方案.pdf VIP
- 故障码详解.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 导弹的诞生和发展教学课件PPT.ppt
- 发电厂和变电站工作票填写规范培训教案详解.ppt VIP
- 注册土木工程师(水土保持方向)案例题整理.docx VIP
- 系统架构设计:构建高可用、可扩展的IT系统培训课件.pptx VIP
- 河堤开挖出水池出水箱涵穿堤管道施工方案样本.doc VIP
- 人教版(PEP)新教材小学一年级英语上册Unit 2My first class 复习课件.pptx
原创力文档


文档评论(0)