首页 性能分析

性能分析

举报
开通vip

性能分析null性能分析性能分析议程议程代码和数据的大小 ARMulator 周期计算 ARMulator 实时仿真 其他 ARMulator 的问题编译器的优化级别编译器的优化级别C/C++ 编译器的优化级别是可以选择的. -O0 (debug版的默认值, -g) 除了一些简单的代码转换之外,关闭了大部分的优化 有最好的调试信息,是没有优化的代码. -O1 大部分的优化. 带有满意的调试信息,同时有好的代码密度. -O2 (默认) 全部优化. 有限的调试信息,但有最好的代码密度. 代码密度和执行速度的平衡可...

性能分析
null性能分析性能分析议程议程代码和数据的大小 ARMulator 周期计算 ARMulator 实时仿真 其他 ARMulator 的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 编译器的优化级别编译器的优化级别C/C++ 编译器的优化级别是可以选择的. -O0 (debug版的默认值, -g) 除了一些简单的代码转换之外,关闭了大部分的优化 有最好的调试信息,是没有优化的代码. -O1 大部分的优化. 带有满意的调试信息,同时有好的代码密度. -O2 (默认) 全部优化. 有限的调试信息,但有最好的代码密度. 代码密度和执行速度的平衡可以使用选项 -Ospace (默认) 或 –Otime来选择. 利用 -g 选项来包括源代码调试信息.应用代码和数据的大小应用代码和数据的大小armlink 提供两个可选择项来提供相关的信息: -info sizes (所有目标的大小) -info totals (总体大小) Code RO Data RW Data ZI Data Debug 4220 60 4 10240 6824 Object Totals 26056 728 0 272 10000 Library Totals =================================================================== Code RO Data RW Data ZI Data Debug 30276 788 4 10512 16824 Grand Totals =================================================================== Total RO Size(Code + RO Data) 31064 ( 30.34kB) Total RW Size(RW Data + ZI Data) 10516 ( 10.27kB) Total ROM Size(Code + RO Data + RW Data) 31068 ( 30.34kB) Read Only(只读)Zero Initialized (零初始化)Read Write (读写)RAMROM其他大小的考虑其他大小的考虑连接器的输出表明了应用最小的ROM和RAM的需求. 栈和堆需要额外的RAM空间. 把栈放在零等待状态-32 位的片上内存将比在8位或16位上的片外内存性能更高. 你也可以把代码从ROM里拷贝到RAM里运行,这样将增加RAM空间. ELF文件的代码/数据的大小可以使用以下选项得到: fromelf -z. 库文件的代码/数据的大小可以使用以下选项得到: armar -sizes.练习 1练习 1在这个练习部分,我们将看到,C编译器的不同优化级别对于一些简单的应用代码的影响. (the Dhrystone 2.1 benchmark) 这些信息是连接时用-info totals 选项时得到的. 议程议程 代码和数据大小 ARMulator 周期计算 ARMulator 实时仿真 其他 ARMulator 问题周期计算 (1)周期计算 (1)ARMulator 可以通过执行应用程序来计算周期. 可以产生Sequential, Non-sequential, Coprocessor 等周期信息. 可以使用调试器来显示: print $statistics (armsd / ADW / ADU / AXD), 或者ViewDebugger Internals (ADW / ADU / AXD) 对消逝的(增加的)周期计算的输出: ViewDebugger Internals 或者 print $statistics_inc_w (ADW/ ADU), 或者 ViewDebugger InternalsAdd New Reference Point (AXD) 你可以使用这些信息来分析子程序的调用问题.周期计算 (2)周期计算 (2)例子输出 (ARM7TDMI) 例子输出 (ARM940T) Reference Point(s)Number of instructionsCore CyclesNon-Seq CyclesInternal CyclesCopro CyclesTotal CyclesSeq Cycles练习部分 2练习部分 2这一部分里,我们可以看到由ARMulator产生的周期信息. 我们将比较两种不同的内存拷贝的性能,一种使用LDR/STR指令,令一种使用LDM/STM(IA) 指令.议程议程 代码和数据大小 ARMulator 周期计算 ARMulator 实时仿真 其它的 ARMulator 问题 实时仿真实时仿真为了得到时间统计表, ARMulator 需要以下信息: 处理器的类型, 例如 ARM7TDMI 内核的时钟频率 与处理器连接的内存的信息 (地址,宽度.速度) 指定时钟频率: 对于 armsd, 利用命令行选项 ‘-clock’, 例如 armsd -clock 25MHz prog.axf 对于AXD / ADW / ADU, 选择 OptionsConfigure Debugger, 接着 配置ARMulate 目标环境速度 (in MHz).ARMulator 配置ARMulator 配置可以通过调试器 (Options  Configure Debugger)来实现简单的配置 配置文件里的高级配置 armulate.dsc “固定的” 核的类型和功能 例如. TCM/Cache 大小 default.ami 全局核配置信息 例如. MCCFG 控制时钟设置,页表使用等. peripherals.ami 外部的配置 例如. MMU/MPU 配置, semihosting 默认值, 堆栈基地址等.内存配置 (1)内存配置 (1)如果没有指定映象文件: ARMulator 将利用4Gb, 32-bit, 零等待状态, 读/写 内存映象. 为了指定一个‘实际’的系统内存映象,可以使用一个映象文件.00000000 00020000 CODE 2 R 150/100 150/100 10000000 00008000 DATA 4 RW 100/65 100/65内存配置 (2)内存配置 (2)ARMulator仿真了一个基本的内存控制器. 适当加入一些等待状态, 这依赖于内存速度和时钟频率. 启动的旗语说明(在其他事件中)例如:ARM7TDMI, BIU, Big endian, Semihosting, Debug Comms Channel, 25.0MHz, 4GB, Mapfile, Timer, Profiler, Tube, Millisecond [25000 cycles_per_millisecond], Pagetables, IntCtrl, Tracer, RDI Codesequences Memory map: 10000000..10007fff, 32-Bit, wr, wait states: RN=2/1 WN=2/1 RS=1 WS=1 RIS=2/1 WIS=2/1 00000000..0001ffff, 16-Bit, -r, wait states: RN=3/2 WN=Abt RS=2 WS=Abt RIS=3/2 WIS=3/2观察仿真时间观察仿真时间当执行仿真时,调试器一直追踪着流逝的仿真时间. 这可以通过以下方法来观察: 通过应用程序 从汇编语言: 利用semihosting SWI SYS_CLOCK 从C / C++语言 : 利用库函数 clock() 通过调试器 利用调试器内部的变量 $clockt1 = clock(); main_loop(); t2 = clock(); time_taken = t2 - t1;练习部分3练习部分3这一部分主要讨论了ARMulator里的映象文件的使用和检查了是怎样影响代码的性能的. 我们将再次使用Dhrystone 2.1 代码. 议程议程 代码和数据大小 ARMulator 周期计算 ARMulator 实时仿真 其它 ARMulator 的问题带有缓存内核的ARMulation(1)带有缓存内核的ARMulation(1)在没有缓存的内核上,指令和数据的执行时间是“可预见的” 在有缓存的内核上,还有其它的一些因素也会影响指令和数据的执行时间: 指令有没有缓存? 数据地址有没有缓存? 写缓冲器(WB)有没有被用完? 内核是否支持 streaming ? 是否有TLB错过(如果有MMU的话) ? 你可以配置ARMulator来报告缓存,写缓冲器(WB)和TLB信息 详细细节可以参考 “Debug Target Guide” 带有缓存内核的ARMulation(2)带有缓存内核的ARMulation(2)在某些内核上,ARMulator 可能报告零N-cycle(non-seq) 例如:带有AMBA 接口的内核(720T, 940T, 等) ARMulator 只能显示AMBA周期类型 : 地址 (A) 连续的 (S) 非连续的访问是有一个A-周期,紧接着是一个 S-周期 “合并的 I-S” 周期练习部分 4练习部分 4这一部分将会看到缓存是怎样影响代码的性能的(利用 Dhrystone 例子).参考资料参考资料为了得到更详细的信息,请察看以下资料: ADS 编译和库文件用户手册 第 2章 : C 和 C++ 编译器 第3章: ARM 编译器参考 ADS Linker and Utilities Guide 第2-6章: ARM 连接定位器 ADS Debug Target Guide 第2章: ARMulator 基本知识 第3章: ARMulator 模式 第4章: ARMulator参考 ADS AXD and armsd Debuggers Guide 第5章: AXD 调试器null
本文档为【性能分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_674492
暂无简介~
格式:ppt
大小:300KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-05-21
浏览量:9