ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

软考存储器分类全解析:介质、存取方式与易失性

软考存储器分类全解析:介质、存取方式与易失性

1. 存储器分类的底层逻辑:为什么软考年年考这个点

软考里但凡涉及计算机组成原理的科目,存储器分类几乎是绕不开的一道坎。很多人第一次翻教材看到"按存取方式分""按存储介质分""按信息易失性分"这几套分类维度,第一反应是背表格,背完做题还是错。问题出在哪?出在没有把分类维度和实际硬件行为对应起来。你背了"RAM是易失性存储器",但题目换个问法——"断电后数据丢失的存储器有哪些"——你就开始犹豫ROM算不算。这种犹豫的根源不是记忆力问题,是理解深度不够。

存储器分类这个知识点,表面上是名词解释,实际上是整个计算机存储体系的骨架。你后面学Cache映射方式、学虚拟存储器的页表机制、学磁盘调度算法,全都要回到这个骨架上来。比如Cache为什么用SRAM而主存用DRAM,这个选择的背后就是"速度-成本-容量"三角约束在起作用。再比如虚拟存储器为什么能"扩大"主存容量,本质上是利用了外存的非易失性和大容量特性做了一层地址映射。这些内容如果孤立地背,考完就忘;但如果挂在存储器分类的骨架上,就能串成一条线。

我在带人复习软考的时候,习惯先让对方画一张存储器的"分类树",不是照抄教材那种,而是自己按"如果我是设计者,我会怎么分"的思路来画。画完之后再对照教材查漏补缺。这个方法的好处是,分类维度不再是外部强加的条条框框,而是你从工程直觉出发自然推导出来的结果。下面我就按这个思路,把存储器分类这件事从头到尾拆一遍。

2. 按存储介质分类:从物理层面理解存储的本质

2.1 半导体存储器、磁存储与光存储的物理差异

按存储介质分类,教材上通常给三类:半导体存储器、磁表面存储器、光存储器。这个分类看起来简单,但考试里经常用"下列哪种存储器属于磁表面存储器"这种形式来考你,选项里混入半导体存储器的具体型号,比如把EEPROM和硬盘放一起让你选。如果你只知道"硬盘是磁存储",但不知道EEPROM是半导体存储,就容易翻车。

半导体存储器的核心元件是半导体器件,比如MOS管、浮栅晶体管。RAM、ROM、Flash都属于这一类。它的特点是存取速度快、体积小、功耗低,但单位容量成本相对较高。你手机里的运行内存和闪存、电脑里的内存条和固态硬盘,本质上都是半导体存储器。这里有个容易混淆的点:固态硬盘虽然叫"硬盘",但它用的是Flash芯片,属于半导体存储器,不是磁表面存储器。软考选择题里这个坑出现过不止一次。

磁表面存储器靠磁化方向记录信息,典型代表是机械硬盘和磁带。它的优势是单位容量成本低、技术成熟,但存取速度受机械运动限制,随机访问性能差。磁带更是典型的顺序存取设备,你要读第1000个数据块,得从头转过去。这类存储在软考里经常和"顺序存取"这个概念绑定考查。

光存储器用激光在介质上烧蚀或改变反射率来记录信息,CD、DVD、蓝光都属于这一类。它的特点是存储密度高、保存时间长,但读写速度一般,且写入往往需要专用设备。软考里光存储出现的频率不如前两类高,但偶尔会在"按存取方式分类"的题目里作为顺序存取或直接存取的例子出现。

注意:固态硬盘的归类是软考高频易错点。记住一个判断原则——看它有没有机械运动部件。没有机械部件的存储设备,基本可以排除磁表面存储器。

2.2 介质分类在考试中的典型考法

介质分类的考法主要有两种。第一种是直接判断某设备属于哪类介质,比如"U盘属于什么存储器"。U盘用的是Flash芯片,属于半导体存储器。第二种是结合存取方式一起考,比如"下列存储器中,既属于半导体存储器又属于直接存取方式的是哪一个"。这种题需要你把两个维度的分类交叉起来判断。

我整理了一个交叉对照表,复习的时候可以直接拿来用:

存储设备存储介质存取方式信息易失性
内存条(DRAM)半导体随机存取易失
内存条(SRAM,Cache用)半导体随机存取易失
BIOS芯片(ROM/Flash)半导体随机存取非易失
机械硬盘磁表面直接存取非易失
磁带磁表面顺序存取非易失
CD/DVD光直接存取非易失
U盘/固态硬盘半导体直接存取非易失

这张表建议自己动手默写一遍,比看十遍教材管用。默写的时候重点盯住"固态硬盘"和"U盘"这两行,它们同时踩中了"半导体介质"和"直接存取"两个属性,是出题人最喜欢设陷阱的地方。

3. 按存取方式分类:随机、顺序、直接、相联到底怎么区分

3.1 四种存取方式的核心判据

按存取方式分类是软考里最容易出歧义的一个维度,因为"随机存取"和"直接存取"这两个词在日常语境里听起来差不多,但在存储体系里有严格区分。教材上的定义是:随机存取指存取时间与存储单元的物理位置无关;顺序存取指存取时间与物理位置密切相关,必须按顺序访问;直接存取介于两者之间,先定位到某个区域,再在区域内顺序访问;相联存取则是按内容检索,不是按地址。

我用一个生活化的类比来解释这四种方式。随机存取就像你家的书架,每本书有固定位置,你伸手就能拿到任何一本,拿第一本和拿第一百本花的时间一样。顺序存取就像老式磁带听歌,你要听第五首,得先把前四首快进过去。直接存取像图书馆的闭架书库,你先告诉管理员你要哪一排(定位到区域),然后管理员在那排里帮你找(区域内顺序或直接访问)。相联存取像你问"有没有讲存储器分类的书",管理员按内容主题帮你检索,而不是按书架编号找。

这个类比能帮你快速判断题目里的设备属于哪种方式。但考试不会这么直白,它会用具体设备来考。比如"磁盘属于哪种存取方式"——答案是直接存取,因为磁盘要先寻道定位到磁道,然后在磁道上旋转等待扇区,寻道时间与磁头当前位置有关,但定位到磁道后扇区访问是直接的。再比如"磁带属于哪种存取方式"——顺序存取,因为磁带必须从头转到尾。

3.2 存取方式与存取周期的计算关联

软考中级和高级科目里,存取方式经常和存取周期计算结合出题。比如给一个磁盘的参数:平均寻道时间8ms,旋转速度7200rpm,每磁道扇区数,让你算平均存取时间。这类题的核心公式是:平均存取时间 = 平均寻道时间 + 平均旋转延迟 + 数据传输时间。其中平均旋转延迟 = 60 / (2 × 转速),单位换算要小心。

我拿一个具体数字走一遍。转速7200rpm,即每分钟7200转,每转耗时60/7200秒 = 8.33ms。平均旋转延迟是半圈的时间,即4.17ms。如果平均寻道时间8ms,传输时间忽略不计,平均存取时间就是8 + 4.17 ≈ 12.17ms。这个计算过程在软考里属于送分题,但前提是你得先判断出磁盘是直接存取设备,才能套用这个公式。如果你把磁盘误判成随机存取,就会觉得"存取时间应该和位置无关",公式就用错了。

提示:软考计算题里,凡是涉及"平均寻道时间""旋转延迟"的,一定是磁盘类直接存取设备。看到"顺序读写""从头到尾"的描述,基本是磁带类顺序存取设备。这两个关键词可以作为快速判据。

3.3 相联存储器的特殊地位

相联存储器在软考里出现频率不高,但一旦出现就是区分度题。它的特点是按内容访问,而不是按地址访问。你给它一个内容特征,它并行比较所有存储单元,返回匹配的单元。这种特性决定了它适合做快表(TLB)和Cache的标记比较。

为什么TLB用相联存储器?因为页表查询需要根据虚拟页号快速找到对应的物理页框号,如果按地址逐条查页表,速度太慢。相联存储器可以并行比较所有表项,一次就能命中。这个设计选择背后的逻辑是"用硬件并行性换时间",和Cache用SRAM替代DRAM是同一个思路——在关键路径上不惜成本。

软考里相联存储器的考法通常是概念判断,比如"按内容存取的存储器是哪种",或者结合Cache的地址映射方式考。你只需要记住"相联 = 按内容访问 = 并行比较"这个对应关系,基本就能应付。

4. 按信息易失性分类:RAM与ROM的边界到底在哪

4.1 易失性存储器的细分:DRAM与SRAM

按信息易失性分,存储器就两大类:易失性(断电后数据丢失)和非易失性(断电后数据保留)。易失性存储器的代表是RAM,但RAM内部还要再分DRAM和SRAM,这个细分是软考的高频考点。

DRAM用电容存储电荷来表示信息,电容会漏电,所以需要定期刷新。刷新的本质是读出再写回,这会占用存取周期。DRAM的优点是集成度高、单位容量成本低,适合做大容量主存。缺点是速度相对慢,且需要刷新电路。你电脑里的内存条就是DRAM。

SRAM用触发器存储信息,不需要刷新,速度快,但集成度低、成本高。它适合做Cache,因为Cache要求高速访问,容量小一点可以接受。CPU内部的L1 Cache通常就是SRAM。

这个选择的逻辑可以用一个类比来理解:DRAM像一个大仓库,容量大但取货慢,适合存大量货物;SRAM像你手边的小抽屉,容量小但伸手就拿到,适合放最常用的工具。计算机存储体系的设计就是"小抽屉放最常用的,大仓库放不常用的",这就是存储层次结构的思想。

软考里DRAM和SRAM的考法包括:判断某存储器是DRAM还是SRAM、DRAM为什么需要刷新、SRAM为什么适合做Cache、两者的速度与成本对比。我见过一道题问"下列存储器中,不需要刷新的是",选项里混了DRAM和SRAM,如果你不清楚刷新是DRAM的专利,就容易选错。

4.2 非易失性存储器的演进:从ROM到Flash

非易失性存储器以ROM为代表,但ROM家族本身也在演进。教材上通常列了MROM(掩膜ROM)、PROM(可编程ROM)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、Flash Memory(闪存)。这个演进线索的核心是"可编程性"和"可擦除性"的逐步增强。

MROM出厂时数据就烧死了,用户不能改。PROM用户可以用专用设备写一次,写完不能改。EPROM用紫外线照射擦除,擦除后可以重写。EEPROM用电信号擦除,可以按字节擦写。Flash介于EEPROM和磁盘之间,按块擦除,速度快、密度高,是现代固态存储的基础。

这个演进在软考里的考法是"下列哪种ROM可以电擦除"或者"Flash Memory属于哪类存储器"。你只需要抓住一条主线:从不可编程到可编程,从不可擦除到可擦除,从整片擦除到按块/按字节擦除。Flash的"按块擦除"特性是它区别于EEPROM的关键,也是它适合做大容量存储的原因——块擦除比字节擦除效率高得多。

注意:软考有时候会把Flash归到ROM大类里考,有时候单独考。判断标准是看题目语境——如果题目在讲"非易失性半导体存储器",Flash算ROM家族的延伸;如果题目在讲"固态存储介质",Flash就是独立的一类。不要死记归类,要看题目问的是什么维度。

4.3 易失性判断的实战技巧

易失性判断的题目看似简单,但出题人喜欢用"断电后数据是否丢失"来包装。我总结了一个快速判断法:看这个存储器是不是"工作内存"。CPU直接访问的、用来存放当前运行程序和数据的,基本都是易失性的(Cache、主存)。用来存放固件、配置、长期数据的,基本都是非易失性的(BIOS芯片、固态硬盘、U盘)。

但有一个例外要注意:CMOS存储器。它存放BIOS设置参数,靠主板上的小电池供电保持数据,断电后电池继续供电,所以数据不丢。但它本质上还是RAM(通常是低功耗SRAM),如果电池没电了数据就丢了。软考里偶尔会考CMOS,问它属于易失还是非易失,标准答案是"靠电池供电维持,属于非易失性使用方式,但物理上是易失性存储器"。这种题属于偏题,遇到就按"有电池备份算非易失"来判断。

5. 存储层次结构:分类知识的最终落脚点

5.1 从寄存器到外存的完整层次

存储器分类如果只停留在"分几类"的层面,价值有限。软考真正想考的是你能不能把分类知识用到存储层次结构上。计算机的存储体系是一个金字塔:寄存器 → Cache → 主存 → 外存。越往上速度越快、容量越小、成本越高;越往下速度越慢、容量越大、成本越低。

这个层次结构的设计逻辑是"局部性原理"。程序运行时,最近访问过的数据和指令很可能再次被访问(时间局部性),相邻地址的数据很可能被连续访问(空间局部性)。所以把最常用的数据放在最快的存储器里,用容量换速度,用速度换成本。Cache就是利用时间局部性,把主存中最近用过的数据块复制一份到SRAM里。主存和Cache之间的映射方式(直接映射、全相联、组相联)本质上是在"命中率"和"硬件复杂度"之间找平衡。

软考里存储层次结构的考法非常密集。比如"Cache的作用是什么"——缓解CPU与主存的速度差距。"虚拟存储器的作用是什么"——用外存扩大主存的逻辑容量。"存储层次结构从上到下速度和容量如何变化"——速度递减、容量递增、单位成本递减。这些题如果孤立地背,容易混;但如果挂在"分类→特性→用途"这条线上,就顺了。

5.2 Cache与主存的分类关联

Cache用SRAM,主存用DRAM,这个选择不是随意的。SRAM速度快但贵,DRAM慢但便宜。Cache容量小(几MB到几十MB),用SRAM成本可控;主存容量大(几GB到几十GB),用DRAM才能把成本压下来。如果主存也用SRAM,一台普通电脑的内存成本会翻好几倍。这个取舍在软考里经常以"为什么Cache用SRAM而主存用DRAM"的形式出现,标准答案就是速度与成本的平衡。

再往深一层,Cache的替换算法(LRU、FIFO、随机)也和分类知识有关。LRU基于时间局部性,淘汰最久未使用的块;FIFO按进入顺序淘汰;随机替换实现简单但命中率不稳定。这些算法的选择取决于Cache的相联程度——全相联Cache可以用任意替换算法,直接映射Cache没有替换问题(每个主存块只能映射到固定行)。你看,分类知识在这里又串起来了。

5.3 虚拟存储器与外存的角色

虚拟存储器是存储层次结构的延伸,它把外存当作主存的"后备"。程序运行时,只有当前需要的页面调入主存,其余留在外存。这个机制能成立的前提是外存是非易失性的大容量存储器(通常是磁盘或固态硬盘)。如果外存是易失性的,断电后程序数据全丢,虚拟存储器就失去意义了。

软考里虚拟存储器的考法包括:页表的作用、缺页中断的处理、页面置换算法(OPT、LRU、FIFO、Clock)、有效访问时间计算。这些内容看起来和"存储器分类"距离很远,但底层逻辑是一致的——你得分清主存和外存的特性差异,才能理解为什么要做地址映射和页面调度。主存是易失性、随机存取、速度快;外存是非易失性、直接存取、速度慢。虚拟存储器就是在两者之间搭一座桥,让程序感觉自己有一个又大又快的存储器。

提示:软考高级科目(如系统架构设计师)里,存储层次结构的考法会更偏设计层面,比如"给定命中率和访问时间,计算平均访问时间"。公式是:平均访问时间 = 命中率 × Cache访问时间 + (1 - 命中率) × 主存访问时间。这个公式的前提是你知道Cache和主存是两级串联的随机存取设备。分类知识在这里是公式成立的基础。

6. 常见错题与排查思路实录

6.1 分类交叉时的判断混乱

最常见的错题类型是"一个设备同时满足多个分类属性,让你判断它属于哪一类"。比如"固态硬盘属于什么存储器",选项有"半导体存储器""磁表面存储器""光存储器""易失性存储器"。正确答案是半导体存储器,但很多人会因为"硬盘"两个字选磁表面。排查思路是:先看物理介质(有没有磁性涂层、有没有机械磁头),再看存取方式(有没有寻道过程),最后看易失性。固态硬盘没有机械部件、没有磁性涂层,用的是Flash芯片,所以是半导体、非易失、直接存取。

再比如"U盘属于什么存取方式",有人选随机存取,有人选直接存取。正确答案是直接存取,因为U盘虽然可以随机读写任意扇区,但它的访问粒度是块,且需要先定位到块地址再读写,符合直接存取的定义。随机存取的严格定义是"按地址随机访问任意存储单元,存取时间与位置无关",U盘的块管理和磨损均衡机制使得它的访问时间并不完全与位置无关。这个区分在软考里属于细节题,但确实考过。

6.2 刷新与易失性的混淆

另一个高频错点是"DRAM需要刷新"和"DRAM是易失性"这两个知识点混在一起。有人问"DRAM刷新是为了防止数据丢失吗",答案是"是,但刷新不能改变它的易失性"。刷新只是在通电状态下维持数据,断电后数据照样丢。易失性是断电后的行为,刷新是通电时的维护操作,两者不是一回事。

软考里有一类题问"下列措施中,能防止存储器数据丢失的是",选项里混入"定期刷新DRAM""使用SRAM""使用ROM""增加电池备份"。正确答案要看题目问的是断电场景还是通电场景。如果是断电场景,刷新没用,得用非易失性存储器或电池备份;如果是通电场景下的数据保持,刷新有用。这种题的关键是抓住"断电"这个前提条件。

6.3 存取周期与存取时间的区分

存取时间和存取周期是两个容易混的概念。存取时间是从发出读/写命令到数据稳定输出的时间;存取周期是两次独立访问之间的最小间隔,通常大于存取时间,因为要留出恢复时间。DRAM的存取周期包括刷新开销,所以比存取时间长不少。软考里如果题目问"连续读写时两次操作的最小间隔",考的是存取周期;如果问"从发出地址到数据有效的时间",考的是存取时间。

这个区分在计算题里很关键。比如给DRAM的存取时间70ns、存取周期100ns,问连续读两个字节需要多长时间。答案是100ns(第一个字节的存取时间70ns加上恢复时间,第二个字节在存取周期结束后开始),而不是140ns。很多人直接用存取时间乘2,就错了。

6.4 常见问题速查表

问题现象可能原因排查思路
固态硬盘被误判为磁表面存储器被"硬盘"二字误导看有无机械部件和磁性介质,Flash芯片属半导体
DRAM刷新被当成防断电丢失混淆通电维护与断电保持刷新只在通电时有效,断电后仍丢失
U盘存取方式选成随机存取忽略块访问和定位过程直接存取 = 先定位区域再访问,随机存取 = 位置无关
Cache用SRAM的原因答成"速度快"只答了一半完整答案:速度快且成本可接受,主存用DRAM是容量成本考虑
存取周期与存取时间混用未区分恢复时间存取周期 ≥ 存取时间,连续访问看周期
CMOS易失性判断错误忽略电池备份有电池供电维持,按非易失性使用方式判断

7. 复习策略与实操建议

7.1 用分类树代替死记硬背

我自己的复习方法是画一棵分类树,根节点是"存储器",第一层分三个维度:介质、存取方式、易失性。每个维度往下挂具体类型,每个类型再挂典型设备和特性。画完之后,拿一张白纸默写,写不出来的地方就是薄弱点。这个方法比反复看教材有效,因为默写逼着你主动回忆,而不是被动识别。

默写的时候重点检查交叉点。比如"半导体 + 直接存取 + 非易失"对应什么设备?答案是Flash(U盘、固态硬盘)。"半导体 + 随机存取 + 易失"对应什么?DRAM和SRAM。这些交叉点就是选择题的题眼。你把交叉表默熟,考场上看到任何组合都能快速反应。

7.2 结合真题反向定位知识点

软考真题是最好的复习材料,但用法有讲究。不要做完对答案就完事,要反向定位——这道题考的是分类树上的哪个节点?如果错了,是哪个维度的判断出了问题?比如一道题问"相联存储器按什么方式访问",你错了,说明"存取方式"这个维度下的"相联存取"节点没掌握。定位到节点之后,回到教材把那个节点的定义和例子重新过一遍,再找两道同类题验证。

我建议把近五年的真题里涉及存储器分类的题目全部挑出来,按分类维度归类。你会发现出题人的偏好很集中:存取方式和易失性的交叉考得最多,介质分类次之,相联存储器偶尔出现。按这个分布分配复习时间,性价比最高。

7.3 计算题的参数代入习惯

存储相关的计算题,我养成了一个习惯:先把已知参数列成表,单位统一,再代公式。比如磁盘题,先把转速换算成每秒转数,把寻道时间单位统一成ms,把传输速率换算成每扇区时间。单位不统一是计算题最大的坑,软考里经常用rpm、ms、MB/s混着给,你不换算直接代公式,结果差几个数量级。

另一个习惯是画时间轴。平均存取时间 = 寻道 + 旋转延迟 + 传输,这三段在时间轴上是串行的,画出来就不会漏项。Cache平均访问时间 = 命中时间 + 缺失率 × 缺失代价,这个公式画成树形图更直观:命中走左边短路径,缺失走右边长路径,按概率加权。这些图不用画得多漂亮,草稿纸上几笔就行,但能帮你理清逻辑。

注意:软考计算题里,如果题目给了"数据传输率"但没给"传输时间",记得用"块大小 / 传输率"算传输时间。块大小通常以字节或扇区为单位,传输率以MB/s或b/s为单位,换算时注意1字节=8比特,1MB=1024KB还是1000KB要看题目约定,软考通常按1024算。

7.4 考前一周的冲刺清单

考前一周不要再铺新内容,把分类树默写三遍,交叉表默写两遍,真题错题过一遍。重点盯住这几个高频点:DRAM与SRAM的区别及用途、固态硬盘的归类、存取方式的四种类型及典型设备、存储层次结构的顺序和设计依据、Cache平均访问时间公式。这几个点覆盖了存储器分类相关题目的八成以上。

如果时间还有富余,把虚拟存储器的页面置换算法过一遍,重点理解LRU和FIFO的区别,以及缺页率对有效访问时间的影响。这部分内容和分类知识是上下游关系——你先得知道主存和外存的特性差异,才能理解为什么要做页面调度。把这条线串起来,存储器分类就不再是孤立的知识点,而是整个存储体系的地基。

我个人在实际复习和带人备考中的体会是,存储器分类这种"看起来是背诵题"的知识点,恰恰最需要理解。你理解得越深,背得越少,做题越稳。那些靠死记硬背撑过去的考生,遇到交叉判断题就露馅;而把分类逻辑吃透的人,哪怕忘了某个具体名词,也能从特性反推出答案。这个差距,在软考这种注重综合应用的考试里,往往就是及格与不及格的分界线。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进