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