《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設(shè)計應用 > 基于FLASH星載存儲器的高效管理研究
基于FLASH星載存儲器的高效管理研究
摘要: NAND FLASH開始廣泛應用于星載存儲器,針對FLASH的數(shù)據(jù)高效管理成為該類存儲器研究的重要組成部分。本文以商用文件系統(tǒng)YAFFS2為基礎(chǔ),結(jié)合空間應用的數(shù)據(jù)存儲特點,引入文件系統(tǒng)的概念對存儲器數(shù)據(jù)進行管理,制定了針對星載存儲器的數(shù)據(jù)管理方案,搭建了一個實際的星載存儲器對相應的管理方案進行了驗證。
關(guān)鍵詞: Flash 星載存儲器 高效管理
Abstract:
Key words :

NAND FLASH" title="FLASH">FLASH開始廣泛應用于星載存儲器" title="星載存儲器">星載存儲器,針對FLASH的數(shù)據(jù)高效管理" title="高效管理">高效管理成為該類存儲器研究的重要組成部分。本文以商用文件系統(tǒng)YAFFS2為基礎(chǔ),結(jié)合空間應用的數(shù)據(jù)存儲特點,引入文件系統(tǒng)的概念對存儲器數(shù)據(jù)進行管理,制定了針對星載存儲器的數(shù)據(jù)管理方案,搭建了一個實際的星載存儲器對相應的管理方案進行了驗證。

1. 引言

在航天航空任務中,數(shù)據(jù)存儲占有重要的地位,高可靠的大容量數(shù)據(jù)存儲設(shè)備是衛(wèi)星上的關(guān)鍵設(shè)備之一。由于半導體存儲芯片具有高集成度、高存儲密度、低功耗、防腐防震等突出優(yōu)點,因而使用半導體存儲芯片作為數(shù)據(jù)存儲介質(zhì)成為星載數(shù)據(jù)存儲設(shè)備的主流設(shè)計方案。NAND FLASH 作為一種優(yōu)秀的半導體存儲芯片,同時具有掉電非易失的特性,而且它強調(diào)降低每比特數(shù)據(jù)的存儲成本,提供更高的存儲密度和更好的性能,是理想的數(shù)據(jù)存儲介質(zhì)。但NAND FLASH 自身具有一些特性,使得它不能像普通磁盤那樣進行操作[1],因而需 要設(shè)計專門的文件系統(tǒng)來進行基于NAND FLASH 存儲器的管理,提高存儲器的可靠性和易 用性[2]。

本文的組織方式如下:第二節(jié)研究了空間應用的數(shù)據(jù)存儲特點,并提出了相應的星載存儲器硬件設(shè)計結(jié)構(gòu)。第三節(jié)具體分析了YAFFS2[3]各個關(guān)鍵算法的優(yōu)缺點,并針對空間應用提出了相應的修改方案。第四節(jié)實現(xiàn)了一個具體的空間存儲器系統(tǒng),對第三節(jié)中的算法進行了實驗驗證。最后第五節(jié)是對全文的總結(jié)。

2. 星載存儲器硬件結(jié)構(gòu)

2.1 空間任務的數(shù)據(jù)存儲特點

隨著對地觀測技術(shù)的發(fā)展,對地觀測設(shè)備對星載存儲設(shè)備的要求越來越高。首先,數(shù)據(jù)存儲容量的要求逐步提高,各種觀測設(shè)備精度不斷增加,工作壽命不斷延長,隨之產(chǎn)生的數(shù)據(jù)量急劇增加,需要更高容量的存儲設(shè)備才能滿足要求;其次,數(shù)據(jù)存儲速率的要求較高,且需滿足實時性數(shù)據(jù)存儲功能。空間飛行器往往需要同時執(zhí)行多種任務,產(chǎn)生高速的實時數(shù)據(jù)流,因而實時高效的數(shù)據(jù)處理能力是存儲器管理的重要能力之一;最后,數(shù)據(jù)存儲應具有很高的可靠性,由于空間環(huán)境的惡劣性,空間電磁波或者粒子輻射會造成存儲數(shù)據(jù)的損害,因而必須提供可靠的數(shù)據(jù)保護。

2.2 硬件結(jié)構(gòu)的設(shè)計

根據(jù)空間數(shù)據(jù)存儲的特點,設(shè)計大容量存儲器硬件結(jié)構(gòu)如圖 1 所示。
 

 

圖 1 存儲器硬件結(jié)構(gòu)圖 由于單片F(xiàn)LASH 存儲容量有限,因而采用多片F(xiàn)LASH 組成存儲陣列,提升存儲器的總?cè)萘俊?/p>

     為了提高存儲速率,引入并行擴展和流水線操作的概念,將存儲陣列劃分為流水線組,每組多片芯片構(gòu)成并行結(jié)構(gòu)。并行擴展的概念較為直接,由于單片F(xiàn)LASH 芯片的數(shù)據(jù)總線 位寬較小,因而將多片芯片的IO 端口進行并行擴展,而所有控制信號直接連接在一起,這 樣每組芯片可以看作一個整體進行控制,實現(xiàn)了數(shù)據(jù)的并行操作。并行N 片的寬總線結(jié)構(gòu)數(shù)據(jù)處理能力可以達到單片芯片的N 倍。另外由于FLASH 芯片為串行操作接口,數(shù)據(jù)的寫入需要經(jīng)過數(shù)據(jù)加載、芯片自動編程、狀態(tài)讀取的過程才能執(zhí)行下一次的寫入操作,因而寫入性能較差??紤]到芯片自動編程過程的時間較長且不需要外部干預,可以借鑒流水線的設(shè)計思想,利用這段空閑時間對其他組芯片進行控制,提高數(shù)據(jù)吞吐率。流水線操作示意圖如 圖2 所示。假設(shè)數(shù)據(jù)加載時間為Tload,芯片自動編程時間為Tprog,狀態(tài)讀取時間為 Tcheck,采用M 級流水線完成一次流水操作的總時間不超過(Tload+Tcheck)*M+Tprog, 相比不采用流水線操作縮短了(M-1)*Tprog 時間,提高了數(shù)據(jù)吞吐率。具體的總線寬度以及 流水線級數(shù)設(shè)置可以根據(jù)具體應用需求確定。

最后,為了提高數(shù)據(jù)的可靠性,在 FLASH 控制模塊中增加數(shù)據(jù)檢錯糾錯處理模塊。

圖 2 流水線操作示意圖

3. YAFFS2 分析與改進

YAFFS2 具有優(yōu)良的文件管理特性,但是畢竟YAFFS2 是針對商用領(lǐng)域設(shè)計的文件系統(tǒng),對于空間應用并沒有特殊考慮,直接應用有其局限性。本節(jié)針對空間存儲器的特點,對 YAFFS2 不適合空間應用的方面提出具體的修改方案,使得修改后的文件系統(tǒng)能夠滿足空間 數(shù)據(jù)存儲的需求。

3.1 硬件結(jié)構(gòu)適應性

YAFFS2 文件系統(tǒng)只是針對單片F(xiàn)LASH 設(shè)計的系統(tǒng),對于FLASH 存儲陣列的結(jié)構(gòu)沒有 考慮,因而不適宜于直接在陣列結(jié)構(gòu)上面使用,需要進行修改。

并行結(jié)構(gòu)的處理比較簡單,將同組內(nèi)的所有芯片當作整體統(tǒng)一進行處理即可。這樣的設(shè)計簡單,但也會帶來一些額外的問題需要注意。比如當某一片芯片出現(xiàn)壞塊的時候,組內(nèi)其他芯片相應塊也需標記為壞塊,造成一定的存儲空間浪費。另外讀取該組狀態(tài)的時候需要同時兼顧并行多片的狀態(tài)。這些問題需要在文件系統(tǒng)設(shè)計中進行相應的修改。 流水線的設(shè)計較為復雜。由于YAFFS2 的存儲區(qū)管理是基于單片芯片的,因而在多級流 水線結(jié)構(gòu)中,每級流水線需要單獨維護自己的存儲區(qū),比如存儲塊的分配、壞塊的標記等。數(shù)據(jù)寫入的時候首先需要選擇流水線級,在流水線級內(nèi)部再采用現(xiàn)有的存儲區(qū)管理方式。

3.2 壞塊管理策略

FLASH 壞塊的類型可以分為初始壞塊和使用時產(chǎn)生壞塊兩類,不同芯片廠家采用不同 的方式標示初始壞塊,用戶可以根據(jù)具體的芯片手冊進行壞塊識別。三星NAND FLASH 通 過在每塊的第一頁或第二頁的第2048 字節(jié)寫入非0xFF 來標示初始壞塊,新產(chǎn)生的壞塊則 需要用戶自己進行記錄。

壞塊管理的首要任務就是對壞塊進行識別和標記,并且對于壞塊盡量不再進行擦寫操 作。YAFFS2 文件系統(tǒng)要求底層FLASH 驅(qū)動提供壞塊識別和標記的函數(shù),文件系統(tǒng)對這部分 功能并沒有實現(xiàn),也沒有要求具體的實現(xiàn)方式??紤]到存儲區(qū)的并行結(jié)構(gòu)特點,本方案對新產(chǎn)生的壞塊也采用在該塊第一頁的第2048 字節(jié)寫入非0xFF 的方法進行標記。由于寫入或者擦除是對組內(nèi)并行多片芯片同時進行操作,而這些芯片同時發(fā)生壞塊的概率可以認為接近于0,因而對于壞塊的標記總能夠成功寫入某個芯片。該方法將新產(chǎn)生壞塊和原始壞塊進行了統(tǒng)一,設(shè)計簡單并且不需要額外的存儲空間來存儲壞塊表,缺點是對于新產(chǎn)生的壞塊還有 一次寫入操作。

壞塊管理的另外一個任務就是決定何時對新產(chǎn)生的壞塊進行標記。YAFFS2 采用產(chǎn)生即標記的策略,對于新產(chǎn)生的壞塊馬上進行標記處理。該方法可以保證壞塊表的實時更新,是采用額外存儲介質(zhì)保存壞塊表的比較理想的方案。但是本方案的壞塊標記采用直接寫入 FLASH 的策略,實時標記壞塊會降低系統(tǒng)的數(shù)據(jù)處理能力,有可能造成數(shù)據(jù)的丟失。因而本方案不對壞塊進行實時標記,而是首先在內(nèi)存中將新產(chǎn)生壞塊記錄下來,等到系統(tǒng)空閑的 時候才進行壞塊標記。

3.3 垃圾回收策略

NAND FLASH 只能在空閑塊中寫入數(shù)據(jù),對于已經(jīng)使用過的塊必須進行擦除使之成為空閑塊才能再次使用,這個過程稱為垃圾回收。垃圾回收涉及到對塊的擦除操作以及塊內(nèi)有效數(shù)據(jù)頁的重新寫入,對系統(tǒng)性能影響較大,因而合適的回收時機與策略是垃圾回收的關(guān)鍵。 YAFFS2 采用的垃圾回收策略為:每次在數(shù)據(jù)寫入之前判斷當前可用的空閑塊,如果可用空閑塊數(shù)量較少,則馬上進行垃圾回收;如果空閑塊較多,則采用松弛的回收算法,寫多次再 進行一次垃圾回收。YAFFS2 垃圾回收以剩余空閑塊數(shù)目作為是否回收的依據(jù),而沒有考慮 數(shù)據(jù)流存儲的特點,因而在數(shù)據(jù)寫入的時候經(jīng)常會碰到需要垃圾回收的情況,導致數(shù)據(jù)存儲速率的大幅下降。針對不同的應用環(huán)境,還存在一些其它的垃圾回收算法[4]。這些算法的共同特點是盡量尋找合適的回收時機減小對數(shù)據(jù)寫入的影響,同時選擇合適的回收策略提高系 統(tǒng)性能,但這些算法策略過于復雜,不適合空間應用。

考慮到星載存儲器運行模式及衛(wèi)星對數(shù)據(jù)實時存儲要求苛刻的特點,本方案不在寫入數(shù)據(jù)時進行垃圾回收,而選擇在系統(tǒng)空閑時由用戶主動進行垃圾回收。當容量不足的時候文件系統(tǒng)給出提示信息,告知用戶需要進行垃圾回收,用戶也可以隨時查詢文件系統(tǒng)的狀態(tài)信息。該方案設(shè)計最為簡單,對數(shù)據(jù)寫入的影響也最小,只是每當系統(tǒng)容量不足的時候需要用戶主 動進行垃圾回收。

4. 系統(tǒng)實現(xiàn)與測試

以某星載存儲器項目為背景,本文實現(xiàn)了一個如圖 1 所示結(jié)構(gòu)的星載存儲器演示系統(tǒng)。 該系統(tǒng)采用Samsung K9F1G08U0A 芯片組成4*4 的存儲陣列作為存儲空間,采用Xilinx xc2vp40 FPGA 芯片作為控制芯片,同時選用FPGA 內(nèi)嵌軟核MicroBlaze 完成CPU 功能 [5]。FPGA 同時負責完成FLASH 驅(qū)動層的功能,降低軟件的控制復雜度,提高FLASH 的訪 問效率。對于輸入輸出數(shù)據(jù)流的控制也使用FPGA 邏輯完成。本系統(tǒng)利用FLASH 存儲芯片 和FPGA 控制芯片實現(xiàn)了一個SOPC 的存儲系統(tǒng),極大地簡化了存儲器的硬件結(jié)構(gòu),并且 具有很大的靈活性。

演示系統(tǒng)采用 2 路SPI 實時視頻流模擬數(shù)據(jù)輸入,通過自定義協(xié)議傳輸存儲數(shù)據(jù)至地面 數(shù)據(jù)接收卡實現(xiàn)數(shù)據(jù)輸出。由于原始YAFFS2 文件系統(tǒng)只能對單片F(xiàn)LASH 進行管理,因而 首先在單片F(xiàn)LASH 上對原始YAFFS2 進行測試,然后修改FLASH 底層驅(qū)動使得YAFFS2 能 夠管理4 片并行存儲結(jié)構(gòu),最后對實際的修改后方案進行測試。測試結(jié)果顯示,采用原始 YAFFS2 文件系統(tǒng)的數(shù)據(jù)實時輸入速率小于12.5Mbps,改進為并行結(jié)構(gòu)后數(shù)據(jù)輸入速率也不會超過50Mbps,否則會造成輸入數(shù)據(jù)的部分丟失。而采用本文改進方案的設(shè)計,實時數(shù) 據(jù)輸入速率達到200Mbps,數(shù)據(jù)存儲穩(wěn)定可靠。

上述測試結(jié)果表明,改進后的方案不但很好地實現(xiàn)了數(shù)據(jù)的文件化管理,數(shù)據(jù)實時輸入 速率也比原始YAFFS2 系統(tǒng)至少提高了16 倍。該系統(tǒng)的數(shù)據(jù)指標已經(jīng)能夠滿足部分星載存 儲器的要求,為了進一步提高數(shù)據(jù)處理能力,可以考慮增加并行的芯片數(shù)目以及采用多級流 水線的設(shè)計結(jié)構(gòu)。

5. 結(jié)束語

以 NAND FLASH 為存儲介質(zhì)的大容量存儲器在空間應用中得到越來越廣泛的重視,但 是由于FLASH 使用的特殊性,目前國內(nèi)的FLASH 星載存儲器普遍尚未采用文件系統(tǒng)進行數(shù)據(jù)管理,而是采用直接訪問存儲芯片的方式,數(shù)據(jù)管理復雜且使用缺乏靈活性。本文以商用 文件系統(tǒng)YAFFS2 為基礎(chǔ),針對空間應用數(shù)據(jù)存儲的特點,提出了YAFFS2 文件系統(tǒng)的改進方案,并且實現(xiàn)了一個實際的星載存儲器系統(tǒng),對改進后的方案進行了驗證。實驗表明,改進后的文件系統(tǒng)很好地完成了數(shù)據(jù)的文件化管理,并且滿足了空間應用大容量、高實時數(shù)據(jù) 率存儲的要求。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。