本文共 3046 字,大约阅读时间需要 10 分钟。
计算机系统结构设计中关键的问题之一 :
- 如何以合理的价格,设计容量和速度都满足计算机系统要求的存储器系统?
要求:容量大、速度快、价格低
解决方法:采用多种存储器技术,构成多级存储层次结构。
程序访问的局部性原理
:
对于绝大多数程序来说,程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的。
程序访问的局部性包含两个方面 :
存储系统的多级层次结构
假设第 i i i个存储器 M i M_{i} Mi的访问时间为 T i T_{i} Ti,容量为 S i S_{i} Si,平均每位价格为 C i C_{i} Ci
整个存储系统要达到的目标:
出于讨论方便,仅考虑两级存储层次 M 1 M_{1} M1和 M 2 M_{2} M2
- M 1 M_{1} M1的参数: S 1 S_{1} S1, T 1 T_{1} T1, C 1 C_{1} C1
- M 2 M_{2} M2的参数: S 2 S_{2} S2, T 2 T_{2} T2, C 2 C_{2} C2
存储容量S
一般来说,整个存储系统的容量即是第二级存储器 M 2 M_{2} M2的容量,即 S = S 2 S = S_{2} S=S2。
每位价格C
C = C 1 S 1 + C 2 S 2 S 1 + S 2 当 S 1 < < S 2 时 , C ≈ C 2 C = \frac{C_{1}S_{1} + C_{2}S_{2}}{S_{1} + S_{2}}\\ \text{当} S_{1} << S_{2} \text{时}, C \approx C_{2} C=S1+S2C1S1+C2S2当S1<<S2时,C≈C2
命中率H
和不命中率F
命中率:CPU访问存储系统时,在 M 1 M_{1} M1中找到所需信息的概率。
H = N 1 N 1 + N 2 H = \frac{N_{1}}{N_{1} + N_{2}} H=N1+N2N1 其中:不命中率 : F = 1 - H F=1-H F=1-H
平均访问时间 T A T_{A} TA
T A = H T 1 + ( 1 - H ) ( T 1 + T M ) = T 1 + ( 1 - H ) T M = h 1 t 1 + ( 1 − h 1 ) h 2 t 2 + ( 1 − h 1 ) ( 1 − h 2 ) h 3 t 3 . . . . \begin{aligned} T_{A} &= HT_{1}+(1-H)(T_{1}+T_{M}) \\ &= T_{1}+(1-H)T_{M} \\ &= h_{1}t_{1}+(1-h_{1})h_{2}t_{2}+(1-h_{1})(1-h_{2})h_{3}t_{3} .... \end{aligned} TA=HT1+(1-H)(T1+TM)=T1+(1-H)TM=h1t1+(1−h1)h2t2+(1−h1)(1−h2)h3t3.... 分两种情况来考虑CPU的一次访存:T 2 + T B + T 1 = T 1 + T M T M = T 2 + T B \begin{aligned} T_{2}+T_{B}+T_{1}\ &=\ T_{1}+T_{M} \\ T_{M} &= T_{2} + T_{B} \end{aligned} T2+TB+T1 TM= T1+TM=T2+TB
其中:
例题 存储器层次结构的设计
存储系统参数表如下:
存储器层次 存取时间 容量 成本/KB 高速缓存 t 1 = 25 n s t_{1} = 25ns t1=25ns s 1 = 512 K B s_{1} = 512KB s1=512KB $c_{1} = $1.25$ 主存 t 1 t_{1} t1未知 s 1 = 32 M B s_{1} = 32MB s1=32MB $c_{2} = $0.2$ 磁盘阵列 t 3 = 4 n s t_{3} = 4ns t3=4ns s 3 s_{3} s3未知 $c_{3} = $0.0002$ 利用下列存储器特性来设计一个3层的层次结构存储器。设计目标是使 T e f f = 10.04 μ s T_{eff} =10.04μs Teff=10.04μs,而高速缓存命中率 h 1 = 0.98 h_{1}=0.98 h1=0.98,主存命中率 h 2 = 0.9 h_{2}=0.9 h2=0.9。同时,存储器总成本上限是$15,000。
解:
总成本为 C = c 1 s 1 + c 2 s 2 + c 3 s 3 < 15 , 000 C = c_{1}s_{1}+c_{2}s_{2}+c_{3}s_{3} < 15,000 C=c1s1+c2s2+c3s3<15,000
T e f f = h 1 t 1 + ( 1 − h 1 ) h 2 t 2 + ( 1 − h 1 ) ( 1 − h 2 ) h 3 t 3 T_{eff} = h_{1}t_{1}+(1-h_{1})h_{2}t_{2}+(1-h_{1})(1-h_{2})h_{3}t_{3} Teff=h1t1+(1−h1)h2t2+(1−h1)(1−h2)h3t3
可以看成是由
“Cache—主存”
层次和“主存—辅存”
层次构成的系统。
三级存储系统
三级存储系统的作用
“Cache-主存”
层次:弥补主存速度的不足“主存-辅存”
层次: 弥补主存容量的不足“Cache-主存”与“主存-辅存”层次的区别
映象规则
:当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上?查找算法
:当所要访问的块在高一层存储器中时,如何找到该块?替换算法
:当发生不命中时,应替换哪一块?写策略
:当进行写访问时,应进行哪些操作?转载地址:http://ugri.baihongyu.com/