APP下载

基于铁电存储器的事务型文件系统

2013-04-25余松涛俞大磊

电子科技 2013年6期
关键词:电子盘铁电存储器

余松涛,俞大磊

(中国航空工业西安航空计算技术研究所10室,陕西 西安710119)

铁电存储技术于1921年被提出,1993年,美国Ramtron公司推出了商用铁电存储器,其具有快速写入、高耐久性和低功耗的特点,常被用于存储设置、配置、期间状态和日后使用的数据,适用于嵌入式系统中。随着现代工艺的进步,目前已有单片8 Mbit的产品出现,所能存储数据量日益增大。对其中存储的数据的管理和使用逐渐复杂,因此需要提出一个简明合理的应用方法来解决此问题。

将铁电存储器视为一个电子盘,采用文件读写的方法较符合日常的编程习惯,其使用的灵活性也是通过实践公认的。例如Unix族操作系统,其大量的功能就是基于文件系统。但嵌入式系统有其实现上的特殊性,主要表现在突然的断电动作。此动作一旦发生在文件系统写入过程中,将造成文件数据丢失,严重的会导致整个文件系统损坏。而事务型文件系统Reliance Nitro可较好地解决这一问题。

1 关键技术分析

1.1 铁电存储技术

铁电存储器F-RAM利用铁电晶体的铁电效应实现数据存储。铁电效应是指在其晶体上施加一定的电场时,晶体中心原子在电场的作用下移动,并达到一种稳定状态;当电场从晶体移走时,中心原子将保持在原来的位置。由于晶体的中间层是一个高能阶,中心原子在未获得外部能量时无法越过高能阶到达另一稳定状态,因此F-RAM保持数据无需电压和与SDRAM类似的周期刷新。而存储的数据掉电后依然存在,并不受外界磁场条件的影响。其特点是读写速度快、功耗低。但由于铁电晶体的固有限制,对数据存储位的写入或检测均会引起存储数据位的变动,需增加一次内部的写操作,因此铁电存储器存在最大读写次数的限制,RAMTRON公司给出的最大访问次数是1014次。

由于读写次数的限制和时序的不同,F-RAM不能用于直接替换SRAM和SDRAM器件,只适合替换Flash和EEPROM器件。目前并行Flash单片容量已达到1 Gbit,远大于F-RAM,直接替换大容量的Flash芯片在经济上是不可行的。F-RAM适合用于对体积和功耗敏感且所提供的容量可满足要求的嵌入式系统。

在应用程序编写中,可直接将F-RAM作为普通存储器使用,存储变量、数组、链表及树等数据结构。但嵌入式系统特定的突然下电问题解决上较为困难。在编程时要考虑存储数据的合法性和一致性等问题。需利用较多算法和编程技巧来解决此问题,比如对数据进行CRC32数字签名,对数据的改写采用事务机制来保持数据的一致性。这些算法对编程水平要求较高,对只需存储/读取数据参数等应用而言实现复杂,缺乏一致的使用界面,使得大数据量的存储与管理困难。虽然铁电存储器最大访问次数可达1014次,但访问周期可达到120 ns,若将其作为普通内存使用,在最差情况下,只能提供120 ns×1014=3 333 h,约139天的访问寿命,不适用于连续长时间运行的嵌入式系统。数据访问的聚集性使有些存储单元的访问次数远大于其他单元,将造成器件磨损不均衡。

1.2 TrueFFS文件系统

Vxworks自带的TrueFFS文件系统是一种MSystems Flite的实现方式,可多种Flash存储设备提供统一的块设备接口,具有可重入及线程安全的特点。图1是TrueFFS的体系结构图。

图1 TrueFFS体系结构

核心层主要起到连接其他层的作用。同时也可进行碎片回收、定时器以及其他系统资源的维护。翻译层主要实现从文件系统角度所看到的存储块与Flash可擦除块间的映射。MTD层实现对具体的Flash进行读、写擦除等功能,需要开发者根据自身的实际硬件按照标准的接口格式编写驱动。Socket层提供TrueFFS和板载硬件之间的接口服务,可用于能源管理、硬件卡检测、窗口映射管理和向系统注册设备。TrueFFS具有损耗均衡的功能,确保每个可擦除块被平均使用[1]。在Vxworks5.X中,TrueFFS仅支持MS-DOS兼容的文件系统[2]。一旦在写入数据时突然断电,将造成数据丢失、目录结构破坏甚至整个文件系统结构损坏,甚至出现chkdsk无法恢复,只能重新格式化电子盘[3]。

1.3 Reliance Nitro事务型文件系统

Reliance Nitro事务型文件系统是保证在断电环境下仍可正常工作的可靠文件系统[4]。其跟踪文件系统最终的稳定状态,包括目录数据和用户数据,在用户设定的事务点上将内存中的数据更新到磁盘上,当系统在两个事务点间发生断电时,Reliance Nitro将文件数据还原至文件系统最后的稳定状态。由于Reliance Nitro文件系统始终一致,所以设备通电启动时无需运行类似chkdsk等应用程序检查文件系统的完整性,这使得Reliance Nitro可提供比DosFS等文件系统更快的启动时间[4]。在嵌入式环境下,其可通过FlashFX Tera对Vxworks实时操作系统中的NAND和NOR Flash存储器提供支持。也可通过TrueFFS文件系统支持NAND和NOR Flash存储器[5]。VXworks6.8中包含的TrueFFS已直接支持Reliance Nitro文件系统。

2 事务型文件系统体系结构

基于铁电存储器的事务文件系统软件体系结构如图2所示。其主要技术特点是扩充了TrueFFS的MTD驱动,使其能够支持铁电存储器。

图2 基于铁电存储器的事务型文件系统体系结构

2.1 铁电存储器底层驱动设计

铁电存储器底层驱动主要提供对存储器的擦除/写入等操作,修改后的代码仿真了NOR Flash芯片的块擦除与写入动作。

擦除函数实现了块擦除功能,针对NOR Flash芯片,此函数的动作是针对所需擦除的物理块发出擦除命令序列,然后读取芯片状态,判断是否完成。对于S29GL256P芯片,擦除一块的典型时间为500 ms。针对铁电存储器,此动作改为将所需擦出的数据块全部填充为0xffffffff,典型时间为120 ns×65 536,约7.9 ms。

写入函数实现了数据记录功能,针对NOR Flash芯片,此函数的动作是针对所需擦除的物理块发出编程命令序列,向目标地址写入数据,随后读取芯片状态,判断是否完成,对于S29GL256P芯片而言,写入一个32位字的典型时间为60μs,若采用缓冲写入方式,平均每个32位字的典型时间为15μs。针对铁电存储器,此动作改为直接赋值,典型时间为120 ns。

2.2 TrueFFS驱动层

为使TrueFFS支持铁电存储器,需扩充TrueFFS的MTD驱动[6-8]。考虑到铁电存储器的操作方式接近于并行的NOR Flash芯片,可将铁电存储器仿真并行的NOR Flash芯片的使用方式,将铁电存储器分成块,每块256 kByte进行管理。所采用的铁电存储器为Ramtron公司生产的FM32MLD16 512×103×16 Byte,其单片容量为8 Mbit。在设计中,两片并联,提供了32位宽度,2 MB容量。针对采用的芯片,应修改TrueFFS文件系统中的MTD识别函数,将片容量改为1 MB。

TrueFFS在原始设计中只支持Flash类芯片,在初始化设备过程中会判断目标地址的行为是否为RAM。作为铁电存储器,其行为类似于RAM,因此TrueFFS进行判断后即不再继续进行初始化。必须修改TrueFFS的核心代码,使铁电存储器芯片能仿真NOR Flash芯片。修改TrueFFS核心代码中的flFlash.c文件,将其中函数static FLBoolean isRAM(FLFlash vol)的返回值改为恒假。重新编译生成后的驱动库即可支持铁电存储器。

3 应用程序接口设计

Reliance Nitro事务型文件系统为Vxworks提供了标准的文件系统设备接口,从应用程序的角度看,可通过设备名使用Vxworks提供的所有文件系统调用。Vxworks提供的文件系统API包含POSIX标准规定文件系统操作的大部分,已实现的API接口及其功能严格遵循POSIX标准。通过该接口,用户只需关心文件名和文件对象属性,无需了解底层实现细节。由于Vxworks是一个多任务实时操作系统,可同时运行多个用户任务,因此,文件系统提供了多任务的支持,所提供的API均可被同时调用,满足代码可重入要求。Vxworks提供了有缓冲的文件操作API,包括:fopen()fclose()fread()fwrite()等文件操作函数。同时还提供了基础I/O API。基础I/O是Vxworks最底层的I/O操作,是源代码级兼容的,其包括:creat()delete()open()close()read()write()ioctl()等文件操作函数。可用于实现创建、删除、打开、关闭、读取、写入及文件特殊控制等编程接口。

所有对文件操作均是事务化的,Reliance Nitro提供了3种不同的事务机制模式:(1)自动事务模式:自动事务模式依赖于文件系统操作。例如:Reliance Nitro可被设置为当一个文件被关闭时执行事务,对数据进行实际的写入动作,将数据真正稳妥地记录入电子盘。自动事务模式适用于遗留的应用代码,在应用中并不了解底层的文件系统提供事务操作能力。在实际中发现,对Vxworks提供基础I/O的每一次调用均会引起自动事务操作,而有缓冲的文件操作API在调用fclose或fflush时才进行事务操作。(2)定时事务模式:是按照预先定义的时间周期执行事务。比如周期可定义为200 ms,这保证只丢失本周期内的数据,适用于数据记录功能。(3)可编程事务模式:可编程事务模式是在应用程序控制下执行的。当应用程序进入一个里程碑点,其确切要求将特定的数据写入电子盘中,并可强制进行一次立刻的事务操作,确保数据正确写入。可编程事务模式是最灵活的应用方式,它提供了强有力的功能。在应用程序中,可以使能/禁止自动事务模式和周期事务模式。同时改变周期事务模式的周期,发起立刻事务操作。以上3种事务操作模式不是互斥的,应用程序可根据要求同时混合使用。

应用程序可调用usrRelFsTFFSInit()函数创建Reliance Nitro文件系统。其参数有:Int tffsDriveNo TFFS为盘号,一般为0。int fRemovable为是否可拆除,0表示固定盘,1表示可拆除。char*szDevName是设备名称,一般为”/RELFS0”。int fFormat为是否要格式化,1表示需要,0表示不需要。返回值为ERROR表示未成功,返回值为OK表示成功。

在usrRelFsTFFSInit()函数中,按照以下步骤完成文件系统创建工作:(1)调用tffsDevCreate(),初始化TrueFFS文件系统,创建TrueFFS设备。(2)调用tffsDevOptionsSet(),禁止TrueFFS设备的FAT监视功能,直接将Reliance Nitro文件系统的扇区映射到TrueFFS块设备驱动程序。(3)调用discardWrapperTFFSDevCreate(),在TrueFFS块设备上创建Reliance Nitro的驱动实例,使Reliance将不使用的块直接报告给TrueFFS块设备驱动程序,用于提高性能。(4)调用relFsDevCreate(),创建Reliance Nitro电子盘实例。(5)如需要,调用relFsVolFormat(),格式化Reliance Nitro电子盘。

例如,应用程序调用usrRelFsTFFSInit(0,0,"/RELFS0",1),创建并格式化电子盘,一旦执行成功,应用程序会显示如图3 Reliance Nitro初始化成功提示的内容。在tornado的shell下用devs命令可看到/RELFS0设备,即可对其上的文件进行操作。

图3 Reliance Nitro初始化成功提示

4 性能对比

使用上述软件,在两片S29GL256P芯片组成的32位电子盘上和两片FM32MLD1芯片组成的32位电子盘上均实现了Reliance文件系统。经实测,两片S29GL256P芯片组成的32位电子盘,其最快的文件写入速度为300 kByte/s,两片FM32MLD1芯片组成的32位电子盘,其最快的文件写入速度为7 952 kB/s,有26倍的差距。模拟在写入过程中突然下电,上电后文件系统和文件内容均正确,无需进行任何检测工作。具体性能对比结果如表1所示。

表1 两种架构性能对比

5 结束语

通常认为铁电存储器可直接做为普通内存使用,在厂商提供的器件介绍中也有说明[9]。但应该注意到,对于需连续长时间运行的嵌入式系统,须仔细考虑器件磨损问题。文中将TrueFFS中的适用于Flash芯片的磨损均衡算法应用到铁电存储器上,可保证写入操作的磨损均衡。按照文件接口方式访问铁电存储器,确保不会出现集中对一个数据单元进行读写的最坏情形。这可大幅增加铁电存储器的使用寿命。采用事务型文件系统,使得数据存储不受突然断电的影响,无需在重启时进行磁盘检测,降低了应用程序编写难度,加快了重启时间。考虑到两种芯片的写入速度相差125倍、读出速度相等的性能差距,文件的写入速度只差26倍。说明使用铁电存储器仿真Flash的算法功能可以达到要求,但性能低下。在进一步研究铁电存储器专用的磨损均衡算法,使其不通过TrueFFS层直接和Reliance Nitro事务型文件系统进行交互,能显著提高读写性能。

[1]Spansion Conpration.Wear leveling[EB/OL].(2011-08-25)[2013-01-27]http://www.spansion.com.

[2]Windriver Conpration.VxWorks programmer's guide 5.5[EB/OL].(2011-06-07)[2013-01-27]http://www.windriver.com.

[3]Microsoft Conpration.FAT:genetal overview of on-disk format version 1.02[EB/OL].(2010-02-19)[2013-01-27]http://www.microsoft.com.

[4] 杨琼,崔西宁,周波.事务性文件系统存储管理机制的研究与实现[J].航空电子技术,2011,41(5):81-84.

[5]Datalight Conpration.Datalight reliance nitro SDK for wind river VxWorks[EB/OL].(2012-03-27)[2013-01-27]http://www.datalight.com.

[6] 王学龙.嵌入式Vxworks系统开发与应用[M].北京:人民邮电出版社,2003.

[7] 张杨,于银涛.Vxworks内核、设备驱动与BSP开发详解[M].北京:人民邮电出版社,2011.

[8] 周启平,张杨.Vxworks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.

[9]TI Conpration.LOw-power FRAM microcontrollers and their application[EB/OL].(2012-09-18)[2013-01-27]http://www.ti.com.

猜你喜欢

电子盘铁电存储器
硅片上集成高介电调谐率的柱状纳米晶BaTiO3铁电薄膜
静态随机存储器在轨自检算法
铁电材料中发现周期性半子晶格
邮币卡电子盘发展研究
列控装置设计与应用化
铁电隧道结界面效应与界面调控
铁电-介电复合陶瓷的介电响应
双刃邮币电子盘
存储器——安格尔(墨西哥)▲
基于Nand Flash的高速存储器结构设计