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 控制模块中增加数据检错纠错处理模块。
图 2 流水线操作示意图
3. YAFFS2 分析与改进
YAFFS2 具有优良的文件管理特性,但是毕竟YAFFS2 是针对商用领域设计的文件室内卫星接收器,对于空间应用并没有特殊考虑,直接应用有其局限性。本节针对空间存储器的特点,对 YAFFS2 不适合空间应用的方面提出具体的修改方案,使得修改后的文件室内卫星接收器能够满足空间 数据存储的需求。
3.1 硬件结构适应性
YAFFS2 文件室内卫星接收器只是针对单片FLASH 设计的室内卫星接收器,对于FLASH 存储阵列的结构没有 考虑,因而不适宜于直接在阵列结构上面使用,需要进行修改。
并行结构的处理比较简单,将同组内的所有芯片当作整体统一进行处理即可。这样的设计简单,但也会带来一些额外的问题需要注意。比如当某一片芯片出现坏块的时候,组内其他芯片相应块也需标记为坏块,造成一定的存储空间浪费。另外读取该组状态的时候需要同时兼顾并行多片的状态。这些问题需要在文件室内卫星接收器设计中进行相应的修改。 流水线的设计较为复杂。由于YAFFS2 的存储区管理是基于单片芯片的,因而在多级流 水线结构中,每级流水线需要单独维护自己的存储区,比如存储块的分配、坏块的标记等。数据写入的时候首先需要选择流水线级,在流水线级内部再采用现有的存储区管理方式。
3.2 坏块管理策略
FLASH 坏块的类型可以分为初始坏块和使用时产生坏块两类,不同芯片厂家采用不同 的方式标示初始坏块,用户可以根据具体的芯片手册进行坏块识别。三星NAND FLASH 通 过在每块的第一页或第二页的第2048 字节写入非0xFF 来标示初始坏块,新产生的坏块则 需要用户自己进行记录。
坏块管理的首要任务就是对坏块进行识别和标记,并且对于坏块尽量不再进行擦写操 作。YAFFS2 文件室内卫星接收器要求底层FLASH 驱动提供坏块识别和标记的函数,文件室内卫星接收器对这部分 功能并没有实现,也没有要求具体的实现方式。考虑到存储区的并行结构特点,本方案对新产生的坏块也采用在该块第一页的第2048 字节写入非0xFF 的方法进行标记。由于写入或者擦除是对组内并行多片芯片同时进行操作,而这些芯片同时发生坏块的概率可以认为接近于0,因而对于坏块的标记总能够成功写入某个芯片。该方法将新产生坏块和原始坏块进行了统一,设计简单并且不需要额外的存储空间来存储坏块表,缺点是对于新产生的坏块还有 一次写入操作。







