存储系统
4.1存储系统概述
4.1.1存储系统的层次结构
对存储器性能的基本要求:
- 大容量:放得下所有系统软件、多个用户软件
- 高速度:尽量和CPU匹配
- 低价格:只占整个计算机系统硬件价格中一个较小而合理的比例

存储体系的定义:
一般计算机系统中主要有两种存储系统:
- Cache存储体系:由Cache和主存储器构成;主要目的是提高存储器速度;对系统程序员以上均透明
- 虚拟存储体系:由主存储器和硬盘存储器构成;主要目的是扩大存储器容量;对应用程序员透明(看不见)。
4.1.2存储器分类

4.1.3存储器的性能指标
容量
速度
存取时间(访问时间):对存储器中某一个单元的数据进行一次存取所需要的时间;存取周期:连续对存储器进行存取时,完成一次存取所需要的时间;存储器带宽:单位时间里存储器可以读出或写入的字节数。
可靠性
功耗
价格
4.2内部存储器
4.2.1随机读写存储器RAM
一、内部结构
1.内部译码结构
(1)一维译码
适用于容量很小的芯片。如容量在几百个存储单元以内的芯片。

(2)二维译码

2.单元电路
(1)静态读写存储器(SRAM)

(2)动态读写存储器DRAM

二、主存储器的组成与接口
2.内存构成
(1)单片存储器芯片的链接

(2)字扩展
(3)内存的位扩展


4.2.2只读存储器
特点:存储信息的非易失性。
分类:掩膜型ROM;可编程ROM(PROM、OTR-ROM);可擦可编程ROM(EPROM,闪速flash存储器)

4.2.3动态存储器
一、一般的动态存储器DRAM
行地址、列地址,二维译码结构
从引脚上地址数量减半;
刷新:以行为单位刷新
- 集中式:“死区”:存取周期0.5us * 256 ;“死时间率”:256个周期/8000 * 100%
- 分散式(分布式):前0.5us存取,后0.5us刷新,存取周期位0.5+0.5us。
- 异步式:刷新周期4ms/256周期 = 15.6us,每15.6us刷新一次。不会出现死区。

二、同步动态存储器SDRAM

4.2.5其他存储器
一、多端口存储器
二、多体交叉存储器
三、相联存储器
4.3高速缓冲存储器
4.3.1 Cache的工作原理
1.程序、数据的局部性原理:
- 时间局部性:循环变量i,使用后在不久的将来还会使用。
- 空间局部性:数组元素访问后,在不久的将来会访问与它相邻的元素。
2.Cache工作原理:

4.3.2地址映射
地址映象:把主存中的数据按照某种规则装入到Cache中,并建立主存地址与Cache地址之间的对应关系。
地址变换:当主存数据已经装入到Cache之后,在程序运行过程中,把主存地址变换为Cache地址。
以“块”为单位进行调换。
1.全相联
映射规则:主存的任意一块可以映象到Cache的任意一块。
特点:
- 块冲突概率低,Cache空间利用率高。
- 相联目录表容量大->成本高、查表速度慢。

2.直接映射
映射规则:主存的每一块只能映象到Cache的一个特定的块中。
整个Cache地址与主存地址的低位部分完全相同。
优点:
- 硬件简单,不需要相联存储器,只要
- 容量较小的按地址访问的区号标志表存储器;
- 少量外比较电路。
- 访问速度快(无需地址变换)。
缺点:
- Cache块冲突概率高。
- Cache空间利用率低。

3.组相联
区内直接映射,组内相联映射
优点:
- 块的冲突概率比较低;
- 块的利用率大幅度提高;
- 块的失效率明显降低。
缺点:实现难度和造价比直接映射高。

例题1:
例题2:
例题3:
Cache中存储的其他信息:
有效位;修改位(写回法);计数器(替换策略)。
4.3.3替换算法
直接映射不需要替换算法。
全相联、组相联:
- 随机替换算法 RAND
- 先进先出替换算法 FIFO
- 利用了历史信息
- 没有反映局部性——最先调入的,可能也是要使用的。
- 最不经常使用替换法 LFU:计数器位数多,实现困难。
- 近期最少使用(最久未用)替换算法 LRU:多/少->有/无。替换近期最久未用的块。
- 最佳替换算法 OPT
4.3.4主存与Cache内容的一致性问题
1.写回法

2.全写法(写直达法)


4.3.5Cache性能分析
1.加速比
- Cache-主存系统的平均访问周期(平均访问时间)TA:
- Cache的访问周期为Tc,主存的访问周期为Tm,数据块装入Cache的时间(包括替换开销)为Tb,Cache的命中率为H。
- 当命中率很高时,Cache系统的平均访问周期就接近于Cache的访问周期Tc。
- Cache-主存系统的加速比Sp:Sp=Tm/Ta
- 命中率愈高,加速比愈高。
2.成本
3.命中率与Cache容量的关系
4.命中率与块大小的关系
5.两级Cache
两级Cache的总为命中率(总失效率):
总失效率 =(失效率)第一级 *(失效率)第二级
4.4虚拟存储器
一、基本概念
虚拟存储器中有三种地址空间:
- 虚拟地址空间:程序员编程中用到的地址 -> 编译程序生成。
- 主存储器地址空间:实际主存的物理地址 -> CPU地址引脚。
- 辅存地址空间:磁盘存储器的地址。
地址映象:(全相联,LRU)把虚拟地址空间映象到主存地址空间。即把用户按虚拟地址编写的程序按照某种规则装入主存储器,并建立多用户虚地址与主存实地址之间的关系。
地址变换:在程序运行时,把虚地址变换成主存实地址。
因地址映象和变换方法不同,有三种虚拟存储器:
- 段式虚拟存储器
- 页式虚拟存储器
- 段页式虚拟存储器
二、段式虚拟存储器
每个程序段都从0地址开始编址,长度可长可短,可以在程序执行过程中动态改变程序段的长度。
段式虚拟存储器的地址变换:
主要优点:
- 程序的模块化性能好
- 便于多道程序共享主存中的某些段
- 程序的动态链接和调度比较容易
- 便于按逻辑意义实现存储器的访问方式保护
主要缺点:
- 地址变换所花费的时间长,两次加法
- 段映象表庞大,地址、段长字段太长
- 主存储器的利用率往往比较低——存储管理复杂;段间“零头”
- 对辅存(磁盘存储器)的管理比较困难
三、页式虚拟存储器
地址映象方法
地址变换方法:
四、段页式存储管理器
地址映象方法:
每个程序段在段表中占一行,在段表中给出页表长度和页表的起始地址,页表中给出每一页在主存储其中的实页号。
地址变换方法:
五、虚拟存储器地址变换带来的速度问题
快慢表法
快表:TB或TLB
- 小容量;高速硬件实现;采用相联方式访问。
慢表:
- 当快表中查不到时,从主存的慢表中查找;
- 慢表按地址访问,用软件实现。
快表与慢表也构成一个二级存储层次。
查表时,由虚页号同时查快表和慢表,如果在快表中找到,则立即使慢表查找作废。如果在快表中查不到,则经过一个访主存时间,从慢表中查到实页号,并将其送入主存实地址寄存器,同时将此虚页号和对应的实页号送入快表——LRU替换法。