PXI Express正在改變著工程師們設(shè)計(jì)系統(tǒng)的方式。本文討論了支持高速數(shù)據(jù)流處理的技術(shù)、最大化系統(tǒng)流處理性能的應(yīng)用設(shè)計(jì)和在數(shù)據(jù)流導(dǎo)入磁盤與數(shù)據(jù)流導(dǎo)入存儲器應(yīng)用中可獲得的數(shù)據(jù)速率基準(zhǔn)。 引言 流處理是指以足夠維持連續(xù)采集或信號生成的高速率將數(shù)據(jù)傳輸至儀器或從儀器輸出。這就意味著任一項(xiàng)流處理應(yīng)用的性能總是受限于數(shù)據(jù)的大小和傳輸速度。許多工程師利用了“流處理”技術(shù),但是在很多應(yīng)用中,數(shù)據(jù)無法以足夠快的速率被生成或采集。在這些情況下,工程師們必須折衷處理,或者以足夠低的采樣率對要通過總線傳輸?shù)臄?shù)據(jù)進(jìn)行采樣,或者以所需的高速率進(jìn)行采樣但所持續(xù)時(shí)間較短(這個(gè)時(shí)間受限于儀器的板載存儲器)。然而,無論哪一種的犧牲都不是我們希望的。 傳統(tǒng)意義上,桌面儀器系統(tǒng),如示波器、邏輯分析儀和任意波形發(fā)生器等,都已經(jīng)實(shí)現(xiàn)了一定程度的數(shù)據(jù)流處理。雖然許多儀器具有非常高的采樣率和帶寬,但是與PC接口以返回?cái)?shù)據(jù)給用戶的總線卻時(shí)常被忽略,實(shí)際上它會大大增加整體測試時(shí)間。例如,用獨(dú)立示波器進(jìn)行的大部分?jǐn)?shù)據(jù)采集時(shí)間都是有限的,采集的持續(xù)時(shí)間由示波器中板載存儲器的大小所決定(一臺獨(dú)立任意波形發(fā)生器也面臨同樣的問題,除非待發(fā)生的波形是直接下載到板載存儲器中)。數(shù)據(jù)采集完成之后,數(shù)據(jù)通過以太網(wǎng)(或者更為常用的GPIB)傳輸至控制PC。試考慮這樣一種情形,事件觸發(fā)之后以1GS/s的速率對數(shù)據(jù)進(jìn)行采樣。如果該設(shè)備每通道具有256MB的板上存儲空間,那么約250ms后存儲器就被寫滿了,數(shù)據(jù)采集就會停下來。如果儀器接口使用GPIB總線(其帶寬約為1MB/s),那么用戶必須等待約4.5分鐘(250s),這些數(shù)據(jù)才可以傳輸至計(jì)算機(jī)供分析使用。現(xiàn)在,將其與具有相同采樣率和板上存儲空間的NI數(shù)字化儀/示波器相比較。相同的數(shù)據(jù)通過高帶寬的PCI/PXI總線傳輸僅需要不到3秒的時(shí)間——超過80倍的性能提升。PCI Express/PXI Express總線甚至支持更快速的數(shù)據(jù)傳輸。 流處理技術(shù) 在PCI Express技術(shù)之上構(gòu)建的PXI Express,為每臺儀器提供專用的帶寬。PCI Express包括x1、x4、x8和x16等幾種鏈路(讀為"乘1"、"乘4"等),提供每通道250MB/s的吞吐量并具有極低的時(shí)延。對于儀器級硬件,x1與x4選項(xiàng)最為常見,它們分別提供了250MB/s和1GB/s(4×250MB/s)的專用吞吐量。相應(yīng)地,整個(gè)系統(tǒng)的吞吐量隨機(jī)箱內(nèi)儀器數(shù)的增加而增加。下圖著重闡述了各種總線的帶寬與時(shí)延比較。時(shí)延描述的是數(shù)據(jù)傳輸中所發(fā)生的延遲,它常常在考慮系統(tǒng)設(shè)計(jì)時(shí)被忽略。許多人認(rèn)識到,更高的帶寬是希望得到的,但高時(shí)延也會對測試時(shí)間存在不利影響,所以也應(yīng)當(dāng)在系統(tǒng)設(shè)計(jì)中被考慮。 圖1:常見儀器總線的帶寬與時(shí)延的比較。 PXI平臺,由于基于高帶寬的PCI與PCI Express總線,因而支持儀器將數(shù)據(jù)流導(dǎo)入到除板上設(shè)備存儲器之外的信號源或從其導(dǎo)出。一個(gè)PXI/PXI Express數(shù)字化儀/示波器能夠以高采樣率持續(xù)采集數(shù)據(jù),因?yàn)楦邘捒偩支持將數(shù)據(jù)以高達(dá)1GB/s的速率實(shí)時(shí)傳送至PC存儲器或硬盤,這意味著數(shù)據(jù)可以在在設(shè)備存儲器中被覆蓋之前被讀取。 數(shù)據(jù)采集或信號發(fā)生的瓶頸不再是總線,而實(shí)際上是對系統(tǒng)存儲器(硬盤驅(qū)動器或者RAID陣列)進(jìn)行讀取/寫入數(shù)據(jù)的操作。這就意味著工程師們可以以其所需的高采樣率長時(shí)間采集數(shù)據(jù)或發(fā)生信號,而不必影響其采樣率或測試時(shí)間。例如,利用一個(gè)PXIe-5122數(shù)字化儀與一個(gè)具有4TB容量的、12驅(qū)的RAID陣列,可以在兩個(gè)同步采樣的通道以100MS/s的最大采樣率采集數(shù)據(jù),持續(xù)時(shí)間超過2.5小時(shí)。 所有這些意味著什么?許多應(yīng)用挑戰(zhàn)因需要非常昂貴的專有系統(tǒng)而在先前無法解決,但由于使用商業(yè)可用的PXI Express,解決這些挑戰(zhàn)變得可行。其中,一些應(yīng)用包括信號智能中的RF/IF數(shù)據(jù)流處理、數(shù)據(jù)記錄與回放、面向圖像傳感器與顯示面板測試的數(shù)字視頻發(fā)生/流處理,以及其它高數(shù)據(jù)吞吐量的應(yīng)用。 數(shù)據(jù)流盤應(yīng)用的最優(yōu)方法 應(yīng)用從單線程到多線程架構(gòu)的演進(jìn)被廣泛認(rèn)為是重大的編程挑戰(zhàn)。LabVIEW為多核處理器提供了一個(gè)理想的編程環(huán)境,因?yàn)長abVIEW應(yīng)用在本質(zhì)上是多線程的。因而,LabVIEW編程人員通過幾乎很少甚至無需額外的編碼,便可以從多核處理器獲益。多線程應(yīng)用程序非常適用于并行測試和數(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ù)并將其寫入到磁盤。在后臺,LabVIEW為隊(duì)列在PC中分配一個(gè)存儲塊。該存儲器模塊被用作兩個(gè)循環(huán)間數(shù)據(jù)傳遞的臨時(shí)存儲FIFO。對于大多數(shù)編程語言,多個(gè)進(jìn)程間的存儲器共享要求不菲的編程開銷。然而,LabVIEW處理了所有的存儲器訪問,以確保讀-寫競爭狀況不會發(fā)生。隊(duì)列結(jié)構(gòu)的執(zhí)行可以通過下圖可視化展示: 圖3:對列結(jié)構(gòu)的數(shù)據(jù)流編程模型。 |