第三章 存储系统
( 现代计算机系统都以存储器为中心
( 在计算机运行过程中,存储器是各种信息存储和交换的中心
本章主要内容:
3.1 存储系统原理
3.2 虚拟存储器
3.3 高速缓冲存储器(Cache)
3.4 三级存储系统
3.1 存储系统原理什么是存储系统(或存储体系、存储器层次)?
为什么研究存储系统?
存储系统的性能指标如何表示?
如何构成存储系统?
3.1.1 存储系统的定义
3.1.2 存储器的层次结构
3.1.3 存储器的频带平衡
3.1.4 并行存储器
3.1.1 存储系统的定义
( 在一台计算机中,通常有多种存储器主存储器、Cache、通用寄存器、磁盘存储器、各种缓冲存储器、磁带存储器、光盘存储器等构成存储器的材料:ECL,TTL,MOS,磁表面存储器,光存储器。静态存储器SRAM、动态存储器DRAM
存储器的访问方式:直接译码、随机访问、相联访问、块交换、文件组、手工加载等
( 存储器的主要性能指标:速度、容量和价格速度用存储器的访问周期、读出时间、频带宽度等表示。
容量用字节B、千字节KB、兆字节MB和千兆字节GB等表示。
价格用单位容量的价钱表示,例如$C/bit。
1、存储系统(或存储体系、存储层次)的定义
两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个系统。这个系统对应用程序员透明,并且,从应用程序员看,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。
……
从外部看:
T≈min(T1,T2,……,Tn),用存储周期表示
S=max(S1,S2,……,Sn),用MB或GB表示
C≈min(C1,C2,……,Cn),用每位的价格表示图3.2 存储系统原理
( 在一般计算机系统中,主要有两种存储系统:
(1) Cache存储系统:由Cache和主存储器构成
主要目的:提高存储器速度
(2) 虚拟存储系统:由主存储器和磁盘存储器构成
主要目的:扩大存储器容量分析由两个存储器组成的存储系统,容量、速度和价格关系。
应用程序员看:
速度接近主存储器,存储容量是虚拟地址空间,每位价格接近磁盘存储器。
虚拟存储系统
系统程序员看:
速度接近Cache,存储容量等于主存,每位价格接近主存储器。
Cache存储系统
(S,C,T)
图3.5 由两个存储器构成的存储系统
2、存储系统的容量
( 要求:存储系统的容量等于M2存储器的容量
提供尽可能大的地址空间,且能够随机访问
( 方法有两种:
只对M2存储器进行编址,M1存储器只在内部编址
另外设计一个容量很大的逻辑地址空间
3、存储系统的单位容量平均价格
( 计算公式:
( 当S2》S1时,C≈C2
但S2与S1不能相差太大
4、存储系统的速度
( 表示方法:访问周期、存取周期、存储周期、存取时间等
( 命中率定义:在M1存储器中访问到的概率

其中:N1是对M1存储器的访问次数
N2是对M2存储器的访问次数
( 访问周期与命中率的关系:
T=HT1+(1-H)T2
当命中率H→1时,T→T1
( 存储系统的访问效率:

访问效率主要与命中率和两级存储器的速度之比有关例3.1:假设T2=5T1,在命中率H为0.9和0.99两种情况下,分别计算存储系统的访问效率。
解:当H=0.9时,e1=1/(0.9+5(1-0.9))=0.72
当H=0.99时,e2=1/(0.99+5(1-0.99))=0.96
( 提高存储系统速度的两条途径:
一是提高命中率H
二是两个存储器的速度不要相差太大其中:第二条有时做不到(如虚拟存储器),因此,
主要依靠提高命中率例3.2:在虚拟存储系统中,两级存储器的速度相差特别悬殊T2=105 T1。如果要使访问效率e=0.9,问需要有多高的命中率?
解:
0.9H+90000(1-H)=1
89999.1H=89999
计算得H=0.999998888877777…≈0.999999
5、采用预取技术提高命中率
( 方法:不命中时,把M2存储器中相邻几个单元组成的一个数据块都取出来送入M1存储器中。
( 计算公式:
其中:H’是采用预取技术之后的命中率
H是原来的命中率
n为数据块大小与数据重复使用次数的乘积证明:采用预取技术,不命中率降低n倍:

也可以采用另外一种证明方法:
在原有命中率计算公式中,把访问次数扩大到n倍,这时,由于采用了预取技术,命中次数为:nN1+(n-1)N2,不命中次数仍为N2,因此新的命中率为:

例3.3:在一个Cache存储系统中,当Cache的块大小为一个字时,命中率为H=0.8;假设数据的重复利用率为5,计算Cache的块大小为4个字时,Cache存储系统的命中率是多少?假设T2=5T1,分别计算访问效率。
解:n=4×5=20,采用预取技术之后,命中率提高到:

Cache的块大小为一个字时,H=0.8,访问效率为:
e1=1/(0.8+5(1-0.8))=0.55…
Cache的块大小为4个字时,H=0.99,访问效率为:
e2=1/(0.99+5(1-0.99))=0.96
例3.4:在一个虚拟存储系统中,T2=105 T1,原来的命中率只有0.8,现采用预取技术,访问磁盘存储器的数据块大小为4K字,如果要求访问效率不低于0.9,计算数据在主存储器中的重复利用率至少为多少?
解:假设数据在主存储器中的重复利用率为m,根据前面的给出关系:

解这个方程组,得到m=44,即数据在主存储器中的重复利用率至少为44次。
3.1.2 存储器的层次结构
( 多个层次的存储器:Register Files ( Buffers(Lookahead) ( Cache
( Main Memory ( Online Storage ( Off-line Storage
如下图所示,如果用i表示层数,则有:
工作速度:Ti<Ti+1,
存储容量:Si<Si+1,
单位价格:Ci>Ci+1,
CPU内部
第1层
第2层
第3层
第4层
第5层
第6层
存储器的层次结构
各级存储器的主要主要性能特性存储器层次
通用寄存器
缓冲栈
Cache
主存储器
磁盘存储器
脱机存储器
存储周期
<10ns
<10ns
10~60ns
60~300ns
10~30ms
2~20min
存储容量
<512B
<512B
8KB~2MB
32MB~1GB
1GB~1TB
5GB~10TB
价格$C/KB
1200
80
3.2
0.36
0.01
0.0001
访问方式
直接译码
先进先出
相联访问
随机访问
块访问
文件组
材料工艺
ECL
ECL
SRAM
DRAM
磁表面
磁、光等
分配管理
编译器分配
硬件调度
硬件调度
操作系统
系统/用户
系统/用户
带宽(MB/S)
400~8000
400~1200
200~800
80~160
10~100
0.2~0.6
CPU与主存储器的速度差距越来越大
1955年,第一台大型机IBM 704,CPU和主存储器的工作周期均为12微秒,
目前,CPU的工作速度提高了4个数量级以上,
主存储器的工作速度仅提高两个数量级,
今后,CPU与主存储器的速度差距会更大研究存储系统的目的就是要找出解决这一问题的办法。
3.1.3 存储器的频带平衡
( 计算机系统中各级存储器的频带应该达到平衡例如:有一台速度为500MIPC的计算机系统,主存储器的各种访问源的频带宽度如下:
CPU取指令:500MW/s
CPU取操作数和保存运算结果:1000MW/s
各种输入输出设备访问存储器:50MW/s
三项相加,要求存储器的频带宽度不低于1550MW/s。
访问周期不大于0.64ns。实际上目前作为主存储器的工作周期为100ns左右,两者相差150多倍。
( 解决存储器频带平衡方法
(1) 多个存储器并行工作(本节)
(2) 设置各种缓冲存储器(第五章)
(3) 采用存储系统(本章下两节)
3.1.4 并行存储器主要内容:
并行访问存储器交叉访问存储器无访问冲突并行存储器
1 并行访问存储器
( 方法:把m字w位的存储器改变成为m/n字n×w位的存储器
多路选择器
数据寄存器MBR
……
MBR
……
………
存储体
(m字×w位)
存储体(m/n字×nw位)
地址寄存器MBR
MAR
一般存储器 并行访问存储器
( 逻辑实现:把地址码分成两个部分,
一部分仍作为存储器的地址
另一部分负责从n个数据中选择一个数据
( 主要缺点:访问冲突大
(1) 取指令冲突
(2) 读操作数冲突。
(3) 写数据冲突
(4) 读写冲突
2、高位交叉访问存储器
( 主要目的:扩大存储器容量
( 实现方法:用地址码的高位部分区分存储体号
( 参数计算方法
m:每个存储体的容量,地址码的低log2 m位为体内地址
n:总共的存储体个数,地址码的高log2 n位控制各个存储体工作
j:存储体的体内地址,j=0,1,2,...,m-1
k:存储体的体号,k=0,1,2,...,n-1
存储器的地址:A=m×k+j
存储器的体内地址:Aj=A mod m。
存储器的体号Ak:Ak=。
MBA
MBR
MBR
0..00..0
.
.
.
0..0F..F
存储体0
0..10..0
.
.
.
0..1F..F
存储体1
...
F..F0..0
.
.
.
F..FF..F
存储体n-1
MAR
MAR
MAR
…
译码器
(高位)
存储器地址寄存器(低位)
高位交叉访问存储器的结构
MBR
MBR
MBR
0..00..0
0..10..0
.
.
F..F0..0
存储体0
0..00..1
.
.
.
F..F0..1
存储体1
......
0..0F..F
.
.
.
F..FF..F
存储体n-1
MAR
MAR
MAR
…
译码器
存储器地址寄存器(高位)
(低位)
低位交叉访问存储器的结构
3、低位交叉访问存储器。
( 主要目的:提高存储器访问速度
( 实现方法:用地址码的低位部分区分存储体号
( 参数计算方法存储器地址A的计算公式为:A=n×j+k
存储器的体内地址:Aj=
存储器的体号Ak=A mod n n=8,j=2,k=3
( 地址是编码方法:
主存储器数据寄存器
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
体内地址(3位)
模块地址(3位)
主存储器地址寄存器(6位)
由8个存储体构成的主存储器的低位交叉编址方式
( n个存储体分时启动实际上是一种采用流水线方式工作的并行存储器理论上,存储器的速度可望提高n倍每存储体的启动间隔为:t=
其中,Tm为每个存储体的访问周期,
n为存储体个数。
0号存储体
1号存储体
2号存储体
······
n-1号存储体
( t (
(----存储体周期Tm ---(
低位交叉编址主存储器的分时启动
( 访问冲突
n个存储体,每个存储周期只能取到k个有效字。其余n-k个存储体冲突。
假设p(k)是k的概率密度函数,即p(n)是k=n的概率。k的平均值为:

定义转移概率为g,即读出的是转移指令,且转移成功的概率。
这时有:p(1)=g 从第一个存储体读出的就是转移指令且转移成功
p(2)=(1-p(1))g=(1-g)g
p(3)=(1-p(1)-p(2))g=(1-g)2g
……
p(k)=(1-g)k-1g,其中k=1,2,……,n-1
p(n)=(1-g)n-1。
则:N=1g+2(1-g)g+3(1-g)2g+…+(n-1)(1-g)n-2g+n(1-g)n-1
N=g+(1-g)g+(1-g)2g+…+(1-g)n-2g
+(1-g)g+(1-g)2g+…+(1-g)n-2g
+(1-g)2g+…+(1-g)n-2g

+(1-g)n-2g ;共n-1行
+n(1-g)n-1
N=1-(1-g)n-1
+(1-g)-(1-g)n-1
+(1-g)2-(1-g)n-1+…
+(1-g)n-2-(1-g)n-1+n(1-g)n-1
N=1+(1-g)+(1-g)2+…+(1-g)n-2+(1-g)n-1
化简后得到:
并行存储体个数与程序转移概率的关系存储体个数
g=0.01
g=0.1
g=0.2
g=0.3
g=0.4
4
3.94
3.44
2.95
2.53
2.18
8
7.73
5.70
4.16
3.14
2.46
16
14.85
8.15
4.86
3.32
2.50
32
27.50
9.66
5.00
3.33
2.50
几台巨型、大型计算机的主存储器结构机器型号
存储体个数n
存储体字长w
存储周期Tm
频带宽度Bm
IBM370/165
4
32
2,000ns
8MB/s
CDC6600
32
32
1,000ns
128MB/s
CDC7600
32
32
275ns
465MB/s
CRAY-1
16
64
50ns
2,560MB/s
ASC
8
256
160ns
1,600MB/s
STAR-100
32
512
1,280ns
1,600MB/s
提高加速比的其他方法:
设置指令和数据缓冲存储器,
低位交叉访问方式与Cache配合。
例3.6:Star-100巨型机存储系统采用并行和交叉相几何的方式工作,有32个存储体低位交叉,每次并行读写512位,存储周期为1.28um(磁心存储器),处理机字长32位,计算它的频带宽度Bm和峰值速度T。
解:因为:n=32,w=512,Tm=1280ns,
Bm=n w/tm=32(512b/1280ns
=12.8Gb/s
=1.6GB/s
=400MW/s
T=2.5ns,
与Tm相比,峰值速度提高512倍。