Alex_McAvoy

想要成为渔夫的猎手

存储器分类与指标

【存储器分类】

按层次

  • 主存储器:又称主存、内存,用来存放计算机运行期间所需的大量程序和数据,CPU 可以直接随机地对其进行访问,也可以和高速缓冲存储器(Cache)以及辅助存储器交换数据,容量较小、存取速度较快、每位价格较高
  • 辅助存储器:又称辅存、外存,是主存储器的后援存储器,用来存放当前暂时不用的程序和数据,以及一些需要永久性保存的信息,不能与 CPU 直接交换信息,容量极大、存取速度较慢、单位成本低
  • 高速缓冲存储器:即 Cache,位于主存和 CPU 之间,用来存放正在执行的程序段和数据,以便 CPU 能高速地使用它们,其存取速度可以与 CPU 的速度相匹配,但存储容量小、价格高

按存储介质

  • 磁表面存储器:磁盘、磁带
  • 磁芯存储器半导体存储器:MOS 型存储器、双极型存储器
  • 光存储器:光盘

按存取方式

  • 随机存储器:即 RAM,其任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关,读写方便、使用灵活,主要用做主存或高速缓冲存储器
    • 静态 RAM:以触发器原理寄存信息
    • 动态 RAM:以电容充电原理寄存信息
  • 只读存储器:即 ROM,内容只能随机读出而不能写入,信息一旦写入存储器就固定不变了,即使断电内容也不会丢失,通常存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化,与 RAM 共同作为主存的一部分,统一构成主存的地址域
  • 串行访问存储器:对存储单元进行读写操作时,需按其物理位置的先后顺序寻址
    • 顺序存取存储器:如磁带,其内容只能按某种顺序存取,存取时间的长短与信息在存储体上的物理位置有关,存取速度慢
    • 直接存取存储器:如磁盘,既不像 RAM 那样随机地访问任一个存储单元,也不像顺序存取存储器那样完全按顺序存取,而是介于两者之间,存取信息时通常先寻找整个存储器中的某个小区域(如磁盘上的磁道),再在小区域内顺序查找

按信息的可保存性

  • 易失性存储器:如 RAM,断电后,存储信息即消失的存储器
  • 非易失性存储器:如 ROM,断电后信息仍保持的存储器
  • 磁表面存储器:如磁盘、磁带
  • 光存储器:如光盘

如果某个存储单元所存储的信息被读出时,原存储信息将被破坏,则称为破坏性读出;如果读出时,被读单元原存储信息不被破坏,则称为非破坏性读出

具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息

【存储器性能指标】

存储器有 $3$ 个主要性能指标,即存储容量、单位成本和存储速度,这 $3$ 个指标相互制约,设计存储器系统所追求的目标就是大容量、低成本和高速度

存储容量

存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量,如 $1M\times 8位$

单位成本

存储速度

  • 存取时间 $T_a$:从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
  • 存取周期 $T_m$:又称为读写周期、访问周期,指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔
  • 主存带宽 $B_a$:又称数据传输率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒、位/秒

存取时间不等于存储周期,通常存储周期大于存取时间。这是因为对任何一种存储器,在读写操作之后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至可以达到 $T=2T$,这是因为存储器中的信息读出后需要马上进行再生

存取时间与存取周期的关系如下图所示

【存储器层次化结构】

为了解决存储系统大容量、高速度和低成本这些相互制约的矛盾,在计算机系统中,通常采用多级存储器结构

在图中由上至下,位价越来越低,速度越来越慢,容量越来越大,CPU 访问的频度也越来越低

实际上,存储系统层次结构主要体现在 Cache-主存层次主存-辅存层次,前者主要解决 CPU 和主存速度不匹配的问题,后者主要解决存储系统的容量问题

在存储体系中,Cache、主存能与 CPU 直接交换信息,辅存则需要通过主存与 CPU 交换信息

从 CPU 的角度看,Cache-主存层次速度接近于 Cache,容量和位价却接近于主存,从主存-辅存层次分析,其速度接近于主存,容量和位价却接近于辅存,这就解决了速度、容量、成本这三者之间的矛盾,现代计算机系统几乎都采用这种三级存储系统

需要注意的是,主存和 Cache 之间的数据调动是由硬件自动完成的,对所有程序员均是透明的,而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,仅对应用程序员是透明的

随着在主存-辅存层次的不断发展,逐渐形成了虚拟存储系统,在这个系统中,可以令程序员编程的地址范围与虚拟存储器的地址空间相对应,使得对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远远大于主存空间

感谢您对我的支持,让我继续努力分享有用的技术与知识点!