一种基于PCIE的数据传输系统、方法及装置与流程

文档序号:17762510发布日期:2019-05-24 21:49阅读:250来源:国知局
一种基于PCIE的数据传输系统、方法及装置与流程

本发明涉及服务器领域,特别涉及一种基于pcie的数据传输系统、方法及装置。



背景技术:

现场可编辑逻辑阵列(field-programmablegatearray,fpga)加速卡通过pcie接口与数据访问发起端连接,数据访问发起端通过pcie接口将需要加速的数据发送至fpga加速卡,fpga加速卡处理完成后通过pcie接口再返回至数据访问发起端内存,fpga加速卡在数据传输的过程中,数据传输量很大,为了提升数据的传输速率,在fpga加速卡中引入了直接内存读取(directmemoryaccess,dma)机制。

在fpga加速卡中引入dma机制后的dma功能主要分为两个,一个是dma控制器,另一个是dma搬移器,其中,dma控制器用来接收和解析数据访问发起端发送的指令,dma搬移器根据dma控制器解析的指令在数据访问发起端内存和fpga加速卡的存储器之间搬移对应的数据。在dma控制器和dma搬移器相协调实现大数据量的传输时,需要数据访问发起端或用户配置dma控制器的相关寄存器,dma控制器根据数据访问发起端或用户配置的寄存器的相关信息生成对应的描述符,然后dma搬移器根据描述符才能执行对应的搬移操作。但是对于小数据量的传输,也需要数据访问发起端或用户为dma控制器配置寄存器,dma控制器再生成描述符,再由dma搬移器执行数据搬移操作,此时,对于小数据量的数据传输而言,无须通过传输大数据量的配置寄存器的方法进行数据传输,按照传输大数据量的数据传输方法会导致小数据量的数据传输效率较低。



技术实现要素:

本发明的目的在于公开一种基于pcie的数据传输系统、方法及装置,提高了小数据量的数据传输效率。

为实现上述目的,本申请公开了如下技术方案:

第一,本申请公开了一种基于pcie的数据传输系统,包括:

与数据访问发起端连接,用于根据所述数据访问发起端发送的指令进行数据处理的fpga加速卡;

与所述fpga加速卡连接,用于传输经所述fpga加速卡处理后的数据的pcie接口;

所述fpga加速卡包括:用于通过所述数据访问发起端配置的寄存器传输第一数据量的dma模块和用于传输第二数据量的txs模块;

所述第一数据量大于阈值,所述第二数据量小于等于所述阈值。

可选的,所述txs模块具体包括:用于连接所述数据访问发起端的avalon-mm接口;

与所述avalon-mm接口连接,用于存储与所述指令对应的数据的寄存器组;

与所述寄存器组连接,用于将存储至所述寄存器组的数据进行打包的tlp组包器。

可选的,所述dma模块与所述avalon-mm接口连接,用于通过所述avalon-mm接口向所述数据访问发起端发送目标数据。

可选的,所述目标数据具体为:所述dma模块完成数据传输后向所述数据访问发起端发送的中断数据和/或状态更新数据。

可选的,所述数据访问发起端包括:服务器主机和/或客户端。

第二,本申请公开了一种基于pcie的数据传输方法,包括:

接收数据访问发起端发送的指令;

判断所述指令携带的数据量是否大于阈值;

若是,则通过fpga加速卡中dma模块和pcie接口传输与所述指令对应的数据;

若否,则通过所述fpga加速卡中txs模块和所述pcie接口传输与所述指令对应的数据。

可选的,所述通过所述fpga加速卡中txs模块和pcie接口传输与所述指令对应的数据包括:

通过所述txs模块的avalon-mm接口将与所述指令对应的数据写入寄存器组;

利用tlp组包器将写入所述寄存器组中的数据进行打包并通过所述pcie接口传输。

可选的,在所述通过fpga加速卡中dma模块和pcie接口传输与所述指令对应的数据之后,还包括:

检测所述dma模块传输所述数据是否传输完成;

若是,则通过所述txs模块向所述数据访问发起端发送目标数据;

若否,则继续执行通过fpga加速卡中dma模块和pcie接口传输与所述指令对应的数据的步骤。

可选的,所述目标数据具体为中断数据和/或状态更新数据。

第三,本申请公开了一种基于pcie的数据传输装置,包括:

接收模块,用于接收数据访问发起端发送的指令;

判断模块,用于判断所述指令携带的数据量是否大于阈值;若是,则进入第一传输模块,若否,则进入第二传输模块;

所述第一传输模块,用于通过fpga加速卡中dma模块和pcie接口传输与所述指令对应的数据;

所述第二传输模块,用于通过所述fpga加速卡中txs模块和所述pcie接口传输与所述指令对应的数据。

本申请公开了一种基于pcie的数据传输系统,在数据访问发起端发送指令后,由fpga加速卡中的dma模块通过数据访问发起端配置的寄存器传输第一数据量,由fpga加速卡中的txs模块传输第二数据量,此后,经dma模块或txs模块传输的第一数据量和第二数据量通过pcie接口发送出去。其中,第一数据量大于阈值,第二数据量小于阈值。采用本方案,对于大于阈值的大数据量可以采用dma模块进行传输,对于不大于阈值的小数据量的数据可以采用txs模块传输,由于txs模块无须通过配置寄存器便可以实现对小数据量的数据传输,提高了小数据量的数据传输效率。此外,本申请实施例还公开了一种基于pcie的数据传输方法和装置,效果如上。

附图说明

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

图1为本申请第一种实施例公开的一种基于pcie的数据传输系统结构示意图;

图2为本申请第二种实施例公开的一种基于pcie的数据传输系统结构示意图;

图3为本申请第一种实施例公开的一种基于pcie的数据传输方法流程示意图;

图4为本申请实施例提供的一种步骤s204的具体实现方式流程示意图;

图5为本申请第二种实施例提供的一种基于pcie的数据传输方法流程示意图;

图6为本申请实施例提供的一种基于pcie的数据传输装置结构示意图。

具体实施方式

下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请公开了一种基于pcie的数据传输系统、方法及装置,提高了小数据量的数据传输效率。

本申请主要实现的是:数据访问发起端通过fpga加速卡和pcie接口实现对服务器主机内存的数据访问,包括:数据访问发起端10,与数据访问发起端10连接的fpga加速卡20,与fpga加速卡20连接的pcie接口30,与pcie接口30连接的服务器主机内存40。对于该技术方案,本申请通过图1和图2进行说明,图1为txs模块202作为独立的数据传输模块进行小数据量数据传输,图2为txs模块202作为dma模块201的辅助数据传输模块进行小数据量传输。具体如下:

请参见图1,图1为本申请第一种实施例公开的一种基于pcie的数据传输系统结构示意图,包括:与数据访问发起端10连接,用于根据数据访问发起端10发送的指令进行数据处理的fpga加速卡20,与fpga加速卡20连接,用于传输经fpga加速卡20处理的数据的pcie接口30;fpga加速卡20包括:用于通过数据访问发起端10配置的寄存器传输第一数据量的dma模块201和用于传输第二数据量的txs模块202,其中,第一数据量大于阈值,第二数据量小于等于阈值。

具体的,本实施例中,fpga加速卡20可以参见现有技术,本申请实施例在现有技术包含dma模块201的fpga加速卡20的基础上增加了txs模块202。其中,fpga加速卡20中的dma模块201可以用于传输大数据量的数据,fpga加速卡20中的txs模块202可以用于传输小数据量的数据。

小数据量的数据可以为32byte以下的数据,对应的,本申请中的阈值也可以对应取为32byte。第一数据量为数据量大于32byte的数据,第二数据量为数据量小于等于32byte的数据。

作为本申请可选的实施例,数据访问发起端10可以包括服务器主机和/或客户端,即服务器主机可以发起服务器主机内存40中的数据的访问请求,也可以是用户通过客户端发起访问服务器主机内存40中的数据的访问请求。txs模块202具体包括:用于连接数据访问发起端10的avalon-mm接口,与avalon-mm接口连接,用于存储与指令对应的数据的寄存器组,与寄存器组连接,用于将存储至寄存器组的数据进行打包的tlp组包器。本申请中,txs模块202可以独立于dma模块201进行小数据量传输,也可以作为dma模块201的辅助方式进行小数据量传输,下面针对这两种情况进行详细说明。

首先针对于第一种情况(对应图1),dma模块201进行大数据量的数据传输,txs模块202独立于dma模块201进行小数据量传输:首先,txs模块202通过avalon-mm接口接收数据访问发起端10发送的访问指令,该访问指令可以为向服务器主机内存40中写入数据(修改数据、增加新数据)的访问指令,也可以为从服务器主机内存40中读取数据的访问指令,该访问指令中包含访问地址数据、操作类型以及待操作的数据等数据。

然后,txs模块202将接收到的访问指令对应的数据(访问指令对应的地址数据、操作类型、需要写入或读取的数据)先存储至寄存器组(可以连续写入32byte的数据,无需配置寄存器)。

最后,由txs模块202中的tlp组包器将寄存器组中的数据打包成tlp格式的数据包,通过pcie的链路层和物理层发送出去。若此时的访问指令为向服务器主机内存中写入数据的访问指令,则此时由pcie的链路层和物理层发送至服务器主机内存40的tlp格式的数据包中便包含了需要写入至服务器主机内存40的数据。若此时的访问指令为读取服务器主机内存40中的数据,则此时由pcie的链路层和物理层发送至服务器主机内存40的tlp格式的数据包中包含了需要读取的数据块的地址信息和待读取的数据块的相关信息。

需要说明的是,本申请实施例中的txs模块202还可以实现对数据访问发起端10的优先级的识别(txs模块202中预先存储有各个数据访问发起端10的标识以及各个数据访问发起端的优先级信息),如果同时访问服务器主机内存40的数据访问发起端10有多个,txs模块202首先对各个数据访问发起端10的优先级进行识别,先允许优先级较高的数据访问发起端10对服务器主机内存40中的数据进行访问。

其次针对于第二种情况(对应于图2),请参见图2,图2为本申请第二种实施例提供的一种基于pcie的数据传输系统结构示意图:将图1中的dma模块201和txs模块202互相连接即可。为了实现txs模块202辅助dma模块201进行小数据量的传输,作为本发明可选的实施例,dma模块201与avalon-mm接口连接,用于通过avalon-mm接口向数据访问发起端10发送目标数据,其中,目标数据具体为dma模块201完成数据传输后向数据访问发起端10发送的中断数据和/或状态更新数据。

具体的,dma模块201中的dma控制器用来接收和解析数据访问发起端发送的指令,dma搬移器根据dma控制器解析的指令在服务器主机内存40和fpga加速卡20的存储器之间搬移对应的数据。在dma控制器和dma搬移器相协调实现大数据量的传输时,需要数据访问发起端10或用户配置dma控制器的相关寄存器,dma控制器根据数据访问发起端或用户配置的寄存器的相关信息生成对应的描述符,然后dma搬移器根据描述符执行对应的搬移操作。在dma模块201完成与数据访问发起端10的访问指令对应的数据传输任务之后,会向数据访问发起端10发送一个反馈数据,该反馈数据可以为中断数据和/或状态更新数据。该反馈数据一般为32byte的小数据量数据,因此,可以通过txs模块201进行传输,提高数据传输效率。

通过以上的方案,不论是对于数据访问发起端10的包含大数据量的访问请求还是对于包含小数据量的访问请求,都能以较高的效率进行数据传输。

需要说明的是,对于本申请提供的txs模块202可以适用于不同标准的pcie接口,如g3x4接口、g3x8接口、g2x4接口、g2x8接口等等,此外,txs模块202作为dma模块201的辅助传输方式,在除了传输dma模块201的目标数据外,还可以正常进行数据访问请求端10的数据传输任务。

本申请公开的一种基于pcie的数据传输系统,在数据访问发起端发送指令后,由fpga加速卡中的dma模块通过数据访问发起端配置的寄存器传输第一数据量,由fpga加速卡中的txs模块传输第二数据量,此后,经dma模块或txs模块传输的第一数据量和第二数据量通过pcie接口发送出去。其中,第一数据量大于阈值,第二数据量小于阈值。采用本方案,对于大于阈值的大数据量可以采用dma模块进行传输,对于不大于阈值的小数据量的数据可以采用txs模块传输,由于txs模块无须通过配置寄存器便可以实现对小数据量的数据传输,提高了小数据量的数据传输效率。

下面对本申请实施例提供的一种基于pcie的数据传输方法进行介绍,请参见图3,图3为本申请第一种实施例公开的一种基于pcie的数据传输方法流程示意图,该方法包括:

s301:接收数据访问发起端发送的指令。

s302:判断指令携带的数据量是否大于阈值,若是,则进入步骤s303,若否,则进入步骤s304。

具体的,本实施例中,本实施例中的指令携带的数据量为指令携带的所有数据的数据大小(指令对应的数据包括地址数据、操作类型、需要写入或读取的数据)。

s303:通过fpga加速卡中的dma模块和pcie接口传输与指令对应的数据。

具体的,本实施例中,dma模块中的dma控制器用来接收和解析数据访问发起端发送的指令,dma搬移器根据dma控制器解析的指令在服务器主机内存和fpga加速卡的存储器之间搬移对应的数据。在dma控制器和dma搬移器相协调实现大数据量的传输时,需要数据访问发起端或用户配置dma控制器的相关寄存器,dma控制器根据数据访问发起端或用户配置的寄存器的相关信息生成对应的描述符,然后dma搬移器根据描述符执行对应的搬移操作。

s304:通过fpga加速卡中的txs模块和pcie接口传输与指令对应的数据。

对于本申请实施例中的txs模块可以包括用于连接数据访问发起端10的avalon-mm接口,与avalon-mm接口连接,用于存储与指令对应的数据的寄存器组,与寄存器组连接,用于将存储至寄存器组的数据进行打包的tlp组包器。

其中,为了对本申请实施例的步骤s304进行详细说明,本申请实施例提供了一种步骤s304的具体实现方式,请参见图3,图3为本申请实施例提供的一种步骤s304的具体实现方式流程示意图,包括以下步骤:

s401:通过txs模块的avalon-mm接口将与指令对应的数据写入寄存器组。

s402:利用tlp组包器将写入寄存器组中的数据进行打包并通过pcie接口传输。

具体的,本实施例中,通过txs模块进行小数据量的传输可以参见上述实施例提供的基于pcie的数据传输系统的描述,本申请实施例在此不再赘述。

本申请第一种实施例提供的一种基于pcie的数据传输方法,在接收到数据访问发起端发送指令后,首先判断该指令携带的数据量是否大于阈值,若大于阈值,则由fpga加速卡中的dma模块和pcie接口传输与该指令对应的数据,若不大于阈值,则由fpga加速卡中的txs模块和pcie接口传输与该指令对应的数据。采用本方案,对于大于阈值的大数据量可以采用dma模块进行传输,对于不大于阈值的小数据量的数据可以采用txs模块传输,提高了小数据量的数据传输效率。

此外,在fpga加速卡中的dma模块传输大数据量的数据后,dma模块需要向数据访问发起端发送一个反馈信息,一般情况下,该反馈信息数据量的大小不超过32byte,为了提高该反馈信息的传输效率,本发明提供了第二种实施例,请参见图5,图5为本发明第二种实施例提供的一种基于pcie的数据传输方法流程示意图,该方法包括:

s301:接收数据访问发起端发送的指令。

s302:判断指令携带的数据量是否大于阈值,若是,则进入步骤s303,若否,则进入步骤s304。

s303:通过fpga加速卡中的dma模块和pcie接口传输与指令对应的数据。

s501:检测dma模块传输数据是否传输完成。若是,则进入步骤s502,若否,则执行步骤s303。

s502:通过txs模块向数据访问发起端发送目标数据。

s304:通过fpga加速卡中的txs模块和pcie接口传输与指令对应的数据。

具体的,在dma模块完成与数据访问发起端的访问指令对应的数据传输任务之后,会向数据访问发起端发送一个反馈数据,该反馈数据(对应于目标数据)可以为中断数据和/或状态更新数据。该反馈数据一般为32byte的小数据量数据,因此,可以通过txs模块进行传输,提高数据传输效率。

本发明第二种实施例提供的一种基于pcie的数据传输方法,在接收到数据访问发起端发送指令后,首先判断该指令携带的数据量是否大于阈值,若大于阈值,则由fpga加速卡中的dma模块和pcie接口传输与该指令对应的数据,若不大于阈值,则由fpga加速卡中的txs模块和pcie接口传输与该指令对应的数据。采用本方案,对于大于阈值的大数据量可以采用dma模块进行传输,对于不大于阈值的小数据量的数据可以采用txs模块传输,提高了小数据量的数据传输效率。此外,作为dma模块的数据辅助传输方式,由txs模块实现对dma模块的反馈信息的传输,提高了dma模块的反馈信息的传输效率。

下面对本申请实施例提供的一种基于pcie的数据传输装置进行介绍,请参见图6,图6为本申请实施例提供的一种基于pcie的数据传输装置结构示意图,该装置包括:

接收模块601,用于接收数据访问发起端发送的指令。

判断模块602,用于判断指令携带的数据量是否大于阈值。若是,则进入第一传输模块603,若否,则进入第二传输模块504。

第一传输模块603,用于通过fpga加速卡中dma模块和pcie接口传输与指令对应的数据。

第二传输模块604,用于通过fpga加速卡中txs模块和pcie接口传输与指令对应的数据。

本实施例提供的一种基于pcie的数据传输装置,在接收模块接收到数据访问发起端发送指令后,首先判断模块判断该指令携带的数据量是否大于阈值,若大于阈值,则由fpga加速卡中的dma模块和pcie接口传输与该指令对应的数据,若不大于阈值,则由fpga加速卡中的txs模块和pcie接口传输与该指令对应的数据。采用本方案,对于大于阈值的大数据量可以采用dma模块进行传输,对于不大于阈值的小数据量的数据可以采用txs模块传输,提高了小数据量的数据传输效率。

基于以上实施例,作为可选的实施例,第二传输模块503包括:

写入单元,用于通过txs模块的avalon-mm接口将与指令对应的数据写入寄存器组;

传输单元,用于利用tlp组包器将写入寄存器组中的数据进行打包并传输。

基于以上实施例,作为可选的实施例,还包括:

检测模块,用于检测dma模块传输数据是否传输完成;若是,则进入发送模块;若否,则进入第一传输模块503。

发送模块,用于通过txs模块向数据访问发起端发送目标数据。

以上对本申请所公开的一种基于pcie的数据传输系统、方法及装置进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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