在软考嵌入式系统设计师、软件设计师、网络工程师以及数据库系统工程师的综合知识考试中,有一类题目几乎每年都会以不同面目出现:给出SRAM与DRAM的若干特征描述,要求考生判断哪一项对应静态随机存取存储器,哪一项对应动态随机存取存储器。这类题目的命题空间看似狭窄,却总能稳定地淘汰一批考生,原因在于大多数人把SRAM和DRAM的差异当成几条孤立结论去死记硬背,而没有真正理解两种存储单元在电路层面上的工作机理。本文从触发器与电容这两个最基本的存储元件出发,把SRAM与DRAM的底层原理、性能特征、应用分工以及软考命题人的出题套路一次性讲透。
在进入电路细节之前,有必要先把几个术语的准确含义固定下来,因为软考命题人恰恰喜欢在这些术语的边界处设置陷阱。
随机存取存储器,英文全称为Random Access Memory,缩写为RAM。这里需要强调一个极其关键却常被误解的事实:RAM名称中的"随机"二字,指的不是数据存储的内容是随机的,也不是说数据的组织方式是杂乱无章的,而是指对存储器中任意一个存储单元的访问时间与该单元所处的物理位置无关。换言之,无论程序要读取的是地址最靠前的那个单元,还是地址最靠后的那个单元,所耗费的时间在理论上是一样的。这一特性使得RAM能够承担起计算机主存储器的角色,因为程序执行过程中的取指和取数操作,其访问地址分布呈现出高度的随机性。与RAM形成对照的是顺序存取存储器,比如磁带,要读取中间的某段数据,必须先顺序越过前面的数据段,访问时间随物理位置而变化,这类存储器无法满足CPU对随机访问的需求。
在这个统一的大类之下,RAM又根据存储单元是否需要周期性刷新而被划分为两个子类,即静态随机存取存储器和动态随机存取存储器。静态随机存取存储器的英文缩写为SRAM,其中S代表Static;动态随机存取存储器的英文缩写为DRAM,其中D代表Dynamic。这里"静态"与"动态"两个修饰词所指的对象,是存储单元内部信息维持的方式,而不是存储器整体是否在运动。
SRAM的存储单元以触发器为核心。触发器是一种双稳态电路,它有两个稳定状态,分别用来表示逻辑0和逻辑1。只要电源不断开,触发器的状态就可以一直稳定地保持下去,不需要外界对它施加任何额外的维持动作。正因如此,SRAM被称为"静态"存储器,它一旦写入数据,在掉电之前数据始终存在,读取时也无需担心数据会因时间的流逝而衰减。
DRAM的存储单元则以电容为核心。电容是一种能够储存电荷的元件,用电容上是否有足够电荷、或者说用电容两端的电压高低来区分逻辑0和逻辑1。然而电容存在一个物理上无法回避的问题,那就是漏电。即使没有任何外界干扰,电容上储存的电荷也会通过与其相连的电路路径缓慢地泄漏,导致电压逐渐下降。当电压下降到某个阈值以下时,原本表示的逻辑1就可能被误判为逻辑0。因此,DRAM必须每隔一定时间就对存储单元进行一次刷新操作,把电容上的电荷重新补充到标准水平。这个"需要刷新"的特性,正是"动态"二字的由来。
把这两个概念并排放置,就可以得到一个最基本的判断框架:SRAM用触发器存信息,无需刷新,速度快,但电路复杂、成本高、功耗大;DRAM用电容存信息,必须周期刷新,速度相对慢,但电路简单、集成度高、成本低、功耗相对小。这套框架是后续所有深入分析的基础,也是软考选择题中反复考查的核心对比。
理解了概念层面的定义之后,还需要深入到电路和物理层面,才能把SRAM与DRAM的差异真正吃透,也才能在面对命题人抛出的变形描述时保持判断的稳定。
SRAM的存储单元通常由六个晶体管构成,也就是工程上所说的六管单元。这六个晶体管两两交叉耦合,构成了一个锁存结构,本质上就是一个触发器。触发器的核心特征在于它的两个输出端互为对方的输入,形成正反馈回路。当电路处于某个稳定状态时,一个晶体管导通、另一个晶体管截止,两者的状态互相锁定,共同维持当前的逻辑值。
这种正反馈结构带来的直接好处是:一旦写入完成,即使外界的写入信号撤销,触发器的状态也不会改变。换句话说,SRAM的存储单元具有自保持能力,它对时间的流逝不敏感。只要电源持续供电,写入的数据可以一直保持到下一次写入操作发生,或者保持到整个系统断电为止。因此SRAM的读出过程是非破坏性的,读取某个单元的数据不会改变该单元原本存储的内容,读完之后也不需要任何恢复动作。
这种结构的代价是明显的。六个晶体管占用了较大的芯片面积,而芯片面积直接决定了单位面积上能集成多少个存储单元,也就是集成度。晶体管多还意味着电路在工作时存在更多的静态电流通路,导致SRAM的静态功耗相对较高。此外,SRAM的制造成本也因电路复杂而高于DRAM。这几个代价,正是SRAM虽然速度快却只能用于小容量、高速场合的根本原因。
DRAM的存储单元则精简到了极致,其基本单元由一个晶体管加一个电容构成,也就是一管一电容结构。这个晶体管起到开关作用,控制电容与外部数据线的通断;电容则负责储存电荷,用电荷的有无或多少来表示信息。一管一电容的结构使得单个存储单元占用的芯片面积远小于SRAM的六管单元,因此DRAM能够在同样面积的芯片上集成更多的存储位,集成度大幅提高,单位存储成本也随之下降。
但是电容储存电荷的机制天生带有缺陷。电容本质上是由两块导体薄板以及中间的绝缘介质构成的,而现实中的绝缘介质不可能做到绝对绝缘,总会有微小的漏电流存在。此外,与电容相连的晶体管在截止状态下也并非完全断开,依然会有纳安级别的漏电流从电容中流出。这两股漏电流共同作用,使得电容上的电荷会随时间的推移而逐渐流失,电容两端的电压也随之下跌。
这种电荷流失意味着DRAM存储的信息具有易失性,而且是"暂时性"的易失性——信息不仅在断电后会消失,即使在通电状态下,如果长时间不加以维护,也会因为漏电而丢失。为了解决这个问题,DRAM的存储控制器必须周期性地对所有存储单元执行刷新操作。刷新操作的实质,就是读出每个单元的内容,再把它重新写回,从而把电容上的电压恢复到标准电平。刷新的周期通常为毫秒量级,典型值为几毫秒到几十毫秒,具体数值由电容的漏电速度和工艺水平决定。
刷新机制并不是一个孤立的工程细节,它会给DRAM的整体行为带来一系列连锁影响,这些影响恰恰是软考命题的重要来源。
第一,刷新期间存储器无法响应正常的读写请求。虽然现代DRAM的刷新采用了分散式或异步式的调度方式,尽量把刷新操作穿插在存取操作的间隙中进行,但刷新终究要占用存储体的访问时间,这会引入额外的延迟。相比之下,SRAM完全没有刷新开销,它的存取周期可以做得更短。
第二,刷新意味着DRAM的读取操作在逻辑上更复杂。由于刷新本身就是"读出来再写回去"的过程,DRAM的读出操作会干扰电容上的电荷分布,属于破坏性读出。为了维持数据,DRAM在每次读出之后都需要由内部电路自动完成一次恢复写入。这一点与SRAM的非破坏性读出形成鲜明对比。
第三,刷新动作需要专门的刷新控制电路来配合,这增加了DRAM存储控制器的复杂度。在早期的计算机系统中,刷新控制由独立的电路实现;而在现代系统中,刷新通常集成在内存控制器内部。但无论实现方式如何,DRAM都比SRAM多出了一套必须持续运转的维护机制。
综合以上原理层面的分析,可以得到一个清晰的因果链条:触发器结构让SRAM具备了无需刷新、速度快、读出非破坏性的优点,但以低集成度、高成本、高功耗为代价;电容结构让DRAM获得了高集成度、低成本、低功耗的优势,但必须付出周期刷新、速度较慢、破坏性读出的代价。理解了这条因果链,就再也不用靠死记硬背来应对这类题目。
SRAM与DRAM在原理上的差异,最终决定了它们在计算机存储体系中的不同分工。理解这种分工,既有助于回答直接的存储器对比题,也有助于理解存储层次结构的整体逻辑。
现代计算机普遍采用分层存储体系,从靠近CPU的高速小容量存储器,到远离CPU的低速大容量存储器,依次构成一个金字塔。在这个金字塔中,速度越快、成本越高的存储器,容量就越小,位置也越靠近CPU。SRAM因为速度快但成本高、集成度低,恰好适合处于金字塔顶端、靠近CPU的位置,因此被用作CPU内部或紧邻CPU的高速缓冲存储器,也就是Cache。
DRAM则因为集成度高、成本低,能够以较低的单位成本提供大容量,因此被用作计算机的主存储器,也就是常说的内存条。主存位于Cache的下方,容量远大于Cache,但速度也慢于Cache。CPU要访问的数据如果不在Cache中,就需要从DRAM构成的主存中读取,而主存中读不到的数据,则要进一步从更慢的磁盘等外存中调入。
这种Cache用SRAM、主存用DRAM的经典分工,是软考选择题中反复出现的考点。命题人常常把这句话反过来表述,或者把某种存储器的用途张冠李戴,考查考生是否真正掌握了两种存储器的特性与位置的对应关系。
SRAM在计算机体系中的具体应用,除了作为CPU内部的Cache之外,还可以独立形成其他形态。CPU内部的一级缓存和二级缓存通常由SRAM实现,因为一级缓存需要以CPU时钟同速工作,对存取速度要求极高,只有SRAM能够满足这一要求。此外,一些需要高速、小容量存储的场合,比如寄存器文件、某些嵌入式芯片的内部高速存储区,也会采用
本篇完!