新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 基于PC主機(jī)北橋的長時間不間斷高速采集和存儲的系

基于PC主機(jī)北橋的長時間不間斷高速采集和存儲的系

作者: 時間:2012-09-26 來源:網(wǎng)絡(luò) 收藏

系統(tǒng)與橋

本文引用地址:http://2s4d.com/article/185722.htm

  透明橋系統(tǒng)是指整個系統(tǒng)中只含一個設(shè)備,其余所有設(shè)備都是以端點設(shè)備的形式出現(xiàn)。所有下游設(shè)備不能自發(fā)進(jìn)行數(shù)據(jù)傳輸,只有在上位機(jī)引導(dǎo)下進(jìn)行數(shù)據(jù)傳輸。采集卡可以通過DMA等方式將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)的內(nèi)存中的某個區(qū)域,然后再將內(nèi)存中的數(shù)據(jù)到磁盤陣列中。由于和讀取同一塊內(nèi)存,因此在軟件上可以多開辟幾塊內(nèi)存,利用多線程規(guī)避系統(tǒng)順序執(zhí)行所帶來的延遲,提高傳輸和的速度。

  

  圖3 基于PCI-E Switch的非透明橋系統(tǒng)

  PEX8616提供非透明橋,非透明端口保持處理器的電氣及邏輯隔離,可以防止列舉端口后面的設(shè)備,從而隔離其后的處理器及內(nèi)存空間。非透明端口允許打開窗口以交換數(shù)據(jù),通過地址轉(zhuǎn)換,數(shù)據(jù)從端口的一側(cè)中傳輸另外一側(cè)。每個處理器把非透明端口的另一端當(dāng)作一個下游設(shè)備,并把它映射到自己的地址空間。利用非透明端口的地址翻譯能力,處理器之間可以通過PCI-E總線進(jìn)行通信。因此系統(tǒng)構(gòu)建可以考慮引入非透明橋,在上位機(jī)存在的情況下,讓采集卡或者存儲卡也作為一個端,數(shù)據(jù)在采集存儲過程中可以直接繞開PC主機(jī)進(jìn)行,當(dāng)數(shù)據(jù)進(jìn)行反演時,上位機(jī)再作為上游,對磁盤陣列進(jìn)行操作和控制。

  圖3為一種非透明橋的系統(tǒng),其中包含兩個Host Bridge和PCI-E Root Complex,其中本地設(shè)備系統(tǒng)中的Root Complex連接到PCI-E Switch的一個NT端口上,從而在主系統(tǒng)的PCI結(jié)構(gòu)中把它作為一個下游設(shè)備。PCI-E Switch連接兩個獨立的處理器域,本地設(shè)備的資源和地址對主系統(tǒng)是不可見的。允許本地處理器獨立地配置和控制其子系統(tǒng)。主系統(tǒng)和本地系統(tǒng)的時鐘完全獨立。主系統(tǒng)和本地系統(tǒng)的地址完全獨立,在主系統(tǒng)和本地系統(tǒng)之間可以進(jìn)行地址翻譯。增加了隔離主系統(tǒng)、本地系統(tǒng)總線之間地址域的功能。

  在構(gòu)建采集存儲系統(tǒng)的過程中可以將采集模塊或者存儲模塊以構(gòu)建本地系統(tǒng)的方式實現(xiàn),從而可以在采集數(shù)據(jù)后直接對數(shù)據(jù)進(jìn)行預(yù)處理然后再送到PCI-E總線進(jìn)行存儲或者可以在存儲之后直接在本地系統(tǒng)進(jìn)行回放或者提供網(wǎng)口訪問存儲數(shù)據(jù)等功能。

  采集存儲系統(tǒng)的實現(xiàn)

  系統(tǒng)結(jié)構(gòu)

  系統(tǒng)由PC主機(jī)、PCI-E Switch背板、采集卡和RAID存儲卡組成。在完成背板設(shè)計后,先利用一塊PEX8311接口芯片的采集卡,Rocket RAID 2680磁盤陣列卡,實現(xiàn)一種存儲的系統(tǒng)。然而因為普通的PC機(jī)箱的空間有限,如果將PCI-E Switch背板與上位機(jī)的接口直接以PCI-E金手指的形式,則當(dāng)背板接入主機(jī)后,很難創(chuàng)造一個空間可以容納其他板卡插到背板上。并且由于磁盤陣列是由多個Western Digest WD3200AAJS的硬盤構(gòu)成,發(fā)熱量也成為一個很顯著的問題。

  因此本方案考慮通過引入Cable PCI-E來改善系統(tǒng)。Cable PCI-E是基于PCI-E用于服務(wù)器、臺式機(jī)和筆記本的下一代外圍總線,它具有以下的優(yōu)點:

  • 成本較低,由于PCI-E廣泛用于各種主機(jī);

  • 高帶寬,Gen1 ×4 Cable的帶寬即達(dá)到1GB/s;

  • 低延遲,300ns~700ns;

  • 兼容性強(qiáng),系統(tǒng)軟件上完全兼容PCI模式;

  • Cable PCI-E至少由15種標(biāo)準(zhǔn)形成;

  • 唯一可以同時應(yīng)用于Chip-to-Chip、board-to-board和box-to-box的標(biāo)準(zhǔn)。

  PCI-SIG標(biāo)準(zhǔn)組織將Cable PCI-E定義為一種基于PCI-E的基本規(guī)范的擴(kuò)展,通過線纜化將PCI-E協(xié)議擴(kuò)展到box-to-box應(yīng)用和實現(xiàn)長距離的傳輸是產(chǎn)生Cable PCI-E標(biāo)準(zhǔn)的目的。Cable PCI-E提供一種簡單而且具有高性能的總線,方便擴(kuò)展PC以及測試I/O等設(shè)備。本方案就是利用Cable PCI-E方便擴(kuò)展設(shè)備的特點,將整個采集存儲系統(tǒng)完全分離到PC機(jī)箱外,最終可以獨立構(gòu)建成一個機(jī)箱形成一種box-to-box的模式,使得整個系統(tǒng)的可擴(kuò)展性很強(qiáng),PCI-E ×4及其以下的COST采集板卡和存儲卡均可以很好的應(yīng)用于本系統(tǒng)中。獨立的機(jī)箱也為磁盤陣列中的硬盤提供足夠的空間,系統(tǒng)的散熱也能得到很好的保障。

  系統(tǒng)的結(jié)構(gòu)圖如圖4所示,整個系統(tǒng)圍繞PCI-E Switch構(gòu)建而成,通過兩個Cable PCI-E將系統(tǒng)的各個模塊獨立開來。由于采集卡采用的為PEX8311,故采集卡與PCI-E Switch連接的通道數(shù)為1,在后續(xù)的研究中可以升級采集的采集和接口速度從而實現(xiàn)整個系統(tǒng)的升級。磁盤陣列卡是一款消費類產(chǎn)品,Rocket RAID 2680不能提供HOST功能,因此本案構(gòu)建的是一個透明橋系統(tǒng)。

  

  圖4 PCI-E Switch采集存儲系統(tǒng)結(jié)構(gòu)圖

  數(shù)據(jù)的采集、傳輸和存儲

  數(shù)據(jù)采集

  采集板AD采用TI ADS6145芯片,采樣位數(shù)為14bit,最高采樣頻率為125Mbps。AD采集后的數(shù)據(jù)接入到Xilinx公司Spartan-3ADSP系列的FPGA芯片XC3SD3400A。因為PEX8311接口芯片可支持8位、16位、32位數(shù)據(jù)的傳輸,為了提高數(shù)據(jù)傳輸?shù)男?,同時也為了使得數(shù)據(jù)采集速率獲得相對提升。本設(shè)計中PEX8311中采用32位數(shù)據(jù)傳輸。所以在本方案FPGA數(shù)據(jù)流邏輯控制中,不僅要完成數(shù)據(jù)的緩存以及數(shù)據(jù)傳輸邏輯的控制,還要進(jìn)行數(shù)據(jù)位的變換擴(kuò)展,由14位數(shù)據(jù)擴(kuò)展為32位數(shù)據(jù)。

  數(shù)據(jù)傳輸和存儲

  數(shù)據(jù)傳輸是指的從PEX8311到主機(jī)內(nèi)存的過程。本方案選擇DMA方式進(jìn)行,由于PEX8311內(nèi)建兩個DMA通道。本方案使用其中的一個,DMA通道0。在安裝PLX提供的SDK以及驅(qū)動后,可以通過其提供的API開發(fā)包中的函數(shù)對PEX8311和PEX8616進(jìn)行控制和訪問。一般的DMA傳輸過程是無需CPU的參與的,但是含Burst的DMA操作還是要通過CPU的參與的,與單獨的一次讀寫操作相比,Burst只需要提供一個起始地址就行了,以后的地址依次加1,而非Burst操作每次都要給出地址,以及需要中間的一些應(yīng)答、等待狀態(tài)等等。如果是對地址連續(xù)的讀取,Burst效率高得多,但如果地址是跳躍的,則無法采用Burst操作。PEX8311的DMA傳輸支持Single Burst 、Burst-4LW和Infinite Burst三種突發(fā)方式,表1為三種突發(fā)方式在不同單次傳輸字節(jié)數(shù)的情況下的傳輸速度對比。

  表1 DMA傳輸在三種突發(fā)方式下的速度對比(MB/s)

  

  由表1數(shù)據(jù)可觀察出,采用后兩種突發(fā)方式進(jìn)行DMA傳輸時,速度較普通DMA傳輸方式有明顯的提高,因此本方案采用Infinite Burst突發(fā)方式進(jìn)行DMA傳輸,使用連續(xù)的地址,以提高DMA傳輸?shù)乃俣取?/span>

  PLX公司SDK中提供的函數(shù)可對PEX8311和PEX8616進(jìn)行一系列控制和操作,DMA通道的參數(shù)設(shè)置在打開DMA通道的時候一并完成,通過設(shè)置函數(shù)PlxPci_DeviceOpen()中的PLX_DMA_PROP結(jié)構(gòu)體可以設(shè)置DMA傳輸?shù)耐话l(fā)方式、本地總線帶寬和傳輸方向等參數(shù)。在系統(tǒng)初始化過程中設(shè)置以上參數(shù)。當(dāng)整個采集存儲過程完成時,則需要進(jìn)行對整個工程的關(guān)閉工作,同樣是通過SDK中的函數(shù)PlxPci_DeviceClose()來關(guān)閉DMA通道。然后釋放開辟的所有內(nèi)存塊空間,并將指針賦NULL值。系統(tǒng)連續(xù)存儲的整個過程從開始到結(jié)束,雖然進(jìn)行了很多個DMA傳輸?shù)牟僮?,但是只進(jìn)行了一次DMA通道的打開和關(guān)閉,從而盡可能低的減小由于這部分時間帶來的速度影響。軟件流程如圖5所示。

  

  圖5 采集存儲系統(tǒng)軟件流程圖

  根據(jù)圖5可以觀察到系統(tǒng)引入了多線程技術(shù),多線程技術(shù)的實現(xiàn)是通過分別創(chuàng)建兩個函數(shù),一個控制DMA控制器進(jìn)行連續(xù)的數(shù)據(jù)傳輸,另一個用于將內(nèi)存中的數(shù)據(jù)快速的存儲到磁盤陣列中,然后創(chuàng)建成為兩個線程。當(dāng)準(zhǔn)備開始進(jìn)行數(shù)據(jù)傳輸?shù)臅r候,首先是設(shè)置DMA傳輸?shù)膮?shù)并打開DMA通道。在此過程中還需要申請多塊內(nèi)存空間進(jìn)行緩存數(shù)據(jù),由于使用多線程技術(shù),因此一塊內(nèi)存空間不能同時供兩個函數(shù)同時讀寫,因此創(chuàng)建多個內(nèi)存塊,然后將兩個線程同時打開,對開辟的多個內(nèi)存塊依次進(jìn)行讀寫操作,但是由于整個過程只包含一個極短的時間延遲,因此完全可以將整個讀寫內(nèi)存的過程近似的看成一個同時進(jìn)行讀寫操作,因此達(dá)到提高存儲的速度的目的。

p2p機(jī)相關(guān)文章:p2p原理




關(guān)鍵詞: 主機(jī) 北橋 高速采集 存儲

評論


相關(guān)推薦

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

關(guān)閉