第五章 存储系统
存储系统的层次结构
层次结构概述
存储器性能指标
- 存储容量:\(S_M=w·l·m,w,l,m为存储体的字长,字数,个数\)
- 存取速度:
访问时间\(T_A\)—接受命令-操作完成的时间
存取周期\(T_M\)—两次操作请求的最短间隔时间
\(T_M=T_A+T_{恢复}\) - 传输速度:
MEM带宽(\(B_M\))—最大数据传输率(最小数据间隔的倒数)
\(B_M=\frac{m·w}{T_M}\)
层次结构引入
- MEM用户需求:大容量、高速度、低价格(相互矛盾)
- 为达到需求,采用多种存储器技术,构成多级存储器层次结构
- 程序访问的局部性原理(理论支持):
程序运行时,指令和数据访问所呈现出的相对簇聚现象
时间局部性—最近访问过的信息,将再次被访问
空间局部性—最近访问信息的相邻信息,将很快被访问 - MEM用户需求解决方案:
MEM组成— 层次结构的快速MEM(近期常用数据,速度保证,容量小)+慢速MEM(近期未用数据,价格保证,容量大
存储系统的层次结构
- 结构与1组成
多级MEM级联,按速度分层,协调工作 - 工作方式:
信息存储—上级MEM中信息为下级MEM中信息的副本
信息传递—外部只访问\(M_1\),内部各级MEM间透明地传递信息
存储系统性能参数
- 存储容量
有效容量\(S=S_{M_n}\) - 每位平均价格
- 命中率(H)
\(H=\frac{N_1}{N_1+N_2+\dots +N_n}\)
缺失率(F)—F=1-H - 平均访问时间\(T_A\):
\(T_A=H·T_1+(1-H)(T_{A2}+T_1)=T_1+(1-H)T_{A2} =T_{命中}+F·T_{缺失}\)(\(T_{缺失}\)指缺失引起的停顿时间
注:\(T_1\)即为命中时间,当不命中时,访问的字不在M1中,需要从M2把包含要访问的字的块(或页面)传送到M1,之后M1才可在M1中访问 - 层次结构实现要求
层次结构组织
存储系统的层次数量
- 常用的层次数量
Cache-主存-辅存,以主存为中心(即CPU只访问主存,按主存地址访存)
层次管理单元的组织
- 主要功能:实现层次管理,地址变换
- 涉及内容:
访问地址类型,层间信息交换单位,层次管理实现方式 - 存储层次的访问地址类型
图// - 层间信息的交换单位
减少\(T_A\)的方法—一次交换多个字,采用猝发传送(成组传送)
即\(T_{n个字}=T_{地址}+n*T_{传输}\) <—存取与传输重叠
设计依据—各个层次的平均时延大体相等 <—消除瓶颈
设计结果—MEM里CPU越远,n越大;n通过量化分析得
- 层次管理实现方式:
依据—满足性能,性/价要求
结果—Cache-主存用硬件实现(目标是速度,主存-辅存用软件实现(管理表太大,兼顾成本
层次MEM结构
- MEM空间管理
编制单位=访问地址的单元长度
交换粒度=两种(面向上层及下层) - 工作原理:地址变换,数据访问,数据写回
实现问题:映射规则,查找方法,替换算法,写策略
- 硬件组成:
- 性能优化
Cache的基本知识
基本工作原理
Cache基本组成
- 存储空间管理:
信息交换基本单位—Cache-CPU间为字,Cache-主存间为块
信息交换管理—目录表(Cache-主存的映射) - 组成:存储体,控制器(目录表+比较器+替换机构+读写机构
cache的工作原理
- 完成访问过程
地址变换—数据访问—数据写回主存 - 实现技术
映射规则,查找方法,替换算法,写策略 - 实现要求
全部由硬件完成
实现技术
映射规则
-
任务:确定一个主存块可放到哪些Cache行(候选行)中
-
性能指标: 块调入时的冲突率
-
常见映射:直接,全相联,组相联
-
性能分析:全相联<组相联<<直接
-
常见选择:组相联方式(全相联查找/替换成本太高)
查找方法
- 任务:如何查找目标行
- 性能指标: 查找速度、成本
- 常见方法:按地址查找(并行,cache目标是提高速度)、按内容查找(相联MEM)
- 性能分析: 速度—必须相近 成本—直接<组相联<<全相联
- 常见选择: 按地址并行查找(性/价较好)
- Cache命中时的工作过程
1.取目录项(即行的管理信息),可同时取缓存块
2.比较是否命中,可同时取或改变块内数据
3.通知操作是否完。
替换算法
-
任务: 确定从候选行中如何选出一个牺牲块(行)
-
性能指标: 对命中率的影响程度,算法的实现成本
-
常见算法
-
LRU算法的硬件实现
写策略
- 任务:处理机进行“写”访问时,往Cache写入新数据后,由于Cache内容是主存内容的一个副本,这就导致Cache和主存内容不一致。因此要更新主存。何时
更新是写策略要解决的问题。 - 性能指标; 对\(T_A\)、总线占用程度的影响
- 常见策略:
全写法:不久把数据写入Cache中相应的块,也写入下一级存储器。这样下一级存储器中的数据就是最新的
写回法:只把数据写入Cache,不写入下一级存储器,这样有些数据的最新版本就在Cache中,只有数据在相应的块被替换时,才写回下一级存储器
为此设置一个“修改位”,用于指出该块是否被修改过。当一个块被替换时,若没被修改过,不必写回下一级存储器 - 写不命中处理方案:
不按写分配法(用于全写法):写不命中时,直接写入下一级存储器而不将相应的块调入Cache(也被称为绕写法)
按写分配法(用于写回法):写不命中时,先把所写单元所在块从主存调入Cache,然后进行写入(写时取)
Cache性能分析
Cache性能优化
降低Cache缺失率
- 缺失的类型
强制缺失—第一次访问一个块时,该块便不在Cache中,需从下一级存储器中调入Cache
容量缺失—执行时所需的块不能全部调入Cache中,当某些块被替换后,若游重新被访问,就会发生不命中
冲突不命中—组相联或直接映像Cache中,太多块映射到同一组(块)中,会出现某个块被别的块替换,又重新被访问的情况 - 缺失的影响因素
强制缺失—仅与块大小有关
容量缺失—与Cache容量、软件工作特性有关
冲突缺失—与相联度有关
降低缺失率的方法
1.增加Cache块大小
2.增加Cache容量
3.提高相联度
4.伪相联Cache
5.牺牲Cache
6.硬件预取

浙公网安备 33010602011771号