
动物、植物受到某些程度的损伤后是可以自我修复的,这种建立在新陈代谢基础上的修复似乎是 生命体的独门绝技。如果说集成电路的硬件也具备了自我修复损伤的能力,你会相信吗?在2012年的国际电子器件会议(IEDM)上,固态闪存器件就已经发 展出了自我修复的能力,也许在不久的将来,我们就可以买到能够自行修复硬件的U盘了。
非易失性存储
U盘里的数据是怎样存储的?存储器件又为何需要自我修复?这一切都要从固态闪存的存储原理说起。
在数字电路的世界里,只有0或者1两种状态,也可以理解成”没有”或者”有”。任何可以保 持”没有”或者”有”两种状态的事物都可以用来存储信息。你可以在茶杯里倒满水用来记录一个状态:今晚要读一本小说。然后你出门上班,忙碌了一天,回到家 看到茶杯装满了水,就提醒了你晚上该读小说这样一件事。
当然还有另外一种可能,就是你出门上班,然后被通知要临时出差,一个星期之后才能回来。这 个时候你回到家里,发现茶杯里已经没有水了,因为一个星期的时间里,水份全部都挥发(Volatile)掉了。这个时候只根据茶杯里有没有水这个条件,你 就已经无法恢复”今晚要读一本小说”的状态了。或者说,存储在茶杯里的信息丢失了。
那么如何才能使得你储存在茶杯中的信息保存的时间更长一点呢?你一定想到了,就是给茶杯盖 上盖子,这样,水分挥发的速度就大大的减慢。也许一个月内,存储在茶杯里的信息都不再会丢失。恭喜你,你发明了一种非易失性存储器(Non- Voltatile Memory, NVM)。即在不需要外界提供能量(如供电)的情况下长时间保存信息的器件。我们常用的U盘就是使用了Flash固 态闪存这样一种非易失性存储器。
固态闪存的工作原理
固态闪存就相当于用来存储信息的杯子,只是它储存的不是水,而是电子。一个杯子里有没有装水我们可以用秤来称一称杯子的重量,轻的话自然就是空杯子,而重的话就是装满水的杯子。对于电子,工程师使用了一杆特别的“秤”来度量 —— 晶体管。
我们知道数字电路的最基本单元是晶体管,我们可以在晶体管的一端(叫做“栅极”)上加上一 定的电压来控制晶体管的导通或者关断。在固态闪存中,栅极做了一个小小的改动,在栅极的下方增加了一个不同任何电极接触的“浮动栅”。如果我们在“浮动 栅”里储存了电子,那么就需要在栅极上加一个高的多的电压(阈值电压Vp)才能使晶体管导通了。浮动栅就是我们的茶杯,可以用来存储电子。而晶体管就是称 量“电子”的秤。如果想知道浮动栅里有没有电子,我们就在栅极上加一个小于Vp的电压,如果晶体管导通了,说明浮动栅里没有电子;我们的茶杯是空的。
这时,工程师就遇到了茶杯里的水会挥发一样的问题,电子也会从浮动栅泄漏(leak)。解 决问题的方法是给浮动栅加“盖”。这个“盖”就是在将浮动栅用周围的绝缘体包围起来,通常是二氧化硅。二氧化硅的导带比浮动栅里的多晶硅高,所以对于浮动 栅里的电子,周围的绝缘体就形成了一个很高的势垒。电子难以穿越就被这个势垒的“盖”限制在浮动栅中;现在的技术条件下,这些电荷能保存10年以上。

固态闪存的擦写
势垒的存在给信息的长时间保存提供了方便,但同时也给向浮动栅存入和取出电子带来了困难。的确,有了盖子,无论是向茶杯里倒水还是向外倒水都麻烦了不少,至少得先掀开盖子吧。
在闪存中,盖子是无法掀开的,只能让水通过盖子渗透进去或者渗透出来。正如前面提到的,在“通常条件”下,我们的盖子几乎是不渗水的,10年都不会造成明显的挥发。但是在我们需要向里或向外倒水的时候,我们就要改变这个“通常条件”了。
不妨将我们的杯盖想象成一个比较致密的网。让水滴穿过它的方法之一是使得水滴具有更高的能 量,例如让水滴从高处落下。在晶体管里,这种具有较高能量的电子就叫做热电子(Hot Electron),它们通常在晶体管沟道的末端形成,如果给予适 当的引导,就能使它们向浮动栅流动;从而将电子储存在浮动栅中。另一种方法是向两端用力拉开组成杯盖的网,使得网孔变大,让水滴更容易通过。在晶体管里, 如果绝缘层上有很高的电场,其势垒的形状就会从长方形变成又斜又窄的三角形,等效于势垒的高度降低了,电子就更容易穿过。这种类似于将网孔拉大的效应叫 做 Fowler–Nordheim隧穿。
闪存的写入依靠热电子效应或者FN隧穿效应,而擦除就只能依靠FN隧穿效应了。
自我修复的存储器
很明显,这样一张被用作杯盖的网,在被水渗透过多次之后,性能会下降。高速水滴的冲击和反 复的拉扯使得网的弹性和致密度受损。同样的,在二氧化硅中,也由于热电子和高电场的存在产生了大量的缺陷(defect)。在擦写几十万次之后,电子从浮 动栅里泄漏的速度就越来越快,最后信息丢失的可能性就大大增加。虽然几十万次的读写对于U盘来说是足够了,但是在很多应用中,例如服务器阵列里,几十万次 的寿命远远不能满足需求。
工程师的想法是,如果盖子有自我修复的功能,那么在其受到损伤后,盖子对自身的缺陷进行修 复,使其恢复到致密坚韧的状态,那么闪存器件的寿命将可以极大的延长。但是对二氧化硅内的缺陷进行修复需要将整个芯片放在250摄氏度的真空炉内加热数小 时,这样二氧化硅里错位的原子就可以缓慢的移动到正确的位置。但是,这样的操作显然是一种不现实的方案。

在2012年的IEDM中,工程师创造了一个全新的方案。同样是高温加热,但是不用将整个 芯片放在真空炉中,而是局部定点的加热。在需要修复的器件的栅极上通过一个很大的电流,这个电流会在瞬间产生800摄氏度的高温,在很短的时间内(以秒 计)二氧化硅中的原子就能恢复到正确位置。或者说一个全新的盖子产生了。使用这种方法,在擦写一亿次之后,闪存依旧能够正常工作。至于可自我修复的闪存的 擦写上限是多少,发明它的台湾Macronix的工程师说:
我们也不知道它的上限究竟是多少,毕竟测试十亿次擦写需要花几个月的时间
只能说,目前看来,能自我修复的闪存真的是”花有重开日,人可再少年”了!
参考资料:
[1]NAND闪存发展简介
[2]Flash Memory Survives 100 Million Cycles
(转载自“摩卡国富论”,http://www.wealth4nations.net/自我修复的u盘/)