Cache
写在前面:高速缓存Cache一直408中的重点以及绝对的难点,前几天我在复习计组第三章的知识,Cache这一节把我困住了,我发现很多概念我都不记得了,一些综合性强的计算题根本无从下手,我深知Cache对于每个408的初学者来说,都是痛点、难点所在,因此花了一晚上狠狠学习Cache总结做了这个Cache“大观”,尝试用最精简且具有逻辑性的方式,只讲重难点和考点,给大家讲透Cache(我发现市面上很多课程讲解的都是比较零散且不好消化的,没有抓住主要矛盾),用最短的时间达到做出考研408题目的要求。
为什么要使用Cache?
为了引出Cache这个高速缓存的妙用,我们先来认识一个概念—时间局部性。
所谓的时间局部性就是同一条指令在短时间内多次运行,比如循环结构,那么我们在循环体内重复更新的变量就是具有时间局部性的,而学过操作系统我们就知道程序是放在内存里运行的,由于时间局部性,程序运行时频繁访问的数据就集中在主存中的某几块区域内,于是我们只要把这几块区域的指令、数据全都复制到CPU的Cache里,这样CPU就可以先去Cache里看看有没有数据如果有直接取出,如果没有再取访存,提高了取数据的效率。由于命中率很高,平均访问是接近于Cache的访问时间的!!(小考点)
那么主存究竟是将数据复制到Cache内的呢?我们继续来看!
关于Cache的所有概念(重点)⭐
我们现在需要把主存中的部分高频访问内容复制到Cache中,最简单的思路就是把主存和Cache都划分出一个个的相同大小的区域,然后就可以直接把数据复制过去了对吧。实际上计算机也是这么做的。
-
**“块”**的概念:我刚刚说的大小相同的区域,在主存中叫作主存块,在Cache中叫作Cache块或Cache行(注意这两是一个东西,题目中给出块或者行都是OK的)。主存块的大小就等于Cache块的大小!!这是第一点需要我们铭