Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.3 从磁芯到半导体——存储的两次革命

你是一根针,穿过一个磁环

想象一个场景:1965年,美国麻省沃尔瑟姆的一间无尘车间里。几十个女工坐在放大灯前,每人面前放着一块金属框架,框上密密麻麻排列着成千上万个芝麻大小的磁环。她们用钳子夹起一根细如发丝的漆包线——这根线上要穿起64个磁环,不能有角度偏差,不能有间距错误。

这不是在穿项链。这是在手工编织计算机的内存

一个磁环只有一个比特。一个32KB的磁芯存储器需要262,144个磁环,每一个磁环需要穿入三根导线——X线、Y线、读出线——总共大约八十万次的穿线操作。没有机器可以完成这个任务,所以全部由人手完成。一个熟练的女工一天可以穿大约一千个磁环,做一块32KB的板子需要几个月。

而你如果有一个坏点——某一个磁环在穿线过程中被刮伤导致磁性失效——你没有办法热修复。你需要剪掉线,抽出磁环,换一个新的,重新穿线。相当于今天你一个内存坏了,你不能换模块,你得把整根内存的导线拆开,一个一个焊回去。

这就是磁芯存储器的制造过程。它是人类历史上最接近“纺织业“的电子器件。

但就是这些手工编织的磁环,在1969年7月20日,搭载着阿波罗11号登月舱,降落在了月球的静海基地,在零下150度到零上120度的极限温差中、在毫不衰减的宇宙射线轰击下、在土星五号火箭发射时的剧烈震动后,依然完好地记录着导航数据和飞行指令。当尼尔·阿姆斯特朗说出“这是一个人的一小步,却是人类的一大步“时,这句话对应的飞行参数就安静地躺在那些手工磁环里。

为什么美国宇航局选择了一种“手工编织“的东西来做登月计算机的存储?为什么不是更先进的半导体?

因为磁芯有一个压倒性的、在当时其他技术都不具备的品质:非易失且抗辐射。


一个磁环如何记住一个比特

磁芯存储器的原理,简洁到令人震撼。它是一种直觉级的物理现象,你甚至不需要学电子工程就能理解:

磁芯存储器的物理原理

         ┌──────────────┐
         │   铁氧体磁环    │  ← 直径约 1mm,磁性材料烧结体
    ─────┼──┐        ┌──┼─────  X线(驱动线)
         │  │        │  │
    ─────┼──┼────────┼──┼─────  Y线(驱动线)
         │  │  ┌───┐ │  │
    ─────┼──┼──│ S │─┼──┼─────  读出线(感应线)
         │  │  └───┘ │  │
         └──┼────────┼──┘
            └────────┘

工作原理:
写入"1" → X线和Y线同时通电,总电流 > 磁环的矫顽力 → 磁环顺时针磁化
写入"0" → 反向电流 → 磁环逆时针磁化
读取   → 施加"写0"电流 → 如果原本是"1",磁化翻转 → 读出线上产生感应电流脉冲
        如果原本是"0",磁化不翻 → 读出线无脉冲
        ⚠ 读取是破坏性的!读完后必须重新写回原值

这个铁氧体磁环有一个矩形磁滞回线——这是一个关键特性。普通磁性材料,你加一个磁场它就磁化,撤掉磁场它就消磁了。但铁氧体磁环不一样:你加磁场到临界点以上,它就翻转;撤掉磁场后,它保留那个磁化方向,除非你加一个相反方向的磁场。

这是天然的、纯物理的“锁存器“。不需要通电、不需要刷新、不受断电影响——它就是一块小磁铁,磁铁通电翻转方向,断电后方向保持不变。

而读到操作之所以产生脉冲信号,靠的是法拉第电磁感应定律:变化的磁场在导线中感应出电动势。磁化方向翻转时,穿过磁环的磁通量发生了剧烈变化,读出线上就会出现一瞬间的电流。如果磁化方向没翻转(原本就是“0“),磁通不变化,就没有脉冲。

这条原理,就是差分信号思想的极简呈现。不看绝对值,只看“有没有变化“。今天的高速串行通信(USB、PCIe)还在用同一个思想——通过检测差分线的电压翻转来判断数据——只不过磁芯用的是磁通翻转,而现代总线用的是电流方向翻转。

破坏性读取是磁芯最显著的缺点。每次读取都要把数据“毁掉“再写回去,意味着读取过程是一个读-改-写的原子操作。如果在读-改-写之间断电——数据将永久丢失。这个问题在Flash早期也有:NOR Flash读取没有破坏性,但擦除必须在编程之前,擦除过程中断电可能使数据块处于未定义状态。所以说,磁芯的破坏性读取,是语义层面的“非原子操作“问题——而这个问题的精神后代,我们在每一代存储介质中都看得见。


磁芯矩阵的布线拓扑

如果你只是在一个磁环上穿三根线,那只能存储一个比特。真正的磁芯存储器是如何用几十万次穿线操作,编织出一个可以随机寻址的存储矩阵的?

磁芯存储器的矩阵拓扑(4×4 = 16 bit)

              X0    X1    X2    X3
              │     │     │     │
         ┌────┼────┼────┼────┼────┐
     Y0 ─┼────●────●────●────●────┼───
         │    │    │    │    │    │
     Y1 ─┼────●────●────●────●────┼───
         │    │    │    │    │    │
     Y2 ─┼────●────●────●────●────┼───
         │    │    │    │    │    │
     Y3 ─┼────●────●────●────●────┼───
         └────┼────┼────┼────┼────┘
              │    │    │    │
           读出线(蛇形穿过所有磁环)

X线和Y线重合处的每个交点都有一个磁环。要选出一个特定的磁环(比如坐标(2, 1)),你给X2线送入一半的驱动电流,给Y1线送入另一半。其他所有磁环只感受到一根线上的半电流——这个半电流不足以翻转磁化方向。只有(2, 1)位置的磁环感受到两股半电流的叠加,正好越过了矫顽力阈值。

这就是重合电流选择技术——用2N条线管理N²个单元,每个单元通过电流叠加来寻址。它是内存芯片中“字线+位线的交叉寻址“的祖先。今天的DRAM芯片里,一个4Gb的芯片就是靠行地址和列地址交叉选中一个存储单元。只不过磁芯用导线,DRAM用MOS管——拓扑结构一脉相承。

那读出时感应到的信号强度呢?一个磁环翻转时在读出线上产生的电压只有几十毫伏。而读出线要蛇形穿过成千上万个磁环,感应到的噪声可能比信号还大。所以读出线的两端要接入一个差分放大器——读出线从磁芯平面的一端进去,从另一端出来,两根信号线的电压比对后滤除共模噪声,提取翻转信号。

铁氧体材料、重合电流选择、差分放大——这三个技术的组合,让1950年代的计算机拥有了几千字到几十千字的“大容量“、随机可寻址内存。MIT的Whirlwind计算机(1951年)是第一台使用磁芯存储器的计算机,它的存储器是由一家纺织公司代工的——因为只有纺织女工有这种精细线材的手工操作经验。


磁芯的遗产:非易失的黄金年代

磁芯存储器主宰了计算机内存领域近二十年——从1950年代到1970年代初。它被安装在IBM的大型机上、DEC的PDP小型机上、NASA的航天器上。然后,在1970年代,它突然消失了。

消失的原因不是因为它不好,而是因为它不能自动化生产

半导体电路可以用光刻工艺批量制造——在一片硅晶圆上,用化学和激光刻蚀出成百上千个晶体管,一次工艺可以生产数千个芯片。而磁芯存储器的每一个磁环都要有人手工穿线——这种劳动无论怎样优化,都不能像机器那样无限提速。

但磁芯留下的遗产被继承了下来:

  1. 非易失性。磁芯的非易失来自物理磁化的持久性——它没有“漏电“的概念,因为磁化和电流之间没有持续的依赖。这个思想在Flash中重生了——浮栅晶体管用被氧化层隔离的电荷代替了磁化,氧化层的绝缘性保证了电荷不能随意漏走。

  2. 破坏性读取后的回写逻辑。磁芯读取后必须恢复数据——读取行为本身具有副作用。这个模式在DRAM中重生了——DRAM的读操作也会消耗电容上的电荷,必须回写。一个看似是缺点的设计,在后来的存储架构中反而成了被反复利用的模式:今天的NAND Flash读取会干扰相邻单元,也需要定期的“读干扰恢复“。

  3. 交错和防辐射。磁芯的抗辐射性能,至今仍然被航天和军用电子怀念。太空中的高能粒子可以穿透硅芯片、翻转SRAM的存储节点、击穿MOS管的栅氧化层——但一颗宇宙粒子要翻转一个铁氧体磁环的宏观磁化方向,需要比翻转一个半导体节点多得多的能量。磁芯以物理尺度(毫米级)对抗了量子效应,这种“以大为盾“的思路在现代是反潮流的——但我们后面会看到,为了在Flash里保护数据,人类发明了极其复杂的纠错码(ECC),相当于用数字算法代替了物理抗性。磁芯直接用材料解决了问题,Flash用数学解决了同一个问题——殊途同归。

磁芯 vs. Flash:相隔半个世纪的共鸣

                        磁芯(1950s)         Flash(1980s)
非易失原理              磁化方向持久          浮栅电荷持久
写入机制                电流翻转磁化          热电子注入/FN隧穿
读取机制                电磁感应脉冲          阈值电压检测
破坏性读取?            是(需回写)          否,但有读干扰
随机访问?              完全随机              完全随机(NOR)/ 页访问(NAND)
最小单元尺寸            约1mm                 约10nm(3D NAND)
制造方式                手工编织              光刻+化学蚀刻
抗辐射能力              极强                  需要ECC辅助

DRAM的诞生:一个晶体管加一个电容

1966年,IBM托马斯·沃森研究中心,Robert Dennard坐在办公室里思考一个看似简单的问题:能不能用更少的零件做一个存储单元?

当时的SRAM(静态RAM)需要六个晶体管来存储一个比特——一个典型的双稳态触发器电路,两个交叉耦合的反相器保证状态“锁死“。六个晶体管占用的硅片面积很大,成本很高,限制了单一芯片上的存储容量。

Dennard的灵感是一个极端的减法:一个晶体管,一个电容。

DRAM存储单元(1T1C)

    ┌────位线(Bit Line)
    │
    ├────┬── N沟道MOSFET(开关晶体管)
    │    │
    │    │    ┌─── 存储电容
    │    │    │     Cs ≈ 20-30 fF(飞法)
    │    │    │
    │    │    │
    │  字线   │
    └─────────┴──── GND
    (Word Line)

工作原理:

  • 字线加高电压 → 晶体管导通 → 位线上的电压给电容充电(写“1“)或放空(写“0“)
  • 字线置低 → 晶体管关闭 → 电容上的电荷被隔离——理论上应该永久保持

问题是:它保持不了。

那个电容只有20-30飞法(fF,10⁻¹⁵法拉)。这是一个什么概念?你用两片相距几微米的金属膜做的电容,就是几十飞法。这么小的电容,它和外界之间即使隔着一个关断的晶体管,也会以极缓慢的速度漏电——晶体管关断时不是完美绝缘体,它的亚阈值漏电流在纳安级。纳安级的电流对一个飞法级的电容来说,几毫秒就能把电压放掉一半。

所以,DRAM的“D“——Dynamic——动态,不是指它的性能动态,是指它的存储状态是动态衰减的。你不去刷新,它就忘了。永远不记得。DRAM不是“记忆力不好“,它是“完全失忆“——它的记忆存在的时长,取决于你多久给它喂一次能量。

这个致命缺陷,被一个精妙的架构给“掩盖“了过去。


刷新的魔术:用速度买持续性

DRAM芯片内置了一个刷新计数器,周期性地把每一行数据读出来、放大、再写回去。在一个标准的DDR4芯片里,每一行必须在64毫秒内被刷新一次。如果刷新频率不够——数据损坏,bit翻转,系统崩溃。

让我们做一个很直观的换算:

DDR4-3200 的一个标准缓存行
===========================
行大小:          8KB(8192 bit)
刷新间隔:        64ms(全部行刷一遍的时间窗口)
每行刷新时间:    约350ns

一行"带电寿命":  64ms(从上次刷新到电压衰减到无法判断的时间)
但一行"数据寿命": 只要还在刷新周期内 → 无限

本质 = 用带宽换记忆
每秒消耗约0.4%的带宽用于刷新 → 换取无限的记忆时间

刷新电路在后台默默地工作,永不停止。它像心脏跳动一样有节奏地定期催促每一行数据“醒一醒,别忘了你是谁“。如果计算机在运行时突然断电——DRAM在几毫秒内忘掉一切,所有数据永久消失。

从这个角度讲,DRAM不是存储介质,它是对持续性的模拟。它本身没有持续存在的物理基础(和磁芯的永磁不同,电荷是注定要漏掉的),但它通过高频刷新——一种人为注入的能量流——维持了一个“看起来像永久“的状态。

这是一种欺骗,但它有效到可以让你在电脑上写完一本书、渲染一部电影、跑完一个深度学习训练——所有这些操作的中间状态,都以电容电荷的形式,被刷新电路保护在微秒尺度的周期性生死之间。


窑洞和帐篷——和Flash站在对立面的两种存储

在“图书馆“的隐喻里,让我们定位一下我们目前已经见过的角色:

磁芯,是一座石窖藏书库。 在黄土高原上挖进去,不需要太多材料,不需要精细加工——一个洞。但这个洞冬暖夏凉、天然恒温、停电来了书架也不容易塌。它靠的是材料的物理本性——土块的抗压强度和惯性——来抵抗外界的破坏。你不需要给它做“防潮处理“,它自带惰性。但石窖不能搬走,不能规模化——你不能用一个模子批量生产石窖,每一座都要在特定的土山里手工开挖。磁芯正是:非易失+抗干扰来自材料的物理属性,但手工编织注定了它无法与半导体的规模化抗衡。

DRAM,是一座帐篷阅览室。 你可以用极小的成本搭起来(一个晶体管+一个电容),你可以搬走、可以重新搭、可以搭很多个。但帐篷不抗风——一阵大风吹过来,你需要不停地扶住它、拉紧它(刷新)。只要你不停止维护,帐篷永远不倒;只要你一松手——大风一来帐篷就倒了,所有书籍散落一地。断电后数据完全蒸发,没有痕迹。

而接下来要登场的那一个——Flash,是一座钢筋混凝土图书馆大楼。 它利用了当代最先进的制造工艺(硅光刻技术)、在材料的分子层面设计了存储单元(浮栅+氧化层隔离)、兼具了非易失(断电不丢)和可改写(编程和擦除)、并且可以规模化到单芯片几百GB的容量。Flash把石窖的非易失和帐篷的可制造性合并在了一起,但代价是:它必须直面自己崭新的“原罪“——磨损和掉电可靠性。


EPROM:浮栅的第一次登场

1970年,英特尔刚刚成立两年,主要产品是SRAM芯片。一位名叫Dov Frohman的工程师在研究一个SRAM芯片的失效问题时注意到了一个奇怪的现象:某些晶体管在特定条件下会出现阈值电压的漂移,这种漂移似乎与栅极上积累的电荷有关——而且这些电荷在断电之后不会消失。

他意识到这不是“失效“,这是一个新发现。

1971年,英特尔发布了1702 EPROM——人类第一个浮栅存储芯片。它的存储单元结构是这样的:

EPROM存储单元(FAMOS晶体管)

    ┌─────────┬──── 控制栅极(无!1702 EPROM 没有控制栅极)
    │         │
    │  ┌──────┴─── SiO₂绝缘层
    │  │  ┌────── 浮栅(多晶硅,被氧化层完全包裹,与外界无电连接)
    │  │  │
  ┌┴──┴──┴──┐
  │ 源极     │ 漏极
  │  P      │  P
  └────┬─────┘
       │
    N型衬底

浮栅是一个被二氧化硅(一种极其优异的绝缘体)完全包裹的多晶硅薄层。它和外界没有任何导电路径——导线连不上,电流到不了,它是物理学意义上被“密封“的一个空间。但如果你在源极和漏极之间加一个足够高的电压(约25V),高能电子会“撞“穿氧化层的势垒——这就是热载流子注入——进入浮栅,被永久困住。

电子困在浮栅里,就给沟道区增加了一个固定的电场,改变了晶体管的阈值电压——开/关的电压点发生了移动。以后每次读这个晶体管时,你加一个中间电压——如果浮栅里有电荷,管子就通不过;如果浮栅里没电荷,管子就导通。物理状态,被编码成了阈值电压的偏移。

写入需要25V的高压和大约50毫秒——但读只要5V。浮栅里的电荷理论上可以保持几十年。

那擦除呢?

擦除需要紫外线

是的,你需要在芯片的封装上开一个石英窗口。要擦除数据时,你把芯片放到紫外灯下照射大约20分钟。高能紫外光子给浮栅中的电子提供了足够逃逸的能量——电子通过光致电离效应跃迁出浮栅,回到衬底。所有浮栅一同被清空——全部擦除,没有选择性。

这就是EPROM名副其实的“可编程只读存储器“:写是可以写的,但只能全部擦完再重写。你不可能只改一个byte——必须全片擦除,然后从头写。


EEPROM:电擦除终于来了

1978年,George Perlegos在英特尔(还是英特尔——因为EPROM的团队一直在推进这个方向)发明了EEPROM——Electrically Erasable PROM。

核心突破是在浮栅晶体管上加了一个超薄的氧化层(约10nm),在这个厚度上,一个比25V更低得多的电压(约12V)就能产生足够强的电场,让电子通过Fowler-Nordheim隧穿直接穿过氧化层——不需要紫外光子,不需要热载流子。

但隧穿电流极小,所以擦除速度很慢——几个毫秒到几十毫秒只能擦一个byte。

EEPROM实现了byte级别的电可擦除,但这意味着芯片上每个存储单元都需要一对选择晶体管来隔离擦除高压——单元面积巨大,容量极小(早期EEPROM只有几个KB),成本昂贵,注定无法做大容量存储。

一个被历史记住的细节:EEPROM的早期应用之一是汽车收音机的预设频道存储。点火断电后你预设的电台不会消失——而这在EEPROM之前是做不到的(除非用磁芯或者电池备份的SRAM)。一个电气工程师的深夜烦恼——“为什么每次开车都要重新调台”——推动了一个半导体技术的商业化。


舛冈富士雄:被东芝辜负的天才

现在我们来到这个故事的主角。1980年,东芝半导体事业部,一位35岁的工程师坐在实验室里,对着一堆EEPROM的设计图皱眉。

他叫舛冈富士雄(Fujio Masuoka)。他看着EEPROM的单元电路,每个存储单元需要两个晶体管——一个用来储存数据,一个用来在擦除时隔离高压。他只有一个想法:

能不能把选择晶体管也省掉?

EEPROM不能没有选择管,因为擦除电压必须精确控制到每一个byte——如果你把整行甚至整片的浮栅都接在同一个擦除线上,电场的均匀性会极差,有些单元擦不干净,有些单元被过擦除损坏。

舛冈的思路是逆向的:既然单个擦除对电路的要求这么高,那干脆整块擦除算了。牺牲擦除的粒度,换取存储单元的极简。

这就是NOR Flash的诞生。

NOR Flash存储单元

    ┌────────────── 控制栅极(CG)
    │  ┌─────────── 浮栅(FG)
    │  │
    │  │  ┌─────── ONO层间绝缘(氧化物-氮化物-氧化物)
    │  │  │  ┌──── 隧道氧化层(约10nm)
    │  │  │  │
  ┌┴──┴──┴──┴──┐
  │ 源极        │ 漏极
  │  n⁺        │  n⁺
  └──────┬──────┘
         │
    P型衬底

写入:漏极加高压 → 热电子注入浮栅
擦除:源极加高压 → FN隧穿从浮栅拉出电子
读取:控制栅加读电压 → 检测阈值电压

注意这个单元:它只有一个晶体管。没有选择管,没有隔离管,没有任何额外的电路——就是一层浮栅、一层控制栅、一层隧道氧化层。这是最简结构的Flash单元——同时期的EEPROM需要两个管子才能实现的功能,舛冈用了一个管子。

但代价是:不能byte擦除——必须扇区擦除,一个扇区成百上千个字节同时清空。

这不是bug,这是feature。舛冈心甘情愿放弃byte擦除的粒度,以换取存储密度的飞跃。对代码存储为主的场景(固件、启动代码),扇区擦除根本不是问题——你永远不会只更新一个byte的固件,你都是整个扇区一起刷新的。

NOR Flash的命名来自它的存储单元矩阵拓扑:每个单元的漏极直接并联到一根位线上,类似一个NOR门的并联输入。你可以随机访问任意地址,像NOR门一样在有任何一个输入为高时就给出结果——NOR Flash支持片内直接执行代码(XIP, eXecute In Place),CPU可以直接从Flash中读取指令并执行,不需要先复制到RAM。

这在嵌入式领域是革命性的——你不需要大容量的RAM来预先装载程序代码,CPU可以从Flash直接跑。


NAND Flash:那个改变世界的“懒人“发明

NOR Flash成功了。但舛冈没有停。

NOR Flash的单元虽然是单管的,但每个单元都需要一个独立的位线接点和一个源极接点——金属接点很占面积,限制了存储密度的进一步提升。

舛冈又问了一个“懒人“级别的问题:能不能把一串存储单元串联起来,共享位线和源极?

1986年,答案是:

NAND Flash存储串(NAND String)

位线
 │
 ├── 串选择管(SSL)
 │
 ├── WL0 ──┬── 存储单元(浮栅管)
 ├── WL1 ──┼── 存储单元
 ├── WL2 ──┼── 存储单元
 │    ...  │   ...
 ├── WLn ──┼── 存储单元
 │
 ├── 地选择管(GSL)
 │
 ┴
GND

在一串NAND String中,几十个(后来是上百个)存储单元首尾串联,共享一个位线触点和一个源极触点。整串存储单元只需要两个选择管+两个金属接点——而NOR Flash每个单元都需要独立的金属接点。

作为代价:你不能随机访问NAND串中的任意单元。你必须把整串中所有未选中的单元的栅极电压打到“导通“(比最高的阈值电压还要高),然后把目标单元的字线置于一个中间读电压——电流能否流过整个串联链路,取决于目标单元是否导通。访问一个bit,需要先打开整条通路上的其他人。

但不能随机访问又怎样?存储是整页读写的,你可以一次读出整页(比如16KB),缓存在寄存器里,然后从寄存器里任意访问。

以牺牲随机访问为代价,NAND Flash的单个单元面积压缩到了NOR Flash的四分之一以下。

1987年,舛冈在东芝的IEEE国际电子器件会议(IEDM)上发表了NAND Flash的论文。全场安静。然后有人窃窃私语,有人点头。

之后呢?


和诺贝尔奖擦肩而过的发明

东芝对舛冈的奖励是:几百美元。

不是开玩笑。舛冈在自传中回忆,公司在发明Flash之后给了他大约几百美元的奖金——一个改变人类信息技术面貌的发明,价值不过一顿高档日料。

东芝当时对Flash毫无信心,把资源中心放在DRAM上——DRAM是日本半导体产业的骄傲,NEC、东芝、日立、富士通、三菱——五巨头主宰全球DRAM市场。Flash被看作一个“不知道能干什么“的奇怪发明。

舛冈在东芝的处境越来越边缘化。他后来回忆:在实验室里,其他工程师看到他都绕道走——“看,那个搞Flash的疯子又来了”。

这个故事的结尾极具戏剧性:闪存在东芝被冷落,但在美国被英特尔发现了价值。英特尔在1988年推出了NOR Flash的商业化产品,用于存储PC的BIOS固件——从此一飞冲天。而NAND Flash的发明虽然被东芝抢了先,但真正把NAND Flash商业化的却是三星——1990年代初期三星投入巨资研发NAND Flash量产技术,到2000年代,三星成为全球最大的NAND Flash制造商。

舛冈富士雄在2004年以荣誉员工身份离开了东芝。没有股份分红,没有巨额奖金,没有那个至少应该送到的专利补偿。几十年后,记者采访他时,他苦笑说:“如果当年我的NAND Flash论文被公司销毁而不是被允许发表,可能东芝还是那个东芝。”

他把自己的技术生涯比作“一只在鸡笼里长大的鹰——从未飞过,但知道自己会飞“。

现在的你,手机里那张随手拍的照片,就躺在舛冈发明的NAND Flash里。六十亿部手机,每一部手机的存储器,都是舛冈的NAND Flash的后裔。从1986年的那个“懒人“念头——“能不能把选择管也省掉,再把单元串在一起”——到今天3D NAND堆叠232层的量产技术,舛冈的发明已经成为了人类历史上产量最大的半导体器件。

而东芝,在2017年因为财务危机,被迫把东芝存储器业务卖给了贝恩资本牵头的财团——就是今天铠侠(Kioxia)的前身。


图书馆:石窖、帐篷和档案馆

现在让我们用“图书馆“的隐喻来完成这段从磁芯到Flash的旅程。

磁芯是石窖藏书库。你可以直接在山体里挖,物理惰性给非易失和数据持久性提供了天然的保障。在火箭发射的震动、太空辐射的轰击、零下一百度的环境中——这座石窖稳如磐石。但你挖不了很多个。每一个石窖都需要独特的山体和人力:手工穿线的本质就是,这是一座没有图纸的艺术品,无法复制,无法量产。

DRAM是帐篷阅览室。轻到你拿两根杆子(一个晶体管+一个电容)就能支起来,你可以在一平方厘米的土地上支起几百万顶帐篷。但帐篷的本质是不稳定的——你必须有一个人不间断地扶住它(刷新电路),哪怕片刻不离,帐篷就倒塌,所有书籍(数据)全部散落。它没有独立的持久性,它的持久性完全依赖于外部能量的持续注入。

而Flash,是钢筋混凝土图书馆大楼。它是人类工业文明制造能力的结晶——水泥(二氧化硅,SiO₂)就是沙子的高纯精炼品,钢筋(多晶硅浮栅)就是沙子的另一种形态。从硅片到芯片,是一套极尽精密的工艺过程(光刻、离子注入、氧化、化学机械抛光),Flash是地球上纯度最高的材料之一(芯片级SiO₂的杂质含量以十亿分比计量)。这座图书馆大楼非易失(断电不丢馆藏)、可改写(清理一层书架重新编号)、可以盖几百层(3D NAND的堆叠层数从2013年的24层一路狂飙到今天的232层及以上)。但它有它的极限:钢筋混凝土不是永恒的,它会磨损(擦除循环上限)、会老化(数据保持时间随磨损次数的增加而缩短)。

石窖抗辐射但不成规模,帐篷成规模但不抗断电,档案馆大楼两者兼具但引入了“磨损“这枚永远悬在头顶的达摩克利斯之剑。

从1950年代的手工磁环到2020年代的232层3D NAND,人类的存储技术走过了从“物理惯性“到“架构魔法“的旅程。早期的技术靠材料本身的物理特性来保证数据安全——磁芯靠宏观磁化强度,EPROM靠被SiO₂封锁的电子。后期的技术越来越依赖于“架构层“的掩饰——DRAM靠刷新,Flash靠FTL+磨损均衡+ECC+掉电保护——来让不可靠的物理介质向用户呈现出一个“可靠“的假象。

而这个“假象“,就是我们下一节的主题:存储的原罪。


下集预告

Flash好用吗?好用到你以为它是理所当然的。它可以存数据、可以跑代码、可以支撑你手机里的每一个App——你把数据写进去,期望它原封不动地待在那里,等你下次来读。但现实远比你想象的残酷。

你所写的每一个bit,都会对这个存储单元造成不可逆的物理损伤。你写入的时间,恰好可能是电源要被切断的时间。那个存储单元上方的电子在悄无声息地漏失——一天漏一点,一个月漏一点。电离辐射像幽灵一样随时准备翻转你精心写入的比特。

这些都是物理世界给存储的 “原罪”。下一节,让我们直面这些原罪:磨损、中断、噪音。它们是每一种存储介质生来就背负的诅咒。而文件系统的存在意义,就是成为人类和这些原罪之间的和解协议。

悬念留给:Flash 靠电子隧穿写入、靠氧化层囚禁电子、靠阈值电压区分数值,每一步都精密如钟表。但这口钟不是永不磨损的。写入十万次之后,它会在哪个齿轮上崩掉第一颗齿?