高速缓存存储器

随机访问存储器

随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多。
DRAM用来作为主存以及图形系统的帧缓冲区。在这里我们略讲。
SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。

DRAM

DRAM将每个位存储为对一个电容的充电。
电路设计者将DRAM组织成二维阵列,优点是可以降低芯片上的引脚(每个引脚携带一个1位的信号 )数量,缺点是必须分成两步发送地址(第一步行地址、第二步列地址 ),这增加了访问时间。

其中相关知识点:

  1. 传统DRAM的数据传输方法(超单元、引脚)
  2. (多个)DRAM芯片封装在内存模块中,多个内存模块连接到内存控制器,能够聚合成主存
  3. 增强的DRAM(快页模式、扩展数据输出DRAM、同步DRAM、双倍数据速率同步DRAM、视频RAM等)

关于DRAM,这里不再做详细展开 。

SRAM

早期计算机系统的存储器层次结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。不过由于CPU和主存之间逐渐增大的差距,我们在他们之间插入了一个小的SRAM高速缓存存储器,称为L1高速缓存。之后又在L1与主存之间插入了更大的高速缓存,称为L2高速缓存。有些现代系统还包括有一个更大的,L3高速缓存。

为方便讨论,我们假设CPU和主存之间只存在L1高速缓存

SRAM高速缓存存储器

结构

在这里插入图片描述
一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述,如上图所示。

  1. 一个高速缓存拥有S=2s个数
  2. 每个组(S)有E个高速缓存
  3. 每个行有1个数据,1个有效位,t个标记位;
  4. 这个数据块大小B=b字节。

所以高速缓存的大小C,是指所有块大小的总和:C=S×E×B
有效位是指明该行是否包含有意义的信息,1是有,0是没有。

其中,每行含有m个地址位(不包括有效位);
被划分成t个标记位、s个组索引位、b个块偏移位;

  1. s组索引位用来寻找这个字被放在哪个组中,是一个无符号整数;
  2. t标记位用来寻找这个字被放在该组的哪一行中;
  3. b偏移位给出了在B个字节的数据块中的字偏移。

缓存命中与缓存不命中

缓存命中的两个条件:

  1. 设置了有效位(有效位为1)
  2. 高速缓存行中的标记与传送地址中的标记相匹配

其中任意条件不满足,就将其称为缓存不命中
如果缓存不命中,那么它需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓存行中。
一般而言,如果组中都有高速缓存行了,那么必须驱逐一个现存的。这一过程称为行替换

抽取请求字的三步骤

根据每个组的高速缓存行数E,高速缓存被分为不同的类。

  1. 直接映射高速缓存:E=1(每个组只有一行)
  2. 组相连高速缓存:1<E<C/B
  3. 全相连高速缓存:E=C/B、S=1(只有一个组,包含所有高速缓存行)

所有类别的高速缓存确定一个请求(传送地址)是否命中,然后抽取出被请求的字的过程,都分为三步:1)组选择;2)行匹配;3)字抽取

组选择

在这一步中,高速缓存从传送地址中间抽出s个组索引位,用来寻找匹配组(注意:由于全相连高速缓存只有一个组,地址中没有组索引位
在这里插入图片描述

行匹配

在上一步中我们已经选择了某个组i,这一步就是要确定是否有传送地址的一个副本存储在这个组包含的一个高速缓存行中。

  1. 直接映射高速缓存一组只有一行,这里搜素很容易,但也容易出现抖动(高速缓存反复地加载和驱逐相同的高速缓存块的组);
  2. 组相连高速缓存必须检查多个行的标记位和有效位,以确定所请求的字是否在集合中。这里一个重要思想就是:组中的任何一行都可以包含任何映射到这个组的内存块。也就是说,高速缓存必须搜索组中的每一行,寻找有效行;
  3. 全相连高速缓存同组相连一样,只是规模更大,因此它只适合做小的高速缓存。

当有效位被设置后,我们只需要寻找是否有相匹配的标记位就可以了。
在这里插入图片描述

字选择

一旦命中,我们知道传送地址就在这个块中的某个地方。最后一步就是要用b块偏移来确定所需要的字在块中是从哪里开始的。我们可以把块看成一个字节的数组,而字节偏移是到这个数组的一个索引。
到了这一步,三种类别的步骤都是一样的。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值