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种00011011可以理解为要写入数据需要两次编程例如第一次写入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效应闪存用的越久数据保存时间越短闪存使用的多就会历经很多次的擦写导致氧化绝缘层由了导电性这下电荷从浮栅泄漏速度更快了。所以闪存擦写次数越多数据保存的时间就越短。