<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于PC主機北橋的長(cháng)時(shí)間不間斷高速采集和存儲的系統介紹

作者: 時(shí)間:2016-10-16 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/201610/308211.htm

  由于現在的PCI、CPCI、VME等系統的持續傳輸速度很難超越400MB/s,因此要完成實(shí)時(shí)、長(cháng)時(shí)間的采集功能,本設計選擇實(shí)現一種基于PCI-E的系統,PCI-E是第三代接口通信協(xié)議(3GPIO)。傳統的PC只有一個(gè)高速的PCI-E X16接口,本文使用帶G31的芯片組的技嘉主板GA-G31M-ES2C為例來(lái)進(jìn)行討論,雖然G31-ICH7芯片組在南橋上可提供4個(gè)PCI-E ×1接口,但是由于其他I/O端口資源的占用,該主板在上僅提供了一個(gè)PCI-E ×16的插槽,南橋也只提供一個(gè)PCI-E ×1插槽。因此如果只采用G31/ICH7芯片組的電腦建立一個(gè)PCI-E采集系統,它只能實(shí)現PCI-E 1.0 單通道的采集系統,帶寬就被限制在200MB/s內。而這種格局主要是由于計算機北橋只提供一個(gè)PCI-E插槽,不能同時(shí)滿(mǎn)足和存儲的連接需要,因此擴展北橋上的PCI-E接口,將整個(gè)采集存儲都建立在北橋上變得至關(guān)重要。

  系統結構分析

  Intel(英特爾)公司最新的雙通道DDR3內存以及下一代雙×16 PCI-E 2.0的計算機芯片組技術(shù)提供了一種更新的個(gè)人電腦的架構,這些技術(shù)被應用到X38、X48和X58等計算機芯片組中。本文以X58為例,圖1為X58芯片組的系統架構。

  

  圖1 X58芯片組的系統架構

  X58芯片組搭配新南橋ICH10或ICH10R,可支持四條PCI-E ×16插槽(其中兩條符合PCI-E 2.0規范),根據通道數的要求可組成四種不同模式,當然它只支持雙圖形處理器(GPU)協(xié)同運行的技術(shù)CrossFire,仍不支持Scalable Link Interface(SLI)技術(shù)。SLI技術(shù)是主板能夠同時(shí)使用兩塊同型號PCI-E顯卡的一種技術(shù),同時(shí)芯片間通信通過(guò)類(lèi)似AMD HyperTransport總線(xiàn)技術(shù)的QPI總線(xiàn)技術(shù)完成,借助PCI-E通道可帶來(lái)最高25.6GB/s的雙向帶寬,而現在的前端總線(xiàn)Front Side Bus(FSB)則被徹底棄用。我們可以直接運用X58芯片組構建一個(gè)高速實(shí)時(shí)的系統,但由于現階段很少有能夠完全利用PCI-E ×16帶寬的采集卡,因此將資源進(jìn)行分割,利用多塊采集模塊組成一個(gè)采集系統,通過(guò)PCI-E Switch擴展接口的方法可以將X58芯片組擴展成為一個(gè)更高速、兼容更多模塊的采集存儲系統。

  DMI(Direct Media Interface)直接媒體接口是Intel公司開(kāi)發(fā)用于連接主板南北橋的總線(xiàn),取代了以前的Hub-Link總線(xiàn)。DMI采用點(diǎn)對點(diǎn)的連接方式,時(shí)鐘頻率為100MHz,由于它基于PCI-E總線(xiàn),因此具有PCI-E總線(xiàn)的優(yōu)勢。DMI實(shí)現了上行與下行各1GB/s的數據傳輸率,總帶寬達到2GB/s,但DMI還要與其他I/O設備進(jìn)行通信,因此如果選擇南橋的PCI-E端口進(jìn)行傳輸,傳輸速度將受到很大的限制,理想情況下至多只能實(shí)現1GB/s的傳輸存儲速度。因此,本系統在計算機中DMI以上的結構中完成數據的傳輸和存儲。我們可以將連接在芯片G31 GMCH的PCI-E ×16端口通過(guò)一個(gè)PCI-E Switch進(jìn)行擴展,擴展后的結構相當于北橋提供了多個(gè)高速的PCI-E接口,形成一個(gè)類(lèi)似于圖1中的X58架構,從而使整個(gè)傳輸存儲過(guò)程不受DMI雙向2GB/s速度的影響。

  利用北橋PCI-E擴展技術(shù),將所有的采集卡和存儲卡都連接到主機的北橋端,可使整個(gè)數據傳輸不受主機DMI等的速度瓶頸限制,如果只是使用PCI-E ×4對系統進(jìn)行擴展,理想的有效數據傳輸速度也可達800MB/s,而且由于PCI-E協(xié)議是雙向同時(shí)傳輸的,因此將采集卡和存儲卡同時(shí)連接到一個(gè)端口并不會(huì )影響其傳輸和存儲的效率。

  系統設計

  PCI-E Switch

  PCI-E Switch為整個(gè)系統提供擴展端口,系統中所有的PCI-E接口都是通過(guò)PCI-E Switch芯片擴展出來(lái)的,類(lèi)似的可以看成將多個(gè)PCI-E插槽直接連接到主機的北橋上。圖2為含PCI-E的拓撲結構圖,通過(guò)Switch可以將一個(gè)上游設備口擴展多個(gè)下游端口,此外PCI-E Switch還可以級聯(lián)。通過(guò)一個(gè)多通道的PCI-E Switch可擴展構建一個(gè)多采集卡多存儲設備的實(shí)時(shí)存儲系統。

  

  圖2 含PCI-E Switch的拓撲結構圖

  本方案采用的是PLX公司的一塊PCI-E Switch芯片PEX8616,它是一款可以設置4個(gè)接口并擁有16個(gè)通道的PCI-E Switch芯片,并可設置每個(gè)接口的通道數。其支持透明橋(TB)、非透明橋(NTB)兩種方式,即可以支持兩個(gè)及以上的多主機系統和多智能I/O端口的模塊。PEX8616每個(gè)通道含有兩個(gè)虛擬端口,且支持熱插拔。由于主要目的是將北橋上的PCI-E ×16插槽擴展成為多個(gè)PCI-E接口。因此,本系統中將其分為四個(gè)PCI-E ×4的接口。端口號為0、1、5和6,將與主機連接的端口0設置為上游端口,其余三個(gè)端口則為下游端口,連接采集卡和RAID存儲卡。

  PCI-E數據傳輸方式包含地址路由和ID路由等方式,PCI-E設備在系統中都有一個(gè)ID,根據所處的PCI總線(xiàn)號、設備號和功能號來(lái)確定。一個(gè)PCI-E Switch可以看成多個(gè)P2P橋的集合,并且在上游設備和下游設備之前還虛擬了一條總線(xiàn)。
系統與橋

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

  

  圖3 基于PCI-E Switch的非透明橋系統

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

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

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

  采集存儲系統的實(shí)現

  系統結構

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

  因此本方案考慮通過(guò)引入Cable PCI-E來(lái)改善系統。Cable PCI-E是基于PCI-E用于服務(wù)器、臺式機和筆記本的下一代外圍總線(xiàn),它具有以下的優(yōu)點(diǎn):

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

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

  • 低延遲,300ns~700ns;

  • 兼容性強,系統軟件上完全兼容PCI模式;

  • Cable PCI-E至少由15種標準形成;

  • 唯一可以同時(shí)應用于Chip-to-Chip、board-to-board和box-to-box的標準。

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

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

  

  圖4 PCI-E Switch采集存儲系統結構圖

  數據的采集、傳輸和存儲

  數據采集

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

  數據傳輸和存儲

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

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

  

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

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

  

  圖5 采集存儲系統軟件流程圖

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

  RAID 0又稱(chēng)為Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID 0提高存儲性能的原理是把連續的數據分散到多個(gè)磁盤(pán)上存取,這樣,系統有數據請求就可以被多個(gè)磁盤(pán)并行的執行,每個(gè)磁盤(pán)執行屬于它自己的那部分數據請求。這種數據上的并行操作可以充分利用總線(xiàn)的帶寬,顯著(zhù)提高磁盤(pán)整體存取性能。

  表2 RAID0方式下讀寫(xiě)陣列速度比較(MB/s)

  

  該系統在實(shí)際的采集存儲過(guò)程中,連續存儲的速度在135MB/s,因此用兩塊或者三塊磁盤(pán)組成的RAID 0陣列就能完全滿(mǎn)足設計要求。因為存儲的速度仍明顯高于采集卡DMA傳輸的速度,而且可以通過(guò)擴展RAID卡上的硬盤(pán)數進(jìn)一步增加磁盤(pán)陣列存儲速度。表2的實(shí)驗數據使用四個(gè)Western Digest WD3200AAJS硬盤(pán),因為使用同樣大小或者規格的硬盤(pán)能夠更好的使用所用的磁盤(pán)空間。由表中的數據可以看出,隨著(zhù)磁盤(pán)數目的增加,其存儲的各項指標均有明顯的提高,該磁盤(pán)陣列卡Rocket RAID 2680最多可提供8塊SATA硬盤(pán),隨著(zhù)采集卡采集傳輸的速度的提升,可以用更多的磁盤(pán)組建磁盤(pán)陣列,來(lái)匹配前端采集卡的帶寬,所以整個(gè)系統只需更換一個(gè)更高速的PCI-E采集卡就可以實(shí)現更高存儲速度的高速采集存儲系統。

  

  圖6 高速采集存儲系統照片

  結論

  設計一個(gè)基于PC主機北橋的長(cháng)時(shí)間不間斷高速采集和存儲的系統。利用PC北橋PCI-E擴展技術(shù),將采集卡和存儲都連接到計算機北橋,此法可以用于后續通道進(jìn)一步擴大的應用中。本文最后介紹了利用PC主機、PCI-E接口芯片PEX8311、Switch芯片PEX8616和RAID磁盤(pán)陣列卡,構建一個(gè)PCI-E架構的實(shí)時(shí)海量存儲系統的案例。數據通過(guò)PC機的北橋芯片,實(shí)現采集卡到磁盤(pán)陣列存儲卡的數據高速傳輸。雖然在采集卡采用PCI-E X1的情況下并不能完全體現將整個(gè)系統都集中在主機北橋的優(yōu)勢,但是它將會(huì )在更進(jìn)一步的設計和研究中體現出來(lái)。



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>