專利名稱:一種測試PCIe總線帶寬的裝置和方法
技術領域:
本發明涉及計算機系統測試領域,具體涉及一種測試PCIe總線帶寬的裝置和方法。
背景技術:
夕卜部設備互聯高速(Peripheral Component Interconnect Express,簡稱 PCIe) 總線是外部設備互聯(Peripheral Component Interconnect ;簡稱PCI)總線的一種,PCIe 總線沿用了現有的PCI總線編程概念以及通訊標準,只需修改物理層而無需修改軟件就可將現有PCI系統轉換為PCIe系統。PCIe總線采用收發分開的串行物理層替代了 PCI總線的并行物理層信號,PCIe總線擁有更快的速率,可以取代幾乎全部的現有內部總線。PCIe 總線上的數據傳輸是以報文(Packet)為單位的,報文的長度最小為lbyte,不同設備支持的最大報文長度不同,PCIe規范定義的報文最大長度為4096bytes。PCIe總線的連接是建立在一個雙向的序列的點對點連接基礎之上,這稱之為“傳輸通道”,傳送及接收不同數據會使用不同的傳輸通道;兩個PCIe設備之間的連接稱為“鏈接”,這形成了 1組或更多的傳輸通道,各個設備最少支持1傳輸通道(Xl)的鏈接,也可以有2、4、8、16、32個通道的鏈接,PCIe總線接口根據設備之間鏈路寬度的不同可以分為XI、 X2、X4、X8、X16、X32這幾種類型,Xl表示PCIe總線接口上只有一個傳輸通道,X2、X4、X8、 X16、X32的含義以此類推。不同鏈路寬度的PCIe總線的單向有效帶寬為鏈路寬度Xl的帶寬為2(ib/S、鏈路寬度X2的帶寬為4(ib/S、鏈路寬度X4的帶寬為8(ib/S、鏈路寬度X8的帶寬為16(ib/S、鏈路寬度X16的帶寬為32(ib/S以及鏈路寬度X32的帶寬為64(ib/S。單向有效帶寬是指PCIe總線接口上只有一個方向(數據接收方向和數據發送方向)存在數據流的最大帶寬,雙向有效帶寬是指PCIe總線接口上有兩個方向(數據接收方向和數據發送方向)都存在數據流的最大帶寬。現有技術中PCIe總線接口測試方法主要有兩種第一種方法是使用專門的PCIe總線接口測試設備進行測試,這種方法可以對 PCIe總線接口進行科學系統的測試,但是成本比較高。第二種方法是使用直接存儲器存取(Direct Memory Access ;簡稱DMA)方法,這種方法可以簡單方便地測試PCIe接口的實際最大帶寬上。但是在測試PCIe接口的可靠性和穩定性方面存在不足。因為測試PCIe接口的可靠性和穩定性的時候,需要在PCIe接口上長時間傳輸隨機長度的報文數據,且傳榆的數據流量要達到PCIe接口的最大帶寬。DMA 方式下,每個隨機長度的PCIe報文數據都需要CPU來生成,由于CPU的運算能力有限,這種情況下PCIe接口上傳輸的數據流量無法達其最大帶寬,這樣就不能測出PCIe接口的可靠性和穩定性。
發明內容
本發明的目的在于,提供一種測試PCIe總線帶寬的裝置和方法,在增加了 DMA方式下的測試效率的同時提高了數據測試結果的準確性。為實現上述目的,本發明提供一種測試PCIe總線帶寬的裝置,所述裝置包括 PCIe設備和主機設備,其改進之處在于,所述主機設備包括內存;所述PCIe設備包括報文構造模塊、DMA寫引擎模塊、DMA讀引擎模塊、報文解析模塊和帶寬計算模塊;所述報文構造模塊、所述DMA寫引擎模塊、所述內存、所述DMA讀引擎模塊、所述報文解析模塊和所述帶寬計算模塊依次連接。本發明提供的優選技術方案中,所述主機設備中的內存為從所述DMA寫引擎模塊寫入的報文數據預留有相應的DMA寫地址,并為所述DMA讀引擎模塊預留有相應的從所述主機內存讀取報文數據的DMA讀地址。本發明提供的第二優選技術方案中,所述報文構造模塊用于在所述PCIe設備上構造報文數據;所述DMA寫引擎模塊用于將所述構造的報文數據上傳到所述主機內存;所述DMA讀引擎模塊將從所述主機內存讀取的報文數據傳輸到所述報文解析模塊;所述報文解析模塊將報文數據的長度信息提交到所述帶寬計算模塊;所述報文構造模塊將報文數據的長度信息提交到所述帶寬計算模塊;所述帶寬計算模塊根據得到的報文數據的長度信息進行報文帶寬的計算。本發明提供的第三優選技術方案中,所述DMA寫地址和所述DMA讀地址均為固定地址。本發明提供的第四優選技術方案中,所述帶寬計算模塊得到的報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。本發明提供的第五優選技術方案中,提供一種測試PCIe總線帶寬的方法,其改進之處在于,所述測試PCIe總線帶寬的方法的具體步驟如下1.在PCIe設備的所述報文構造模塊中構造報文;2.將構造好的報文通過所述 DMA寫引擎模塊上傳到所述主機內存的所述DMA寫地址;3.利用所述DMA讀引擎模塊從所述主機內存的所述DMA讀地址中讀取報文數據,并將讀取的報文數據傳輸到所述報文解析模塊;4.將所述報文解析模塊中的報文數據的長度信息提交到所述帶寬計算模塊;5.所述報文構造模塊將報文數據的長度信息提交到所述帶寬計算模塊;6.根據得到的報文數據的長度信息,所述帶寬計算模塊進行報文帶寬的計算。本發明提供的第六優選技術方案中,在所述步驟5中,所述帶寬計算模塊使用的報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。與現有技術比,本發明的有益效果是,所述測試PCIe總線帶寬的裝置和方法,測試結果的準確性高;避免了使用專門的PCIe總線接口測試設備進行帶寬的測試,降低了使用成本;而且在DMA方式下,每個隨機長度的PCIe報文數據都由PCIe設備中的報文構造模塊生成,無需CPU生成PCIe報文數據,避免了由于CPU的運算能力有限,導致PCIe接口上傳輸的數據流量無法達其最大帶寬的問題;DMA的地址采用固定地址,這樣就節省了 DMA的地址計算時間;并且在測試過程中也不需要其他設備的參與。
圖1為測試PCIe總線帶寬的裝置的結構圖。
具體實施例方式如圖1所示,測試PCIe總線帶寬的裝置包括位于所述主機設備中的內存;位于所述PCIe設備中的報文構造模塊、DMA寫引擎模塊、DMA讀引擎模塊、報文解析模塊、帶寬計算模塊;所述測試PCIe總線帶寬的裝置通過在所述PCIe設備的所述報文構造模塊上構造報文,然后通過所述DMA寫引擎模塊將構造好的報文上傳到所述主機內存的所述DMA寫地址,所述DMA讀引擎模塊通過所述主機內存的所述DMA讀地址從所述主機內存地址中讀取數據并將讀取的數據傳輸到所述報文解析模塊,所述報文解析模塊將報文數據的長度信息提交到所述帶寬計算模塊;最后所述帶寬計算模塊根據得到的報文數據的長度信息計算報文的帶寬來完成對PCIe總線帶寬的測試。其中,報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。而且在增加了 DMA方式下的測試效率的同時提高了數據測試的準確性,其中DMA的地址可以采用固定地址,這樣就可以去掉DMA的地址計算時間,使測試結果更準確。其中,所述報文解析模塊和所述DMA讀引擎是用來測量DMA讀帶寬的;搜索出報文構造模塊和所述DMA寫引擎是用來計算DMA寫帶寬的;兩者相互獨立。測試PCIe總線帶寬的方法包括如下具體步驟1.在PCIe設備的所述報文構造模塊中構造報文;2.將構造好的報文通過所述DMA寫引擎模塊上傳到所述主機內存的所述 DMA寫地址;3.利用所述DMA讀引擎模塊從所述主機內存的所述DMA讀地址中讀取報文數據,并將讀取的報文數據傳輸到所述報文解析模塊;4.將所述報文解析模塊中的報文數據的長度信息提交到所述帶寬計算模塊;5.根據得到的報文數據的長度信息,所述帶寬計算模塊進行報文帶寬的計算,其中,所述帶寬計算模塊使用的報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。本發明中測試PCIe總線帶寬的裝置和方法對PCIe總線進行的總線帶寬測試具體是指對PCIe接口上單向寫操作、單向讀操作、雙向寫操作、雙向讀操作所能達到的最大總線帶寬進行測試。需要聲明的是,本發明內容及具體實施方式
意在證明本發明所提供技術方案的實際應用,不應解釋為對本發明保護范圍的限定。本領域技術人員在閱讀本申請說明書后,在其精神和原理啟發下,可作各種修改、等同替換、或改進。但這些變更或修改均在申請待批的保護范圍內。
權利要求
1.一種測試PCIe總線帶寬的裝置,所述裝置包括PCIe設備和主機設備,其特征在于, 所述主機設備包括內存;所述PCIe設備包括報文構造模塊、DMA寫引擎模塊、DMA讀引擎模塊、報文解析模塊和帶寬計算模塊;所述報文構造模塊、所述DMA寫引擎模塊、所述內存、所述DMA讀引擎模塊、所述報文解析模塊和所述帶寬計算模塊依次連接。
2.根據權利要求1所述的裝置,其特征在于,所述主機設備中的內存為從所述DMA寫引擎模塊寫入的報文數據預留有相應的DMA寫地址,并為所述DMA讀引擎模塊預留有相應的從所述主機內存讀取報文數據的DMA讀地址。
3.根據權利要求1所述的裝置,其特征在于,所述報文構造模塊用于在所述PCIe設備上構造報文數據;所述DMA寫引擎模塊用于將所述構造的報文數據上傳到所述主機內存;所述DMA讀引擎模塊將從所述主機內存讀取的報文數據傳輸到所述報文解析模塊;所述報文解析模塊將報文數據的長度信息提交到所述帶寬計算模塊;所述報文構造模塊將報文數據的長度信息提交到所述帶寬計算模塊;所述帶寬計算模塊根據得到的報文數據的長度信息進行報文帶寬的計算。
4.根據權利要求2所述的裝置,其特征在于,所述DMA寫地址和所述DMA讀地址均為固定地址。
5.根據權利要求3所述的裝置,其特征在于,所述帶寬計算模塊得到的報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。
6.一種測試PCIe總線帶寬的方法,其特征在于,所述測試PCIe總線帶寬的方法的具體步驟如下1.在PCIe設備的所述報文構造模塊中構造報文;2.將構造好的報文通過所述DMA寫引擎模塊上傳到所述主機內存的所述DMA寫地址;3.利用所述DMA讀引擎模塊從所述主機內存的所述DMA讀地址中讀取報文數據,并將讀取的報文數據傳輸到所述報文解析模塊; 4.將所述報文解析模塊中的報文數據的長度信息提交到所述帶寬計算模塊;5.所述報文構造模塊將報文數據的長度信息提交到所述帶寬計算模塊;6.根據得到的報文數據的長度信息,所述帶寬計算模塊進行報文帶寬的計算。
7.根據權利要求6所述的方法,其特征在于,在所述步驟5中,所述帶寬計算模塊使用的報文數據的長度信息包括所述報文數據的總字節數和傳輸時間。
全文摘要
本發明提供了一種測試PCIe總線帶寬的裝置,包括位于主機設備中的內存;位于PCIe設備中的報文構造模塊、DMA寫引擎模塊、DMA讀引擎模塊、報文解析模塊、帶寬計算模塊;本發明還提供了一種測試PCIe總線帶寬的方法,通過在PCIe設備的報文構造模塊上構造報文,然后通過DMA寫引擎模塊將構造的報文上傳到主機內存地址,以及通過DMA讀引擎模塊從主機內存地址讀取存儲的報文數據,最后在帶寬計算模塊中基于報文數據的總字節數和傳輸時間計算總線帶寬;本發明提供的測試PCIe總線帶寬的裝置和方法,在增加了DMA方式下的測試效率的同時提高了數據測試結果的準確性。
文檔編號H04L12/26GK102420719SQ20111038314
公開日2012年4月18日 申請日期2011年11月28日 優先權日2011年11月28日
發明者劉燦, 張磊, 張英文, 李靜, 白宗元, 竇曉光, 紀奎 申請人:曙光信息產業股份有限公司