基于FLASH星載存儲器的高效管理研究
壞塊管理的另外一個(gè)任務(wù)就是決定何時(shí)對新產(chǎn)生的壞塊進(jìn)行標記。YAFFS2 采用產(chǎn)生即標記的策略,對于新產(chǎn)生的壞塊馬上進(jìn)行標記處理。該方法可以保證壞塊表的實(shí)時(shí)更新,是采用額外存儲介質(zhì)保存壞塊表的比較理想的方案。但是本方案的壞塊標記采用直接寫(xiě)入 FLASH 的策略,實(shí)時(shí)標記壞塊會(huì )降低系統的數據處理能力,有可能造成數據的丟失。因而本方案不對壞塊進(jìn)行實(shí)時(shí)標記,而是首先在內存中將新產(chǎn)生壞塊記錄下來(lái),等到系統空閑的 時(shí)候才進(jìn)行壞塊標記。
3.3 垃圾回收策略
NAND FLASH 只能在空閑塊中寫(xiě)入數據,對于已經(jīng)使用過(guò)的塊必須進(jìn)行擦除使之成為空閑塊才能再次使用,這個(gè)過(guò)程稱(chēng)為垃圾回收。垃圾回收涉及到對塊的擦除操作以及塊內有效數據頁(yè)的重新寫(xiě)入,對系統性能影響較大,因而合適的回收時(shí)機與策略是垃圾回收的關(guān)鍵。 YAFFS2 采用的垃圾回收策略為:每次在數據寫(xiě)入之前判斷當前可用的空閑塊,如果可用空閑塊數量較少,則馬上進(jìn)行垃圾回收;如果空閑塊較多,則采用松弛的回收算法,寫(xiě)多次再 進(jìn)行一次垃圾回收。YAFFS2 垃圾回收以剩余空閑塊數目作為是否回收的依據,而沒(méi)有考慮 數據流存儲的特點(diǎn),因而在數據寫(xiě)入的時(shí)候經(jīng)常會(huì )碰到需要垃圾回收的情況,導致數據存儲速率的大幅下降。針對不同的應用環(huán)境,還存在一些其它的垃圾回收算法[4]。這些算法的共同特點(diǎn)是盡量尋找合適的回收時(shí)機減小對數據寫(xiě)入的影響,同時(shí)選擇合適的回收策略提高系 統性能,但這些算法策略過(guò)于復雜,不適合空間應用。
考慮到星載存儲器運行模式及衛星對數據實(shí)時(shí)存儲要求苛刻的特點(diǎn),本方案不在寫(xiě)入數據時(shí)進(jìn)行垃圾回收,而選擇在系統空閑時(shí)由用戶(hù)主動(dòng)進(jìn)行垃圾回收。當容量不足的時(shí)候文件系統給出提示信息,告知用戶(hù)需要進(jìn)行垃圾回收,用戶(hù)也可以隨時(shí)查詢(xún)文件系統的狀態(tài)信息。該方案設計最為簡(jiǎn)單,對數據寫(xiě)入的影響也最小,只是每當系統容量不足的時(shí)候需要用戶(hù)主 動(dòng)進(jìn)行垃圾回收。
4. 系統實(shí)現與測試
以某星載存儲器項目為背景,本文實(shí)現了一個(gè)如圖 1 所示結構的星載存儲器演示系統。 該系統采用Samsung K9F1G08U0A 芯片組成4*4 的存儲陣列作為存儲空間,采用Xilinx xc2vp40 FPGA 芯片作為控制芯片,同時(shí)選用FPGA 內嵌軟核MicroBlaze 完成CPU 功能 [5]。FPGA 同時(shí)負責完成FLASH 驅動(dòng)層的功能,降低軟件的控制復雜度,提高FLASH 的訪(fǎng) 問(wèn)效率。對于輸入輸出數據流的控制也使用FPGA 邏輯完成。本系統利用FLASH 存儲芯片 和FPGA 控制芯片實(shí)現了一個(gè)SOPC 的存儲系統,極大地簡(jiǎn)化了存儲器的硬件結構,并且 具有很大的靈活性。
演示系統采用 2 路SPI 實(shí)時(shí)視頻流模擬數據輸入,通過(guò)自定義協(xié)議傳輸存儲數據至地面 數據接收卡實(shí)現數據輸出。由于原始YAFFS2 文件系統只能對單片FLASH 進(jìn)行管理,因而 首先在單片FLASH 上對原始YAFFS2 進(jìn)行測試,然后修改FLASH 底層驅動(dòng)使得YAFFS2 能 夠管理4 片并行存儲結構,最后對實(shí)際的修改后方案進(jìn)行測試。測試結果顯示,采用原始 YAFFS2 文件系統的數據實(shí)時(shí)輸入速率小于12.5Mbps,改進(jìn)為并行結構后數據輸入速率也不會(huì )超過(guò)50Mbps,否則會(huì )造成輸入數據的部分丟失。而采用本文改進(jìn)方案的設計,實(shí)時(shí)數 據輸入速率達到200Mbps,數據存儲穩定可靠。
上述測試結果表明,改進(jìn)后的方案不但很好地實(shí)現了數據的文件化管理,數據實(shí)時(shí)輸入 速率也比原始YAFFS2 系統至少提高了16 倍。該系統的數據指標已經(jīng)能夠滿(mǎn)足部分星載存 儲器的要求,為了進(jìn)一步提高數據處理能力,可以考慮增加并行的芯片數目以及采用多級流 水線(xiàn)的設計結構。
5. 結束語(yǔ)
以 NAND FLASH 為存儲介質(zhì)的大容量存儲器在空間應用中得到越來(lái)越廣泛的重視,但 是由于FLASH 使用的特殊性,目前國內的FLASH 星載存儲器普遍尚未采用文件系統進(jìn)行數據管理,而是采用直接訪(fǎng)問(wèn)存儲芯片的方式,數據管理復雜且使用缺乏靈活性。本文以商用 文件系統YAFFS2 為基礎,針對空間應用數據存儲的特點(diǎn),提出了YAFFS2 文件系統的改進(jìn)方案,并且實(shí)現了一個(gè)實(shí)際的星載存儲器系統,對改進(jìn)后的方案進(jìn)行了驗證。實(shí)驗表明,改進(jìn)后的文件系統很好地完成了數據的文件化管理,并且滿(mǎn)足了空間應用大容量、高實(shí)時(shí)數據 率存儲的要求。
評論