摘 要: 提出一种基于硬件和固件相结合的掉电保护策略在固态电子盘模块中的应用方案。主要以电源检测为掉电保护策略的启动中心,续流模块(储能单元)和固态电子盘模块主控器(内嵌高性能CPU)为硬件平台。主控器的固件基于FPGA内嵌PowerPC软核平台用于控制NandFlash数据的存储。通过电源检测监控系统电源的电压或电流产生物理激励信号,将整个固态电子盘模块的供电切换到续流模块,同时启动主控器动态调整NandFlash的读写策略,保证掉电瞬间能够最大程度地保护固态电子盘模块存储单元文件系统的完整性和一致性。测试结果表明,该应用方案具有较高的可靠性。
关键词: 电源检测;续流模块;主控制器;掉电保护
0 引言
嵌入式系统的应用环境恶劣,电源电压不稳定,突发性断电以及非法插拔都容易对NandFlash中的文件系统造成灾难性的影响[1]。为了管理复杂的存储硬件,同时提供可靠高效的存储环境,出现了基于固态电子盘模块(SSD)的主控器和NandFlash的掉电保护机制,有效地减少了上述原因对固态电子盘模块中文件系统一致性和完整性的破坏。
为了提高SSD的读写性能,大部分SSD控制器通过内部集成RAM或外部扩展RAM的方式增加缓存,每次主机需要存储数据到SSD中时,都先写到SSD的缓存中,SSD控制器再将缓存中的数据写入到NandFlash中。因此,在电源没有任何保护措施的情况下,如果SSD突然掉电(即外部供电在突发意外情况下发生浪涌或断电),将会造成缓存中的数据完全丢失,轻则丢失数据,重则导致SSD中文件系统崩溃,主机无法识别SSD。
本文提出了一种增加掉电监控和保护的硬件单元,并可以动态调整SSD主控器的固件的工作模式,这种设计方法在掉电瞬间,能够最大程度地保护SSD存储单元的文件系统的完整性和一致性。
1 系统设计
闪存(NandFlash)的管理(读写的策略、坏块的管理以及损耗均衡)针对嵌入式系统的应用特点,进行特别的优化,在掉电瞬间,减少主控器的能量需求,尽可能满足NandFlash的写操作,但是过低的功耗会限制固态盘在电源稳定状态下的性能。考虑到整个固态盘的稳定性,主控器的NandFlash的管理策略需要动态调整[2]。因此,要实现完整的掉电保护策略,需要结合完整的电源状态监控机制和动态调整SSD主控器的固件运行模式,才能达到有意义的掉电保护。根据以上原理设计了SSD的系统架构,如图1所示。
SSD系统架构主要由SSD控制器、扩展RAM(原理样机使用的DDRII)、NandFlash阵列(存储体的组织形式为SLC)、高速数据接口(原理样机使用的IDE接口)、电源检测功能单元电路和续流功能单元电路(储能电路)组成。
掉电保护增加了两部分功能:
(1)掉电保护硬件部分:包含电源检测模块和续流模块,电源检测模块用于检测系统的供电电源,当其电压过低或输出电流过小时,向SSD控制器产生中断,同时启动续流功能电路单元(储能电源模块),给SSD提供足够长时间的续航能力,保证主机给SSD的最后一帧数据能够顺利写入NandFlash中,并更新文件系统列表,保持SSD中文件系统的完整性和一致性;
(2)掉电保护固件部分:SSD主控制器接收到电源检测模块的中断后,动态调整工作模式,将主机当前发送的“写数据”直接搬家到NandFlash,同时启动多通道控制模式,将缓存DDR2中的数据写到NandFlash中,两部分的最后一帧数据写入NandFlash后,产生选通信号通知续流模块关闭。
1.1 掉电保护各功能单元电路设计
硬件电路由电源检测模块、续流模块和SSD主控器组成。
1.1.1 电源检测模块
电源检测模块采用掉电复位电路,监控系统供电电源的电压和电流,当系统的输入电压低于4.75 V或系统的输入电流小于1.35 A时,表明系统电源掉电,电源检测模块产生复位“低”信号,触动续流模块工作,同时动态调整固态电子盘模块主控器的工作模式。
(1)启动续流模块工作,将固态电子盘模块的供电电源由系统电源供电切换到续流模块供电,保证主控器、存储体NandFlash以及相关电路的工作稳定性;
(2)触发固态电子盘模块主控器的外部中断,主控器调整NandFlash的“写策略”。
1.1.2 续流模块
续流模块设计原理图如图2所示。其本质上是一个储能再利用电路,使用法拉电容充当储能元件。在SSD正常工作时,依靠系统电源完成充电操作。而当系统电源发生故障或者非正常断电时,储能电路释放电能,暂时维持SSD主控器、存储体NandFlash和相关的旁路电路的正常工作,尽量保证主机的最后一帧数据顺利存入到NandFlash中,并更新完成SSD中的文件系统列表。
将供电模块(电压转换器)切换到由法拉电容供电,需要两个条件:
(1)系统掉电(电源监控芯片)输出低电平或者输出电流低于判决门限值;
(2)选通信号为高电平,此时逻辑开关(电压监控)输出低电平。
以上两个条件都可将系统电源VCC切换到由法拉电容供电。
具体设计中,在进行重要数据操作之前,先通过固件将选通信号置为高。如果在操作过程中突然掉电,则电源监控输出低电平,此时硬件自动切换到由法拉电容供电;如果没有掉电,电源监控电压输出为高电平,系统还是由5 V电源供电。在重要数据操作完成之后,固件控制将选通信号置为低,或门输出高电平,切断法拉电容供电的可能。这样可避免法拉电容的无谓供电,减少充放电的次数,从而提高可靠性以及延长法拉电容的使用寿命[3]。
1.1.3 SSD主控器的工作模式设计
SSD主控器的功能组成框图如图3所示。
(1)SSD主控器的正常工作模式
在系统电源稳定供电的正常情况下,SSD进入正常工作模式,SSD主控器的工作内容:
①将文件系统列表存储在SSD主控器外扩RAM(DDRII缓存)中,方便SSD主控器能够迅速地查找和更新文件列表;
②因为数据写入DDRII的速度比直接写入NandFlash的速度快,为了不耽误接收主机“写数据”的时间,SSD主控器以“段页混合管理的形式”将DDRII中的数据以NandFlash的“页”模式组织,通知NandFlash控制器能够准确地进行整块的数据搬家到NandFlash阵列指定区域中,减少NandFlash控制器的固件开销,提高数据快速写入能力。这样的方式,能够大大提高主机数据写入的速度,同时也伴随着功耗的增加。
(2)SSD主控器的应急工作模式
在系统电源正常供电,SSD正常运行时,SSD主控器的内嵌CPU不创建掉电保护进程,减少了内存占用资源,简化任务管理、调度。当电源检测电路产生激励信号时,触发CPU立即创建掉电保护进程,进入就绪态,同时赋予最高的优先级,抢占CPU控制权,进而达到最强的实时性[4]。
SSD主控器接收到电源检测电路发送的电源异常中断后,动态调整SSD主控器上的运行固件,进入应急模式进程,进行以下操作:
①SSD主控器给主机上报SSD工作不稳定警告,发送中断(禁止“读操作”)给主机,将DDRII中的文件列表搬家并更新到NandFlash的指定区域。
②SSD主控器将主机当前需要完成存储的“写数据”,直接写入到SSD主控器的数据缓冲区(片内RAM)中,减少DDRII的功耗开销,同时进入“页映射”模式,通知内部集成的NandFlash控制器将缓冲区数据直接写入NandFlash阵列的指定数据区域后,再发送中断(禁止“写操作”)给主机。
③与②步骤同步,SSD主控器开启多通道传输控制模式,将DDRII(扩展RAM)中的暂存数据写入NandFlash中,如果与②步骤有冲突的数据区,则动态调整文件系统列表,将数据重新写入其他空闲块,并同时更新NandFlash中文件列表,如果与②步更新文件有冲突的,则将DDRII中的待写入数据放弃。
④完成②和③两个步骤,SSD控制器发送选通信号,通知续流模块电路停止供电,减少续流模块电路的功耗开销。
综上所述,整个SSD主控器的工作模式就是将主控器的工作模式分为了电源稳定的正常状态工作模式和电源不稳定时的应急状态工作模式[5],SSD控制器的固件进程流程如图4所示。
2 系统验证
将掉电时间控制在1 ms~10 ms之间,写入数据为10 MB,DDR2中待搬家数据为20 MB。在此虚拟环境中,测试续流模块启动时间、主控器上报中断“读操作”时间和SSD主控器发出续流模块关闭时间,观察这三个关键时间的关系并验证该SSD重新正常启动后,文件系统是否未破坏。
通过图5的采样图形可以看出,以SSD系统电源5 V为触发条件,掉电保护策略启动:
(1)续流模块的5 V的供电启动时间比系统电源5 V掉电时间提前了10 ns;
(2)系统电源5 V掉电时,主控器发回“关闭读操作”中断;
(3)续流模块持续供电100 ms后,保证数据记录完成,SSD主控器发出续流模块“关闭”信号后,续流模块输出的5 V电源关闭。
经过重新启动该SSD,重新读写SSD正常,证明该机制有效。
3 结束语
本文针对嵌入式SSD的应用环境中的掉电时间和文件系统保护两个重要指标进行测试,给出了测试结果,证明了该硬件和固件相结合的掉电保护策略能够保证SSD在嵌入式领域中的应用具有高效性和健壮性,但也随之带来了SSD的硬件成本和固件开发的难度。
参考文献
[1] 胡一飞,徐中伟,谢世环.NAND Flash上均匀损耗与掉电恢复在线测试[J].单片机与嵌入式系统应用,2007(3):5-8.
[2] 沈建华,罗悦怿.基于NAND Flash的FFS设计与实现[J].计算机应用与软件,2005(6):89-90.
[3] 王久文.低电压超大容量电容器的发展综述[J].世界电子元器件,1997(8):24-25.
[4] 徐连军.双CPU冗余通信控制系统的研究与实现[D].西安:西安电子科技大学,2011.
[5] 袁积德,黄文君,陆卫军.高性能集散控制系统主控制器设计[J].计算机工程,2012(5):215-218.