计算机系统结构复习——存储系统之Cache

 

顺接上一篇:https://blog.csdn.net/qq_40636930/article/details/93470586

正文:

哇咔咔咔咔咔接下来,,就是我认为又难又麻烦的来啦,恭迎Cache大佬。。。。。

比起虚存这个挂羊头卖狗肉的,Cache是实实在在的一个硬件啊,学名:高速缓冲存储器,(也就是高速缓存。听这名字就知道人家是来飙高速的啊。。。

它的降生也是因为处理机过于嫌弃存储器的速度,哪怕硬件厂商的研究员们已经秃着头熬着夜努力追赶摩尔定律了,但是奈何主存他不争气啊,CPU动不动就几百兆赫,存储器的吞吐速率拼了命也就0.01兆赫到1兆赫,这几百倍的差距实在是,,,不忍直视啊。。。于是cache就来拯救世界了,,人家毕竟是个SRAM,比DRAM还是牛逼一点的,,所以人家贵嘛,像咱们普通的屌丝电脑,估计cache最多最多几兆吧,即使是这样,它还是通过它卓绝的效率和设计师们呕心沥血设计的各种算法来提高命中率,最终大大大大地增强了主存速度。。鼓掌。。。

ps:Cache是全硬件实现,,所以是对系统程序员以及应用程序员都透明的。。透明你懂伐。。。。

好了下面重头戏。。Cache的地址映像和地址变换。。请认真听讲,,,(敲黑板。。ddddddd

先来说概念,跟上一节类似,因为都是两级存储结构啊。。

在cache中,【地址映象】是指把主存地址空间映象到cache地址空间,具体的说就是,把存放在主存中的程序按照某种特定的规则装入到cache中,并建立主存地址与cache地址之间的对应关系。

 

而【地址变换】是指,在程序已经被装入到cache中之后,在实际运行的时候,要把主存地址变换成cache地址。

(其实跟上一节基本一样对吧,就是把虚存换成主存,主存换成cache,大家一起升了个级嘛,稍微理解一下。。

【地址映象】:分为三种,全相联映象,直接相联映象,组相联映象。

【映象关系它是一种预设的“规则”,是用来防止随机的映射造成的混乱,就像你在小区停车得实现预定购买停车位一样】

其中要注意的是,为了便于相联映象,cache中块的大小和主存中块的大小是一样的

【全相联】【只分块】表示主存中任意一个块都可以映射到cache的任意一个块上,然后由目录表来存放这种映象关系。

但是因为这样子目录表就要存放C_{b}\times M_{b}个条目,是非常大的开销,为了给目录表减负,于是设计师想出了给主存分区的方法,而且主存中一个区的大小恰好等于cache的大小,这就有了直接相联。

【直接相联】【分区—分块】表示主存中的一个块只能映射到cache中的一个特定的块中,这个 cache的块 的块号为:

                                                           b = B\ mod\ C_{b}

[B:主存块号  ,   b:cache块号,    C_{b} :cache中一个块的大小  ]

 即主存中的多个块映射到cache的同一个块上,主存中的这多个块在其区中的相对位置和cache中这个块的位置是一样的。

但是因为直接相联的块间的冲突率会比较高,因为不同的区中相应位置的多个块如果一起访问,就会发生冲突,尤其是如果这些个块又都是常用块的时候,cache的命中率就会很低了。

这里再尽量形象地描述一下,这里地址映象就像是你当初在买房子签合同的时候(也就是程序放在主存的时候),你的楼栋号和房门号就确定了,然后这个合同里说你还有一个附赠的车库(这里其实不太形象哈),但是这个仓库的位置就固定了,而且固定的很死板,他跟你的房门号是有关系的,而且还是公用的,比如你是一号楼的301,你就得和二号楼、三号楼、四号楼等等的301号住户公用一个车库,那你们几个要是哪天都不开车,那就GG,为了停车估计得打一架。。所以直接相联也不是个好办法。

【组相联】【分区—分组—分块】是折衷了前两者,在组间使用直接相联,组内采用全相联。

其中每个区的大小仍是cache本身的大小,而分组则是把cache和主存按一样的大小划分,其中主存每个区的组数和cache的组数相同。组内再分块,与前两者一样。

这样主存中每个区里位序相同的组映象到cache产生冲突的可能性就小了很多。

 

【地址变换】

 

以上六张图就是基本的全相联、直接相联、组相联了。

下面介绍两种复合型的相联访问方式

1.位选择组相联映象

 

 

 

 

 

2.段相联映象

 

 

 

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值