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

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

1. 引言

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

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

2. 星載存儲器硬件結構

2.1 空間任務的數據存儲特點

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

2.2 硬件結構的設計

根據空間數據存儲的特點,設計大容量存儲器硬件結構如圖 1 所示。
 

 

圖 1 存儲器硬件結構圖 由于單片F(xiàn)LASH 存儲容量有限,因而采用多片F(xiàn)LASH 組成存儲陣列,提升存儲器的總容量。

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

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

圖 2 流水線操作示意圖

3. YAFFS2 分析與改進

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

3.1 硬件結構適應性

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

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

3.2 壞塊管理策略

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

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

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

3.3 垃圾回收策略

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

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

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

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

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

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

5. 結束語

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。