|
NAND FLASH开始广泛应用于星载存储器,针对FLASH的数据高效管理成为该类存储器研究的重要组成部分。本文以商用文件系统YAFFS2为基础,结合空间应用的数据存储特点,引入文件系统的概念对存储器数据进行管理,制定了针对星载存储器的数据管理方案,搭建了一个实际的星载存储器对相应的管理方案进行了验证。
1. 引言
在航天航空任务中,数据存储占有重要的地位,高可靠的大容量数据存储设备是卫星上 的关键设备之一。由于半导体存储芯片具有高集成度、高存储密度、低功耗、防腐防震等突 出优点,因而使用半导体存储芯片作为数据存储介质成为星载数据存储设备的主流设计方案。NAND FLASH 作为一种优秀的半导体存储芯片,同时具有掉电非易失的特性,而且它强调降低每比特数据的存储成本,提供更高的存储密度和更好的性能,是理想的数据存储介 质。但NAND FLASH 自身具有一些特性,使得它不能像普通磁盘那样进行操作[1],因而需 要设计专门的文件系统来进行基于NAND FLASH 存储器的管理,提高存储器的可靠性和易 用性[2]。
本文的组织方式如下:第二节研究了空间应用的数据存储特点,并提出了相应的星载存储器硬件设计结构。第三节具体分析了YAFFS2[3]各个关键算法的优缺点,并针对空间应用提出了相应的修改方案。第四节实现了一个具体的空间存储器系统,对第三节中的算法进行 了实验验证。最后第五节是对全文的总结。
2. 星载存储器硬件结构
2.1 空间任务的数据存储特点
随着对地观测技术的发展,对地观测设备对星载存储设备的要求越来越高。首先,数据存储容量的要求逐步提高,各种观测设备精度不断增加,工作寿命不断延长,随之产生的数据量急剧增加,需要更高容量的存储设备才能满足要求;其次,数据存储速率的要求较高,且需满足实时性数据存储功能。空间飞行器往往需要同时执行多种任务,产生高速的实时数据流,因而实时高效的数据处理能力是存储器管理的重要能力之一;最后,数据存储应具有很高的可靠性,由于空间环境的恶劣性,空间电磁波或者粒子辐射会造成存储数据的损害,因而必须提供可靠的数据保护。
2.2 硬件结构的设计
根据空间数据存储的特点,设计大容量存储器硬件结构如图 1 所示。
图 1 存储器硬件结构图 由于单片FLASH 存储容量有限,因而采用多片FLASH 组成存储阵列,提升存储器的总容量。
为了提高存储速率,引入并行扩展和流水线操作的概念,将存储阵列划分为流水线组,每组多片芯片构成并行结构。并行扩展的概念较为直接,由于单片FLASH 芯片的数据总线 位宽较小,因而将多片芯片的IO 端口进行并行扩展,而所有控制信号直接连接在一起,这 样每组芯片可以看作一个整体进行控制,实现了数据的并行操作。并行N 片的宽总线结构数据处理能力可以达到单片芯片的N 倍。另外由于FLASH 芯片为串行操作接口,数据的写入需要经过数据加载、芯片自动编程、状态读取的过程才能执行下一次的写入操作,因而写入性能较差。考虑到芯片自动编程过程的时间较长且不需要外部干预,可以借鉴流水线的设计思想,利用这段空闲时间对其他组芯片进行控制,提高数据吞吐率。流水线操作示意图如 图2 所示。假设数据加载时间为Tload,芯片自动编程时间为Tprog,状态读取时间为 Tcheck,采用M 级流水线完成一次流水操作的总时间不超过(Tload+Tcheck)*M+Tprog, 相比不采用流水线操作缩短了(M-1)*Tprog 时间,提高了数据吞吐率。具体的总线宽度以及 流水线级数设置可以根据具体应用需求确定。
最后,为了提高数据的可靠性,在 FLASH 控制模块中增加数据检错纠错处理模块。
3. YAFFS2 分析与改进
YAFFS2 具有优良的文件管理特性,但是毕竟YAFFS2 是针对商用领域设计的文件系统,对于空间应用并没有特殊考虑,直接应用有其局限性。本节针对空间存储器的特点,对 YAFFS2 不适合空间应用的方面提出具体的修改方案,使得修改后的文件系统能够满足空间 数据存储的需求。
3.1 硬件结构适应性
YAFFS2 文件系统只是针对单片FLASH 设计的系统,对于FLASH 存储阵列的结构没有 考虑,因而不适宜于直接在阵列结构上面使用,需要进行修改。
并行结构的处理比较简单,将同组内的所有芯片当作整体统一进行处理即可。这样的设计简单,但也会带来一些额外的问题需要注意。比如当某一片芯片出现坏块的时候,组内其他芯片相应块也需标记为坏块,造成一定的存储空间浪费。另外读取该组状态的时候需要同时兼顾并行多片的状态。这些问题需要在文件系统设计中进行相应的修改。 流水线的设计较为复杂。由于YAFFS2 的存储区管理是基于单片芯片的,因而在多级流 水线结构中,每级流水线需要单独维护自己的存储区,比如存储块的分配、坏块的标记等。数据写入的时候首先需要选择流水线级,在流水线级内部再采用现有的存储区管理方式。
3.2 坏块管理策略
FLASH 坏块的类型可以分为初始坏块和使用时产生坏块两类,不同芯片厂家采用不同 的方式标示初始坏块,用户可以根据具体的芯片手册进行坏块识别。三星NAND FLASH 通 过在每块的第一页或第二页的第2048 字节写入非0xFF 来标示初始坏块,新产生的坏块则 需要用户自己进行记录。
坏块管理的首要任务就是对坏块进行识别和标记,并且对于坏块尽量不再进行擦写操 作。YAFFS2 文件系统要求底层FLASH 驱动提供坏块识别和标记的函数,文件系统对这部分 功能并没有实现,也没有要求具体的实现方式。考虑到存储区的并行结构特点,本方案对新产生的坏块也采用在该块第一页的第2048 字节写入非0xFF 的方法进行标记。由于写入或者擦除是对组内并行多片芯片同时进行操作,而这些芯片同时发生坏块的概率可以认为接近于0,因而对于坏块的标记总能够成功写入某个芯片。该方法将新产生坏块和原始坏块进行了统一,设计简单并且不需要额外的存储空间来存储坏块表,缺点是对于新产生的坏块还有 一次写入操作。
坏块管理的另外一个任务就是决定何时对新产生的坏块进行标记。YAFFS2 采用产生即标记的策略,对于新产生的坏块马上进行标记处理。该方法可以保证坏块表的实时更新,是采用额外存储介质保存坏块表的比较理想的方案。但是本方案的坏块标记采用直接写入 FLASH 的策略,实时标记坏块会降低系统的数据处理能力,有可能造成数据的丢失。因而本方案不对坏块进行实时标记,而是首先在内存中将新产生坏块记录下来,等到系统空闲的 时候才进行坏块标记。
3.3 垃圾回收策略
NAND FLASH 只能在空闲块中写入数据,对于已经使用过的块必须进行擦除使之成为空闲块才能再次使用,这个过程称为垃圾回收。垃圾回收涉及到对块的擦除操作以及块内有效数据页的重新写入,对系统性能影响较大,因而合适的回收时机与策略是垃圾回收的关键。 YAFFS2 采用的垃圾回收策略为:每次在数据写入之前判断当前可用的空闲块,如果可用空闲块数量较少,则马上进行垃圾回收;如果空闲块较多,则采用松弛的回收算法,写多次再 进行一次垃圾回收。YAFFS2 垃圾回收以剩余空闲块数目作为是否回收的依据,而没有考虑 数据流存储的特点,因而在数据写入的时候经常会碰到需要垃圾回收的情况,导致数据存储速率的大幅下降。针对不同的应用环境,还存在一些其它的垃圾回收算法[4]。这些算法的共同特点是尽量寻找合适的回收时机减小对数据写入的影响,同时选择合适的回收策略提高系 统性能,但这些算法策略过于复杂,不适合空间应用。
考虑到星载存储器运行模式及卫星对数据实时存储要求苛刻的特点,本方案不在写入数据时进行垃圾回收,而选择在系统空闲时由用户主动进行垃圾回收。当容量不足的时候文件系统给出提示信息,告知用户需要进行垃圾回收,用户也可以随时查询文件系统的状态信息。该方案设计最为简单,对数据写入的影响也最小,只是每当系统容量不足的时候需要用户主 动进行垃圾回收。
4. 系统实现与测试
以某星载存储器项目为背景,本文实现了一个如图 1 所示结构的星载存储器演示系统。 该系统采用Samsung K9F1G08U0A 芯片组成4*4 的存储阵列作为存储空间,采用Xilinx xc2vp40 FPGA 芯片作为控制芯片,同时选用FPGA 内嵌软核MicroBlaze 完成CPU 功能 [5]。FPGA 同时负责完成FLASH 驱动层的功能,降低软件的控制复杂度,提高FLASH 的访 问效率。对于输入输出数据流的控制也使用FPGA 逻辑完成。本系统利用FLASH 存储芯片 和FPGA 控制芯片实现了一个SOPC 的存储系统,极大地简化了存储器的硬件结构,并且 具有很大的灵活性。
演示系统采用 2 路SPI 实时视频流模拟数据输入,通过自定义协议传输存储数据至地面 数据接收卡实现数据输出。由于原始YAFFS2 文件系统只能对单片FLASH 进行管理,因而 首先在单片FLASH 上对原始YAFFS2 进行测试,然后修改FLASH 底层驱动使得YAFFS2 能 够管理4 片并行存储结构,最后对实际的修改后方案进行测试。测试结果显示,采用原始 YAFFS2 文件系统的数据实时输入速率小于12.5Mbps,改进为并行结构后数据输入速率也不会超过50Mbps,否则会造成输入数据的部分丢失。而采用本文改进方案的设计,实时数 据输入速率达到200Mbps,数据存储稳定可靠。
上述测试结果表明,改进后的方案不但很好地实现了数据的文件化管理,数据实时输入 速率也比原始YAFFS2 系统至少提高了16 倍。该系统的数据指标已经能够满足部分星载存 储器的要求,为了进一步提高数据处理能力,可以考虑增加并行的芯片数目以及采用多级流 水线的设计结构。
5. 结束语
以 NAND FLASH 为存储介质的大容量存储器在空间应用中得到越来越广泛的重视,但是由于FLASH 使用的特殊性,目前国内的FLASH 星载存储器普遍尚未采用文件系统进行数据管理,而是采用直接访问存储芯片的方式,数据管理复杂且使用缺乏灵活性。本文以商用 文件系统YAFFS2 为基础,针对空间应用数据存储的特点,提出了YAFFS2 文件系统的改进方案,并且实现了一个实际的星载存储器系统,对改进后的方案进行了验证。实验表明,改进后的文件系统很好地完成了数据的文件化管理,并且满足了空间应用大容量、高实时数据 率存储的要求。
发布者:博子 |
|