计算机体系结构——5 存储层次

5.1 存储器的层次结构

5.1.1 从单级存储到多级存储

  • 为什么?

    • 主存储器CPU 速度差距越来越大,存储墙问题严重制约着计算机性能的提升如图
    • 系统与应用的规模不断扩大,需要更大的存储器来支撑程序的运行
    • 各类存储器的容量/速度/价格不可兼得,如SRAM、DRAM、磁盘等,凭现有单种存储器件,无法构建一个可行的存储系统
  • 怎么办?

    • 利用多种存储器件,取长补短,构建层次式存储系统
      • 快速但昂贵的存储器:容量少点,尽量让CPU多访问
      • 慢速但容量大的存储器:容量大点,CPU尽可能少访问
  • 能否达到预期效果?

    • 访问速度方面:采用快速存储器,尽量让CPU多访问快速存储器中的内容(增加Cache层次)
      • 程序局部性原理;
        • 时间局部性:当前访问的数据存放Cache中
        • 空间局部性:把与当前访问地址相邻的数据放入Cache中(以块为单位从内存调入)
    • 容量方面:采用慢速但容量大的存储器,内存不够时数据可以放到外存中(增加辅存层次)

5.1.2 Cache -主存和主存-辅存层次

最主要的两种存储层次

  • 从主存的角度来看
    • Cache一主存层次:弥补主存速度的不足
    • 主存一辅存层次:弥补主存容量的不足

“Cache——主存”与“主存——辅存”层次的区别
在这里插入图片描述

5.1.3存储层次的四个问题

  • 1.当把一个块调入高一层(靠近CPU)存储器时, 可以放在哪些位置上?
    • (映象规则 调入块可以放在哪些位置)
  • 2.当所要访问的块在高一层存储器中时,如何 找到该块?
    • (查找算法 如何在映象规则规定的候选位置查找)
  • 3.当发生失效时,应替换哪一块?
    • (替换算法 规定的候选位置均被别的块占用)
  • 4.当进行写访问时,应进行哪些操作?
    • (写策略 /如何处理写操作)

5.1.4存储层次的性能参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 Cache基本知识

5.2.1 映象规则

1.全相联映象

  • 全相联:主存中的任一块可以被放置到Cache中的任 意一个位置。
  • 对比:阅览室位置——随便坐
  • 特点:空间利用率最高,冲突概率最低,
    实现最复杂。

2.直接映象

  • 直接映象:主存中的每一块只能被放置到Cache中 唯一的一个位置。 (循环分配)
  • 对比:阅览室位置——只有一个位置可以坐
  • 特点:空间利用率最低,冲突概率最高, 实现最简单。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.2 查找方法

在这里插入图片描述

  • 1.如何确定Cache中是否有所要访问的块?若有的话如何确定其位置?
  • Cache块调入时记录存放的位置到目录表
  • 只需查找候选位置所对应的目录表项
  • 并行查找与顺序查找
  • 提高性能的重要思想:主候选位置(MIRU块) Most Recently Used
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 并行查找的实现方法:
  • ▲相联存储器
  • ▲单体多字存储器+比较器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.2.3替换算法

  • 所要解决的问题:当新调入一块,而该块能够占用的Cache位置已被占满时,替换哪一块?

  • 1.随机法:实现简单

  • 2.FIFO:实现简单

  • 3.LRU(Least Recently Used最近最少使用):

    • 长期不被使用的数据,在未来被用到的几率也不大,所以当新的数据进来时我们可以优先把这些数据替换掉。失效率低。
    • LRU是淘汰最长时间没有被使用的页面。
    • LRU 关键是看页面最后一次被使用到发生替换的时间长短,时间越长,页面就会被置换;
  • 4.LFU(least frequently used最近最不经常使用):最不常使用法

    • LFU是淘汰一段时间内,使用次数最少的页面。
    • LFU关键是看一定时间段内页面被使用的频率(次数),使用频率越低,页面就会被置换。

5.2.4 写策略

  • 1.“写”操作所占的比例
    • Load指令:26% Store指令:9%
    • “写”在所有访存操作中所占的比例:9%1(100%+26%+9%)=7%
    • “写”在访问数据Cache操作中所占的比例:9%/l(26%+9%)=25%
  • 2.“写”操作必须在确认是否命中后才可进行
  • 3.“写”访问有可能导致Cache和主存内容的不一致
  • 4.两种写策略 写直达法:执行“写”操作时,不仅写入Cache,而且也写入下一级存储器。 写回法:执行“写”操作时,只写入Cache。仅当Cache中相应的块被替换时,才写回主存。 (设置“污染位”)
  • 5.两种写策略的比较 写回法的优点:速度快,占用存储器频带低写直达法的优点:易于实现,一致性好
  • 6.写存储器
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.2.5 Cache结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.6 性能分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.7 改进Cache性能

  • 平均访存时间=命中时间+失效率×失效开销可以从三个方面改进Cache的性能:
  • ⑴)降低失效率
  • (2)减少失效开销
  • (3)减少Cache命中时间
  • 15种Cache优化技术
    在这里插入图片描述

5.3 降低Cache失效率的方法

降低失效率共7种

  • 增加块大小
  • 提高相联度
  • Victim Cache
  • 伪相联Cache
  • 硬件预取
  • 编译器控制的预取
  • 用编译器技术减少Cache失效

5.3.1 失效率

  • 1.三种失效(3C)

  • (1)强制性失效(Compulsory miss)
    当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性失效 (冷启动失效,首次访问失效)

  • (2)容量失效(Capacity miss )
    如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。

  • (3)冲突失效(Conflict miss)
    在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。(碰撞失效,干扰失效)

  • 2.三种失效所占的比例
    在这里插入图片描述

  • (SPEC92)图示I(绝对值)可以看出:

  • (1)相联度越高,冲突失效就越少;

  • (2)强制性失效不受Cache容量的影响,但容量失效 却随着容量的增加而减少;强制性失效和容量失效不受相联度的影响.

  • (3)表中的数据符合2:1的Cache经验规则,即大小为N 的直接映象Cache的失效率约等于大小为N/2的两路组相联Cache的失效率。

  • 3.减少三种失效的方法

    • 强制性失效:增加块大小,预取(本身很少)
    • 容量失效:增加容量(防止出现抖动现象)
    • 冲突失效:提高相联度(理想情况:全相联)
  • 4.许多降低失效率的方法会增加命中时间失效开销

在这里插入图片描述
在这里插入图片描述

5.3.2 提高相联度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3.3 Victim Cache

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3.4 硬件预取技术

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3.5 编译器优化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4 减少Cache失效开销

  • 写缓冲及写合并
  • 让读失效优先于写
  • 子块放置技术
  • 请求字处理技术
  • 多级Cache
  • 非阻塞Cache技术

5.4.1 写缓存与写合并

在这里插入图片描述

5.4.2 让读失效优先于写

在这里插入图片描述

5.4.3 子块放置技术

在这里插入图片描述
在这里插入图片描述

5.4.4 多级Cache

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4.5 非阻塞Cache技术

在这里插入图片描述

5.5 减少命中时间

  • 采用容量小、结构简单的Cache
  • 虚拟Cache
  • 流水化写

5.5.1 容量小、结构简单的Cache

在这里插入图片描述

5.5.2虚拟Cache

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.6 主存

  • 存储层次的性价比特征
  • 速度越快,每位价格就越高;
  • 容量越大,每位价格就越低;
  • 容量越大,速度越慢。

在这里插入图片描述
在这里插入图片描述

  • 主存的主要性能指标:延迟和带宽
  • 以往:Cache主要关心延迟,I/O主要关心带宽
  • 现在:Cache关心两者
  • 本节讨论几种提高主存性能的存储器组织技术在下面的讨论中,以处理Cache失效为开销例来说明各种存储器组织结构的好处。

在这里插入图片描述

5.6.1 存储器组织技术

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.6.2 存储器芯片技术

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.7 虚拟存储器

5.7.1 存储器基本原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.7.2 块表TLB

在这里插入图片描述
在这里插入图片描述

5.7.3 虚拟内存和Cache关系

在这里插入图片描述

5.8 进程保护和虚拟存储实例

5.8.1 进程保护

在这里插入图片描述

5.8.2 页式虚拟举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值