Published at 2024-12-01 | Last Update 2024-12-01
本文翻译自 2020 年 Branch Education 的一个科普视频 How do SSDs Work? How does your Smartphone store data? Insanely Complex Nanoscopic Structures!, 强烈推荐观看原视频。本文整理个图文版方便查阅与思考。

水平及维护精力所限,译文不免存在错误或过时之处,如有疑问,请查阅原视频。 传播知识,尊重劳动,年满十八周岁,转载请注明出处。
以下是译文。
Charge Trap手机的存储、平板电脑的存储、SSD 硬盘,其实都类似,核心都是一个固态(Solid State) 存储芯片:

称为“固态”是相对于旋转(rotational)磁盘(也就是普通 HDD 硬盘)那种“动态”而言的。
本文将深入到这个芯片内部,看看它是如何工作的。
将 SSD 芯片放大到纳米级,就能看到它存储电荷的基本结构。
Charge Trap(电荷捕获,或电荷陷阱),
它使用的是氮化矽(silicon nitride),这是一种绝缘体。下图中的“工”字结构就是 Charge Trap,它的基本原理是将电子吸附到氮化矽上, 吸附的电子数量不一样,电荷的高低就不一样,从而可以用于表示不同的数字,

图中黄色部分就是吸附的电子,
1bit 0 和 1;3bit 或 4bit。被吸附的电荷可以保持几十年之久,这也是它被称为电荷陷阱的原因。
下面从小到大,看看是如何基于 Charge Trap 这样一个最基本单元构建出一个最终的 SSD 芯片的。
Charge Trap -> 基本存储单元 Memory CellCharge Trap 是 SSD 的基本存储单元 —— memory cell —— 的核心。
在本文接下来的内容中,我们假设一个 charge trap 支持 8 个不同的电荷级别,也就是说可以表示 3bit,
比如吸附的电子很少对应 111,吸附的电子很多对应 000。
下面简单介绍下读取和删除数据对应的底层操作。
读取一个 memory cell 存储的数据,就是测量这个 Charge Trap 上的的电荷量,

这需要先通过 control gate 锁定该 Charge Trap,然后信息就可以从中间的传输线送上去。 后面会详细介绍。
删除一个 memory cell 存储的数据,就是清除这个 Charge Trap 上的的电荷量,
使其回到最低电平(111)。
Memory Cell -> String有了能表示 3bit 的基本单元,接下来我们将 N 个 cell 垂直堆叠起来,
就得到一个称为 String(“串”)的结构。
下图是 10 个 memory cell 堆叠成的 string,

一个 String 内的所有 cell 共享顶部的 bit line(“bit 传输线”,读取或写入 cell 数据的线),

一个 String 有很多 cell,但它们共享同一根 bit line,
因此,在任一时间只能激活 String 中的一个 cell。为此,需要引入了 control gate。
bit line。Memory Cell -> Page将多个 String 水平连到一起,就得到一个二维 cell 空间。
横向的每一排 memory cell,称为一个 Page(“页”),如下图所示:

String+Page 组成的 2D 存储矩阵,称为 Row(虽然在这里直觉上叫“Page”更合适,后面会看到这个名称的由来),

再来看下 bit-line/control-gate 和 String/Row 的关系,

由上图可知,向 Row 写入或读取数据时,横向的 cell 能同时被激活,它们能通过顶上的 bit lines 并行传输。
换句话说,一个 Page 内的数据仅需一次操作就能全部读出或写入。
Block将 N 个 Row 并排连起来,就得到一个 block。下面是 6 个 Row 组成的 block,

下面是 12 个 Row 组成的 block,

这种立体的 Block 有个专业名词叫 3D-NAND 或 V-NAND(垂直堆叠 NAND),
以为以前的芯片都是二维的,

NAND 本身是 Not AND(“与非”门)的缩写,是一种逻辑门,后来泛指一类存储技术。
~1.5KB现在让我们来算一下,一个 block 能存储多少数据。

最终是 3,840 个 memory cell, 总共能够存储 11,520 bit,约 1.4KB。
回顾下我们目前为止介绍的所有概念,

从小到大的结构是:cell -> String / Page -> Row -> Block。 这里还有 Column 和 Layer 的概念,这个图加上这俩概念,就不难理解为什么一个 2D cell 矩阵叫 Row 而不叫 Page 了。
图中画的是 96~136 层高,右边是一张纸,可以直观理解 100~200 层大概是什么概念。

一个 Page 的宽度约为 30,000~60,000 个 memory cell。

这意味着有 30,000~60,000 可并行读写的 bit lines。
4~8 个 Row 组成一个 Block,

一个最基础的芯片单元有大约 4000~6000 个 Block(后面还将重复这个基础单元很多次,最终封装成一个芯片)。
Page Buffer
Page(约 45,000 个 memory cell)能同时使用上方并行的 bit line 来读取或写入信息;Page cache。下图是对应到实际芯片的结构,

图中的产品为了提高存储容量,将 3.2 介绍的模块复制了一倍。
这样一个模块的读写速度约为 500MB/s,

为了进一步提高存储容量,在一个芯片中放 8 个(层)上一节那样的子芯片, 然后通过外围接口芯片(下图最左侧)来协调这 8 个子芯片,

这样一个结构再加个外壳封装,才是我们拆开 SSD 时在电路板上看到的芯片:
