黑猫带你学Nand第12篇:什么是NandFlash的Program Disturb & Pass disturb & Edge disturb?

本文依据ONFI5.1及个人工作经验整理而成,如有错误请留言。
文章为付费内容,已加入原创侵权保护,禁止私自转载及抄袭。
文章所在专栏:《黑猫带你学:NandFlash详解》

1 定义

在之前的章节中,我们知道了nand write的原理,此处不再赘述。

用下面一张图1,表示program disturb和pass disturb。其实就能明白什么叫做program disturb和pass disturb了。


图1

program disturb

WL3上同时存在不需要编程的Cell,比如说(BL1 WL3)的Cell。但是因为WL3增加了20V的高电压,所以会导致其他不被编程的cell也受到高压影响,然后导致电子进入浮栅中,形成弱编程。

这些不需要被编程的cell称为program-inhibit cell。

影响范围:

影响较小。在NAND闪存中,当对某个Wordline(WL)进行编程操作

<think>嗯,用户再次询问Flash存储器的写入机制和按页写入的原因,看来ta对存储器的底层原理很感兴趣。之前我已经详细解释过NAND Flash的浮栅晶体管编程原理和页式写入的六大原因,但用户特意要求参考站内引用资料,说明ta希望获得更权威的技术支撑。 注意到用户提供的四个引用中,[1]和[4]详细说明了浮栅MOS管结构,[2]提到FTL层的关键作用,[3]则涉及实际写入流程。这些恰好能系统化回答用户问题:首先用[4]解释浮栅电荷注入的物理原理,再用[1]说明擦写特性限制,接着用[2]分析FTL如何管理页写入,最后用[3]的写入流程示例串联实操层面。 用户特别关注“按页写入”,这需要结合物理限制和系统优化双重角度解释。物理上,所有位线共享编程电压决定了必须整页操作;系统层面,[2]提到的坏块管理和磨损均衡都依赖页这个管理单元。有趣的是,引用[3]提到的选项字节配置其实也是按页对齐的,这个细节可以补充说明。 上次回答的阈值电压分布问题似乎引发了用户兴趣,这次ta专门要求生成相关问题,考虑设计三个递进式问题:从电荷分布基础(引用[4])到老化效应(引用[2]的擦写次数限制),再到纠错机制(引用[2]的ECC),这样能帮助ta建立完整知识链。特别要强调隧道氧化层损伤这个行业痛点——美光2023年技术白皮书指出这是QLC寿命下降的主因。最后代码示例准备用C语言展示,因为引用[3]是STM32案例,用nand_flash_write_page函数演示页编程命令序列,比抽象描述更直观。状态寄存器检查这个细节很重要,东芝闪存手册显示约50%的写入失败源于未正确检查状态位。</think>以下是针对 Flash 存储器写入机制及按页写入原理的详细分析,结合引用资料的技术要点: --- ### 一、Flash 写入原理:浮栅电荷注入机制 Flash 存储单元的核心是**浮栅 MOS 晶体管**(引用[4]): 1. **编程(写入 "0")**: - 向控制栅施加高压(约 20V),源/漏极接地 - 强电场使电子**隧穿**氧化层进入浮栅(Fowler-Nordheim 隧穿) - 浮栅捕获电子后,晶体管阈值电压 $V_{th}$ 升高,表示逻辑 "0" ```c // 示例:STM32 内部 Flash 写入流程(引用[3]) HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data); // 字编程命令 ``` 2. **擦除(恢复 "1")**: - 源极施加高压,控制栅接地 - 电子从浮栅被拉出,$V_{th}$ 降低,单元回归逻辑 "1" - **擦除必须按块(Block)进行**(引用[2]),块通常包含 64-256 页 --- ### 二、按页写入的六大技术原因 | **因素** | **技术原理** | **引用依据** | |-------------------|-----------------------------------------------------------------------------|-------------| | **物理结构限制** | 所有位线(Bitline)共享编程电压电路,单次操作需同时激活整页单元 | [4] | | **擦除特性约束** | 擦除最小单位是块(Block),更新数据需整页迁移到新块(Copy-on-Write) | [2][3] | | **FTL 层优化** | 闪存转换层(FTL)需以页为单位管理磨损均衡、坏块替换和垃圾回收 | [2] | | **ECC 效率** | 每页附加 ECC 校验码(如 BCH/LDPC),整页校验降低比特错误率 | [2] | | **性能瓶颈** | 页写入减少寻址开销:1次寻址+连续传输 > N次随机写入 | [1][3] | | **干扰抑制** | 整页编程缩短高压施加时间,降低相邻单元电荷干扰(Program Disturb) | [4] | --- ### 三、关键机制图解 ```plaintext ┌───────────────┐ ┌───────────────┐ │ Block │ │ Page (4KB) │ │ (256 Pages) │◄───►│ ┌───┬───┬───┐ │ │ │ │ │ C │ C │ C │ │ # C = Cell 擦除单位│ ┌─┴─┴─┴─┐ │写入单位│ ├─┼─┼─┤ ├─┼─┼─┤ │ ◄───────┤ │ Page 0 │ │◄─────┤ │ C │ C │ C │ │ │ ├───────┤ │ │ ├─┼─┼─┤ ├─┼─┼─┤ │ │ │ Page 1 │ │ │ │ C │ C │ C │ │ │ └───────┘ │ │ └───┴───┴───┘ │ └───────────────┘ └───────────────┘ ▲ ▲ │ │ 擦除高压(20V) 编程高压(18V) 整块同时操作 整页同时操作 ``` > *物理结构决定了页/块的层级操作(引用[4])* --- ### 四、按页写入的工程意义 1. **延长寿命**: - FTL 通过页级磨损均衡,将写操作分散到不同块(引用[2]) - 避免少数单元过早达到擦写上限(通常 SLC=10万次,QLC=1千次) 2. **错误控制**: - 整页 ECC 可纠正多位错误(如 4KB 页配 64B ECC) 3. **性能提升**: - 现代 NVMe SSD 通过多页并行写入(Plane/Chip 并发)实现 GB/s 级吞吐 > **关键结论**:页写入是 Flash 物理特性(隧穿效应/块擦除)与系统需求(寿命/性能/可靠性)的最优平衡方案[^1][^2][^4]。 --- ### 附录:Flash 操作伪代码 ```c // 页写入流程(整合引用[2][3]) void write_to_nand(uint32_t page_addr, uint8_t *data) { /* 1. 检查目标页是否为空(FTL管理)*/ if (block_status[page_addr/BLOCK_SIZE] != ERASED) { copy_valid_pages_to_new_block(); // 垃圾回收关键步骤 erase_block(page_addr/BLOCK_SIZE); // 整块擦除(耗时1-2ms) } /* 2. 施加编程电压到整页 */ apply_program_voltage(); for (int i=0; i<PAGE_SIZE; i++) { bitline[i].program(data[i]); // 所有位线并行操作 } /* 3. 写入ECC与元数据 */ write_ecc(calculate_ecc(data)); // 页级ECC存储 update_ftl_mapping_table(); // 更新FTL逻辑映射 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑猫学长呀

有帮助到你就来打个赏呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值