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