基于BCH算法的ECC在MLC Nand Flash中的实现[zz]
2010-10-29 15:34
225 查看
摘要:
目前的Flash有nand和nor两种,我们可以认为flash是EEPROM的变种。intel在1988年开发出nor flash技术,彻底改变了EEPROM一统天下的局面。nand flash分为MLC和SLC两种,从前的SLC一般采用Hamming码来实现ECC,能够检测2bit错误,自动纠正1bit错误。但对于MLC虽说具有存储密度上的优势,但也掩饰不了自身的缺陷。
1、读写次数较差
MLC读写效能更差,SLC闪存约可以反复读写10万次左右,而MLC则大约只能读写1万次左右,甚至有部分产品只能达到5000次左右。
2、读写速度较慢
同条件下,MLC的读写速度要比SLC芯片慢,目前MLC芯片速度大约只有2M到3M左右。
3、能耗较高
同条件下,MLC能耗比SLC高,要多15%左右的电流消耗。
4、出错几率更大
由于MLC的每个cell可以存储2bit的数据,随着技术的不断进步,3bit、4bit、、都有可能。这样对于读写频繁的数码产品(MP4,SD卡等),其出错的几率将会更大,因此对主控芯片和ECC将要求更高。目前有的主控芯片通过纯软件校验,这样,无形当中加重了主控芯片的负担。也有部分主控通过硬件的4bit ECC校验和软件校验相结合,从而减轻了主控负担,但是这只是在一定程度上减少出错的几率,MLC的芯片写入次数限制和传输速度等缺点是无法克服的。
综上所述,MLC需要多bit ECC,目前采用BCH和Reed Solomon算法的比较多,下面将详细介绍本人采用的基于BCH算法的8b ECC(针对每个page 512byte的nand flash)。
纠错能力:8b/512byte
from: http://hi.baidu.com/rymonwang/blog/item/dca2ee8bb9339f17c8fc7ab8.html
目前的Flash有nand和nor两种,我们可以认为flash是EEPROM的变种。intel在1988年开发出nor flash技术,彻底改变了EEPROM一统天下的局面。nand flash分为MLC和SLC两种,从前的SLC一般采用Hamming码来实现ECC,能够检测2bit错误,自动纠正1bit错误。但对于MLC虽说具有存储密度上的优势,但也掩饰不了自身的缺陷。
1、读写次数较差
MLC读写效能更差,SLC闪存约可以反复读写10万次左右,而MLC则大约只能读写1万次左右,甚至有部分产品只能达到5000次左右。
2、读写速度较慢
同条件下,MLC的读写速度要比SLC芯片慢,目前MLC芯片速度大约只有2M到3M左右。
3、能耗较高
同条件下,MLC能耗比SLC高,要多15%左右的电流消耗。
4、出错几率更大
由于MLC的每个cell可以存储2bit的数据,随着技术的不断进步,3bit、4bit、、都有可能。这样对于读写频繁的数码产品(MP4,SD卡等),其出错的几率将会更大,因此对主控芯片和ECC将要求更高。目前有的主控芯片通过纯软件校验,这样,无形当中加重了主控芯片的负担。也有部分主控通过硬件的4bit ECC校验和软件校验相结合,从而减轻了主控负担,但是这只是在一定程度上减少出错的几率,MLC的芯片写入次数限制和传输速度等缺点是无法克服的。
综上所述,MLC需要多bit ECC,目前采用BCH和Reed Solomon算法的比较多,下面将详细介绍本人采用的基于BCH算法的8b ECC(针对每个page 512byte的nand flash)。
纠错能力:8b/512byte
from: http://hi.baidu.com/rymonwang/blog/item/dca2ee8bb9339f17c8fc7ab8.html
相关文章推荐
- 基于smdk2410 开发板u-boot-1.2.0 nand flash读写操作及其命令的实现
- 基于java实现的ECC加密算法示例
- 基于smdk2410 开发板u-boot-1.2.0 nand flash读写操作及其命令的实现(续)
- 基于ARM9内核Processor外部NAND FLASH的控制实现
- PXA270-基于ARM9内核Processor外部NAND FLASH的控制实现
- [ZZ] 基于DirectX shader的Per-pixel lighting实现
- 基于ARM9内核Processor外部NAND FLASH的控制实现
- 基于NAND Flash的RL-FlashFS实现
- [ZZ]基于私钥加密公钥解密的RSA算法C#实现
- 基于JZ2440的NAND FLASH的驱动程序的实现
- 基于Zookeeper的路由和负载均衡实现思想
- JAVA中基于RSA的签名验签/加密解密的实现
- linux 下基于jrtplib库的实时传送实现
- 基于对象的实现
- 基于XML配置实现增删改查
- 基于DRBD实现MySQL高可用
- OpenRTMFP/Cumulus性能优化(7) 基于RTMFP的p2p的实现
- .NET Core 中基于 IHostedService 实现后台定时任务
- 在Web客户端中基于Proj4实现坐标转换
- SpringBoot 基于swagger实现RESTfulApi风格