探析NAND闪存中控制器到底有多重要
2018-06-09 18:30 来源:中国闪存网
基于NAND闪存的固态硬盘(SSD)正在取代许多应用中的硬盘驱动器(HDD),尤其是便携式和消费类设备。因为闪存固有的高性能,这种技术也正在进军企业存储领域,同样因为其坚固性(robustness),也得以进军工业应用领域。闪存控制器在这些系统中起着至关重要的作用,能够提供主机和闪存设备之间的物理接口,也可以高效地利用闪存来实现所需的可靠性和性能。
控制器架构
图1: 一个通常的闪存控制器架构
图1所示为一个典型的闪存控制器的简单框图,其中主要包括三个部分:与NAND闪存的接口,与主机系统的接口,以及执行所有管理功能的中央处理器。 ROM只提供初始引导代码,控制器的固件存储在闪存中,因而便于更新升级。选择使用何种CPU是决定控制器性能、功能和功耗的关键。
主机和闪存接口包含用于数据读写的缓冲区。因为主机和闪存采用的速度和数据大小不同,而且主机上的数据在写入之前可能需要重新组织,因而缓冲区是必需的。控制器应该能够透明地交叉访问多个闪存,以达到所需的读写速度。
为了达到要求的性能、可靠性和使用寿命,控制器必须能够管理闪存的许多特性。
地址转换和映射
基于文件系统的扇区大小并使用“逻辑块地址”,主机通常以块为单位写入闪存。控制器必须管理这些传输到闪存存储器页和块的数据,并跟踪主机逻辑地址和闪存中物理地址之间的映射,如图2所示。出于速度考虑,映射信息将保留在RAM中,但需要储存到闪存,以便在断电时能够得以保存。
所使用的映射类型和更新方法将决定性能和坚固性,例如电源意外断开的情况。
图2: 基本的基于块的地址映射
纠错码
与所有存储设备一样,数据读取时可能会出现错误。这些可能是由辐射引起的偶然错误,或者是附近的单元被读取或编程时存储值被扰乱引起的暂时故障,或者是编程单元时的失效。使用闪存时,因为闪存单元的编程/擦除周期有限,这些错误随着时间的推移会变得更加频繁。为此,控制器使用纠错码(ECC)来检测和纠正错误。这意味着当数据写入闪存时,会写入包含ECC的额外字节。为了检查错误,当数据被读取时,ECC被重新计算,并且与存储的值进行比较。通常情况下,允许校正单字节的错误,并且可检测多字节的错误。重复的故障可能表示坏块(bad block)。然后控制器需要跟踪坏块,一面它们被再次使用。
因此,高质量的ECC实施是确保闪存存储器中数据完整性的关键。可以使用的ECC类型有很多,这些都包括非常复杂的数学函数,可以在校正速度和质量、硬件要求和处理性能方面提供不同的权衡。ECC的选择需要与原始误码率和误码分布等闪存的特性相匹配。一个好的控制器需要认真考虑这些因素,并有足够的处理能力来实现最佳的ECC算法。
磨损平衡
为了最大限度地减少闪存单元有限的编程/擦除耐久性的影响,并最大限度地延长闪存的使用寿命,控制器使用磨损平衡(wear levelling)算法来确保所有块的均匀使用。这意味着控制器在写入数据时必须从未使用的块中选择使用最少的页。此外,有几种方法可以用于在有效性和处理性能之间进行不同的取舍。
闪存的一个特点是数据只能写入擦除的页面。因此,如果对小于一页的数据块进行随机写入,则当前在页中的数据可能需要被重新定位到新的已擦除页面。这是产生写入放大的主要原因之一,即闪存的实际写入比主机要求的写入要多。控制器必须确保数据重新定位期间的数据完整性,并需要更新逻辑地址映射。
因为数据是以页的形式写入,但却只能以由多个页面组成的块进行擦除,因此控制器将必须进行垃圾收集(garbage collecTIon)。这需要复制数据以便把已经使用的页整合到块,并释放可被擦除进而重新使用的空白块。垃圾收集的时间和频率需要进行管理,以减少对主机系统性能的影响,还需要确保断电时数据不会丢失。
控制器可以利用闪存中块的超量配置,从而使坏块不会降低闪存的可用容量或寿命。可用的备用块也能够提高垃圾收集和随机写入的性能。
半导体可靠性
系统可靠性的一个重要方面是控制器本身的质量。首先,通过严格的设计和测试流程可以确保设备在特定的环境中可靠地工作。另外,因为半导体对辐射的敏感性,所选择的封装对于最小化α粒子的影响非常重要。同样,封装和互连材料也需要耐受使用期间由温度变化引起的应力。生产测试中使用的方法是加速老化来确认设备能够满足故障率和平均无故障时间(MTBF)的要求。
健康监测
与任何其他存储系统一样,闪存的使用寿命有限。控制器可以监控和记录总的擦除和编程周期次数、坏块和备用块的数量、以及由ECC检测到的错误率等数据,由此可向主机系统和用户提供关于闪存的健康状态信息。这样可以提前预警潜在的故障,以便在发生数据丢失风险之前更换设备。对于通过标准ATA接口连接的SSD设备,可以通过自我监测、分析和报告技术(SMART)协议来报告此类信息。
结论
通过管理数据传输并“隐藏”闪存存储技术的固有缺点,控制器是实现可靠的基于闪存存储的关键组件。要实现消费和企业级,尤其是工业或嵌入式系统中的数据存储所需的性能、可靠性和使用寿命,高质量的控制器至关重要。