SSD 101 Plus

· 872 words · 2 minute read

简介 🔗

读 NAND SSD 相关资料的时候,一般会遇到下面这张图:

ssd-units

相应解释是: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

nand-die-layout

如果再完整一点,可以得到这样一个访问层次,不同的层次有不同的并发能力。

Channel -> Chip -> Die -> Plane(能并发的最低层次) -> Block -> Page -> Sector

下图来自首尔大学的pdf:

ssd-para

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. 参考这里

paird-pages

  • 每个 cell 的比特映射一个物理 Page. 因此:一个 TLC cell 就会对应三个 paired page.
  • 整个 cell 对应的所有物理 page 都写完后,这次写操作才能算完成。

因此,虽然写入粒度是物理 Page, 但实际更新的数据远不止一个物理 Page.


  1. 下面的“多个”是一个或多个。 ↩︎

  2. NAND 的 LUN 和 die 是一个意思,是执行 CMD 和 ReportStatus 的最小单位。 ↩︎

  3. 参考 SSD NAND Flash Mapping Explained ↩︎

  4. 推荐一个合集:SSD 101 ↩︎

ssd
comments powered by Disqus