摘 要: 提出一種基于硬件和固件相結合的掉電保護策略在固態電子盤模塊中的應用方案。主要以電源檢測為掉電保護策略的啟動中心,續流模塊(儲能單元)和固態電子盤模塊主控器(內嵌高性能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中文件系統的完整性和一致性;
?。?)掉電保護固件部分:SSD主控制器接收到電源檢測模塊的中斷后,動態調整工作模式,將主機當前發送的“寫數據”直接搬家到NandFlash,同時啟動多通道控制模式,將緩存DDR2中的數據寫到NandFlash中,兩部分的最后一幀數據寫入NandFlash后,產生選通信號通知續流模塊關閉。
1.1 掉電保護各功能單元電路設計
硬件電路由電源檢測模塊、續流模塊和SSD主控器組成。
1.1.1 電源檢測模塊
電源檢測模塊采用掉電復位電路,監控系統供電電源的電壓和電流,當系統的輸入電壓低于4.75 V或系統的輸入電流小于1.35 A時,表明系統電源掉電,電源檢測模塊產生復位“低”信號,觸動續流模塊工作,同時動態調整固態電子盤模塊主控器的工作模式。
?。?)啟動續流模塊工作,將固態電子盤模塊的供電電源由系統電源供電切換到續流模塊供電,保證主控器、存儲體NandFlash以及相關電路的工作穩定性;
?。?)觸發固態電子盤模塊主控器的外部中斷,主控器調整NandFlash的“寫策略”。
1.1.2 續流模塊
續流模塊設計原理圖如圖2所示。其本質上是一個儲能再利用電路,使用法拉電容充當儲能元件。在SSD正常工作時,依靠系統電源完成充電操作。而當系統電源發生故障或者非正常斷電時,儲能電路釋放電能,暫時維持SSD主控器、存儲體NandFlash和相關的旁路電路的正常工作,盡量保證主機的最后一幀數據順利存入到NandFlash中,并更新完成SSD中的文件系統列表。
將供電模塊(電壓轉換器)切換到由法拉電容供電,需要兩個條件:
?。?)系統掉電(電源監控芯片)輸出低電平或者輸出電流低于判決門限值;
(2)選通信號為高電平,此時邏輯開關(電壓監控)輸出低電平。
以上兩個條件都可將系統電源VCC切換到由法拉電容供電。
具體設計中,在進行重要數據操作之前,先通過固件將選通信號置為高。如果在操作過程中突然掉電,則電源監控輸出低電平,此時硬件自動切換到由法拉電容供電;如果沒有掉電,電源監控電壓輸出為高電平,系統還是由5 V電源供電。在重要數據操作完成之后,固件控制將選通信號置為低,或門輸出高電平,切斷法拉電容供電的可能。這樣可避免法拉電容的無謂供電,減少充放電的次數,從而提高可靠性以及延長法拉電容的使用壽命[3]。
1.1.3 SSD主控器的工作模式設計
SSD主控器的功能組成框圖如圖3所示。
?。?)SSD主控器的正常工作模式
在系統電源穩定供電的正常情況下,SSD進入正常工作模式,SSD主控器的工作內容:
①將文件系統列表存儲在SSD主控器外擴RAM(DDRII緩存)中,方便SSD主控器能夠迅速地查找和更新文件列表;
?、谝驗閿祿懭隓DRII的速度比直接寫入NandFlash的速度快,為了不耽誤接收主機“寫數據”的時間,SSD主控器以“段頁混合管理的形式”將DDRII中的數據以NandFlash的“頁”模式組織,通知NandFlash控制器能夠準確地進行整塊的數據搬家到NandFlash陣列指定區域中,減少NandFlash控制器的固件開銷,提高數據快速寫入能力。這樣的方式,能夠大大提高主機數據寫入的速度,同時也伴隨著功耗的增加。
?。?)SSD主控器的應急工作模式
在系統電源正常供電,SSD正常運行時,SSD主控器的內嵌CPU不創建掉電保護進程,減少了內存占用資源,簡化任務管理、調度。當電源檢測電路產生激勵信號時,觸發CPU立即創建掉電保護進程,進入就緒態,同時賦予最高的優先級,搶占CPU控制權,進而達到最強的實時性[4]。
SSD主控器接收到電源檢測電路發送的電源異常中斷后,動態調整SSD主控器上的運行固件,進入應急模式進程,進行以下操作:
?、賁SD主控器給主機上報SSD工作不穩定警告,發送中斷(禁止“讀操作”)給主機,將DDRII中的文件列表搬家并更新到NandFlash的指定區域。
?、赟SD主控器將主機當前需要完成存儲的“寫數據”,直接寫入到SSD主控器的數據緩沖區(片內RAM)中,減少DDRII的功耗開銷,同時進入“頁映射”模式,通知內部集成的NandFlash控制器將緩沖區數據直接寫入NandFlash陣列的指定數據區域后,再發送中斷(禁止“寫操作”)給主機。
?、叟c②步驟同步,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為觸發條件,掉電保護策略啟動:
?。?)續流模塊的5 V的供電啟動時間比系統電源5 V掉電時間提前了10 ns;
(2)系統電源5 V掉電時,主控器發回“關閉讀操作”中斷;
?。?)續流模塊持續供電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.