《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 通過LabVIEW圖形化開發(fā)平臺(tái)優(yōu)化多核處理器環(huán)境下的信號(hào)處理性能
通過LabVIEW圖形化開發(fā)平臺(tái)優(yōu)化多核處理器環(huán)境下的信號(hào)處理性能
摘要: 摩爾定律問世40余年來,,人們業(yè)已看到半導(dǎo)體芯片制造工藝水平以一種令人目眩的速度在提高,,Intel微處理器的最高主頻甚至超過了4G。雖然主頻的提升一定程度上提高了程序運(yùn)行效率,,但越來越多的問題也隨之出現(xiàn),耗電,、散熱都成為阻礙設(shè)計(jì)的瓶頸所在,,芯片成本也相應(yīng)提高。當(dāng)單獨(dú)依靠提高主頻已不能實(shí)現(xiàn)性能的高效率時(shí),,雙核乃至多核成為了提高性能的唯一出路,。隨著AMD率先打破摩爾定律、終結(jié)頻率游戲后,,Intel和AMD都開始逐步推出了基于雙核,、四核甚至八核的處理器,工程師們逐漸投入到基于多核處理器的新型應(yīng)用開發(fā)中去時(shí),,大家開始發(fā)現(xiàn),,借助這些新的多核處理器,并在應(yīng)用開發(fā)中利用并行編程技術(shù),,可以實(shí)現(xiàn)最佳的性能和最大的吞吐量,,大大提高應(yīng)用程序的運(yùn)行效率。
Abstract:
Key words :

         多核處理器" title="多核處理器" target="_blank">多核處理器環(huán)境下的編程挑戰(zhàn)

  摩爾定律問世40余年來,,人們業(yè)已看到半導(dǎo)體芯片制造工藝水平以一種令人目眩的速度在提高,,Intel微處理器的最高主頻甚至超過了4G。雖然主頻的提升一定程度上提高了程序運(yùn)行效率,,但越來越多的問題也隨之出現(xiàn),,耗電、散熱都成為阻礙設(shè)計(jì)的瓶頸所在,,芯片成本也相應(yīng)提高,。當(dāng)單獨(dú)依靠提高主頻已不能實(shí)現(xiàn)性能的高效率時(shí),雙核乃至多核成為了提高性能的唯一出路。隨著AMD率先打破摩爾定律,、終結(jié)頻率游戲后,,Intel和AMD都開始逐步推出了基于雙核、四核甚至八核的處理器,,工程師們逐漸投入到基于多核處理器的新型應(yīng)用開發(fā)中去時(shí),,大家開始發(fā)現(xiàn),借助這些新的多核處理器,,并在應(yīng)用開發(fā)中利用并行編程技術(shù),,可以實(shí)現(xiàn)最佳的性能和最大的吞吐量,大大提高應(yīng)用程序的運(yùn)行效率,。

  然而,,業(yè)界專家們也同時(shí)認(rèn)識(shí)到,對(duì)于實(shí)際的編程應(yīng)用,,多核處理器的并行編程卻是一個(gè)巨大的挑戰(zhàn),。比爾蓋茨是這樣論述的:

   “要想充分利用并行工作的處理器的威力,…軟件必須能夠處理并發(fā)性問題,。但正如任何一位編寫過多線程代碼的開發(fā)者告訴你的那樣,,這是編程領(lǐng)域最艱巨的任務(wù)之一。”

  比如用C++寫一個(gè)多線程的程序,,程序員必須要非常熟悉 C++,,了解如何將C++程序分成多個(gè)線程和并在各個(gè)線程間進(jìn)行任務(wù)調(diào)度,此外還要了解 Windows 多線程的機(jī)制,,熟悉 Windows API 的調(diào)用方法和MFC 的架構(gòu)等等。在 C++ 上調(diào)試多線程程序,,更是被很多程序員視為噩夢(mèng),。

  所以,對(duì)于測(cè)試測(cè)量行業(yè)的工程師來說,,在傳統(tǒng)開發(fā)環(huán)境下要想獲得多核下的效率提升意味著大量而復(fù)雜的多線程編程任務(wù),,而使得工程師脫離了自動(dòng)化測(cè)試及其信號(hào)處理任務(wù)本身,于是,,要想在當(dāng)前的多核機(jī)器上充分利用其架構(gòu)和并行運(yùn)算的優(yōu)勢(shì),,反而成為工程師們“不可能”完成的任務(wù)。
LabVIEW降低并行編程的復(fù)雜性,,快速開發(fā)并行構(gòu)架的信號(hào)處理應(yīng)用

  幸運(yùn)的是,,NI LabVIEW圖形化開發(fā)平臺(tái)為我們提供了一個(gè)理想的多核處理器編程環(huán)境。作為一種并行結(jié)構(gòu)的編程語(yǔ)言,,LabVIEW能將多個(gè)并列的程序分支自動(dòng)分配成多個(gè)線程并分派到各個(gè)處理核上,,讓一些計(jì)算量較大的數(shù)學(xué)運(yùn)算或信號(hào)處理應(yīng)用得以提高運(yùn)行效率,并獲取最佳性能。

  我們以自動(dòng)化測(cè)試中最常見的多通道信號(hào)處理分析為例,。由于多通道中的頻率分析是一項(xiàng)占用處理器資源較多的操作,,如果能夠讓程序并行地將每個(gè)通道的信號(hào)處理任務(wù)分配至多個(gè)處理器核,對(duì)于提高程序執(zhí)行速度來說,,就顯得尤為重要,。而目前,從LabVIEW編程人員的角度來看,,要想獲得這一原本“不可能”的技術(shù)優(yōu)勢(shì),,唯一需要改變的只是算法結(jié)構(gòu)的細(xì)微調(diào)整,而并不需要復(fù)雜且耗時(shí)耗力的代碼重建工作,。

  以雙通道采樣為例,,我們需要分別對(duì)高速數(shù)字化儀的兩個(gè)通道上的數(shù)據(jù)進(jìn)行快速傅立葉變換(FFT)。假設(shè)我們采用的高速數(shù)字化儀的兩個(gè)通道均以100 MS/s采樣率采集信號(hào)并實(shí)時(shí)分析,。首先,,我們來看LabVIEW中對(duì)于這一操作的傳統(tǒng)順序編程模型。

利用順序執(zhí)行的LabVIEW代碼
圖1. 利用順序執(zhí)行的LabVIEW代碼

  和其他文本編程語(yǔ)言一樣,,處理多通道信號(hào)的傳統(tǒng)方法是將各個(gè)通道信號(hào)按順序讀入并逐通道的進(jìn)行分析,,上面基于LabVIEW的順序編程模型很好的說明了這點(diǎn),0,、1兩通道的數(shù)據(jù)被按順序讀入后,,整合為一路數(shù)組,并由一個(gè)FFT函數(shù)進(jìn)行信號(hào)分析并輸出,。雖然順序結(jié)構(gòu)能夠順利地在多核機(jī)器上運(yùn)行,,但確不能使得CPU負(fù)擔(dān)得到有效的分?jǐn)偅驗(yàn)榧词乖陔p核的機(jī)器上,, FFT程序也只能在一個(gè)CPU上被執(zhí)行,,而此時(shí)另一個(gè)CPU卻被閑置了。

  實(shí)際上,,兩個(gè)通道的FFT運(yùn)算相互獨(dú)立,,如果程序能夠?qū)蓚€(gè)FFT自動(dòng)分配到一臺(tái)雙核機(jī)器上的的兩個(gè)CPU上,那么理論上程序的運(yùn)行效率將提高一倍,。在LabVIEW的圖形化編程平臺(tái)上,,情況正是如此,我們可以通過并行化處理這兩個(gè)通道來真正提高算法性能,。圖2表示了一種采用并行結(jié)構(gòu)的LabVIEW代碼,,從圖形化編程的角度來看,僅僅是增加了一路并行的FFT函數(shù)而已,。

利用并行執(zhí)行的LabVIEW代碼
圖2. 利用并行執(zhí)行的LabVIEW代碼

  由于數(shù)據(jù)量越大,,信號(hào)處理運(yùn)算在工程應(yīng)用中所占的處理器時(shí)間就越長(zhǎng),,所以通過簡(jiǎn)單的程序改動(dòng)將原來的信號(hào)處理程序并行化,可以改善程序性能,,減少了總的執(zhí)行時(shí)間,。

對(duì)于大于1M采樣(100 Hz精度帶寬)的數(shù)據(jù)塊,并行方式實(shí)現(xiàn)了80%或更高的性能增長(zhǎng)
圖3. 對(duì)于大于1M采樣(100 Hz精度帶寬)的數(shù)據(jù)塊,,并行方式實(shí)現(xiàn)了80%或更高的性能增長(zhǎng),。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。