更新于 

存储器概述

存储器简介

我们之前学习到冯诺依曼体系中的五大重要部件:输入设备,输出设备,运算器,控制器,存储器。上一节我们学习的算术逻辑单元是运算器的一小部分,这里我们详细学习一下存储器。

存储器的分类

存储器只是一个总名称,其种类繁多有许多种,首先我们可以按照几个不同的角度将存储器分类。

按在计算机中的作用(层次)分类

  • 主存储器:又称为主存,内存,用来存放计算机运行期间所需的大量程序和数据,CPU可以直接对齐进行访问,他也可以和告诉缓存cache以及辅助存储设备交换数据。特点是容量小,存取速度较快,每位价格高。
  • 辅助存储器:又称为辅存,外存,是后援存储器,用来存放当前暂时用不到的数据和程序,以及一些永久性保存的信息,他不能够直接和CPU进行信息交换。特点是容量大,存取速度慢,单位成本低。
  • 高速缓冲器:又简称为cache,位于主存和CPU之间,用来存放正在执行的程序段和数据段,以便CPU能够高速使用。cache的存取速度可与CPU相匹配速度最快,但是容量小,价格高昂。目前的高档计算机都会将它们制作在CPU中。

按存储介质分类

存储器可以分为磁表面存储器(磁带,磁盘)、磁心存储器半导体存储器(MOS型存储器,双极型存储器)和光存储器(光盘)。

按存取方式分类

  • 随机存储器(RAM):存储器的每一个存储单元都可以将内容随机存取,而且存取的时间与存储单元的物理位置无关。优点是读写方便,使用灵活,主要用于主存或告诉缓冲存储器。RAM又分为静态RAM(以触发器原理寄存信息)和动态RAM(以电容充电原理寄存信息)。但是断电内容会丢失。

  • 只读存储器(ROM):存储器的内容只能随机读入不能写入,信息一旦写入存储器就固定不变,即使断电,内容也不会丢失。因此,通常用它存放固定不变的程序,常数和汉字字库,甚至用于操作系统的固化。他和随机存储器共同作为主存的一部分,统一构成主存的地址域。

    思考:RAM和ROM存储方式?

    我们可以大胆猜测,由于它们都是随机存取,并且和物理位置无关,那么就和索引表式的离散存储方法很相似。所以应该会有一个存储数据单元的索引表,这样随机存取就实现了与物理位置无关的特点了。

    补充:ROM派生存储器是可以写入的

    由ROM派生出的存储器也包含可反复重写的类型,ROM和RAM的存取方式都是随机存取。并且要注意广义上的ROM已可通过电擦除等方式进行写入了,“只读”的概念并未保留,但是仍然保留了断电内容保留、随机存取的特性。仅仅是可以通过一些特定的方法可以进行更改内容了而已,其写入速度比读取速度慢的多。

  • 串行访问存储器:顾名思义,对存储单元进行读/写操作时,需要按照其物理地址的先后顺序寻址,包括顺序存取存储器(如磁带)和直接存取存储器(如磁盘)。

    思考:顺序存取存储器和直接存取存储器的区别?

    顺序存取存储器的内容只能够按某种顺序存取,存取的时间长短与信息在存储体上的物理位置相关,其特点是存取速度慢。直接存取存储器既不像RAM那样随机的访问任何一个存储单元,又不像顺序存储器那样完全按顺序存取,而是介于两者之间。存取信息时现寻找整个存储器的某个小区域(例如磁道上的磁道),再在小区域内顺序查找。

按信息的可保存性分类

  • 易失性存储器:断电后,存储信息即消失的存储器,例如RAM。
  • 非易失性存储器:断电后信息仍然保持的存储器,例如ROM、磁表面存储器和光存储器。
  • 破坏性读入存储器:其某个存储单元的信息被读入时,原存储信息被破坏,因为存储单元信息会被破坏,所以每一次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。
  • 非坏性读入存储器:其某个存储单元的信息被读入时,原存储信息不会被破坏。

存储器的性能指标

存储器有三个重要的性能指标,分别是存储容量 ,单位成本和存储速度。这三个指标相互制约,设计一个优秀的存储器就是要使这三个指标尽可能都同时更好。

存储容量

存储容量=存储字数×字长(如1M×8位)存储容量=存储字数×字长(如1M×8位)

1B=8bit,其中存储字数是存储器的地址空间大小,字长表示的是一次存取操作的数据量。所以存储容量表示的就是存储器存储数据的位数大小。

单位成本

单位价格=总成本/总容量单位价格=总成本/总容量

就是造价成本,要保证一位的成本尽可能的小。

存储速度

数据传输率=数据的宽度/存储周期数据传输率=数据的宽度/存储周期

这里我们介绍几个重要的时间指标:

  1. 存取时间Ta:存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读入时间和写入时间。所以这个时间表示的仅仅是数据读取/写入操作的时间。
  2. 存取周期Tm:存储周期又称为读写周期或访问周期,它是指存储器进行一次完整的读写操作所需要的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
  3. 主存宽带Bm:主存宽带又称为数据传输率,表示每秒从主存进出信息的最大数量。单位是字/秒、字节/秒,或者位/秒。

思考:存取时间和存取周期的区别?

存取时间不等于存取周期,通常存取周期大于存取时间,这是因为任何一个存储器,在读写操作之后一定还需要一段时间恢复内部状态,这段时间我们成为恢复时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至存取周期是存取时间的两倍之大。因为存储器中的信息读出后需要迅速进行再生。

总结

存储器的层次化结构

为了解决存储系统大容量、高速度、低成本3个相互制约的矛盾。在计算机系统中,通常采用多级存储结构来存储信息。如下图:

在图中越靠上的部分造价越高,容量越小但是同时存取速度就越快,CPU的访问频率就越大。CPU,Cache,主存和辅存组成了最经典的三级存储系统结构如下图:

存储系统的层次结构主要体现在“Cache-主存”层次和“主存-辅存”层次。前者是为了解决CPU和主存的速度不匹配问题而产生的,后者则是为了解决存储系统容量问题的。在存储体系中,Cache,主存可以和CPU直接进行信息交换,而辅存中的信息需要先导入都主存以后才可以被cpu进行存取访问。

存储器层次结构的主要思想就是上一层的存储器作为低一层存储器的高速缓存。从CPU的角度看,“Cache-主存”层次的数据存取速度接近于Cache,容量和位价都接近于主存。从“主存-辅存”层次分析,其速度接近于主存,容量和位价接近于辅存。这样就缓解了速度,容量和位价三者的制约关系了,现代计算机系统几乎采用的都是这种三级存储系统,需要注意,主存和Cache之间的数据调动都是由硬件自动完成的,对所有程序员都是透明的,而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,只是对应用程序员透明。在“主存-辅存”这次层次的不断发展中,逐渐形成了虚拟存储系统,在这个系统中程序员变成的范围与虚拟存储器的地址空间相对应,远大于实际物理地址范围。对于具有虚拟存储器的计算机系统而言,编程可用地址空间远大于主存空间。

思考:上层内容与下层内容的关系?

在"Cache-主存"和“主存-辅存”层次中,上一层的内容一定是来自与下一层的内容副本,所以Cache(或主存)中的内容只是主存(或辅存)中内容的一部分。越到底层,数据存储范围越大,而越到上层,存储的数据范围越小。

总结