在一台计算机中,通常有多种用途不同的存储器,如主存储器(或称内存)、Cache、通用寄存器、磁盘存储器、各种缓冲存储器、磁带和光盘存储器等。从构成存储器的材料上看,有静态存储器SRAM、动态存储器DRAM,还有磁表面存储器和光存储器等。从存储器的访问方式看,有直接译码的、随机访问的、相联访问的,也有块交换的,甚至是手工加载的。
  存储系统的定义是:两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个系统,这就是存储系统。
  存储系统对应用程序员透明,并且,从应用程序员的角度看,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等或接近,单位容量的价格接近最便宜的那个存储器。
图 5.1 存储系统原理
  图5.1是一个典型的存储系统。它由n个存储器连接起来组成,这n个存储器的速度、容量和价格各不相同。从外部看,可以把它看作一个存储器。这个存储器的访问速度近似等于所有存储器中存储周期最小的那个,存储容量与所有存储器中容量最大的那个相等或接近,价格近似等于所有存储器种价格最便宜的那个。
  本章主要介绍两种存储系统,一种是由Cache和主存储器构成的Cache存储系统,另一种是由主存储器和磁盘存储器构成的虚拟存储系统。在计算机系统中,这两种存储系统的作用是不相同的。
  Cache存储系统的主要目标是为了提高存储器的速度,而虚拟存储系统的主要目标是为了增加存储器的存储容量。
  Cache存储系统全部用硬件来调度,因此,它不仅对应用程序员是透明的,而且对系统程序员也是透明的,它的组成原理如图5.2所示。
  目前,Cache一般用高速静态随机访问存储器SRAM实现,存储周期为几十毫微秒,存储容量在几十KB至几MB之间,价格比较贵。主存一般用动态随机访问存储器DRAM实现,存储周期为几百毫微秒,比Cache慢5~10倍,存储容量在几十MB至几百MB,价格与Cache相比要便宜很多。这两个存储器组成存储系统之后,由于数据在Cache中的命中率很高,访问主存储器的绝大部分数据都能在Cache中访问到,因此,这个存储系统的存储周期与Cache非常接近。
  对系统程序员来说,因为只能看到主存储器,根本看不到Cache(Cache采用相联方式访问,对程序员来说是不编址的),因此,存储系统的容量实际上就是主存储器的容量。另外,尽管Cache的价格比较贵,但是,由于它在整个Cache存储系统中所占的比例很小,因此,每位的平均价格仍然与主存储器很接近。
Cache存储系统和虚拟存储系统
  虚拟存储系统由主存储器与联机的外部存储器(目前一般为磁盘存储器)构成,采用硬件与软件相结合的方法来调度,如图5.3所示。由于虚拟存储系统需要通过操作系统的存储管理系统来调度,因此,对系统程序员来说它是不透明的,但对于在操作系统之上编程的应用程序员来说是透明的。
  虚拟存储系统的访问速度与主存储器很接近,存储容量是一个很大的虚拟地址空间,这个空间的大小比主存储器的实际存储容量要大得多,也就是说,应用程序员可以在一个比主存储器的实际容量大得多的地址空间内编程。
  目前,许多计算机的虚拟地址空间为4GB。由于磁盘存储器每位的价格要比主存储器便宜许多,因此,整个存储系统的每位的价格仍然接近于磁盘存储器。
  表示存储系统的性能有三个主要参数:容量S,速度T和价格C,组成这个存储系统的每个存储器本身也有同样的三个参数,下面分析这些参数之间的关系。
  为了分析方便,采用如图5.4所示的由两个存储器M1和M2组成的存储系统。两个存储器的容量、速度和价格分别为S1,C1,T1和S2,C2,T2,存储系统的容量、速度和价格分别为S,C和T。
图 5.4 由两个存储器构成的存储系统