彭程飛,許家麟,李 濤,吳瓊之
(北京理工大學 信息與電子學院,北京 100081)
寬帶嵌入式存儲系統中實時數據記錄的優化方法
彭程飛,許家麟,李 濤,吳瓊之
(北京理工大學 信息與電子學院,北京 100081)
針對寬帶信號長時間連續采集的需求,提出了一種基于FPGA和多路標準固態硬盤(SSD)的嵌入式大容量大帶寬數據存儲系統架構及其優化實現方法。著重分析了標準SSD瞬時寫入速率隨機性問題,基于實測數據和數學模型提出了一種動態數據調度方法。理論推導和實際測試均表明該方法有效降低了對緩存容量的需求,并提高了系統工作的可靠性。
采集;存儲;FPGA;SSD
數據采集存儲設備廣泛應用于雷達、通信等領域,更高的平均輸入帶寬、更大的存儲容量是其必然發展趨勢。隨著前端數據采樣速率的提升,高速且穩定的數據寫入速率也是數據存儲系統設計需要著重考慮的問題。
應用于嵌入式環境的數據存儲技術已經有大量相關的研究。文獻[1]基于Xilinx公司的Virtex-5芯片的高速串行收發器GTX,實現了SATA控制器;文獻[2]采用以ARM920T為核心的S3C2410A作為主控器將視頻數據進行存儲;文獻[3]通過FPGA作為主控芯片搭載96片NAND FLASH實現了容量達3TB的存儲系統;文獻[4]設計了一款由8塊SSD硬盤組成的存儲陣列,并使用并行存儲方式實現大容量高速固態存儲。
基于調研工作,文中提了出一種嵌入式大容量大帶寬數據存儲系統架構,采用現場可編程門陣列(FPGA)為控制核心,并發操作多路標準固態硬盤(SSD)。與其他架構相比,具有帶寬高、容量大、成本低和可靠性強等優點。但是由于標準SSD的壞塊管理、垃圾回收等操作會對瞬時寫入速率造成一定影響,進而影響整個系統的性能。針對該問題,本文在實測和建模分析的基礎上提出了一種優化的動態數據調度方法,有效降低了對緩存容量的需求,提高了整個系統的工作效率與可靠性。
經過調研工作,表1總結了實現高速大容量嵌入式數據存儲系統的3種架構方式。
方式1具有低功耗、低成本的優點,使用嵌入式處理器控制能力也較強,但是由于嵌入式處理器結構的固定性,此類系統的擴展性不強,規模有限[5-6];方式2具有帶寬高、容量大的特點,但是此類系統使用FPGA芯片作為主控芯片對NAND Flash進行控制,NAND Flash的管理操作,尤其是壞塊管理和數據糾錯,都需要FPGA邏輯來實現,其完善程度很難和SSD中基于ARM處理器的專用Flash控制器媲美,往往存在可靠性問題[7];方式3同樣具有容量大、帶寬高的特點,但是如果數據存儲方式選擇不當,易造成實時性、靈活性不佳的問題[8]。

表1 大容量存儲系統實現方式
基于以上調研工作,結合本系統超寬帶、超大容量的特點,最終選用以FPGA為控制核心,并發操作多路標準固態硬盤(SSD)作為系統的實現架構[9-12],具體結構框圖如圖1所示。

圖1 寬帶信號采集系統結構框圖
系統如此設計具有以下優勢:
1)SSD自帶專用Flash控制器。具備自動處理壞塊管理、垃圾回收等能力,FPGA僅需實現與多塊SSD的通信工作即可,如此既方便了設計工作,也節省了資源消耗;
2)靈活性高。使用過程中如果發現某塊盤有損壞的情況,直接更換即可;如果以后出現更高容量的SSD,僅需直接替換就可以使整個系統的容量成倍增長;
3)多個SSD并行存儲,寫入速率成倍增加。FPGA可以控制n塊SSD同時并行寫入,整個系統的寫入速率理論上可以達到單塊SSD寫入速率的n倍。
但是,由于SSD存在寫入速率隨機性的問題,為了滿足寬帶信號采集系統的實時性,在系統實現設計上需要對此問題著重考慮[13-15]。
前期測試時發現,在持續給SSD寫入數據的過程中,SSD會出現寫入速率不穩定的現象,具體表現為寫入操作隨機出現短暫的停滯。雖然在設計初期考慮到加入數據緩存模塊,但是在超寬帶數據輸入的情況下,也有可能出現數據丟失的現象,系統實時性無法得到滿足。因此,本節對SSD速率隨機性問題進行詳盡的測試,并根據寬帶采集系統對實時性的要求提出一種動態數據調度算法,通過理論推導驗證了該算法對于數據緩存容量需求的降低以及系統穩定性的提高有顯著效果。
首先,基于FPGA實現SATA協議,并完成了與單塊SSD的通信,之后對SSD進行持續寫入測試。由于單塊SSD的寫入速率在240 MB/s左右,為了充分測試SSD寫入速率的隨機性,編寫數據產生模塊,通過FPGA持續向SSD寫入速率為300 MB/s的數據流,使SSD一直處于寫飽和的狀態;通過FPGA觀察相關信號,統計SSD處于不能寫入狀態的最長時間,為寬帶信號采集系統的數據存儲方式設計提供參考依據。
基于上述測試環境,對當前市面上主流的5款SSD進行充分測試,結果如表2所示。

表2 SSD寫入速率隨機性測試結果
通過測試結果可以發現,單塊SSD的最長無法寫入狀態持續時間可以達到秒級,不同型號的SSD所表現出的寫入速率隨機性略有不同。出現此特性的根本原因是SSD的Flash控制器在做垃圾回收等工作時會對寫入速率造成一定的影響,而不同廠家使用不同的控制器,因此表現出來的寫入速率隨機特性也會有一定差別。
基于上述測試結果,對于寬帶信號采集系統的存儲陣列進行分析。寬帶信號采集系統的最高數據寫入帶寬可以達到GB/s,使用傳統并行數據存儲方式,如果采集過程中一旦某一塊盤處于無法寫入的狀態,整個系統的數據寫入操作停滯;如果SSD無法寫入狀態的持續時間達到了秒級,則至少需要GB數量級的緩存模塊才能保證數據不丟失;更可怕的是,如果兩塊或多塊SSD連續出現無法寫入的現象,則需要更大的數據緩存模塊來保證系統的實時性,如此大的數據緩存模塊已經無法通過使用FPGA的資源來實現,只能使用專用的數據緩存芯片,但是如此一來不但會增加整個系統的功耗,數據緩存芯片的容量也不好把握。仲裁工作所需的時間很短,所以如果FIFO的數據寫入帶寬足夠大,會很快將所有n塊SSD前端的FIFO填滿,如此以來,理論上可以達到所有n塊盤同時進行數據存儲的效果,那么整個系統可以實現n倍于SSD單盤寫入速率的系統寫入帶寬。

圖2 數據存儲方法示意圖
根據上述分析,基于FPGA開發設計出一套高效、穩定的動態數據調度算法,以滿足寬帶信號采集系統對于實時性的要求。
圖2表明了動態數據調度算法在進行數據存儲操作時的簡要原理。FPGA首先對數據進行打包操作,在每包數據的最前面加入包頭信息,記錄當前的包號與時間等信息。數據分配模塊會根據每塊盤的狀態信息對所有盤進行優先級仲裁操作,在幾個時鐘周期內判斷出當前包數據該存入的SSD盤號,并將其分配到該盤前端的FIFO當中;之后該包數據從FIFO寫入到SSD中,同時下一包數據經過下一次仲裁被分配到另一個SSD所對應的FIFO當中;由于
數據分配模塊的仲裁規則如下:
1)選出的盤當前要處于正常可以接收數據的狀態;
2)選出的盤當前所存包數量是所有盤中已存包數量最少的一個;
3)相鄰兩包數據不存儲于同一塊盤當中。
如此進行優先級仲裁操作,可以使采集到的數據盡量快速、平均地存入當前可以正常工作的SSD中,同時也避免了在采集過程當中某一塊或幾塊盤出現速率突變情況而導致整個系統寫入停滯、數據丟失的問題。

圖3 數據轉存方法示意圖
圖3表明了動態數據調度算法在數據轉存操作時的簡要原理。首先每塊SSD逐包將各自存儲的數據上傳到FPGA中各自對應的FIFO當中,數據重組模塊會根據每包數據包頭中的包號信息依次將數據拼接并讀走,同時SSD將下一包數據送入各自對應的FIFO當中等待下一次數據重組模塊的判斷,之后數據經過去包頭操作,正確、完整地上傳到轉存設備當中。
如此進行數據轉存工作,還可以通過在FPGA當中實現邏輯查找包號,根據需求精確地導出某一包之后的數據,大大增強了整個系統在使用過程當中的靈活性。
本節針對寬帶信號采集系統并行數據存儲方式建立數學模型,比較傳統并行數據存儲方式與動態數據調度算法所需緩存容量的差異。
假設單盤SSD出現速率突降的概率為p,q=1-p,系統中共有n塊SSD,系統寫入數據帶寬為W,單盤寫入速率為 ω,而且(m-1)ω<W<mω,即至少需要m塊盤同時寫入才可以滿足系統輸入的數據帶寬。計算在時間T內,傳統并行數據存儲方式與動態數據調度算法所需要的平均數據緩存容量,Buf1與Buf2,并進行比較。
根據模型分析,采用傳統并行數據存儲方式,只要有1塊盤處于無法寫入的狀態時,整個系統的數據寫入會陷入停滯,此時需要緩存模塊來提供整個寫入帶寬的緩存;而使用動態數據調度算法,當少于m塊盤正常,即多于(n-m)塊盤處于無法寫入狀態時才會需要數據緩存模塊來緩存數據,而且此時其他的正常盤可以寫入數據,提供一定的數據帶寬,因此:


通過比較兩式可以看出Buf2相對于Buf1減少了后兩項,即動態數據調度算法方式相對于傳統并行數據存儲方式會減少相當一部分數據緩存的使用。
假設SSD出現速率突降的概率p=1%,單盤SSD的寫入速率為240 MB/s,定量畫圖描繪Buf1與Buf2隨盤數n與數據帶寬W的變化關系:

圖4 數據緩存容量對比圖
由圖4的比較可以看出,隨著盤數與數據帶寬的增加,傳統并行數據存儲方式所需的緩存會越來越大,而使用動態數據存儲方式需要的緩存容量一直處于非常低并且十分穩定的狀態,可見使用動態數據存儲方式,有效地降低了整個系統對于數據緩存容量的需求,同時滿足系統對實時性的要求,對系統的穩定性也有很大程度的提升。
基于Xilinx公司的Virtex6FPGA進行硬件程序設計,實現FPGA與15塊SSD組成的存儲陣列通信,以此搭建硬件環境實現寬帶信號采集系統并對動態數據調度算法進行測試。
測試時,在數據源與數據打包模塊之間加入數據緩存模塊,使用專用DDR3緩存芯片進行數據緩存,可以根據實時監測DDR中的數據深度來觀察整個系統實時寫入數據的能力。
考慮到測試平臺所選FPGA的性能與資源限制,測試時設置每個SATA模塊前的緩存FIFO寫入時鐘頻率為150 MHz,FIFO寫入位寬為128 bit、深度為兩個包長度4 kB,理論上整個系統當前可以滿足的最高寫入帶寬受限于FIFO的數據寫入帶寬:150 M×128 bit=2.4 GB/s。
測試時逐漸增加輸入數據的帶寬,并實時監測DDR中的緩存數據量,觀察動態數據調度算法的工作特性,經過長時間的測試工作,得到測試結果如表3所示。

表3 系統性能測試結果
通過以上測試結果可以發現,當輸入數據帶寬小于2.4 GB/s時,整個存儲系統的寫入速率穩定,DDR中一直沒有緩存數據,說明動態數據存儲方式成功地滿足了超寬帶系統對于實時性的要求,并沒有由于某塊盤的速率突降現象影響到整個系統的數據寫入速率。
當輸入數據帶寬大于2.4 GB/s時,DDR中的緩存數據逐漸積累,說明此時已經達到了當前系統的極限寫入速率,基本符合理論推導值。如果以后需要滿足更高帶寬的寫入速率,可以通過提高FIFO入口數據帶寬(時鐘或位寬)來進一步提高整個系統所能滿足的寫入帶寬,理論最高帶寬為所有15塊SSD同時并行寫入的速率,可以達到15×240 MB/s=3.6 GB/s。
文中針對超寬帶信號長時間連續采集對于存儲系統的實時性需求,提出了一種基于FPGA和多路SSD的超寬帶、大容量的存儲系統架構;針對SSD存在寫入速率隨機性的缺陷進行詳盡的測試與分析,并結合本系統的自身特點,開發出一套高效、穩定的動態數據調度算法,并在測試系統上成功實現,不但節約了FPGA資源與系統功耗,更提高了整個系統的工作效率與使用可靠性。
可以預知隨著電子行業的發展,單塊SSD容量的增加,本系統的容量可以成倍升級,同時也可以通過增加SSD的個數來擴展整個系統的容量;如果使用更高性能的FPGA,系統最高寫入帶寬理論上可以提高到所有SSD同時并行寫入的速率。因此,本設計具有很大的發展空間與廣闊的應用前景。
[1]朱鑫鵬.SATAⅡ設備端IP核的FPGA設計與實現[D].成都:電子科技大學,2011.
[2]李敏.基于ARM+Linux的嵌入式視頻監控存儲系統[D].西安:西安電子科技大學,2010.
[3]徐玉杰.高速大容量存儲系統的設計與實現[D].西安:西安電子科技大學,2014.
[4]范曉星.高速大容量固態存儲系統設計與實現[D].西安:西安電子科技大學,2014.
[5]王宗超,馬建設,周倩,等.基于ARM和固態硬盤的微型投影嵌入式平臺設計[J].重慶理工大學學報:自然科學,2012,26(5):47-50.
[6]王冬星,程書偉,張麗華.基于ARM的數據采集與存儲系統的研究與實現 [J].計算機工程與設計,2012,33(12):4526-4530.
[7]吳凡.基于FPGA和NAND Flash的嵌入式存儲系統設計[J].電子科技,2016,29(3):97-101.
[8]孟琪.基于SATA接口高速電子存儲陣列的設計與實現[D].西安:西安電子科技大學,2014.
[9]王童.基于SATA接口固態硬盤的存儲系統的研究與實現[D].西安:西安電子科技大學,2014.
[10]王燁,張峰,李燕斌.SATA高速存儲的FPGA實現[J].電訊技術,2012,52(11):1801-1804.
[11]張芬平,王建生.SATA控制器的FPGA實現[J].山西科技,2015,30(6):126-128.
[12]劉明剛,施建禮.基于FPGA高速大容量數據采集與存儲系統[J].儀表技術,2014(5):25-27.
[13]SUN Ning-xiao,WU Qiong-zhi,JIN Zhao-jian.A storage architecture for high speed signal processing:Embedding RAID0 on FPGA[J].Journal of Signal and Information Processing,2012(3):382-386.
[14]劉濤.一種基于SSD硬盤緩存加速與備份的RAID設計方法:中國,201310053327.0[P].2013-06-12.
[15]李金猛,周勇軍.高速大容量數據存儲技術的研究綜述[J].測控技術,2016,35(2):1-4.
An optimized method of real-time data recording for wide-band embedded storage system
PENG Cheng-fei,XU Jia-lin,LI Tao,WU Qiong-zhi
(School of Information and Electronic,Beijing Institute of Technology,Beijing 100081,China)
Focusing on the demand of long-term continuous wideband signal acquisition,this paper puts forward an implementation and optimized method of embedded large-capacity and high-bandwidth data storage system architecture based on FPGA and multi-channel SSDs.In this paper,the random instantaneous speed problem of SSD writing is analyzed emphatically,and a dynamic scheduling method is put forward based on the test data and mathematical model.Theoretical analysis and practical tests both indicate that this method reduces the need of data buffer effectively and improves the reliability of the system.
signal acquisition;storage;FPGA;SSD
TN957.52
A
1674-6236(2017)17-0115-05
2016-07-01稿件編號:201607005
彭程飛(1991—),男,遼寧錦州人,碩士研究生。研究方向:復雜電路系統研究與應用。