计算机组织结构 第七章复习笔记

1. 两种写策略

写策略是区分不同Cache设计方案的一个重要标志。
写直达法(也称为存直达法)
执行“写”操作时,不仅写入Cache,而且也写入下一级存储器。
写回法(也称为拷回法)
执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。 (设置“修改位”)

2. Cache的性能分析

不命中率
与硬件速度无关
容易产生一些误导
平均访存时间
平均访存时间 = 命中时间+不命中率×不命中开销

3. 程序执行时间

CPU时间=(CPU执行周期数+存储器停顿周期数)× 时钟周期时间
其中:
存储器停顿时钟周期数=“读”的次数×读不命中率×读不命中开销+“写”的次数×写不命中率×写不命中开销
存储器停顿时钟周期数=访存次数×不命中率×不命中开销

例题:用一个和Alpha AXP类似的机器作为第一个例子。假设Cache不命中开销为50个时钟周期,当不考虑存储器停顿时,所有指令的执行时间都是2.0个时钟周期,访问Cache不命中率为2%,平均每条指令访存1.33次。试分析Cache对性能的影响。

解:
CPU时间有cache=IC ×(CPIexecution+每条指令的平均访存次数
×不命中率×不命中开销)× 时钟周期时间
=IC ×(2.0+1.33×2 %×50)× 时钟周期时间
=IC × 3.33× 时钟周期时间

考虑Cache的不命中后,性能为:
  CPU时间有cache=IC×(2.0+1.33×2 %×50)×时钟周期时间
  =IC×3.33×时钟周期时间
  实际CPI :3.33
     3.33/2.0 = 1.67(倍)
  CPU时间也增加为原来的1.67倍。
   但若不采用Cache,则:
     CPI=2.0+50×1.33=68.5

4. 改进Cache的性能

可以从三个方面改进Cache的性能:
降低不命中率
减少不命中开销
减少Cache命中时间

  • 假如降低Cache不命中率
    相联度越高,冲突不命中就越少;
    强制性不命中和容量不命中不受相联度的影响;
    强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少。

减少三种不命中的方法
强制性不命中:增加块大小,预取
      (本身很少)
容量不命中:增加容量
     (抖动现象)
冲突不命中:提高相联度
     (理想情况:全相联)

(1)增加块大小
对于给定的Cache容量,当块大小增加时,不命中率开始是下降,后来反而上升了。
原因:
一方面它减少了强制性不命中;
另一方面,由于增加块大小会减少Cache中块的数目,所以有可能会增加冲突不命中。
Cache容量越大,使不命中率达到最低的块大小就越大。
增加块大小会增加不命中开销

(2)增加Cache容量:
最直接的方法是增加Cache的容量
缺点:
增加成本
可能增加命中时间
这种方法在片外Cache中用得比较多

(3)提高相联度
采用相联度超过8的方案的实际意义不大。
2:1 Cache经验规则
容量为N的直接映象Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多相同。
提高相联度是以增加命中时间为代价。

5. 伪相联Cache的优点

命中时间小
不命中率低

是结合了直接映像和组相联的优点

平均访存时间计算

计算三种方式的平均访存时间。
最通用的计算公式:平均访存时间=命中时间+不命中率*不命中开销

  • 直接映像的平均访存时间=
    ( 命 中 需 要 的 时 钟 周 期 + 直 接 映 像 的 失 效 率 ∗ 直 接 映 像 失 效 的 时 钟 周 期 ) ∗ 时 钟 周 期 长 度 (命中需要的时钟周期+直接映像的失效率*直接映像失效的时钟周期)*时钟周期长度 (+)

  • 2路组相联映像的平均访存时间=
    ( 命 中 需 要 的 时 钟 周 期 + 组 相 联 的 失 效 率 ∗ 组 相 联 失 效 的 时 钟 周 期 ) ∗ ( 1 + 组 相 联 增 加 损 耗 的 比 例 ) ∗ 时 钟 周 期 长 度 (命中需要的时钟周期+组相联的失效率*组相联失效的时钟周期)*(1+组相联增加损耗的比例)*时钟周期长度 (+)(1+)

  • 伪相联映像的平均访存时间=
    ( 命 中 需 要 的 时 钟 周 期 + ( 直 接 映 像 的 失 效 率 − 组 相 联 的 失 效 率 ) ∗ 伪 相 联 额 外 增 加 的 时 钟 周 期 + 组 相 联 的 失 效 率 ∗ 组 相 联 失 效 的 时 钟 周 期 ) ∗ 时 钟 周 期 长 度 (命中需要的时钟周期+(直接映像的失效率-组相联的失效率)*伪相联额外增加的时钟周期+组相联的失效率*组相联失效的时钟周期)*时钟周期长度 (+()+)

Cache的CPU时间

直接映像的CPU时间=
指 令 数 量 ∗ ( C P I + 平 均 每 条 指 令 访 存 次 数 ∗ 直 接 映 像 失 效 率 ∗ 直 接 映 像 失 效 时 钟 周 期 ) ∗ 时 钟 周 期 长 度 指令数量*(CPI+平均每条指令访存次数*直接映像失效率*直接映像失效时钟周期)*时钟周期长度 (CPI+访)

二路组相联的CPU时间=
指 令 数 量 ∗ ( C P I + 平 均 每 条 指 令 访 存 次 数 ∗ 组 相 联 失 效 率 ∗ 组 相 联 失 效 时 钟 周 期 ) ∗ ( ( 1 + 组 相 联 增 加 的 损 耗 比 例 ) ∗ 时 钟 周 期 长 度 ) 指令数量*(CPI+平均每条指令访存次数*组相联失效率*组相联失效时钟周期)*((1+组相联增加的损耗比例)*时钟周期长度) (CPI+访)((1+))

伪相联映像的CPU时间=
指 令 数 量 ∗ ( C P I + 平 均 每 条 指 令 访 存 次 数 ∗ ( 直 接 映 像 失 效 率 − 组 相 联 失 效 率 ) ∗ 伪 相 联 额 外 增 加 的 时 钟 周 期 + 平 均 每 条 指 令 访 存 次 数 ∗ 组 相 联 的 失 效 率 ∗ 组 相 联 失 效 的 时 钟 周 期 ) ∗ 时 钟 周 期 长 度 指令数量*(CPI+平均每条指令访存次数*(直接映像失效率-组相联失效率)*伪相联额外增加的时钟周期+平均每条指令访存次数*组相联的失效率*组相联失效的时钟周期)*时钟周期长度 (CPI+访()+访)


例题:
(1) 理想 Cache(命中率为 100%)情况下的 CPI 为 2.0,时钟周期为 2ns,平均每条指令访存 1.2 次;
(2) 直接映像、2 路组相联映像、伪相联映像这三种 Cache 的容量均为 32 KB,块大小都是 32 字节;
(3) 组相联映像 Cache 中的多路选择器使 CPU 的时钟周期增加了 10%;
(4) 这三种 Cache 的失效开销都是 40 个时钟周期;
(5) 命中时间为 1 个时钟周期;
(6) 32 KB 直接映象 Cache 的失效率为 2%,32 KB 两路组相联映像 Cache 的失效率为1.8%;
(7) 对于伪相联映像 cache,若按直接映像找到(即正常命中)的位置处没有发现匹配时,而在另外一个位置才找到(即伪命中)数据需要 2 个额外的周期;
(8)假设指令条数为 100 条,CPU 的主频是 500MHz。

试计算回答下列问题:(注:结果保留 2 位小数。)
(1)( 6 分) 直接映象、2 路组相联映像、伪相联映像 Cache 的平均访问时间分别是多
少纳秒(ns)?


解:
套公式即可:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值