高速缓存学习笔记

高速缓存系统概述

高速缓存存储系统(cache memory system)是高速存储器,他能利用引用的局部性来提高系统性能。

存储器层次结构

高速缓存(cache)保存有主存储器很小的一个子集的内容,利用局部引用特性来改善系统性能。
局部引用特性:大多说程序表现出的一种属性,在一个特定时间段内,程序指令和数据的一个相当小的子集被频繁地重复引用。
高速缓存相对于其他系统组件的位置
局部性一般分为两种类型:时间的(temporal)和空间的(spatial)。
时间局部性:程序可能重复使用近期引用过的项。
空间局部性:程序有可能重复使用前面附近引用过的项。

高速缓存基本原理

高速缓存的设计

由于高速缓存只能保存主存储器的一个子集,所以首先需要确定存储器的哪些部分当前在高速缓存中。
高速缓存中的数据用他们对应的主存储器地址进行标记(tagging),然后硬件就可以通过检查高速缓存中数据的标记(tag)来判断一个特定的内存位置是否被缓存了。
直接映射的数据高速缓存
高速缓存的设计中,标记(tag)用于确定来自主存储器的连续的一片地址,主存储器的一个或者更多连续的字被组织到一起,形成了一个高速缓存行(line)或者块(block),每一个行关联单个标记(tag)。
标记包含的内容:对应那一块内存的第一个字节地址,控制信息,有效位(valid bit),修改位(modified bit)。

高速缓存的存取

CPU请求一个它想要获取的主存储器的地址时,具体过程:
在这里插入图片描述

  1. 这个地址被发给高速缓存;
  2. 硬件开始搜索高速缓存(一般使用简单的hash table来进行搜索)来寻找相应的数据(地址);
  3. 如果在高速缓存中找到,就称为一次缓存命中(cache hit);
  4. 如果没有找到,就称为缓存缺失(cache miss);
  5. 如果发生一次命中,则数据就从高速缓存中返回给CPU,就好像它是从主存储器中读取的一样
  6. 如果没有命中,那么就把地址传递给主存储器,在那里访问寻址单元,取得数据后,数据既返回给CPU也返回给高速缓存(以便利用局部性)。此时需要将cache中的一些已有数据替换为新数据,就涉及到替换策略(replacement policy),典型的替换策略有LRU(leaset recently Used,最近最少使用),伪LRU,随机替换。替换策略对软件来说是透明的。

缓存命中率越高,系统的性能越好。

物理地址还是虚拟地址

高速缓存可以设计成通过数据或者指令物理地址或者虚拟地址来访问。

写策略

CPU保存数据时,大多数实现都把数据直接保存到高速缓存中,这样有助于改善系统性能,原因:

  1. 提高命中率;
  2. 读写到cache的速度快于读写到主存上。故让CPU以比其他方式更快的速度开始下一次读写。

高速缓存的写策略(write policy),也叫做更新策略(update policy),大体有两种:写直通(write through)和写回(write back)。

写直通:来自CPU的数据,既会写入cache,也会写入主存储器。

  • 优点:存储器始终保持在“最新”状态;
  • 缺点:每次其来自CPU的写入操作都需要由一个主存储器周期,降低系统的速度。

写回:来自CPU的数据,会写入cache,但是并不写入主存储器,直到在行替换或者操作系统明确要求写回主存储器时才写入主存储器。

  1. 优点:主存储器写入操作可能更少,整体性能也就可能更好;
  2. 缺点:操作系统需要多次的把被修改的行写回存储器,以此来保持数据的完整性。

CPU保存数据期间,如果命中,则使用的是写直通或者写回;如果没有命中,则采取的措施取决于是否支持写分配(write allocate)。
写分配:CPU保存的数据在发生高速缓存缺失的情况下,始终会被写入高速缓存。

数据同步问题

在使用写回时,必须保证cpu读写的数据是最新的,举例如下:
i在高速缓存内的值和在主存储器内的值
采用写回的高速缓存的CPU在执行一个程序中的i=i+1。

  1. 在执行这条语句之前,i在主存储器中的值为1;
  2. CPU试图读取i的当前值时,他cache miss,CPU要将值1载入到cache中,然后返回给CPU;
  3. 接着,CPU给i的值加1,把i的值2写回;
  4. 写入操作导致cache hit,并且i在高速缓存中的值被更新为2,此时高速缓存中i拥有新值2,主存储器内仍保持旧值1。

这时,高速缓存内的i的新值被认为相对于主存储器内的值被“修改”过了。
必须要确保i在主存储器内的旧值不会被程序访问到,否则会出现无法预测的结果。多处理器系统上,也必须要确保其他进程不会使用过时的存储器内的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值