NAND Flash管理算法的设计及实现
O 引言
Flash是一种非易失存储器,它在掉电条件下仍然能够长期保持数据。由于它具有容量大、速度快、功耗低、抗震性能好等优点,近几年在U盘、SD卡、SSD硬盘等各种移动存储设备中得到了广泛的应用。本文给出了一款性能优异、成本低廉可用于SD卡的NANDflash控制芯片的设计方法。(本方法也同样适用于其他存储设备。文中集中探讨了一种高效管理物理块的算法,包括逻辑物理地址映射以及spare区的定义,另外,还有双缓冲器优化读写的方法等。
1Flash简介
1.1 SLC flash与MLC flash的比较
从架构上,flash可以分为SLC(Single-Level-Cell) flash和MLC(Multi-Level-Cell)flash两种。和SLCFlash相比较,MLC flash的优点是面积小、成本低:缺点是出错率高,寿命短(SLC的每个block能够擦写100,000次,而MLC能够擦写10,000次)。由于MLC flash具有成本低的优势,而其出错率高的缺陷又可以通过ECC(Error Correction Code)纠错来有效解决,寿命短的问题也可以通过磨损均衡来弥补,因此,MLC flash的应用更加广泛,但在一些高端应用仍然会使SLCflash。本设计就是针对MLC flash,但是,本方法对SLC flash也能够处理。
1.2NANDflash结构
不同厂商不同型号的flash的结构都大同小异,图l所示是三星K9G8G08UOA型号的flash结构图,图l中的1个flash芯片包含4096个物理块(block),每个物理块含有128个页(page),每个页包含2112(2048+64)字节其中多出的64字节用于存放纠错码及其他信息用。
1.3NANDflash的特点
Flash可支持读(Read)操作、写(Program)操作和擦除(Erase)操作。其中读操作和写操作的基本单位是页,擦除操作的基本单位是块。对flash的写入操作只能在尚未写入的空闲页上进行,并且只能按照从低地址页到高地址页的顺序进行操作,而不能写了高地址页之后,再写低地址页。如果想要修改某个已经写过的页,只能先对整个物理块进行擦除,然后才能正确写入。
评论