存储测试系统中FLASH的存储可靠性技术研究

高阳+王代华+王晓楠



摘 要: NAND FLASH存储器具有非易失性、存储容量大和读写速度快等优点,在存储测试领域的应用越来越广泛。由于NAND FLASH存储器中不可避免会出现无效块,传统的管理方法是将无效块映射表存放在FLASH存储器中,可靠性低,对数据存储速度和可靠性都会造成不利影响。针对这些问题,提出了基于外置存储数据位的无效块快速检索架构,将无效块映射表存放在可靠性高的铁电存储器中;引入计算机网络中的滑动窗口原理,建立了基于滑动窗口的无效块预匹配机制,在不影响FLASH存取速度的情况下可无时延地生成有效块地址。经分析和论证,这种架构对NAND FLASH存储数据的可靠性和存取速度有很大的提升,提高了存储测试系统的整体性能。
关键词: NAND FLASH; 无效块管理; 存储测试; 铁电存储器
中图分类号: TN911?34; TM932 文献标识码: A 文章编号: 1004?373X(2017)18?0131?04
Research on stored reliability technology of FLASH in storage testing system
GAO Yang, WANG Daihua, WANG Xiaonan
(MOE Key Laboratory of Instrumentation Science and Dynamic Measurement, North University of China, Taiyuan 030051, China)
Abstract: The NAND FLASH has versatile features such as nonvolatile, large storage capacity and fast read?write speed, and is widely used in the field of stored measurement, but the low reliability of the invalid block mapping table has a bad influence on storage speed and reliability because invalid blocks may ineluctably appear in NAND FLASH memory and the traditional invalid block management methods put the table in the FLASH memory. For these problems, invalid block information fast retrieval architecture based on external storage data bits is proposed, with which the invalid block mapping table can be put in high?reliability FRAM. The sliding window principle is imported into computer network to establish an invalid block pre?matching mechanism based on the sliding window, by which the effective block address can be generated without delay while FLASH storage access speed does not be affected. The analysis and argument results indicate this architecture can improve the reliability and access speed of NAND FLASH stored data greatly, and the overall performance of storage testing system.
Keywords: NAND FLASH; invalid block management; storage testing; FRAM
存儲测试特指在恶劣环境和紧凑空间下完成的高可靠性动态参数测试,用于实时、高速地采集和记录被测对象的数据信息[1?3]。随着采集数据精度的提高以及记录时间的延长,需要存储的数据量急剧增大。同时,存储测试设备大多数情况下工作在极为恶劣的环境中,强烈的冲击、持续的高温以及设备碰撞时产生的高幅值的应力波可能会引起设备内部电路板的破坏、电子元件的变形等,这些现象都会造成数据存储模块功能的失效,导致数据不能正常回读[4]。NAND FLASH存储器具有功耗低、无噪声、重量轻、体积小、抗振动能力强、工作温度范围宽等优点,广泛地应用在高性能的存储测试系统中[5?6]。NAND FLASH存储器记录系统,在温度变化大、振动频繁、写入速率高、数据记录量大、对体积、功耗、重量以及发热量要求苛刻的恶劣环境中,测试系统仍然可以可靠工作。然而,由于生产工艺和降低生产成本的原因,NAND FLASH在出厂时就含有无效块,并且无效块的数量会随着使用次数逐渐增加,由此引发数据丢失[7]。为了更好地使用NAND FLASH存储器,本文针对存储器内部无效块问题展开研究,设计了相应的无效块管理方案,实现了识别和管理无效块,防止了数据的误读写。同时将无效块表存放在铁电存储器中,提高了系统的整体可靠性。
1 NAND FLASH内部组织结构
在研究如何使用NAND FLASH之前,首先要对NAND FLASH的结构和特性进行详细了解。本文以三星公司生产的K9WBG08U0M SLC NAND FLASH芯片为例进行分析,K9WBG08U0M的内部存储阵列组织如图1所示。
NAND FLASH存储器容量如下所示: [1 Page=4 KB+128 B1 Block=4 KB+128 B×64 Pages=256 KB+8 KB]
[1 Devices=4 KB+128 B×64 Pages×8 192 Blocks =16 896 Mb]
该芯片的总容量为16 896 Mb,共有8 192个块(即213),块间寻址需要13位地址线;每个块有64页(即26),页间寻址需要6位地址线;每页容量为(4 K+128)B(即212+27)。因此页内寻址需要13位地址线,其中128 B为扩展存储区,用来存储该页的无效块信息、ECC信息以及其他自定义信息。每片FLASH存储器的有效容量为8 192 Block×64 Page/Block×4 KB/Page=2 048 MB,寻址需要32位地址线。
2 NAND FLASH无效块管理
NAND FLASH存储器由于目前制作工艺的缺陷和节约生产成本的需要,在出厂时都含有无效块,并且无效块的数量会逐渐增加。因此基于NAND FLASH建立存储测试系统就需要制定相应的无效块管理方案,防止对无效块进行读/写操作。管理方案主要包括对无效块的识别和管理[8?9]。
2.1 无效块识别
NAND FLASH厂家会在每个块的特定页中存储一个无效块标志位。不同厂家不同型号的无效块标志位的存储位置可能不同。一般规定,当标志位为“FFh”时,表示此块为正常块,当标志位为非“FFh”时,表示此块为无效块。K9WBG08U0M的无效块标志放置在扩展区第1块的第1页和第2页中。
无效块识别的首要一步是无效块扫描,无效块扫描的本质是读取块中的头两页,判断其标志位是否是“FFh”,若是,则将其加入到无效块列表中;若不是,则累加块地址,直到读出存储器中所有块是否有效的标志位,从而建立该存储器的无效块列表。图2为无效块扫描流程图。
2.2 无效块管理技术
目前常用的无效块管理方法有以下两种:
(1) 无效块跳过法。该方法需要在运行前先建立一个无效块信息标记表,运行时将待操作块地址与标记表比对,如果当前待操作是无效块则跳过该块,操作块地址累加至下一块,并继续与标记表比对;如果在使用过程中检查出现无效块,则将数据存储在无效块的相邻有效块里[10?11]。这种方法实现起来简单,一般适用于顺序存储的情况,但不能实现无效块的透明化管理。
(2) 块保留区替换法。该方法同样要在进行无效块管理之前建立一个无效块信息標记表。这种方法将所有块区分为数据块区和保留块区;数据块区用于正常的数据存储,保留块区作为数据块区产生无效块后的备份存储区。当NAND FLASH存储器在使用过程中产生了无效块就将该无效块地址映射到保留块区的有效块地址上。保留块区替换法中数据块区和保留块区的起始位置和数量必须明确给出。这种方法实际上是两个区物理地址之间的替换,十分便于修改。以上两种方法均需要建立一个逻辑地址和无效块地址映射的信息标记表,并存放在FLASH存储器的有效块中。由此可见,无效块地址映射表是整个存储器中无效存储单元的“身份证”,映射表自身的稳定性对整个测试系统的存储安全性至关重要。然而,存放地址映射标记表的有效块经过一定次数的擦写操作后有可能变成无效块,映射表存放的可靠性低[12]。并且随着存储器使用次数的增长,映射表会日益冗杂,导致检索时间变长,因此不适合在高速数据采集系统中使用。
2.2.1 无效块快速匹配架构
为了保证对采集数据的存储可靠性和无效块的快速匹配,本系统拟采用如下架构:首先建立无效块信息标记表(无效块表),无效块对应的标志位用二进制数“1”表示,有效块用“0”表示。这样很大程度上缩小了无效块信息标记表的占用空间。面对有相同存储容量的NAND FLASH存储器,如8 192个存储块,传统的管理技术下建立的无效块表大小为:12 b×8 192×2=12 KB;本系统的无效块表大小为:1 b×8 192=1 KB。更为重要的是无效块表不会随无效块数量的增加而增大,大大缩短了检索时间。
通过控制模块将此表存放在FRAM(铁电存储器)中。FRAM作为一种非易失性存储器,在继承了传统非易失性存储器的优点外,还具有成本低、读写速度快以及可以无限次读写的优点,掉电后可以将数据有效保存10年以上[13],对无效块信息表这类需可靠存储的重要数据而言非常适用。本系统采用CYPRESS公司的16位高速并行存储器FM22L16。无效块扫描模块对NAND FLASH中物理块的扫描结果经过识别后拼接成16位二进制数,随后控制模块将此数作为一次数据写入FRAM中。设计结构如图3所示。
FM22L16有18位地址线,为了缩短检索时间,存储结构如图4所示,NAND FLASH无效块物理地址为17位,在高13位地址前补零,增至18位,作为铁电存储器的地址线;将低4位作为铁电存储器地址中16位数据位的索引位,在16位二进制数据位中将该无效块对应的数据位置“1”,其余位清“0”。例如块地址为“54B0H”~“54B7H”,共17位,地址为“54B3H”的块为无效块,对应的二进制数为“00101010010110011B”。将该块地址的高13位前补零5位为“000000010101001011B”,作为FRAM的写入地址;后4位“0011”对应FRAM数据位“0~15”位中的“2”这一位。将该位置“1”,即FRAM在地址“000000010101001011B”下的8位无效块信息数据为“0000000000000100B”。
这种结构中,由于FRAM和NAND FLASH对于FPGA是并行的,可以根据NAND FLASH的物理地址实时地匹配到FRAM中的地址和无效块信息。相比直接在NAND FLASH中存放并索引无效块表更方便和安全。
2.2.2 基于窗口的无效块预匹配机制
NAND FLASH在操作时的块物理地址要根据无效块表实时生成。如果将铁电存储器中的无效块信息表一次性读到FPGA中会大量占用内部RAM。为了解决这一问题,本文引入计算机网络中的滑动窗口机制。

图4 无效块表数据位结构
计算机网络中的滑动窗口协议表明,在任意时刻发送方都维持着一个连续的允许发送的窗口,当发送方收到接收方回馈的确认信息后,发送窗口向前滑动[14]。接收方可以根据自己对数据处理速度,通过反馈控制发送方的发送速度。滑动窗口能够有效提高数据传输效率,防止拥塞的发生[15]。FRAM存储器相比FLASH存储器,读写速度非常快,FLASH存储器作为地址的接收方,可以无时差地接收有效的块地址。本系统是基于滑动窗口机制的基本原理,结构如图5所示。

图5 滑动窗口预匹配结构
由图5可知,首先在FRAM的无效块信息表上创建一个16位的数据窗口,在系统初始化阶段读取无效块信息中的首位数据,若该位数据为“0”则表示该块为有效块,可以生成一个有效的偏移地址,在对NAND FLASH块进行操作时,控制器根据偏移地址和初始地址生成有效块物理地址,控制存储器进行读写;若为“1”则表示该块为无效块,跳过此块。预匹配模块在收到NAND FLASH发出的忙状态信号后,根据当前的数据窗口生成下一个有效的地址,再和当前物理地址计算出下一个有效块的物理地址。FPGA综合出的内部逻辑电路可以让预匹配模块与FLASH的操作模块并行工作。因此FLASH存储器可以无时延地获得有效块物理地址。
2.2.3 地址映射
上述的结构和机制表明,根据FRAM中的无效块信息表,可以动态无延时地生成逻辑地址与物理地址的映射表。这种方法可以不在FPGA中存储逻辑地址与物理地址映射表,不但可以节省存储空间,而且消除了因加载和查询映射表造成的延时,显著提高了系统性能。图6为无效块表和无效块的对应关系。图7为在本机制下逻辑地址与物理地址映射表的动态产生过程。地址发生器根据FRAM中的无效块表信息和初始地址,动态地产生有效块的物理地址,即动态地产生了逻辑块地址和物理地址的替换映射。
3 实验结果与分析
3.1 实验条件
为了验证快速检索和可靠存储的正确性,搭建硬件试验平台对快速检索架构进行测试。系统使用1片三星K9WBG08U0M,容量为2 GB,含8 192块,每块64页,每页4 KB+128 B。FRAM使用CYPRESS公司FM22L16铁电存储器,容量为4 Mb。FPGA采用Xilinx公司的SPARTAN?6 XC6SLX9芯片,各模块采用VHDL硬件语言设计。
3.2 实验结果与分析
在2.2.1节中提到的地址“54B3H”是实际扫描到的无效块地址。图8为无效块扫描时序采样图。
图8中可以看出在扫描存储器的块地址“00000101010010110011B”(即54B3H)时,第一页的无效块标记位为“11011111B”(即DFH),表明此块为无效块,此时无效块标记(invalid_num)置“1”,发送给FRAM中无效块信息表的地址为“0000000010101001011B”,该地址中的数据位为“0000000000000100B”,即第3块为无效块。
2.2.2节中无效块预匹配机制仿真如图9所示。
由于NAND FLASH存储器中不可能同时存在许多连续的无效块,因此仅在仿真软件中模拟给出连续的无效块数据以验证无效块预匹配机制的可行性。预匹配地址为“000000010101001011B”(即54BH),无效块信息表中的16位数据为“0010010000100100”,即第14,11,6,3块为无效块。从图8中可以看出,在窗口中遇到值为“1”的数据位时,自动跳过该块,同时无效块提示信号block_signal跳变为“1”。
4 结 论
NAND FLASH的性能发挥始终受到无效块问题的限制。本系统用硬件方式实现了无效块管理,设计了相应的管理方案,实现了基于位索引的无效块信息快速检索结构,提出了基于外置存储数据位的无效块快速检索架构,结合了安全性能更高的铁电存储器,保障了存储测试中的数据存储可靠性和读/写速度,提高了存储测试系统工作在各种恶劣环境下的适应性。
注:本文通讯作者为王代华。
参考文献
[1] 王代华,宋林丽,张志杰.基于ICP传感器的存储式冲击波超压测试系统[J].传感技术学报,2012,25(4):478?482.
[2] 安建军,张志杰,王文廉.爆炸冲击波现场存储测试技术的研究[J].科技信息,2006(12):100.
[3] 马铁华,祖静.冲击波超压存储测试技术研究[J].仪器仪表学报,2004,25(z1):134?135.
[4] 徐鹏,范锦彪,祖静.高g值冲击下存储测试电路模块缓冲保护研究[J].实验力学,2005,20(4):610?614.
[5] 舒文丽,吴云峰,赵启义,等.NAND FLASH存储的坏块管理方法[J].电子器件,2011,34(5):580?583.
[6] 杨博,李波.基于NAND FLASH的嵌入式系统启动速度的研究[J].计算机测量与控制,2010,18(8):1869?1871.
[7] 赵忠文,王魁.基于NAND FLASH的高速大容量固态记录器设计[J].计算机工程与应用,2009,45(专刊):323?326.
[8] GAL Eran, TOLEDO Sivan. Algorithms and data structures for FLASH memories [J]. ACM computing surveys, 2005, 37(2): 138?163.
[9] KIM J, KIM J M, NOH S H, et al A space efficient flash translation layer for compact flash systems [J]. IEEE transaction on consumer electronics, 2002, 48(2): 366?375.
[10] 张胜勇,高世杰,吴志勇,等.基于FPGA的NAND FLASH坏块处理方法[J].计算机工程,2010,36(6):239?240.
[11] MYERS D. On the use of NAND FLASH memory in high?performance relational databases [D]. USA: MIT, 2007.
[12] 徐永刚.基于NAND FLASH的嵌入式图像记录技术[D].北京:中国科学院,2013:46?48.
[13] 王炼红,章兢,全惠敏.FRAM在DSP开发系统中的应用[J].微计算机信息,2006,22(17):159?161.
[14] 黄远峰,宗平.基于UDP的滑动窗口协议的设计与实现[J].南京邮电大学学报(自然科学版),2007,27(4):80?84.
[15] 王栩,李建中,王伟平.基于滑动窗口的数据流压缩技术及连续查询处理方法[J].计算机研究与发展,2004,41(10):1639?1644.