4.1 基本概念
4.1.1 存储体制及其分支
存储体系是让构成存储体系系统的几个不同的存储器(M1~Mn)之间,配上辅助软、硬件或辅助软件,使之从应用程序员角度来看,它们在逻辑上是一个整体。速度是M1的,容量是Mn的。
4.1.2 存储体系的构成依据
程序的局部性原理
4.1.3 存储体系的性能参数
4.2 存储体系的构成依据
主存-虚拟存储器-辅存
4.2.1 虚拟存储器的管理方式
虚拟存储器通过增设地址映像表机构来实现程序在主存中的定位。
1. 段式管理
将主存按段分配的存储管理方式成为段式管理。
多用户虚地址:基号 + 段号 + 段内位移;
基号:系统分配给程序,使用基号指明程序使用哪个基址寄存器;
段表基址寄存器:段表长度+段表基地址;
段表:段名(段号)+ 地址 + 装入位 + 段长 + 访问方式(rwx)
查找过程:
- 使用基号找到对应的基址寄存器,获取到段表基地址(段表起始地址)
- 找到对应段表,根据段号找到该段的起始地址,若装入位为0,从辅存中加载入主存,并将该段装入位置1;若装入位为1,获取该段起始地址
- 使用段起始地址+段内位移,得到要访问的实际地址,其间还可以使用段长进行越界判断;访问方式字段标记了该段允许的访问方式,以提供段的访问方式保护
2.页式管理
把主存空间和程序空间都机械地等分成固定大小的页,按页顺序编号,通过页表设置虚页与实页的对应关系(虚页号与实页号的对应关系)。
多用户虚地址:用户号 + 虚页号 + 页内位移;
用户号:系统分配给程序,使用用户号指明程序使用哪个基址寄存器;
页表基址寄存器:页表基地址;
页表:虚页号 + 装入位 + 实页号
查找过程:
- 使用用户号找到对应的基址寄存器,获取到页表基地址(页表起始地址)
- 找到对应页表,根据虚页号找到该页的起始地址,若装入位为0,从辅存中加载入主存,并将该页装入位置1;若装入位为1,获取该页起始地址
- 使用页起始地址+页内位移,得到要访问的实际地址
3.段页式管理
将主存机械地等分成固定大小的页,程序按模块分段,每个段又分成与实主存页面大小相同的页。程序通过一个段表和相应的一组页表进行定位。
4.2.2 页式虚拟存储器的构成
1.地址的映像与变换
地址的映像是将每个虚存单元按某种规则(算法)装入(定位于)实主存,建立起多用户虚地址与实(主)存地址之间的对应关系。
地址的变换是指程序按照这种映像关系装入实存后,在执行中,如何将多用户虚地址变换成对应的实地址。
2.页面替换算法
- 随机算法(RAND):随机替换
- 先进先出算法(FIFO):将最早装入主存的页作为被替换的页
- 近期最少使用算法(LRU):将近期最少访问的页作为被替换页
3.虚拟存储器工作的全过程
- 判断是否在主存,是的话直接获取地址
- 判断是否在辅存,是的话转换为辅存的实地址,否则去查找磁盘等
- 获取对应页,加入主存
- 主存未满,直接加入,否则页面替换,更新页表
4.2.3 页式虚拟存储器实现中的问题
1. 页面失效的问题
2. 提高虚拟存储器等效访问速度的措施
TLB(快表)
页表可能会非常大,从而占用内存也非常大,因此通常也对页表进行分页,存储到虚拟内存中。
快表存储的是页表的一部分,在查找时,先查快表,若命中,则得到物理地址;否则就去查页表,得到物理地址。
优化:经过散列访问TLB
散列算法缩小虚地址查找范围后,再查TLB
3. 影响主存命中率和CPU效率的某些因素
论点1:当分配给某道程序的主存容量S1一定时,随着页面大小Sp由很小开始增大,命中率H先逐渐增大,到达某个最大值后又减小。同时,分配给该道程序的容量S1增大可普遍提高命中率,达到最高命中率时的页面大小Sp页可以大一些。
论点2:分配给某道程序的容量S1的增大也只是在开始时对H提高有明显作用。
4.3 高速缓冲存储器(Cache)
CPU-Cache-主存
4.3.1 工作原理和基本结构
高速缓冲(Cache)存储器是为弥补主存速度的不足,在处理机和主存之间设置衣蛾高速、小容量的Cache,构成Cache-主存存储层次,使之从CPU角度来看,速度接近于Cache,容量却是主存的。
组成部分:
- 有效位字段:标识数据字段和标志字段的是否有效
- 标志字段:保存相应主存单元的地址信息
- 数据字段:保存从主存单元复制过来的信息
基本运行原理
- CPU发出一个地址,首先来找Cache,如果命中,直接返回数据
- miss的话,去主存找,找到后将它载入主存,同时将数据给CPU
4.3.2 地址的映像与变换
对于Cache存储器而言,地址的映像就是将每个主存块按某种规则装入Cache中;地址的变换就是每次访Cache时怎样将主存地址变换成Cache地址。
块冲突:指出现了主存块要进入Cache中的块位置已经被其他主存块所占用了。
1. 全相联映像和变换
主存中任意一块都可映像装入到Cache中任意一块位置
2. 直接映像及其变换
把主存空间按Cache大小等分成区,每区内的各块只能按位置一一对应到Cache的相应块位置上
3. 组相联映像及其变换
组相联映像指的是各组之间是直接映像,而组内各块之间是全相联映像
4.3.3 替换算法
- 随机算法(RAND)
- 先进先出算法(FIFO)
- 近期最少使用算法(LRU)
4.3.4 Cache存储器的透明性及性能分析
1. Cache存储器的透明性分析及解决办法
写策略是区分不同Cache设计方案的一个重要标志,用于解决CPU写Cache使主存内容跟不上Cache对应内容变化造成不一致的问题。
写回法(Write back)
执行“写”操作时,只写入Cache,仅当Cache中相应的块被替换时,才写回主存(设置“修改位”)
优点:速度快,所使用的存储器带宽较低
写直达法(Write Through)
执行“写”操作时,不仅写入Cache,而且也写入下一级存储器
优点:易于实现,一致性好
多个 Cache的一致性分析(CPU多核,每个核有一个Cache)
写作废协议
在处理器对某个数据项进行写入之前,保证它拥有对该数据项的唯一的访问权。(作废其他副本)
写更新协议
当一个处理器对某数据项进行写入时,通过广播使其他Cache中所有对应该数据项的副本进行更新。
2. Cache的取算法
采用合理的预取法
3. Cache性能分析
块的大小、组的大小与Cache容量对Cache的命中率都有影响
容量越大,命中率越高
块的大小越大,命中率越高
组的大小越大,命中率越高
4.4 三级存储体系
Cache-主存-辅存
现代计算机特点:
- 既有虚拟存储器,又有Cache存储器
- 程序用虚地址访存
- 要求速度接近Cache,容量是辅存的
4.4.1 物理地址Cache
使用物理地址访问Cache和内存
4.4.2 虚地址Cache
直接用虚拟地址访问Cache和内存
4.4.3 全Cache
直接就是Cache-辅存