摘 要: 提出一種基于硬件和固件相結(jié)合的掉電保護(hù)策略在固態(tài)電子盤模塊中的應(yīng)用方案。主要以電源檢測為掉電保護(hù)策略的啟動中心,續(xù)流模塊(儲能單元)和固態(tài)電子盤模塊主控器(內(nèi)嵌高性能CPU)為硬件平臺。主控器的固件基于FPGA內(nèi)嵌PowerPC軟核平臺用于控制NandFlash數(shù)據(jù)的存儲。通過電源檢測監(jiān)控系統(tǒng)電源的電壓或電流產(chǎn)生物理激勵(lì)信號,將整個(gè)固態(tài)電子盤模塊的供電切換到續(xù)流模塊,同時(shí)啟動主控器動態(tài)調(diào)整NandFlash的讀寫策略,保證掉電瞬間能夠最大程度地保護(hù)固態(tài)電子盤模塊存儲單元文件系統(tǒng)的完整性和一致性。測試結(jié)果表明,該應(yīng)用方案具有較高的可靠性。
關(guān)鍵詞: 電源檢測;續(xù)流模塊;主控制器;掉電保護(hù)
0 引言
嵌入式系統(tǒng)的應(yīng)用環(huán)境惡劣,電源電壓不穩(wěn)定,突發(fā)性斷電以及非法插拔都容易對NandFlash中的文件系統(tǒng)造成災(zāi)難性的影響[1]。為了管理復(fù)雜的存儲硬件,同時(shí)提供可靠高效的存儲環(huán)境,出現(xiàn)了基于固態(tài)電子盤模塊(SSD)的主控器和NandFlash的掉電保護(hù)機(jī)制,有效地減少了上述原因?qū)虘B(tài)電子盤模塊中文件系統(tǒng)一致性和完整性的破壞。
為了提高SSD的讀寫性能,大部分SSD控制器通過內(nèi)部集成RAM或外部擴(kuò)展RAM的方式增加緩存,每次主機(jī)需要存儲數(shù)據(jù)到SSD中時(shí),都先寫到SSD的緩存中,SSD控制器再將緩存中的數(shù)據(jù)寫入到NandFlash中。因此,在電源沒有任何保護(hù)措施的情況下,如果SSD突然掉電(即外部供電在突發(fā)意外情況下發(fā)生浪涌或斷電),將會造成緩存中的數(shù)據(jù)完全丟失,輕則丟失數(shù)據(jù),重則導(dǎo)致SSD中文件系統(tǒng)崩潰,主機(jī)無法識別SSD。
本文提出了一種增加掉電監(jiān)控和保護(hù)的硬件單元,并可以動態(tài)調(diào)整SSD主控器的固件的工作模式,這種設(shè)計(jì)方法在掉電瞬間,能夠最大程度地保護(hù)SSD存儲單元的文件系統(tǒng)的完整性和一致性。
1 系統(tǒng)設(shè)計(jì)
閃存(NandFlash)的管理(讀寫的策略、壞塊的管理以及損耗均衡)針對嵌入式系統(tǒng)的應(yīng)用特點(diǎn),進(jìn)行特別的優(yōu)化,在掉電瞬間,減少主控器的能量需求,盡可能滿足NandFlash的寫操作,但是過低的功耗會限制固態(tài)盤在電源穩(wěn)定狀態(tài)下的性能??紤]到整個(gè)固態(tài)盤的穩(wěn)定性,主控器的NandFlash的管理策略需要?jiǎng)討B(tài)調(diào)整[2]。因此,要實(shí)現(xiàn)完整的掉電保護(hù)策略,需要結(jié)合完整的電源狀態(tài)監(jiān)控機(jī)制和動態(tài)調(diào)整SSD主控器的固件運(yùn)行模式,才能達(dá)到有意義的掉電保護(hù)。根據(jù)以上原理設(shè)計(jì)了SSD的系統(tǒng)架構(gòu),如圖1所示。
SSD系統(tǒng)架構(gòu)主要由SSD控制器、擴(kuò)展RAM(原理樣機(jī)使用的DDRII)、NandFlash陣列(存儲體的組織形式為SLC)、高速數(shù)據(jù)接口(原理樣機(jī)使用的IDE接口)、電源檢測功能單元電路和續(xù)流功能單元電路(儲能電路)組成。
掉電保護(hù)增加了兩部分功能:
?。?)掉電保護(hù)硬件部分:包含電源檢測模塊和續(xù)流模塊,電源檢測模塊用于檢測系統(tǒng)的供電電源,當(dāng)其電壓過低或輸出電流過小時(shí),向SSD控制器產(chǎn)生中斷,同時(shí)啟動續(xù)流功能電路單元(儲能電源模塊),給SSD提供足夠長時(shí)間的續(xù)航能力,保證主機(jī)給SSD的最后一幀數(shù)據(jù)能夠順利寫入NandFlash中,并更新文件系統(tǒng)列表,保持SSD中文件系統(tǒng)的完整性和一致性;
?。?)掉電保護(hù)固件部分:SSD主控制器接收到電源檢測模塊的中斷后,動態(tài)調(diào)整工作模式,將主機(jī)當(dāng)前發(fā)送的“寫數(shù)據(jù)”直接搬家到NandFlash,同時(shí)啟動多通道控制模式,將緩存DDR2中的數(shù)據(jù)寫到NandFlash中,兩部分的最后一幀數(shù)據(jù)寫入NandFlash后,產(chǎn)生選通信號通知續(xù)流模塊關(guān)閉。
1.1 掉電保護(hù)各功能單元電路設(shè)計(jì)
硬件電路由電源檢測模塊、續(xù)流模塊和SSD主控器組成。
1.1.1 電源檢測模塊
電源檢測模塊采用掉電復(fù)位電路,監(jiān)控系統(tǒng)供電電源的電壓和電流,當(dāng)系統(tǒng)的輸入電壓低于4.75 V或系統(tǒng)的輸入電流小于1.35 A時(shí),表明系統(tǒng)電源掉電,電源檢測模塊產(chǎn)生復(fù)位“低”信號,觸動續(xù)流模塊工作,同時(shí)動態(tài)調(diào)整固態(tài)電子盤模塊主控器的工作模式。
?。?)啟動續(xù)流模塊工作,將固態(tài)電子盤模塊的供電電源由系統(tǒng)電源供電切換到續(xù)流模塊供電,保證主控器、存儲體NandFlash以及相關(guān)電路的工作穩(wěn)定性;
?。?)觸發(fā)固態(tài)電子盤模塊主控器的外部中斷,主控器調(diào)整NandFlash的“寫策略”。
1.1.2 續(xù)流模塊
續(xù)流模塊設(shè)計(jì)原理圖如圖2所示。其本質(zhì)上是一個(gè)儲能再利用電路,使用法拉電容充當(dāng)儲能元件。在SSD正常工作時(shí),依靠系統(tǒng)電源完成充電操作。而當(dāng)系統(tǒng)電源發(fā)生故障或者非正常斷電時(shí),儲能電路釋放電能,暫時(shí)維持SSD主控器、存儲體NandFlash和相關(guān)的旁路電路的正常工作,盡量保證主機(jī)的最后一幀數(shù)據(jù)順利存入到NandFlash中,并更新完成SSD中的文件系統(tǒng)列表。
將供電模塊(電壓轉(zhuǎn)換器)切換到由法拉電容供電,需要兩個(gè)條件:
?。?)系統(tǒng)掉電(電源監(jiān)控芯片)輸出低電平或者輸出電流低于判決門限值;
(2)選通信號為高電平,此時(shí)邏輯開關(guān)(電壓監(jiān)控)輸出低電平。
以上兩個(gè)條件都可將系統(tǒng)電源VCC切換到由法拉電容供電。
具體設(shè)計(jì)中,在進(jìn)行重要數(shù)據(jù)操作之前,先通過固件將選通信號置為高。如果在操作過程中突然掉電,則電源監(jiān)控輸出低電平,此時(shí)硬件自動切換到由法拉電容供電;如果沒有掉電,電源監(jiān)控電壓輸出為高電平,系統(tǒng)還是由5 V電源供電。在重要數(shù)據(jù)操作完成之后,固件控制將選通信號置為低,或門輸出高電平,切斷法拉電容供電的可能。這樣可避免法拉電容的無謂供電,減少充放電的次數(shù),從而提高可靠性以及延長法拉電容的使用壽命[3]。
1.1.3 SSD主控器的工作模式設(shè)計(jì)
SSD主控器的功能組成框圖如圖3所示。
?。?)SSD主控器的正常工作模式
在系統(tǒng)電源穩(wěn)定供電的正常情況下,SSD進(jìn)入正常工作模式,SSD主控器的工作內(nèi)容:
?、賹⑽募到y(tǒng)列表存儲在SSD主控器外擴(kuò)RAM(DDRII緩存)中,方便SSD主控器能夠迅速地查找和更新文件列表;
?、谝?yàn)閿?shù)據(jù)寫入DDRII的速度比直接寫入NandFlash的速度快,為了不耽誤接收主機(jī)“寫數(shù)據(jù)”的時(shí)間,SSD主控器以“段頁混合管理的形式”將DDRII中的數(shù)據(jù)以NandFlash的“頁”模式組織,通知NandFlash控制器能夠準(zhǔn)確地進(jìn)行整塊的數(shù)據(jù)搬家到NandFlash陣列指定區(qū)域中,減少NandFlash控制器的固件開銷,提高數(shù)據(jù)快速寫入能力。這樣的方式,能夠大大提高主機(jī)數(shù)據(jù)寫入的速度,同時(shí)也伴隨著功耗的增加。
?。?)SSD主控器的應(yīng)急工作模式
在系統(tǒng)電源正常供電,SSD正常運(yùn)行時(shí),SSD主控器的內(nèi)嵌CPU不創(chuàng)建掉電保護(hù)進(jìn)程,減少了內(nèi)存占用資源,簡化任務(wù)管理、調(diào)度。當(dāng)電源檢測電路產(chǎn)生激勵(lì)信號時(shí),觸發(fā)CPU立即創(chuàng)建掉電保護(hù)進(jìn)程,進(jìn)入就緒態(tài),同時(shí)賦予最高的優(yōu)先級,搶占CPU控制權(quán),進(jìn)而達(dá)到最強(qiáng)的實(shí)時(shí)性[4]。
SSD主控器接收到電源檢測電路發(fā)送的電源異常中斷后,動態(tài)調(diào)整SSD主控器上的運(yùn)行固件,進(jìn)入應(yīng)急模式進(jìn)程,進(jìn)行以下操作:
①SSD主控器給主機(jī)上報(bào)SSD工作不穩(wěn)定警告,發(fā)送中斷(禁止“讀操作”)給主機(jī),將DDRII中的文件列表搬家并更新到NandFlash的指定區(qū)域。
?、赟SD主控器將主機(jī)當(dāng)前需要完成存儲的“寫數(shù)據(jù)”,直接寫入到SSD主控器的數(shù)據(jù)緩沖區(qū)(片內(nèi)RAM)中,減少DDRII的功耗開銷,同時(shí)進(jìn)入“頁映射”模式,通知內(nèi)部集成的NandFlash控制器將緩沖區(qū)數(shù)據(jù)直接寫入NandFlash陣列的指定數(shù)據(jù)區(qū)域后,再發(fā)送中斷(禁止“寫操作”)給主機(jī)。
?、叟c②步驟同步,SSD主控器開啟多通道傳輸控制模式,將DDRII(擴(kuò)展RAM)中的暫存數(shù)據(jù)寫入NandFlash中,如果與②步驟有沖突的數(shù)據(jù)區(qū),則動態(tài)調(diào)整文件系統(tǒng)列表,將數(shù)據(jù)重新寫入其他空閑塊,并同時(shí)更新NandFlash中文件列表,如果與②步更新文件有沖突的,則將DDRII中的待寫入數(shù)據(jù)放棄。
④完成②和③兩個(gè)步驟,SSD控制器發(fā)送選通信號,通知續(xù)流模塊電路停止供電,減少續(xù)流模塊電路的功耗開銷。
綜上所述,整個(gè)SSD主控器的工作模式就是將主控器的工作模式分為了電源穩(wěn)定的正常狀態(tài)工作模式和電源不穩(wěn)定時(shí)的應(yīng)急狀態(tài)工作模式[5],SSD控制器的固件進(jìn)程流程如圖4所示。
2 系統(tǒng)驗(yàn)證
將掉電時(shí)間控制在1 ms~10 ms之間,寫入數(shù)據(jù)為10 MB,DDR2中待搬家數(shù)據(jù)為20 MB。在此虛擬環(huán)境中,測試?yán)m(xù)流模塊啟動時(shí)間、主控器上報(bào)中斷“讀操作”時(shí)間和SSD主控器發(fā)出續(xù)流模塊關(guān)閉時(shí)間,觀察這三個(gè)關(guān)鍵時(shí)間的關(guān)系并驗(yàn)證該SSD重新正常啟動后,文件系統(tǒng)是否未破壞。
通過圖5的采樣圖形可以看出,以SSD系統(tǒng)電源5 V為觸發(fā)條件,掉電保護(hù)策略啟動:
?。?)續(xù)流模塊的5 V的供電啟動時(shí)間比系統(tǒng)電源5 V掉電時(shí)間提前了10 ns;
?。?)系統(tǒng)電源5 V掉電時(shí),主控器發(fā)回“關(guān)閉讀操作”中斷;
?。?)續(xù)流模塊持續(xù)供電100 ms后,保證數(shù)據(jù)記錄完成,SSD主控器發(fā)出續(xù)流模塊“關(guān)閉”信號后,續(xù)流模塊輸出的5 V電源關(guān)閉。
經(jīng)過重新啟動該SSD,重新讀寫SSD正常,證明該機(jī)制有效。
3 結(jié)束語
本文針對嵌入式SSD的應(yīng)用環(huán)境中的掉電時(shí)間和文件系統(tǒng)保護(hù)兩個(gè)重要指標(biāo)進(jìn)行測試,給出了測試結(jié)果,證明了該硬件和固件相結(jié)合的掉電保護(hù)策略能夠保證SSD在嵌入式領(lǐng)域中的應(yīng)用具有高效性和健壯性,但也隨之帶來了SSD的硬件成本和固件開發(fā)的難度。
參考文獻(xiàn)
[1] 胡一飛,徐中偉,謝世環(huán).NAND Flash上均勻損耗與掉電恢復(fù)在線測試[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(3):5-8.
[2] 沈建華,羅悅懌.基于NAND Flash的FFS設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2005(6):89-90.
[3] 王久文.低電壓超大容量電容器的發(fā)展綜述[J].世界電子元器件,1997(8):24-25.
[4] 徐連軍.雙CPU冗余通信控制系統(tǒng)的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[5] 袁積德,黃文君,陸衛(wèi)軍.高性能集散控制系統(tǒng)主控制器設(shè)計(jì)[J].計(jì)算機(jī)工程,2012(5):215-218.