没有合适的资源?快使用搜索试试~ 我知道了~
首页cache性能分析实验
cache性能分析实验
需积分: 30 555 浏览量
更新于2023-05-24
评论 1
收藏 1.6MB DOCX 举报
该报告利用simple scalar模拟器,针对cache的性能进行分析
资源详情
资源评论
资源推荐

实验目的
1. 加深对 Cache 的基本概念、基本组织结构以及基本工作原理的理解;
2. 了解 Cache 的容量、相联度、块大小对 Cache 性能的影响;
3. 掌握降低 Cache 失效率的各种方法,以及这些方法对 Cache 性能提高的好
处;
4. 理解 Cache 失效的产生原因以及 Cache 的三种失效;
5. 理解 LRU 与随机法的基本思想,及它们对 Cache 性能的影响;
实验平台
Vmware 虚拟机,Ubuntu16.0.4 操作系统,SimpleScalar 模拟器
实验步骤
1. 运行 SimpleScalar 模拟器;
2. 在基本配置情况下运行程序(请指明所选的测试程序),统计 Cache 总失
效次数、三种不同种类的失效次数;
3. 改变 Cache 容量(*2,*4,*8,*64),运行程序(指明所选的测试程
序),统计各种失效的次数,并分析 Cache 容量对 Cache 性能的影响;
4. 改变 Cache 的相联度(1 路,2 路,4 路,8 路,64 路),运行程序(指
明所选的测试程序),统计各种失效的次数,并分析相联度对 Cache 性能
的影响;
5. 改变 Cache 块大小(*2,*4,*8,*64),运行程序(指明所选的测试程
序),统计各种失效的次数,并分析 Cache 块大小对 Cache 性能的影响;
6. 分别采用 LRU 与随机法,在不同的 Cache 容量、不同的相联度下,运行程
序(指明所选的测试程序)统计 Cache 总失效次数,计算失效率。分析不
同的替换算法对 Cache 性能的影响。
预备知识
1. SimpleScalar 模拟器的相关知识。详见相关的文档。
2. 复习和掌握教材中相应的内容

(1) 可以从三个方面改进 Cache 的性能:降低失效率、减少失效开销、
减少 Cache 命中时间。
(2) 按照产生失效的原因不同,可以把 Cache 失效分为三类:
① 强制性失效(Compulsory miss)
当第一次访问一个块时,该块不在 Cache 中,需从下一级存储器
中调入 Cache,这就是强制性失效。这种失效也称为冷启动失效或首次
访问失效。
② 容量失效(Capacity miss)
如果程序执行时所需的块不能全部调入 Cache 中,则当某些块被
替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。
③ 冲突失效(Con&ict miss)
在组相联或直接映象 Cache 中,若太多的块映象到同一组(块)
中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位
置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也
称为碰撞失效(collision)或干扰失效(interference)。
(3) 降低 Cache 失效率的方法:增加 Cache 块大小、提高相联度、
Victim Cache、伪相联 Cache、硬件预取技术、由编译器控制的预取
和编译器优化。
(4) 替换算法
① 随机法:为了均匀使用一组中的各块,这种方法随机地选择被替换的
块。
② 最近最少使用法 LRU(Least Recently Used):选择近期最少被
访问的块作为被替换的块。但由于实现比较困难,现在实际上实现的
LRU 都只是选择最久没有被访问过的块作为被替换的块。

实验内容
一 关于 simplescalar 的简要说明
SimpleScalar 包 括 多 个 仿 真 器 : sim-fast ,sim - safe,sim-
cache,sim-cheetah,sim-pro+le,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 参数配置命令为:
<name>:<nsets>:<bsize>:<assoc>:<repl>
<name> :Cache 的名称,其中:
dl1:一级数据 Cache;
dl2:二级数据 Cache;
il1:一级指令 Cache;
il2:二级指令 Cache;
dtlb:数据 TLB;
itlb:指令 TLB;
<nsets> : 组的数目;
<bsize>:块大小;
<assoc> :相联度;
<repl> : 替 换 策 略 。 此 时 , Cache 容 量 为 :
<nsets>*<bsize>*<assoc>。
替换策略主要有以下几种:

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 模拟器自带的测试程序以及自己设计的一个程序进行测试。
自带的 测 试程序 是 在 /root/simplescalar/simplesim-3.0/tests-
pisa/bin.little 目 录 下 的 test-math , test-fmath , test-llong 以 及
test-printf。
我 们 所 有 的 实 验 内 容 都 是 对 一 级 数 据 cache 来 进 行 分 析 的 。 在
simplescalar 中,我们使用的模拟器是 sim-cache。
剩余19页未读,继续阅读




















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0