高速外设组件互连标准总线系统及其数据传输方法、装置与流程

文档序号:17925749发布日期:2019-06-15 00:24阅读:319来源:国知局
高速外设组件互连标准总线系统及其数据传输方法、装置与流程

本发明涉及通信技术领域,特别涉及一种高速外设组件互连标准总线系统及其数据传输方法、装置。



背景技术:

pci-e(peripheralcomponetinterconnected-express,高速外设组件互连标准)总线是intel公司首先提出的新一代高速串行总线。pci-e总线常用作处理器的io(input/output,输入/输出)传输总线,用于实现系统之间的互联和系统的外设扩展。系统之间的互联例如cpu(centralprocessingunit,中央处理器)之间的互联,系统的外设扩展例如网卡、显卡的数据传输接口。

pci-e总线传输系统(简称为pci-e总线系统)包括通过pci-e总线连接的主设备和从设备。主设备是引发pci-e传输实务的实体,具备处理能力,主设备相当于一个总线主控器,可以对总线进行控制;从设备是响应传输实务的实体。随着pci-e总线传输系统的应用越来越广泛,多数场合要求在pci-e总线有限的传输线宽度的情况下,数据传输速率越大越好。一般提升pci-e总线传输系统的数据传输速率的方法是增加传输线宽度,通过物理连接增加的方法,例如增加pci-e总线的数量,以此提高传输速率。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:物理连接增加的方式不仅增加了系统成本,而且对功耗和产品体积等要求较高。



技术实现要素:

本发明实施例提供了一种高速外设组件互连标准总线系统及其数据传输方法、装置,能够在不增加成本的前提下提升高速外设组件互连标准总线系统的数据传输速率,并对功耗和产品体积的要求较低。所述技术方案如下:

第一方面,提供了一种高速外设组件互连标准总线系统的数据传输方法,所述方法包括:

主设备在操作系统启动后,获取所述操作系统中存储的高速外设组件互连标准pci-e总线的物理参数的值,所述pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;

配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;

按照配置后的各个所述pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制所述从设备通过所述pci-e总线向所述主设备传输数据。

可选地,获取的所述pci-e传输层最大载荷大小的值为,所述主设备和所述从设备均支持的pci-e传输层最大的最大载荷大小;

获取的所述pci-e传输层最大读请求大小的值为,所述主设备支持的pci-e传输层最大的最大读请求大小,或者,所述pci-e总线传输系统提供的实际业务支持的最大数据包长;

获取的所述pci-e读操作完成宽度的值为,所述主设备支持的pci-e最大读操作完成宽度。

可选地,当所述pci-e总线传输系统提供的实际业务支持的最大数据包长与所述主设备支持的各个所述pci-e传输层最大读请求大小不同时,获取的所述pci-e传输层最大读请求大小的值为所述主设备支持的pci-e传输层最大的最大读请求大小;

当所述pci-e总线传输系统提供的实际业务支持的最大数据包长属于所述主设备支持的pci-e传输层最大读请求大小时,获取的所述pci-e传输层最大读请求大小的值为所述pci-e总线传输系统提供的实际业务支持的最大数据包长。

可选地,所述按照配置后的各个所述pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制所述从设备通过所述pci-e总线向所述主设备传输数据,包括:

接收进程发送的读请求,在所述读请求的指示下,按照配置后的各个所述pci-e总线的物理参数,控制所述从设备通过所述pci-e总线向所述主设备传输数据;所述进程运行于所述主设备上;

接收所述进程发送的写请求,在所述写请求的指示下,按照配置后的各个所述pci-e总线的物理参数,通过所述pci-e总线向所述从设备传输数据。

可选地,在所述控制所述从设备通过所述pci-e总线向所述主设备传输数据之后,所述方法还包括:

将所述从设备传输的数据存储到pci-e内存,并记录所述从设备传输的数据在所述pci-e内存的存储地址;

确定为所述从设备传输的数据分配的用户空间的存储地址;

基于记录的所述从设备传输的数据在所述pci-e内存的存储地址,采用直接寻址方式在所述pci-e内存查找所述从设备传输的数据;

将查找到的所述从设备传输的数据从所述pci-e内存拷贝到所述用户空间。

可选地,所述方法还包括:

向所述进程发送读反馈指令,所述读反馈指令包括为所述从设备传输的数据分配的用户空间的存储地址,所述读反馈指令用于指示所述进程从为所述从设备传输的数据分配的用户空间的存储地址获取所述从设备传输的数据。

第二方面,提供了一种高速外设组件互连标准总线系统的数据传输装置,所述装置包括:

获取模块,用于在操作系统启动后,获取所述操作系统中存储的高速外设组件互连标准pci-e总线的物理参数的值,所述pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;

配置模块,用于配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;

传输模块,用于按照配置后的各个所述pci-e总线的物理参数,通过pci-e总线向所述从设备传输数据、以及控制所述从设备通过所述pci-e总线向所述主设备传输数据。

可选地,获取的所述pci-e传输层最大载荷大小的值为,所述主设备和所述从设备均支持的pci-e传输层最大的最大载荷大小;

获取的所述pci-e传输层最大读请求大小的值为,所述主设备支持的pci-e传输层最大的最大读请求大小,或者,所述pci-e总线传输系统提供的实际业务支持的最大数据包长;

获取的所述pci-e读操作完成宽度的值为,所述主设备支持的pci-e最大读操作完成宽度。

可选地,当所述pci-e总线传输系统提供的实际业务支持的最大数据包长与所述主设备支持的各个所述pci-e传输层最大读请求大小不同时,获取的所述pci-e传输层最大读请求大小的值为所述主设备支持的pci-e传输层最大的最大读请求大小;

当所述pci-e总线传输系统提供的实际业务支持的最大数据包长属于所述主设备支持的pci-e传输层最大读请求大小时,获取的所述pci-e传输层最大读请求大小的值为所述pci-e总线传输系统提供的实际业务支持的最大数据包长。

第三方面,提供了一种高速外设组件互连标准总线系统,所述系统包括:

主设备,

通过pci-e总线与所述主设备连接的从设备,

所述主设备用于,在操作系统启动后,获取所述操作系统中存储的高速外设组件互连标准pci-e总线的物理参数的值,所述pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个所述pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制所述从设备通过所述pci-e总线向所述主设备传输数据。

本发明实施例提供的技术方案带来的有益效果是:

通过主设备在操作系统启动后,获取驱动程序中存储的高速外设组件互连标准pci-e总线的物理参数的值,所述pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;pci-e总线的物理参数的值的大小与pci-e总线的数据传输速率相关;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个所述pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制所述从设备通过所述pci-e总线向所述主设备传输数据;配置后的各个pci-e总线的物理参数的值可以是能够提升pci-e总线的数据传输速率的值,那么,pci-e总线按照配置后的各个pci-e总线的物理参数的值进行数据传输时,能够提升pci-e总线的数据传输速率,从而提高pci-e总线系统的数据传输速率,该方法仅涉及参数配置,不需要增加pci-e总线的数量,能够节省成本,并且,不产生产品体积的增加,对功耗等要求也比较低。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输装置的结构示意图;

图2是本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输装置的结构示意图;

图3是本发明实施例提供的一种高速外设组件互连标准总线系统的结构示意图;

图4是本发明实施例提供的一种高速外设组件互连标准总线系统的结构框图;

图5是本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输方法的流程图;

图6是本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输方法的流程图;

图7和图8分别是本发明实施例提供的传输线脉冲发生器包的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1示出了本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输装置100,参见图1,该装置100包括:获取模块11、配置模块12和传输模块13。

获取模块11,用于在操作系统启动后,获取操作系统中存储的pci-e总线的物理参数的值,该pci-e总线的物理参数包括,pci-e传输层mps(maximumpayloadsize,最大载荷大小)、pci-e传输层mrrs(maximumreadrequestsize,最大读请求大小)、以及pci-ercb(readcompletionboundary,读操作完成宽度)。

配置模块12,用于配置各个pci-e总线的物理参数的值为获取模块11获取的相应pci-e总线的物理参数的值。

传输模块13,用于按照配置模块12配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制从设备通过pci-e总线向主设备传输数据。

示例性地,该装置配置在pci-e总线传输系统的主设备中。pci-e总线传输系统包括通过pci-e总线连接的主设备和从设备。

示例性地,pci-e传输层mps为,主设备和从设备均支持的pci-e传输层最大的mps;pci-e传输层mrrs为,主设备支持的pci-e传输层最大的mrrs,或者,pci-e传输层mrrs为,pci-e总线传输系统提供的实际业务支持的最大数据包长;pci-ercb为,主设备支持的pci-e最大rcb。

示例性地,当pci-e总线传输系统提供的实际业务支持的最大数据包长与主设备支持的各个pci-e传输层mrrs不同时,获取的pci-e传输层mrrs为主设备支持的pci-e传输层最大的mrrs;当pci-e总线传输系统提供的实际业务支持的最大数据包长属于主设备支持的pci-e传输层mrrs时,获取的pci-e传输层mrrs为pci-e总线传输系统提供的实际业务支持的最大数据包长。

示例性地,传输模块13用于:接收进程发送的读请求,在读请求的指示下,按照配置后的各个pci-e总线的物理参数,控制从设备通过pci-e总线向主设备传输数据;进程运行于主设备上;以及,接收进程发送的写请求,在写请求的指示下,按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据。

参见图2,示例性地,该装置还包括内存拷贝模块14。

内存拷贝模块14用于,将所述从设备传输的数据存储到pci-e内存,并记录所述从设备传输的数据在所述pci-e内存的存储地址;确定为所述从设备传输的数据分配的用户空间的存储地址;基于记录的所述从设备传输的数据在所述pci-e内存的存储地址,采用直接寻址方式在所述pci-e内存查找所述从设备传输的数据;将查找到的所述从设备传输的数据从所述pci-e内存拷贝到所述用户空间。

参见图2,示例性地,该装置还包括发送模块15。

发送模块15用于,向进程发送读反馈指令,读反馈指令包括为从设备传输的数据分配的用户空间的存储地址,读反馈指令用于指示进程从为从设备传输的数据分配的用户空间的存储地址获取从设备传输的数据。

本发明实施例通过主设备在操作系统启动后,获取驱动程序中存储的高速外设组件互连标准pci-e总线的物理参数的值,该pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;pci-e总线的物理参数的值的大小与pci-e总线的数据传输速率相关;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制从设备通过pci-e总线向主设备传输数据;配置后的各个pci-e总线的物理参数的值可以是能够提升pci-e总线的数据传输速率的值,那么,pci-e总线按照配置后的各个pci-e总线的物理参数的值进行数据传输时,能够提升pci-e总线的数据传输速率,从而提高pci-e总线系统的数据传输速率,该方法仅涉及参数配置,不需要增加pci-e总线的数量,能够节省成本,并且,不产生产品体积的增加,对功耗等要求也比较低。对于一些对功耗和体积等有要求的应用场景,比如嵌入式场景,能够采用该方法实现传输速率的提升。

图3示出了本发明实施例提供的一种高速外设组件互连标准总线系统,参见图3,该系统包括:

主设备21、以及通过pci-e总线22与主设备连接的从设备23。

主设备21用于,在操作系统启动后,获取操作系统中存储的pci-e总线的物理参数的值,该pci-e总线的物理参数包括,pci-e传输层mps、pci-e传输层mrrs、以及pci-ercb;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个pci-e总线的物理参数,通过pci-e总线22向从设备23传输数据、以及控制从设备23通过pci-e总线22向主设备21传输数据。

示例性地,该主设备21可以是图1或图2示出的装置100。

图4为本发明实施例提供的一示例性pci-e总线传输系统的结构框图。参见图4,pci-e总线传输系统的主设备21可以是cpu,pci-e总线传输系统的从设备23可以是fpga(field-programmablegatearray,现场可编程门阵列)。pci-e总线传输系统还包括与cpu连接的内存ddr24。示例性地,cpu可以是龙芯2h系列处理器,fpga可以是xilinxv5系列fpga。cpu的pci-e接口与fpga的pci-e接口连接,cpu与fpga之间通过pci-e总线进行数据传输。该pci-e总线宽度×1,采用pci-e2.0规范。cpu的操作系统可以是麒麟linux操作系统。

需要说明的是,该系统不对主设备21的类型及连接方式进行限制,该主设备21还可以是x86、powerpc、arm等多种处理器。

本发明实施例通过主设备在操作系统启动后,获取驱动程序中存储的高速外设组件互连标准pci-e总线的物理参数的值,该pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;pci-e总线的物理参数的值的大小与pci-e总线的数据传输速率相关;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制从设备通过pci-e总线向主设备传输数据;配置后的各个pci-e总线的物理参数的值可以是能够提升pci-e总线的数据传输速率的值,那么,pci-e总线按照配置后的各个pci-e总线的物理参数的值进行数据传输时,能够提升pci-e总线的数据传输速率,从而提高pci-e总线系统的数据传输速率,该方法仅涉及参数配置,不需要增加pci-e总线的数量,能够节省成本,并且,不产生产品体积的增加,对功耗等要求也比较低。对于一些对功耗和体积等有要求的应用场景,比如嵌入式场景,能够采用该方法实现传输速率的提升。

前文描述的实施例中,各模块及各设备的功能未详尽描述的地方,请参见下文描述的方法实施例。

图5示出了本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输方法,该方法可以由图3或图4示出的系统中主设备执行。参见图5,该方法流程包括如下步骤。

步骤101、在操作系统启动后,获取操作系统中存储的pci-e总线的物理参数的值。

其中,该pci-e总线的物理参数包括,pci-e传输层mps、pci-e传输层mrrs、以及pci-ercb。

步骤102、配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值。

步骤103、按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制从设备通过pci-e总线向主设备传输数据。

本发明实施例通过主设备在操作系统启动后,获取驱动程序中存储的高速外设组件互连标准pci-e总线的物理参数的值,该pci-e总线的物理参数包括,pci-e传输层最大载荷大小、pci-e传输层最大读请求大小、以及pci-e读操作完成宽度;pci-e总线的物理参数的值的大小与pci-e总线的数据传输速率相关;配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值;按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据、以及控制从设备通过pci-e总线向主设备传输数据;配置后的各个pci-e总线的物理参数的值可以是能够提升pci-e总线的数据传输速率的值,那么,pci-e总线按照配置后的各个pci-e总线的物理参数的值进行数据传输时,能够提升pci-e总线的数据传输速率,从而提高pci-e总线系统的数据传输速率,该方法仅涉及参数配置,不需要增加pci-e总线的数量,能够节省成本,并且,不产生产品体积的增加,对功耗等要求也比较低。对于一些对功耗和体积等有要求的应用场景,比如嵌入式场景,能够采用该方法实现传输速率的提升。

图6示出了本发明实施例提供的一种高速外设组件互连标准总线系统的数据传输方法,该方法可以由图3或图4示出的系统中主设备执行。参见图6,该方法流程包括如下步骤。

步骤201、在操作系统启动后,获取操作系统中存储的pci-e总线的物理参数的值。

其中,该操作系统为主设备的操作系统,例如前述麒麟linux操作系统。

其中,该pci-e总线的物理参数包括,pci-e传输层mps、pci-e传输层mrrs、以及pci-ercb。这些物理参数均与tlp(transmissionlinepulse,传输线脉冲发生器)包有关。

其中,pci-e总线传输系统通过tlp包进行数据传递。图7是pci-e2.0协议中规定的tlp包的示意图。参见图7,tlp包包括start(开始)字段、sequence(序列)字段、header(头)字段、payload字段、ecrc字段、lcrc字段和end(结束)字段。payload字段用于承载写入的有效数据。图8是pci-e3.0协议中规定的tlp包的示意图。参见图8,tlp包包括start字段、sequence字段、header字段、payload字段、ecrc字段、以及lcrc字段字段。主设备向从设备写数据(主设备向从设备传输tlp)、以及主设备从从设备读数据(从设备向主设备传输tlp)过程中,传输的tlp包的字段长度可以不同。

pci-e传输层mps的含义为,在主设备向从设备写数据时,传输的tlp包的payload(有效载荷)字段承载的载荷大小。mps决定了同样一包数据需要通过多少tlp进行发送,mps越大,所需要的tlp就越少。

pci-e传输层mrrs的含义为,在主设备从从设备读数据时,传输的tlp包的payload字段承载的载荷大小。

pci-ercb的含义为,在主设备从从设备读数据时,各个tlp包包括的数据包的数量。rcb的大小会影响读完成tlp报文的传输效率。对于从设备向主设备发送的一个数据读请求,可以由多个读完成来传输。有效数据会被拆分成64byte或者128byte来进行传输。

其中,获取的pci-e传输层mps的值为,主设备和从设备均支持的最大的pci-e传输层mps。示例性地,假设主设备可以支持的pci-e传输层mps为128byte、256byte、512byte;从设备可以支持的pci-e传输层mps为128byte、256byte;那么,获取的pci-e传输层mps的值为256。

其中,获取的pci-e传输层mrrs的值为,主设备支持的最大的pci-e传输层mrrs,或者,pci-e总线传输系统提供的实际业务支持的最大数据包长。

当pci-e总线传输系统提供的实际业务支持的最大数据包长与主设备支持的各个pci-e传输层mrrs不同时,获取的pci-e传输层mrrs为主设备支持的pci-e传输层最大的mrrs。示例性地,假设主设备可以支持的pci-e传输层mrrs为256byte、512byte、1024byte;pci-e总线传输系统提供的实际业务支持的最大数据包长为700byte;那么,获取的pci-e传输层mrrs的值为1024。

当pci-e总线传输系统提供的实际业务支持的最大数据包长属于主设备支持的pci-e传输层mrrs时,获取的pci-e传输层mrrs为pci-e总线传输系统提供的实际业务支持的最大数据包长。示例性地,假设主设备可以支持的pci-e传输层mrrs为256byte、512byte、1024byte;pci-e总线传输系统提供的实际业务支持的最大数据包长为512byte;那么,获取的pci-e传输层mrrs的值为512。

其中,获取的pci-ercb值为,主设备支持的最大pci-ercb。示例性地,假设主设备可以支持的pci-ercb为64byte、128byte;那么,获取的pci-ercb的值为128。

步骤202、配置各个pci-e总线的物理参数的值为获取的相应pci-e总线的物理参数的值。

步骤202可以包括:基于获取的各个pci-e总线的物理参数的值,对寄存器中存储的各个相应pci-e总线的物理参数进行赋值。寄存器为专门用于存储pci-e总线的物理参数的值的寄存器。在配置各个pci-e总线的物理参数的值之前,寄存器中存储的各个pci-e总线的物理参数的值为默认值。

基于获取的各个pci-e总线的物理参数的值,可以估算配置的pci-e总线的物理参数对pci-e总线传输系统的传输速率的影响,从而可以评估配置的pci-e总线的物理参数是否能够提升传输速率。

首先,计算pci-e总线理论传输速率。可以基于pci-e总线使用版本的单线基础速率(rate_original)和采用的物理总线宽度(lanewidth),通过下述公式(1)计算pci-e总线理论传输速率。

公式(1)中,2表示双向传输,10bits/byte表示传输1byte的有效载荷需要10bits大小的空间进行传输。

其次,确定配置的各个pci-e总线的物理参数分别对pci-e总线传输系统传输速率的影响。

公式(2)-(4)中,overhead表示tlp报文除payload字段外其他字段的大小之和,mps为获取的pci-e传输层mps的值,mrrs为获取的pci-e传输层mrrs的值,rcb为获取的pci-ercb。

其中,mps对pci-e总线传输系统传输速率的影响为,影响_mps=理论速率*传输效率_mps*100%。

mrrs对pci-e总线传输系统传输速率的影响为,影响_mrrs=理论速率*传输效率_mrrs*100%。

rcb对pci-e总线传输系统传输速率的影响为,影响_rcb=理论速率*传输效率_rcb*100%。

示例性地,步骤201-步骤202实现的方法可以通过操作系统加载驱动程序实现。该驱动程序可以是操作系统内核pci-e总线驱动程序,并以动态库的形式存放在操作系统的文件系统中。该驱动程序中存储有pci-e总线的物理参数的值。操作系统在启动后,将运行驱动程序加载函数,加载pci-e总线驱动程序,实现pci-e总线物理参数的配置,实现提升pci-e传输系统有效传输速率功能。

在驱动程序加载完成后,可通过命令查看pci-e从设备,运行pci-e传输系统速率测试应用,即可测试速度,与理论值比较即可。

其中,基于配置的各个pci-e总线的物理参数的值,可以评估配置后的pci-e总线的带宽,带宽越大意味着传输速率越大。示例性地,在图4示出的pci-e总线传输系统中,一方面,写操作(主设备向从设备传输数据)时,假设200次写操作,传输链路传输速率为2.5gb/s,1byte传输耗时4ns,32位地址情况,dllpack(datalinklayerpacketsacknowledgement,数据链路层报文响应)传输耗时为:8bytes*4ns/bytes=32ns:当mps为128bytes时,一次tlp传输耗时为:([128+20]×4)ns=592ns,总传输数据=200×128bytes=25600bytes,总传输时间=(200×592ns)+(40×32ns)+(50×32ns)=121280ns,则总带宽=25600bytes/121280ns=0.211gb/s=1.688gbps。当mps为64bytes时,一次tlp传输耗时([64+20]×4)=336ns,总传输数据=200×64bytes=12800bytes,总传输时间=(200×336ns)+(40×32ns)+(50×32ns)=70080ns,总带宽为12800bytes/70080ns=0.183gb/s=1.46gbps。可见,mps越大,带宽越大,相应的传输速率越快。

另一方面,读操作(从设备向主设备传输数据)时,假设传输链路传输速率为2.5gb/s,1byte传输耗时4ns,32位地址情况,一次tlp读请求报文传输耗时为:([20]×4)ns=80ns:在rcb为64bytes情况下,一次tlp完成报文传输耗时为:([64+20]×4)ns=336ns,dllpack传输耗时为:8bytes*4ns/bytes=32ns,系统接收完成到产生完成报文耗时300ns。假设读取4096bytes数据,如果mrrs为256bytes,则总传输时间=(16×80ns)+(16×300ns)+(64×336ns)+(16×32ns)=28096ns,总带宽=4096bytes/28096ns=0.145gb/s=1.16gbps。如果mrrs为128bytes,则总传输时间=(32×80ns)+(32×300ns)+(64×336ns)+(32×32ns)=34688ns,总带宽为4096bytes/34688ns=0.118gb/s=0.944gbps。可见,rcb不变时,mrrs越大,带宽越大,相应的传输速率越大。

步骤203、按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据。

步骤203可以包括:

第一步、主设备接收进程发送的写请求。写请求即为写操作请求,这时,主设备向从设备传输数据。

第二步、主设备在写请求的指示下,按照配置后的各个pci-e总线的物理参数,通过pci-e总线向从设备传输数据。

其中,主设备在写请求的指示下,按照配置后的各个pci-e总线的物理参数,生成tlp包,并将tlp包传输给从设备。主设备生成的tlp包中,payload字段携带的有效载荷大小为配置的pci-e传输层mps的值。当mps的值越大,payload字段携带的有效载荷大小越大,一包数据分成的tlp包的数量就越少,花费较少的时间能够传完tlp,提高了传输效率。

步骤204、按照配置后的各个pci-e总线的物理参数,控制从设备通过pci-e总线向主设备传输数据。

步骤204可以包括:

第一步、主设备接收进程发送的读请求。读请求即为读操作请求,这时,从设备向主设备传输数据。

其中,进程运行于主设备上。

第二步、主设备在读请求的指示下,按照配置后的各个pci-e总线的物理参数,控制从设备通过pci-e总线向主设备传输数据。

其中,主设备在读请求的指示下,控制从设备按照配置后的各个pci-e总线的物理参数,生成tlp包,并将tlp包传输给主设备。从设备生成的tlp包中,payload字段携带的有效载荷大小为配置的pci-e传输层mrrs的值。当mrrs的值越大,payload字段携带的有效载荷大小越大,一包数据分成的tlp包的数量就越少,花费较少的时间能够传完tlp,提高了传输效率。并且,tlp包中包括的数据包的数量与配置的rcb的值相同。

步骤205、将从设备传输的数据从内核空间搬移到用户空间。

其中,用户空间指主设备为进程分配的内存存储空间。在步骤204中,从设备通过pci-e总线向主设备传输的数据是存储在内核空间中。由于进程只能调用用户空间的数据,因此,需要将数据从内核空间搬移到用户空间。

步骤205可以包括:

第一步、主设备将从设备传输的数据存储到pci-e内存,并记录从设备传输的数据在pci-e内存的存储地址。

其中,pci-e内存为pci-e总线传输系统在内存上的存储空间(也称内核空间)。pci-e内存可以由主设备分配。示例性地,从设备传输的数据在pci-e内存的存储地址为直接寻址地址。

第二步、确定为从设备传输的数据分配的用户空间的存储地址。

其中,为从设备传输的数据分配的用户空间可以是,主设备为各个进程分配的内存存储空间。

第三步、基于记录的从设备传输的数据在pci-e内存的存储地址,采用直接寻址方式在pci-e内存查找从设备传输的数据。

由于从设备传输的数据在pci-e内存的存储地址为直接寻址地址,因此,采用直接寻址方式查找从设备传输的数据,相比于间接寻址方式,不需要二次计算存储地址,能够提升数据传输的效率。

第四步、将查找到的从设备传输的数据从pci-e内存拷贝到用户空间。

在实现时,可以采用sse(streamingsingleinstructionmultipledataextensions,简称指令集)汇编指令实现数据从内核空间到用户空间的搬移。

步骤206、向进程发送读反馈指令。

在将从设备传输的数据从内核空间搬移到用户空间之后,主设备向进行发送反馈指令。其中,读反馈指令包括为从设备传输的数据分配的用户空间的存储地址。读反馈指令用于指示进程从为从设备传输的数据分配的用户空间的存储地址获取从设备传输的数据。

现有的pci-e总线传输系统是将从设备传输的数据从用户空间搬移到进程的数据缓冲区,进程从数据缓冲区获取从设备传输的数据。本实施例中,将从设备传输的数据在用户空间的存储地址发送给进程,进程可以直接从用户空间获取从设备传输的数据,从而不需要将从设备传输的数据从用户空间搬移到进程的数据缓冲区,节省了进程获取数据的时间,提高了pci-e总线传输系统的传输效率。

在实现时,反馈指令可以采用类似iommap命令将内存区直接映射到用户空间。步骤204-步骤206的整个读过程是采用pci-e总线读取函数实现的。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

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