6、7.1存储系统的基本知识
7.1.1 存储系统的层次结构
满足对三个指标的要求: 容量大 速度快 价格低
采用多级存储技术,构成多级存储结构层次
多级存储技术是一种计算机存储系统的组织方式,将计算机存储系统划分为多个层次,每个层次的存储介质速度和容量不同,以便在不同的应用场景下提供最优的性能和存储空间。多级存储技术的核心思想是通过增加低速、高容量存储介质来平衡高速、低容量存储介质的局限性,从而提高整个存储系统的性能和可靠性。
理论依据----程序的局部性原理
对于绝大多数程序来说,程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的。
时间局部性指的是,程序在一段时间内往往会重复访问相同的指令和数据,因此程序将要用到的信息很可能就是现在正在使用的信息。这种时间局部性可以通过缓存技术来利用,将常用的数据和指令缓存到快速访问的存储器中,从而加速程序的执行速度。
空间局部性指的是,程序在访问数据时通常会访问相邻的数据,因此程序将要用到的信息很可能与现在正在使用的信息在存储空间上是相邻的。这种空间局部性可以通过预取技术来利用,将预测到的数据预先读取到缓存中,以便程序需要时可以快速访问。
存储系统的多级层次结构
假设第i个存储器Mi的访问时间为Ti, 容量为Si, 平均每位价格为Ci, 则
访问时间:T1<T2<.....<Tn
容量:S1<S2<.....<Sn
平均每位价格:C1>C2>.....>Cn
整个存储系统要达到的目标:从CPU来看, 该存储系统的速度接近于M1的, 而容量和每位价格都拉近于Mn的。
存储器越靠近CPU, 则 CPU对它的访问频度越高, 而且最好大多数的访问都能在完成。
根据局部性原理,我们只要 把近期内CPU访问的程序和数据放在M1中 ,就能使CPU对存储系统的绝大多数访问都能在M1中命中。
存储器之间满足包容关系:
- 任何一层存储器中的内容都是其下一层存储器中的内容的子集。
- CPU在访存时,首先访问M1,如果在M1中找不到所要的数据,就访问M2,将包含所需数据的块或页调入M1,如果在M2中还找不到,就要访问M3,以此类推。
7.1.2 存储层次的性能参数
假设仅仅有两级存储层次:
1. 存储容量S
- 一般来说,整个存储系统的容量即是第二级存储器M2的容量,即S=S2
2. 平均每位价格C
3. 命中率
- CPU访问存储系统时,在M1中找到所需信息的概率
-
N1为访问M1的次数
-
N2为访问M2的次数
- 不命中率 :F = 1-H
4. 平均访问时间
- 分两种情况来考虑CPU的一次访存
- 当命中时,访问时间即为(命中时间)
- 当不命中时,访问时间为:
- T2+TB+T1=T1+TM
- TM = T2 + TB
- 其中: TM为不命中开销:也就是从M2发送请求到把整个数据块调入M1中所需要的时间
- 传送一个信息块所需要的时间为TB
- 所以存储系统的平均访问时间为:
7.1.3 三级存储系统 🌟🌟
三级存储系统分别为:
- Cache(高速缓冲存储器)
- 主存储器
- 磁盘存储器(辅存)
可以看成是由“Cache—主存”层次和“主存—辅存”层次构成的系统
从主存的角度来看:
- cache-主存:弥补主存速度的不足
- 主存-辅存:弥补主存容量的不足
cache-主存层次🌟
主存与CPU的速度差距
借助于硬件,Cache与主存构成一个有机的整体,以弥补主存速度的不足。
- 这个层次的工作由 硬件 实现。
主存和辅存层次 🌟
- 目的:为了弥补主存容量的不足
- 在主存外面增设一个容量更大每位价格更低、速度更慢的存储器---->辅存,一般是硬盘
“Cache-主存”与“主存-辅存”层次的区别 🌟🌟
7.1.4 存储层次的四个问题
1. 当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上?
(映象规则)
2. 当所要访问的块在高一层存储器中时,如何找到该块?
(查找算法)
3. 当发生不命中时,应替换哪一块?
(替换算法)
4. 当进行写访问时,应进行哪些操作?
(写策略)
下面将逐渐展开问题的解决办法......