存储器的分类

存储器的分类看上去是最没有技术含量的一节,但它贡献了本章几乎全部的判断题。原因很简单:分类有四个互相独立的维度,而每个维度的名字都容易被当成另一个维度的名字用。“易失”被当成”要刷新”、“随机存取”被当成”能随便访问”、“只读存储器”被当成”不能写”——每一个都是命题人反复用的坑。

这一节的目标不是把分类背下来,而是把四个维度彻底分开:任何一个存储器件,都可以同时在四个维度上各有一个位置,这四个位置之间没有推导关系。

机制

四个维度是正交的

维度问的问题取值
在系统中的作用它在层次结构的哪一层主存 / 辅存 / 高速缓存(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 和主存

链接