馬建鵬,喻崇仁,沈月峰,王施人
(北京計算機技術及應用研究所,北京 100854)
隨著武器裝備的不斷發(fā)展,數(shù)據(jù)探測手段日臻豐富完善,對裝備中的嵌入式數(shù)據(jù)記錄系統(tǒng)提出了更高的數(shù)據(jù)傳輸速率需求與更大的數(shù)據(jù)存儲容量需求,并要求系統(tǒng)在連接管理主機時,能夠快速完成數(shù)據(jù)的導入、導出與回放等數(shù)據(jù)管理功能[1]。然而,單FPGA架構的數(shù)據(jù)記錄系統(tǒng)雖然可以實現(xiàn)快速數(shù)據(jù)傳輸與大容量存儲擴展,但難以完成復雜的數(shù)據(jù)管理;而單處理器架構的數(shù)據(jù)記錄系統(tǒng)則難以實現(xiàn)數(shù)據(jù)的高速傳輸以及大容量的存儲擴展?,F(xiàn)有的嵌入式數(shù)據(jù)記錄系統(tǒng)通常采用單處理器架構,使用通用文件系統(tǒng)或流媒體策略進行數(shù)據(jù)管理[2],難以滿足高速的數(shù)據(jù)傳輸需求,并且數(shù)據(jù)管理效率較低[3]。
本文針對裝備中嵌入式數(shù)據(jù)記錄系統(tǒng)的需求現(xiàn)狀與數(shù)據(jù)特點,采用FPGA+DSP的系統(tǒng)架構,使用FPGA來完成數(shù)據(jù)的快速傳輸與分發(fā),以及大容量的存儲擴展;同時,通過研究通用文件系統(tǒng)與流媒體策略各自的特點,創(chuàng)造性提出了一種輕量級文件管理系統(tǒng);該文件管理系統(tǒng)使用微型管理數(shù)據(jù),可在數(shù)據(jù)高速記錄或回放時,進行內(nèi)存管理數(shù)據(jù)的實時更新,以及硬盤管理數(shù)據(jù)的快速同步,完成對記錄文件的高效可靠管理。
系統(tǒng)采用FPGA+DSP的硬件架構[4]。FPGA芯片與DSP芯片之間使用SRIO總線連接,F(xiàn)PGA芯片與硬盤之間使用SATA總線連接,F(xiàn)PGA芯片與外部數(shù)據(jù)采集設備之間使用PCIe總線相連,DSP芯片與外部管理主機通過網(wǎng)絡相連。系統(tǒng)架構如圖1所示。其中,F(xiàn)PGA完成與數(shù)據(jù)采集設備間的數(shù)據(jù)傳輸、存儲空間的數(shù)據(jù)讀寫、與DSP芯片間的數(shù)據(jù)通信,以及數(shù)據(jù)采集設備接口、硬盤接口與DSP通信接口間的數(shù)據(jù)轉發(fā)控制;DSP完成與管理主機的信息交互、與FPGA芯片間的數(shù)據(jù)通信、以及數(shù)據(jù)的組織與操作控制。
圖1 系統(tǒng)架構圖
FPGA邏輯由PCIe接口控制模塊、SRIO接口控制模塊、SATA接口控制模塊與傳輸控制模塊構成。其中,PCIe接口控制模塊主要實現(xiàn)PCIe協(xié)議的解析與封裝、收發(fā)數(shù)據(jù)的緩存,以及數(shù)據(jù)的DMA傳輸控制;SRIO接口控制模塊主要實現(xiàn)SRIO協(xié)議的解析與封裝、收發(fā)數(shù)據(jù)的緩存,以及數(shù)據(jù)的DMA傳輸控制;SATA接口控制模塊主要實現(xiàn)SATA命令的生成與SATA協(xié)議的解析/封裝,以及收發(fā)數(shù)據(jù)的緩存;傳輸控制模塊主要用于接收解析來自DSP芯片的管理指令、PCIe接口數(shù)據(jù)到SATA接口的分發(fā)控制,以及SATA接口數(shù)據(jù)到SRIO接口的轉發(fā)控制。
DSP芯片軟件包括SRIO接口驅動程序、網(wǎng)卡驅動程序、多線程管理程序與定時器程序。其中,文件管理程序完成對數(shù)據(jù)的組織與操作。
針對數(shù)據(jù)記錄系統(tǒng)數(shù)據(jù)的特點與大容量存儲的特性,同時考慮嵌入式設備有限的內(nèi)存資源以及較低的處理主頻,本文采用了一種較為簡潔的層次化數(shù)據(jù)結構進行數(shù)據(jù)管理,該數(shù)據(jù)結構主要包括數(shù)據(jù)記錄系統(tǒng)信息、數(shù)據(jù)目錄表和數(shù)據(jù)索引表。
2.1.1 數(shù)據(jù)記錄系統(tǒng)信息
數(shù)據(jù)記錄系統(tǒng)信息包含當前存儲資源與數(shù)據(jù)文件資源的使用現(xiàn)狀,便于系統(tǒng)快速的查找、創(chuàng)建與獲取文件信息。數(shù)據(jù)記錄系統(tǒng)信息在系統(tǒng)運行時常駐內(nèi)存,便于快捷地進行數(shù)據(jù)管理;同時,在FPGA外接非易失存儲介質(zhì)中同步進行信息更新,以便在上電或系統(tǒng)異常時,恢復內(nèi)存中的數(shù)據(jù)記錄系統(tǒng)信息。數(shù)據(jù)記錄系統(tǒng)信息內(nèi)容如表1所示。
表1 數(shù)據(jù)記錄系統(tǒng)信息
其中,數(shù)據(jù)記錄系統(tǒng)標識是當前數(shù)據(jù)記錄系統(tǒng)的代號,用以數(shù)據(jù)記錄系統(tǒng)所記錄數(shù)據(jù)在異地備份時,區(qū)分不同數(shù)據(jù)記錄系統(tǒng)的數(shù)據(jù);存儲設備最大容量是FPGA外接非易失存儲介質(zhì)中,除去管理占用,可用于存儲記錄數(shù)據(jù)的最大容量;存儲設備可用容量是除去當前記錄數(shù)據(jù)占用容量以外的可用于分配的存儲容量;可用索引表項個數(shù)是指系統(tǒng)支持的最大索引表項的個數(shù);數(shù)據(jù)文件個數(shù)是指當前系統(tǒng)已經(jīng)創(chuàng)建的數(shù)據(jù)文件個數(shù);可用項表記錄文件目錄表或文件索引表數(shù)組的可用編號;已用項表記錄文件目錄表或文件索引表數(shù)組的已用編號;可用索引表用于記錄不連續(xù)的可用存儲區(qū)域;校驗值是使用循環(huán)冗余校驗算法對文件系統(tǒng)信息進行的校驗計算值。
2.1.2 數(shù)據(jù)文件目錄表
數(shù)據(jù)文件目錄表用來存放單個記錄文件的目錄信息。數(shù)據(jù)文件目錄表的具體內(nèi)容如表2所示。
表2 數(shù)據(jù)文件目錄表
其中,文件名稱是系統(tǒng)根據(jù)當前時間與數(shù)據(jù)特征自動生成的記錄數(shù)據(jù)文件的名稱;文件創(chuàng)建時間即當前文件目錄表的生成時間;文件類型即當前記錄數(shù)據(jù)文件的類型代號;文件位置即當前記錄數(shù)據(jù)文件所占用的文件索引項編號;文件索引項個數(shù)即當前記錄數(shù)據(jù)文件所占用的文件索引項個數(shù);寫入速率即當前記錄數(shù)據(jù)由數(shù)據(jù)采集設備寫入FPGA時的平均速率。
2.1.3 數(shù)據(jù)文件索引表
數(shù)據(jù)文件索引表用來存放每個記錄文件的存儲信息。數(shù)據(jù)文件索引表的具體內(nèi)容如表3所示。
表3 數(shù)據(jù)文件索引表
數(shù)據(jù)文件索引表包含若干表項,每個表項由起始地址和長度構成。數(shù)據(jù)文件索引表和數(shù)據(jù)文件目錄表一一對應,分別存儲數(shù)據(jù)文件的存儲信息和邏輯信息,并在存儲設備指定的區(qū)域連續(xù)存放,以便快速檢索。
本系統(tǒng)支持的數(shù)據(jù)操作包括格式化、數(shù)據(jù)記錄系統(tǒng)信息更新、采集數(shù)據(jù)、導入數(shù)據(jù)、導出數(shù)據(jù)、回放數(shù)據(jù)、記錄文件刪除和碎片整理。
格式化是將存儲設備的存儲空間和管理數(shù)據(jù)結構初始化的過程,即FPGA芯片在DSP芯片的控制下,清空外接存儲設備上數(shù)據(jù)管理信息的過程。
數(shù)據(jù)記錄系統(tǒng)信息更新是在完成一次格式化、數(shù)據(jù)采集、數(shù)據(jù)導入或記錄文件刪除操作后。更新數(shù)據(jù)記錄系統(tǒng)信息結構,并回寫存儲設備的過程。主要包括對數(shù)據(jù)記錄系統(tǒng)信息、相關索引表項信息,以及數(shù)據(jù)文件目錄表中相關表項信息的修改。
數(shù)據(jù)采集是實時采集信息的過程。在啟動采集時,系統(tǒng)首先檢查存儲容量和可用數(shù)據(jù)文件個數(shù)是否可以支撐當前采集過程;在采集過程中,系統(tǒng)保存采集數(shù)據(jù)的同時,進行數(shù)據(jù)管理信息的更新。
數(shù)據(jù)導入是將存儲在主機上的記錄數(shù)據(jù)導入高速數(shù)據(jù)記錄設備的過程。數(shù)據(jù)導入過程與數(shù)據(jù)采集過程類似,在啟動導入時,系統(tǒng)首先檢查存儲容量和可用數(shù)據(jù)文件個數(shù)是否可以支撐當前導入過程;在導入過程中,系統(tǒng)保存導入數(shù)據(jù)的同時,進行數(shù)據(jù)管理信息的更新。
數(shù)據(jù)導出是將高速數(shù)據(jù)記錄設備上的記錄文件導出到外部主機的過程。在啟動導出過程時,系統(tǒng)通過查找,獲取指定記錄文件的數(shù)據(jù)文件目錄表和數(shù)據(jù)文件索引表,并將數(shù)據(jù)文件索引表下發(fā)給FPGA;在導出數(shù)據(jù)過程中,接收到停止信號或完成全部內(nèi)容導出時,完成本次導出過程。
數(shù)據(jù)回放是將高速數(shù)據(jù)記錄設備中的記錄文件,從高速數(shù)據(jù)采集接口返回給采集設備的過程。數(shù)據(jù)回放過程類似數(shù)據(jù)導出過程,只不過通過PCIe接口將記錄數(shù)據(jù)輸出。
記錄文件刪除是刪除指定記錄文件的過程。文件刪除過程中涉及對可用索引表項的碎片整理。
碎片整理是對合并可用索引表中可合并表項的過程[5]。適時的碎片整理可明顯提升系統(tǒng)管理效率。碎片整理過程如圖2所示。
圖2 碎片整理流程
文件管理模塊獲取當前刪除記錄文件的數(shù)據(jù)文件索引表;將數(shù)據(jù)文件索引表項中的諸表項均在可用索引表中查找是否存在可合并項;若存在向前或向后的可合并表項,則合并當前兩個索引項,并查找是否還有其他可合并項;若向前和向后合并項均存在,則合并三個索引項,并查找其他文件索引表項是否存在可合并項;當數(shù)據(jù)文件索引表中的所有表項均查找完成時,結束本次操作[6]。
系統(tǒng)基于VPX架構進行硬件實現(xiàn),如圖3所示。其中,PCIe接口通過接插件引出,經(jīng)過底板與數(shù)據(jù)采集設備相連;網(wǎng)口通過接插件引出,經(jīng)過底板與控制主機相連;硬盤作為子板,固定在系統(tǒng)板卡上。
圖3 系統(tǒng)硬件實現(xiàn)圖
系統(tǒng)測試環(huán)境由測試主機1、高速數(shù)據(jù)記錄設備與測試主機2構成,如圖4所示。其中,測試主機1為VPX架構主板,搭載4塊SATA 3.0固態(tài)硬盤,與高速數(shù)據(jù)記錄設備通過底板上PCIe總線相連;測試主機2為普通主機,通過網(wǎng)絡與高速數(shù)據(jù)記錄設備相連。
圖4 系統(tǒng)測試環(huán)境
測試主機1上運行Ubuntu操作系統(tǒng),通過運行dd命令模擬系統(tǒng)記錄過程,在大數(shù)據(jù)連續(xù)寫入時,測得系統(tǒng)記錄性能為1.4GB/s。測試主機2運行Ubuntu操作系統(tǒng),控制程序產(chǎn)生啟動回放命令,通過網(wǎng)絡控制系統(tǒng)啟動回放過程,在系統(tǒng)數(shù)據(jù)傳輸穩(wěn)定后,測得系統(tǒng)回放性能為1.2GB/s。
本設計針對武器裝備對嵌入式數(shù)據(jù)記錄系統(tǒng)更快數(shù)據(jù)傳輸速率以及更復雜數(shù)據(jù)管理的需求,采用FPGA+DSP架構,通過對系統(tǒng)功能進行適宜的分割,并結合FPGA芯片與DSP芯片各自的特點,提出了一種輕量級文件管理系統(tǒng)。該文件管理系統(tǒng)使用微型管理數(shù)據(jù),可在數(shù)據(jù)高速記錄或回放等高速應用場景中,進行內(nèi)存管理數(shù)據(jù)的實時更新,以及硬盤管理數(shù)據(jù)的快速同步,完成對記錄文件的高效可靠管理。該系統(tǒng)在實際應用中達到了GB級的記錄效率,滿足了應用需求,具備很好的可推廣性。