专利名称:一种测试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日
发明者刘灿, 张磊, 张英文, 李静, 白宗元, 窦晓光, 纪奎 申请人:曙光信息产业股份有限公司