汽車信息娛樂系統(tǒng)中閃存設(shè)備的管理設(shè)計(jì)
汽車信息娛樂和遠(yuǎn)程電子信息處理系統(tǒng)需要從閃存器件中讀寫海量數(shù)據(jù),因此這些器件必須能長期可靠、無錯(cuò)地保存數(shù)據(jù)。例如,嵌入到汽車導(dǎo)航系統(tǒng)中的閃存芯片必須在若干年的頻繁使用條件下可靠工作。用戶不希望丟失數(shù)據(jù)以及很長的啟動(dòng)時(shí)間,或者忍受很長的數(shù)據(jù)恢復(fù)時(shí)間。這些都對(duì)控制閃存芯片中數(shù)據(jù)的文件系統(tǒng)技術(shù)提出了非常嚴(yán)格的要求。
本文引用地址:http://m.butianyuan.cn/article/196658.htm使問題更加復(fù)雜的是,汽車嵌入式設(shè)計(jì)必須使成本絕對(duì)最低。材料清單中通常不能增加管理電源波動(dòng)或不受控關(guān)斷的硬件,而這兩種情況中的任何一種都會(huì)導(dǎo)致閃存損壞,并導(dǎo)致業(yè)務(wù)丟失。因此,閃存文件系統(tǒng)技術(shù)不能簡(jiǎn)單地提供高吞吐量的讀/寫功能;它還必須具有自恢復(fù)功能,并且在啟動(dòng)之后的若干毫秒之內(nèi)能被完全訪問。
基于事務(wù)的文件系統(tǒng)
解決這些需求的方法之一是采用基于純事務(wù)的模型。例如QNX嵌入式事務(wù)文件系統(tǒng)(ETFS)就遵循這種模型,完全是由事務(wù)組成。無論是文件系統(tǒng)的元數(shù)據(jù)還是用戶數(shù)據(jù)的每一次寫操作都是由一個(gè)“原子”事務(wù)組成。一個(gè)事務(wù)要么獲得成功,要么就當(dāng)成什么事也沒有發(fā)生。
這種方法可以確保文件系統(tǒng)在電源故障的條件下也能完好無損,即使電源故障發(fā)生在閃存寫入或塊刪除期間。為避免文件破壞,事務(wù)從來不會(huì)覆蓋現(xiàn)有的“有效”數(shù)據(jù)。在文件升級(jí)中間的寫入操作總是會(huì)寫入到一個(gè)新的未用區(qū)域。因此如果這次操作因?yàn)橥话l(fā)事故或電源故障不能完成,現(xiàn)有的數(shù)據(jù)將保持不變。重新啟動(dòng)后,文件系統(tǒng)可以重新執(zhí)行和正確完成寫操作,這樣就可以從可能損壞傳統(tǒng)文件系統(tǒng)的狀態(tài)中恢復(fù)過來。
事務(wù)文件系統(tǒng)可以通過處理設(shè)備中的事務(wù)日志來動(dòng)態(tài)建立文件系統(tǒng)的層次結(jié)構(gòu)。這種操作發(fā)生在系統(tǒng)啟動(dòng)之時(shí),應(yīng)設(shè)計(jì)成只有很少部分的數(shù)據(jù)需要讀取和CRC校驗(yàn)。這樣一來,文件系統(tǒng)可以獲得高的數(shù)據(jù)完整性和快速的重啟時(shí)間。例如QNX ETFS可以在數(shù)十毫秒內(nèi)恢復(fù),而傳統(tǒng)的文件系統(tǒng)需要數(shù)百毫秒。
圖1:這種車載導(dǎo)航系統(tǒng)是要求大容量可靠閃存文件系統(tǒng)(用于三維映射、動(dòng)態(tài)路由等)的一個(gè)實(shí)例。
如圖2所示,在純粹基于事務(wù)的文件系統(tǒng)中,每個(gè)事務(wù)由頭和用戶數(shù)據(jù)組成。事務(wù)頭被放在閃存陣列的空閑字節(jié)中。例如,一個(gè)具有2112字節(jié)頁的NAND器件可以由64字節(jié)的頭和2048字節(jié)的用戶數(shù)據(jù)組成。事務(wù)頭標(biāo)識(shí)數(shù)據(jù)所屬的文件以及其邏輯偏移,并包含一個(gè)序列號(hào)來確定事務(wù)的順序。頭部還包括CRC和 ECC字段,用于誤碼檢測(cè)和糾正。
圖2:這張器件圖表明了它相對(duì)于純事務(wù)文件系統(tǒng)中物理媒介的獨(dú)立性。
在系統(tǒng)啟動(dòng)時(shí),文件系統(tǒng)掃描這些事務(wù)頭來快速重構(gòu)存儲(chǔ)器中的文件系統(tǒng)結(jié)構(gòu)。除了確保高的數(shù)據(jù)完整性和快速的重新啟動(dòng)時(shí)間,一個(gè)閃存文件系統(tǒng)還必須具有可以延長閃存壽命的特性,進(jìn)而增加整個(gè)嵌入式系統(tǒng)的長期可靠性。這些特性包括讀取性能劣化監(jiān)測(cè)、動(dòng)態(tài)和靜態(tài)損耗平衡以及避免文件碎片的技術(shù)。
恢復(fù)丟失的比特
在NAND閃存塊內(nèi)的每一次讀操作都會(huì)使保持?jǐn)?shù)據(jù)位的電荷減弱。因而,在大約10萬次讀操作后閃存塊就會(huì)丟失數(shù)據(jù)。為了解決這個(gè)問題,一個(gè)設(shè)計(jì)完善的文件系統(tǒng)會(huì)跟蹤讀操作,并在塊的讀次數(shù)達(dá)到極限之前標(biāo)記出弱電荷塊以便進(jìn)行刷新。文件系統(tǒng)隨后執(zhí)行一次刷新操作,該操作將數(shù)據(jù)拷貝到一個(gè)新的閃存塊,并擦除該弱塊。這種擦除實(shí)現(xiàn)了對(duì)閃存塊的再充電。
文件系統(tǒng)還應(yīng)該對(duì)所有的讀寫操作執(zhí)行ECC運(yùn)算,以便從可能發(fā)生的任何單比特差錯(cuò)中恢復(fù)。然而,盡管ECC對(duì)于那些本身丟失了單個(gè)比特的閃存效果很好,但是對(duì)于在寫操作期間因?yàn)殡娫垂收隙鴮?dǎo)致的很多比特?fù)p壞則無能為力。因此,文件系統(tǒng)應(yīng)該對(duì)每個(gè)事務(wù)執(zhí)行一次CRC檢驗(yàn),以快速檢測(cè)出損壞的數(shù)據(jù)。如果CRC 檢測(cè)到一個(gè)錯(cuò)誤,文件 系統(tǒng)就可以使用ECC糾錯(cuò)功能將數(shù)據(jù)恢復(fù)到一個(gè)新塊上,然后標(biāo)記出弱電荷塊以便擦除。
動(dòng)態(tài)和靜態(tài)損耗平衡
每個(gè)閃存塊在其失效之前的擦除次數(shù)是有限的。在某些器件中,這個(gè)數(shù)字可以低到10萬次擦除。為了解決這個(gè)問題,文件系統(tǒng)必須實(shí)現(xiàn)動(dòng)態(tài)損耗平衡,它通過將擦除次數(shù)均勻地分散到設(shè)備中來延長閃存壽命。
差異可能很大:從沒有損耗平衡幾天就產(chǎn)生故障的使用情形到利用損耗平衡超過40年的情形。為實(shí)現(xiàn)動(dòng)態(tài)損耗平衡,文件系統(tǒng)會(huì)跟蹤每個(gè)塊的擦除次數(shù),然后優(yōu)先使用那些較少使用的塊。
通常,閃速存儲(chǔ)器包含大量的靜態(tài)文件,這些文件經(jīng)常被讀取,但不會(huì)再寫入。這些文件占用的閃存塊沒有理由被擦除。如果閃存中大部分文件是靜態(tài)的,剩余部分包含動(dòng)態(tài)數(shù)據(jù)的塊的損耗將戲劇性地加快。對(duì)于NAND存儲(chǔ)器來說這方面的問題更大,因?yàn)镹AND每個(gè)塊的讀次數(shù)相當(dāng)有限。
因此,一個(gè)設(shè)計(jì)優(yōu)秀的文件系統(tǒng)應(yīng)提供靜態(tài)損耗平衡功能,它將較少使用的靜態(tài)塊中的數(shù)據(jù)拷貝到過量使用的塊中,從而實(shí)現(xiàn)塊的平衡使用。這種方法可以讓過量使用的塊休息,因?yàn)樗鼈儸F(xiàn)在存儲(chǔ)的是靜態(tài)數(shù)據(jù),并將使用較少的靜態(tài)塊移動(dòng)到動(dòng)態(tài)塊組中。
盡量減少文件碎片
文件碎片也是閃存器件的一個(gè)問題。然而,支持去碎片技術(shù)只是解決方案的一部分。因?yàn)镹AND閃存具有有限的寫次數(shù),文件系統(tǒng)必須盡可能避免碎片產(chǎn)生,以延長閃存的壽命。
基于日志的文件系統(tǒng)經(jīng)常受碎片的影響,因?yàn)閷?duì)已有的文件進(jìn)行刷新或?qū)懭霑?huì)產(chǎn)生一個(gè)新的事務(wù)。為減少很多小事務(wù)產(chǎn)生的碎片,QNX ETFS使用寫緩沖來將小的寫入合并成大的寫入事務(wù)。文件系統(tǒng)還能監(jiān)視每個(gè)文件的碎片水平,并對(duì)那些已經(jīng)嚴(yán)重碎片化的文件進(jìn)行后臺(tái)去碎片處理。這種后臺(tái)活動(dòng)應(yīng)該總是能被用戶活動(dòng)占先,以便確保對(duì)正在進(jìn)行去碎片處理的文件進(jìn)行立刻訪問。
正確的組合
完全可能構(gòu)建一個(gè)能提供高吞吐量、高可靠性和快速啟動(dòng)時(shí)間的閃存文件系統(tǒng)。通過整合事務(wù)級(jí)的設(shè)計(jì)、成熟的糾錯(cuò)以及損耗平衡方法,閃存文件系統(tǒng)完全可以解決當(dāng)前嵌入式汽車信息娛樂設(shè)備提出的復(fù)雜要求。
評(píng)論