NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念

上一篇文章我们讲了 ONFI、NAND 并行总线、BGA 封装、Read / Program / Erase 指令,以及 NV-DDR、DQS、Timing Mode 这些基础概念。

文章发出去以后,很容易引出一批更"深入现场"的问题:

一颗 NAND package 里面如果有 8 个 die,那 SSD Controller 到这颗 NAND 之间是不是还只有那不到 20 根信号线? 客户问"你的 SSD Controller 支持几个 channel",或者"你的 NanoCycler FPGA 支持几个 channel",这个 channel 到底是什么意思? NAND 里面有没有一个小 controller?SSD Controller 是直接访问到 die / plane / block / page,还是把命令发给 NAND 内部的小 controller 代理执行? 我们平时说 Program,是不是就是 Write?P/E Cycle 到底在数什么? SLC、MLC、TLC、QLC 后面还有没有 OLC?为什么有人说长江存储 QLC 的耐擦写次数可以接近别人 TLC? 为什么材料理论里经常讲 wordline、bitline、selector,到了实际 NAND 操作时又只讲 page、block、LUN? SSD Controller 里面的 LDPC ECC 到底在干什么?所谓 LDPC 4K 是不是更高级? NV-DDR、DQ、DQS、ODT、VCC、VCCQ、VPP 这些名字到底怎么理解? 最新 FPGA 到底能不能支持 3.6GT/s、4.8GT/s 的 NAND 接口?

这些问题非常典型。

它们不是"考试题",而是工程现场真的会遇到的问题。很多刚进入 NAND、SSD Controller、存储测试领域的工程师,第一次听这些术语,脑子里往往是一团雾。

这篇文章就继续用比较形象的方式,把这些 NAND 底层问题一次串起来。

一、一颗 NAND 里面有 8 个 die,总线是不是还是那十几根线?

先说结论:

如果这 8 个 die 被组织在同一个 NAND package、同一个 target、同一组 x8/x16 NAND bus 后面,那么 SSD Controller 和这颗 NAND package 之间的数据总线通常仍然是共享的,不会因为里面有 8 个 die,就变成 8 套 DQ 总线。

也就是说,不是:

8 个 die = 8 套 DQ7:0 8 个 die = 8 套 CLE/ALE/WE#/RE# 8 个 die = 8 倍 pin 数

真实情况更像一栋大楼。

这栋楼里面可能有 8 个仓库,也就是 8 个 die。 但大楼门口不一定有 8 条完全独立的高速公路。 很多时候,大楼门口只有一条主干道,里面通过门禁、楼层号、电梯调度,把货送到不同仓库。

NAND package 也是类似。

DQ、DQS、CLE、ALE、WE#、RE# 这些信号可以被多个 die 共享。SSD Controller 通过 CE#、地址周期里的 LUN/die 地址、状态查询等方式,选择当前要操作哪个 die。ONFI 语境里,target 是通过 chip enable 访问的单位,一个 target 可以包含一个或多个 NAND die;而 NAND die 是可以独立执行命令和报告状态的最小单位,ONFI 里也把 NAND die 称为 LUN。

所以,当客户问"一颗 8-die enterprise NAND 是不是还只有那不到 20 根信号"时,比较准确的回答是:

从一个 x8 NAND bus 的角度看,核心 DQ/控制信号仍然是一组共享总线;但为了支持多个 die、多 LUN、多 target、高速 DQS、ODT、电源地、vendor-specific pins,封装里会增加很多 CE、R/B、电源、地、保留和高速辅助 ball。

它不像 PCIe 那样,每多一条 lane 就一定多一对差分线。NAND 更像一个共享并行总线加多目标选择机制。

二、客户经常问"支持几个 Channel",这个 Channel 到底是什么?

SSD Controller 里的 channel,可以理解为一条独立的 NAND 高速公路。

一个 NAND channel 通常包含一整组 NAND interface 信号:

DQ 数据线 DQS 数据 strobe CLE/ALE 命令地址控制 WE#/RE# 或 CLK/W/R# 等时序控制 CE# 片选 R/B# 状态 WP# 等辅助信号

一个 channel 可以挂多个 NAND package。每个 package 里面又可能有多个 die / LUN。SSD Controller 可以通过 CE、LUN 地址、die interleaving 等方式,在同一个 channel 上调度多个 NAND die。

但是,同一个 channel 上的外部数据总线通常是共享的。 这就意味着,同一个时刻,这条高速公路上不能让所有 package 同时把数据往外挤,否则就会总线冲突。

所以 SSD Controller 为什么要多 channel?

因为多 channel 就像多条高速公路。 一条高速公路堵了,另一条还可以跑。 一个 NAND die 正在 program,另一个 channel 上的 NAND die 可以 read。 一个 channel 在搬数据,另一个 channel 可以发命令。

SSD 的高性能不是靠一颗 NAND 神奇变快,而是靠多层并行堆出来的:

channel 并行 package 并行 die / LUN 并行 plane 并行 cache read / cache program 流水线

有论文总结现代 SSD 内部并行时,明确提到 SSD 会把数据跨 channels、packages、dies、planes 做 striping,从而提高吞吐。 也有资料把 channel parallelism 描述为 flash controller 利用多个 channel 并发处理多个 I/O。

所以,当客户问:

"你的 SSD Controller 支持几个 channel?" "你的 NanoCycler 支持几个 channel?" "你的测试设备一次能测几颗 NAND?"

他其实问的是:

你有几条独立 NAND bus? 能不能同时驱动多颗 NAND? 能不能模拟真实 SSD Controller 的多通道访问? 能不能做 channel-level、die-level、plane-level 的并行测试? 能不能在多个 BGA socket 上同时跑 at-speed characterization?

这里的 channel,不是"软件通道",而是非常实在的硬件并行资源。

三、NAND 里面有没有一个"小 controller"?

这个问题很容易引起误会。

如果说 NAND 里面有没有逻辑电路?当然有。

一颗 raw NAND 里面不只是存储 cell array。它还包括:

command register address register status register control logic row decoder column decoder page buffer sense amplifier high-voltage generator / charge pump I/O buffer cache register plane / block / page 选择逻辑

这些电路负责接收外部 ONFI / Toggle 命令,把地址译码到对应的 LUN、plane、block、page,并执行内部 read、program、erase。公开 NAND datasheet 的功能框图里通常会列出 I/O、control circuit、logic control、column decoder、data register、sense amp、memory cell array、HV generator、command register、address register、status register 等模块。

但这不等于 NAND 里面有一颗类似 SSD Controller 的"大脑"。

真正的 SSD Controller 会做什么?

FTL 地址映射 垃圾回收 磨损均衡 坏块管理 LDPC ECC read retry 策略 data scrambling RAID / parity 掉电保护管理 NVMe/SATA 主机协议 DRAM/HMB/cache 管理 QoS 调度

这些复杂工作,raw NAND 内部通常不做。raw NAND 内部的逻辑更像"仓库内部的门禁、电梯、货架选择和搬运执行系统",而 SSD Controller 才是整座物流中心的总调度员。

所以更准确的说法是:

NAND 内部有外围控制逻辑,但它不是 SSD Controller;它能理解命令、锁存地址、选择阵列、执行读写擦,但不会替 SSD 做完整 FTL、垃圾回收、磨损均衡和主机协议管理。

这些 NAND 内部电路基本都是 NAND 原厂自己设计的,是各家 NAND 核心能力的一部分。行业里当然有第三方 NAND host controller IP、ONFI PHY IP、verification IP、测试设备 IP,但 raw NAND die 内部的阵列和外围电路通常不是像买一个通用 USB controller 那样从外部第三方直接买来封进去。

比如 Arasan、Cadence、M31 等公司公开提供的是 ONFI controller IP、PHY IP、VIP 等,面向 SSD Controller SoC 或验证环境;M31 也公开列出了 ONFI 5.0/5.1/6.0 I/O IP,覆盖 2.4GT/s、3.6GT/s、4.8GT/s 方向。 这些是"主控侧/PHY侧/验证侧"的生态,不是说 NAND 原厂把 die 内部核心控制逻辑当标准第三方芯片采购。

四、SSD Controller 是直接访问某个 die / plane / block / page 吗?

从命令模型上看,SSD Controller 会发命令和地址,地址里面会包含足够的信息,让 NAND 内部选择某个 LUN、某个 plane、某个 block、某个 page,以及 page 内某个 column offset。

但从物理执行上看,Controller 并不是伸出一只手,直接去拨某根 wordline 或 bitline。

它做的是:

发 command; 发 address; 传 data 或接收 data; 等 ready/busy; 读 status; 必要时做 read retry 或下一步调度。

NAND 内部逻辑拿到这些命令和地址以后,再通过 row decoder、column decoder、sense amplifier、page buffer 等电路去完成具体操作。

这就像你在图书馆借书。

你不会自己跑进书库,去第 7 层第 3 排第 5 格把书拿出来。 你给管理员一个索书号。 管理员根据索书号找到对应楼层、书架、位置,把书取出来交给你。

SSD Controller 发给 NAND 的 row address / column address,就是类似"索书号"。 NAND 内部的 decoder 和控制逻辑,才是真正打开某个 wordline、选择某组 bitline、把数据读进 page buffer 的执行者。

五、多 LUN 的 LUN 是 Logical Unit Number 吗?在 NAND 里面到底是什么?

是的,LUN 通常就是 Logical Unit Number。

但在 raw NAND 里,它不是 NVMe 里那种 namespace,也不是 SCSI 里那种逻辑磁盘概念。

在 ONFI / NAND 器件组织里,LUN 很多时候可以近似理解为一个可以相对独立执行命令和报告状态的 die 级单位。公开 NAND datasheet 里有一句很关键的话:NAND die 是可以独立执行命令和报告状态的最小单位,在 ONFI 规范中被称为 LUN。

所以,一个 package 里如果有多个 die,就可能表现为多个 LUN。

为什么这个概念重要?

因为 SSD Controller 可以做 die interleaving。

比如同一个 package 里有 LUN0 和 LUN1。 Controller 可以让 LUN0 去 program。 LUN0 忙的时候,再让 LUN1 去 read 或 program。 虽然外部 bus 是共享的,但内部 die 忙碌时间可以被交错利用。

这就像一个快递站只有一个装车口,但里面有多个仓库工人。 装车口一次只能出一车货,但多个工人可以提前把不同货物准备好,减少等待时间。

六、Program 就是 Write 吗?P/E Cycle 到底是什么意思?

在 NAND 语境里,Program 基本可以理解为 Write operation,也就是把数据写进 NAND cell。

但 NAND 的"写"有一个非常重要的限制:

NAND 不能像普通 RAM 那样随便原地覆盖。

它通常遵循这样的规则:

读,以 page 为单位; 写,也就是 program,以 page 为单位; 擦除,以 block 为单位。

更麻烦的是,已经 program 过的 page 不能随便再写成新数据。要想重新使用,通常要先把整个 block erase 掉。

所以 P/E Cycle 里面的 P 是 Program,E 是 Erase。 一次 P/E cycle,可以理解为一个 block 经历了一次"擦干净,再写入"的磨损循环。

为什么客户特别关心 P/E cycle?

因为每一次 program/erase,都会对 NAND cell 的绝缘层、电荷捕获层、隧穿氧化层造成压力。次数多了以后,cell 保存电荷的能力会下降,阈值电压分布会变宽,bit error 会增加,数据保持时间会下降,最终需要更强 ECC、更频繁 refresh,甚至变成坏块。Kioxia 的 NAND endurance 技术资料也解释了,随着 P/E cycles 增加,氧化层会弱化,无法保持存储数据所需的电荷,flash memory 会逐渐 wear-out。

所以 P/E cycle 不是一个漂亮的 marketing 数字,而是 NAND 可靠性测试里最基础的生命计数器。

对于客户来说,P/E cycle 重要,是因为它直接影响:

SSD 能写多少数据; 企业级 SSD 的 DWPD / TBW; 数据中心盘能不能撑满质保周期; QLC 能不能用在企业级场景; controller 的 LDPC ECC 需要多强; FTL 和磨损均衡做得好不好; NAND characterization 测试要测到多少 cycle。

一颗 NAND fresh 状态下能跑,并不代表 1000 次、3000 次、5000 次 P/E 以后还能稳定跑。真正的企业级验证,一定要看磨损后的表现。

七、SLC、MLC、TLC、QLC,后面还有 OLC 吗?

先把名字讲清楚。

SLC:Single-Level Cell,每个 cell 存 1 bit。 MLC:Multi-Level Cell,行业里通常指每个 cell 存 2 bit。 TLC:Triple-Level Cell,每个 cell 存 3 bit。 QLC:Quad-Level Cell,每个 cell 存 4 bit。 PLC:Penta-Level Cell,每个 cell 存 5 bit。

你问的 OLC,如果按字母理解可能会让人想到 Octa-Level Cell,也就是每 cell 8 bit。但在当前主流 NAND 产业讨论里,QLC 后面更常见的说法是 PLC,也就是 5 bit/cell,而不是 OLC。Solidigm 早在 2022 年就公开展示过 Penta-Level Cell SSD;近几年行业也继续把 PLC 作为 QLC 之后的高密度方向讨论。

为什么每个 cell 存更多 bit,耐久性会下降?

可以想象一个水杯。

SLC 只需要分两档: 空,或者满。

MLC 要分四档: 0%、33%、66%、100%。

TLC 要分八档。 QLC 要分十六档。 PLC 要分三十二档。

同一个杯子,刻度越多,每一档之间的距离就越小。 水面稍微晃一下,本来 9 档就可能被读成 8 档或 10 档。

NAND cell 的阈值电压也是类似。每个 cell 存的 bit 越多,Vt window 越窄,读错概率越高,对工艺、ECC、read retry、温度、数据保持、program interference 的要求就越高。

大致耐久范围可以这样理解,注意这只是行业常见经验范围,不代表所有 NAND 原厂和所有工艺节点:

类型 每个 cell 存储 bit 数 电压状态数 常见 P/E Cycle 大致范围
SLC 1 bit 2 个状态 约 50,000--100,000 次
MLC 2 bit 4 个状态 约 3,000--10,000 次
TLC 3 bit 8 个状态 约 1,000--3,000 次,企业级/高质量 3D TLC 可更高
QLC 4 bit 16 个状态 常见约 800--1,000 次,先进工艺和强 controller 可做得更好
PLC 5 bit 32 个状态 仍处于发展/验证阶段,尚未像 TLC/QLC 那样大规模普及

Kingston、SSSTC、TechTarget 等公开科普资料普遍把 SLC 放在约 100K P/E,MLC 放在数千到一万级,TLC 约数千级,QLC 约千次级这一大致区间。

但这里有一个非常重要的提醒:

不要只用 SLC/MLC/TLC/QLC 这几个字母机械判断寿命。

同样是 QLC,不同厂家、不同层数、不同 cell 结构、不同材料、不同 program algorithm、不同 ECC、不同 read retry、不同 SSD firmware,差异会很大。

八、为什么有人说长江存储 QLC 可以达到别人 TLC 的擦写次数?

这个说法不是空穴来风,但要讲清楚边界。

2024 年曾有媒体报道,YMTC 的 X3-6070 3D QLC NAND 宣称可达到约 4000 次 P/E cycle,这在 QLC 里是非常高的水平,接近甚至达到一些 TLC 的耐久区间。 也有报道把 YMTC 232-layer QLC raw endurance 描述为约 1000 P/E,并与 TLC 的 4000--5000 P/E 做对比,可见公开报道之间对不同产品/节点/说法存在差异,需要结合具体 die 型号和测试条件判断。

为什么 QLC 可以做得更耐用?

可能来自几个方向:

cell 结构改进; 材料和工艺优化; 更好的 charge trapping 控制; 更低的 program disturb; 更精细的 read threshold 管理; 更强 LDPC ECC; 更聪明的 data placement; 更强的 controller firmware; 更保守的容量开放策略; 更大的 over-provisioning; 更好的 wear leveling 和 refresh 策略。

也就是说,客户听到"某家 QLC 可以达到别人 TLC 的 P/E cycle"时,不能只理解成"QLC 天生已经和 TLC 一样耐用了"。

更准确的理解是:

在某些先进 NAND 工艺、特定产品、特定测试条件、配合强 controller 和固件策略时,QLC 的系统级可用耐久可以被大幅拉高。

这也是为什么 NAND characterization 变得越来越重要。因为今天的 NAND 已经不能只看"几 bits/cell",还要看它在真实 P/E stress、retention、read disturb、temperature、read retry、LDPC margin 下的完整表现。

九、为什么 SSD Controller 需要 FTL、垃圾回收、磨损均衡?

这个问题非常关键。

主机看 SSD,是一块连续的逻辑磁盘。

主机说:

"请把 LBA 1000 这个 4KB 数据改一下。"

但 NAND 内部说:

"抱歉,我不能原地覆盖。你要改这个 page,得先找一个空 page 写新数据。旧 page 只能标记无效。等某个 block 里面无效 page 足够多,再把有效 page 搬走,然后整块 erase。"

这就是 SSD Controller 需要 FTL 的根本原因。

FTL,全称 Flash Translation Layer。它做的事情,就是把主机看到的逻辑地址 LBA,映射到 NAND 真实的物理位置:

channel package die / LUN plane block page column

假设主机第一次写入:

LBA 1000 → NAND 物理位置 A

后来主机修改 LBA 1000。 SSD Controller 不会直接覆盖 A,而是找一个新的空 page:

LBA 1000 → NAND 物理位置 B

旧的 A 标记为 invalid。

写得越来越多以后,NAND 里会出现大量"旧数据尸体"。 这些 invalid page 占着空间,但已经没用了。

这时候垃圾回收登场。

垃圾回收做什么?

找一个 block,里面可能有 200 个 page。 其中 160 个 page 已经 invalid,40 个 page 仍然 valid。 Controller 把 40 个 valid page 搬到别的空 block。 然后把原来的 block 整体 erase。 这样就回收出一个干净 block。

这就像仓库清理。

一个货架上 80% 都是过期货,20% 还是有效货。 你不能只擦掉过期货的位置。 你要先把有效货搬到新货架,然后把整排旧货架清空重新使用。

那磨损均衡又是什么?

如果某几个 block 总被反复擦写,它们会很快老化。 而另一些 block 长期存冷数据,几乎不擦写。 这样整个 SSD 还没用几年,少数热点 block 先死掉。

磨损均衡就是让所有 block 尽量"雨露均沾"。

热数据不要永远写在同一批 block 上。 冷数据也不能永远霸占年轻 block。 Controller 会定期搬移数据,让 P/E cycle 在全盘范围内尽量均匀。

这也是为什么企业级 SSD Controller 这么值钱。

它不只是把 PCIe/NVMe 翻译成 NAND 指令。 它是在一堆不能原地覆盖、会磨损、会掉电、会出错、会温漂、会 read disturb 的 NAND cell 上,硬生生伪装出一块稳定、连续、可靠的磁盘。

十、为什么理论里讲 wordline、bitline、selector,实际操作却讲 page、block、LUN?

因为这是两个观察层次。

做器件物理、材料、工艺、cell 研究时,大家关心的是:

wordline bitline string selector channel hole floating gate / charge trap threshold voltage program interference read disturb retention loss cell-to-cell interference

这些是 NAND 的物理结构和电学行为。

但做 SSD Controller、ONFI command、NAND 测试程序时,大家关心的是:

Read Page Program Page Erase Block Read Status Set Feature Get Feature LUN plane block page column

这些是对外接口和命令抽象。

两者并不矛盾。

page 在物理上往往对应某个 wordline 上的一部分或多部分数据。 block 由很多 wordline/page 组成。 plane 由很多 block 组成。 die 由多个 plane 和外围电路组成。

只是 SSD Controller 不需要直接说:

"请把第 1372 根 wordline 加多少伏,把第 4096 条 bitline 接到哪个 sense amp。"

它只需要说:

"请读 LUN0、Plane1、Block 1234、Page 56。"

剩下的 wordline、bitline、selector 怎么打开,内部施加多少电压,sense amplifier 怎么判断,是 NAND 内部电路和 NAND 原厂算法的事情。

所以可以这样理解:

wordline / bitline 是 NAND 工程师在显微镜和电路层看到的世界。 page / block / LUN 是 SSD Controller 在协议和命令层看到的世界。 同一栋楼,从建筑师视角看是梁柱水电,从快递员视角看是楼层房间号。

十一、cell 的阈值电压 Vt 是什么意思?

阈值电压,英文 threshold voltage,通常写作 Vt。

通俗讲,它就是让一个 memory cell transistor "刚好导通"所需要的控制电压。

可以把 NAND cell 想成一扇带弹簧的门。

门里面存了多少电荷,就像门上压了多少沙袋。 沙袋越多,你要推开这扇门,需要的力就越大。 这个"推开门需要的力",就类似阈值电压。

NAND 通过往 cell 里放入或移走电荷,改变 Vt。 读的时候,不是真的把电荷拿出来数一遍,而是施加不同的 read reference voltage,看这个 cell 在某个电压下导不导通。

SLC 只要分两类:

Vt 低:表示一种状态。 Vt 高:表示另一种状态。

TLC 要分 8 个 Vt 区间。 QLC 要分 16 个 Vt 区间。

问题在于,随着 P/E cycle、温度、数据保持时间、read disturb、program interference 增加,这些 Vt 分布会变宽、漂移、重叠。

原来每个状态之间像车道线一样很清楚。 后来车道线被雨水冲淡,车也开始压线。 这时候读错的概率就上升了。

这就是为什么多 bit/cell 越往后越难。 QLC 不是不能做,而是每个状态之间的 margin 更窄,必须靠更精细的工艺、更强的 ECC、更聪明的 read retry 和 controller 算法兜住。

十二、SSD Controller 里的 LDPC ECC 到底怎么工作?

LDPC,全称 Low-Density Parity-Check Code,低密度奇偶校验码。

不要被名字吓住。 它本质上是 SSD Controller 给每一段用户数据加上一些"校验线索"。

写入时:

用户数据进来; Controller 按某个 codeword 长度切分,比如 2KB 或 4KB; LDPC encoder 生成 parity 校验信息; 用户数据和 parity 一起写入 NAND page 的 main area / spare area / metadata 区域。

读取时:

NAND 读出来的数据里可能已经有 bit error; LDPC decoder 根据数据和 parity 检查哪些地方不合理; 通过迭代计算,尝试把错误 bit 改回来; 如果 hard decoding 不行,就配合 read retry 获取更多 soft information,再做 soft decoding。

可以把 LDPC 理解成拼图游戏。

你有一张拼图,但有几个小块颜色模糊了。 普通 ECC 像拿一张简单参考图,只能修很少错误。 LDPC 像拿到很多相互约束的线索:这块边缘颜色应该和左边一致,这个图案应该和右上角连续,这一组加起来必须满足某种规则。 Decoder 就反复利用这些线索,直到拼图重新合理。

学术资料中也提到,现代 NAND page size 往往是 8KB、16KB,而 ECC codeword size 通常是 2KB 或 4KB,一个物理 page 会包含多个逻辑 sub-page,每个 sub-page 是一个 ECC codeword。

那么,所谓 LDPC 4K 是不是更高级?

不能简单这么说。

LDPC 4K 通常指 codeword size 是 4KB 级别。 相比 1K、2K,较长 codeword 往往有机会获得更好的编码效率和纠错能力,理论上更接近通信理论极限。

但它也有代价:

decoder 延迟可能更高; 硬件面积更大; SRAM buffer 更多; 功耗更高; 一次读失败影响范围更大; QoS 更难控制; firmware 要配合 read retry 策略。

所以不能说"LDPC 4K 一定比 LDPC 2K 高级"。 更准确的说法是:

4K LDPC 是一种更长 codeword 的设计选择,它可能带来更强纠错能力和更高编码效率,但最终好不好,要看 code rate、parity 长度、decoder 架构、迭代次数、soft information、read retry 策略、NAND characterization 数据,以及整个 SSD 的延迟和功耗预算。

很多公司强调 LDPC 4K,是为了表达自己 controller 的 ECC 引擎比较强,能支撑更高密度、更高 error rate 的 TLC/QLC NAND。 但真正懂行的客户不会只听"4K"两个字,还会继续问:

最大纠错能力多少? hard decode latency 多少? soft decode latency 多少? 最多几次 read retry? UECC rate 怎么定义? 在多少 P/E、多少 retention、多少温度下验证? QLC 后期磨损时 QoS 怎么保证? 是否有 RAID/parity 兜底? 是否支持 adaptive read threshold?

这才是企业级 SSD Controller 的真功夫。

十三、NV-DDR 是怎么工作的?DQS 为什么这么重要?

NV-DDR 可以理解成 NAND 接口从"老式单边沿传输"升级到"双边沿传输"。

SDR 像传送带每转一圈只放一个箱子。 DDR 像传送带上升沿放一个箱子,下降沿再放一个箱子。 同样的时钟节奏,数据传输次数翻倍。

但速度一快,就会出现一个问题:

接收端到底什么时候采样 DQ 数据最安全?

如果只靠一个全局 clock,板级走线、封装延迟、温度、电压、不同 DQ 线之间的 skew,都会让采样点偏移。

所以引入 DQS。

DQS 是 Data Strobe,可以理解为"跟着数据一起跑的小节拍信号"。

DQ 是数据。 DQS 是告诉接收端"现在可以抓数据了"的节拍。

Intel 对 DDR DQ/DQS 的定义很直白:DQ pins 是双向数据引脚,DQS 是 strobe pin;通常每 8 bits DQ 需要一个 DQS,DQ 在读 RAM 时是输入,在写 RAM 时是输出。

在 NAND NV-DDR 里逻辑也类似:

写入 NAND 时,SSD Controller 驱动 DQ 和 DQS,NAND 用 DQS 来采样 DQ。 从 NAND 读数据时,NAND 驱动 DQ 和 DQS,Controller 用 DQS 来采样 DQ。

可以把 DQS 想成跑步比赛里的领跑员。

数据 DQ 跑得很快。 DQS 跟着它一起跑。 接收端不再只看远处大钟,而是看跟着数据一起到达的领跑信号。

这就是 source synchronous 的思想。

数据从谁那里发出来,strobe 就由谁一起发出来。 这样 DQS 和 DQ 经历类似的路径、类似的延迟、类似的温度变化,更容易在接收端对齐。

Tektronix 的 DDR 测试资料也提到,DQS 是双向 data strobe,会随数据一起传输,用于接收端捕获数据;ODT 则用于改善信号完整性。

十四、DQ 的 Q 是 acquisition 吗?DQS 的 S 是 strobe,那 strobe 是啥意思?

DQ 的 Q 不是 acquisition。

在很多数字电路里,D 常表示 data input,Q 常表示 output。 到了存储器数据总线里,DQ 通常就是双向 data I/O pin 的名字。你可以简单记成:

DQ = Data pin / Data I/O

不用强行把 Q 展开成某个现代英文单词。它更像历史遗留命名。

DQS 里的 S 是 Strobe。

Strobe 这个词可以理解成"闪一下的采样信号"或"节拍信号"。

摄影里有 strobe light,闪光灯。 电子里 strobe signal,就是告诉你"现在这一刻有效,可以抓取"的信号。

所以 DQS 可以理解成:

Data Queue Strobe?不是。 Data Acquisition Signal?也不是。 更朴素一点:Data Strobe。

它是配合 DQ 数据线使用的节拍线。

十五、ODT 是什么?为什么高速 NAND 需要它?

ODT 是 On-Die Termination。

On-Die:在芯片内部。 Termination:端接电阻。

高速信号线上,如果阻抗不匹配,信号会反射。 反射严重时,接收端看到的就不是干净的 0 和 1,而是带毛刺、过冲、下冲、振铃的波形。

低速时,这些问题可能不明显。 到了 2.4GT/s、3.6GT/s、4.8GT/s,每一点反射都可能吃掉眼图 margin。

ODT 的作用,就是把端接电阻做在 NAND die 内部,让接收端阻抗更匹配,减少反射,提高信号完整性。Phison 的 NAND interface 科普里也提到,ONFI 引入 ODT 是为了改善 memory channel 的 signal integrity,并且 ODT 对 multi-die package 的 die-level 行为很重要。

形象一点:

高速 NAND 总线像一根很长的水管。 水流突然开关,如果管道末端没有合适的缓冲,水锤会反弹。 ODT 就像末端的吸能装置,让波形别来回弹。

十六、VCC、VCCQ、VPP、VSS、VSSQ 分别是什么?

这些名字看起来怪,是因为它们来自半导体电路历史命名。

在老的双极型晶体管时代,VCC 常表示接到 collector 的正电源。 在 MOS 电路里,VDD/VSS 也很常见,D 是 drain,S 是 source。 后来这些名字逐渐变成电源网络的传统叫法,不一定严格对应某个晶体管脚。

放到 NAND 里,可以这样理解:

VCC:NAND 核心/阵列相关主电源。它给 NAND 内部存储阵列、外围逻辑、高压产生等部分提供基础供电。 VCCQ:I/O 电源。Q 可以简单理解为 I/O/DQ 相关供电,它决定外部接口信号的电压域,比如 1.8V、1.2V。 VPP:Program/Erase 相关的高压辅助电源。有些 NAND 通过内部 charge pump 产生高压,有些器件会提供 VPP 作为外部高压/加速 program erase 的辅助供电,具体要看 datasheet。 VSS:主地,也就是 core/array 的 ground。 VSSQ:I/O 地,也就是 DQ/DQS 等高速 I/O 的回流地。

有 eMMC 资料把 VCC 描述为 NAND flash device 及其 interface voltage,VCCQ 描述为 controller 和 MMC interface voltage;虽然 eMMC 不是 raw ONFI NAND,但这个 VCC/VCCQ 分工有助于理解存储器件里"核心供电"和"I/O 供电"的区别。 ONFI 资料中也能看到 VSS 被定义为 power supply ground。

为什么要分 VSS 和 VSSQ?

因为高速 I/O 的开关噪声很大。 DQ、DQS 在高速翻转时,会带来瞬态电流和地弹噪声。 如果 I/O 地和核心地完全不区分,噪声可能影响内部读写和 sense amplifier。

所以 VCC/VSS 更像大楼内部供电和地基。 VCCQ/VSSQ 更像高速货运门口的专用电力和回流通道。 VPP 则像搬重物时临时启用的液压增压系统。

十七、最新 FPGA 能支持 3.6GT/s、4.8GT/s NAND 吗?

这个问题一定要分层回答,否则很容易误导客户。

先说 ONFI 规范和 ASIC IP。

ONFI 官方规格页面已经列出 ONFI 5.1 把 NV-DDR3 和 NV-LPDDR4 I/O speed 扩展到 3600MT/s,ONFI 6.0 方向则出现 NV-LPDDR4 LTT interface up to 4800MT/s。 Cadence 的 ONFI VIP 页面也列出 NV-DDR3 3600MT/s、NV-LPDDR4 4800MT/s;M31 公开页面列出 ONFI 5.1 3.6GT/s、ONFI 6.0 4.8GT/s I/O IP。

这说明:

从规范、VIP、ASIC PHY IP、SSD Controller SoC 方向看,3.6GT/s 和 4.8GT/s 已经不是科幻。

再看 SSD Controller。

2026 年公开信息里,Silicon Motion SM2524XT 被报道为 4-channel、NAND interface up to 4800MT/s 的 PCIe Gen5 DRAM-less SSD controller;Phison E37T 也被公开报道支持 4800MT/s NAND。 Silicon Motion 官方产品页也列出 SM2504XT 支持 3600MT/s NAND data rate。

这说明:

在新一代 SSD Controller 产品路线里,3.6GT/s 已经进入产品化阶段,4.8GT/s 也已经出现在 2026 年公开控制器方案中。

但 FPGA 要单独看。

FPGA 当然有很强的高速能力。比如 AMD Versal Premium Series Gen 2 的硬 DDR memory controller 官方列出 DDR5 up to 6400Mb/s、LPDDR5X up to 8533Mb/s;Intel Agilex 7 M-Series 等也面向高性能外部 memory interface。

但这不等于普通 FPGA I/O 可以直接、轻松、稳定地实现 4.8GT/s ONFI NAND tester。

原因是:

ONFI/NV-DDR/NV-LPDDR4 NAND 接口不是标准 DDR5 DIMM controller; NAND 需要特定 command/address/data 协议; BGA132/152/154 socket 和探针带来额外寄生; DQ/DQS 是高速并行总线,不是 FPGA GT transceiver 那种高速串行差分 lane; ODT、ZQ calibration、Vref、training、read/write timing、DQS gating 都需要完整 PHY 配合; 测试设备还要支持可编程 timing、异常注入、温度、P/E stress、read disturb、Vt 分布分析,不只是"能跑通数据"。

公开信息里,NplusT NanoCycler 支持最高 2.4GT/s at-speed characterization。

所以,如果客户问"FPGA 现在是不是已经支持 3.6GT/s、4.8GT/s NAND",比较稳妥的回答是:

如果只看 FPGA 芯片家族的高速 I/O 或硬 DDR/LPDDR 控制器能力,最新 FPGA 平台当然具备数 GT/s 级别的高速并行接口基础。但如果具体到 raw NAND ONFI 3.6GT/s、4.8GT/s 的 at-speed characterization,不能简单说'FPGA 支持'就等于测试系统支持。真正要看该设备有没有专门的 ONFI PHY、DQS/DQ calibration、socket 设计、NAND command engine、timing margin、ODT/ZQ/Vref 支持,以及是否已经用真实 BGA NAND 做过验证。

这也是为什么 NAND characterization tester 和普通 FPGA demo board 不是一回事。

普通 FPGA 板卡可能能跑高速 DDR/LPDDR。 但 NAND 测试设备要面对的是 raw NAND 的真实封装、真实协议、真实 P/E stress、真实 read disturb、真实坏块和真实工艺波动。

从公开资料看,到 2026 年 7 月,市场上可以明确公开支撑 3.6/4.8GT/s 的更多是 SSD Controller SoC、ONFI PHY IP、VIP、ASIC 方向;而以 FPGA 为核心的通用 NAND characterization 平台,公开可见、相对保守和成熟的 at-speed 能力仍以 2.4GT/s 这一档最值得作为现实交付基线。 如果某家测试设备宣称支持 3.6GT/s 或 4.8GT/s,建议客户一定要继续追问:

支持的是 protocol simulation,还是真实 BGA NAND at-speed? 支持 NV-DDR3,还是 NV-LPDDR4? 支持多少 channel? 每个 channel x8 还是 x16? 是否支持 DQS differential? 是否支持 ODT/ZQ/Vref/training? 是否支持 BGA132、BGA152、BGA154? 有没有真实 NAND vendor sample 的验证数据? 能否做 P/E cycling、read disturb、retention、read retry、Vt distribution? 高速下 probe/socket/adapter 的 SI margin 怎么保证?

这些问题,比单纯问"FPGA 最高多少 GT/s"更接近真实项目。

十八、把这篇文章收束成一句话

NAND Flash 最容易让人迷糊的地方,是它同时存在三层世界。

第一层,是物理世界。 这里讲 wordline、bitline、selector、cell、Vt、charge trap、read disturb、program interference。

第二层,是器件命令世界。 这里讲 ONFI、channel、target、LUN、plane、block、page、read、program、erase、status、DQS、ODT、VCCQ。

第三层,是 SSD 系统世界。 这里讲 FTL、垃圾回收、磨损均衡、LDPC、read retry、QoS、TBW、DWPD、企业级可靠性。

初级工程师刚入门时,最容易犯的错误,就是把这三层混在一起。

看到 8 个 die,就以为外面一定有 8 套总线。 看到 LUN,就以为它和 NVMe namespace 是一回事。 看到 Program,就以为 NAND 可以像内存一样原地写。 看到 QLC,就以为一定很不耐用。 看到 LDPC 4K,就以为一定比别人的 ECC 高级。 看到 FPGA 高速 I/O,就以为一定能直接测 4.8GT/s raw NAND。

真实的 NAND 世界远比这些口号复杂。

一颗 NAND package 可能只有一组外部共享总线,却在内部堆了多个 die / LUN。 一个 SSD Controller 可能有 4、8、16 个 channel,通过多层并行把 NAND 性能榨出来。 一个 NAND cell 只是一个存电荷的小结构,但整个 SSD 要靠 FTL、ECC、GC、wear leveling 把它包装成可靠磁盘。 一个 4.8GT/s 接口速度背后,不只是 FPGA 跑得快,而是 PHY、封装、socket、DQS、ODT、Vref、training、测试方法一起成熟。

所以,理解 NAND 不能只背术语。

要把它想成一个高度压缩的微型仓库群:

channel 是高速公路; package 是仓库大楼; die / LUN 是楼里的独立仓库; plane 是仓库分区; block 是一排货架; page 是一次搬运的最小货箱; cell 是最小储物格; Vt 是储物格里"电荷水位"的刻度; Program 是入库; Erase 是整排货架清空; P/E cycle 是货架被清空再使用的一次寿命消耗; FTL 是总账本; 垃圾回收是清仓整理; 磨损均衡是别让某几排货架被用到报废; LDPC 是数据错了以后还能拼回来的强力校验系统; DQS 是高速搬货时跟着数据一起跑的节拍员; ODT 是防止高速信号反弹的缓冲器。

当这些画面建立起来以后,NAND 就不再是一堆生硬缩写。

它是一套从材料、电路、协议、控制器、固件到测试设备共同协作的复杂系统。

而真正有经验的 NAND/SSD 工程师,看的也从来不是某一个单点指标。

他们看的是:

这颗 NAND 在真实速度下能不能稳定读写; 磨损以后 Vt 分布怎么漂; read disturb 怎么变差; LDPC margin 还剩多少; FTL 怎么调度; GC 会不会拖慢 QoS; channel 并行有没有发挥出来; 高速 DQ/DQS 在 socket 上有没有 margin; 以及整套系统能不能在企业级场景里长期稳定地跑下去。

这才是 NAND 技术真正有意思、也真正难的地方。

相关推荐
千寻xun1 小时前
二、实战篇-NVME SSD控制之ZYNQ实现(四)
fpga开发·nvme·nvme ssd
ChainSafeAI0031 小时前
以太坊利用AI挖掘漏洞成功发现安全缺陷,称人工审核仍不可替代
人工智能·安全
观测云1 小时前
观测云正式发布企业级可观测智能体 AI Agent Teams
人工智能
逐米时代1 小时前
制造企业智能体趋势从单点应用走向协同智能
人工智能
Mark White1 小时前
具身智能论文伴读-第一期
人工智能·深度学习·语言模型
stonewl25991 小时前
2026化工行业 GHS/CLP 国产标签打印软件合规打印方案
大数据·人工智能·物联网
Wzx1980122 小时前
Redis&ES——Retriever的抽象实现
数据库·人工智能·redis·elasticsearch
A8ai_napiai2 小时前
Claude内部发现“J空间“:AI可解释性从“黑箱猜测“到“结构验证“
人工智能
ALINX技术博客2 小时前
【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA
linux·fpga开发