请问高速缓存(cache)与主存(main memory)的映射到底是怎么回事儿?

在教材上学习了Direct Mapped Cache, Fully Associate Cache, set Associate Cache三种映射策略,但这三种映射策略中,主存地址与映射之后的二进制信息的长度居然是一样的。
我的疑惑是这样的:
这个映射策略是这么使用的,CPU给出它要访问的主存的地址A,但是在访问之前,先经过映射策略将这个地址转换为对应在高速缓存中的地址B。检查B中是否装载有有效数据。如果有,则直接读这个数据,也就是说hit。如果没有,miss,去主存里找。
考虑主存中可以容纳2^14个字,因此A要有14个bit,这很好理解,但是B和A的长度是相等的,B也有14个bit,这不就意味着主存和高速缓存的容量一样大了么?既然如此,我还需要你主存干什么,全部高速缓存不就好了?
而如果地址B并非是高速缓存中存储单元的地址,而是高速缓存中存储单元中存储的内容,那就更加莫名其妙了。我CPU一开始就已经给出了要访问的存储单元(虽然是在主存中)的地址,然后你让我绕道高速缓存一趟,又返回给我一个地址,我最后还是要去访问主存,那我绕这个道做什么啊?
请问我到底哪里想错?谢谢

天涯尽头无女友
浏览 866回答 1
1回答

FFIVE

B和A的每一块大小是相等的,但是B和A的长度是不等的。Cache也就是缓存,是面向块的,一次缓存一块。这里的相等,指的是块大小的相等!!! 如图:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Vue.js