自问世以来,NAND闪存对ECC(纠错码)纠错能力的要求越来越高。虽然这不是一个新问题,但是支持最新的多层单元(MLC)架构和每单元 存储 三位数据(three-bit-per-cell)技术所需的ECC纠错能力让系统人员越来越难以应付。
过去,ECC一直被用于提高NAND闪存子系统的整体数据可靠性。但是,随着NAND单元不断缩小,每个浮栅内贮存的电子数量越来越少。因此,为弥补更小的 存储 单元所产生的更高的位误码率,我们必须大幅提高ECC纠错能力,以维持所需的系统可靠性。
随着系统对ECC纠错要求不断提高,实现ECC逻辑所需的逻辑门数量也在增加,同时系统复杂性也随之提高。例如,24位ECC需要大约200,000个逻辑门,而40位ECC则需要大约300,000个逻辑门。据估计,将来先进的ECC算法可能需要近100万个逻辑门(如图1所示)。
很多高性能闪存系统必须使用多通道NAND闪存才能实现理想的性能。在这些系统中,每个通道都有其自己的ECC逻辑。例如,一个10通道固态硬盘(SSD)需要实现10通道的ECC逻辑。假如10路通道中的每一路通道都需要60位ECC,那么仅ECC逻辑就需要300万个逻辑门。
NAND闪存接口选择
1.传统NAND接口
传统的NAND闪存接口是一种异步通信接口,虽然近几年这种接口的速度已提高到50MHz,但是其它特性并没有太大的变化。
几年前,美光(MICron)与其它几家富有远见的公司共同成立了一家NAND闪存组织,旨在简化业界存在的大量时序和指令标准。开放式NAND闪存接口(ONFI)联盟发布了其第一版ONFI 1.0规范,与最初的规范相比,这个接口规范的最大特点是主处理器能够通过电子方式识别所连接的闪存类型,以及其它重要的技术参数,如时序模式、页面大小、块大小、ECC要求等。该特性被所有的ONFI标准继承下来,并且一直是所有ONFI标准的重要内容。
同步NAND接口的开发是ONFI联盟取得的另一个重要成就,这一接口规范又称为ONFI 2。目前,ONFI 2.2规范通过一个DDR源同步接口支持高达每秒20000万次传输(200MT/s)。通电后该接口可用于异步通信模式。但是,对于更高的性能而言,当从异步模式转换到同步通信模式时,主处理器会提前询问闪存设备是否支持更高速的同步通信接口。
2.Direct NAND解决方案
该方案实现通过将NAND闪存芯片直接连接到主处理器或SSD控制器来管理NAND闪存。ECC算法交由硬件处理,而软件通常执行所有的区块管理和损耗均衡功能。初看起来该方案可能并不理想,但考虑到今天的 嵌入式 处理器典型运行速度达到数百兆赫兹,很多甚至超过千兆赫兹,这些高性能处理器能够以更快的速度执行区块管理,并利用确定性多线程技术来提高闪存性能。此外,由于主处理器直接管理闪存设备,主处理器软件可以做出实时决定,这有助于避免因意外断电而造成的风险。
如图2所示,ONFI 2.2接口规范(200MT/s)最多可支持16个标准NAND闪存芯片,典型解决方案通常采用两个8片NAND闪存封装。标准8片100-BallBGA封装含有两条独立的NAND总线(DQ[7:0]1和DQ[7:0]2),每条总线连接4片NAND闪存。闪存控制器通过两个芯片使能信号控制每四片堆叠的裸片。典型设计是把两条数据总线即DQ总线连接到一起,为每个封装提供一条8位数据总线。最高配置由两个内置8片裸片的100-Ball BGA封装组成。为选定一个特定的NAND裸片,每个标准100-Ball BGA封装需要提供四个芯片使能(CE#)控制。因此,为支持这种配置,主处理器或SSD控制器需要提供8个芯片使能信号。
3.ClearNAND解决方案
图3显示了两个不同的系统实现:传统的系统中主处理器或SSD控制器与NAND闪存直接相连;另一个系统则采用ClearNAND闪存芯片。两种方案都采用相同的ONFI硬件接口和相似的100-Ball BGA封装,不同之处是后者将一个薄型控制器与NAND闪存裸片整合在一个多芯片封装(MCP)内。ClearNAND 控制器用于实现MCP封装中NAND闪存所需的ECC算法。由于采用相同的ONFI异步或同步接口,设计人员可以轻松地从标准NAND闪存升级到 ClearNAND闪存。
美光公司的ClearNAND 闪存分为标准型和增强型两个版本。标准型ClearNAND闪存主要用于消费电子设备,可实现所需的ECC功能,并提供便于闪存升级的传统异步型ONFI总线。
增强型ClearNAND闪存能够管理ECC算法,并提供多个对于企业应用颇具价值的关键功能。它还支持ONFI 2.2接口的异步和同步通信标准,可用存储容量高达64GB。
通过改善ECC算法,两款ClearNAND闪存都能够实现下一代NAND闪存所需的ECC纠错功能。这使得设计人员无需反复重新设计电路来支持制造商最新的NAND ECC要求。