层次化存储结构
是在计算机体系结构下存储系统层次结构的排列顺序。
每一层于下一层相比都拥有较高的速度和较低延迟性,以及较小的容量。
由于高速缓存的效率和存储器传输位于层次结构中的不同档次,所以实际上会限制处理的速度,导致中央处理器花费大量的时间等待存储器I/O完成工作。
存储结构分类
补充:主存分为随机存储器(RAM)和只读存储器(ROM)
存储器分类
- 按存储介质可以分类为半导体存储器、磁表面存储器、光存储器。
- 按存储器的读写功能可以分类为只读存储器(ROM)、 随机读写存储器(RAM)。
- 按信息的可保存性可以分类为非永久记忆的存储器、永久记忆性存储器。
- 按在计算机系统中的作用可以分类为主存储器(内存)、辅助存储器(外存储器)、缓冲存储器。
- 按功能/容量/速度/所在位置可以分类为寄存器、高速缓存、内存储器、外存储器。
- 工作性质/存取方式可以分类为随机存取存储器、顺序存取存储器、直接存取存储器、相联存储器。
重点:相联存储器是按内容访问的
Cache
在计算机存储系统体系中,Cache是访问速度最快的层次(若有寄存器,则寄存器最快)
使用Cache改善系统性能的依据是程序的局部性原理(见后文)
命中率的计算
$$ \begin{aligned} & \begin{cases} h:访问命中率\ t_1:Cache周期时间\ t_2:主存周期时间 \ t_3:以读操作为例,使用Cache+主存的系统平均周期 \ h:命中率 \end{cases}
\ \ &t_3=h*t_1+(1-h)*t_2 \ &其中(1-h)又被称为失效率(未命中率) \end{aligned} $$
**命中:**要访问的数据恰好在Cache中
**原理:**如果Cache未命中,使用主存
局部性原理
即Cache 的使用场景
局部化原理是层次化存储结构的支撑
可以有效防止抖动
抖动
进程执行过程中发生**缺页(missing page)**有两种可能:
- 并发进程要求的工作集总和大于内存可提供的可用区。因为缺乏足够空间装入需要的程序和数据,系统无法正常工作。
- 分配了足够的工作集,但系统无法在开始执行前选择适当的程序段和数据进入内存。这种情况只能依靠执行过程中CPU发现要访问的指令或数据不在内存时,由硬件中断转入中断处理程序,将需要的程序段和数据调入。
当分配的内存小于要求的工作集时,由于内存外存交换频繁,访问外存时间和I/O处理时间大大增加,造成CPU因等待数据空转,使得整个系统性能大大下降,这就造成了系统抖动。
时间局部性
如果一个信息项正在被访问,那么在近期它很可能还会被再次访问
产生时间局部性的典型原因,是程序中存在着大量的循环操作
空间局部性
旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问
即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组、表等形式簇聚存储的
顺序局部性
在典型程序中,除转移类指令外,大部分指令是顺序进行的
指令的顺序执行、数组的连续存放等是产生顺序局部性的原因
例题:
CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为( )
A.数据局部性
B.指令局部性
C.空间局部性
D.时间局部性
程序的局限性表现在时间局部性和空间局部性
Cache-映像
分为直接相联映像、全相联映像、组相联映像
地址映像原理
将主存与Cache的存储空间划分为若干大小相同的页(或块)
例如,某机主存容量为1GB,划分为2048页,每页512KB;
Cache容量为8MB,划分为16页,每页512KB.
直接相联映像
硬件电路简单,冲突率高
一一对应
比如主存每一区0页只能存Cache0页中
但是每次存新页的时候会挤掉原先旧页,所以冲突率很高
全相联映像
电路难于设计和实现,只适用小容量Cache,冲突率较低
每一页都可以放到Cache任一页,查询复杂
组相联映像
直接相联于全相联的折中
先分区后分组,每个组进行直接相联映像,组内全相联映像
利用了两种优势,但是过于复杂