下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:安装一种Cache命中率分析工具,并现场安装、演示。一、 什么是CPU-CacheCPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先缓存中调用,从而加快读取速度。CPU包含多个核心,每个核心又有独自的一级缓存(细分成代码缓存和数据缓存)和二级缓存,
2、各个核心之间共享三级缓存,并统一通过总线与内存进行交互。二、 关于Cache Line整个Cache被分成多个Line,每个Line通常是32byte或64byte,Cache Line是Cache和内存交换数据的最小单位,每个Cache Line包含三个部分Valid:当前缓存是否有效Tag:对应的内存地址Block:缓存数据三、Cache命中率分析工具选择1、Linux平台:Valgrind分析工具;2、Windows平台如下:java的Jprofiler;C+的VisualStudio2010及以后的版本中自带profile工具;Application Verifier;intel vt
3、une等。四、选用Valgrind分析工具在Linux-Ubuntu14.04环境下实验1.Valgrind分析工具的常用命令功能:memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。 cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。 helgrind:用于检查多线程程序的竞态条件。 massif:堆栈分析器,指示程序中使用了多少堆内存等信息。 2.Valgrind分析工具的安装:使用Ubuntu统一安装命令:sudo apt-get install valgrind之后等待安
4、装完成即可。安装界面如图(由于我已经安装了此工具,而且没有更新的版本,图上结果为无可用升级)。五、使用Valgrind分析工具测试程序的Cache命中率1首先,编写两个C语言程序,主要使用对数组数据两种读写方式来测试Cache命中率的不同,同时根据程序做同一件事的运行时间来判断程序质量的好坏。代码如下:cache1.c :#include #include #include #define MAXROW 8000#define MAXCOL 8000int main () struct timeval startTime,endTime; float Timeuse; int i,j;stat
5、ic int xMAXROWMAXCOL;printf (Running!n);gettimeofday(&startTime,NULL); for (i=0;iMAXROW;i+) for (j=0;jMAXCOL;j+) xij = i*j;printf(Completed!n); gettimeofday(&endTime,NULL); Timeuse = *(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec); Timeuse /= ; printf(Timeuse = %fn,Timeu
6、se); return 0;cache2.c :#include #include #include #define MAXROW 8000#define MAXCOL 8000int main () struct timeval startTime,endTime; float Timeuse; int i,j;static int xMAXROWMAXCOL;printf (Running!n);gettimeofday(&startTime,NULL); for (j=0;jMAXCOL;j+) for (i=0;iMAXROW;i+) xij = i*j;printf(Complete
7、d!n); gettimeofday(&endTime,NULL); Timeuse = *(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec); Timeuse /= ; printf(Timeuse = %fn,Timeuse); return 0;2.对以上两个程序进行Cache命中率测试:编译两程序:gcc -o cache1 cache1.cgcc -o cache2 cache2.c使用命令 valgrind -tool=cachegrind ./cache1测试cache1程序的Ca
8、che命中率:使用命令 valgrind -tool=cachegrind ./cache2测试cache2程序的Cache命中率:3.对测试结果进行分析:由cache1测试结果可以看出程序cache1的D1 miss rate: 0.8%可知1级Cache的数据未命中率为0.8%,即命中率为99.2%;由Timeuse = 9.可以cache1中数组循环完成的时间是9.s由cache2测试结果可以看出程序cache2的D1 miss rate: 14.2%可知1级Cache的数据未命中率为14.2%,即命中率为85.8%;由Timeuse = 15.可以cache1中数组循环完成的时间是15.s综上可知cache1程序的cache命中率大于cache2,cache1循环所用时间少于cache2,即cache1程序质量比cache2好。六、感想这次研讨主要对Cache及Cache命中率测试工具进行了讨论,准备这次研讨时,我先查找了有关CPU Cache的资料并进行学习,加深了我对CPU Cache的理解,之后,查找了各种有关Cache命中率分析工具的资料,并选择Linux环境下的Valgrin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童睡前故事
- 石墨烯新材料加工项目申请报告
- 钢结构幕墙质量控制流程方案
- 2026年生产管理工程师的绩效考核指标
- 2026年网络工程师面试技能要求与考试题库
- 2025年医疗卫生服务规范与礼仪指南
- 电子商务平台客服手册
- 党费业务培训制度
- 学习安全培训制度
- 医院科室感染培训制度
- 2026年中国航空传媒有限责任公司市场化人才招聘备考题库有答案详解
- 2026年《全科》住院医师规范化培训结业理论考试题库及答案
- 中国的“爱经”(一)-《天地阴阳交⊥欢大乐赋》
- 中学保安工作管理制度
- 广元市利州区何家坪石材厂饰面用灰岩矿矿山地质环境保护与土地复垦方案
- 保健按摩师初级试题
- 上腔静脉综合征的护理
- 2021年度四川省专业技术人员继续教育公需科目(答案整合)
- 医疗废物处理方案
- 船舶靠离泊作业风险辨识表
- DB37T 2673-2019医疗机构能源消耗定额标准
评论
0/150
提交评论