ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

存储芯片原理:从电容到晶体管,DRAM与SRAM存储单元深度解析

存储芯片原理:从电容到晶体管,DRAM与SRAM存储单元深度解析 1. 存储芯片到底在存什么从“电”到“0和1”的底层逻辑很多人第一次接触存储芯片脑子里冒出来的问题是数据到底存在哪里是像硬盘那样刻在盘片上还是像U盘那样塞进一块黑色小方块里其实存储芯片的本质是用电子电路的状态来表示“0”和“1”。你手机里的照片、电脑里的文档、服务器里的数据库归根结底都是一长串二进制数字而存储芯片要做的就是把这些数字“记住”。那怎么“记住”呢最直观的思路是找一个能装电子的“容器”装满代表1放空代表0。这个容器在DRAM动态随机存取存储器里就是电容而负责控制“什么时候装、什么时候放、装多少”的开关就是晶体管。所以标题里说的“从电容到晶体管”其实就是在讲一个最基础的存储单元——1T1C结构也就是一个晶体管加一个电容。你可能会问为什么非得用晶体管加电容直接用一根导线存电不行吗不行。导线上的电荷会瞬间跑掉而且你没法单独控制某一个点的电荷。晶体管的作用就是当一个“可控开关”当行选信号拉高时晶体管导通电容和外部数据线连通可以写入或读出当行选信号拉低时晶体管截止电容被“关”在里面电荷暂时保留。这个“暂时”很关键因为电容会漏电所以DRAM需要不断刷新这也是它叫“动态”的原因。而SRAM静态随机存取存储器走的是另一条路。它不用电容存电荷而是用6个晶体管组成双稳态触发器靠电路的两个稳定状态来存0和1。只要不断电状态就一直保持不需要刷新所以叫“静态”。但代价是面积大、成本高所以SRAM通常只用在CPU缓存这种对速度要求极高、容量要求不大的地方。提示如果你只记一句话就记这个——DRAM靠电容存电荷需要刷新SRAM靠晶体管锁状态不需要刷新。理解了这一点后面所有的电路细节、时序参数、刷新机制都是围绕“电容会漏电”和“晶体管有开关速度”这两个物理事实展开的。这也是为什么存储芯片的读写速度、功耗、容量永远在互相拉扯。2. DRAM存储单元深度拆解1T1C是怎么工作的2.1 写入过程把数据“灌”进电容写入操作说白了就是给电容充电或放电。假设我们要写一个“1”那么数据线Bit Line被驱动到高电平比如1.2V同时字线Word Line拉高选中这一行的晶体管。晶体管导通后电容和位线连通电荷从位线流向电容直到电容电压接近位线电压。写“0”则相反位线被拉到低电平0V电容里的电荷通过晶体管释放掉。这里有个细节很多人会忽略电容充电不是瞬间完成的。晶体管有导通电阻电容有容量两者构成一个RC充电回路。充电时间常数τ R × C。如果晶体管做得太小R太大充电就慢写入速度上不去如果电容做得太大C太大同样慢。所以DRAM的工艺一直在平衡这两个参数。实际芯片里这个时间通常在几纳秒到十几纳秒之间。注意写入时位线的驱动能力必须足够强否则电容还没充到目标电压字线就关了数据就写错了。这也是为什么DRAM的写驱动电路通常做得比较“猛”。2.2 读出过程电荷分享与灵敏放大读出比写入更微妙。因为电容容量极小通常只有几十飞法存的那点电荷根本不足以直接驱动外部电路。所以DRAM用了一个巧妙的办法电荷分享。具体来说读之前先把位线预充电到一个中间电压通常是VDD/2。然后字线拉高晶体管导通电容里的电荷和位线上的电荷重新分配。如果电容存的是“1”电容电压高于VDD/2电荷分享后位线电压会略微上升如果存的是“0”位线电压会略微下降。这个变化非常小可能只有几十毫伏。接下来就是灵敏放大器登场。它本质上是一个交叉耦合的反相器对能把这点微小的电压差迅速放大到满摆幅0V或VDD。放大之后数据才能被读出电路正确识别。同时放大后的电压还会被写回电容因为电荷分享已经破坏了电容原来的状态必须刷新回去。所以DRAM的读操作其实是“破坏性读出”读一次就得写回一次。2.3 刷新机制为什么DRAM不能断电电容漏电是物理规律没办法消除。DRAM的电容虽然做得漏电很小但终究会慢慢放电。行业标准要求存储单元在64毫秒内必须刷新一次否则数据就可能丢失。刷新操作就是定期把每一行的数据读出来放大再写回去。刷新有两种方式自动刷新和自刷新。自动刷新由内存控制器发起每隔一段时间发一个刷新命令自刷新则在系统休眠时由DRAM芯片自己完成功耗更低。刷新会占用带宽所以刷新频率越高性能损失越大。这也是为什么DRAM的容量越大刷新开销越明显。实操心得如果你在调试内存控制器发现系统偶尔出现莫名其妙的位翻转先查刷新周期配置对不对。刷新间隔设得太长漏电多的单元就会丢数据。3. SRAM存储单元深度拆解6个晶体管如何锁住状态3.1 双稳态触发器两个反相器背靠背SRAM的核心是双稳态电路由两个反相器首尾相连组成。第一个反相器的输出接第二个的输入第二个的输出又接回第一个的输入。这样形成正反馈如果第一个输出是高第二个输出就是低反过来又确认第一个是高状态稳定反之亦然。这就是“双稳态”的含义——电路有两个稳定状态分别代表0和1。但光有双稳态还不够还需要访问控制。所以实际SRAM单元用6个晶体管4个组成两个反相器另外2个是访问晶体管负责在读写时把单元和位线连通。字线控制访问晶体管的开关。3.2 读写操作为什么SRAM更快读SRAM时两条位线先预充到高电平然后字线拉高访问晶体管导通。由于双稳态电路会主动驱动位线其中一条位线会被拉低另一条保持高。灵敏放大器检测到哪条线被拉低就知道存的是0还是1。因为双稳态电路一直在驱动读出速度非常快通常只要几百皮秒。写SRAM时外部驱动电路强行把一条位线拉低、另一条拉高通过访问晶体管覆盖原来的状态。由于反相器的正反馈新状态会迅速建立并锁住。写操作同样很快。3.3 SRAM vs DRAM一张表看清区别特性SRAMDRAM存储元件6个晶体管1个晶体管1个电容是否需要刷新不需要需要典型64ms速度极快几百皮秒较快几纳秒面积大小成本高低典型用途CPU缓存、寄存器主内存、显存功耗静态功耗低但漏电随工艺缩小而增加动态功耗为主刷新有额外功耗这张表基本概括了两者的核心差异。你选型的时候如果要做缓存SRAM是唯一选择如果要做大容量内存DRAM是唯一经济的选择。4. 从单元到芯片存储阵列、译码与读写电路4.1 存储阵列成千上万个单元怎么排布单个存储单元只能存1位要存1GB就需要80多亿个单元。这些单元按行和列排成二维阵列。每一行有一条字线每一列有一条位线。行地址选中一行列地址选中一列交叉点就是目标单元。阵列不是越大越好。行列太长字线和位线的RC延迟会变得很大访问速度下降。所以实际芯片会把阵列分成多个bank每个bank再分成多个sub-array。这样每次只激活一小块区域延迟和功耗都可控。4.2 行译码与列译码地址怎么变成控制信号行地址经过行译码器产生字线驱动信号。列地址经过列译码器选择哪一列的数据送到输出缓冲。译码器通常用与非门阵列实现因为与非门面积小、速度快。地址位数越多译码器越复杂但这是必要的开销。注意译码器的延迟在高速DRAM里占比不小。如果你在优化内存延迟行译码和列译码的路径都要看。4.3 灵敏放大器与读写电路小信号怎么变成数字灵敏放大器是DRAM读出的关键。它不仅要放大微小电压差还要在放大后把数据写回电容。写电路则负责把外部数据驱动到位线上确保电容充放电到位。读写电路的设计直接决定芯片的时序参数比如tRCD、tCAS、tWR。这些参数在内存条上以时序表的形式给出比如CL-tRCD-tRP-tRAS。超频玩家调的就是这些。调得太紧数据出错调得太松性能浪费。5. 常见问题与排查技巧实录5.1 数据位翻转刷新、时序还是电源位翻转是存储系统最头疼的问题之一。排查顺序建议先查刷新周期是否配置正确再查时序参数是否超出芯片规格最后查电源纹波是否过大。电源噪声会干扰灵敏放大器导致读出错误。5.2 读写失败驱动能力与信号完整性如果写入后读出来不对先看写驱动能力够不够。位线电容大驱动弱电容充不到目标电压。再看信号完整性位线之间的串扰也会导致误读。PCB布线时位线要尽量等长、远离干扰源。5.3 温度影响高温漏电加剧温度每升高10°C漏电大约翻一倍。高温下DRAM刷新周期需要缩短否则数据丢失。工业级芯片和消费级芯片的刷新参数不同替换时不能只看容量和速度。实操心得我遇到过一批板子在常温下跑得好好的一到高温老化就随机死机。后来发现是刷新周期按常温配的高温下漏电加剧数据丢了。改成高温刷新参数后问题消失。6. 存储芯片选型与设计建议6.1 容量、速度、功耗怎么权衡选型第一步是明确需求。做缓存SRAM速度优先容量其次做主存DRAM容量优先速度够用就行。功耗方面移动设备优先选低功耗DRAM服务器可以接受更高功耗换性能。6.2 接口与封装BGA、TSV与HBM现代DRAM越来越多采用BGA封装引脚多、信号完整性好。更高端的用TSV硅通孔堆叠做成HBM带宽极高但成本也高。选型时要看主控支持哪种接口不要盲目追新。6.3 供应链与替代不要只盯一家存储芯片市场波动大选型时最好有pin-to-pin兼容的备选方案。不同厂家的时序参数可能略有差异硬件设计要留余量软件要能适配。7. 实测验证用简易图示仪观察存储单元特性7.1 晶体管特性曲线理解开关行为用简易晶体管图示仪可以测出晶体管的输出特性曲线看到饱和区、线性区、截止区。存储单元里的晶体管工作在开关状态导通时在深线性区截止时在截止区。理解这些曲线有助于理解为什么字线电压要足够高才能可靠导通。7.2 电容充放电曲线RC时间常数实测用示波器抓电容充放电波形可以直观看到RC充电曲线。改变电阻或电容值观察时间常数的变化。这个实验能帮你建立对写入速度的直觉。7.3 去耦电容与电源完整性实测纹波存储芯片对电源纹波敏感。在电源引脚附近放去耦电容可以滤掉高频噪声。实测时用示波器交流耦合看纹波如果峰峰值超过规格就要加电容或改布局。注意去耦电容要尽量靠近芯片电源引脚回路面积越小越好。否则电容再好也白搭。8. 写在最后几个容易踩的坑第一个坑是忽略刷新开销。很多人算DRAM带宽时只算数据读写忘了刷新占用的周期。实际可用带宽要打折扣。第二个坑是时序参数照抄参考设计。不同批次芯片的时序可能不同最好以datasheet为准实测验证。第三个坑是电源设计偷懒。存储芯片对电源噪声很敏感去耦电容不能省布局不能随便。第四个坑是温度范围没留余量。消费级芯片在高温下可能不稳定工业级应用要选工业级芯片或者加散热措施。这些坑我都踩过写出来是希望你别再踩一遍。存储芯片的原理不复杂但工程细节很多耐心一点多测多看datasheet基本都能搞定。
返回列表