存储器的分类
存储器的分类看上去是最没有技术含量的一节,但它贡献了本章几乎全部的判断题。原因很简单:分类有四个互相独立的维度,而每个维度的名字都容易被当成另一个维度的名字用。“易失”被当成”要刷新”、“随机存取”被当成”能随便访问”、“只读存储器”被当成”不能写”——每一个都是命题人反复用的坑。
这一节的目标不是把分类背下来,而是把四个维度彻底分开:任何一个存储器件,都可以同时在四个维度上各有一个位置,这四个位置之间没有推导关系。
机制
四个维度是正交的
| 维度 | 问的问题 | 取值 |
|---|---|---|
| 在系统中的作用 | 它在层次结构的哪一层 | 主存 / 辅存 / 高速缓存(Cache)/ 控制存储器 |
| 存储介质 | 用什么材料存 | 半导体 / 磁表面 / 光介质 / 磁芯 |
| 存取方式 | 存取时间与地址有没有关系 | 随机存取 / 顺序存取 / 直接存取 / 相联存取 |
| 信息的可保存性 | 断电以后还在不在 | 易失 / 非易失;另有读出是否破坏原信息 |
“正交”的意思是:知道一个器件在某个维度的位置,推不出它在另一个维度的位置。 Flash 是半导体介质、随机存取、非易失、可改写——它在四个维度上的取值互不相干,任何两条之间都没有蕴含关系。
疑问点:给定的名词分别属于哪个分类维度
“串行访问 / ROM / 磁表面 / flash 闪存 / 非易失性”这一组词看起来是并列的,实际分属四个不同维度: 串行访问属于按存取方式;ROM 属于按可改写性(也常与”非易失”绑定叙述);磁表面和 flash 闪存属于按存储介质;非易失性属于按信息的可保存性。 把它们排成一列去记,正是混淆的开始;必须先问”这是在回答哪个问题”。
按在系统中的作用
主存储器(内存):CPU 可以直接用指令访问的存储器,掉电丢失,容量受地址空间限制。
辅助存储器(外存):CPU 不能直接访问,必须先调入主存。磁盘、SSD、光盘、磁带都属此类。
高速缓冲存储器(Cache):位于 CPU 与主存之间,对程序员透明,由硬件自动管理。详见 3.5.2。
控制存储器(CM):微程序控制器内部存放微指令的 ROM,属于 CPU 内部,见 第 5 章。
只有主存和 Cache 在 CPU 的地址空间里——这句话是判断”CPU 能否直接访问”的唯一依据。
按存储介质
半导体存储器:SRAM、DRAM、ROM、Flash。速度快、体积小、集成度高,全部由半导体工艺制造,但易失与否取决于具体器件。
磁表面存储器:磁盘、磁带。信息记录在涂覆于载体表面的磁性材料上,非易失、容量大、速度慢。
光介质存储器:CD、DVD、蓝光。靠激光读写反射率差异。
磁芯存储器:早期主存,用铁氧体磁环的剩磁方向表示 0 和 1。
疑问点:磁芯存储器在 408 里以什么身份出现
磁芯存储器是 20 世纪 50~70 年代的主存实现,用穿在导线交叉点上的铁氧体小磁环存位,磁化方向顺时针/逆时针分别表示 0 和 1。 它在 408 里几乎只承担一个作用:作为”非易失 + 破坏性读出”的标准例子。 磁芯的读出方式是”给它写一个 0,看有没有感应出脉冲”——判断的过程本身就把原信息抹掉了,所以每次读后必须重写。 与它成对出现的是 DRAM:DRAM 读出时电容会放电,同样是破坏性读出,同样需要读后重写。其余器件(SRAM、ROM、Flash、磁盘)都是非破坏性读出。
按存取方式
这是四个维度里唯一有精确判据的一个:存取时间与被访问单元的物理位置有没有关系。
| 方式 | 判据 | 例子 |
|---|---|---|
| 随机存取 RAM | 存取时间与地址无关,任何单元都一样快 | 半导体主存(含 SRAM、DRAM)、ROM、Flash |
| 顺序存取 SAM | 必须从头顺序找到目标位置 | 磁带 |
| 直接存取 DAM | 先直接定位到某个小区域,再在区域内顺序找 | 磁盘、光盘 |
| 相联存取 CAM | 按内容检索,不给地址给内容 | 相联存储器、TLB、全相联 Cache 的标记部分 |
顺序存取与直接存取合称”串行访问存储器”,它们的共同特征是存取时间与位置有关。
边界辨析:ROM 也是随机存取存储器
“RAM” 这个缩写在中文教材里被翻译成”随机存储器”,同时又被用作”读写存储器”的同义词,这是两个不同的含义挤进了同一个缩写。 严格地说:随机存取(Random Access)描述的是”存取时间与地址无关”这个性质,ROM 完全满足它。因此”ROM 属于随机存取存储器”是正确的。 而日常语境里说”RAM 和 ROM”,比较的是能不能在线改写,这时 RAM 指的是读写存储器。做题时看题干在比什么:比存取时间就是存取方式维度,比能不能写就是可改写性维度。
按信息的可保存性
易失性(Volatile)的定义只有一条:断电后信息丢失。 SRAM、DRAM 都是易失的;ROM、Flash、磁盘、光盘、磁带都是非易失的。
破坏性读出(DRO):读操作本身会改变原存储的信息,因此读后必须重写。DRAM 和磁芯存储器属于此类,其余为非破坏性读出。
边界
边界辨析:易失性的判据是"断电丢不丢",不是"要不要刷新"
这是本节最高频的错误,三条常见判断题都从这里出:
① “DRAM 是易失性 RAM,而 SRAM 中的存储信息是不易失的”——错。 SRAM 同样是易失的。SRAM 与 DRAM 的差别在于要不要刷新(SRAM 用触发器锁住,DRAM 用电容会漏电),这个差别与易失性无关。
② “半导体 RAM 是易失性 RAM,但只要电源不断电,所存信息是不丢失的”——对。 这正是①的纠正版。“易失”这个词的全部含义就是”断电丢失”;通电状态下 DRAM 由存储控制器自动刷新,信息照样保持。刷新是通电时的正常操作,不构成”信息会丢”的反例。
③ “随机存储器和只读存储器不可以统一编址”——错。 RAM 与 ROM 完全可以放进同一个主存地址空间,各占一段连续地址,由片选译码区分。这正是 3.3.3 地址分配与片选要解决的问题;许多嵌入式系统的低地址段就是 ROM(存放引导程序),高地址段是 RAM。
“存取时间与地址无关”不等于”任何时刻访问都一样快”。 DRAM 是随机存取存储器,但同一行内连续访问(行缓冲命中)明显快于跨行访问——这属于时序优化,不改变”随机存取”这个分类。分类看的是体系结构定义,不是实测性能。
Cache 对程序员透明,磁盘对程序员不透明。 “透明”指的是程序员无需也无法用指令直接指定。这条与 3.6.5 的对比直接相关:Cache 全硬件管理,虚拟存储器由硬件+操作系统共同管理。
对照速查
| 器件 | 介质 | 存取方式 | 易失性 | 读出破坏 |
|---|---|---|---|---|
| SRAM | 半导体 | 随机 | 易失 | 否 |
| DRAM | 半导体 | 随机 | 易失 | 是 |
| ROM / Flash | 半导体 | 随机 | 非易失 | 否 |
| 磁盘 | 磁表面 | 直接 | 非易失 | 否 |
| 磁带 | 磁表面 | 顺序 | 非易失 | 否 |
| 光盘 | 光介质 | 直接 | 非易失 | 否 |
| 磁芯 | 磁芯 | 随机 | 非易失 | 是 |
考点
- 四个分类维度正交,任意两个维度之间没有推导关系
- 易失 = 断电丢失,与”要不要刷新”无关;SRAM 也是易失的
- ROM 属于随机存取存储器(存取时间与地址无关)
- 磁盘是直接存取,磁带是顺序存取,两者合称串行访问存储器
- RAM 与 ROM 可以统一编址
- 破坏性读出只有 DRAM 和磁芯,读后必须重写
- 相联存储器按内容访问,用于 TLB 和全相联 Cache
- CPU 能直接访问的只有 Cache 和主存
链接
- 🏠 返回总览:计算机组成原理第 3 章:存储系统总览
- ➡️ 下一节:3.1.2 存储器的性能指标
- 🔗 3.2.1 SRAM 芯片和 DRAM 芯片(刷新与易失性的分工)
- 🔗 3.2.2 只读存储器(Flash 归类的历史包袱)
- 📖 名词库:第 3 章名词库