存储器——Cache

一、小引
1、Cache是为了解决CPU和主存之间速度不匹配的问题
2、Cache是COU和内存之间设置的一个小容量存储器,保存的内容是主存内容的子集
3、Cache用SRAM实现,存取速度比主存快
4、可采用两级或多级Cache
5、Cache功能全由硬件调度,对用户透明,运行过程无需软件设置和参与

二、程序的局部性原理
1、时间局部性
被访问过一次的内存区域在未来会被多次访问
2、空间局部性
如果一个内存区域被访问,那么将来它附近的单元也会被访问

三、Cache的命中率
1、
在这里插入图片描述
h:命中率
Nc:Cache中完成存取的次数
Nm:主存中完成存取的次数
h与程序的行为、Cache的容量、组织方式、块的大小有关
2、Cache的平均访问时间
tc:命中时Cache的访问时间
tm:未命中时主存的访问时间
则,Cache/主存系统的平均访问时间:
ta=htc+(1-h)tm
3、Cache的访问效率
在这里插入图片描述

四、相联存储器
普通的存储器按地址访问,相联存储器按内容访问
1、相联存储器基本原理
①、存放在相联存储器中的项:内存地址+信息
②、查找的主要操作:比较
2、应用领域
需要快速查找的领域:
①、虚拟存储器中存放段表、页表、快表
②、在Cache中,相联存储器作为存放Cache的行地址
③、网络设备中路由的查找

五、地址映射
1、主存分块,每块包含若干个字,主存地址:
在这里插入图片描述
2、Cache与主存的数据交换以块为单位
①、Cache中的数据块称为行
②、Cache按照内容编址,主存线性编址,CPU用内存地址去访问Cache
3、地址映射
应用某种方法,把主存的地址定位到Cache中的确切位置

六、Cache基本原理
引:
①、CPU和Cache之间的数据交换是以字为单位
②、Cache与主存之间的数据交换以块(行)为单位
③、一个块由若干字组成
1、Cache原理图
在这里插入图片描述
2、Cache基本原理示意图
在这里插入图片描述

七、映射方式
1、全相联
(1)、映射方法:多对多
①、主存一个块可以放到Cache任意一行
②、将整个块地址作为Cache行的标识
(2)、地址变换
①、CPU访存地址同时发往Cache和内存
②、发往Cache的地址分为块地址和块内偏移
③、块地址同时和Cache中所有行的Tag进行比较
相同表示命中,再按块内偏移从该块中读取一个字,同时撤销内存寻址功能
若没有命中,则等待主存访存过程结束,然后将被访问内存的相对应块调入Cache
在这里插入图片描述

(3)、特点
	①、优点:冲突概率小,Cache的利用率高
	②、缺点:比较电路实现成本高
	③、适用于小容量的Cache

在这里插入图片描述
2、直接映射
(1)、映射方法:1对1
①、一个主存块只能映射的Cache的一个特定行上
②、行号i和块号j关系
i=j mod m m为Cache中总行数
(2)、Cache将s位块地址分为两部分
①、低r位作为Cache的行索引
②、高s-r位作为tag
在这里插入图片描述
(3)、地址变换
①、首先用访存地址中的块号的r位行索引找到Cache中对应的行
②、然后用块号的s-r位与该行的tag部分比较
若命中,而后用低w位读取所要求的字
若不命中,由主存读取所要求的字
(4)、特点
①、优点:硬件简单,成本低
②、缺点:每个块只有一个固定的行可存放,容易产生冲突,频繁置换会导致Cache抖动,效率下降
③、适合大容量Cache使用
在这里插入图片描述
3、组相联
(1)、引
①、将Cache分为u组,每组v行,组间采用直接映射,组内采用全相联
②、主存中的每一块可以被放置到Cache中唯一的一个组中的任何一行
(2)、将s划分为两部分:
①、低d位表示组号
②、高s-d位作为tag
在这里插入图片描述
(3)、地址变换
①、首先用块地址的低d位找到对应组
②、然后将地址块的高s-d位与该组v行中的所有标记同时进行比较
命中,选中该行,用内存地址的低w位选择相应的字
不命中,访问内存
(4)、特点
①、比全相联容易实现,冲突低
②、u=1,则为全相联映射方式
③、v=1,则为直接映射方式
④、得到普遍采用
在这里插入图片描述

八、替换策略
1、引
(1)、Cache尽量保存最新数据
①、当从主存向Cache传送一个新块,而cache中可用位置已被占满时,就会产生替换问题
②、对直接映射来说,只要把此特定位置上的原主存块换出Cache即可
③、对全相联和组相联来说,就要从若干特定行中选取一行换出
(2)、常用替换算法
①、LFU最不经常使用算法
②、LRU近期最少使用算法
③、随机替换
2、LFU
(1)、被访问次数最少的那行数据换出
①、每行设置一个计数器。新行建立后从0开始计数,每访问一次,该行计数器加1
②、当需要替换时,将计数值最小的行换出,同时将该行计数器清0
(2)、缺点
①、不能严格反映近期访问情况
②、刚调入Cache的新行很容易被换出
3、LRU
(1)、将近期内长久未被访问的行换出
①、每行设置一个计数器,Cache每命中一次,命中行计数器清零,其他各行计数器加1
②、当需要替换时,将计数值最大的行换出
(2)、评价
这种算法保护了刚拷贝到Cache中的新数据行,有较高的命中率
4、随机替换
从特定的行位置中随机的选出一行

九、写操作策略
1、引
(1)、由于Cache的内容只是主存部分内容的拷贝
CPU对Cache的写入导致与主存内容的不一致
(2)、三种写策略
①、写回法
②、全写法
③、写一次法
2、写回法
(1)、写命中
只修改Cache的内容,当此行被换出时才写回主存
(2)、写未命中
首先将内存中对应块调入内存,然后对其修改
(3)、特点
①、减少了访问主存的次数,但是存在不一致的隐患
②、每个Cache行必须配置一个修改位,以反映此行是否被修改过,被修改过的块为脏块
3、全写法
(1)、写命中
同时写入Cache和主存
(2)、写未命中
直接向主存进行写入
(3)、优点
①、写Cache和写主存同步进行,较好的维护了Cache与主存的内容的一致性
②、Cache中每行无需设置修改位
(4)、缺点
降低了Cache的性能
4、写一次法
(1)、写命中
①、第一次:采用全写法
②、第二次:采用写回法
(2)、写未命中
写回法
(3)、主要用于多处理器系统

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值