Nand Flash进阶

对nandflash很纠结,我不明白,为什么容易出现坏块还有那么多人要用,现在了解了些。关键原因是成本,嵌入式系统定义里的一个原则就是这个。看完这篇文章,我对nandflash又有了新的认识。。。
 
原文:
 
在嵌入式应用中,海量存储密度正在以前所未有的速度增长。像便携式媒体播放器、蜂窝电话、数码相机、便携式导航设备、无线网卡、闪盘这样的消费产品由于需要处理越来越多的多媒体内容而要求更高的海量存储密度。

NAND闪存已经成为消费类应用中用作海量存储的主要选择,因为它相比NOR闪存而言具有单位比特成本更低、存储密度更高的优势,并且具有比硬盘更小的尺寸、更低的功耗以及更可靠的优势。

因为NAND闪存在消费市场上的需求量很高,因而存储成本下降得很快,像POS(销售点)终端、打印机以及其他应用可以用NAND存储器以更低的成本达到更高的密度。

然而,由于这些嵌入式应用对更高NAND闪存密度的要求在不断提高,设计师需要从各种NAND闪存类型、密度、供应商以及发展路线图和实现方式中作出合理选择。

使用NAND闪存的第一个也是最重要的选择标准是NAND控制器的实现。所有的NAND闪存器件都需要位于软件中的维护开销和作为硬件的外部控制器以确保数据可靠,使NAND闪存器件的寿命最大,并提高性能。NAND控制器的三个主要功能是坏块管理、损耗均衡以及纠错编码(ECC)。

NAND闪存以簇的形式进行数据存储,即所谓的块。大多数NAND闪存器件在制造测试时就会发现有一些坏块,这些坏块在供应商的器件规格说明中是有标记的。

此外,好的块也可能会在NAND生命周期内降低性能,因此必须通过软件进行跟踪,并进行坏块管理。此外,对特定的块进行不断的读写操作可能导致该块很快“磨损”而变成坏块。为了确保NAND器件最长的寿命,限制磨损块的数量,需要利用损耗均衡技术让所有的块读写次数均衡。

最后,由于某个单元的休止或操作可能产生误码,因此必须以软件或硬件方式实现ECC来发现并纠正这些误码。ECC通常被业界定义为每528字节扇区中能纠正的代码比特数。在一个系统中,这种NAND控制器可以按照图1所示的三种不同配置方式与NAND进行组合。

除了从图1所示的三种NAND解决方案中作出选择外,设计师还必须在两种NAND闪存器件-SLC NAND和MLC NAND中作出选择,它们各有优缺点。

SLC NAND的每个块都具有更长的使用寿命和可靠性,因此需要较少的ECC,并能提供优异的性能。MLC NAND性能则较低,而且难以实现,因为它需要更高等级的坏块管理、损耗均衡和ECC。

然而就单比特的价格来说,它大约只有SLC NAND的1/3。由于SLC和MLC NAND之间成本差距越来越大,大多数应用开始转向MLC NAND,特别是较高密度的应用,这样可以大大地降低材料成本。

图1中的三选一需要考虑多种因素,包括微处理器对NAND控制器的支持、所采用的NAND类型(SLC或MLC)以及平台所要求的NAND密度。


图1:NAND架构选择。

如果平台中使用了带完整NAND接口和控制器的微处理器,设计师通常倾向于第一种选择。大多数当代的微处理器即使支持NAND的话,通常也只支持较低密度的SLC NAND存储器。

工艺技术限制了SLC或MLC NAND裸片上能够实现的存储量,而当前每个裸片能支持的密度大约为1GB。因此为了支持更高密度的NAND,控制器必须支持多个NAND。

通常这需要通过使用交织处理和多个芯片使能管脚实现。而增加多个芯片使能脚以支持多个NAND将使微处理器的引脚数量增多,因此在微处理器中包含该类型的NAND控制器不是十分流行。

而且MLC NAND接口在微处理器上很难看到,这有几方面的原因。随着MLC NAND工艺技术节点的持续缩小,支持这种NAND存储器所需的ECC等级变得越来越高。

目前MLC NAND所需的ECC等级为4比特,但是很快就会提高到8比特和12比特。更多数量的ECC需要NAND控制器中的硬件支持。然而,微处理器的发展步伐比快速发展的MLC NAND迟缓得多。

对很多不同的嵌入式和可插拔式存储器而言,“受控NAND”方法(选项2)非常有用。所有的便携式SD/MMC卡都是这种实现方法,而市场上的嵌入式受控NAND也有几种选择。这种方法有其优势,因为微处理器只需要支持一种SD/MMC类型接口就能使系统支持SLC或MLC NAND。

控制器是与NAND存储器堆叠在一起的,负责处理所有的坏块管理、损耗均衡以及NAND所需的ECC。目前受控的NAND实现密度在嵌入式应用中大约为4GB,在移动卡中为8GB。

这种方法的缺点是不同的供应商在他们的各种受控NAND上支持不同的接口(有的供应商可能使用SD、有的供应商可能使用MMC,也有供应商可能使用专用接口),因此更换NAND供应商的时候需要对软件作大量修改

选项3让设计师在选择NAND类型以及选择不同供应商时具有最大的自由度。几乎所有的NAND控制器都支持不同类型、不同供应商和不同密度的NAND,而且由于NAND控制器总是使用相同的接口连接处理器,因此设计师可以自由选择不同的NAND类型和供应商,而不需要修改软件。

图2所示的框图提供了使用具有完整SLC和MLC NAND管理功能的多媒体海量存储控制器的西桥(West Bridge)实现方式。


图2:利用Cypress公司的Astoria器件实现西桥的方法。

使用一个“与电脑设计中用到的南桥相似特性和目标”的西桥接口可以支持多个处理器接口,例如SRAM、ADMUX、SPI和NAND,并支持来自任何供应商、ECC为4比特的多达16个SLC或MLC NAND器件。

设计师因此能够灵活地在密度方面作出选择,并能随时改变NAND供应商,只需很少甚至不用修改微处理器上运行的软件。使用一个外部NAND控制器还具有其他好处。

例如,支持高速USB接口的西桥可以将主处理器旁路掉,并在便携式媒体播放器或手机等应用中提供从PC到海量存储器的直接路径,从而实现最佳的侧边加载性能。如果系统微处理器仅限于SDIO接口的话, 对SD、MMC和SDIO接口的支持还能够帮助设计师连接SDIO类型的器件,例如WiFi或蓝牙。

当考虑系统的NAND预算的各种要求(比如密度、成本、尺寸和灵活性)时,设计师有好几种NAND实现选项,它们各有优劣。如果系统微处理器有内置的SLC或MLC控制器,就不需要外部器件或逻辑。

否则受控NAND方法也不错,因为它由NAND供应商执行封装,同样不需要外部逻辑或芯片。然而,为了获得最大的灵活性,开发商可以利用外部NAND控制器来支持所有的NAND类型和偏好。这种方法还能提供性能和接口等方面的其他好处,但是需要外部芯片。

你可能感兴趣的:(Nand Flash进阶)