周謙 江燕 董宜豐
隨著計算機技術的發(fā)展,信號接收設備大量運用于計算機進行設備控制、數據處理和人機交互。在接收設備完成天線信號接收、模數轉換和解調處理后,人機交互和后續(xù)數據處理顯示工作由計算機應用軟件來完成。通常設備要求體積小、功耗低,編寫的軟件需充分發(fā)揮CPU性能,以提升設備效率。本文結合多通道接收設備,討論多線程技術在利用CPU資源方面的應用。
設備情況
多通道接收設備用于0.1~30 MHz頻率范圍內的短波無線電信號的接收和解調。接收設備采用CPCI總線化設計,可滿足固定臺、站等不同場合下的應用。接收設備可獨立完成常規(guī)信號的解調,同時將解調的基帶I/Q和語音數據通過總線傳輸到上位機,實現上層網控處理。
多通道接收設備由CPCI主控單元、8塊接收板卡和CPCI機箱組成,如圖1所示。
接收設備主控單元采用CPCI主板,該產品是一款基于第三代低壓Intel i7雙核四線程(TDP 25 W、主頻2.5 GHz)的CPCI刀片式計算機。接收板卡包括信道電路、本振電路、信號處理電路和音頻功放電路。無線電信號經過接收板卡處理后,轉換為基帶I/Q和語音數據,再由驅動以中斷的形式通知操作系統,將數據傳至應用層軟件。應用軟件把收到的數據處理后顯示為波形圖、頻譜圖,同時將數據以文件形式保存至硬盤,并通過網絡分發(fā)到后端臺位。
問題現象
由底層上傳的8路音頻數據最大采樣率為153.6 kbps,采用拉格朗日插值法實現任意可變采樣率時,運算量非常大,應用軟件出現卡頓現象,任務管理器的CPU使用約為28 %,并且CPU的線程1已接近滿載,如圖2所示。將數據存儲后用cooledit軟件打開時,發(fā)現保存在硬盤中的文件數據出現不連續(xù),如圖3所示,直接影響到后續(xù)的分析處理結果。
原因分析
監(jiān)視CPU使用情況,發(fā)現隨著使用路數的增加,CPU線程1的使用率隨之增加,但其他三路占用率變化不大。理想狀況下,每塊接收板卡的中斷到來后,應用軟件立即接收數據并及時進行處理。但是當多路接收板卡同時工作時,由于各個接收板卡的硬件是相互獨立的,不同板卡產生中斷的時間間隔不確定,有可能非常接近。當應用軟件正在處理其中一塊接收卡數據時,另一塊接收卡產生中斷,造成數據阻塞。大量的阻塞發(fā)生后,導致CPU某一路占用度過高,影響系統的整體性能,造成數據處理和保存的異常。
解決辦法
由于數據處理需要占用部分CPU資源,當8路接收卡的數據處理都是在主線程中完成時,無法充分利用CPU資源,因此采用多線程技術的應用程序可以更好地利用系統資源。該方法主要優(yōu)勢在于充分利用了CPU的空閑時間片,用盡可能少的時間來對用戶的要求做出響應,使得進程的整體運行效率得到較大提高,同時增強了應用程序的靈活性。
為此,在軟件中給8路接收卡的數據處理部分創(chuàng)建獨立的線程,并將未處理的數據緩存到數據池中,在各個線程中進行數據處理與保存到硬盤的操作。使用AfxBeginThread函數創(chuàng)建線程,在線程中使用WaitForSingleObject等待事件被觸發(fā),處理完數據后調用ResetEvent復位事件信號,退出軟件時調用AfxEndThread函數結束線程。經過調整后的軟件運行時的CPU使用效率得到提升,資源分配均勻,如圖4所示;未出現卡頓現象,保存在文件中的數據連續(xù),如圖5所示。
通過對比增加數據處理多線程前后的CPU使用情況,可以明顯看到效率的提高和資源利用更加均衡。應用軟件的多線程實現多路接收信號的并行處理與保存時,可提升CPU的處理效率,避免中斷影響數據處理和文件保存,保證了數據的連續(xù)性和有效性。