计算机组成原理6----高速缓冲存储器Cache

Cache引用原因

cpu空等现象:IO设备与cpu都需要访问内存,IO设备优先级较高,速度较慢,因此cpu需要等待IO访问内存从而出现空等现象。将热点数据缓存在Cache中可以有效避免cpu空等现象,直接从缓存中访问数据;

cpu和主存之间速度差异:

                                                         

程序局部性原理:

时间局部性,空间局部性。指令和数据在内存中连续存放,cpu取指令和数据在一定时间内只是对于主存局部区域的访问。

Cache工作原理

主存是按照字来编址的,每个字地址为n位。

将主存b个字组成块,假定有M块,每块有b个字,则n位主存地址可以看成n=m+b,其中m位为块编号,b位为块内编号。

将缓存按照同样块大小进行编址,每块b个字,共有C块。M>>C

                                    

访问内存的数据所在块在缓存中,则说明缓存命中。

Cache命中率:cpu欲访问的信息在缓存中的比率

在程序执行期间,访问Cache总次数Nc,访问主存总次数Nm,则命中率 h = Nc / (Nc + Nm);

命中率与Cache容量和块长有关

Cache容量越大,命中率越高,当容量大于某一阈值时,提升不明显。

块长有小到大,命中率提高,当块长过大时,由于缓存容量有限,因此块数会减少,从而导致缓存的块数减少,缓存块换出,导致命中率下降。一般取块长为一个存储周期内主存调出的信息长度。

Cache效率:缓存访问时间和缓存-主存访问时间比值

                                                                  

访问Cache时间为tc,访问主存时间tm,命中率h

                                                                   

Cache基本结构

                                 

存储体  地址映射变换机构  替换机构

存储体以块为单位以主存进行信息交换;

地址映射实现主存地址到缓存地址转换,主要是主存块号和缓存块号的转换;如果命中,则直接访问缓存即可;如果没有命中,则需要将主存块调入缓存,如果此时缓存已满,则需要执行替换算法,将新块换入,旧块换出。

替换机构,实现旧块换出,新块换入,替换算法主要由FIFO,LRU,随机法

Cache读操作

                               

Cache写操作

由于缓存数据和主存数据需要保持一致,主要有写直达法和写回法。

写直达法:写缓存写主存,写操作时间就是访问主存时间,Cache换出时,不需要对于主存写操作,更新策略容易实现,能够随时保证缓存和主存数据一致,但是增加了访存次数。

写回法:写操作只写缓存,不写主存,当Cache块被换出时,将Cache块回写到主存中。写操作时间是访问Cache时间,增加了Cache复杂性。

Cache改进方式

增加Cache级数,分立Cache  数据Cache  指令Cache

Cache-主存地址映射

将主存地址映射为缓存地址

直接映射

                                    

一个缓存块对应多个主存块,一个主存块仅对应一个缓存块。

主存地址分为主存字块标记,Cache字块地址,字块内地址。假定缓存为C=2^c块,将主存按照C进行分组,缓存块i对应主存每组的i块

访问缓存时,根据主存地址中间c位找到Cache中的字块编号某一块,然后获取该块的标记,将标记和主存地址前t位进行比较,如果相等,且数据有效则说明缓存命中。

每个主存块只对应某一个缓存块,即时缓存有空余,其他主存块也不能缓存,利用效率低;如果程序访问同一缓存位置的不同主存块,则需要不同换入换出。

全相联映射

                                                 

主存中的一块可以对应缓存中任意块。

缓存标记地址增加为t+c位,访问时需要比较主存字块标记和缓存比较

电路成本增加

组相联映射

                                   

将缓存分为Q组,每组有R块。主存块号j,缓存组号i ,则 i = j mod Q

此时主存块号j映射到缓存i组中的任意一块。

组地址为q位 Q=2^q  每一组有R块   R=2^r   主存字块标记为s=t+r位。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值