




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
系统第十二讲优化航空航天大学的要求功能性要求:满足系统所要求的功能;时限性要求:满足系统的实时性要求;存贮器要求:适应系统内存总量要求;功耗要求:满足系统能耗的要求;编程语言的选择高级语言:C、C++、JAVA、Ada等;汇编语言:硬件体系结构相关;程序的编译执行过程高级编程语言汇编语言编译器汇编器目标代码器可执行的二进制代码目标机C编译环境C交叉编译环境一般都包括编译器、汇编器和链接器。汇编器的任务是将符号级的汇编语言翻译成称为目标代码的指令位级表示;
器是用来将不同的模块(编译或汇编过的文件)链接成目标文件;则允许将代码和数据放置在目标处理器的指定内存空间汇编程序汇编完成汇编语言到二进制代码的转换;标记处理方法:第一次扫描代码以决定每个标记的地址;第二次用第一次中的标记值汇编指令,产生二进制代码;符号表ADD
r0,r1,r2Label1 ADD
r3,r4,r5CMPr0,r3Label2 SUB
r5,r6,r7assemblycodeLabel1
0x8Label2
0x10symbol
table编译过程高级编程语言语法分析、生成符号表和语义分析独立于机器的优化指令级优化和代码生成汇编代码ARM开发环境包含的C/C++编译器编译=翻译+优化编译结合了翻译和优化两个环节翻译是将高级语言翻译为低级指令形式(或汇编语言形式)优化一方面产生更好的指令顺序,另一方面从整体上考虑程序效率编译过程中,高级语言被分析折分成语句和表达式;编译技术——语句翻译a*b+
5*(c-d)expression*-*+DFGabc
d51
*算术表达式的代码翻译ADR
r4,aMOV
r1,[r4]ADR
r4,bMOV
r2,[r4]MUL
r3,r1,r2DFG2
-3
*4
+abc
d5ADR
r4,cMOV
r1,[r4]ADR
r4,dMOV
r5,[r4]SUB
r6,r4,r5MUL
r7,r6,#5ADD
r8,r7,r3code控制代码的产生if
(a+b
>
0)x
=
5;elsex
=
7;a+b>0x=5x=7321控制代码的翻译ADR
r5,aLDR
r1,[r5]ADR
r5,bLDR
r2,bADD
r3,r1,r2BLE
label3a+b>0x=5x=7LDR
r3,#5ADR
r5,xSTR
r3,[r5]Bstmtentlabel3
LDR
r3,#7ADR
r5,xSTR
r3,[r5]stmtent
...过程过程一般指不返回值的结构;要求代码:调用并返回;传递参数和结果.参数和结果是在堆栈中传递的.带有几个参数的过程可以使用寄存器.过程堆栈proc1proc25growthproc1(int
a)
{proc2(5);}SPstack
pointerFPframe
pointeraccessed
relative
to
SP编译技术——ARM过程调用标准(APCS)APCS,ARM过程调用标准(ARM
Procedure
Call
Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自
C、
Pascal、也可以是用汇编语言写成的。APCS定义了:r0-r3
pass
parameters
into
procedure.
Extra
parametersare
put
on
stack
frame.r0
holds
return
value.r4-r7
hold
register
values.r11
is
frame
pointer,
r13
is
stack
pointer.编译技术——数据结构编译程序必须对相关数据结构的
翻译成对原始
器的引用,通常需要在运行时进行地址计算;一维数组二维数组结构体A[0]A[1]Field1Field2]A[0,0]A[0,1]A[1,0]A[1,0]编译技术——表达式简化1、A*B+A*CA*(B+C)2、for(i=0;i<8+1;i++)
for(i=0;i<9;i++)编译技术——死代码清除死代码是指
不会被执行的代码,在编译是要能够识别这些代码,并将其从程序中清除掉。死代码大都是一些调试信息编译技术——循环变换循环是重要的程序结构,经常占用大量的CPU的计算时间,在编程时需要优化;循环展开:循环合并:循环折叠:for(i=0;
i<N;i++)
a[i]
=
b[i]
*5;for
(j=0;
j<N;
j++)
w[j]
=
c[j]
*
d[j];ð
for(i=0;
i<N;
i++)
{a[i]
=b[i]
*
5;
w[i]
=
c[i]
*
d[i];}for
(i=0;
i<4;
i++)a[i]
=
b[i]
*c[i];ðfor
(i=0;
i<2;
i++)
{a[i*2]
=
b[i*2]
*c[i*2];a[i*2+1]
=
b[i*2+1]
*
c[i*2+1];编译技术——寄存器分配寄存器分配选择寄存器变量的分配以使所需的寄存器总数最少;w
=
a
+
b;x=
c+
w;y
=
c
+
d;r0r1r2r0r3r0r3timeabcdwxy123t=1t=2t=3程序优化Optimizing
for
execution
time.Optimizing
forenergy/power.Optimizing
for
program
size.影响程序运行时间的主要因素源代码:编写高效优化的高级语言源代码可以缩短程序运行的时间;编译器:编译器负责把高级语言代码转换成机器代码程序,不同的编译器会导致代码的效率的不同;硬件的体系结构:硬件的体系结构对程序的运行时间有较大的影响,如CPU
寄存器的数量、高速缓存的大小和组织、系统的内存大小等;操作系统:操作系统决定了任务调度与内存管理等对程序执行时间有重要影响的影响,结合硬件的体系结构,决定了系统的中断响应时间;程序优化的基本策略1、高级程序设计:选择适当的算法与数据结构,避免使用可能会渐进产生较差性能的算法与编码技术;2、基本编码原则:避免采用限制编译器优化的因素,从而令编译器产生高效的代码;消除连续的函数调用:如将计算移动循环外;消除不必要的
器 :引入临时变量来保存中间结果,只有当最后的值计算出来时,才将结果存放到数组或全局变量中;3。低级优化:尝试各种与数组代码相对的指针形式;通过展开循环降低循环开销;通过迭代分割的技术,找到使用流水线优化的功能单元的方法;程序剖析(Profiling)1、程序剖析用来分析程序的各个部分需要多少CPU时间,程序剖析一边可以在现实的基准数据上运行实际的程序,一边进行剖析;2、GPROF——UNIX提供的剖析程序:确定程序中每个函数花费了多少CPU时间;计算每个函数被调用的次数,以调用函数来分类;Amdahl定律Amdahl定律主要用于描述提高系统某一部分性能对整个系统性能的影响;例:设一个系统执行某个应用程序需要时间Told,而系统的某个部分运行所需要时间的百分比为a,如果
性能提高了k倍,则这个部分原来需要时间aTold,而现在需要时间(aTold)/K。因此,整个程序执行时间为:Tnew=(1-a)Told+(aTold)/k=Told[(1-a)+a/k]所以程序加速比为S=Told/Tnew=1/[(1-a)+a/k]即:如果以前占系统60%时间的部分性能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年雄激素及同化激素项目建议书
- 2025年锆合金管材项目发展计划
- 2025年动力调谐陀螺平台合作协议书
- 2025年AOI光学检测系统项目合作计划书
- 中小学音乐教育中创新教育的研究分析
- 2025年耐高温滤料项目发展计划
- 2025年隔音降噪设备:隔音吸声材料项目发展计划
- 项目沟通管理
- 教育心理学在学生自我管理中的应用研究
- 提高学员满意度教育培训课程设计的关键因素分析
- 人工智能数据标注 课件
- 骨折病的中医分型及治疗
- (高清版)TDT 1068-2022 国土空间生态保护修复工程实施方案编制规程
- 路面桥梁抢修知识培训课件
- 2023陕西省中考英语真题试卷和答案
- 注塑车间工作总结计划
- 《国有企业采购操作规范》【2023修订版】
- 2024年东莞铁塔社会招聘笔试参考题库含答案解析
- 临床生物化学检验常规项目分析质量指标
- 人工智能驱动的智能餐饮供应链管理创业计划书
- 基于育人导向下的小学英语单元作业设计策略 论文
评论
0/150
提交评论