#存储系统概述
一般计算机系统中主要有两种存储体系:
Cache存储体系:由Cache和主存储器构成;主要目的是提高存储器速度。Cache存储体系对系统程序员以上均透明
虚拟存储体系:由主存储器和磁盘存储器构成;主要目的是扩大存储器容量。虚拟存储器系统对应用程序员透明
存储系统存在层次结构
而存储系统的概念就是将两种或两种以上的存储器用硬件,软件,或硬件和软件相结合的方式联接在一起,并对它们进行管理。
#内部存储器(主存储器)
##随机读写存储器RAM
常规RAM芯片,其外部有地址引线,数据引线和控制信号引线。地址引线在芯片内部译码,可选中芯片内部的相应存储单元。例如:某静态RAM芯片上有n条地址线,这些地址线所能表示的地址编码有2n种,这意味着该芯片内部有2个存储单元。
为了对芯片内部的存储单元进行读写,就需要对地址信号进行译码。芯片内部的地址译码方式有两种:一维译码和二维译码。
一维译码适用于容量很小的芯片
二维译码就适用于容量大一点的芯片
而RAM又分为静态读写存储器SRAM和动态读写存储器DRAM
对比两种存储可以发现,动态存储器需要一直刷新以保持数据,同时不需要的时候也不会消耗功率,而且其集成度高,所以相对来说也会更常用一些。
##只读存储器ROM
只读存储器ROM的重要特性是其存储信息的非易失性,存放在ROM中的信息不会因为去掉电源而丢失。当再次加电时,其存储的信息仍然存在。
#高速缓冲存储器
存储体系的定义:两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个存储系统。这个存储系统对应用程序员是透明的,并且,从应用程序员看,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。
一般计算机系统中主要有两种存储体系:
Cache存储体系:由Cache和主存储器构成;主要目的是提高存储器速度。
虚拟存储体系:由主存储器和磁盘存储器构成;主要目的是扩大存储器容量。
高速缓冲存储器的工作原理建立在程序与数据访问的局部性原理上。
即在一段较短的时间间隔内程序集中在某一较小的主存地址空间上执行。这就是程序执行的局部性原理。而在程序运行的时候,不需要从慢速的主存中取指令和数据,而是直接访问这种高速且小容量的存储器,从而提高CPU的执行速度。
当CPU执行程序需从主存读指令或数据时,将存储器地址从地址线加到主存也加到地址映射与变换模块上。若在地址映射表中检索到要读写的数据在Cache中(命中),则通过地址映射表将地址转化成Cache的地址。若要读写的信息在Cache中找不到,那么这叫做未命中。此时,CPU从主存中读出指令或数据,同时将这个信息通过一定的规则替换掉Cache的某一存储块。注意的是Cache中的数据在未处理前和主存内是一样的,只是为了提高速度才将这部分数据放在Cache中的。
##地址映射的方式
###全相联
主存的任何一块可以拷贝到Cache中的任何一块中。每次调用数据时,先用给出的主存地址在相联存储器中找到Cache的块号,看是否能命中。然后Cache中这个数据的地址就是Cache的块号加上之前给的主存地址中的块内地址信息就可以得到该数据在Cache中的地址。
###直接映射
对比与全映射中主存中的每一个数据都可以装入Cache中的任何一个位置,这种方式就是不同地址的数据只能放入一个特定的块内。就像把中国人按照不同的省份的人来区别一样,同一个省的人只能在某一个特定的存储块内。
###组相联
上面的两种方式各有优缺点。把二者的优点结合起来就是组相联了。方式就是将Cache先分组,组内再分块。
##替换算法
##主存与Cache中内容的一致性问题
需要注意到的是Cache中的数据被操作后要写回到主存中。一般有以下几种方法。
写回法
全写法(写直达法)
##Cache的性能分析
Cache的访问周期为TC,主存的访问周期为TM,数据块调入Cache的块传输时间为TB ,Cache的命中率为H。当命中率很高时,Cache系统的平均访问周期就接近于Cache的访问周期TC。
Cache-主存系统的平均访问周期T:
T=H×TC+(1-H)×TM
T=H×TC+(1-H)×(TB+TC)
Cache-主存系统的加速比SP:SP=TM/T
例如某计算机:
H=95%,TM=100ns,TC=10ns,则
T=14.5ns,SP=6.9
由上我们可以得出命中率愈高,加速比愈大。但是最大也只能接近TM / TC。
注:Cache容量S与命中率H的关系H=1-S^(-0.5)
为了提高命中率我们设计了两级和多级Cache
对于两级Cache
两级Cache的总未命中率(总失效率):
总失效率=(失效率)第一级×(失效率)第二级
例:10000次访存,第一级Cache失效400次,第二级Cache失效4次。
(失效率)第一级=400/10000=4%
(失效率)第二级=4/400=1%
利用两级Cache后总的失效率=0.04%。
#虚拟存储器
虚拟存储器是由价格比较贵,容量不太大,速度相对比较高的主存储器和价格很低,容量非常大,速度慢的外部存储器,在操作系统及辅助硬件的管理下,所构成的像一个单一的,可直接访问的超大容量的主存储器。虚拟存储器有点类似于高速缓冲存储器,它的主存储器相当于高速缓冲存储器中的Cache,他的外部存储器相当于高速缓冲存储器中的主存储器。
虚拟存储器的管理方法主要分为三种:
对于多用户工作支持,由于虚拟空间是海量的,所以可以在虚拟存储管理的过程中为不同的用户编号,而各用户在编程时可自由使用整个虚拟存储空间。