为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

天涯尽头无女友 2019-02-02 16:04:35

在教材上学习了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一开始就已经给出了要访问的存储单元(虽然是在主存中)的地址,然后你让我绕道高速缓存一趟,又返回给我一个地址,我最后还是要去访问主存,那我绕这个道做什么啊?
请问我到底哪里想错?谢谢

查看完整描述

1 回答

?
FFIVE

B和A的每一块大小是相等的,但是B和A的长度是不等的。Cache也就是缓存,是面向块的,一次缓存一块。这里的相等,指的是块大小的相等!!! 
如图:

https://img.mukewang.com/5c554f3a0001cf8508000675.jpg

查看完整回答
反对 回复 2019-02-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信