计算机存储体系:量化分析与并行存储
任何一个单一的存储器都难以同时完成容量大,速度快,价格便宜的需求,所以这个时候较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。
为什么可以怎么做?有两个理由
- 局部性原理
- 加快经常性事件
思路是将经常使用的局部性程序和数据放到更快,更小,但更贵的存储器中
这就需要用采用量化分析来判断存储系统的好坏
存储器性能的量化
首先,如何定量衡量一个存储器的好坏?主要是容量和速度,以及价格C
- 容量\(S\):
存储器容量\(S_M=Wlm\)
\(w\):存储器字长
\(l\):字数
\(m\):并行工作存储体的个数
- 速度(访问时间)
访问时间\(T_A\):从接到访存读申请,到信息被读到数据总线上所需的时间
访存周期\(T_M\):连续启动一个存储体所需要的间隔时间,即两次存取操作所需要的最小时间间隔
带宽\(B_m\):存储器可提供的数据传送速率,单位时间内能传送二进制字节数
如果采用最简单的单体单字的存储器
意味着字长与CPU字长相同,每一次只能访问一个存储字,即:\(B_m = \frac{W}{T_m}\)
并行存储系统
怎样可以提高带宽呢?
如果在一个访存周期内可以并行访问多个存储字,能有效提高存储器的带宽。
单体多字存储器
如图。一次可以取四个字,所以易得有\(B_m=W*4/T_m\)
逻辑实现:把地址码分成两个部分
一部分仍作为存储器的地址,另一部分负责从m个数据中选择一个数据
这个方法并不好,会有很多问题:
-
如果一次读取的m个指令字中有分支跳转指令,而且成功了,意味着该指令后面的指令是无用的。
-
这一次取到的m个数据不一定都是有用的,假设当前的指令需要多个操作数,也不一定正好全部一次取到。
-
假设这个存储周期存在对同一个存储单元的写和读,写入之后那读的操作就发生错误了。
多体单字存储器
由多个单体存储器构成,每个都有自己的地址寄存器以及地址译码和读/写驱动等电路
存储器的每个存储单元都要给定一个地址才能被访问到。并行存储器是由多个存储体组成,并行存取可以加快存取速度,但是这和编址方法有关。
如何编址?存储器是按顺序编址的。所以要建立一维数组与二维矩阵之间的转化
分为高位交叉和低位交叉,也叫做按列优先编址和按行优先编址
- 高位交叉编址
高位交叉编址是对存储单元按体内地址顺序存放,每个存储体内的地址是连续
这种编址方法如果每次都只访问一个存储体,对单处理机而言就没有并行的效果
- 低位交叉编址
这种编址方法是横向的,连续的地址分布在相邻的存储体中,这样对于一个存储体,地址不是连续的,对于单处理及可以并行存取。
分时启动
m个存储体分时启动,实际上是一种采用流水线方式工作的并行存储器。
在每个存储周期内,分时启动m个存储体,如果每个存储体的访问周期是\(T_M\),则时间间隔是\(t=\frac{T_M}{m}\)
那么是不是\(m\)越多越好,并不是。
原因:
1)模m越高,存贮器数据总线越长,导致传输延迟增加;
2)系统效率问题,对于顺序取指,效率可以提高m倍,但遇到转移指令,效率就会下降。
存储系统的量化分析
上文总结了单一存储器的量化分析,现在来分析一下对于整个存储系统,如何量化判断?
多级层次结构
首先简单了解一下存储系统的多级层次结构
容量:
\(S_1<S_2<S_3<S_n\)
速度:
\(M_1>M_2>M_3>M_4\)
这个存储系统要达到的目标,从CPU看,存储系统的速度接近于\(M_1\),而容量接近于\(M_n\)。
大部分的访问要尽量在\(M_1\)完成
存储系统的性能参数
为了简化分析,我们从两级存储系统进行考虑
- 每位价格\(C\)
\(C=\frac{C_1S_1+C_2S_2}{S_1+S_2}\)
当\(S_1<<S_2\),\(C\)约等于\(C_2\)
- 命中率\(H\)与不命中率\(F\)
命中率就CPU访问存储系统时,在\(M_1\)中找到所需信息的概率
\(N_1\)代表在\(M_1\)找到信息的次数
\(H=\frac{N_1}{N_1+N_2}\)
\(F=1-H\)
- 等效访问时间
可以分两种情况考虑:
- 命中\(T_1\):访问时间为\(T_1\),命中的概率为\(H\)
- 不命中\(T_M\):从\(M_2\)发出访问请求到整个数据块装入\(M_1\)所需要的时间:\(T_2+T_B\)
\(T_B\)是传送一个信息块的时间。
还需要再加上\(T_1\)
所以等效访问时间:
根据等效时间得出访问效率:
\(r\)是指相邻两级的访问时间比\(\frac{T1}{T_2}\),不考虑传送时间的情况下。
这个式子证明若要提高访问效率,要提高命中率\(H\),但是命中率\(H\)与程序和其他方面有关,比较难提高,通过系统结构解决的方法是降低访问时间比\(r\)
通过下面的方法来实现:
-
减小相邻两级的访问速度差距
-
减小相邻两级存贮器的容量差
这也证明了cache与主存访问速度不能差距太大
来源
[1] 计算机系统结构课本
[2] 计算机系统结构 华中科技大学 中国大学MOOC