2024-03-26 10:30AM
计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
两级存储映像为:Cache-主存、主存-辅存(虚拟存储体系)。
存储器的分类:
按存储器所处的位置:内存、外存。
按存储器构成材料:磁存储器(磁带)、半导体存储器、光存储器(光盘)。
安存储器的工作方式:可读写存储器(RAM)、只读存储器(ROM只能读,PROM可写入一次,EPROM和EEPOM既可以读也可以写,只是修改方式不用,闪存 Flash Memory)。
按存储器访问方式:按地址访问、按内容访问(相联存储器)。
按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对磁道的寻址是随机的,在一个磁道内侧是顺序的)。
总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作,循环体被反复执行)
时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。
高速缓存 Cache 用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5~10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。
Cache有控制部分和存储器组成,存储器存储器数据,控制部分判断CPU要访问的数据是否在Cache中,在,则命中,不在,则依据一定的算法从主存中替换。
地址映射方法
在CPU工作是,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列3种方法:
直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。
全相联映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映方式。
组组相连映像:前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。
替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
2)先进先出算法。就是将最先进入Cache的信息块替换出去。
3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信心,在第二次执行该程序时便可以用最有效的方式来替换。
命中率及平均时间
Cache存储器的大小一般为KB或者MB但我,很小,但是最快,仅次于CPU中的寄存器,而寄存器一般不算作存储器,CPU与内存之间的数据交互,内存会先将数据拷贝到Cache里,这样,根据局部性原理,若Cache中的数据被循环执行,则不用每次都去内存中读取数据,会加快CPU工作效率。
因此,Cache有一个命中率的概念,即当CPU所访问的数据在Cache中是,命中,直接从Cache中读取数据,设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%*1+10%*1000)ns,很容易理解。
虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一遍运行一边进行所需数据块的调入/调出。对于应用程序员来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存——缓存——外存。与CPU——高速缓存Cache——主存的原理类似。但虚拟存储器中的程序员无需考虑地址映像关系,由系统自动完成,因此对于程序员来说是透明的。
其管理方式分为页式、段式、段页式。
磁盘结构和参数
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
磁头首先要寻到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:
存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
注意:寻道时间是指磁头移动到磁道所需的时间:等待时间为等待读写的扇区转到磁头下方所用的时间。
磁盘调度算法
之前已经说过,磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:
先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。
磁盘冗余阵列技术
RAID即磁盘冗余阵列技术,RAIDO没有提供冗余和错误修复技术;
RAID 1在成对的独立磁盘上产生互为备份的数据,可提高读取性能;
RAID 2将数据条块化的分布于不同的硬盘上,并使用海明码校验;
RAID 3使用奇偶校验,并使用单块磁盘存储奇偶校验信息;
RAID 5在所有磁盘上交叉的存储数据及奇偶校验信息(所有校验信息存储总量为一个磁盘容量),读/写指针可同时操作;
RADO +1(是两个RAIDO,若一个磁盘损坏,则当前RAIDO无法工作,即有一半的磁盘无法工作),RAID 1+0(是两个RAID 1,不允许同一组中的连个磁盘同时损坏)与RAID 1原理类似,磁盘利用率都只有50%。
注意:以上内容都是参考文老师软考教育,我写在博客只是方便自己查看,记忆;如果想要看更完整内容,请去看文老师软考教育。
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论