陳 臻
(中國電子科技集團公司第五十一研究所,上海 201802)
基于RAID-5的機載陣列存儲技術
陳 臻
(中國電子科技集團公司第五十一研究所,上海 201802)
在現有的機載環境下,對空中復雜環境的電磁信號的采集記錄信息量巨大,往往無法在一次的飛行試驗中實時分析所獲取的信息。大容量實時信息采集存儲的必要性越來越得到重視,在復雜環境中,各個波段的信號混疊預處理之后的數據需要在地面恢復重演。介紹了一種基于COM-E模塊+Xilinx K7系列FPGA+RAID控制器+XMC存儲模塊架構的存儲系統,模塊化的設計更容易維護和日后升級使用。通過RAID-5的陣列管理方式靈活控制工作模式,提高存儲速率。系統的實時寫入帶寬大于3 GB/s,可以作為機載環境下采集設備后端的高速存儲設備廣泛應用。
RAID-5;NAND-Flash;機載;高速;陣列存儲
當前航空航天技術迅速發展,各種新興的電子設備被安裝于各類機載設備上。這些電子設備用于測量機載設備的參數,會產生大量的需要記錄的數據用于記錄飛行過程中飛行的工作狀態。這些數據的來源多樣,產生速率快,數據量大。受制于機載設備本身實時處理能力的局限性,這些數據需要被實時高效地記錄下來,返回地面后需要被回收和分析研究。
同時,隨著半導體工藝的迅速發展,大規模集成電路的密度越來越高,前端數據采集系統的采集速率、精度、測量范圍等性能也大幅提升,高帶寬、高速率、多通道已經成為當前機載設備采集系統的主流發展趨勢。一款采樣速率為1 GHz、采樣位數為12 bit的模數轉換(AD)芯片,1 s便會產生12 Gbit的數據,要完整記錄這1 s內的信號脈內信息,存儲速率必須要大于1.5 GB/s。同時機載設備單次飛行的時間長,所記錄的空中復雜環境中的信號具有多樣性,多頻段混疊,能在短時間內產生大量的數據信息。這些特征對機載存儲設備的速率和容量都提出了非常嚴苛的要求。同時,機載設備的飛行成本高,需要在有限的飛行次數中獲取盡可能多的數據信息,高性能的存儲系統在未來的機載設備中將有著必然的需求。
本文設計了一款基于COM-E模塊+Xilinx K7系列現場可編程門陣列(FPGA)+獨立磁盤冗余陣列(RAID)控制器+XMC存儲模塊架構的標準陣列存儲系統,采用了RAID-5方式對磁盤陣列進行統籌管理,用于記錄機載設備飛行過程中的海量數據。由于采用了CPU架構,通過RAID-5實現文件系統的重構,數據重演過程可以免于導出,可直接通過操作系統對數據進行分析和過濾。
1.1 數據來源
系統通過標準RapidIO協議作為數據來源總線接口。RapidIO是一種高效的、低引腳數量的高速互連體系架構,傳輸可靠,硬件成本低,無需專門配置外圍電路對其進行支持。
2007年發布的RapidIO2.0協議,速率支持范圍從原有的3.125 Gbps基礎上,增加了5 Gbps 和 6.25 Gbps 2種速率,最大的信號傳輸帶寬提高到100 Gbps,在4×模式下足以滿足機載設備多種來源的數據速率要求。
RapidIO同時對各類微程序控制器(MCU)均有較好的兼容性,FPGA、數字信號處理器(DSP)、 PowerPC均對RapidIO有開放式的IP核或庫函數,便于在后期維護和升級。
本設計通過Xilinx(賽靈思)公司Kintex-7 系列FPGA作為RapidIO協議接收和預處理的芯片,將RapidIO轉換為PCIe2.0協議并將數據轉發至RAID芯片進行進一步處理。
1.2 RAID技術
RAID用于將多個磁盤存儲陣列統一管理,可分為RAID0~RAID6等多個等級。選取適當的RAID等級,可以滿足用戶對存儲系統擴展性、讀寫性能和存儲容量的要求。在均衡管理和冗余糾錯方面,RAID-5是目前最主流的RAID方式。RAID-5使用其中一個陣列保存校驗數據,當整個陣列存儲系統某個陣列的數據發生損壞時,可利用余下的陣列和保存校驗數據的陣列重新恢復損壞陣列的數據而保證整個存儲數據的完整性。機載設備的數據完整性尤為重要,需要完整重演整個飛行過程,RAID-5可很好地保證存儲陣列和數據的意外損壞不會發生[1]。
RAID芯片采用了Marvell公司的88RC9580,該芯片將6U VPX載板上自帶的4路SATA協議的數據流以及來自XMC存儲模塊的4路SATA協議的數據流,共8路SATA數據流,組成磁盤列陣,并以PCIe 2.0 ×8的形式和PCIe橋接芯片互相通訊。Marvell 88RC9580原理框圖如圖1所示。
88RC9580內嵌900 MHz ARM CPU,同時支持最多8 GB DDR2/DDR3內存,全面兼容PCIe 2.0 ×1,×4,×8,支持8個 6 Gbps SATA/SAS接口,支持SSP/SMP/STP/Wide port形式的SAS接口,能夠很好地支持RAID-5方式的管理模式。
利用CPU通過PCIe接口直接對88RC9580進行RAID方式的配置和陣列管理,可以方便地在操作系統上對文件進行數據維護和管理。
1.3 NAND Flash閃存控制
以往的閃存控制多采用MCU直接控制的方式,通過直接對NAND Flash進行讀寫操作的方式進行管理,這種方法的管理算法復雜,效率低下。且由于每片NAND Flash芯片的自編程操作時,內部CACHE在緩沖數據時,無法對其進行任何操作。如要提高工作效率,需對整個磁盤陣列進行流水線的讀寫操作,即在第1組陣列的緩沖過程中,在第2組陣列進行數據操作,進行多陣列的聯協操作。在需要進行容量擴展或速率的升級時需要顛覆原先的流水線陣列的結構,不便于維護[2]。
本設計選用了Silicon Motion閃存主控芯片SM2246EN。該芯片專用于對NAND Flash的直接操作控制。SM2246EN原理框圖如圖2所示。
SM2246EN超高連續讀取速率可達540 MB/s,持續寫入速率可達490 MB/s,同時先進的錯誤矯正(ECC)管理可以有效地增加數據的可靠性,支持先進的Toggle、ONFI及Asynchronous NAND算法。每片SM2246EN建立一個NAND Flash陣列,通過SATA接口與RAID芯片進行通訊,多個SM2246EN建立的多陣列維護的工作交給RAID芯片來完成,可以最大程度地減輕CPU的工作負荷。本設計使用了8片SM2246EN、每組外掛12片NAND Flash的方式,采用多組陣列的方式既保證了數據位寬,又為NAND Flash的流水操作保證了空間上的陣列數量。

圖1 Marvell 88RC9580原理框圖

圖2 SM2246EN原理框圖
1.4 系統架構
目前主流的存儲系統的架構主要分為FPGA+NAND Flash陣列、FPGA+DSP+NAND Flash陣列、FPGA+CPU+NAND Flash陣列,其中第1種FPGA直接控制陣列的方式,管理算法復雜,且沒有文件系統,無法直接對存儲系統進行有效的管理,需要配置地面大容量的記錄儀等卸載設備;第2種架構加上DSP后對信號處理的能力增強,但對陣列的管理依然要通過FPGA進行;第3種通過CPU模塊加上操作系統可以增強對文件系統的管理,且FPGA豐富的對外接口可以分擔CPU在數據傳輸方面的負荷,也可以進行一部分的預處理[3]。
陣列存儲的設計原理框圖如圖3所示,該設計選用第3種架構,利用Xilinx(賽靈思)公司Kintex-7 FPGA作為協議轉換通道,將RapidIO協議轉換為PCIe協議。PLX公司的PEX8748芯片作為PCIe橋芯片,可以在PCIe2.0/3.0協議中切換,對整個系統內部的數據流進行有效綜合,使CPU、存儲陣列和采集數據源之間的數據得以互相訪問。選用的COM-E模塊自帶INTEL I7 CPU及其外圍電路,自帶操作系統可進行后期平臺開發,應用軟件用于分析數據。

圖3 6 U 陣列存儲系統設計原理框圖
2.1 FPGA軟件
利用Xilinx RapidIO解決方案實現RapidIO網絡中FPGA上的RapidIO節點。FPGA原理功能框圖如圖4所示,利用Xilinx RapidIO的GTX接口進行數據的交互,對外具有4個4×RapidIO的5 Gbps的通道。通過RapidIO IP將高速串行信號轉換為并行數字信號,將數據轉發入RapidIO LOGIC模塊進行預處理。

圖4 FPGA 原理功能框圖
RapidIO 邏輯分為2個子模塊,分別為CLK MODULE 和RapidIO TOP。CLK MODULE為時鐘模塊,將外部時鐘的輸入轉換為合適的時鐘;RapidIO TOP模塊完成RapidIO 協議的實現,分為3個子模塊:RAPIDIO CORE、REQUEST MODULE 和RESPONSE MODULE。各模塊對應功能如下:RAPIDIO CORE,實現對RapidIO 的IP 例化;REQUEST MODULE,實現RapidIO 的命令請求發送;RESPONSE MODULE,完成RapidIO 的命令接收解析。RapidIO邏輯架構如圖5所示。

圖5 RapidIO LOGIC邏輯架構圖
PCIe 邏輯設計主要分為5 個子模塊[4],分別為PCIe Endpoint、PCIe DMA、USER CMD、SEND FIFO和RCV FIFO,各模塊對應功能如下:PCIe Endpoint,為封裝的PCIe 協議內核,完成PCIe 協議的鏈路層和傳輸層;PCIe DMA,完成PCIe 協議的事務層,并可以直接進行向上位機內存空間進行數據讀寫;USER CMD,用于產生控制指令;SEND FIFO,接收來自DDR 的數據暫時緩存,并準備送入PCIeEndPoint;RCV FIFO,接收來自PCIeEndPoint 的數據暫時緩存,并準備送至DDR。PCIe邏輯架構框圖如圖6所示。

圖6 PCIe邏輯框圖
2.2 RAID-5控制
COM-E板載CPU通過PCIe接口對88RC9580進行控制,可以采用RAID-5方式對磁盤陣列進行管理。Marvell官網提供的動態鏈接庫(DLL)可對88RC9580進行RAID方式的配置和錯誤檢查及糾正(ECC)校驗算法的設置,通過ONFI機制高效控制管理NAND Flash陣列。
COM-E模塊基于X86架構,在Windows操作系統可以更直觀地對磁盤陣列進行可視化的管理。圖7顯示了RAID-5方式對Flash陣列進行控制的軟件框架結構,其中CPU實現了上層應用層的控制,也就實現了對整個Flash陣列的控制[5]。

圖7 RAID-5控制框架
對RAID-5控制器的訪問操作一共可分為5個步驟:
(1) 打開PCIe總線端口,建立起所有端口的拓撲結構。由于本設計中的RAID-5控制器和FPGA端口均有PCIe端口,選擇0號端口對RAID-5控制器進行配置。
(2) 通過Marvell官方提供的API函數raid_request_channel申請RAID通道。
(3) 通道開啟后,需要對CPU的內存數據及傳輸數據的CACHE進行申請。當存儲模塊高速工作后,對CPU和內存的占用會達到一個較高比率,通過raid_alloc_coherent函數對資源進行預先申請,可使CPU處于待接收數據的狀態。
(4) 對傳輸數據的分包大小進行設置,每存滿一個4 GB的文件建立一個新的文件。選擇4 GB大小可方便對數據進行導出操作時,滿足接收方FAT32文件系統最大接收的單個文件大小。
(5) 完成分包的設置后,將文件分包的描述符掛載至RAID控制器的PCIe端口,利用raid_async_send函數完成數據的傳輸。當一幀數據完成傳輸后會產生一個中斷,進入中斷處理。在中斷處理的過程中,內存會開啟一個緩存來接收下一幀數據,步驟(2)中的CACHE開啟的大小決定著內存對于突發數據流的緩沖幀數的大小。完成一幀數據的傳輸后會自動從內存中取得下一幀數據,繼續傳輸直至清空內存中用于RAID通道開啟的CACHE。單幀操作的流程圖如圖8所示。

圖8 RAID-5操作流程圖
數據傳輸的速率為機載存儲設備最重要的指標,直接影響到數據采集的帶寬和完整性。故在設計初期對存儲速率的分析顯得尤為重要。
流水線技術是提升存儲速率的關鍵技術,可以避免存儲芯片內部CACHE進行緩存工作時浪費大量時間。具體而言,流水線技術是一種在空間上并行執行、時間上重疊執行的操作,其基本理論為將一個任務t拆分成為若干個子任務t1,t2,…,tm,一旦t1完成,后繼的子任務就可以立即開始,并以同樣的速率進行運算。
記錄一條存儲信息定義為一個任務,第k個任務用Tk表示,每個任務需要M個過程,則:
(1)
圖8為NAND Flash的操作流程,tCBSY為芯片內部的頁編程操作,充分利用該時間對編程時間進行流水操作,可以大幅度地提高寫入的速率。即對一組陣列進行操作時,在tCBSY這段時間內不能對其進行其他任何操作,但可對另一組陣列進行操作。每個Flash本身包含4個target,自流水級別即可達8級。加上硬件設計時采用的多陣列設計,本設計的流水操作最大可達32級。N級流水操作原理如圖9所示。

圖9 N級流水操作原理

每條指令執行時間均為τ=max{ti},即一級流水操作中最慢的時間,對Flash芯片而言即為芯片自編程時間。如果在這個時間間隔內,對需要處理的其他Flash陣列進行流水操作,則:

(2)
式中:n為流水級數;L為第1組任務工作忙的時間間隔內通過流水的任務數。
假設進行4級流水操作,L取值不同的條件下:n=4,L=10時,η=0.77;n=4,L=20時,η=0.87;n=4,L=30時,η=0.91。
可以看出,流水段數一定的情況下,增加任務數L可以提升流水線的效率,使效率η→1。
衡量存儲速率的另一個重要指標是吞吐率,它表示單位時間內處理的任務數量,通過提高吞吐率,可提高流水線任務的處理能力。定義為:
實施一個任務所需要的時間=1/吞吐率
流水線任務的吞吐率P為:

(3)
隨著流水線的效率提高,其吞吐率也會隨之提高。
本設計中一個存儲陣列由4片Flash組成,根據圖8,進行四plane(疊層)操作時,若進行4級流水,本系統寫入速度為(并聯芯片數×流水線級數×頁大小×頁個數) /(加載時間+寫入編程時間)=(4×4×8 640×4) Byte /(90+1 300) μs=396 MB/s,若進行極限32級流水,則讀取速率可達3 168 MB/s,即存儲速率可超過3 GB/s。
根據前端信號來源的分類特征,本設計需要對前端1 GHz采樣率的12位AD芯片采樣的原始數據進行錄取,單路AD的存儲速率為1.5 GB/s,加上飛行過程中產生的狀態信息,在RapidIO通道上產生的有效數據的速率約為1.8 GB/s。RapidIO2.0的數據開銷后的打包效率約為92%,即對該設計的最低的存儲速率要求為2 GB/s。通過32級流水操作足以滿足系統對存儲功能的要求。
在COM-E模塊的WIN7系統上安裝存儲速率測試軟件AS SSD Benchmark對整個6 TB的存儲陣列進行速率測試,得到的性能測試結果如圖10所示。

圖10 AS SSDBenchmark
可以看到,持續的讀寫速率均超過了3 GB/s,通過對固定數據的讀寫對比測試,對1 TB的文件進行的24 h持續操作對比試驗,數據誤碼率低于10-13。
本文介紹了一種針對航空機載設備的陣列存儲技術,改變了以往機載存儲設備對文件管理系統方面的缺失性。通過FPGA的對外接口資源進行協議轉換,利用高性能的CPU通過RAID-5方式對陣列進行統籌管理。該技術具有以下特點:
(1) 對邏輯資源的分配進行優化,將有限的CPU的邏輯資源充分用于文件系統的建立和海量數據的維護。
(2) 合理分配存儲陣列構成的空間結構,對流水操作的數量和數據位寬進行綜合考慮,充分提高流水線效率。
(3) 通過硬RAID的方式,利用RAID-5方式減少資源開銷,保證數據的糾錯機制,實現對陣列數據完整性保障及數據損耗的恢復功能。
(4) 存儲陣列的32級流水模式大幅增加了單個存儲陣列的吞吐率,有效提升了存儲速率,也節省了芯片使用的數量。
單塊存儲陣列的存儲容量達到了6 TB,存儲和回訪的速率均超過3 GB/s,在更大帶寬和速率的需求下可以方便擴容并聯使用,能夠充分保證機載環境下數據的高吞吐率和數據重演的要求,也可以作為一種通用的存儲系統應用于各種航空航天設備。
[1] 董永帥.Flash文件系統及存儲管理技術研究與實現[D].武漢:華中科技大學,2008.
[2] 潘旭明.基于NAND Flash的存儲設備設計與實現[J].無線電通信技術,2017,43(4):91-95.
[3] 彭振翼.固態存儲系統PCIe接口的設計方法與實現[D].武漢:華中科技大學,2013.
[4] 步凱.基于RAID技術的固態存儲陣列系統的研究與設計[D].長沙:國防科技大學,2008.
[5] 張元凱.基于PCIe和RAID5的高速存儲系統設計[D].北京:中國科學院,2010.
AirborneArrayMemoryTechnologyBasedonRAID-5
CHEN Zhen
(51st Research Institute of CETC,Shnaghai 201802,China)
In the existing airborne environment,the information collection and record quantity of electromagnetic signals in complex air environment is huge,and it is often impossible to analyze the acquired information in real time in one flight test.The necessary for large-capacity real-time information acquisition and storage is getting more and more attention.In complex environment,the data after preprocessing of each band's signal are needed to be resumed on the ground.This article describes a storage system based on COM-E module + Xilinx K7 series FPGA+RAID controller+XMC storage module architecture,and modular design is easier to be maintained and upgraded for the future.The array management of RAID-5 is used to flexibly control the working mode and improve the storage rate.The real-time write bandwidth of the system is greater than 3 GB/s,and it can be widely used as a high-speed storage device at the back of acquisition equipment in airborne environment.
RAID-5;NAND-Flash;airborne;high speed;array memory
TP333
A
CN32-1413(2017)05-0074-07
10.16426/j.cnki.jcdzdk.2017.05.016
2017-08-23