news 2026/5/25 17:31:35

【SSD】闪存特性:SSD寿命 写放大,MLC特性,读干扰

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【SSD】闪存特性:SSD寿命 写放大,MLC特性,读干扰

1.SSD的寿命

如果栅极加0V电压,这是擦过的晶体管阈值电压为-V,写过的晶体管阈值电压为+V;随着擦写次数的增加,会出现3种故障:

1.擦过的晶体管阈值电压变大,氧化层变薄,从-V到0靠近;这样读的时候沟道电流变小,容易把“1”读成“0”

2.写过的晶体管阈值电压变小,从+v向0v靠近。容易被把”0“读出”1“

3.写过的晶体管阈值电压变大,即使控制加大于V的电压,晶体管也是截止的。

浮栅晶体管对浮栅极下面的绝缘层很敏感,擦写多了,氧化层逐渐老化,产生不少Charge Trap,这些陷阱最终会吃掉电子,导致写的时候进入浮栅的电子数量会减少,最终导致0和1两个区间不断靠近。

如下图,上面是写后的阈值电压,下面是擦除后的阈值电压,很明显,擦除后的阈值电压在擦很多次之后显著变高。所以,一般擦除之后会做校验,方法是把所有的Wordline设为0V,再去检测每个Bitline的电流。如果某个Bitline电流是0,就意味着有个单元的擦除阈值电压接近0V,导致晶体管关断。所以这个闪存块应该标为坏块。

怎么解决这些的问题:

Wear Leveling:通过综合磨损均衡算法,让所有的闪存块均衡擦写。

降低写放大:写放大越低,固态的磨损速度越慢。

用更好的ECC纠错算法:纠错能力越强,容许的出错率越高。

什么是写放大?

写放大,表示NAND实际写入数据量和host写入量的比值,用来衡量SSD中写放大程度,当NAND Flash中写入的数据多余主机提交的数据时,就会发生写放大。例如主机写入2GB数据,而SSD实际上写入了4GB数据,此时的WAF等于2;

写放大的主要来源

垃圾回收

因为SSD和传统的机械硬盘不一样,不能够覆盖写,必须按页写入,按块擦除,在这个过程中,例如垃圾回收,在块里面有有效页和无效页,需要将有效页搬移到其他的块中,然后对块进行擦除;这个过程中由于搬移就会增大写放大。

磨损均衡

磨损均衡同样需要做搬移的操作,所以也会增大写放大;

读干扰和写干扰

读写干扰发生之后会造成NAND的非永久性损伤,需要重新擦除之后正常使用,但是在擦除之前需要搬移数据,会增大写放大。

怎么样优化写放大?

其实就是怎么样去减少搬移的情况。

1.预留OP空间

预留空间越大,空闲块越多,GC不需要频繁的搬移数据,写放大越低,因为OP越大,每个闪存块有效数据越少,垃圾越多,需要重写的数据更少,写放大就越低

2.ECC纠错

ECC对少量bit的翻转会自动纠错,从而避免数据搬移,降低写放大。

3.写压缩

对写入的数据进行压缩,主要依赖主控芯片的压缩算法,降低实际写入的数据量,从而降低写放大。

MLC使用特性

1.必须按照顺序写入

对MLC或者TLC来说写一个闪存块中的闪存页,应该按照顺序写的Page0---Page2 Page3----禁止随机写入,原因如下

例如MLC,一个存储单元包含两个闪存页的数据,要先写Lower Page,再写Upper Page。

  • MLC 单元的阈值电压分布,是由两次编程操作共同决定的。Lower Page 的写入会先把单元的电压拉到一个中间状态,Upper Page 的写入再在此基础上精细调整到最终的目标区间。
  • 具体来说,就是MLC在一个Cell里面写入的数据有4种,00,01,10,11,可以理解为要写入数据需要两次编程,例如第一次写入1,那第一次就是写入Lower Page,你需要给Cell分配“1”所属范围的电压即可完成第一次的编程。第二次编程就是Upper Page的数据,例如要写入“0”,那第二次就分配属于“0”的电压范围,最终写入了“01”数据。
  • 如果跳过 Lower Page 直接写 Upper Page,会导致单元电压无法正确落在目标区间,数据直接损坏

相邻的Cell之间存在耦合电容,工艺上要求后面的闪存页写操作时,前面的闪存页已经写过。

闪存单元之间是挨得非常近的,相邻单元的浮栅之间会形成寄生耦合电容。所以在写后面的页的时候,就很有可能会干扰到前一页。

但是读和SLC没有按顺序写的这个限制。

2.使用寿命更短

MLC的最大擦写次数会变少,因为它在读写的时候划分的阈值电压更多(4个),每次读写要施加的电压的次数更多,所以需要Wear Leveling(磨损均衡)来保证整个存储介质的使用寿命。

3.写一个闪存页失败,可能会导致另一个闪存页的数据损坏

一般过程是先写Lower Page,将Cell的电压(擦除电压)拉到一个中间区域,然后写Upper Page在Lower Page的基础上,通过精细调整电荷的输入,把电压分到更窄的区间;如果在写Upper Page的过程中,这个时候掉电了,那之前写入的Lower Page数据也会丢失,也就是写一个闪存页失败,可能会导致另一个闪存页的数据损坏。

4.页写入速度不均,Lower 快、Upper 慢

写入Lower Page时间短,写Upper Page时间长,因为你Lower Page是将电压拉到中间位置,速度比加快,而写Upper Page 需要对电压做更精细的划分,所以时间长。

读干扰

读干扰会导致和浮栅极进入电子,由于有额外的电子加入,导致晶体管阈值电压右移(变大了),如果这时候闪存依旧按照之前的参考电压去判断数据,就会误判。

缓解方案:

1.记录每个Block读的次数,在数据出错之前,把整个Flash的数据块刷新或者搬移,导致数据出错。

2.减少Vpass(也就是加在未被读的Wordline上的电压)可以缓解读干扰

闪存数据保存期(Data Retention)

这个主要跟浮栅极氧化层厚度有关,越厚保存数据的时间越久。

本征电场

在控制栅极不加电压的时候,氧化层会产生一个本征电场,它是由浮栅里面的电子产生的,在这个电场的作用下,电子会慢慢从浮栅慢慢泄漏,泄漏多了,数码据就会发生错误,从数据泄漏到出错的时间过程就叫做数据保存期。

TAT效应

闪存用的越久,数据保存时间越短;闪存使用的多,就会历经很多次的擦写,导致氧化绝缘层由了导电性,这下电荷从浮栅泄漏速度更快了。所以,闪存擦写次数越多,数据保存的时间就越短。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 17:25:15

如何快速掌握BiliBiliCCSubtitle:面向开发者的完整实践指南

如何快速掌握BiliBiliCCSubtitle:面向开发者的完整实践指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle BiliBiliCCSubtitle是一款专为技术开发者和…

作者头像 李华
网站建设 2026/5/25 17:21:23

光伏邻里共享:硬件耦合与智能算法驱动的社区微电网实践

1. 项目概述:当屋顶光伏遇见邻里共享如果你家里装了光伏板,白天发的电用不完,晚上又得从电网买电,这种“看天吃饭”的别扭感,相信很多光伏业主都深有体会。传统的解决方案要么是装昂贵的储能电池,要么是把多…

作者头像 李华
网站建设 2026/5/25 17:18:26

图神经网络在高能物理量能器噪声抑制与能量重建中的应用

1. 项目概述与核心挑战在高能物理实验里,量能器(Calorimeter)就像是实验的“能量秤”,负责精确测量粒子碰撞后产生的次级粒子(如电子、光子、喷注)的能量。这个能量读数准不准,直接决定了我们能…

作者头像 李华
网站建设 2026/5/25 17:18:25

后端开发中的API设计原则与实践指南

在当今快速发展的互联网时代,后端开发作为构建高效、稳定服务的核心环节,其重要性不言而喻。而API(应用程序编程接口)作为后端服务与前端应用、其他后端服务乃至外部系统交互的关键桥梁,其设计质量直接决定了系统的可维…

作者头像 李华