利用NI LabVIEW優(yōu)化多核處理器環(huán)境下的自動(dòng)化測(cè)試
圖6. 通過(guò)這一簡(jiǎn)單步驟,您可以并行執(zhí)行多個(gè)定制的子例程,就如同標(biāo)準(zhǔn)的LabVIEW分析函數(shù)。
因此,在多核處理器環(huán)境下,您可以通過(guò)簡(jiǎn)單的編程技術(shù)實(shí)現(xiàn)您的自動(dòng)化測(cè)試應(yīng)用的性能改進(jìn)。
優(yōu)化硬件在環(huán)應(yīng)用
得益于并行信號(hào)處理技術(shù)的又一個(gè)應(yīng)用便是為同時(shí)輸入與輸出使用多個(gè)儀器。一般,這些應(yīng)用被稱為硬件在環(huán)(HIL)或在線處理應(yīng)用。在此情況下,您可以使用高速數(shù)字化儀或高速數(shù)字I/O模塊來(lái)采集信號(hào)。在您的軟件中執(zhí)行數(shù)字信號(hào)處理算法。最后,通過(guò)另一個(gè)模塊化儀器生成結(jié)果。圖7描述了一個(gè)典型的模塊框圖。
圖7. 該框圖描述了一個(gè)典型的硬件在環(huán)(HIL)應(yīng)用所包括的執(zhí)行步驟。
常見HIL應(yīng)用包括在線數(shù)字信號(hào)處理(如濾波、插值等)、傳感器仿真和定制組件模擬。您可以使用多種技術(shù),以獲得在線數(shù)字信號(hào)處理應(yīng)用的最佳吞吐量。
通常,您可以使用兩種基本的編程結(jié)構(gòu),單循環(huán)結(jié)構(gòu)和帶有隊(duì)列的流水線式多循環(huán)結(jié)構(gòu)。單循環(huán)結(jié)構(gòu)實(shí)現(xiàn)簡(jiǎn)單,對(duì)于小數(shù)據(jù)塊具有較低時(shí)延。相比之下,多循環(huán)結(jié)構(gòu)能夠支持高得多的吞吐量,因?yàn)樗鼈兡軌蚋玫乩?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/多核處理器">多核處理器。
對(duì)于傳統(tǒng)的單循環(huán)方式,您順次組織一個(gè)高速數(shù)字化儀的讀函數(shù)、信
號(hào)處理算法和高速數(shù)字I/O的寫函數(shù)。如圖8的模塊框圖所示,這些子例程中的每一個(gè)都必須按照LabVIEW編程模型所確定的順序執(zhí)行。
圖8. 對(duì)于LabVIEW的單循環(huán)方式,每個(gè)子例程都必須順次執(zhí)行。
單循環(huán)結(jié)構(gòu)受限于幾個(gè)因素。由于順序執(zhí)行每一環(huán)節(jié),處理器在處理數(shù)據(jù)的同時(shí)受限,無(wú)法執(zhí)行儀器I/O。在這種方式下,由于處理器一次只能執(zhí)行一個(gè)函數(shù),所以您無(wú)法有效利用一個(gè)多核CPU。雖然單循環(huán)結(jié)構(gòu)可以處理較低的采集速率,但是,如需更高的數(shù)據(jù)吞吐量,仍須采用多循環(huán)方式。
多循環(huán)架構(gòu)使用隊(duì)列結(jié)構(gòu)實(shí)現(xiàn)while循環(huán)間的數(shù)據(jù)傳遞。圖9描述了多個(gè)while循環(huán)(帶有一個(gè)隊(duì)列結(jié)構(gòu))間的編程方式。
圖9. 借助隊(duì)列結(jié)構(gòu),可以實(shí)現(xiàn)多個(gè)循環(huán)間的數(shù)據(jù)共享。
圖9所表示的是典型的所謂生產(chǎn)者/消費(fèi)者循環(huán)結(jié)構(gòu)。在此例中,一個(gè)高速數(shù)字化儀在一個(gè)循環(huán)中持續(xù)采集數(shù)據(jù),并在每次迭代中將新的數(shù)據(jù)集傳遞至FIFO隊(duì)列。消費(fèi)者循環(huán)僅需監(jiān)視隊(duì)列的狀態(tài),當(dāng)每個(gè)數(shù)據(jù)集可用時(shí)將其寫入磁盤。采用隊(duì)列的意義在于這兩個(gè)循環(huán)均可相互獨(dú)立執(zhí)行。在上例中,高速數(shù)字化儀可以持續(xù)采集數(shù)據(jù),即使這些數(shù)據(jù)寫入磁盤時(shí)存在一定的延遲。與此同時(shí),其它的采樣僅需存儲(chǔ)在FIFO隊(duì)列中。通常來(lái)說(shuō),生產(chǎn)者/消費(fèi)者流水線方法,通過(guò)更有效的處理器利用率,提供更高的數(shù)據(jù)吞吐量。這一技術(shù)優(yōu)勢(shì)在多核處理器環(huán)境下更為顯著,因?yàn)長(zhǎng)abVIEW可以動(dòng)態(tài)分配處理器線程至每個(gè)處理器核。
對(duì)于一項(xiàng)在線信號(hào)處理應(yīng)用,您可以使用三個(gè)獨(dú)立的while循環(huán)和兩個(gè)隊(duì)列結(jié)構(gòu),實(shí)現(xiàn)其間的數(shù)據(jù)傳遞。在此應(yīng)用情況下,一個(gè)循環(huán)將從一臺(tái)儀器采集數(shù)據(jù),一個(gè)循環(huán)將專門執(zhí)行信號(hào)處理,而第三個(gè)循環(huán)將數(shù)據(jù)寫入到另一臺(tái)儀器。
圖10. 該模塊框圖描述了帶有多個(gè)循環(huán)與隊(duì)列結(jié)構(gòu)的流水線式信號(hào)處理。
圖10中,最上面的循環(huán)是一個(gè)生產(chǎn)者循環(huán),它從一個(gè)高速數(shù)字化儀采集數(shù)據(jù),并將其傳遞至第一個(gè)隊(duì)列結(jié)構(gòu)(FIFO)。中間的循環(huán)同時(shí)作為生產(chǎn)者和消費(fèi)者工作。每次迭代中,它從隊(duì)列結(jié)構(gòu)中接收(消費(fèi))若干個(gè)數(shù)據(jù)集,并以流水線的方式獨(dú)立對(duì)其進(jìn)行處理。這種流水線方式通過(guò)支持高達(dá)四個(gè)數(shù)據(jù)集的獨(dú)立處理,實(shí)現(xiàn)了在多核處理器環(huán)境下的性能改進(jìn)。注意,中間的循環(huán)同時(shí)也作為一個(gè)生產(chǎn)者工作,將處理后的數(shù)據(jù)傳遞至第二個(gè)隊(duì)列結(jié)構(gòu)。最后,最下面的循環(huán)將處理后的數(shù)據(jù)寫入至高速數(shù)字I/O模塊。
并行處理算法改善了多核CPU的處理器利用率。事實(shí)上,總吞吐量取決于兩個(gè)因素,處理器利用率和總線傳輸速度。通常,CPU和數(shù)據(jù)總線在處理大數(shù)據(jù)塊時(shí)工作效率最高。而且,我們可以進(jìn)一步使用具有更快傳輸速度的PXI Express儀器,減小數(shù)據(jù)傳輸時(shí)間。
圖11. 多循環(huán)結(jié)構(gòu)提供比單循環(huán)結(jié)構(gòu)高得多的吞吐量。
圖11描述了最大吞吐量和采樣率的關(guān)系,采樣數(shù)據(jù)塊大小以采樣點(diǎn)數(shù)來(lái)計(jì)算。此處所描述的所有標(biāo)定都是圍繞16位采樣進(jìn)行的。此外,所采用的信號(hào)處理算法為一個(gè)截止頻率為采樣率的0.45倍的7階巴特沃茲低通濾波器。如數(shù)據(jù)顯示,您可以在4階流水線式(多循環(huán))方式下達(dá)到最大數(shù)據(jù)吞吐量。注意,2階信號(hào)處理方式獲得了比單循環(huán)方式(順序)更好的性能,但其CPU的利用率低于4階方式。上面所列的采樣率均為NI PXIe-5122高速數(shù)字化儀和NI PXIe-6537高速數(shù)字I/O模塊的輸入和輸出的最大采樣率。注意,當(dāng)采樣率為20 MS/s時(shí),應(yīng)用總線的輸入和輸出的數(shù)據(jù)傳輸率均為40 MB/s,所以總的總線帶寬為80 MB/s。
而且,應(yīng)當(dāng)考慮的是,流水線式處理方式在輸入與輸出之間確實(shí)引入了時(shí)延。所引入的時(shí)延取決于幾個(gè)因素,包括數(shù)據(jù)塊的大小和采樣率。下面的表1和表2比較了單循環(huán)和4階多循環(huán)架構(gòu)中的實(shí)測(cè)時(shí)延隨數(shù)據(jù)塊大小和最大采樣率的變化情況。
表1和2. 這兩個(gè)表格描述了單循環(huán)和4階流水線的時(shí)延。
評(píng)論