Nand Flash简介-2
下面是Nand Flash介绍的第二节,主要是介绍下Nand Flash里面结构和一些特性。 Nand Flash结构
图1
上图为Nand Flash的结构,图中这片Flash有8192个块(Block),一个块包含有64个页(Page),一个页有4K+128Bytes。但为什么一个页会有4K+128Bytes?那是因为需要一些冗余的空间(如上面128Bytes)用来存放错误纠正码(ECC)的和其它一些FTL管理信息。 Nand Flash特性基本操作Nand Flash基本操作有读、编程(写)、擦除。编程、读是以页为单位的,擦除以块为单位。
图2 因此在擦除后,Cell只能从状态1变为0,而不能从0变1,所以在写之前,块需要擦除。但如果恰好某几个Cell状态为“1101”,你需要编程“0001”,这样是可以的,可以节约擦除时间,但是操作起来异常复杂,而且Cell 0、1不均衡,其实也会不稳定,应该没有人会这样做。 P/E次数限制P/E:Program/Erase。Nand Flash中每个块有一定的擦除、写次数限制,因为浮动门充放电会降低二氧化硅绝缘能力,到了一定阈值后,不能保证Cell中电荷数量。下图是不同种类和制程的Nand Flash P/E情况,其中有意思的是,制程的提高降低了P/E次数。MLC、TLC的P/E次数比SLC少。
图3 Data RetenionData Retenion:即数据保存的能力,往Flash中写入数据,数据并不可以永久保存。随着时间的推移,Cell中电子会跑掉,严重的话影响Cell的电压阈值。如果在一个页中,异常的Cell超过了ECC纠错阈值,那么这个页中的数据就会损坏。Data retention和当前数据保存块的P/E次数(浮动门周围的二氧化硅绝缘能力降低)和温度有关。 Write/Read Disturb Write Disturb(编程干扰):指当对页(page)进行写入时,由于阈值电压接近的关系,相邻的位(bit)也被升高,从而造成相邻的位出错。闪存电荷非常不稳定,相邻存储电荷的悬浮门间会相互干扰,造成相邻悬浮门间的bit错误,MLC由于存在4组接近的电压,与SLC相比更容易受到干扰。 总结 由于Nand Flash读、写、擦除粒度不同,造成了写放大的情况(写放大:实际写操作的量超过请求的写数据量。比如说某款Flash页粒度为8K,现在要写1K数据,由于读、写以页为单位,所以需要先把Flash页其它7K读出来,加入新的1K数据,再重新写进去。所以简单的写1K数据,涉及到了读、写8K的操作。还有更恐怖的情况:垃圾回收,在以后再说);由于有P/E的限制和Data Retention,所以我们需要增加磨损均衡和坏块管理的算法;由于W/R Disturb,所以我们需要增加对重复读操作进行特别处理。 而且在存储设备使用的过程中,又要考虑大数据读写、小数据读写、顺序读写、随机读写、持续读写、多线程读写、设备异常掉电等等等等…所以FTL还是很有挑战的。 对Nand Flash特性介绍,大概就介绍到这里,后面或许会介绍下Flash的一些结构和一些操作。不过更想讲下FTL了,关于Nand Flash的原理,以后有机会会深入研究。写博客和闲聊不太一样,有些概念之前没有弄得很深入,所以在写出来的时候,需要去查询确认,由于见识有限,所以有写得不对的地方,请大家多多指导,多多交流,谢谢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |