简介 🔗
读 NAND SSD 相关资料的时候,一般会遇到下面这张图:
相应解释是:1
- 一块 NAND Flash 包含多个 LUN(Logic Unit Number);
- 每个 LUN 又包含多个 Plane;
- 每个 Plane 包含成千上万个 Block;
- 每个 Block 包含上百个 Page.
其中:读写数据的粒度是 Page,而数据擦除的粒度是 Block. NAND SSD 的 Block 被擦除之后才能写入数据。那么,LUN、Plane(其实还有 Die)究竟意味着什么呢?
硬件层次 🔗
NAND SSD 由控制器和存储芯片组成。一块 SSD 通常包括多块 NAND 存储芯片,
这些芯片通过一定数量的 channel 连接到控制器。每个 flash chip 中又包含多个 die. 存储领域通常把这里的 die
称作LUN
.2 一个 die 上通常有 2 个或 4 个 Plane。
比较容易混淆的是 page
概念。NAND SSD 的物理 page 大小通常是 16
KiB(其实还会多一点 – 需要据保元数存映射信息、校验信息之类)。它的物理 sector 大小(又称 quarter-page 或 logical page),通常是 4KiB.3
准确的说,物理层面读的粒度是 sector (4KiB),而写的粒度则是 page (16 KiB)!
如果把 NAND SSD 看作是乐高积木,它在硬件层面的层次大概如下图。4
如果再完整一点,可以得到这样一个访问层次,不同的层次有不同的并发能力。
Channel -> Chip -> Die -> Plane(能并发的最低层次) -> Block -> Page -> Sector
下图来自首尔大学的pdf:
Cell 🔗
一个物理 Sector 由多个 Cell 构成,目前有如下几种:
- SLC - 一个 Cell 存储一个(Single)bit
- MLC - 一个 Cell 存储两个(Multiple)bit
- TLC - 一个 Cell 存储三个(Triple)bit
- QLC - 一个 Cell 存储四个(Quadruple)bit
密度越高,能存储的信息越多 - 但是每次写入需要更新的数据也成倍增长(写放大),而且高密度时散热、稳定性、故障面也是需要考虑的问题。
Page pairing 🔗
物理特性上,共享相同WL(Word Line)的物理 Page 被称为 paired-page. 参考这里。
- 每个 cell 的比特映射一个物理 Page. 因此:一个 TLC cell 就会对应三个 paired page.
- 整个 cell 对应的所有物理 page 都写完后,这次写操作才能算完成。
因此,虽然写入粒度是物理 Page, 但实际更新的数据远不止一个物理 Page.