宋 琪 ,李 姗 ,朱 岩
(1.中国科学院 空间科学与应用研究中心 北京 100190;2.中国科学院大学 北京 100190)
随着航天任务的不断丰富、航天探测技术的不断提高(如探测器种类增多,相机分辨率提高等),中国空间站等重大战略规划的逐步实施,空间科技数据的采集速度与存储总量需求大幅度攀升,对存储器的容量、吞吐速率、数据管理提出了更高的要求。
目前航天器所携带的固态存储器的基本存储介质以SDRAM和Flash为主,Flash读写速度较SDRAM慢、操作复杂,但因为基础工艺的区别,Flash的存储密度远远超过RAM系列产品,不需要刷新,功耗低,并且拥有非易失存储特性,在重量、功耗、可靠性极其敏感的航天应用上,Flash将保持巨大的生命力和发展潜力。
基于Flash的存储系统主要有固态硬盘和介质直接管理两种方式。前者目前广泛应用在笔记本、服务器等商用领域,在存储设备内部,通过 FTL(flash transition layer,闪存转换层)的转换,可处理SATA命令[1],但在硬件接口及软件系统方面照搬传统磁盘管理技术,对存储特性利用并不充分:硬件SATA接口标准无法满足Flash存储系统性能要求,成为瓶颈;以文件系统为代表的数据管理策略,大都考虑磁盘环境进行优化,Flash的优势无法充分体现。航天级应用需要采用介质直接管理的方式,针对Flash存储特性,从底层进行硬件结构设计,在满足任务的容量、速度、容错等关键需求的同时,尽量降低系统复杂度,逐步实现数据有效管理策略。
本文以 3D-PLUS公司的 NAND型 32Gbits(4G×8)Flash叠装模块作为存储介质为例,介绍Flash存储特性。
该模块由 8片 4G位 (512Mbits×8)SAMSUNG公司的NAND Flash芯片叠装而成,公用对外的8位宽I/O总线。该Flash芯片每2K字节的主存储区(Main Array)外加64字节的空余区 (Spare Array) 组成一页 (Page),64页组成一个块(Block),4096 块组成一个器件(Device)。
由于Flash存储模块的指令与数据公用I/O端口,对时序要求较为严格,但从应用的角度来看,由于各组I/O之间无依赖性,非常容易实现并行扩展。3D plus公司提供的存储模块通过简单的片选逻辑,即可封装多个Flash存储芯片。在航天实际任务应用中,我们也可以方便的通过并行总线技术,进行扩展,提高速度、提高容量。
图1 Flash叠装模块内部结构Fig.1 Internal structure of Flash stacked modules
写操作最小单位为“页”。写FLASH的过程分为两步,首先将命令、地址以及数据以字节方式写入芯片内部缓存(也就是“加载”,最快周期为50 ns)后,芯片内部需要一个内部编程的过程,才可以确定编程是否成功。典型时间tPROG为300μs,最大700μs。在编程过程中,芯片不响应外部命令,极大的降低了Flash的写入速度,是Flash应用的难点之一。
读操作通常也是以页为单位进行,但相对灵活些,也可以通过在输入地址过程中直接定位某一字节读取。在输入命令和地址后,需要一个等待时间tR后才可以将数据通过读脉冲读出。tR最大值为25μs。擦除操作必须以“块”为单位进行,每次必须同时擦除一个块内的全部64页的数据。在擦除的命令和地址输入后,需要等待时间tBERS后才可以确定擦除是否成功。tBERS的典型时间为2 ms,最大为3 ms。
NAND型FLASH芯片的特点是在出厂时就存在一定比例的无效块[2](Invalid Block),在芯片的使用过程中,有可能还会有新的无效块产生,具体表现为在编程或擦除过程中出现编程失败或擦除失败的情况。对无效块的读操作是允许的,但由于对无效块的写和擦除操作应尽量避免。坏块随机分布,难以从工艺上根本消除。
文中以 3D-PLUS公司的 NAND型 32 Gbits (4Gb×8)Flash叠装模块作为存储介质,介绍航天实际应用的Flash存储128 Gbits容量方案。存储控制采用FPGA集成全部控制模块,负责系统工作流程执行和状态维护。
在每次系统重新加电后,硬件电路将自动遍历整个存储区的簇使用记录信息,每64簇的簇使用信息组成一条块信息,全部块信息构成“块分配表”,即 BAT(Block Assignment Table),包含Flash的当前使用信息,作为存储状态控制的依据。硬件初始化结束后,BAT表送往计算机内存,计算机软件在完成对CPU初始化设置后,进入常规任务管理,包括数据存储、数据回放、数据读取、数据擦除。FPGA与计算机通过HPI总线通讯,计算机主板通过CAN总线与上位机通讯,实现指令遥控遥测等功能。存储控制实现以硬件为主,与地面通讯交互功能以软件为主。
图2 存储系统结构图Fig.2 Structure of the storage system
为了保证存储数据可靠,实际应用中在存储控制模块中对存储数据进出Flash存储介质的端口进行RS编译码,有效检错、纠错,避免单粒子翻转造成存储数据错误,并提交检纠错信息至遥测工程参数。系统拥有回复出场初始化的命令,当检测到存储系统出现较为严重的异常时,可以恢复存储系统至出场状态。同时可以增加存储电路板备份板,由复接器控制冷备或者热备,提高系统可靠性。
图3 SSR存储系统工作简单流程Fig.3 Brief work flowchart of SSR
叠装模块包含8片Flash芯片,公用对外的8位宽I/O总线。128 Gbits配置的存储区模块由4个Flash叠装模块构成,将4片Flash控制总线、状态总线互连,而I/O总线扩展为32位,其中4片Flash的8位宽I/O总线分别对应32位总线的不同数据位段。即4片并行的FLASH芯片相同地址的页被看作一个基本单位,即“簇”,因此1“簇”的基本存储空间为2 k×32 bits。经扩展后,一簇容量为64 kbits,64簇组成一个块(Block)。
4倍总线扩展的系统操作速度将提高为原来的4倍。同时可以非常简单的进行更多的扩展,但考虑到控制总线的驱动负载能力,更多的并行扩展可能带来时钟沿建立时间不稳定,可以使用总线驱动器增强驱动负载能力。
为了提高系统的存储速度,根据FLASH芯片的操作特点,在对存储区模块写入时还将采用流水线操作的[3]方式。将多片FLASH分成若干组,每次加载(写)一页的数据到一组Flash芯片后,该组芯片总要有大约300μs的内部编程时间,在此期间尽管不能对该组芯片进行其它操作,但可以立即进行另一组芯片的加载。如果采用16 MHz的写时钟 (周期62.5 ns),加载2k数据的时间大约为130μs左右,当第 4组芯片加载完毕后,第一组芯片的编程过程通常已经结束,待系统确认后,开始下一个循环。根据写操作典型事件,本设计采用4级流水线写操作,便可以基本保证在宏观上实现对存储区的全速率无间断连续数据写入。图4为流水线写操作的原理示意图。
图4 流水线写操作原理示意图Fig.4 Schematic diagram of the pipeline writes
对于初始无效块,将被直接跳过,后续数据将被加载到该无效块在本流水级内后续的第一个有效块中。如果在使用过程中出现了新增的编程无效簇,该簇所处的块将被定义为编程无效块,系统将把该块所在流水级内后续的第一个有效块作为替代块,编程出错的数据将被重新加载至替代块内的相同偏移页地址的簇地址空间,该流水级后续的数据将被加载到替代簇地址的后续地址中。
民用Flash存储系统有两个特点,一是Flash存储介质随着半导体技术的提高密度增加很快,但由于工艺原因,对单粒子效应敏感,密度越大,可能造成的混乱越严重,不适用于航天环境。二是存储管理方式研究较为深入,极大的方便了用户使用,借鉴意义较大。
民用Flash存储系统管理类别较广,大体分为Flash加速卡、Flash存储阵列与分布式集群系统,大多关注3个关键技术[5],基于I/O栈调整与重构的存储性能优化、系统级可靠性、体积与能耗。代表性Flash存储系统对比见表1。而从航天存储系统现状来看,系统软件层的I/O栈优化尚无必要,而关注全局磨损平衡的系统级可靠性研究参考性较强,体积与能耗的相关考量也有相互借鉴的地方,分布式集群系统的设计思想有一定的启发性。
系统级可靠性研究中磨损平衡的提出,是由于Flash存储单元的多次擦除,会削弱其保存电子的性能,使得数据易受干扰。闪存的擦除次数在一万到十万次之间,并且随着存储密度增加而降低。民用存储系统一般在FTL内实现磨损平衡策略[6]。动态磨损平衡在擦除与写入的过程中,综合考虑存储单元的磨损程度,实时进行平衡;静态磨损平衡则是定时交换读写频次低的冷数据与频次高热数据的存储位置,又可分为随机平衡机制,与基于擦写次数的平衡机制。
表1 若干Flash存储系统特性对比Tab.1 Feature comparison of different Flash storage system
分布式集群存储系统[6]的设计与航天应用的流水操作思想较为相似,都有着用空间换取速度的指导思想。不过前者是从更高层次进行的整体系统设计,包括系统架构、FTL优化等措施,解决Flash接口速率远远小于数据吞吐速率需求的问题,但需要考虑大规模扩展带来的时延和可靠性问题。分布式集群存储系统突出特点是拥有良好的扩展性,优化存储状态更新查询方式、选择相适应的低频低功耗的CPU,有效降低整体功耗。
航天科技任务越来越丰富,科学数据的种类与数量不断增加,对存储系统数据管理要求也越来越高。相比于航天用存储系统硬件架构从磁带机、磁盘到固态存储器的多次升级[4],相应的数据管理研究与应用较为落后,如高效坏块管理、长时间在轨磨损平衡、适应航天综合电子平台的文件操作系统等。目前国内外民用基于Flash的固态存储系统架构与优化技术研究进展较快,也更为丰富,对航天应用具有较强的启发性。
针对Flash存储特性,本文以航天任务为背景,提出一种基于直接控制存储介质的Flash存储系统。发挥Flash存储介质并行性的优点,应用并行总线扩展技术;针对写操作编程时间长的问题,合理采用多级流水线技术;针对Flash坏块现象,采取简单可靠的坏块管理策略。并且调研民用Flash存储技术与设计思想,探讨航天存储技术的研究方向。
[1]张辉,晏益慧,罗宇.大容量NAND Flash文件系统转换层优化设计[J].计算机工程与科学,2011,33(4):81-86.ZHANG Hui,YAN Yi-hui,LUO Yu.Optimization design of the NAND flash transition layer based on the large-scale NAND flash[J].Computer Engineering&Science.2011,33(4):81-86.
[2]张大波.新编嵌入式系统原理、设计与应用[M].北京:清华大学出版社,2010.
[3]高怡祯.基于闪存的星载大容量存储器的研究和实现[J].电子技术应用,2003(8):75-78.GAO Yi-zhen.Research and implementation of flash-based high-speed mass solid state recorder on spacecraft[J].Application of Electronic Technique,2003(8):75-78.
[4]KattiSpace R R.Data Storage Systems and Technologies[J].IEEE Transactions on Manetics,1994,30(6):1-8.
[5]陆游游,舒继武.闪存存储系统综述[J].计算机研究与发展,2013,50(1):49-59.LU You-you,SHU Ji-wu.Survey on flash-based storage systems[J].Journal of Computer Research and Development,2013,50(1):49-59.
[6]郑文静,李明强,舒继武.Flash存储技术[J]计算机研究与发展,2010(4):716-726.ZHENG Wen-jing,LI Ming-qiang,SHU Ji-wu.Flash storage technology[J].Journal of Computer Research and Development,2010,47(4):716-726.