高速數(shù)據(jù)流盤處理:編程與標(biāo)定
數(shù)據(jù)流盤應(yīng)用的最優(yōu)方法
應(yīng)用從單線程到多線程架構(gòu)的演進(jìn)被廣泛認(rèn)為是重大的編程挑戰(zhàn)。LabVIEW為多核處理器提供了一個(gè)理想的編程環(huán)境,因?yàn)長(zhǎng)abVIEW應(yīng)用在本質(zhì)上是多線程的。因而,LabVIEW編程人員通過幾乎很少甚至無需額外的編碼,便可以從多核處理器獲益。多線程應(yīng)用程序非常適用于并行測(cè)試和數(shù)據(jù)流盤應(yīng)用,而且,在流處理應(yīng)用中運(yùn)用適當(dāng)?shù)木幊碳夹g(shù),可以使PXI Express儀器發(fā)揮最大性能,這是通過代碼的并行化完成的。
同樣,并行機(jī)制還可以應(yīng)用于創(chuàng)建數(shù)據(jù)流盤應(yīng)用或從計(jì)算機(jī)處理器獲取最大性能。在流盤應(yīng)用中,兩個(gè)主要占用總線和處理器的任務(wù)是:1)從數(shù)字化儀采集數(shù)據(jù),和2)將數(shù)據(jù)寫入到文件中。由于這一點(diǎn)是事先知道的,所以進(jìn)程可以劃分為多個(gè)循環(huán)。利用LabVIEW隊(duì)列機(jī)構(gòu),每個(gè)循環(huán)間實(shí)現(xiàn)了數(shù)據(jù)共享。通常,這被稱為一個(gè)生產(chǎn)者-消費(fèi)者算法結(jié)構(gòu)。
圖2:帶有隊(duì)列結(jié)構(gòu)的生產(chǎn)者/消費(fèi)者循環(huán)架構(gòu)。
在上例中,上面的循環(huán)(生產(chǎn)者)從一個(gè)高速數(shù)字化儀中采集數(shù)據(jù),并將其傳遞至一個(gè)隊(duì)列。下面的循環(huán)(消費(fèi)者)從隊(duì)列中讀取數(shù)據(jù)并將其寫入到磁盤。在后臺(tái),LabVIEW為隊(duì)列在PC中分配一個(gè)存儲(chǔ)塊。該存儲(chǔ)器模塊被用作兩個(gè)循環(huán)間數(shù)據(jù)傳遞的臨時(shí)存儲(chǔ)FIFO。對(duì)于大多數(shù)編程語(yǔ)言,多個(gè)進(jìn)程間的存儲(chǔ)器共享要求不菲的編程開銷。然而,LabVIEW處理了所有的存儲(chǔ)器訪問,以確保讀-寫競(jìng)爭(zhēng)狀況不會(huì)發(fā)生。隊(duì)列結(jié)構(gòu)的執(zhí)行可以通過下圖可視化展示:
圖3:對(duì)列結(jié)構(gòu)的數(shù)據(jù)流編程模型。
評(píng)論