cache性能评估
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
平均存储器访存时间
平均存储器访问时间=指令占比 (命中时间+指令缺失率 缺失代价) + 数据占比 (命中时间+数据缺失率 缺失代价)
那么对于分立cache:
=4.24
平均存储器访问时间分立cache =74% (1+0.004 100) +26% (1+0.114 100)
用75ns代替上述公式中的(缺失代价×时 钟周期数),则采用不同的cache组织路数:
CPU时间1路 =IC (2 1.0+(1.5 0.014 75))=3.58 指令数 CPU时间2路 =IC (2 1.0 1.25+(1.5 0.010 75))=3.63 指令数
缺失率32 KB一体cache 43.3 /1000 0.0318 1.0+0.36
分立cache总的缺失率
分立cache的缺失率由指令和数据两部分构 成: (74% 0.004)( + 26% 0.114) =0.0324
一体cache的缺失率:
缺失率32 KB一体cache 43.3 /1000 0.0318 1.0+0.36
从上述的结果可见,在cache的情况下,cpi为 4.0;
如果没有cache,又考虑存储访问时间的话: cpi增加到1.0+100*1.5即为151,即为带有 cache系统的40倍。 结论: cache对于低cpi和高时钟频率的cpu的性能 影响尤其重要;
最小平均访问时间=性能最好?
回到之前的cpu性能公式:
缺失次数 缺失代价 ) 时钟周期时间 指令数
CPU时间=执行指令数 (指令执行周期数+
CPU时间=执行指令数 (指令执行周期数 [ 时钟周期时间)+
适应本题给出的参数,需要对上述表达式 作必要的变换:
存储器访问次数 (缺失率 缺失代价 时钟周期时间)] 指令数
存储技术概论
tfzhang@zjgsu.edu.cn
Cache性能评估
评价cache性能公式:
平均存储访问时间 = 命中时间 + 缺失率×缺失 代价 命中时间:缓冲命中需要的时间。 举个例子:
如果缓存的命中时间为2个cycle,缺失率为0.05, 缺失代价为20个cycle,那么平均存储访问时间是多 少?
我们在设计系统时,是不是该以最小化平均存 储器访问时间为目的呢?很有道理,但是也有 例外。比如下面的例子:
假定cache为理想状态,cpi为2.0,时钟周期时间 为1.0ns,平均每条指令访问存储器1.5次; 另外由于增加组相联后,增加cache访问的复杂性, 因此2路组相联的命中时间扩展为原来的1.25倍; 两个cache的容量都是64KB,块容量为64字节,一 个cache采用直接映射,另一个cache采用2路组相 联映射;命中时间均为1个时钟周期,并且假定直 接映射和2路组相联的cache缺失率分别为1.4%和 1.0%;两者的缺失代价都为75ns;
为了预测,我们作两个假设:
1. 忽略其他引起停顿的原因; 2. 假设cpu是顺序运行的;
CPU时间的定义
那么cpu时间的公式:
CPU时间=(CPU执行时间时钟周期数+存储器停顿时周期数) 时钟周期数
案例
假设某顺序执行的处理器,其平均缺失率 为2%,平均每条指令要访问存储器1.5次, cache缺失代价为100个周期;此处将cache 命中时间包含在cpu执行时间内,cpu理想 的cpi为1.0。比较cache的存在与否,对于 性能的影响。
每一千条指令的缺失率
容量 指令cache 数据 cache 40.9 38.4 一体 cache 51.0 43.3
16KB 32KB
3.82 1.36
首先计算缺失率
缺失率的定义:
每条指令的缺失次数/每条指令的内存访问此处; 或 1000条指令的缺失次数/1000条指令的内存访 问次数;
16KB指令cache,其缺失率可以表示为:
缺失率16 KB指令cache 3.82 /1000 0.004 1000 /1000
百度文库
缺失率的计算
16KB数据cache,其缺失率表示为:
缺失率16 KB数据cache 40.9 /1000 0.114 0.36
一体32KB cache的缺失率可以表示为:
从上面的数据,我们可以得到2路组相联的 处理器性能反而不如直接映射。 结论:性能的考察最终还是得从cpu时间入 手。
考虑乱序的情况
之前考虑的处理器都是顺序执行的,这里 我们考虑乱序执行的情况。乱序执行的特 点:即使当前的指令因存储延迟而停顿, 后面的指令还是能够继续执行。 此处,我们就需要对之前的公式进行修正:
存储器停顿周期数 缺失次数 = 全部缺失延迟-重叠缺失延迟 缺失次数 指令数
重复之前的例子,假设现在的缺失代价为75ns,并 且其中30%是重叠的,也就是说平均CPU存储器停 顿时间现在为52.5ns。 乱序处理器(OOO)的处理器的平均存储访问时间是:
平均存储器访问时间1路,OOO =1.0 1.25 (0.014 52.5) 1.99ns
Cache性能评估公式的应用
我们需要在下面的两种cache设计中,进行 选择:
方案1:分立cache设计,指令和数据cache独 立,分别为16KB; 方案2:指令和数据cache合并,总共为32KB; 这里的load和store操作命中时额外地需要一个 时钟周期,因为只有一个cache端口满足请求。 假定cache命中需要1个周期,缺失代价为100 个周期;并且假设36%的存储器访问为数据访 问。其中下图显示每一千条指令发生的缺失次 数:
OOO处理器的性能为:
由此可见,乱序处理器因为能够重叠30%的缺失代 价,速度能快一点。
CPU时间1路,OOO =执行指令数 (2 1.0 1.25 (1.5 0.014 5.25)) 3.60 执行指令数
那么对于一体cache:
4.44
平均存储器访问时间一体cache =74% (1+0.0318 100) +26% (1+1+0.0318 100)
存储器访问时间和处理器性能
能够用cache缺失引起的平均存储器访问时 间来预测处理器性能呢?
1. 其他原因也可引起停顿; 2. 取决于cpu的类型,如果是乱序就不行了;
我们首先对原来的cpu时间进行简单的变换:
存储器停顿时钟周期 ) 时钟周期时间 指令数
CPU时间=指令数 (指令执行时钟周期数+
将题目中的参数依次代入,得到:
CPU时间cache =指令数 (1.0+ 30 100 ) 时钟周期时间=指令数 4.00 时钟周期时间 1000
根据平均存访问时间:
平均存储访问时间 = 命中时间 + 缺失率×缺失 代价
可以得到直接映射和2路组相联的平均存储 访问时间:
平均存储器访问时间1路 =1.0+(0.014 75) =2.05ns 平均存储器访问时间2路 =1.0 1.25+(0.010 75) =2.00ns
可见2路组相联的内存访问性能更好。 那内存访问性能好,是否意味着cpu的性能