Cache与主存之间的直接映射,全相联映射和组项联映射以及其地址变换
首先先解释一些比较基础的东西
1.cache是什么?
Cache是高速缓冲储存器,位于CPU和主存之间,比较小,速度比较快。
2.为什么要有cache?
Cache类似与word里的剪切板,在word的剪切板中,保存着最近几次复制或者剪切的内容,这样的话可以提高复制粘贴的效率,不需要每一次都回到原来的地方crtl+c。cache也一样,里面储存着最近几次cpu从主存中调用的数据,当计算机需要再次调用这些数据时,无需再去主存中寻找,可以直接从cache中取得。
3.从cache中取数据的指令和从主存中取数据的指令有区别吗?
很多人会认为从cache中取数据和从主存中取数据使用的是不同的指令,但其实不是这样的,cpu取数据指令的执行顺序是先去cache中寻找,未命中后再取主存中寻找。因此在调用数据时,cpu发出的指令中的地址使用的是主存地址。
例如:
Ldr r1,0x32
其中0x32指的是主存地址
4.Tag与valid位存储位置
Tag与valid位也储存在cache中,但他们存储在cache中的CAM中,和数据是分开存储的。但二者之间是有对应关系的。二者对应组成一个cache line(可以百度一下),因此,cache的存储空间是和系统一致的,这里认为是32位,tag和valid是另外存储的,很多人由于cache line的图示表示方法而对cache的存储位数产生了疑惑&#x