实例
例一:DEC的Alpha AXP21064中的内部数据Cache
1.简介
容量:8KB
块大小:32B
块数:256
映像方法:直接映像
“写”策略:写直达-不按写分配
写缓冲器大小:4个块
2.结构图
3.工作过程
(1)“读”访问命中
(2)“写”访问命中
失效情况下的操作
4.写合并
当把数据写入写缓冲器时,判断本次所写入单元的块地址是否与写缓冲器中某个有效块的地址相同,若是,则把新数据与该块合并。
5.混合Cache与分离Cache
混合Cache:指令和数据在一起
分离Cache:分为指令Cache 和 数据 Cache
(1)优缺点
(2)分离Cache平均失效率的计算:
访问指令Cache的百分比 * 指令Cache的失效率 + 访问数据Cache的百分比 * 数据Cache的失效率
性能分析
例2:假设Cache的命中时间为1个时钟周期,失效开销为50个时钟周期,在混合Cache中一次load或store操作访问Cache的命中时间都要增加一个时钟周期(因为混合Cache只有一个端口,无法同时满足两个请求。按照前一章中有关流水线的术语,混合Cache会导致结构冲突),根据表5-4所列的失效率,试问:
(1)指令Cache和数据Cache容量均为16KB的分离Cache和容量为32KB的混合Cache相比,哪种Cache的失效率更低?
(2)又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。请问上述两种情况下平均访存时间各是多少?
例3:我们用一个和Alpha AXP类似的机器作为第一个例子。当不考虑存储器停顿时,所有指令的执行时间都是2.0个时钟周期。假设Cache失效开销为50个时钟周期,Cache的失效率为2%,平均每条指令访存1.33次。试分析Cache对性能的影响。
改进Cache性能
平均访存时间 = 命中时间 + 失效率 * 失效开销
可以从三个方面改进Cache的性能:
(1)降低失效率
(2)减少失效开销
(3)减少Cache命中时间
15种Cache优化技术