← 章节索引

计算机组成原理 · 存储系统 ① 存储器概述

来源:语雀《408笔记试看》|字数 9932|15 公式 · 5 图 · 0 导图
自动抓取生成 · 原站禁复制/导出 · 自用勿传播。图片已下载到同目录 存储器概述_img/,请和本文件放在一起打开。

存储器的分类

存储器

按存储介质

按存取方式

按可改写性

按可保存性

按功能和存取速度

磁带


磁表面存储器

顺序存取 (SAM)


读写存储器





非易失性


辅存 (外存)

机械硬盘 (HDD)


直接存取 (DAM)

光盘 (CD-ROM)

光存储器


只读存储器

BIOS芯片 (ROM)







半导体存储器


随机存取

主存 (ROM区)

固态硬盘 (SSD)/Flash

读写存储器 (电可擦除)

辅存 (外存)

CPU寄存器





读写存储器




易失性

寄存器存储器

快表(TLB)/全相联 Cache

按内容访问 (CAM)

高速缓存

Cache

随机存取 (SRAM)

高速缓冲存储器

内存 (RAM区)

随机存取 (DRAM)

主存 (内存)

按功能/容量/读取速度/所在位置分类

按照存储介质分类

存储元件必须具有两个截然不同的物理状态,才能被用来表示二进制代码0和1。目前使用的存储元件主要有半导体器件磁性材料光介质

  1. 磁表面存储器:如磁盘、磁带等

注意:固态硬盘≠ 磁盘,传统的机械硬盘 HDD 才是磁盘,依靠磁盘盘片 +读写磁头完成读写;我们现在常用的固态硬盘(Solid State Disk,SSD),是基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM。

  1. 半导体存储器:分为MOS型存储器(MOS型RAM又分为静态RAM(Static RAM,SRAM)和动态RAM(DynamicRAM,DRAM))和双极型存储器两种,常见的半导体存储器有 BIOS、内存、寄存器、Cache、固态硬盘 SSD、ROM 芯片、RAM 芯片等。
  2. 光存储器:如只读光盘(CD-ROM),和磁盘一样采用直接存取方式,只可读不可写
关于 CD-ROM 的一些容易误解的地方
  1. 光盘和磁盘一样,磁头/光头可以先直接跳到目标数据所在的区域附近,然后再顺序查找具体的扇区,这种“先定位区域、再顺序查找”的模式属于直接存取(Direct Access / DAM);
  2. CD-ROM 的全称是 Compact Disc Read-Only Memory(只读光盘)。它是在工厂生产线上通过物理模具“压制”出来的,数据被永久固化在盘面的凹坑中。用户买到手后绝对无法写入或修改数据。市面上能让用户自己刻录数据的光盘叫 CD-R(一次性写入)或 CD-RW(可重复擦写),它们不能被称为 CD-ROM
  3. CD-ROM 不属于 ROM,虽然它和所有的 ROM 一样,具备“非易失性”以及“只能读取数据”的属性,但是从计算机体系结构上看:不属于(或不能划等号)。 在硬件术语中,当我们单独讨论“ROM”时,通常有严格的限定条件:材质 专指半导体芯片(如 BIOS ROM、Flash ROM 等);层级属于内存/主存的一部分,CPU 可以通过总线直接从中读取指令并执行。相反,CD-ROM 是光学介质,属于外存(辅存) CPU 无法直接执行光盘里的程序,必须先将光盘里的数据读取到内存(RAM)中,CPU 才能进行处理。

按信息的可更改性分类

  1. 可读可写存储器(Read/Write Memory):读写存储器中的信息可以读出和写入,RAM芯片是一种读写存储器;
  2. 只读存储器(Read Only Memory):只读存储器用ROM表示,ROM芯片中的信息一旦确定,通常情况下只读不写,但在某些情况下也可重新写入(如 E2PROM、Flash)

按断电后信息的可保存性分类

按存取方式分类

  1. 随机存取存储器(Random Access Memory,RAM):特点是按地址访问存储单元,因为每个地址译码时间相同,所以,在不考虑芯片内部缓冲的前提下,每个单元的访问时间是一个常数,与地址无关。不过,现在的DRAM芯片内都具有行缓冲,因而有些数据可能因为已在缓冲而缩短了访问时间RAM又分为静态RAM(以触发器原理寄存信息)和动态RAM(以电容充电原理寄存信息)
  2. 顺序存取存储器(Sequential Access Memory,SAM):特点是信息按顺序存放和读出,其存取时间取决于信息存放位置,以记录块为单位编址。磁带存储器就是一种顺序存取存储器,其存储容量大,但存取速度慢。
  3. 直接存取存储器(Direct Access Memory,DAM):存取方式兼有随机访问和顺序访问的特点。首先可直接选取所需信息所在区域,然后按顺序方式存取,磁盘存储器就是如此。
  4. 相联存储器 Associate Memory(AM): 上述3类存储器都是按所需信息的地址来访问,但有些情况下可能不知道所访问信息的地址,只知道要访问信息的内容特征,此时,只能按内容检索到存储位置进行读写。这种存储器称为按内容访问存储器(Content Addressed Memory,CAM)或相联存储器(Associative Memory)。例如,快表就是一种相联存储器。

ROM 和 RAM 一样,都是随机存取存储器吗?
答:是的。虽然经常把只读存储器(ROM)和随机访问存储器(RAM)放在一起进行分类,但ROM的存取方式和RAM是一样的,都是通过对地址进行译码,选择某个单元进行读写。所以两者采用的都是随机存取方式。不过,在程序执行过程中,ROM存储区只能读出信息,不能修改,而RAM区可以读出,也可以修改信息。

存储器的主要性能指标

  1. 存储器容量:存储器可以存储的二进制信息总量(或者说包含的存储单元的总数);若存储器按字节编址,那么一个存储单元为 1 个字节(bit),128B 表示该存储器有 128 个存储单元。
  2. 存取时间 (Access Time, T_A)

定义: 启动一次存储器操作(读或写分别对应取与存)到该操作真正完成所经历的时间。注意读写时间可能不同,DRAM 读慢写快、闪存读快写慢。

具体到读写操作,它的衡量起点和终点如下:

核心特征: 存取时间只关注“单次操作”的耗时,它衡量的是存储器阵列本身寻址、信号放大和数据传输的纯粹物理延迟。

  1. 存取周期 (Memory Cycle Time, T_C)

严格定义: 存储器进行两次独立的、连续的存取操作之间所需的最小时间间隔

核心特征: 存取周期关注的是存储器的“吞吐率”或“连续工作能力”。它不仅仅包含了一次读或写的时间,还包含了让存储器“缓过神来”准备下一次操作的时间。

为什么 存取周期 > 存取时间?

它们之间的数学关系可以严格表示为:T_C = T_A + T_R;其中,T_R 被称为恢复时间(Recovery Time)

存储器在完成一次存取操作后,其内部的物理电路并不能立刻无缝衔接处理下一个请求,而是需要一段“恢复”和“复位”的时间。导致这种现象的原因包括:

  • 破坏性读出(如 DRAM): DRAM的读取是破坏性的。读出数据后,原存储单元内的电荷会被释放掉。因此,在读出操作完成后,存储器内部必须强制执行一个“重写”操作,把数据写回去并让位线电压复位,这段时间就是典型的恢复时间。
  • 电路延迟: 地址译码器、读写控制逻辑等内部电路在电平翻转后,需要一定时间才能稳定回初始状态,以防止下一次操作出现信号干扰。

存取时间决定了 CPU 请求一次数据需要等多久(单次响应速度);而存取周期决定了 CPU 每秒钟最多能向内存发多少次请求(整体带宽上限)。在现代计算机系统中,尤其是对于主存(DRAM)而言,存取周期永远大于存取时间。

  1. 存储器带宽:单位时间内存储器所能传输(存入或读出)的连续最大数据量。

它是衡量存储系统整体数据传输能力的最关键指标,通常以 字节/秒(B/s)、兆字节/秒(MB/s)或 吉字节/秒(GB/s)为单位。它的理论计算公式为:

B_m = \frac{W}{T_C}

从上述公式可以看出,要提升存储器的带宽,通常依赖以下两个核心路径:

  1. 缩短存取周期(减小 T_C
    这等同于提高存储器的工作频率(频率是周期的倒数)。例如,每一代内存条的更迭(从 DDR3 到 DDR4,再到 DDR5),其核心进步之一就是通过改进电气特性和预取技术,大幅提高了等效工作频率,从而缩短了连续传输的周期时间。
  2. 增加数据位宽(增大 W
    这等同于拓宽数据传输的“车道”。在现代计算机系统中,最典型的应用就是双通道或四通道内存技术。(例如单根内存条的物理位宽是 64 bit(8 字节),当你在主板上组建双通道时,CPU 的内存控制器会同时并行操作两根内存,将位宽翻倍扩展至 128 bit(16 字节)。在存取周期不变的情况下,理论带宽直接翻倍)

如果将数据传输比作供水系统:

  • 存取时间 (Access Time): 是你拧开水龙头后,等待“第一滴水”流出来所需的时间(单次延迟)。
  • 存取周期 (Cycle Time): 是水龙头连续开关两次之间所必须等待的最短时间。
  • 存储器带宽 (Bandwidth): 是结合了水管的“粗细”(位宽)和连续供水能力(周期)之后,在一秒钟内总共能流出的“总水量”。


存储器的层次化结构

为什么需要层次化结构?


存储器的“金字塔”结构

存储系统从上到下一般由 5 级构成,整体呈现金字塔形。


两个关键的存储层次

现代计算机主要通过构建两个层次来全面优化存储系统:


Cache-主存层次与主存-辅存层次的异同点

一、 两个层次的相同点

这两个层次在工作原理和管理机制上有以下核心共性:

  1. 理论基础: 都是基于程序访问的局部性特点,将相邻的局部信息从慢速存储器复制到快速存储器中。
  2. 需要解决映射问题: 都必须考虑慢速存储器和快速存储器之间的地址映射关系。
  3. 需要解决替换问题: 当快速存储器已满,且需要装入新块时,都需要考虑替换策略(把哪一块替换出去)。
  4. 缺失时的调入机制: 当在快速存储器中找不到所需信息(缺失)时,都需要从慢速存储器中将包含该信息的块调入到快速存储器中。

二、 两个层次的不同点

由于所处位置和引入目的不同,两者在具体实现上存在显著差异:

对比维度

Cache - 主存层次

主存 - 辅存层次

位置与访问权限

最靠近 CPU。CPU 可直接访问 Cache 和主存。

远离 CPU。CPU 不能直接访问辅存,辅存需与主存直接交换数据。

引入目的

解决速度问题加快 CPU 访问信息的速度

解决容量问题:采用虚拟存储器机制,扩大系统的存储容量,使编程不受内存大小限制。

交换的数据单位

称为主存块 (Block),通常较小,一般为 8 ~ 128B

称为页 (Page),通常较大,一般为 4KB ~ 64KB(因缺页损失远大于 Cache 缺失,页太小会降低效率)。

缺失处理

由处理器(硬件)直接实现。

由操作系统(软件)实现。

映射方式

可灵活选择直接映射、全相联映射或组相联映射

均采用全相联映射方式。

映射的实现介质

映射关系完全由硬件实现,使用 Cache 行中的标志 (Tag) 字段描述。

映射关系由操作系统实现,使用页表来描述。

写策略

可以采用直写 (Write-through)回写 (Write-back) 两种策略。

都采用回写 (Write-back) 策略(因为直接写磁盘的开销过大,无法容忍直写策略)。

数据的访问与调度规则


习题演练

  1. 【2010-16】下列有关RAM和ROM的叙述中,正确的是( )。

Ⅰ. RAM是易失性存储器,ROM是非易失性存储器

Ⅱ. RAM和ROM都采用随机存取方式进行信息访问

Ⅲ. RAM和ROM都可用作Cache

Ⅳ. RAM和ROM都需要进行刷新

A. 仅Ⅰ和Ⅱ

B. 仅Ⅱ和Ⅲ

C. 仅Ⅰ、Ⅱ和Ⅳ

D. 仅Ⅱ、Ⅲ和Ⅳ

解析

答案选 B

解答:

I正确,II正确,不再解释。

在实际应用中,通常使用高速RAM作为Cache,而不使用ROM。III错误。

RAM需要定期进行刷新,以防止数据丢失。这是由于RAM采用了电容来存储数据,而电容会逐渐失去电荷,需要定期重新充电。ROM不需要刷新,因为它使用了固化的存储技术,数据是永久保存的。IV错误。

综上,I和II正确。

本题选A。


  1. 【2011-14】下列各类存储器中,不采用随机存取方式的是( )。

A. EPROM

B. CDROM

C. DRAM

D. SRAM

解析

答案选 B

CDROM 采用直接存取方式,注意 CD-ROM 不是 ROM,ROM 特指只读属性的半导体存储器,CDROM 属于光存储器。


  1. (袁书配套习题)下面有关 ROM 和 RAM 的叙述中,错误的是( )
    A. RAM 是可读可写存储器,ROM 是只读存储器
    B. ROM 和 RAM 都采用随机访问方式进行读写
    C. 系统的主存由 RAM 和 ROM 组成
    D. 系统的主存都用 DRAM 芯片实现
解析

答案选 D

A是正确的: RAM(随机存储器)正常工作时可以随时读写;ROM(只读存储器)在正常工作时只能读出数据。

B是正确的: 这里的“随机访问方式”(Random Access)指的是存取时间与存储单元的物理位置无关。RAM和ROM在读取数据时,都可以直接按地址访问任意一个存储单元,且花费的时间相同,所以它们都属于随机存取方式。(这说法稍有瑕疵,一般来说ROM存储区只能读出信息,不能修改,因此RAM和ROM都采用随机存取方式进行信息访问这种真题的描述更为合适)

C是正确的: 计算机的主存(内存)实际上是由RAM和ROM共同组成的。RAM占据了主存的绝大部分,用于存放运行中的程序和数据;而ROM通常用于存放系统启动和底层的BIOS程序

D是错误的: 通用 PC 系统的主存由 RAM 区和 ROM 区组成,其中 RAM 区一般都用 DRAM 芯片实现,ROM 区则用相应的 ROM 存储元件实现。有些嵌入式专用系统可能其主存都是由 ROM 存储元件实现,还有些系统也会用 SRAM 芯片实现内存,所以,并不是所有系统的内存都是由 DRAM 芯片实现的。答案为选项 D。


  1. (袁书配套习题)下面有关半导体存储器的叙述中,错误的是( )。
    A. 半导体存储器都采用随机存取方式进行读写
    B. ROM 芯片属于半导体随机存储器芯片
    C. SRAM 是半导体静态随机访问存储器,可用作 cache
    D. DRAM 是半导体动态随机访问存储器,可用作主存
解析

答案选 A

A是错误的: 有些半导体存储器可以采用按内容访问方式。例如,全相联映射的 cache 就是根据标志信息(Tag)来访问的。因此,选项 A 的说法是错误的。

B 正确;

C是正确的: SRAM(静态随机存储器)存取速度快,但集成度低、功耗大、成本高,通常用来制作计算机的高速缓存(Cache)。

D是正确的: DRAM(动态随机存储器)集成度高、容量大、成本较低,但速度比SRAM慢,且需要定期刷新,通常用来制作计算机的主存。


  1. 【2024-16】对于页式虚拟存储管理系统,下列关于存储器层次结构的叙述中,错误的是

A. Cache-主存层次的交换单位为主存块,主存-外存层次交换单位为页

B. Cache-主存层次替换算法由硬件实现,主存-外存层次替换算法由软件实现

C. Cache-主存层次可采用回写法写策略,主存-外存层次通常采用回写法写策略

D. Cache-主存层次可采用直接映射方式,主存-外存层次通常采用直接映射方式

解析

答案选 D

  • D 选项错误。 Cache-主存层次确实可以采用直接映射方式(也可以是全相联或组相联),但是主存-外存层次(虚拟存储系统)通常采用的是全相联映射方式,而不是直接映射方式。因为外存(磁盘)的读取速度极慢,发生缺页的代价极其惨重,为了尽最大可能消除“冲突缺失”、提高命中率,系统允许将外存中的任何一页调入主存中的任何一个空闲页框内(即全相联)。

其他选项分析(均为正确叙述):

  • A 选项正确: Cache 与主存之间的数据交换是以“块(Block)”为单位的(通常几十字节);而主存与外存之间的数据交换是以“页(Page)”为单位的(通常几KB到几十KB)。
  • B 选项正确: Cache 为了追求极致的速度,其映射、替换等所有操作均由硬件逻辑直接实现;而主存-外存层次的缺页处理、页面替换等操作,是由操作系统的存储管理模块(软件)结合页表来实现的。
  • C 选项正确: Cache-主存层次的写策略可以是直写(Write-through)或回写(Write-back);但在主存-外存层次,由于每次访问磁盘的开销巨大,系统绝不可能在每次修改主存时都同步去写磁盘(直写),因此必然采用回写策略,即只在页面被替换出主存时才将其写回磁盘。
为什么主存-辅存必须用“全相联”? 为什么 Cache 不全用全相联?

1. 什么是主存-辅存的“全相联映射”?

在虚拟存储器中,逻辑空间被划分为大小相等的“页”,物理主存被划分为同样大小的“页框”。全相联映射即 辅存(硬盘)中的任何一个页,都可以被灵活地装入到主存中的任何一个空闲的页框里。它们之间没有任何位置上的“强制绑定”关系。

可以用“停车场”来形象地理解:

  • 直接映射(Cache常用): 你的车牌号尾数是5,你就只能停在5号车位。如果5号车位有人了,即使整个停车场其他几百个车位全空着,你也得把5号车位那辆车赶走才能停进去。(这叫冲突缺失,命中率低)。
  • 全相联映射(主存-辅存采用): 你可以把车停在停车场的任何一个空闲车位。只有当整个停车场彻底爆满时,你才需要考虑赶走一辆车(替换)。

2. 为什么主存-辅存必须用“全相”?

核心原因有以下三点:

① 硬盘太慢了,缺页代价极其惨重,这是最根本的原因。

  • CPU 访问主存的速度是纳秒级 (ns)
  • CPU 访问硬盘(辅存)的速度是毫秒级 (ms)
    两者相差了数十万甚至上百万倍。如果在主存中找不到需要的数据(发生“缺页”),系统就不得不去读硬盘,这会导致 CPU 被迫停顿漫长的时间。因此,主存-辅存层次设计的最高优先级目标就是:不择手段地提高命中率,尽一切可能避免去读硬盘。

② 全相联能提供最高的命中率

正如上面停车场的例子,如果在这个层次使用“直接映射”或“组相联映射”,就会发生“冲突缺失”——主存明明还有大量空闲空间,却因为位置限制不得不把有用的数据踢回硬盘。采用全相联映射,只要主存没被完全塞满,就绝对不会发生替换操作。这就彻底消除了“冲突缺失”,从而最大化了主存的命中率

③ 靠操作系统(软件)实现,有条件做全相联

你可能会问:既然全相联这么好,为什么 Cache 不全用全相联?

  • Cache 的无奈: Cache 是为了匹配 CPU 的极速,它的地址转换必须在 1~2 个时钟周期内靠纯硬件电路完成。如果 Cache 做成全相联,意味着硬件要在瞬间同时把目标地址和 Cache 中所有行的地址进行比对,这种极其复杂的比较器电路成本太高,且延迟很大,所以 Cache 只能妥协,多用组相联。
  • 主存-辅存的优势: 主存-辅存的映射和缺页处理是由操作系统(软件)结合数据结构(页表 Page Table)来实现的。软件查表是非常灵活的,记录“任意页对应任意页框”的映射关系轻而易举。虽然软件查表、更新页表比起纯硬件耗时更长,但是与读取硬盘那漫长的毫秒级时间相比,这点软件处理的开销简直微不足道

总结

主存-辅存层次采用全相联映射,是典型的“用空间和软件管理的复杂度,去换取宝贵的磁盘 I/O 时间”的权衡结果。因为在这里,哪怕能减少 1% 的缺页率,带来的性能提升都是巨大的。


  1. (原创题)某计算机的主存存取周期为 50 ns,存取时间为 40 ns,数据总线宽度为 64 位。若不考虑其他开销,该主存的最大理论带宽是多少?

A. 200 MB/s

B. 160 MB/s

C. 1280 MB/s

D. 1.28 GB/s

解析

正确答案:B

解析: 存储器带宽衡量的是连续传输数据的能力。由于存储器在一次存取后需要恢复时间(T_C = T_A + T_R),所以连续访问的最小时间间隔是存取周期(50 ns),而不是存取时间(40 ns)。题干中的“存取时间为 40 ns”是迷惑信息。

计算过程:存储器带宽公式为:B_m = \frac{W}{T_C}

数据位宽 W = 64 \text{ bit} = 8 \text{ Byte}

存取周期 T_C = 50 \text{ ns} = 50 \times 10^{-9}

带宽 = \frac{8 \text{ Byte}}{50 \times 10^{-9

因此选 B。


  1. (袁书配套习题)在主存和 CPU 之间增加 cache 的目的是( )。

A. 增加内存容量

B. 提高内存可靠性

C. 加快信息访问速度

D. 增加内存容量,同时加快访问速度

解析

答案:C.

解析:

  • Cache-主存层次的核心目的是为了缓解 CPU 和主存之间速度不匹配的矛盾,利用局部性原理将 CPU 最常访问的数据放在速度极快的 Cache 中,从而加快信息的整体访问速度。
  • 选项 A 和 D 中提到的“增加内存容量”,是主存-辅存层次(即虚拟存储器)要解决的问题。而且 Cache 的内容是主存的副本,它再大也不会增加内存的容量。


  1. (原创题)关于 Cache-主存层次与主存-辅存(外存)层次的异同,下列叙述中错误的是( )

A. 引入 Cache-主存层次的主要目的是为了加快 CPU 访问信息的速度,而主存-辅存层次则是为了解决主存容量不足的问题。

B. CPU 可以直接访问 Cache 和主存中的数据,但不能直接访问辅存,辅存的数据必须先调入主存才能被 CPU 处理。

C. Cache-主存层次的地址映射关系完全由硬件实现并使用标志(Tag)描述,主存-辅存层次的映射关系则由操作系统通过页表来实现。

D. Cache-主存层次和主存-辅存层次的数据调度与交换过程,对所有的程序员(包括应用程序员和系统程序员)都是完全透明的。

解析

正确答案:D

  • D 选项错误: 两个层次在“透明性”上是不同的。Cache-主存层次的数据交换完全由硬件自动完成,对所有程序员(无论是应用程序员还是系统程序员)都是透明的;而主存-辅存层次(虚拟存储器)的数据交换由硬件和操作系统共同完成,它只对应用程序员透明,但对系统程序员是不透明的(因为系统程序员需要编写操作系统中的缺页中断处理、页面替换等底层硬件调度代码)。
  • A 选项正确: 准确描述了两者的引入目的。Cache 用于提速(填补 CPU 和主存间的速度鸿沟),虚拟存储器(主存-辅存)用于扩容。
  • B 选项正确: 准确描述了 CPU 的访问权限。Cache 和主存属于内部存储器,CPU 可直接寻址访问;辅存属于外部存储器,必须经过主存作为中转。
  • C 选项正确: 准确描述了映射关系的实现介质。Cache 为了极致的速度,映射和查找全靠纯硬件电路(比对 Tag);而主存-辅存层次的缺页代价大,由软件(操作系统)维护的页表(Page Table)来实现虚拟地址到物理地址的映射。

核心考点与易错点补充

  1. 存取方式的陷阱
  1. 介质与概念的区分

3. 主存的构成

  1. 易错点混淆“存取时间”与“存取周期”
  1. 易错点 :主存-辅存层次的“写策略”与“映射方式”
  1. 易错点 :透明性的概念混淆

7. 易错点 :数据缺失时的流向