关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于FLASH星载存储器的高效管理研究

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

作者: 时间:2010-02-25 来源:网络 收藏

为了提高存储速率,引入并行扩展和流水线操作的概念,将存储阵列划分为流水线组,每组多片芯片构成并行结构。并行扩展的概念较为直接,由于单片芯片的数据总线 位宽较小,因而将多片芯片的IO 端口进行并行扩展,而所有控制信号直接连接在一起,这 样每组芯片可以看作一个整体进行控制,实现了数据的并行操作。并行N 片的宽总线结构数据处理能力可以达到单片芯片的N 倍。另外由于芯片为串行操作接口,数据的写入需要经过数据加载、芯片自动编程、状态读取的过程才能执行下一次的写入操作,因而写入性能较差。考虑到芯片自动编程过程的时间较长且不需要外部干预,可以借鉴流水线的设计思想,利用这段空闲时间对其他组芯片进行控制,提高数据吞吐率。流水线操作示意图如 图2 所示。假设数据加载时间为Tload,芯片自动编程时间为Tprog,状态读取时间为 Tcheck,采用M 级流水线完成一次流水操作的总时间不超过(Tload+Tcheck)*M+Tprog, 相比不采用流水线操作缩短了(M-1)*Tprog 时间,提高了数据吞吐率。具体的总线宽度以及 流水线级数设置可以根据具体应用需求确定。

最后,为了提高数据的可靠性,在控制模块中增加数据检错纠错处理模块。

图 2 流水线操作示意图

3. YAFFS2 分析与改进

YAFFS2 具有优良的文件管理特性,但是毕竟YAFFS2 是针对商用领域设计的文件系统,对于空间应用并没有特殊考虑,直接应用有其局限性。本节针对空间的特点,对 YAFFS2 不适合空间应用的方面提出具体的修改方案,使得修改后的文件系统能够满足空间 数据存储的需求。

3.1 硬件结构适应性

YAFFS2 文件系统只是针对单片FLASH 设计的系统,对于FLASH 存储阵列的结构没有 考虑,因而不适宜于直接在阵列结构上面使用,需要进行修改。

并行结构的处理比较简单,将同组内的所有芯片当作整体统一进行处理即可。这样的设计简单,但也会带来一些额外的问题需要注意。比如当某一片芯片出现坏块的时候,组内其他芯片相应块也需标记为坏块,造成一定的存储空间浪费。另外读取该组状态的时候需要同时兼顾并行多片的状态。这些问题需要在文件系统设计中进行相应的修改。 流水线的设计较为复杂。由于YAFFS2 的存储区管理是基于单片芯片的,因而在多级流 水线结构中,每级流水线需要单独维护自己的存储区,比如存储块的分配、坏块的标记等。数据写入的时候首先需要选择流水线级,在流水线级内部再采用现有的存储区管理方式。

3.2 坏块管理策略

FLASH 坏块的类型可以分为初始坏块和使用时产生坏块两类,不同芯片厂家采用不同 的方式标示初始坏块,用户可以根据具体的芯片手册进行坏块识别。三星NAND FLASH 通 过在每块的第一页或第二页的第2048 字节写入非0xFF 来标示初始坏块,新产生的坏块则 需要用户自己进行记录。

坏块管理的首要任务就是对坏块进行识别和标记,并且对于坏块尽量不再进行擦写操 作。YAFFS2 文件系统要求底层FLASH 驱动提供坏块识别和标记的函数,文件系统对这部分 功能并没有实现,也没有要求具体的实现方式。考虑到存储区的并行结构特点,本方案对新产生的坏块也采用在该块第一页的第2048 字节写入非0xFF 的方法进行标记。由于写入或者擦除是对组内并行多片芯片同时进行操作,而这些芯片同时发生坏块的概率可以认为接近于0,因而对于坏块的标记总能够成功写入某个芯片。该方法将新产生坏块和原始坏块进行了统一,设计简单并且不需要额外的存储空间来存储坏块表,缺点是对于新产生的坏块还有 一次写入操作。



关键词:FLASH星载存储器

评论


相关推荐

技术专区

关闭