第二节:存储器错误机理——SRAM与DRAM的SEU机理、多位翻转与单粒子闩锁、存储单元临界电荷
各位同学,咱们接着聊。上一节我讲了空间辐射环境有多恶劣,这一节咱们深入芯片内部,看看那些高能粒子到底是怎么把存储器搞坏的。
说实话,我入行那会儿,总觉得存储器嘛,不就是存个0和1,能有多脆弱?直到有一次,我在实验室亲眼看到一块SRAM在粒子束照射下,比特位像多米诺骨牌一样翻转……嗯,从那以后,我再也不敢小看任何一个高能粒子了。
2.1 SRAM与DRAM的SEU机理
先说说单粒子翻转(SEU)。说白了,就是一个高能粒子打进了存储单元,把原本存着的“0”变成了“1”,或者把“1”变成了“0”。
但SRAM和DRAM的翻转机理,其实不太一样。我分别讲讲。
2.1.1 SRAM的SEU机理
SRAM的存储单元,大家应该都熟悉——6个晶体管组成的锁存器结构。两个反相器交叉耦合,形成一个正反馈环路。
正常情况下,这个环路很稳定。但高能粒子打进来,会在半导体中产生大量电子-空穴对。这些电荷被收集后,会在节点上形成一个瞬态电流脉冲。
如果这个脉冲足够大,就会把锁存器的状态翻转。你想想看,一个节点电压被拉低,另一个节点电压被拉高,交叉耦合的正反馈会迅速把这种状态锁定下来——好了,一个SEU就发生了。
关键点:SRAM的SEU是“软错误”。也就是说,芯片本身没坏,重新写一次正确的数据,它又能正常工作了。但问题是,在轨运行的卫星,谁去给它重新写呢?
我在项目中遇到过一种情况:某型号的SRAM,在实验室测试时SEU率很低,但上了轨道后,错误率突然飙升。后来排查发现,是封装材料中的α粒子杂质在作怪。嗯,这个坑我踩过,大家选型时一定要注意器件的α粒子纯度。
2.1.2 DRAM的SEU机理
DRAM就不一样了。它的存储单元是一个晶体管加一个电容。数据是靠电容上的电荷来存储的。
高能粒子打进来,同样会产生电子-空穴对。但DRAM的敏感节点是那个存储电容。粒子产生的电荷会直接改变电容上的电荷量。
举个例子:一个DRAM单元存的是“1”,电容上充了足够的电荷。一个粒子打过来,产生了大量电子-空穴对,其中一部分电子被电容收集,中和了原有的电荷——好了,“1”变成了“0”。
而且DRAM还有个麻烦事:它需要定期刷新。刷新周期一般是64ms。如果SEU发生在刷新间隔内,这个错误就会一直存在,直到下一次刷新才能纠正。
我的经验:DRAM的SEU敏感度其实比SRAM高。因为DRAM的存储电容很小,一般只有几十飞法(fF),存储的电荷量也就几万到几十万个电子。一个高能粒子产生的电荷量,完全有可能超过这个量级。
2.2 多位翻转与单粒子闩锁
SEU只是最基础的单粒子效应。在实际工程中,我们更怕的是另外两种:多位翻转(MBU)和单粒子闩锁(SEL)。
2.2.1 多位翻转(MBU)
什么叫多位翻转?就是一个粒子打进来,导致多个存储单元同时出错。
为什么会这样?我解释一下:
- 电荷共享:高能粒子产生的电子-空穴对,会扩散到相邻的存储单元。如果这些单元离得足够近,它们就会同时被影响。
- 粒子径迹:高能粒子在芯片中穿行时,会留下一长串电离径迹。如果这条径迹穿过了多个存储单元,那这些单元都会遭殃。
- 核反应:高能中子与硅原子核发生反应,会产生多个次级粒子。这些次级粒子各自造成SEU,结果就是多个位同时翻转。
我记得有一次,我们在做地面辐照测试。用重离子照射一块SRAM,结果发现错误模式不是单个位翻转,而是连续4个位、8个位甚至16个位同时出错。当时我就意识到,传统的单比特纠错码(SEC)根本不够用。
注意:多位翻转是星载计算机设计中的大敌。因为很多商用存储器,物理布局上相邻的位,在逻辑地址上也是相邻的。一个MBU事件,可能直接导致一个数据字中的多个位同时出错。这时候,简单的汉明码就无能为力了。
2.2.2 单粒子闩锁(SEL)
单粒子闩锁,这个更可怕。它不是软错误,而是硬损伤。
SEL的机理是这样的:CMOS电路中存在寄生PNPN结构(也就是可控硅结构)。高能粒子产生的瞬态电流,可能触发这个结构进入导通状态。
一旦触发,就会形成一个低阻抗、大电流的通路。这个电流有多大?我见过最夸张的一次,电流从几毫安直接飙升到几百毫安。如果不及时断电,芯片会在几毫秒内烧毁。
我曾经处理过一个在轨异常:某颗卫星的存储器突然功耗飙升,温度急剧上升。地面指令紧急断电,再重新上电,才恢复正常。后来分析,就是一次SEL事件。
关键区别:SEU是软错误,重新写入就能恢复;SEL是硬损伤,必须断电才能恢复,而且如果保护不及时,芯片就报废了。
2.3 存储单元临界电荷
讲到这里,大家应该能理解:一个存储单元到底有多容易发生SEU,取决于它存储的电荷量,以及粒子能注入多少电荷。
这就引出了一个关键参数——临界电荷(Qcrit)。
临界电荷的定义很简单:能使存储单元状态翻转的最小电荷量。
如果粒子注入的电荷量小于Qcrit,单元不会翻转;如果大于Qcrit,翻转就发生了。
那么,Qcrit受什么因素影响?我列个表:
| 影响因素 | 对Qcrit的影响 | 我的实际观察 |
|---|---|---|
| 供电电压 | 电压越高,Qcrit越大 | 3.3V的SRAM比1.8V的SRAM抗SEU能力强很多 |
| 节点电容 | 电容越大,Qcrit越大 | DRAM的电容很小,所以Qcrit也小 |
| 晶体管尺寸 | 尺寸越大,Qcrit越大 | 但大尺寸意味着高功耗,这是个trade-off |
| 工艺节点 | 工艺越先进,Qcrit越小 | 28nm的芯片比180nm的芯片敏感得多 |
| 温度 | 温度升高,Qcrit略有下降 | 高温下SEU率会上升,我实测过 |
这里有个重要的工程概念:电荷收集效率。不是所有粒子产生的电荷都会被存储单元收集。有一部分电荷会复合掉,有一部分会扩散到其他地方。所以,实际引起翻转的电荷量,只是粒子产生电荷的一部分。
我给大家一个经验数据:对于65nm工艺的SRAM,Qcrit一般在1~10 fC(飞库仑)之间。1 fC相当于约6240个电子。你想想看,一个高能粒子在硅中每微米可以产生几十到几百个电子-空穴对,如果粒子穿过了敏感区域,产生的电荷量完全有可能超过Qcrit。
设计建议:我个人习惯在芯片设计阶段,就用TCAD工具仿真Qcrit。如果仿真结果显示Qcrit低于5 fC,我就会考虑加固措施——比如增加节点电容、采用加固锁存器结构,或者干脆换用更抗辐射的工艺。
好了,这一节的内容就到这里。总结一下:
- SRAM和DRAM的SEU机理不同,但本质都是电荷注入导致状态翻转
- 多位翻转比单比特翻转更棘手,需要更强大的纠错策略
- 单粒子闩锁是硬损伤,必须通过限流和断电来保护
- 临界电荷是衡量存储单元抗SEU能力的关键参数
下一节,我会讲如何用EDAC技术来对抗这些错误。咱们到时候见。