笔者记录一下对于Nand一些知识的理解
对于FW 固件BE模块,Flash的寻址只有ch和ce和lun的概念,通过这些可以组合成die
- LUN是CE下的一种概念,例如一种是CE下只有一个LUN,第二种是一个CE下有两个LUN,一个LUN下面挂载一个die
- 只有一个LUN的情况直接拉低对应的CE信号就可以选中了,两个LUN的时候,拉低CE信号会有两个LUN同时接收到信号,这个时候会再发送类似lun select命令去选择要操作的LUN
- CE是通过引脚,lun是通过地址选择

- CH 是真正的并行度,CE可以分时复用
- 2CH 2CE的时间是1CH 1CE的2倍
- 2CH和2CE对比,并不是2倍的关系,少了一个数据传输的时间,(片选时间足够小(忽略不计),rb时间大于传输时间)

-
现在FLASH 的RB时间越来越短,例如传输:RB = 1:1的情况下,那么性能提升50%
-
时间:1CH 2CE = 3,而 2CH 2CE = 2,那么(3-2)/2 ,时间多了50%,性能就提升50%
-
传输时间一般情况下是DMA时间,取决于主控和带宽,比如带宽800MB,传输16K,19.53125us,而单SLC的read是24us,写是103us,这样的话,对于read来说,提升接近50%,write则提升不多。
-
例如4H 2CE,那么die的分布分别是die 0-3分别在4ch上(0-3),4-7 die在ch(0-3上面)

multiplane的编程:
-
plane相对独立,同时编程,同一个页的plane编程(可以并行,只有一个rb)
附录
ONFI协议定义了NAND闪存与控制器之间的通信接口,其物理层信号根据支持的数据接口类型(SDR/DDR等)有所不同。以下表格汇总了ONFI协议中的核心端口/信号及其功能说明:
典型的Nand引脚如下图所示

ONFI协议端口功能汇总表
| 信号/端口名称 | 功能描述 | 备注/说明 |
|---|---|---|
| I/O0 - I/O7 | 8位数据/命令/地址总线 | 传输数据、命令和地址的低8位。所有ONFI接口必选。 |
| I/O8 - I/O15 | 高8位数据总线 | 仅当Flash支持16位总线宽度时存在,且仅用于数据传输,命令和地址仍为8位。 |
| CEx# | 片选信号 (Chip Enable) | 低电平有效,用于选中目标Flash芯片。当一个设备正在执行操作时拉高CE#,操作仍会继续完成。 |
| CLEx | 命令锁存使能 (Command Latch Enable) | 高电平时,I/O总线上的数据被锁存为命令。 |
| ALEx | 地址锁存使能 (Address Latch Enable) | 高电平时,I/O总线上的数据被锁存为地址。 |
| R/Bx# | 就绪/忙状态指示 (Ready/Busy) | 输出信号。低电平表示设备正忙(编程/擦除/读取中),高电平表示空闲。 |
| WEx# | 写使能 (Write Enable) | 在SDR接口中,用于锁存写数据、命令和地址。 |
| REx# | 读使能 (Read Enable) | 在SDR接口中,用于锁存读数据。 |
| WPx# | 写保护 (Write Protect) | 低电平有效,拉低时禁止擦除和编程操作。仅在设备无命令执行时才可拉低。 |
| CLKx | 时钟信号 (Clock) | 在NV-DDR接口 中,WE_n 引脚功能被CLK取代,用于锁存命令和地址。 |
| W/Rx# | 读写方向指示 (Write/Read Direction) | 在NV-DDR接口 中,RE_n 引脚功能被W/R_n取代,用于指示总线的数据传输方向。 |
| DQS | 数据选通信号 (Data Strobe) | 在DDR接口中新增的双向信号,用于高速数据传输时的数据同步。不同版本可配置为单端或差分对。 |
| RE_t / RE_c | 读使能差分对 (Read Enable True/Complement) | 在NV-DDR2/3及更高版本 中,RE_n可配置为差分信号对以提升高频性能。 |
| DQS_t / DQS_c | 数据选通差分对 (DQS True/Complement) | 在NV-DDR2/3及更高版本 中,DQS可配置为差分信号对。 |
版本演进说明 :ONFI协议随版本演进,端口功能也有所变化。SDR 是传统异步接口;NV-DDR 引入了时钟(CLK)和数据选通(DQS);NV-DDR2/3 开始支持差分信号对(如RE_t/c, DQS_t/c)以支持更高速度。最新的ONFI 6.0 已放弃对SDR等旧接口的定义,专注于扩展NV-LPDDR4接口速率。
NAND闪存基本操作耗时
这三个参数是衡量NAND闪存基本操作耗时 的核心性能指标,它们对应了读(Read)、编程(Program/写)、擦除(Erase) 这三种主要操作。
具体定义如下:
| 参数 | 全称 | 对应操作 | 含义解释 |
|---|---|---|---|
| tR | Page Read Time | 页读取 | 从存储单元(Cell)将数据读取到页寄存器(Page Register) 所需的最大时间。这是完成一次读操作命令后,控制器需要等待数据就绪的典型延迟。 |
| tPROG | Page Program Time | 页编程 | 将数据从页寄存器编程(写入)到存储单元所需的最大时间。这是完成一次写操作命令后,控制器需要等待写入完成的典型延迟。 |
| tBERS | Block Erase Time | 块擦除 | 擦除一个完整的块(Block) 所需的最大时间。这是NAND闪存管理(如垃圾回收)中耗时最长的操作之一。 |
⏱️ 典型时间与作用
这三个时间参数通常在NAND芯片的数据手册(Datasheet) 中明确给出,或可以从支持ONFI协议的芯片参数页中读取。
- 典型时间 :tR和tPROG的典型值通常在几毫秒(ms) 级别。作为参考,ONFI规范定义的默认(最慢)值为:tR为200µs,对于非ONFI芯片,驱动通常会使用一个较大的保守值(如65ms)作为超时阈值。tBERS的时间会更长。
- 核心作用 :这些参数是NAND控制器驱动程序配置超时定时器(Timeout Timer) 的关键依据。控制器需要根据这些最大值来决定等待操作完成的最长时间,以确保操作不会因意外卡死而无限等待。