新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 利用LabVIEW優(yōu)化多核處理器環(huán)境中的自動化測試應(yīng)用

利用LabVIEW優(yōu)化多核處理器環(huán)境中的自動化測試應(yīng)用

作者: 時間:2016-12-23 來源:網(wǎng)絡(luò) 收藏

1. 多線程編程的挑戰(zhàn)

迄今,處理器技術(shù)領(lǐng)域中的創(chuàng)新已經(jīng)使得計算機具備了工作于更高時鐘速率的中央處理器單元(CPU)。然而,隨著時鐘速率逼近其理論上的物理極限,具有多個(而不是單個)處理核的新型處理器正處于研發(fā)之中。利用這些新型多核處理器,自動化測試應(yīng)用利用并行編程技術(shù),便可以達到最佳性能和最高吞吐量。Edward Lee博士——加州大學(xué)伯克利分校電氣與計算機工程系的杰出教授——這樣描述并行處理的技術(shù)優(yōu)勢:

本文引用地址:http://m.butianyuan.cn/article/201612/333292.htm

“許多技術(shù)專家預(yù)言,回應(yīng)摩爾定律的終結(jié)的將是日趨并行的計算機架構(gòu)。如果我們希望繼續(xù)提高計算性能,計算機程序必須能夠利用這種并行機制。”

而且,利用多核處理器的編程應(yīng)用是一個巨大的編程挑戰(zhàn),這是廣為接受的。比爾蓋茨——微軟公司的締造者——關(guān)于這一挑戰(zhàn)有這樣一段話:

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

幸運的是,LabVIEW為多核處理器提供了一個理想的編程環(huán)境,因為它為創(chuàng)建并行算法提供了一個直觀的環(huán)境,而且它可以動態(tài)指派多個線程至一項給定的應(yīng)用。事實上,利用多核處理器的自動化測試應(yīng)用,可以方便地被優(yōu)化以獲取最佳性能。而且,PXIe模塊化儀器增強了這一技術(shù)優(yōu)勢,因為PCIe總線使高數(shù)據(jù)傳輸速率成為可能。從多核處理器和PXIe儀器的兩個具體應(yīng)用是:多通道信號分析和線上處理(硬件在環(huán))。在本文的后續(xù)部分,我們將評估各種并行編程技術(shù),并刻畫每項技術(shù)所帶來的性能優(yōu)勢。

至頁首

2. 實現(xiàn)并行測試算法

得益于并行處理的一項常見自動化測試應(yīng)用(ATE),便是多通道信號分析。由于頻率分析是一項占有處理器較多的操作,通過并行化處理測試代碼使得每個通道的信號處理被分配至多個處理器核,可以提高執(zhí)行速度。從編程人員的角度來看,為獲得這一技術(shù)優(yōu)勢,所需的唯一改變便是僅僅重構(gòu)測試算法。

為描述這一過程,我們將比較用于多通道頻率分析(傅立葉變換或FFT)的兩個算法的執(zhí)行時間,它們分別位于一個高速數(shù)字化儀的兩個通道上。在該測試中,我們使用PXIe-5122 14-位高速數(shù)字化儀的兩個通道,以最高采樣率(100 MS/s)采集信號。首先,我們這一操作在LabVIEW中的傳統(tǒng)的順序編程模型。

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

在上述模塊框圖中,兩個通道的頻率分析均在一個FFT快速VI中完成,它順序分析每個通道信號。雖然上述算法也可以在多核處理器中有效執(zhí)行,但仍存在通過并行處理每個通道提高算法性能的可能。

如果我們剖析上述算法,我們會發(fā)現(xiàn)完成FFT所需的時間要比從高速數(shù)字化儀采集數(shù)據(jù)長得多。通過每次獲取一個通道的數(shù)據(jù)并并行執(zhí)行兩次FFT,我們可以顯著降低處理時間。下圖表示了一個采用并行方法的新的LabVIEW模塊框圖。

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

如上面代碼所示,將順序獲取數(shù)字化儀的每個通道的數(shù)據(jù)。注意,如果兩次數(shù)據(jù)獲取均來自不同的儀器,那么完全可以并行完成這些操作。然而,由于傅立葉變換占用大量的處理器時間,我們?nèi)钥梢詢H通過將信號處理并行化改善性能。故而減少了總的執(zhí)行時間。兩種實現(xiàn)的執(zhí)行時間如下所示:

圖3。順序算法與并行算法(時間)的執(zhí)行時間比較

如上圖所示,隨著數(shù)據(jù)塊大?。看潍@取的采樣數(shù))的增加,通過并行處理節(jié)約的處理時間愈為顯著。事實上,對于更大的數(shù)據(jù)塊,并行算法實現(xiàn)近2倍的性能改進。下圖描述了性能增長的精確百分比隨采集數(shù)據(jù)塊大?。ㄒ圆蓸訑?shù)為單位)的變化。

圖4。并行算法帶來的性能增長(百分比)

圖4顯示,當(dāng)數(shù)據(jù)塊大于1百萬采樣(100 Hz精度帶寬)時,并行方式實現(xiàn)80%或更高的性能增長。

在多核處理器之上,我們可以方便地實現(xiàn)自動化測試應(yīng)用的性能改進,因為LabVIEW動態(tài)地分配每一個線程。事實上,用戶不需要創(chuàng)建特殊的代碼以支持多線程,而是通過最少的編程調(diào)整,并行測試應(yīng)用便可以獲益于多核處理器。

3. 配置定制的并行測試算法

將信號處理并行化的技術(shù)優(yōu)勢在于它支持LabVIEW在多個處理器核中劃分CPU的用度。在下圖中,我們描述了CPU處理算法每一部分的次序。

圖5。CPU的處理執(zhí)行

如圖所示,LabVIEW能夠并行處理許多采集數(shù)據(jù),從而節(jié)省了執(zhí)行時間。對于LabVIEW,并行處理的需求之一便是拷貝(或克隆)每個信號處理子例程。缺省情況下,LabVIEW的許多信號處理算法配置為“重入執(zhí)行”。這就意味著LabVIEW將動態(tài)分配每個子例程的一個不同實例,包括獨立線程和存儲空間。因而,定制子例程必須被配置為工作于重入方式。這可以通過LabVIEW中一個簡單的配置步驟完成。欲設(shè)置這一屬性,選擇文件菜單下VI屬性并選中“執(zhí)行”欄;然后,選中“重入執(zhí)行”標(biāo)記(如下所示)。

圖6。在LabVIEW中配置重入執(zhí)行屬性

通過上圖所示的簡單步驟,我們可以并行執(zhí)行多個定制子例程,就如同標(biāo)準(zhǔn)LabVIEW分析函數(shù)那樣。因此,在多核處理器之上,自動化測試應(yīng)用通過簡單的編程技術(shù)就可以實現(xiàn)性能的改進。

4. 優(yōu)化硬件在環(huán)應(yīng)用

得益于并行信號處理技術(shù)的又一個應(yīng)用便是為同時輸入與輸出使用多個儀器。一般,這些應(yīng)用被稱為硬件在環(huán)(HIL)或在線處理應(yīng)用。在此場景下,高速數(shù)字化儀或高速數(shù)字I/O模塊用于信號采集,其軟件執(zhí)行數(shù)字信號處理算法。最后,通過另一個模塊化儀器生成結(jié)果。其典型模塊框圖如下所示:

圖7。在線信號處理(HIL)模塊框圖

常見HIL應(yīng)用包括在線數(shù)字信號處理(濾波、插值等)、傳感器仿真和定制組件模擬。在這篇特別準(zhǔn)備的白皮書中,我們將探究用于在在線數(shù)字信號處理應(yīng)用中獲得最佳吞吐量的技術(shù)。

通??梢允褂脙煞N基本的編程結(jié)構(gòu),單循環(huán)結(jié)構(gòu)和帶有隊列的管道式多循環(huán)結(jié)構(gòu)。單循環(huán)結(jié)構(gòu)實現(xiàn)簡單,對于小數(shù)據(jù)塊具有低時延。相比之下,多循環(huán)結(jié)構(gòu)能夠支持高得多的吞吐量,因為它們能夠更好地利用多核CPU。

對于傳統(tǒng)的單循環(huán)方式,一個高速數(shù)字化儀的讀函數(shù)、信號處理算法和高速數(shù)字I/O順次組織。如下面模塊框圖所示,這些子例程中的每一個都必須按照LabVIEW數(shù)據(jù)流編程模型確定的順序執(zhí)行。

圖8。在循環(huán)中依單循環(huán)方式進行處理

單循環(huán)結(jié)構(gòu)受限于幾個因素。由于順序執(zhí)行每一環(huán)節(jié),處理器在處理數(shù)據(jù)的同時受限無法執(zhí)行儀器I/O。在這種方式下,由于處理器一次只能執(zhí)行一個函數(shù),所以無法有效利用多核CPU。因而,在應(yīng)用中僅使用了多核CPU的一個核。雖然單循環(huán)結(jié)構(gòu)足以處理較低的采集速率,但是要想得到較高的數(shù)據(jù)吞吐量仍需要采用多循環(huán)方式。

多循環(huán)架構(gòu)使用隊列結(jié)構(gòu)實現(xiàn)while循環(huán)間的數(shù)據(jù)傳遞。下面,我們展開論述在while循環(huán)間采用一個隊列結(jié)構(gòu)進行數(shù)據(jù)流編程的概念。

圖9。隊列結(jié)構(gòu)支持多循環(huán)間的數(shù)據(jù)共享

如圖所示,隊列支持多個循環(huán)間的數(shù)據(jù)共享。上圖所表示的是典型的所謂生產(chǎn)者/消費者循環(huán)結(jié)構(gòu)。這里,在一個循環(huán)中,一個高速數(shù)字化儀持續(xù)采集數(shù)據(jù),并在每次迭代中將新的數(shù)據(jù)集傳遞至FIFO隊列。消費者循環(huán)僅需監(jiān)視隊列的狀態(tài),當(dāng)每個數(shù)據(jù)集可用時將其寫入磁盤。采用隊列的意義在于這兩個循環(huán)均可相互獨立執(zhí)行。在上例中,高速數(shù)字化儀可以持續(xù)采集數(shù)據(jù),即使這些數(shù)據(jù)寫入磁盤時存在一定的延遲。與此同時,其它的采樣僅需存儲在FIFO隊列中。通常,生產(chǎn)者/消費者管道式方法,通過支持更有效的處理器利用率,使更高的數(shù)據(jù)吞吐量成為可能。這一技術(shù)優(yōu)勢在多核處理器中甚至更為顯著,因為LabVIEW可以動態(tài)分配CPU線程至每個處理器核。

對于一項在線信號處理應(yīng)用,我們可以使用三個獨立的while循環(huán)和兩個隊列結(jié)構(gòu),實現(xiàn)其間的數(shù)據(jù)傳遞。在此應(yīng)用場景下,一個循環(huán)將從一臺儀器采集數(shù)據(jù),一個循環(huán)將專門執(zhí)行信號處理,而第三個循環(huán)將數(shù)據(jù)寫入到另一臺儀器。描述這一方式的LabVIEW模塊框圖如下所示:

圖10。具有多個循環(huán)和排隊結(jié)構(gòu)的管道式信號處理

在上圖中,最上面的循環(huán)是一個生產(chǎn)者循環(huán),它從一個高速數(shù)字化儀采集數(shù)據(jù),并將其傳遞至第一個隊列結(jié)構(gòu)(FIFO)。中間的循環(huán)同時作為生產(chǎn)者和消費者工作。每次迭代中,它從隊列結(jié)構(gòu)中卸載(消費)若干個數(shù)據(jù)集,并以管道的方式獨立對其進行處理。這種管道方式通過支持高達四個數(shù)據(jù)集的獨立處理,實現(xiàn)了多核處理器環(huán)境下的性能改進。注意,中間的循環(huán)同時也作為一個生產(chǎn)者工作,將處理后的數(shù)據(jù)傳遞至第二個隊列結(jié)構(gòu)。最后,最下面的循環(huán)將處理后的數(shù)據(jù)寫入至高速數(shù)字I/O模塊。

并行處理算法改善了多核CPU的處理器利用率。事實上,總吞吐量有賴于兩個因素,處理器利用率和總線傳輸速度。通常,CPU和數(shù)據(jù)總線在處理大數(shù)據(jù)塊時工作效率最高。而且,我們可以進一步使用具有更快傳輸速度的PXIe儀器,縮減數(shù)據(jù)傳輸時間。因而,我們通過依采集數(shù)據(jù)大?。ㄒ圆蓸訑?shù)計)變化的采樣率描述最大吞吐量,如下所示:

圖11。多循環(huán)結(jié)構(gòu)與單循環(huán)結(jié)構(gòu)的吞吐量比較

該圖中所描述的所有標(biāo)定都是圍繞16-位采樣進行的。此外,所采用的信號處理算法為一個截至頻率為采樣率的0.45倍的7階巴特沃茲低通濾波器。如數(shù)據(jù)顯示,4階段管道式(多循環(huán))方式支持最大數(shù)據(jù)吞吐量。注意,2階段信號處理方式獲得了比單循環(huán)方式(順序)更好的性能,但其CPU的利用不及4階段方式有效。上面所列的采樣率為PXIe-5122高速數(shù)字化儀和PXIe-6537高速數(shù)字I/O模塊的輸入和輸出的最大采樣率。注意,當(dāng)采樣率為20 MS/s時,應(yīng)用總線的輸入和輸出的數(shù)據(jù)傳輸率均為40 MB/s,所以總的總線帶寬為80 MB/s。

應(yīng)當(dāng)考慮的是,管道式處理方式在輸入與輸出之間確實引入了時延。所引入的時延取決于幾個因素,包括數(shù)據(jù)塊的大小和采樣率。下表比較了單循環(huán)和4階段多循環(huán)架構(gòu)中實測所得的時延隨數(shù)據(jù)塊大小和最大采樣率的變化情況。

表1和2。單循環(huán)和4階段管道的時延標(biāo)定

正如人們可以預(yù)知的,當(dāng)CPU的使用率接近100%時時延也隨之增加。這一點在采樣率為20 MS/s的4階段管道范例中尤為明顯。相比之下,任何一個單循環(huán)范例的CPU使用率都幾乎不會超過50%。

5. 總結(jié)

基于PC的儀器系統(tǒng),如PXI和PXIe模塊化儀器,從多核處理器技術(shù)的進步和數(shù)據(jù)總線速度的提高中獲益匪淺。當(dāng)新型CPU通過添加多個處理核改進性能時,并行或管道式處理結(jié)構(gòu)成為最大化CPU效率所必需。幸運的是,LabVIEW通過將處理任務(wù)動態(tài)分配至單個處理核;為這一編程挑戰(zhàn)提供了一種上佳的解決方案。如上面數(shù)據(jù)顯示,將LabVIEW算法結(jié)構(gòu)化以利用并行處理,可以帶來顯著的性能提高。



評論


技術(shù)專區(qū)

關(guān)閉