一、先把Nand结构关系说透

如图所示,在一个 LUN(Logical Unit Number) 内部:
LUN 是命令接收和状态反馈单位(die 级别)
LUN 内包含多个 plane
每个 plane 内部都有:
page register cache register
这两个寄存器是实现 cache read / cache program 的核心。
二、两个寄存器到底分别干什么?
很多资料说得很模糊,其实它们功能是分层的:
| page register | ||
| cache register |
可以理解成:
NAND Array <-> Page Register <-> Cache Register <-> I/O Bus
page register 是“阵列接口缓冲区”, cache register 是“总线接口缓冲区”。
三、为什么不只用一个寄存器?
因为 NAND 操作本质上有两个完全不同时间尺度的过程:
总线传输时间(tXFER)
数据通过 ONFI / Toggle 总线进出 典型几十到几百 ns 阵列操作时间
Program:tPROG(几百微秒) Read:tR(几十微秒)
两者时间量级差异是 100~1000 倍。
如果只有一个寄存器,那么:
写入时:必须等 tPROG 结束才能再传下一页 读取时:必须等 tR 完成才能开始下一页
总线会大量空闲。
四、Cache Program 的真实时序机制
我们精确拆一下:
假设:
t1 = 总线传输时间 t2 = tPROG(阵列写入时间)
❌ 不用 cache program
流程:
dataA: t1 (bus) + t2 (program)
dataB: t1 (bus) + t2 (program)
总时间:
2 × (t1 + t2)
总线在 t2 期间是完全空闲的。
✅ 使用 cache program
流程:
dataA → cache register
cache → page register
开始 program A(t2)
同时:
总线传 dataB → cache register
时间线变成:
t1 (A 传输)
t2 (A program)
t1 (B 传输,被隐藏)
t2 (B program)
如果 t2 > t1:
总时间 ≈
t1 + 2 × t2
相比原来的:
2t1 + 2t2
节省了一个 t1。
⚠ 关键点:cache program 不是让写入变快
很多人误解这一点。
cache program:
没有降低 tPROG 只是减少总线空闲 提升的是“pipeline 利用率”
五、Cache Read 的真实机制
读过程是反方向的 pipeline。
定义:
tR:array → page register t1:page → cache → I/O bus
❌ 不使用 cache read
dataA: tR + t1
dataB: tR + t1
总时间:
2 × (tR + t1)
✅ 使用 cache read
流程:
读 A → page register(tR) A → cache register A 正在通过总线输出(t1) 同时开始读 B(tR)
如果 tR > t1:
总时间:
tR + 2 × tR
≈ 2tR + t1
等价于隐藏了一个 t1。
六、“乒乓”机制本质
本质是一个 两级双缓冲 pipeline。
和 CPU cache 类比:
但更准确的类比是:
两个寄存器在“阵列操作”和“总线操作”之间做流水线隔离。
七、再往深一点:什么时候 cache 不起作用?
有三种情况:
1️⃣ 随机写
如果下一页不是同一 block 的下一页:
cache program 可能无法连续 pipeline
2️⃣ 受限于总线带宽
如果 t1 > t2:
隐藏不了时间 优化收益不明显
3️⃣ controller 没发 cache 命令
如果只是普通 program:
cache register 和 page register 内容相同 等价单缓冲
八、一个更准确的插秧类比
我父亲的插秧比喻跟这个非常类似,腰间别着几捆秧苗,右手插秧,当右手插入秧苗时,左手立马拿下一棵秧苗,然后右手接住直接拿起插入水田中:
page register = 右手正在插的那棵秧苗 cache register = 左手已经准备好的下一棵 NAND array = 水田 I/O bus = 腰间秧苗筐
如果没有 cache:
每插一棵都要回头从筐里拿。
如果有 cache:
右手插秧时,左手已经准备好下一棵。
九、技术总结一句话
Cache register 和 page register 组成双缓冲机制,通过阵列操作与总线操作并行化,实现 NAND 内部的 pipeline,从而提高吞吐率,但不降低单次读写延迟。
Alipay
Wechat