一种高速外围组件互联报文性能检测方法和装置与流程

文档序号:17048836发布日期:2019-03-05 19:49阅读:214来源:国知局
一种高速外围组件互联报文性能检测方法和装置与流程

本发明涉及数字通信技术,尤其涉及一种高速外围组件互联(pcie,peripheralcomponentinterconnectexpress)报文性能检测方法和装置。



背景技术:

pcie作为一种高速的串行通信总线,具有很高的数据吞吐率;而且,由于pcie设备具有较小的物理尺寸,加上支持热拔插等功能,在计算机、汽车电子、医疗器材和航空航天等方向有大量应用案例;为了满足不断发展的市场需求,pcie协议经过十几年的发展,其性能在不断的演进;pcie由起初的1.x单数据通路(lane)传输速率2.5gbps,发展到现在pcie4.0单lane传输速率16gbps,其传输速率在成倍增加。

由于pcie本身广阔的应用前景,很多电子厂商都致力于pcie知识产权模块(ip)的研发,像intel、synopsys、plad和cadence等都有自己的pcieip方案,这些方案应用于各类的片上系统(soc,systemonchip)架构中;

在soc系统架构中,pcie作为一个重要的节点,负责将各个主设备(master)传输的数据进行板间或者片间进行互传,pcie总线带宽利用率直接影响到整个芯片的性能指标;

soc系统架构中,涉及到pcie的事务层数报文(tlp,transactionlayerpacket)的传输;对pcietlp性能进行检测,进而评估pcie总线带宽的利用率,可以最终实现量化pcie的性能指标,指导soc设计;但是,目前尚无对pcietlp进行监控和检测的方案。

因此,如何实现对pcietlp数据报文性能的检测,进而评估pcie总线的利用率,是亟待解决的问题。



技术实现要素:

有鉴于此,本发明实施例期望提供一种pcie报文性能检测方法和装置,能实现对pcietlp数据报文性能的检测,进而评估pcie总线的利用率。

为达到上述目的,本发明的技术方案是这样实现的:

本发明实施例提供一种高速外围组件互联pcie报文性能检测方法,所述方法包括:

根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数。

上述方案中,所述根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文传输性能参数,包括:

将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点之差,确定为单笔延时;

根据第一预设时间段中所述各第一类型数据报文对应的单笔延时,确定在所述第一预设时间段内的pcie报文的延时性能参数;

所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时。

上述方案中,所述根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文传输性能参数,包括:

将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数确定为所述指定时间点pcie报文的未完成量outstanding。

上述方案中,在确定所述指定时间点pcie报文的outstanding之后,所述方法还包括:

根据预设第二预设时间段中各时间点对应的所述pcie报文的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;

所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding。

上述方案中,所述方法还包括:

获取第三预设时间段内有效所述各第一类型数据报文、和/或有效各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽。

上述方案中,所述第二类型数据报文为pcie事务层报告事务tlppost数据报文。

上述方案中,在获取对应所述各第一类型数据报文的各完成报文的接收时间点时,所述方法还包括:

当接收到的完成报文由一个以上的子完成报文组成,且各子完成报文的长度之和,等于所述完成对应的第一类型数据报文中长度指示字段所指示长度时,将最后一个子完成报文的接收时间确定为所述完成报文的接收时间。

上述方案中,所述数据标识包括:第一类型数据报文头中的:标签tag、和/或请求标识requesterid、和/或完成标识completerid、和/或总线号busnumber、和/或设备号devicenumber、和/或功能号functionnumber。

上述方案中,所述第一类型数据报文包括:pcietlp非报告事务non-post数据报文。

本发明实施例还提供一种pcie报文性能检测装置,所述装置包括:获取模块和确定模块;其中,

所述获取模块,用于根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

所述确定模块,用于根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数。

上述方案中,所述确定模块,具体用于:

将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点之差,确定为单笔延时;

根据第一预设时间段中所述各第一类型数据报文对应的单笔延时,确定在所述第一预设时间段内的pcie报文的延时性能参数;

所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时。

上述方案中,所述确定模块,具体用于:

将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数确定为所述指定时间点pcie报文的量outstanding。

上述方案中,所述确定模块,具体用于:

根据预设第二预设时间段中各时间点对应的所述pcie报文的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;

所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding。

上述方案中,所述确定模块还用于:

获取第三预设时间段内有效所述各第一类型数据报文、和/或有效各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽。

上述方案中,所述第二类型数据报文为pcietlppost数据报文。

上述方案中,所述获取模块还用于:

当接收到的完成报文由一个以上的子完成报文组成,且各子完成报文的长度之和,等于所述完成对应的第一类型数据报文中长度指示字段所指示长度时,将最后一个子完成报文的接收时间确定为所述完成报文的接收时间。

上述方案中,其特征在于,所述数据标识包括:第一类型数据报文头中的:标签tag、和/或请求标识requesterid、和/或完成标识completerid、和/或总线号busnumber、和/或设备号devicenumber、和/或功能号functionnumber。

上述方案中,所述第一类型数据报文包括:pcietlpnon-post数据报文。

本发明实施例还提供一种存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现上述信息处理方法的步骤。

本发明实施例还提供一种信息处理装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行上述信息处理方法的步骤。

本发明实施例所提供的pcie报文性能检测方法和装置,根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数。如此,根据第一类型数据报文即pcietlp非报告事务(non-post)数据报文的处理,实现对了对pcietlp数据报文性能的检测,进而根据pcie报文性能参数可以评估pcie总线的利用率

附图说明

图1为本发明实施例pcie报文性能检测方法的流程示意图;

图2为本发明实施例pcietlpnon-post数据报文的包头信息示意图;

图3为本发明实施例完成报文的包头信息示意图;

图4为本发明实施例pcie报文的outstanding计数示意图;

图5为本发明实施例具体实现方式结构框图;

图6为本发明实施例pcie报文性能检测装置的组成结构示意图。

具体实施方式

本发明实施例中,根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数。

下面结合实施例对本发明再作进一步详细的说明。

本发明实施例提供的pcie报文性能检测方法,如图1所示,所述方法包括:

步骤101:根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

通常,pcie的tlp包括两种类型的事务(transaction)数据报文:non-post数据报文和报告事务(post)数据报文;如存储器读和配置读写数据报文等采用non-post数据报文,存储器写等采用post数据报文;

这里,所述第一类型数据报文为non-post数据报文,所述数据标识包括:第一类型数据报文包头中的:标签(tag)、和/或请求标识(requesterid)、和/或完成标识(completerid)、和/或总线号(busnumber)、和/或设备号(devicenumber)、和/或功能号(functionnumber)等;

具体的,pcie设备发送的tlp数据报文包头结构中,用busnumber、devicenumber、functionnumber以及tag来表征一个transaction数据报文的标识(id)号,tlp总线中用这个transactionid来表征不同的transaction数据报文;

在同一个pcie设备发送的tlp包中,其busnumber、devicenumber、functionnumber是相同的,pcie设备只需要管理tag资源,合理分配保证传输正常。对于不同pcie设备发送的tlp数据报文,可以通过请求标识(requesterid)、和/或完成标识(completerid)结合tag来表征不同的transaction数据报文;

因此,针对不同的tlp数据报文,可以通过结合标签tag、和/或requesterid、和/或completerid、和/或busnumber、和/或号devicenumber、和/或functionnumber等来区分;如在在一个端对端场景中,如果只需要检测一个pcie设备的数据报文情况,可以仅检测tag来识别该设备发送的数据报文;

对于non-post的访问,pcie设备需要接收到对端返回的不带数据完成报文(cpl,completionwithoutdata)/带数据完成报文(cpld,completionwithdata),而且cpl/cpld中对应的transactionid需要与源端一致,则表示一个transaction完成。如果一个源端发送一个non-post的命令后,如果没有收到目标设备的cpl/cpld,那么tlp发送端需要保留这个报文的transactionid,而且这个transactionid不能被重复占用,直到目标设备返回。对于non-post的传输,每个tlp数据报文的transactionid是唯一的,即在同一时刻,不能有相同transactionid的两个或以上的tlp数据报文在传输。

如图2和图3所示,图2为pcietlpnon-post数据报文的包头信息,其中tag由pcie控制器来管理,位宽为8bit;图3为对应的pcie完成报文的包结构,其中tag应该和对应的pcietlpnon-post数据报文tag一致;

这里,可以在发送各第一类型数据报文时,记录发送时间点;并根据数据标识区分各第一类型数据报文;在接收到各第一类型数据报文的完成报文时,记录接收时间等,并根据数据标识区分各完成报文;如此,根据数据标识、发送时间点和接收时间点可以确定各第一类型数据报文各自的发送时间点和对应的各完成报文接收时间点。这里,可以在发送各第一类型数据报文或接受到完成报文时采用中断等方式触发计时,获取系统时钟并记录在缓存等存储器中,后续使用时读取。

进一步的,在获取对应所述各第一类型数据报文的各完成报文的接收时间点过程中,一些pcie设备在发送non-post数据报文之后,目标设备在发送cpl/cpld时会拆分成多笔子完成报文发送,而且每个子完成报文的transactionid是一样的,在监控时,除了要监控tag以外,还需要辅助所述发送的non-post数据报文的中包头信息的length字段来定位最后一个子完成报文,判断一个transaction结束。即length字段指示的是整个完成报文的长度,接收子完成报文时累加各子完成报文的长度,当累加值与length字段指示长度相同时,确定接收到最后一个子完成报文;可以将最后一个子完成报文的接收时间点确定为完成报文的接收时间点。

步骤102:根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数;

这里,这里,所述pcie报文的传输性能参数可以pcie报文在pcie总线中传输时的性能参数,如延时性能参数、未完成量(outstanding)性能参数等;可以根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点设置不同的处理规则获取所需的pcie报文的传输性能参数;

所述处理规则包括:将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点进行减法运算,并对第一预设时间段中所述各第一类型数据报文对应的减法运算的差值进行算术平均等运算。这里,可以将所述减法运算的差确定为对应第一类型数据报文的单笔延时;可以将所述算术平均等的运算结果,确定为在所述第一预设时间段内的pcie报文的延时性能参数,如:pcie报文的延时性能参数和pcie报文的outstanding性能参数等;

具体的,所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;可以首先确定各第一类型数据报文的单笔延时,再用算术平均或算术比较等计算方法,确定第一时间段中各第一类型数据报文的最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;其中,所述第二预设时间段可以根据需要进行性能检测的时间点设置。

进一步的,所述处理规则可以包括:将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数。这里,可以将所述总数确定为所述指定时间点pcie报文的outstanding;

具体的,所述pcie报文的outstanding是在同一时间点,pcie总线已发送non-post数据报文,但未收到完成报文的总数;所述如图4所示,图中每个transaction都有non-post数据报文发送时间点和完成报文接收时间点,图中时间点a,有2个non-post数据报文没有接收到对应的完成报文,因此,时间点a的pcie报文的outstanding为2;同理可以时间点b的pcie报文的outstanding为n。

实际应用中,可以设置一个计数器,在发送non-post数据报文时,将outstanding计数加1,当检测到完成报文时,则outstanding减1。

更进一步的,在确定所述指定时间点pcie报文的outstanding之后,可以根据预设第二预设时间段中各时间点对应的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding;

这里,所述第二预设时间段可以根据需要进行性能检测的时间点设置,可以在所述第二预设时间段内,检测多个时间的pcie报文的outstanding,将各时间点的pcie报文的outstanding汇总后进行算数平均等计算,获取平均outstanding、和/或最大outstanding;

由于pcietlppost数据报文的访问不需要目标设备返回cpl/cpld,因此,transactionid字段并没有实际意义,并不需要pcie设备去管理pcietlppost数据报文的tag资源,因此,不存在单笔延时和outstanding等性能指标。

再进一步的,获取第三预设时间段内所述各第一类型数据报文、和/或各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽;

这里,所述第二类型数据报文可以是pcietlppost数据报文;所述第三预设时间段可以根据需要进行性能检测的时间点设置;可以指定检查某一时间段的pcie数据报文传输带宽;可以统计在所述第二预设时间段在pcie总线上传输的第一类型数据报文、和/或各第二类型数据报文数量、和/或长度;通过将各数据报文的长度累加等方式确定所述第三预设时间段内的pcie数据报文传输带宽。

实际应用中,可以通过数据报文有效位来确定tlp数据报文的有效性,统计有效的tlp数据报文。可以根据各tlp数据报文的有效位来确定各tlp数据报文的包间隔,以此可以确定一段时间内的平均包间隔等。

这里,所述第一预设时间段、所述第二预设时间段和所述第三预设时间段的时间长短可以是相同时间段,也可以是不同时间段;如可以在同一时间段内检测pcie报文的:延时性能参数、outstanding性能参数和传输带宽。

如此,通过监控non-posttlp包的数据标识,完成了对pcie设备的tlp总线的带宽和outstanding以及单笔延时等pcie报文的传输性能参数;上述性能参数通常可以用来表征pcie总线的利用率。

下面结合具体示例对本发明产生的积极效果作进一步详细的描述;

本示例中,可以采用vhdl和veriloghdl等硬件描述语言建立实现本实施例所提供的pcie报文性能检测方法的电路,可以采用如图4所示的系统框图来实现;如图5所示,所述系统可以包括:包检测电路,计数电路,单笔延时计算电路,outstanding计算电路,包统计电路和流量计算电路等;

所述包检测电路检测到有效的non-post数据报文时,根据tlp包头的结构检测tag信息,然后根据tag信息分配到不同的计数电路中;这里,判断所述tlp数据报文的有效性,可以通过有效位来判断;

计数电路可以根据tag号设置多个,如果pcie控制器分配了16个tag,则计数电路可以设置16个,例如tag为2,则进入tag为2的计数电路;如果此时有多个,那么不同tag号的包,则进入不同的计数电路;

进入计数电路后,首先outstanding计数会加1,同时单笔延时开始计计数,当检测到包结束时,则outstanding减为0,对应的包延时停止计数;

在进行non-post数据报文outstanding计数和单笔延时计数的同时,包统计电路会进行包统计;而且当包检测电路到post数据报文的访问时,可以直接进入包统计电路,不进行outstanding计数和单笔延时计数;

计数电路统计完成之后,会将单笔延时信息送到单笔延时计算电路,outstanding检测信息会送到outstanding计算电路,包统计信息会送到流量计算电路;

单笔延时计算电路会根据输入的当前单笔延时信息统计最小的单笔延时和最大单笔延时,而且计算当前的平均单笔延时。同时outstanding计算电路会统计各计数电路的outstanding值,各计数电路的outstanding值之和表示当前有效的outstanding值,根据当前outstanding值,计算平均outstanding和最大outstanding;同时,包统计电路会统计所有包的个数;

当关闭统计时,单笔延时计数电路会输出当前的最小单笔延时、最大单笔延时和平均单笔延时。outstanding计算电路会输出当前的平均outstanding和最大outstanding。包统计电路会统计这段测试时间内的所有传输的包个数。流量计算电路可以根据这段时间的包个数结合包长度来推算带宽。

本发明实施例提供的pcie报文性能检测装置,如图6所示,所述装置包括:获取模块61和确定模块62;其中,

所述获取模块61,用于根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

通常,pcie的tlp包括两种类型的transaction数据报文:non-post数据报文和post数据报文;如存储器读和配置读写数据报文等采用non-post数据报文,存储器写等采用post数据报文;

这里,所述第一类型数据报文为non-post数据报文,所述数据标识包括:第一类型数据报文包头中的:tag、和/或requesterid、和/或completerid、和/或busnumber、和/或devicenumber、和/或functionnumber等;

具体的,pcie设备发送的tlp数据报文包头结构中,用busnumber、devicenumber、functionnumber以及tag来表征一个transaction数据报文的id号,tlp总线中用这个transactionid来表征不同的transaction数据报文;

在同一个pcie设备发送的tlp包中,其busnumber、devicenumber、functionnumber是相同的,pcie设备只需要管理tag资源,合理分配保证传输正常。对于不同pcie设备发送的tlp数据报文,可以通过requesterid、和/或completerid结合tag来表征不同的transaction数据报文;

因此,针对不同的tlp数据报文,可以通过结合标签tag、和/或requesterid、和/或completerid、和/或busnumber、和/或号devicenumber、和/或functionnumber等来区分;如在在一个端对端场景中,如果只需要检测一个pcie设备的数据报文情况,可以仅检测tag来识别该设备发送的数据报文;

对于non-post的访问,pcie设备需要接收到对端返回的cpl/cpld,而且cpl/cpld中对应的transactionid需要与源端一致,则表示一个transaction完成。如果一个源端发送一个non-post的命令后,如果没有收到目标设备的cpl/cpld,那么tlp发送端需要保留这个报文的transactionid,而且这个transactionid不能被重复占用,直到目标设备返回。对于non-post的传输,每个tlp数据报文的transactionid是唯一的,即在同一时刻,不能有相同transactionid的两个或以上的tlp数据报文在传输。

如图2和图3所示,图2为pcietlpnon-post数据报文的包头信息,其中tag由pcie控制器来管理,位宽为8bit;图3为对应的pcie完成报文的包结构,其中tag应该和对应的pcietlpnon-post数据报文tag一致;

这里,可以在发送各第一类型数据报文时,记录发送时间点;并根据数据标识区分各第一类型数据报文;在接收到各第一类型数据报文的完成报文时,记录接收时间等,并根据数据标识区分各完成报文;如此,根据数据标识、发送时间点和接收时间点可以确定各第一类型数据报文各自的发送时间点和对应的各完成报文接收时间点。这里,可以在发送各第一类型数据报文或接受到完成报文时采用中断等方式触发计时,获取系统时钟并记录在缓存等存储器中,后续使用时读取。

进一步的,在获取对应所述各第一类型数据报文的各完成报文的接收时间点过程中,一些pcie设备在发送non-post数据报文之后,目标设备在发送cpl/cpld时会拆分成多笔子完成报文发送,而且每个子完成报文的transactionid是一样的,在监控时,除了要监控tag以外,还需要辅助所述发送的non-post数据报文的中包头信息的length字段来定位最后一个子完成报文,判断一个transaction结束。即length字段指示的是整个完成报文的长度,接收子完成报文时累加各子完成报文的长度,当累加值与length字段指示长度相同时,确定接收到最后一个子完成报文;可以将最后一个子完成报文的接收时间点确定为完成报文的接收时间点。

所述确定模块62,用于根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数。

这里,所述pcie报文的传输性能参数可以pcie报文在pcie总线中传输时的性能参数,如延时性能参数、未完成量(outstanding)性能参数等;所述处理规则可以根据需要检测的报文性能参数进行设置,可以根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点设置不同的处理规则获取所需的pcie报文的传输性能参数;

所述处理规则包括:将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点进行减法运算,并对第一预设时间段中所述各第一类型数据报文对应的减法运算的差值进行算术平均等运算。这里,可以将所述减法运算的差确定为对应第一类型数据报文的单笔延时;可以将所述算术平均等的运算结果,确定为在所述第一预设时间段内的pcie报文的延时性能参数,如:pcie报文的延时性能参数和pcie报文的outstanding性能参数等;

具体的,所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;可以首先确定各第一类型数据报文的单笔延时,再用算术平均或算术比较等计算方法,确定第一时间段中各第一类型数据报文的最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;其中,所述第二预设时间段可以根据需要进行性能检测的时间点设置。

进一步的,所述处理规则可以包括:将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数。这里,可以将所述总数确定为所述指定时间点pcie报文的outstanding;

具体的,所述pcie报文的outstanding是在同一时间点,pcie总线已发送non-post数据报文,但未收到完成报文的总数;所述如图4所示,图中每个transaction都有non-post数据报文发送时间点和完成报文接收时间点,图中时间点a,有2个non-post数据报文没有接收到对应的完成报文,因此,时间点a的pcie报文的outstanding为2;同理可以时间点b的pcie报文的outstanding为n。

实际应用中,可以设置一个计数器,在发送non-post数据报文时,将outstanding计数加1,当检测到完成报文时,则outstanding减1。

更进一步的,在确定所述指定时间点pcie报文的outstanding之后,可以根据预设第二预设时间段中各时间点对应的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding;

这里,所述第二预设时间段可以根据需要进行性能检测的时间点设置,可以在所述第二预设时间段内,检测多个时间的pcie报文的outstanding,将各时间点的pcie报文的outstanding汇总后进行算数平均等计算,获取平均outstanding、和/或最大outstanding;

由于pcietlppost数据报文的访问不需要目标设备返回cpl/cpld,因此,transactionid字段并没有实际意义,并不需要pcie设备去管理pcietlppost数据报文的tag资源,因此,不存在单笔延时和outstanding等性能指标。

再进一步的,获取第三预设时间段内所述各第一类型数据报文、和/或各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽;

这里,所述第二类型数据报文可以是pcietlppost数据报文;所述第三预设时间段可以根据需要进行性能检测的时间点设置;可以指定检查某一时间段的pcie数据报文传输带宽;可以统计在所述第二预设时间段在pcie总线上传输的第一类型数据报文、和/或各第二类型数据报文数量、和/或长度;通过将各数据报文的长度累加等方式确定所述第三预设时间段内的pcie数据报文传输带宽。

实际应用中,可以通过数据报文有效位来确定tlp数据报文的有效性,统计有效的tlp数据报文。可以根据各tlp数据报文的有效位来确定各tlp数据报文的包间隔,以此可以确定一段时间内的平均包间隔等。

这里,所述第一预设时间段、所述第二预设时间段和所述第三预设时间段的时间长短可以是相同时间段,也可以是不同时间段;如可以在同一时间段内检测pcie报文的:延时性能参数、outstanding性能参数和传输带宽。

如此,通过监控non-posttlp包的数据标识,完成了对pcie设备的tlp总线的带宽和outstanding以及单笔延时等pcie报文的传输性能参数;上述性能参数通常可以用来表征pcie总线的利用率。

在实际应用中,所述获取模块61和确定模块62均可以由soc系统中的中央处理器(cpu)、微处理器(mcu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

本发明实施例提供的存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现pcie报文性能检测方法,如图2所示,所述方法包括:

步骤101:根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

通常,pcie的tlp包括两种类型的transaction数据报文:non-post数据报文和post数据报文;如存储器读和配置读写数据报文等采用non-post数据报文,存储器写等采用post数据报文;

这里,所述第一类型数据报文为non-post数据报文,所述数据标识包括:第一类型数据报文包头中的:tag、和/或requesterid、和/或completerid、和/或busnumber、和/或devicenumber、和/或functionnumber等;

具体的,pcie设备发送的tlp数据报文包头结构中,用busnumber、devicenumber、functionnumber以及tag来表征一个transaction数据报文的id号,tlp总线中用这个transactionid来表征不同的transaction数据报文;

在同一个pcie设备发送的tlp包中,其busnumber、devicenumber、functionnumber是相同的,pcie设备只需要管理tag资源,合理分配保证传输正常。对于不同pcie设备发送的tlp数据报文,可以通过requesterid、和/或completerid结合tag来表征不同的transaction数据报文;

因此,针对不同的tlp数据报文,可以通过结合标签tag、和/或requesterid、和/或completerid、和/或busnumber、和/或号devicenumber、和/或functionnumber等来区分;如在在一个端对端场景中,如果只需要检测一个pcie设备的数据报文情况,可以仅检测tag来识别该设备发送的数据报文;

对于non-post的访问,pcie设备需要接收到对端返回的cpl/cpld,而且cpl/cpld中对应的transactionid需要与源端一致,则表示一个transaction完成。如果一个源端发送一个non-post的命令后,如果没有收到目标设备的cpl/cpld,那么tlp发送端需要保留这个报文的transactionid,而且这个transactionid不能被重复占用,直到目标设备返回。对于non-post的传输,每个tlp数据报文的transactionid是唯一的,即在同一时刻,不能有相同transactionid的两个或以上的tlp数据报文在传输。

如图2和图3所示,图2为pcietlpnon-post数据报文的包头信息,其中tag由pcie控制器来管理,位宽为8bit;图3为对应的pcie完成报文的包结构,其中tag应该和对应的pcietlpnon-post数据报文tag一致;

这里,可以在发送各第一类型数据报文时,记录发送时间点;并根据数据标识区分各第一类型数据报文;在接收到各第一类型数据报文的完成报文时,记录接收时间等,并根据数据标识区分各完成报文;如此,根据数据标识、发送时间点和接收时间点可以确定各第一类型数据报文各自的发送时间点和对应的各完成报文接收时间点。这里,可以在发送各第一类型数据报文或接受到完成报文时采用中断等方式触发计时,获取系统时钟并记录在缓存等存储器中,后续使用时读取。

进一步的,在获取对应所述各第一类型数据报文的各完成报文的接收时间点过程中,一些pcie设备在发送non-post数据报文之后,目标设备在发送cpl/cpld时会拆分成多笔子完成报文发送,而且每个子完成报文的transactionid是一样的,在监控时,除了要监控tag以外,还需要辅助所述发送的non-post数据报文的中包头信息的length字段来定位最后一个子完成报文,判断一个transaction结束。即length字段指示的是整个完成报文的长度,接收子完成报文时累加各子完成报文的长度,当累加值与length字段指示长度相同时,确定接收到最后一个子完成报文;可以将最后一个子完成报文的接收时间点确定为完成报文的接收时间点。

步骤102:根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数;

这里,所述pcie报文的传输性能参数可以pcie报文在pcie总线中传输时的性能参数,如延时性能参数、未完成量(outstanding)性能参数等;所述处理规则可以根据需要检测的报文性能参数进行设置,可以根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点设置不同的处理规则获取所需的pcie报文的传输性能参数;

所述处理规则包括:将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点进行减法运算,并对第一预设时间段中所述各第一类型数据报文对应的减法运算的差值进行算术平均等运算。这里,可以将所述减法运算的差确定为对应第一类型数据报文的单笔延时;可以将所述算术平均等的运算结果,确定为在所述第一预设时间段内的pcie报文的延时性能参数,如:pcie报文的延时性能参数和pcie报文的outstanding性能参数等;

具体的,所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;可以首先确定各第一类型数据报文的单笔延时,再用算术平均或算术比较等计算方法,确定第一时间段中各第一类型数据报文的最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;其中,所述第二预设时间段可以根据需要进行性能检测的时间点设置。

进一步的,所述处理规则可以包括:将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数。这里,可以将所述总数确定为所述指定时间点pcie报文的outstanding;

具体的,所述pcie报文的outstanding是在同一时间点,pcie总线已发送non-post数据报文,但未收到完成报文的总数;所述如图4所示,图中每个transaction都有non-post数据报文发送时间点和完成报文接收时间点,图中时间点a,有2个non-post数据报文没有接收到对应的完成报文,因此,时间点a的pcie报文的outstanding为2;同理可以时间点b的pcie报文的outstanding为n。

实际应用中,可以设置一个计数器,在发送non-post数据报文时,将outstanding计数加1,当检测到完成报文时,则outstanding减1。

更进一步的,可以根据预设第二预设时间段中各时间点对应的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding;

这里,所述第二预设时间段可以根据需要进行性能检测的时间点设置,可以在所述第二预设时间段内,检测多个时间的pcie报文的outstanding,将各时间点的pcie报文的outstanding汇总后进行算数平均等计算,获取平均outstanding、和/或最大outstanding;

由于pcietlppost数据报文的访问不需要目标设备返回cpl/cpld,因此,transactionid字段并没有实际意义,并不需要pcie设备去管理pcietlppost数据报文的tag资源,因此,不存在单笔延时和outstanding等性能指标。

再进一步的,在确定所述指定时间点pcie报文的outstanding之后,获取第三预设时间段内所述各第一类型数据报文、和/或各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽;

这里,所述第二类型数据报文可以是pcietlppost数据报文;所述第三预设时间段可以根据需要进行性能检测的时间点设置;可以指定检查某一时间段的pcie数据报文传输带宽;可以统计在所述第二预设时间段在pcie总线上传输的第一类型数据报文、和/或各第二类型数据报文数量、和/或长度;通过将各数据报文的长度累加等方式确定所述第三预设时间段内的pcie数据报文传输带宽。

实际应用中,可以通过数据报文有效位来确定tlp数据报文的有效性,统计有效的tlp数据报文。可以根据各tlp数据报文的有效位来确定各tlp数据报文的包间隔,以此可以确定一段时间内的平均包间隔等。

这里,所述第一预设时间段、所述第二预设时间段和所述第三预设时间段的时间长短可以是相同时间段,也可以是不同时间段;如可以在同一时间段内检测pcie报文的:延时性能参数、outstanding性能参数和传输带宽。

如此,通过监控non-posttlp包的数据标识,完成了对pcie设备的tlp总线的带宽和outstanding以及单笔延时等pcie报文的传输性能参数;上述性能参数通常可以用来表征pcie总线的利用率。

本发明实施例提供的信息处理装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行实现pcie报文性能检测方法,如图2所示,所述方法包括:

步骤101:根据各第一类型数据报文分别对应的数据标识,获取pcie总线中所述各第一类型数据报文的发送时间点,并获取对应所述各第一类型数据报文的各完成报文的接收时间点,所述各完成报文由接收端在收到所述各第一类型数据报文后返回;

通常,pcie的tlp包括两种类型的事务(transaction)数据报文:non-post数据报文和报告事务(post)数据报文;如存储器读和配置读写数据报文等采用non-post数据报文,存储器写等采用post数据报文;

这里,所述第一类型数据报文为non-post数据报文,所述数据标识包括:第一类型数据报文包头中的:标签(tag)、和/或请求标识(requesterid)、和/或完成标识(completerid)、和/或总线号(busnumber)、和/或设备号(devicenumber)、和/或功能号(functionnumber)等;

具体的,pcie设备发送的tlp数据报文包头结构中,用busnumber、devicenumber、functionnumber以及tag来表征一个transaction数据报文的标识(id)号,tlp总线中用这个transactionid来表征不同的transaction数据报文;

在同一个pcie设备发送的tlp包中,其busnumber、devicenumber、functionnumber是相同的,pcie设备只需要管理tag资源,合理分配保证传输正常。对于不同pcie设备发送的tlp数据报文,可以通过请求标识(requesterid)、和/或完成标识(completerid)结合tag来表征不同的transaction数据报文;

因此,针对不同的tlp数据报文,可以通过结合标签tag、和/或requesterid、和/或completerid、和/或busnumber、和/或号devicenumber、和/或functionnumber等来区分;如在在一个端对端场景中,如果只需要检测一个pcie设备的数据报文情况,可以仅检测tag来识别该设备发送的数据报文;

对于non-post的访问,pcie设备需要接收到对端返回的不带数据完成报文(cpl,completionwithoutdata)/带数据完成报文(cpld,completionwithdata),而且cpl/cpld中对应的transactionid需要与源端一致,则表示一个transaction完成。如果一个源端发送一个non-post的命令后,如果没有收到目标设备的cpl/cpld,那么tlp发送端需要保留这个报文的transactionid,而且这个transactionid不能被重复占用,直到目标设备返回。对于non-post的传输,每个tlp数据报文的transactionid是唯一的,即在同一时刻,不能有相同transactionid的两个或以上的tlp数据报文在传输。

如图2和图3所示,图2为pcietlpnon-post数据报文的包头信息,其中tag由pcie控制器来管理,位宽为8bit;图3为对应的pcie完成报文的包结构,其中tag应该和对应的pcietlpnon-post数据报文tag一致;

这里,可以在发送各第一类型数据报文时,记录发送时间点;并根据数据标识区分各第一类型数据报文;在接收到各第一类型数据报文的完成报文时,记录接收时间等,并根据数据标识区分各完成报文;如此,根据数据标识、发送时间点和接收时间点可以确定各第一类型数据报文各自的发送时间点和对应的各完成报文接收时间点。这里,可以在发送各第一类型数据报文或接受到完成报文时采用中断等方式触发计时,获取系统时钟并记录在缓存等存储器中,后续使用时读取。

进一步的,在获取对应所述各第一类型数据报文的各完成报文的接收时间点过程中,一些pcie设备在发送non-post数据报文之后,目标设备在发送cpl/cpld时会拆分成多笔子完成报文发送,而且每个子完成报文的transactionid是一样的,在监控时,除了要监控tag以外,还需要辅助所述发送的non-post数据报文的中包头信息的length字段来定位最后一个子完成报文,判断一个transaction结束。即length字段指示的是整个完成报文的长度,接收子完成报文时累加各子完成报文的长度,当累加值与length字段指示长度相同时,确定接收到最后一个子完成报文;可以将最后一个子完成报文的接收时间点确定为完成报文的接收时间点。

步骤102:根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点,确定所述pcie报文的传输性能参数;

这里,所述pcie报文的传输性能参数可以pcie报文在pcie总线中传输时的性能参数,如延时性能参数、未完成量(outstanding)性能参数等;所述处理规则可以根据需要检测的报文性能参数进行设置,可以根据所述各第一类型数据报文的发送时间点和对应的所述各完成报文的接收时间点设置不同的处理规则获取所需的pcie报文的传输性能参数;

所述处理规则包括:将第一类型数据报文的发送时间和所述第一类型数据报文对应的完成报文的接收时间点进行减法运算,并对第一预设时间段中所述各第一类型数据报文对应的减法运算的差值进行算术平均等运算。这里,可以将所述减法运算的差确定为对应第一类型数据报文的单笔延时;可以将所述算术平均等的运算结果,确定为在所述第一预设时间段内的pcie报文的延时性能参数,如:pcie报文的延时性能参数和pcie报文的outstanding性能参数等;

具体的,所述pcie报文的延时性能参数包括:最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;可以首先确定各第一类型数据报文的单笔延时,再用算术平均或算术比较等计算方法,确定第一时间段中各第一类型数据报文的最小单笔延时、和/或最大单笔延时、和/或平均单笔延时;其中,所述第二预设时间段可以根据需要进行性能检测的时间点设置。

进一步的,所述处理规则可以包括:将指定时间点未接受到对应完成报文的所述各第一类型数据报文的总数。这里,可以将所述总数确定为所述指定时间点pcie报文的outstanding;

具体的,所述pcie报文的outstanding是在同一时间点,pcie总线已发送non-post数据报文,但未收到完成报文的总数;所述如图4所示,图中每个transaction都有non-post数据报文发送时间点和完成报文接收时间点,图中时间点a,有2个non-post数据报文没有接收到对应的完成报文,因此,时间点a的pcie报文的outstanding为2;同理可以时间点b的pcie报文的outstanding为n。

实际应用中,可以设置一个计数器,在发送non-post数据报文时,将outstanding计数加1,当检测到完成报文时,则outstanding减1。

更进一步的,在确定所述指定时间点pcie报文的outstanding之后,可以根据预设第二预设时间段中各时间点对应的outstanding,确定在所述第二预设时间段内pcie报文的outstanding性能参数;所述pcie报文的outstanding性能参数包括:平均outstanding、和/或最大outstanding;

这里,所述第二预设时间段可以根据需要进行性能检测的时间点设置,可以在所述第二预设时间段内,检测多个时间的pcie报文的outstanding,将各时间点的pcie报文的outstanding汇总后进行算数平均等计算,获取平均outstanding、和/或最大outstanding;

由于pcietlppost数据报文的访问不需要目标设备返回cpl/cpld,因此,transactionid字段并没有实际意义,并不需要pcie设备去管理pcietlppost数据报文的tag资源,因此,不存在单笔延时和outstanding等性能指标。

再进一步的,获取第三预设时间段内所述各第一类型数据报文、和/或各第二类型数据报文的数量、和/或长度,确定所述第三预设时间段内pcie数据报文传输带宽;

这里,所述第二类型数据报文可以是pcietlppost数据报文;所述第三预设时间段可以根据需要进行性能检测的时间点设置;可以指定检查某一时间段的pcie数据报文传输带宽;可以统计在所述第二预设时间段在pcie总线上传输的第一类型数据报文、和/或各第二类型数据报文数量、和/或长度;通过将各数据报文的长度累加等方式确定所述第三预设时间段内的pcie数据报文传输带宽。

实际应用中,可以通过数据报文有效位来确定tlp数据报文的有效性,统计有效的tlp数据报文。可以根据各tlp数据报文的有效位来确定各tlp数据报文的包间隔,以此可以确定一段时间内的平均包间隔等。

这里,所述第一预设时间段、所述第二预设时间段和所述第三预设时间段的时间长短可以是相同时间段,也可以是不同时间段;如可以在同一时间段内检测pcie报文的:延时性能参数、outstanding性能参数和传输带宽。

如此,通过监控non-posttlp包的数据标识,完成了对pcie设备的tlp总线的带宽和outstanding以及单笔延时等pcie报文的传输性能参数;上述性能参数通常可以用来表征pcie总线的利用率。

以上所述,仅为本发明的最佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1