cache性能分析报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机系统结构课内实验》
实验报告
一、实验目的及要求
1.加深对Cache的基本概念、基本组织结构以及基本工作原理的理
解;
2.了解Cache的容量、相联度、块大小对Cache性能的影响;
3.掌握降低Cache失效率的各种方法,以及这些方法对Cache性能
提高的好处;
4.理解Cache失效的产生原因以及Cache的三种失效;
5.理解LRU与随机法的基本思想,及它们对Cache性能的影响;
二、实验环境
Vmware 虚拟机,redhat 9.0 linux 操作系统,SimpleScalar模拟器
三、实验内容
1.运行SimpleScalar模拟器;
2.在基本配置情况下运行程序(请指明所选的测试程序),统计
Cache总失效次数、三种不同种类的失效次数;
3.改变Cache容量(*2,*4,*8,*64),运行程序(指明所选的
测试程序),统计各种失效的次数,并分析Cache容量对Cach e性能的影响;
4.改变Cache的相联度(1路,2路,4路,8路,64路),运行
程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响;
5.改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选
的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;
6.分别采用LRU与随机法,在不同的Cache容量、不同的相联度
下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。
四、实验步骤
1、关于simplescalar的简要说明
SimpleScalar包括多个仿真器:sim-fast ,sim-safe,sim-cache,sim-cheetah,sim-profile,sim-bpred,sim-eio 和sim-outorder。
本次实验使用的是sim-cache,下面说明一下sim-cache。sim-cache:在这个仿真中加入了cache,用户可以对cache及TLB 进行设置,支持两级的cache和一级的TLB,第一级cache和TLB 均分为数据和指令两部分。(摘自百度百科)
下面简要说明一下有关cache的信息:
一般来说,Cache的结构参数主要包括以下几个方面:容量、块大小、相联度、替换算法等。在SimpleScalar模拟器中,采用了两级Cache结构,同时数据和指令Cache分开。SimpleScalar的Cache参数配置命令为:
dl1:一级数据Cache;
dl2:二级数据Cache;
il1:一级指令Cache;
il2:二级指令Cache;
dtlb:数据TLB;
itlb:指令TLB;
替换策略主要有以下几种:
l :LRU,最近最少使用;
f : FIFO,先进先出;
r : RANDOM,随机策略。
例如:-cache:dl1 dl1:2048:64:4:r,表示对一级数据cache进行配置,2048表示有2048组,64表示cache块大小为64byte,4表示相联度为4,r表示替换策略为RANDOM。在此配置下,一级数据cache的容量为2048*64*4=512KB。
由于Simplescalar Spec2000测试程序在其官方网站不能下载,故使用simplescalar模拟器自带的测试程序以及自己设计的一个程序进行测试。
我们所有的实验内容都是对一级数据cache来进行分析的。在simplescalar中,我们使用的模拟器是sim-cache。
2、 simplescalar模拟器基本配置情况下的运行模拟
1.用安装好的simplescalar中的编译器对test.c进行编译,编译后生成了能够在模拟器中可以运行的可执行文件。命令行运行界面如下图所示:
2.我们使用simplescalar中的模拟器sim-cache对a.out模拟执行,执行后的界面如下图所示:
3.对运行结果进行分析
从上面的运行结果中我们提取出一级数据cache(dl1)的信息进行分析:
dl1.accesses 4420 # total number of accesses 一级数据cache上的总访问次数
dl1.hits 3963 # total number of hits 一级数据cache上的命中次数
dl1.misses 457 # total number of misses 一级数据cache上的失效次数
dl1.replacements 201 # total number of replacements一级数据cache 上发生替换的次数
dl1.writebacks 190 # total number of writebacks一级数据cache上发生写回的次数
dl1.invalidations 0 # total number of invalidations一级数据cache上无效访问的次数
dl1.miss_rate 0.1034 # miss rate (i.e., misses/ref) 一级数据cache上的失效率
dl1.repl_rate 0.0455 # replacement rate (i.e., repls/ref) 一级数据