Skip to main content

存储系统

3.1 存储器概述

3.1.1 存储器的分类

按不同角度可以对存储器进行分类:

  1. 按存储器的功能分类
  • 主存储器:主存,也称为内存(内存储器),用于存储计算机运行期间的程序和数据。CPU可以直接随机访问主存,也可以和Cache以及辅助存储器交换数据。主存容量较小,存取速度较快(几十ns),每位价格较高。
  • 辅助存储器:辅助存储器,也称为外存,用于存储暂时不用、需要永久性保存的数据。辅存的内容需要调入主存后才能被CPU访问。辅助存储器容量较大,存取速度较慢(ms级或更慢),单位成本较低。
  • 高速缓冲存储器:高速缓冲存储器,也称为Cache,用于存储CPU经常使用的指令和最近使用的数据,存取速度可以和CPU速度相匹配(1-3ns)。以提高计算机的运行效率。
tip

Cache不单独出售,而是集成在CPU内部。

常见的消费级CPU:

AMD 锐龙9 9950X3D2

Cache规格:总L3缓存达到 192MB(通过3D V-Cache技术堆叠)

核心参数:16核32线程,最高频率5.6GHz

市场定位:顶级游戏发烧友、生产力用户

主存储器常以内存条(常见DDR4或DDR5)的形式出售。

  • 长江存储 星辰MAX DDR5-6800 32GB单条,CL34 约 599元 国产方案,性价比极高
  • 三星 Aegis DDR5-6400 16GB×2套条,CL36 约 849元 主流游戏装机

辅助存储器常以硬盘(常见HDD或SSD)的形式出售。

  • 三星 990 EVO Plus 1TB 涨幅101.23% 高性能系统盘
  • 西部数据 SN850X 2TB 高端定位 游戏玩家、创作者
  1. 按存储器的存储介质分类

可分为磁表面存储器、磁芯存储器、半导体存储器(MOS存储器、双极型存储器)等。

  1. 按存储器的存储方式分类
  • 随机存储器(RAM):存储器的任何一个存储单元都可以被随机访问。存取时间与存储单元的物理位置无关。优点是读写方便,使用灵活,分为静态RAM和动态RAM。常见于主存或Cache。
  • 只读存储器(ROM):随机存取,但存储单元只能读取,不能写入。一旦写入ROM,信息就固定不变,断电不丢失。它通常存放一些不变的程序,可以和RAM一起作为主存的一部分。ROM派生出的存储器也包含可重复写的类型。有些ROM已经可以通过电擦除的方式写入,已经不是只读的了,但是断电不丢失和随机读取没变,而且写入非常慢。
  • 串行访问存储器:对存储单元进行读写时,按物理位置的先后顺序寻址。包括顺序存储器(如磁带)和直接存取存储器(磁盘、光盘等)。

顺序存取存储器的内容只能按某种顺序存取,存取时间的长短与存储单元的物理位置有关。存取很慢。

直接存取存储器先寻找存储器的某个小区域,然后顺序查找。

danger

CD-ROM是光盘,是直接存取存储器。它是只读型光盘存储器,但不是只读存储器ROM。

  1. 按信息的可保存性分类
  • 易失性存储器:断电丢失信息,如RAM。
  • 非易失性存储器:断电不丢失信息,如ROM。

如果某个存储单元所存储的信息被读出,存储单元的内容破坏,称为破坏性读出。如果没被破坏,称为非破坏性读出。

破坏性读出的存储器每次读出操作后,必须接一个再生操作,恢复破坏的信息。

3.1.2 存储器的性能指标

主要就是三个指标:存储容量、存取速度、单位成本。它们相互制约。

  • 存储容量:存储字数 × 字长(如1M×8位)。
  • 单位成本:总成本 / 总容量。
  • 存储速度
    • 存取时间(Ta):从启动一次存储器操作到完成该操作所经历的时间。
    • 存取周期(Tm):连续两次独立访问存储器操作之间所需的最小时间间隔。通常 Tm > Ta。
    • 主存带宽(Bm):数据传输速率,表示每秒从主存进出信息的最大数量。
warning

存取时间不等于存取周期。

一般来说,存取时间 < 存取周期。

对任何一种存储器,读写之后要有段时间恢复内部状态,对于破坏性读出的存储器,存取周期可能会达到Tm=2TaTm=2Ta,因为还有再生操作。

3.1.3 多级层次的存储系统

结构:由寄存器、Cache、主存、辅存构成多级结构,从上到下,速度变慢、容量变大、价格变低、CPU访问频度降低。

核心思想:上一层的存储器作为下一层的高速缓存。

  • Cache-主存层:解决CPU与主存速度不匹配的问题。数据调动由硬件完成,对程序员透明。
  • 主存-辅存层:解决存储系统的容量问题(形成虚拟存储器)。数据调动由硬件和操作系统共同完成,对应用程序员透明。

warning

在Cache-主存层和主存-辅存层之间,上层的内容都只是下一层的内容的副本。

3.2 主存储器

3.2.1 SRAM芯片和DRAM芯片

特点SRAM(静态RAM)DRAM(动态RAM)
存储原理双稳态触发器(六管MOS),静态是指非破坏性读出栅极电容上的电荷
破坏性读出非破坏性读出破坏性读出,需读后再生
刷新不需要需要定时刷新(2ms内)
地址传送同时送行、列地址分两次送(地址引脚复用)
运行速度
集成度
存储成本
主要用途高速缓存(Cache)主机内存(主存)

DRAM刷新方式

  • 集中刷新:固定时间段内对所有行逐一刷新,存在“死时间”(访存死区)。
  • 分散刷新:将存取周期分为两部分,前半部分读/写,后半部分刷新。无死区,但存取周期变长。
  • 异步刷新:将刷新周期除以行数,得到间隔时间,分散刷新请求。死时间分布更分散。
warning

DRAM刷新要注意的问题:

  1. 刷新对CPU是透明的,不依赖外部访问。
  2. 刷新单位是行,由芯片自行生成行地址。
  3. 刷新操作类似于读操作,但又有所不同,刷新时不需要选片(整个存储器中的所有芯片同时被刷新)。

刷新和再生都是恢复数据,但过程不完全相同,刷新是逐行恢复数据的,但再生仅需恢复被读出的单元的数据。

目前更常用的是 SDRAM(同步 DRAM)芯片,其工作方式与传统 DRAM 的不同,传统 DRAM与 CPU 采用异步方式交换数据。CPU 发出地址和控制信号后,经过一段延迟时间,数据才读出或写入,在读/写完成之前,CPU 不能做其他工作。

而 SDRAM 与 CPU 采用同步方式交换数据, 它将 CPU 发出的地址和控制信号锁存起来,CPU 在其读/写完成之前可进行其他操作。

SDRAM的每一步操作都在系统时钟的控制下进行,支持突发传输方式。第一次存取时给出首地址,同一行的所有数据都被送到行缓冲器,因此,以后每个时钟都可以连续地从 SDRAM 输出一个数据。行缓冲器用来缓存指定行中整行的数据,其大小为“列数×位平面数”,通常用 SRAM 实现。

DRAM芯片的读写周期:

读(写)周期时间 tRCt_{RC}/ tWCt_{WC} 表示 DRAM 芯片进行两次连续读(写)操作时所必须间隔的时间。

在读取期间,在 RAS 有效前将行地址送到芯片的地址引脚, CAS 滞后 RAS 一段时间,在 CAS有效前将列地址送到芯片的地址引脚, RAS、CAS 应分别至少保持 tRASt_{RAS}tCASt_{CAS} 的时间。在读周期中 WE 为高电平,并在 CAS 有效前建立。

DRAM写周期,行列选通时序同读周期。WE\overline{WE} 低电平,在 CAS\overline{CAS} 有效前建立, 写数据在 CAS\overline{CAS} 有效前保持稳定

info

突发传输方式是指在寻址阶段发送数据单元的首地址,在传输阶段传送多个连续单元的数据。

Details

读周期的时序通常如下:

  1. 行地址送入:CPU将行地址放在地址总线上,然后使 RAS 信号有效(变为低电平)。在RAS有效期间,行地址被锁存到芯片内部。
  2. 列地址送入:经过一段时间(行地址建立时间)后,CPU将列地址放在地址总线上,然后使 CAS 信号有效(变为低电平)。在CAS有效期间,列地址被锁存。
  3. 数据输出:在CAS有效后,芯片根据行、列地址选中对应的存储单元。经过一段存取时间(t_CAC,CAS到数据输出延迟),数据会出现在数据输出引脚上。
  4. 信号恢复:CPU读取数据后,撤销CAS和RAS,芯片内部进行恢复,为下一次存取做准备。

写周期:

  1. 行地址送入:与读周期相同,RAS有效,锁存行地址。
  2. 列地址与数据送入:在CAS有效之前或同时,WE 信号变为低电平(有效),并且CPU将需要写入的数据放到数据输入引脚上。
  3. 列地址锁存与写入:CAS有效,锁存列地址。芯片在WE和CAS的共同控制下,将数据总线上的数据写入到指定的存储单元。
  4. 信号恢复:与读周期相同,撤销CAS、WE和RAS,芯片内部进行恢复,为下一次存取做准备。
tip

关键信号

  • RAS (Row Address Strobe,行地址选通):控制行地址的锁存。低电平有效。
  • CAS (Column Address Strobe,列地址选通):控制列地址的锁存。低电平有效。
  • WE (Write Enable,写使能):控制读/写操作。高电平为读,低电平为写。

存储器芯片的内部结构:

存储器芯片由存储体、I/O读写电路、地址译码器和控制电路等部分组成。

  1. 存储体(存储矩阵)。存储体是存储单元的集合,它由行选择线(X)和列选择线(Y)来选择所访问单元,存储体的相同行、列上的多位(位平面数)同时被读出或写入。

  2. 地址译码器。用来将地址转换为译码输出线上的高电平,以便驱动相应的读/写电路。地址译码有单译码法(一维译码)和双译码法(二维译码)两种方式。

    • 单译码法。只有一个行译码器,同一行中所有存储单元的字线连在一起,同一行中的各单元构成一个字,被同时读出或写入。缺点是地址译码器的输出线数过多。
    • 双译码法。如图3.5所示,地址译码器分为X和Y方向两个译码器,在选中的行和列交叉点上能确定一个存储单元,这是DRAM芯片目前普遍采用的译码结构。
  3. I/O控制电路。用以控制被选中的单元的读出或写入,具有放大信息的作用。

  4. 片选控制信号。单个芯片容量太小,往往满足不了计算机对存储器容量的要求,因此常用一定数量的芯片进行存储器的扩展。在访问某个字时,必须“选中”该存储单元所在的芯片,而其他芯片不被“选中”,因此需要有片选控制信号。

  5. 读/写控制信号。根据CPU给出的读命令或写命令,控制被选中单元进行读写。

3.2.2 只读存储器(ROM)

  • 特点:结构简单、位密度高、非易失性、可靠性高。
  • 类型
    • MROM(掩模式ROM):生产时写入,无法更改。
    • PROM(一次可编程ROM):用户可一次性写入。
    • EPROM(可擦除可编程ROM):可多次改写,但写入时间长,次数有限。
    • Flash存储器(闪存):兼有ROM和RAM的优点,可在线快速擦除与重写。是U盘、固态硬盘的基础。
    • 固态硬盘(SSD):基于闪存的硬盘,读写速度快、低功耗、抗震性好,但价格较高,有写入寿命限制。

3.2.3 主存储器的基本组成

  • 核心部件:存储体(存储矩阵)、地址译码器、I/O控制电路、片选控制信号、读/写控制信号。
  • MAR(存储器地址寄存器):存放访存地址,位数反映最大可寻址的存储单元个数(地址线位数)。
  • MDR(存储器数据寄存器):暂存从存储器中读或写的信息,位数通常等于存储字长(数据线位数)。