文章目录
第六节 局部性原理与性能分析
本节脑图
局部性原理
粗略地对局部性原理进行分析:
主存可以以块为单位放到cache中,cache与CPU的交流依然是块为单位,但是cache的储存周期要小很多,就达到了提速的效果。
命中率等性能分析
一些概念
一个性能分析的例题,运用了上面的公式。
Cache主存系统的效率e=一次访问cache的时间 ÷ 一次总的时间,其实所谓 ‘一次时间’ 就是周期。
其中,系统的效率含义是这样的一个系统和单独的一个cache相比工作情况如何,例如题中系统效率是单独一块cache的八成
Cache的基本工作原理
需要思考的一些问题
第七节 cache的地址映射
第八节 cache替换算法
一道例题
关于下面第(2)小问的解释:
- 第二题的解释可以看《天勤p109》中间的部分,也可以再看一遍视频。
- 注意ppt里cache第6块那里写错了,标记应该是0.
- 有效位和标记共同决定是否命中!
- 余数决定了应该放在哪一块,商决定了标记。
第(3)小问,ppt上只提到了先进先出的替换策略,也是有效位和标记位一起决定是否命中,跟上面那个意思差不多,也是比较容易理解的。
但是!做题的时候不这样写!而是用表格的形式。👇
最上面一行相当于数据流,每一列都是一个时刻,都表示此时cache的状态。理解不了没关系,看视频吧。
下面这个是FIFO算法的表格:
下面这个是LRU替换算法的表格。
最近一个使用的会被放在这一组的最下面,不常使用的就会被顶走。
可以得到一个结论:命中次数不仅受映射方式的影响,还受替换算法的影响。
学到这里,我们之前的体系结构图就有点简陋
更正式一点的cache访问原理图:
cache写操作策略
命中时
- 写回法
- 全写法
不命中时
cache回顾
cache部分刷题总结
计算题: cache部分的很多计算题都需要分析 cache内地址格式,所以理解地址格式很关键(按照WDp129三步走),还有一些没学过的概念需要在做题中积累比如地址映射表,WDp133的10、11、12用来感觉就很不错。其实这种题型很简单。
概念题: 注意cache中的数据是主存的副本,不扩容,没有高速缓存地址这个说法,就可以避免很多坑。
综合理解cache部分的一道大题
基本流程:
(1)
一个小插曲:
这个题当时问了老师为什么说0001001110这样的是一个字节,难道1B不一定等于8bit吗。其实不然,这个0001001110指的是地址,也就是说这个地址指向的数据是1个字节.那么问题又来了,存储器里存放的到底是数据还是地址呢?这个回答在百度上找到了,回答1:地址信息是不储存的,cpu有个东东叫寄存器,地址都存放在那。回答2:没有专门存放所有地址的地方,每次要访问哪个地址,由地址线来信号来确定,每个程序有自己的地址空间,通常由段地址加偏移量来确定,段地址存放在段地址寄存器中。王道书上p129 例3.4对这个问题的回答进行了很好的补充:Cache的总容量包括:存储容量、标记阵列容量(有效位、标记位、一致性维护位(脏位)、替换算法控制位)
对比后面两种可以发现这种方法cache保留的标记比较多,这也是它缺陷的地方。
(2)
第九节 虚拟存储器