https://zhuanlan.zhihu.com/p/279663113zhuanlan.zhihu.com
https://zhuanlan.zhihu.com/p/280695164zhuanlan.zhihu.com
理论基础
前m位是块地址,一个块中有2^(n-m)个数据
主存地址取模就是它在Cache中的位置,当然前提是这一块已经在Cache中了
就这个主存是Cache的2^7倍,里面有2^7个地址指定Cache中的第七块存储
Cache概述
![e6d72a6aca51883045cf93d5784c5966.png](https://img-blog.csdnimg.cn/img_convert/e6d72a6aca51883045cf93d5784c5966.png)
![f1d26606dfcc95f723c7f578364a843f.png](https://img-blog.csdnimg.cn/img_convert/f1d26606dfcc95f723c7f578364a843f.png)
地址分块和直接映射
背景:cpu给出一个地址,这个地址是主存地址,先检查一下这个地址中的数据是不是已经导入到Cache中,如果发现这个数据已经在Cache中了,那么就把cpu给出的主存地址,转化位Cache中的地址,根据转化后的地址在Cache中访存,这里就需要一个主存到Cache的地址映射,根据一个数据在主存中的地址,准确的找到其在Cache中的地址
![7628f62a1a97adbadd3d319cf09f9bc9.png](https://img-blog.csdnimg.cn/img_convert/7628f62a1a97adbadd3d319cf09f9bc9.png)
![30d2cfe94a08aa212b54b0dc41ed1bb6.png](https://img-blog.csdnimg.cn/img_convert/30d2cfe94a08aa212b54b0dc41ed1bb6.png)
对于主存 XXX表示块内地址,000/001/010/.../111表示块地址
对于Cache XXX表示块内地址, 00/01/10/11表示块地址,再加一位表示它从主存的哪一部分传过来
具体例子
![655a7515a5554ce10825ef6b2ce82fc2.png](https://img-blog.csdnimg.cn/img_convert/655a7515a5554ce10825ef6b2ce82fc2.png)
这个直接映射,比如说Cache中的第一块,只可能来自于主存中的第一块和第五块
![1c158980ec1c605483075e80da842ad9.png](https://img-blog.csdnimg.cn/img_convert/1c158980ec1c605483075e80da842ad9.png)
例题
![8ae20bfffb6bad02df197eb7561ff01f.png](https://img-blog.csdnimg.cn/img_convert/8ae20bfffb6bad02df197eb7561ff01f.png)
![aea7a31db25cdfc86918e312debfb36c.png](https://img-blog.csdnimg.cn/img_convert/aea7a31db25cdfc86918e312debfb36c.png)
![e4bc79d133fa58421f10bd865deb71db.png](https://img-blog.csdnimg.cn/img_convert/e4bc79d133fa58421f10bd865deb71db.png)