NAND Flash控制器功能

本文介绍了NANDFlash控制器的功能,包括损耗均衡、坏块管理和纠错码(ECC)。损耗均衡通过平衡各区块的写入次数来延长使用寿命,坏块管理确保了数据的安全存储,而ECC则用于检测和修正数据位错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NAND Flash控制器功能

Nand Flash控制器通常提供损耗均衡,纠错码(ECC)和坏块管理功能。
其实现方式可以用软件,硬件或两者的组合来实现。

通常,Nand Flash控制器位于主机和NAND闪存设备之间,并控制对设备的访问。

正是因为如此,为了简化Nand Flash控制器设计,eMMC基于此而来,将Nand Flash控制器和存储器设计在一起,简化控制器额外的程序操作,提高数据速率。

一、坏块管理

随着Nand Flash使用,NAND闪存阵列的组成块的存储器单元可能磨损。所有Flash技术都是如此,强大的系统需要将块故障考虑在内并使其适当调整。

1、坏块初始化

大多数NAND闪存设备,如大容量存储器的各种类型,出厂时都在存储器阵列中包含一些初始坏块;这些块通常被制造商标记为坏,表明它们不应在任何系统中使用。

NAND闪存器件数据表提供坏块标记的位置。工厂测试在最坏情况下执行,那些未通过此测试的块被标记为坏块。如果在系统中使用出厂标记的坏块,则它可能看起来正常运行,但可能导致其他好块失败或产生其他系统错误。

如果客户擦除了出厂标记的坏块,则标记也会被删除。为避免丢失此信息,最好在发出任何PROGRAM或ERASE命令之前对坏块执行初始读取并创建坏块表。
在创建原始坏块表之后,必须对其进行维护和添加,因为附加块随着使用而变坏。

2、块退化和跟踪

由于NAND闪存设备中的好模块会降级和磨损,因此不仅要跟踪初始的坏块-工厂标记的坏块,还要跟踪在正常操作设备中出现错误的块。

块失败的类型:

当NAND闪存设备运行期间发生故障时,它们被归类为永久或临时故障。
通过适当的NAND Flash设计实践可以最大限度地减少临时故障。如果发生这些故障,则可以恢复存储器阵列的故障位置;不需要将块添加到坏块表中。
要从此类错误中恢复,请擦除发生错误的块,并将数据重新编程到该块。

临时错误以多种形式发生:

  1. 程序干扰:
    当在PROGRAM操作期间改变不打算编程的一个或多个位时,发生编程干扰错误。
    向页面增加部分页面程序的数量可能会加剧此错误。程序干扰错误可能会显示在正在编程的页面上或同一块内的其他页面上。
  2. 阅读打扰:
    在READ操作期间改变一个或多个位时发生读取干扰错误。
    在正在读取的块内发生读取干扰错误,但是在正在读取的页面之外的页面上发生读取干扰错误。在包含这些页面的块的ERASE命令之前,在各个页面上执行大量(数十万或数百万)READ操作会加剧此错误。
  3. 过编程:
    当块内位线上的存储单元阈值栅极电压变得太高时,可能发生过编程。
    这可以防止正确读取存储器单元并且可能导致给定块内的后续页面的编程不正确。
  4. 数据丢失:
    在延长的存储期间,一些存储器单元可能通过改变充电增益或电荷损失而丢失数据。高ERASE / PROGRAM循环计数可以通过在存储单元的栅极氧化物中诱导陷阱电荷来加剧数据丢失,从而有效地磨损栅极氧化物。
二、磨损均衡

因为NAND闪存单元最终会磨损,强大的NAND Flash操作应包括耗损均衡策略。

磨损均衡用于在每次编程文件时将逻辑存储器地址转换为不同的物理存储器地址。该操作由连接到NAND闪存设备的控制器监视和实现。磨损均衡扩展NAND闪存单元在整个存储器阵列范围内的使用,均衡使用所有内存单元,并有助于延长设备的使用寿命。

损耗均衡算法确保对每个块的所有可用写周期进行相等的使用。

简单理解就是不能每次存数据在一个Block里面的,因为半导体器件都会有损耗,所以存数据时可以每次换着Block存储,就是“雨露均沾”的意思,不能老薅一个羊身上的羊毛。

三、Error Correction Code-ECC

在NAND闪存设备操作期间或长时间不活动期间可能会发生位错误,强制使用ECC。

“错误”指的是位反转,一般是浮栅极的电子飘移导致电压偏移,使得从1变为0;或者读取或者写入错误。

ECC的特征通常在于每528字节数据扇区检查的代码可以校正的位数。(数据扇区通常为528字节,但在某些设备中可能会有所不同)
例如,如果控制器具有1位ECC,则能够纠正每个数据扇区中的一个1位错误。

当数字数据存储在非易失性存储器中时,拥有一种可以检测并纠正一定数量错误的机制至关重要。纠错码(ECC)以这样的方式对数据进行编码,使得解码器可以识别和纠正数据中的错误。

通常,通过向它们添加多个冗余位来编码数据串。当重建原始数据时,解码器检查编码的消息以检查任何错误。

请参考如下Micro文章

TN-29-63:Error Correction Code (ECC) in SLC NAND Introduction

TN-29-61: Wear Leveling in NAND Flash Memory Introduction

2019-07-22良人当归即好

移动电话的功能日益丰富,其对系统中数据存储容量的需求正在快速增长。 NAND Flash具有速度快、密度大、成本低等特点,在各种数码产品中得到了广泛 应用,在各种片上系统芯片中(SOC)集成NAND Flash控制器正成为一种趋势。 本文讨论了Flash Memory的两种主流实现技术即NAND Flash和NOR Flash 的特点和区别,分析了市场上存在的NAND Flash的典型规格及其存储结构特点, 阐述了不同NAND Flash器件一些通用的存取操作方式,近一步分析了进行这些 存取操作所必须满足的时序规范,在此基础上,结合某公司手机SOC芯片的设计 需求,提出了一种基于AMBA总线的NAND Flash控制器实现方案,对该实现方 案进行了充分的验证工作。 本文所提出的控制器的实现方式,可以支持市场上存在的两种典型规格的 NAND Flash器件,可同时外接1至4个Flash芯片,通过可配置的控制方式可灵 活的对不同存取速度的器件予以支持,具备良好的可扩展性。在控制器的主控逻 辑设计中,采取了“块读’’和“块写”方式实现对大页器件的读页和写页操作, 这种方式有效减小了控制器中用做数据缓存的buffer大小,降低了芯片面积。针 对NAND Flash在使用过程中可能出现的位反转现象,在控制器的设计中加入了错 误检测和纠错功能。论文深入分析了ECC(Error Checking and Correcting)算法,讨 论了ECC算法的硬件实现和优化方法。在不影响对存储器读写效率的前提下,实 现对数据的存取进行实时的高速检错和纠错,为提高NAND Flash的可靠性提供了 硬件上的支持。 对控制器的验证采用了模拟验证和FPGA验证两种方式。在模拟验证阶段对 控制器的所有功能点进行全面验证,结果正确后,在Xilinx公司的Vertex4开发板 上对控制器进行了FPGA验证。结果表明控制器能正确控制对于NAND Flash的各 种存取操作,工作完全正常。 本文设计验证的NAND Flash控制器即将应用于某公司的SOC手机芯片,提 出的控制器实现方案对NAND Flash控制系统的设计优化具有普遍适用性,论文研 究的工程实用价值大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值