存储器概述
存储器的分类
存储器种类繁多,可从不同角度对存储器进行分类。
按在计算机中的作用(层次)分类
- 主存储器。简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据,CPU 可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)及辅助存储器交换数据。其特点是容量较小、存取速度较快、每位价格较高。
- 辅助存储器。简称辅存,又称外存储器(外存),是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息,它不能与 CPU 直接交换信息。其特点是容量极大、存取速度较慢、单位成本低。
- 高速缓冲存储器。简称 Cache,位于主存和 CPU 之间,用来存放正在执行的程序段和数据,以便 CPU 能高速地使用它们。Cache 的存取速度可与 CPU 的速度相匹配,但存储容量小、价格高。目前的高档计算机通常将它们制作在 CPU 中。
按存储介质分类
按存储介质,存储器可分为:
- 磁表面存储器(磁盘、磁带)
- 磁心存储器半导体存储器(MOS 型存储器、双极型存储器)
- 光存储器(光盘)
按存取方式分类
- 随机存储器(Random Access Memory,RAM)。存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。其优点是读写方便、使用灵活,主要用作主存或高速缓冲存储器。RAM 又分为静态 RAM(以触发器原理寄存信息)和动态 RAM(以电容充电原理寄存信息)。
- 只读存储器(ROM)。存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变,即使断电,内容也不会丢失。因此,通常用它存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。由 ROM 派生出的存储器也包含可反复重写的类型,ROM 和 RAM 的存取方式均为随机存取。注意广义上的只读存储器已可通过电擦除等方式进行写入,其“只读”的概念没有保留,但仍然保留了断电内容保留、随机读取特性,但其写入速度比读取速度慢得多。
- 串行访问存储器。对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)与直接存取存储器(如磁盘)。
- 顺序存取存储器(Sequential Access Memory,SAM):读写一个存储单元所需时间取决于存储单元所在的物理地址。
- 直接存取存储器(Direct Access Memory,DAM):既有随机存取特性,也有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取
- 相联存储器(Associative Memory),即可以按内容访问的存储器(Content Addressed Memory,CAM)也可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器。
顺序存取存储器的内容只能按某种顺序存取,存取时间的长短与信息在存储体上的物理位置有关,其特点是存取速度慢。直接存取存储器既不像 RAM 那样随机地访问任何一个存 储单元,又不像顺序存取存储器那样完全按顺序存取,而是介于两者之间。存取信息时通常先寻找整个存储器中的某个小区域(如磁盘上的磁道),再在小区域内顺序查找。
按信息的可更改性
- 读写存储器(Read/Write Memory)——既可读又可写(如:磁盘、内存、Cache)
- 只读存储器(Read Only Memory)——只能读,不能写(如:实体音乐专辑通常采用 CD-ROM,实体电影采用蓝光光碟,BIOS 通常写在 ROM 中)
按信息的可保存性分类
-
断电后,存储信息即消失的存储器,称为易失性存储器,如 RAM。
-
断电后信息仍然保持的存储器,称为非易失性存储器,如 ROM、磁表面存储器和光存储器。
-
若某个存储单元所存储的信息被读出时,原存储信息被破坏,则称为破坏性读出;(如 DRAM 芯片)
-
若读出时,被读单元原存储信息不被破坏,则称为非破坏性读出。(如 SRAM 芯片、磁盘、光盘)
具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。
存储器的性能指标
存储器有 3 个主要性能指标,即存储容量、单位成本和存储速度。这 3 个指标相互制约,设计存储器系统所追求的目标就是大容量、低成本和高速度。
- 存储容量 = 存储字数 × 字长(如 1M × 8位)。单位换算:1B(Byte, 字节)= 8b(bit,位)。存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量。
- 单位成本:每位价格 = 总成本 / 总容量。
- 存储速度:数据传输率 = 数据的宽度 / 存储周期。
- 存取时间($T_g$):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
- 存取周期($T_m$):存取周期又称读写周期或访问周期。它是指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
- 主存带宽($B_m$):主存带宽又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。
存取时间不等于存储周期,通常存储周期大于存取时间。这是因为对任何一种存储器,在读写操作之后,总要有一段恢复内部状态的复原写操作之后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至可达 $T_{m} = 2T_{a}$ ,因为存储器中的信息读出后需要马上进行再生。
存储器的性能指标
存储器的层次化结构
多级存储系统
为了解决存储系统大容量、高速度和低成本 3 个相互制约的矛盾,在计算机系统中,通常采用多级存储器结构,如下图所示。在图中由上至下,位价越来越低,速度越来越慢,容量越来大,CPU 访问的频度也越来越低。

实际上,存储系统层次结构主要体现在“Cache——主存”层次和“主存——辅存”层次。前者主要解决 CPU 和主存速度不匹配的问题,后者主要解决存储系统的容量问题。在存储体系中,Cache、主存能与 CPU 直接交换信息,辅存则要通过主存与 CPU 交换信息;主存与 CPU、Cache、 辅存都能交换信息。
存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。从 CPU 的角度看,“Cache——主存”层次速度接近于 Cache,容量和位价却接近于主存。从“主存——辅存”层次分析,其速度接近于主存,容量和位价却接近于辅存。这就解决了速度、容量、成本这三者之间的矛盾,现代计算机系统几乎都采用这种三级存储系统。需要注意的是,主存和 Cache 之间的数据调动是由硬件自动完成的,对所有程序员均是透明的;而主存和辅存之间的数据调动则是由硬
件和操作系统共同完成的,对应用程序员是透明的。
在“主存——辅存”这一层次的不断发展中,逐渐形成了虚拟存储系统,在这个系统中程序员编程的地址范围与虚拟存储器的地址空间相对应。对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远大于主存空间。
注意:在“Cache——主存”和“主存——辅存”层次中,上一层中的内容都只是下一层中内容的副本,也即 Cache(或主存)中的内容只是主存(或辅存)中内容的一部分。
