微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于FLASH星载存储器的高效管理研究

基于FLASH星载存储器的高效管理研究

时间:01-27 来源:21IC 点击:
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 倍。该系统的数据指标已经能够满足部分星载存 储器的要求,为了进一步提高数据处理能力,可以考虑增加并行的芯片数目以及采用多级流 水线的设计结构。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top