Nand 基础知识理解
笔者记录一下对于Nand一些知识的理解对于FW 固件BE模块Flash的寻址只有ch和ce和lun的概念通过这些可以组合成dieLUN是CE下的一种概念例如一种是CE下只有一个LUN第二种是一个CE下有两个LUN一个LUN下面挂载一个die只有一个LUN的情况直接拉低对应的CE信号就可以选中了两个LUN的时候拉低CE信号会有两个LUN同时接收到信号这个时候会再发送类似lun select命令去选择要操作的LUNCE是通过引脚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传输16K19.53125us而单SLC的read是24us写是103us这样的话对于read来说提升接近50%write则提升不多。例如4H 2CE那么die的分布分别是die 0-3分别在4ch上0-34-7 die在ch0-3上面multiplane的编程plane相对独立同时编程同一个页的plane编程可以并行只有一个rb附录ONFI协议定义了NAND闪存与控制器之间的通信接口其物理层信号根据支持的数据接口类型SDR/DDR等有所不同。以下表格汇总了ONFI协议中的核心端口/信号及其功能说明典型的Nand引脚如下图所示ONFI协议端口功能汇总表信号/端口名称功能描述备注/说明I/O0 - I/O78位数据/命令/地址总线传输数据、命令和地址的低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这三种主要操作。具体定义如下参数全称对应操作含义解释tRPage Read Time页读取从存储单元Cell将数据读取到页寄存器Page Register所需的最大时间。这是完成一次读操作命令后控制器需要等待数据就绪的典型延迟。tPROGPage Program Time页编程将数据从页寄存器编程写入到存储单元所需的最大时间。这是完成一次写操作命令后控制器需要等待写入完成的典型延迟。tBERSBlock Erase Time块擦除擦除一个完整的块Block所需的最大时间。这是NAND闪存管理如垃圾回收中耗时最长的操作之一。⏱️ 典型时间与作用这三个时间参数通常在NAND芯片的数据手册Datasheet中明确给出或可以从支持ONFI协议的芯片参数页中读取。典型时间tR和tPROG的典型值通常在几毫秒ms级别。作为参考ONFI规范定义的默认最慢值为tR为200µs对于非ONFI芯片驱动通常会使用一个较大的保守值如65ms作为超时阈值。tBERS的时间会更长。核心作用这些参数是NAND控制器驱动程序配置超时定时器Timeout Timer的关键依据。控制器需要根据这些最大值来决定等待操作完成的最长时间以确保操作不会因意外卡死而无限等待。