朱策+徐暉+周體民
摘 ?要: 隨著高速采集系統(tǒng)的采樣速率的增大和采樣精度的提高,如何設(shè)置PCI Express系統(tǒng)的參數(shù),充分利用PCI Express總線的帶寬,以滿足高速海量數(shù)據(jù)的實時傳輸就變得非常重要。在此分析了PCI Express系統(tǒng)數(shù)據(jù)傳輸開銷的來源,研究了幾種主要的系統(tǒng)參數(shù),以提高數(shù)據(jù)吞吐量。通過使用PLDA 的EZDMA2 IP核,在Xilinx KC705評估板上對各個參數(shù)進行測試,結(jié)果表明,靈活設(shè)置這些關(guān)鍵的系統(tǒng)參數(shù)可以利用較少的FPGA資源,同時達到較高的傳輸帶寬,對PCI Express系統(tǒng)設(shè)計具有非常高的參考價值。
關(guān)鍵詞: 高速數(shù)據(jù)采集; PCI Express; 總線傳輸帶寬; PLDA EZDMA2 IP; Xilinx KC705
中圖分類號: TN964?34 ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2014)24?0126?04
Performance analysis of PCI express bus for high?speed data acquisition
ZHU Ce1, XU Hui1, ZHOU Ti?min2
(1. School of Electronic Science and Engineering, National University of Defense Technology, Changsha 410073, China; 2. Unit 63626 of PLA, Jiuquan 732750, China)
Abstract: With increase of sampling rate and improvement of sampling precision of high?speed acquisition system, it is very important to know how to set the parameters PCI Express system and to make full use of PCI Express bus bandwidth, so as to meet the high?speed real?time transmission of mass data. In this paper, the data transfer overhead of PCI Express system is
analyzed and several major system parameters are investigated to improve data throughput. By using EZDMA2 IP core in PLDA, various parameters were tested on Xilinx KC705 evaluation board. The results show that flexible setting of these critical system parameters can occupy fewer FPGA resources while achieving higher transmission bandwidth. It has a very high reference value for PCI Express system design.
Keywords: high?speed data acquisition; PCI express; bus transmission bandwidth; PLDA EZDMA2 IP; Xilinx KC705
0 ?引 ?言
高速數(shù)據(jù)采集系統(tǒng)廣泛應用于電子測量、軟件無線電、雷達等領(lǐng)域,涉及采樣理論、數(shù)字信號處理、高速電路設(shè)計、高速ADC等多個領(lǐng)域,屬于信號獲取領(lǐng)域的重要課題。隨著半導體工藝技術(shù)的日益進步,高速數(shù)據(jù)采集中所用的ADC采樣精度和采樣速度己經(jīng)達到一個新的水平,幾百MHz甚至幾GHz采樣速率的采集系統(tǒng),已得到廣泛的應用,這就要求有相應的高帶寬的數(shù)據(jù)總線,將采樣數(shù)據(jù)傳輸出來,進行信號處理或存儲[1]。作為一個串行的點對點互聯(lián)協(xié)議,PCI Express技術(shù)為可靠的數(shù)據(jù)傳輸提供了一個高帶寬可擴展的解決方案,所以其迅速在高速采集領(lǐng)域得到了廣泛的應用[2]。文章分析了PCI Express系統(tǒng)數(shù)據(jù)傳輸開銷的來源,研究了影響PCI Express系統(tǒng)性能的因素,同時基于PLDA 的EZDMA2 IP核和Xilinx KC705評估板對PCI Express系統(tǒng)進行性能測量和分析,以驗證這些因素的影響[3?6]。
1 ?PCI Express性能定義
PCI Express協(xié)議規(guī)定,對于PCI Express Gen1系統(tǒng),單個鏈路最大傳輸速率是2.5 Gb/s,Gen2系統(tǒng)最大傳輸速率為5 Gb/s,最新的Gen3系統(tǒng)[7]為8 Gb/s。這些速率描述的是每個通道上單方向數(shù)據(jù)傳輸?shù)脑急忍芈?,而不是PCI Express系統(tǒng)的數(shù)據(jù)傳輸速率。由于存在各種開銷和其他系統(tǒng)設(shè)計的折衷,PCI Express系統(tǒng)的有效數(shù)據(jù)傳輸速率會降低。
PCI Express系統(tǒng)的數(shù)據(jù)傳輸使用各種各樣的數(shù)據(jù)包,比如存儲器類型、I/O類型和配置類型的數(shù)據(jù)包。大部分設(shè)計以提高傳輸存儲器類型數(shù)據(jù)包速率為目標。本篇文章也將存儲器類型數(shù)據(jù)包的傳輸速率定義為系統(tǒng)性能。下文中,如果無特殊說明,數(shù)據(jù)都指的是存儲器類型的數(shù)據(jù)。
PCI Express Gen1、Gen2和Gen3協(xié)議存在少量的不同點,文章主要研究PCI Express Gen2協(xié)議,所有的性能測量也都是基于Gen2的系統(tǒng)。但是,文章中提到的這些觀點同樣適用于Gen1和Gen3系統(tǒng)。
2 ?PCI Express數(shù)據(jù)傳輸開銷
在PCI Express系統(tǒng)上傳輸任何數(shù)據(jù)都會有一定數(shù)量的開銷。符號編碼開銷,TLP開銷和傳輸開銷是影響PCI Express系統(tǒng)的3個關(guān)鍵因素,下面分別研究三個因素的影響。
2.1 ?符號編碼
PCI Express Gen2協(xié)議采用8 b/10 b編碼來保持傳輸線上的直流(DC)平衡,并可以進行錯誤檢測,8 b/10 b編碼不像其他影響因素那樣可以調(diào)整,這種編碼是必須的。表1是部分8 b/10 b編碼的例子。完整的8 b/10 b編碼表,請參考PCI Express協(xié)議規(guī)范。
表1 部分8 B/10 B編碼表
8 b/10 b編碼保證了數(shù)據(jù)流中包含足夠豐富的時鐘信息,使得接收方可以從串行數(shù)據(jù)流中恢復出本地接收時鐘。這種編碼保證每傳輸20 b數(shù)據(jù),1和0的數(shù)量相差不超過2,而且不會有連續(xù)的5個1或0出現(xiàn)。為了保持直流平衡,每個傳輸?shù)淖止?jié)都有一個正極性和負極性的10?bit編碼,由發(fā)送方根據(jù)電路的流動差異(CRD)選擇一個10?bit編碼發(fā)送到串行鏈路上。因此,一個字節(jié)的數(shù)據(jù)需要串行鏈路上傳送10 b的數(shù)據(jù)。顯然,編碼損失了20%的傳送能力。由此可以得到鏈路在半雙工下的理論帶寬:
[半雙工理論帶寬(B)=5 ?Gb/s×鏈路寬度10 ?b/B] ?(1)
表2給出了對于不同的鏈路寬度下PCI Express Gen2的理論帶寬。
表2 PCI Express Gen2理論帶寬
所以,盡管PCI Express Gen2每條串行鏈路數(shù)據(jù)率為5 Gb/s,但是8 B/10 B編碼會把每條鏈路單向傳輸?shù)挠行挏p少為4 Gb/s。實際的系統(tǒng)性能還會因為包的開銷,傳輸開銷等進一步降低。
2.2 ?TLP開銷
信息以包的形式在PCI Express設(shè)備間傳送,PCI Express系統(tǒng)用事務層包(TLP)來傳輸數(shù)據(jù),存儲器類型的數(shù)據(jù)傳輸主要應用兩種類型的TLP:存儲器寫TLP(MWr)和帶數(shù)據(jù)的完成TLP(CplD),CplD響應存儲器讀操作。圖1為一個典型的TLP結(jié)構(gòu),有效數(shù)據(jù)存在于圖中Payload部分。
PCI Express協(xié)議的事務層,數(shù)據(jù)鏈路層,物理層都增加了每個TLP的開銷,使有效數(shù)據(jù)的比例降低。事務層添加了包頭(Header)和可選的端到端的循環(huán)冗余校驗(ECRC)。數(shù)據(jù)鏈路層添加了包序列號(Sequence)和鏈路層循環(huán)冗余校驗(LCRC)。物理層則添加了包的開始和結(jié)束標志。PCI Express包含32?bit和64?bit兩種地址模式,32?bit地址的TLP包頭為12 B,64?bit地址的TLP包頭為16 B,需要附加的4 B來標識高32 b地址信息。根據(jù)地址模式和可選的CRC校驗,TLP的開銷在20~28 B之間變化。
大量數(shù)據(jù)的傳輸需要許多的TLP,每個TLP都會有自己的開銷。因此,采用更大的TLP可以增加有效數(shù)據(jù)的比例從而增加鏈路的效率。PCI Express系統(tǒng)中的每個設(shè)備都有自己的最大載荷(MPS),這決定了最大的TLP大小,但是增加MPS并不一定會使鏈路效率成比例增加,因為TLP的大小變大,其他的因素比如傳輸開銷會增加對系統(tǒng)性能的影響。
2.3 ?傳輸開銷
PCI Express協(xié)議的物理層和鏈路層都會引入傳輸開銷,當鏈路進入正常工作狀態(tài)(L0狀態(tài)),物理層會插入SKIP有序集,SKIP用于補償發(fā)送方時鐘與本地接收時鐘之間的時鐘偏差。SKIP包的長度為4 B,在1 180~1 538個符號時間內(nèi)必須插入一次。一個符號時間就是在串行鏈路上傳輸一個字節(jié)的時間。PCI Express協(xié)議不允許在TLP包的中間插入有序集或者其他類型的包,所以SKIP有序集和其他負責鏈路管理的包只可以在TLP包的發(fā)送間隙內(nèi)被發(fā)送,PCI Express協(xié)議的這個特性也是增大MPS并不會使鏈路效率成倍增加的原因。當TLP變大時,在兩個TLP之間的發(fā)送的鏈路管理包也會增加。
PCI Express協(xié)議定義了鏈路管理層包(DLLPs),目的是為了確保鏈路雙方傳輸數(shù)據(jù)的可靠性。DLLPs只在數(shù)據(jù)鏈路層產(chǎn)生和處理。PCI Express協(xié)議有許多用于鏈路管理的包,其中確認(ACK)DLLPs、不確認(NAK)DLLPs和流控制(FC)DLLPs對PCI Express系統(tǒng)的傳輸性能影響最大。
發(fā)送方每次發(fā)送一個TLP包,接收方就要返回發(fā)送方一個ACK或者NAK來表示接收TLP成功或失敗,發(fā)送方必須把TLP保存在它的重傳緩存中,直到接收到這個TLP對應的ACK包。當傳輸發(fā)生錯誤時,那么該TLP可以重傳,以確保數(shù)據(jù)無丟失。由于PCI Express協(xié)議的ACK/NAK機制,當大量的TLP發(fā)送時,就會產(chǎn)生相當多的ACK/NAK DLLPs,減少了鏈路的數(shù)據(jù)帶寬。
PCI Express協(xié)議允許多個等待發(fā)送的相同類型的DLLPs被縮減為一個DLLPs,如圖2所示。例如,如果接收方成功接收5個TLP,接收方對第5個TLP返回ACK包,那么發(fā)送方就認為5個TLP都被成功發(fā)送。這樣就減少了鏈路上的ACK包的數(shù)量,當然,如果接收方ACK包發(fā)送的頻率很小,那么發(fā)送方的重傳緩存就會累積很多等待ACK的TLP,發(fā)送方會因此減慢發(fā)送速度。如果發(fā)送方重傳緩存填滿,那么新的TLP就不會被發(fā)送,直到已發(fā)送的TLP接收到確認。所以,當用戶開發(fā)一個PCI Express產(chǎn)品時,他必須設(shè)計一種機制,來決定什么時候把多個DLLPs縮減為一個DLLPs。
基于信用量(Credit)的流控制(FC)協(xié)議減少了因為接收緩存溢出而造成的包丟失,流控制協(xié)議相比較傳統(tǒng)PCI的重試(Retry)模式更優(yōu)越,但它還是不可能保證鏈路效率一直高效。鏈路上的每個設(shè)備持續(xù)發(fā)送流控制DLLPs,用來更新設(shè)備接收緩存的狀態(tài),發(fā)送方只會在接受方有足夠緩存空間的情況下發(fā)包。發(fā)送設(shè)備記錄接收設(shè)備可用的信用量,每次發(fā)送一個包,就將信用量減少。在接收方處理一個包和釋放緩存空間后,它發(fā)送更新流控制包(FC Update DLLP)來通知發(fā)送方還有多少剩余空間。設(shè)備處理和發(fā)送FC Update DLLP的效率影響著整個鏈路的效率。類似于設(shè)備可以控制ACK/NAK包的頻率,一個設(shè)備怎樣處理和發(fā)送流控制包取決于設(shè)備內(nèi)部邏輯的設(shè)計,不同設(shè)備之間可能不同。降低流控制包的頻率可以減少用于鏈路管理的傳輸開銷,但是,接收緩存必須更大以保持相應的性能。
3 ?影響性能的系統(tǒng)參數(shù)
3.1 ?最大載荷長度
PCI Express協(xié)議允許最大載荷的上限至4 096 B,但協(xié)議規(guī)定MPS參數(shù)不可超過數(shù)據(jù)傳輸路徑上的每個設(shè)備的MPS。因此,MPS很大的設(shè)備必須使用較低的MPS來適應路徑上低MPS能力的設(shè)備。例如,圖3中PCI Express系統(tǒng)的MPS設(shè)置為128 B,以適應端點3。
MPS設(shè)置在系統(tǒng)枚舉和配置過程就決定了。設(shè)備的MPS存放在設(shè)備能力寄存器(Device Capability register)中,該寄存器位于設(shè)備的配置空間。軟件探測每個設(shè)備得到MPS,計算系統(tǒng)的MPS,然后把MPS寫入設(shè)備的設(shè)備控制寄存器(Device Control register)中。
MPS決定了傳輸給定數(shù)量數(shù)據(jù)所需要的TLP數(shù)量。當MPS增加時,相同數(shù)據(jù)需要的TLP數(shù)量就會減少。但是,增加MPS并不會等比例增加系統(tǒng)效率。等式II定義了包效率。
[包效率=MPSMPS+TLP開銷] (2)
表3給出了4種MPS的包效率,表中數(shù)據(jù)假設(shè)TLP使用3DW包頭,沒有ECRC校驗,總共20 B開銷。
表3 包效率
包效率和MPS成正比例關(guān)系,但不是等比例增加?,F(xiàn)在大部分的系統(tǒng)將MPS設(shè)置為128 B或256 B。對于一個確定的MPS,包效率也固定了,不會隨著傳輸數(shù)據(jù)多少而變化。
3.2 ?最大讀請求長度
在配置過程中,軟件還將最大讀請求長度寫入設(shè)備的控制寄存器。參數(shù)設(shè)定一次存儲器讀的最大長度,最大讀請求長度可以以128 B為步進,最大可設(shè)為4 096 B。最大讀取請求長度可以比MPS大。例如,一個512 B的讀請求可以發(fā)給MPS為128 B的設(shè)備。該設(shè)備返回的帶數(shù)據(jù)的完成TLP(CplD)長度限制為128 B或更少,這需要多個CplD來一個讀操作。PCI Express系統(tǒng)采用最大讀取請求長度來平衡分配總線拓撲結(jié)構(gòu)上的帶寬。限制設(shè)備在一次讀請求中可以讀取的最大數(shù)據(jù)量,可以防止其壟斷系統(tǒng)帶寬。最大讀請求長度也影響系統(tǒng)性能,因為它決定了讀請求被發(fā)送的次數(shù),而讀請求不包含任何有效載荷。當最大讀請求長度為128 B時,讀取64 KB的數(shù)據(jù)需要讀取512次TLP(64 KB / 128 B= 512)。為了提高效率,移動大數(shù)據(jù)塊時,讀請求的大小應該盡可能地接近最大讀請求長度,減少讀取次數(shù)。
3.3 ?讀完成邊界
設(shè)備接收到讀請求后,通過帶數(shù)據(jù)的完成TLP(CplD)返回要讀取的數(shù)據(jù),讀完成邊界(RCB)使一次讀請求的數(shù)據(jù)通過多個CplD來返回。根據(jù)地址邊界對齊,數(shù)據(jù)被劃分為64 B或128 B,也有一部分CplD中的數(shù)據(jù)小于RCB設(shè)置,這取決于下個地址邊界的位置。大部分根復合體設(shè)置RCB為64 B,每包返回64 B數(shù)據(jù),而不是其他MPS允許的值。圖4給出了當RCB為64 B,端點從地址0x00010028讀取256(0x100) B數(shù)據(jù)時,根復合體如何返回這些數(shù)據(jù)。
返回256 B數(shù)據(jù)需要5個CplD,如果每個TLP采用3DW包頭,包效率為64/(64+20)=76%。許多根復合體使用64 B RCB,盡管MPS為128 B或更高。所以,讀完成操作就是返回這些CplD的時間,而且根據(jù)RCB設(shè)置,這些數(shù)據(jù)被劃分成了很小的包。
4 帶寬測試
Xilinx KC705評估板包含一片Xilinx Kintex?7 XC7K325T?2FFG900C FPGA,1GB SODIMM 800 MHz / 1 600 Mb/s DDR3和PCI Express x8邊緣連接器。Kintex?7 FPGA是Xilinx采用28 nm HKMG 高性能低功耗 (HPL) 工藝的FPGA系列之一,Kintex?7 系列是一種新型 FPGA,能以不到Virtex?6 系列一半的價格實現(xiàn)與其相當性能,性價比提高了一倍,功耗降低了一半。XC7K325T?2FFG900C FPGA帶有16個GTX串行收發(fā)器,支持最大數(shù)據(jù)率10.312 5 Gb/s,可以實現(xiàn)PCI Express協(xié)議,采用Xilinx PCI Express硬核,最大支持Gen2x8配置,若采用第三方IP,最高支持Gen3x8[8?11]。
PLDA EZDMA2 IP是基于FPGA PCI Express硬核開發(fā)的支持DMA操作的IP核,最大支持8個通道DMA操作。MPS最大支持512 B,最大讀請求支持1 KB。PLDA為其IP提供了完整的Windows驅(qū)動和上位機測試程序。
測試時采用PCI Express Gen2x8,測試環(huán)境為Win7操作系統(tǒng),主板芯片組Intel Z77,CPU為Intel Core i5?3 570。
表4 列出了測試結(jié)果
5 ?結(jié) ?語
本文以高速信號采集為應用背景,分析了PCI Express系統(tǒng)數(shù)據(jù)傳輸開銷和影響PCI Express系統(tǒng)性能的因素,同時基于PLDA 的EZDMA2 IP核和Xilinx KC705評估板對上述因素進行驗證,實驗結(jié)果對PCI Express系統(tǒng)設(shè)計具有一定的參考價值。
參考文獻
[1] 趙宇玲.基于FPGA的信號采集與處理系統(tǒng)設(shè)計與實現(xiàn)[D].南京:南京理工大學,2008.
[2] 馬明錦,朱劍冰,何紅旗,等.PCI、PCI?X和PCI Express的原理及體系結(jié)構(gòu)[M].北京:清華大學出版社,2007.
[3] PLDA. EZDMA2 IP for Xilinx hard IP getting started [EB/OL]. [2012?10?01]. http://www.plda.com.
[4] PLDA. 2012EZDMA2 IP for Xilinx hard IP reference manual [EB/OL]. [2011?10?05]. http://www.plda.com.
[5] Xilinx. Kintex?7 FPGA KC705 evaluation kit getting started guide [EB/OL]. [2013?07?02]. http://www.xilinx.com.
[6] Xilinx. KC705 evaluation board for the Kintex?7 FPGA user guide [EB/OL]. [2013?07?18]. http://www.xilinx.com.
[7] PCI?SIG. PCI express base 2.0 specification [EB/OL]. [ 2006?10?09]. http://www.pcisig.com.
[8] Xilinx. PIPE mode simulation using integrated endpoint PCI express block in Gen2 x8 and Gen3 x8 configurations [EB/OL]. [2014?02?19]. http://www.xilinx.com.
[9] Xilinx. LogiCORE IP endpoint block plus v1.15 for PCI express [EB/OL]. [2011?06?22]. http://www.xilinx.com.
[10] Xilinx. 7 Series FPGAs integrated block for PCI express v3.0 [EB/OL]. [2014?02?04]. http://www.xilinx.com.
[11] Xilinx. PCI express for the 7 series FPGAs [EB/OL]. [2012?09?21]. http://www.xilinx.com.
本文以高速信號采集為應用背景,分析了PCI Express系統(tǒng)數(shù)據(jù)傳輸開銷和影響PCI Express系統(tǒng)性能的因素,同時基于PLDA 的EZDMA2 IP核和Xilinx KC705評估板對上述因素進行驗證,實驗結(jié)果對PCI Express系統(tǒng)設(shè)計具有一定的參考價值。
參考文獻
[1] 趙宇玲.基于FPGA的信號采集與處理系統(tǒng)設(shè)計與實現(xiàn)[D].南京:南京理工大學,2008.
[2] 馬明錦,朱劍冰,何紅旗,等.PCI、PCI?X和PCI Express的原理及體系結(jié)構(gòu)[M].北京:清華大學出版社,2007.
[3] PLDA. EZDMA2 IP for Xilinx hard IP getting started [EB/OL]. [2012?10?01]. http://www.plda.com.
[4] PLDA. 2012EZDMA2 IP for Xilinx hard IP reference manual [EB/OL]. [2011?10?05]. http://www.plda.com.
[5] Xilinx. Kintex?7 FPGA KC705 evaluation kit getting started guide [EB/OL]. [2013?07?02]. http://www.xilinx.com.
[6] Xilinx. KC705 evaluation board for the Kintex?7 FPGA user guide [EB/OL]. [2013?07?18]. http://www.xilinx.com.
[7] PCI?SIG. PCI express base 2.0 specification [EB/OL]. [ 2006?10?09]. http://www.pcisig.com.
[8] Xilinx. PIPE mode simulation using integrated endpoint PCI express block in Gen2 x8 and Gen3 x8 configurations [EB/OL]. [2014?02?19]. http://www.xilinx.com.
[9] Xilinx. LogiCORE IP endpoint block plus v1.15 for PCI express [EB/OL]. [2011?06?22]. http://www.xilinx.com.
[10] Xilinx. 7 Series FPGAs integrated block for PCI express v3.0 [EB/OL]. [2014?02?04]. http://www.xilinx.com.
[11] Xilinx. PCI express for the 7 series FPGAs [EB/OL]. [2012?09?21]. http://www.xilinx.com.
本文以高速信號采集為應用背景,分析了PCI Express系統(tǒng)數(shù)據(jù)傳輸開銷和影響PCI Express系統(tǒng)性能的因素,同時基于PLDA 的EZDMA2 IP核和Xilinx KC705評估板對上述因素進行驗證,實驗結(jié)果對PCI Express系統(tǒng)設(shè)計具有一定的參考價值。
參考文獻
[1] 趙宇玲.基于FPGA的信號采集與處理系統(tǒng)設(shè)計與實現(xiàn)[D].南京:南京理工大學,2008.
[2] 馬明錦,朱劍冰,何紅旗,等.PCI、PCI?X和PCI Express的原理及體系結(jié)構(gòu)[M].北京:清華大學出版社,2007.
[3] PLDA. EZDMA2 IP for Xilinx hard IP getting started [EB/OL]. [2012?10?01]. http://www.plda.com.
[4] PLDA. 2012EZDMA2 IP for Xilinx hard IP reference manual [EB/OL]. [2011?10?05]. http://www.plda.com.
[5] Xilinx. Kintex?7 FPGA KC705 evaluation kit getting started guide [EB/OL]. [2013?07?02]. http://www.xilinx.com.
[6] Xilinx. KC705 evaluation board for the Kintex?7 FPGA user guide [EB/OL]. [2013?07?18]. http://www.xilinx.com.
[7] PCI?SIG. PCI express base 2.0 specification [EB/OL]. [ 2006?10?09]. http://www.pcisig.com.
[8] Xilinx. PIPE mode simulation using integrated endpoint PCI express block in Gen2 x8 and Gen3 x8 configurations [EB/OL]. [2014?02?19]. http://www.xilinx.com.
[9] Xilinx. LogiCORE IP endpoint block plus v1.15 for PCI express [EB/OL]. [2011?06?22]. http://www.xilinx.com.
[10] Xilinx. 7 Series FPGAs integrated block for PCI express v3.0 [EB/OL]. [2014?02?04]. http://www.xilinx.com.
[11] Xilinx. PCI express for the 7 series FPGAs [EB/OL]. [2012?09?21]. http://www.xilinx.com.