数据传输方法、系统及计算机可读存储介质转让专利

申请号 : CN202210292391.3

文献号 : CN114389947B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李幸远崔健王江孙华锦李树青

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明提供一种数据传输方法、系统及计算机可读存储介质,方法应用于数据传输系统,系统包括主机设备、待传输设备和传输发起设备,待传输设备和传输发起设备均为PCIe设备,其中,主机设备可持有包含待传输设备的设备信息的初始配置表,并将该表发送至传输发起设备进行选择和完善;传输发起设备则会根据自身需求,在目标设备的初始配置表中填写建立传输的必要信息,并将得到的完整配置表返回给主机设备;主机设备进而会利用完整信息表对目标设备进行配置,并在完成配置后向传输发起设备返回完整信息表,以使传输发起设备自主地与目标设备进行PCIe点对点传输;可由主机设备帮助传输发起设备配置目标设备,以确保PCIe设备可实现设备间自主的点对点传输。

权利要求 :

1.一种数据传输方法,其特征在于,应用于数据传输系统,所述数据传输系统包括主机设备、待传输设备和传输发起设备,所述待传输设备和所述传输发起设备均为PCIe设备,所述方法包括:所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备;所述初始配置表中包含所述待传输设备的设备信息;

所述传输发起设备根据所述设备信息在所述待传输设备中确定目标设备,在所述目标设备的初始配置表中填写传输配置信息得到完整配置表,并将所述完整配置表发送至所述主机设备;

所述主机设备根据所述传输配置信息配置所述目标设备,将所述完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至所述传输发起设备;

所述传输发起设备在确定所述配置状态位为所述成功状态时,利用所述完整配置表与所述目标设备进行PCIe点对点数据传输。

2.根据权利要求1所述的数据传输方法,其特征在于,所述在所述目标设备的初始配置表中填写传输配置信息得到完整配置表,包括:所述传输发起设备根据所述目标设备的初始配置表判断所述目标设备是否需要使能;

若是,则将所述初始配置表中预设的使能标志位更新为需要使能状态;

从所述初始配置表中读取所述目标设备支持的中断类型,从所述中断类型中选择目标中断类型,并将所述目标中断类型填写至所述初始配置表;

若所述目标中断类型为MSI中断,则将预设的中断配置信息填写至所述初始配置表;所述中断配置信息包括MSI中断地址、中断数据和中断个数;

将完成填写的初始配置表设置为所述完整配置表。

3.根据权利要求2所述的数据传输方法,其特征在于,所述主机设备根据所述传输配置信息配置所述目标设备,包括:所述主机设备从所述传输配置信息中读取所述使能标志位、所述目标中断类型及所述中断配置信息;

若所述使能标志位为所述需要使能状态,则对所述目标设备的配置空间中的命令寄存器进行配置,以使能内存空间位和总线主控位;

若所述目标中断类型为所述MSI中断,则利用所述中断配置信息配置所述目标设备的MSI功能寄存器。

4.根据权利要求1所述的数据传输方法,其特征在于,在所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备之前,还包括:所述主机设备从所述待传输设备的配置空间中提取所述设备信息,并利用所述设备信息创建所述初始配置表。

5.根据权利要求1至4任一项所述的数据传输方法,其特征在于,所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备,包括:所述主机设备构造第一控制命令,将所述第一控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;所述第一控制命令中包含所述初始配置表在所述主机设备的内存中的存放地址;

所述传输发起设备在检测到所述门铃寄存器的发生状态更新时,从所述控制命令提交队列提取所述第一控制命令,并根据所述存放地址从所述内存中获取所述初始配置表;

相应的,所述将所述完整配置表发送至所述主机设备,包括:

所述主机设备构造第二控制命令,将所述第二控制命令发送至所述控制命令提交队列,并更新所述门铃寄存器的状态;所述第二控制命令中包含所述完整配置表在所述内存中的目标写入地址;

所述传输发起设备在检测到所述门铃寄存器的发生状态变化时,从所述控制命令提交队列提取所述第二控制命令,并根据所述目标写入地址将所述完整配置表写入所述内存。

6.根据权利要求5所述的数据传输方法,其特征在于,所述第一控制命令为特性设置命令,所述根据所述存放地址从所述内存中获取所述初始配置表,包括:所述传输发起设备判断所述特性设置命令中的功能标识符是否为第一预设值;

若是,则从所述特性设置命令的数据指针中读取所述存放地址,并根据所述存放地址从所述内存中获取所述初始配置表;

相应的,所述第二控制命令为特性获取命令,所述根据所述目标写入地址将所述完整配置表写入所述内存,包括:所述传输发起设备判断所述特性获取命令中的功能标识符是否为第二预设值;

若是,则从所述特性获取命令的数据指针中读取所述目标写入地址,并根据所述目标写入地址将所述完整配置表写入所述内存。

7.根据权利要求6所述的数据传输方法,其特征在于,在根据所述存放地址从所述内存中获取所述初始配置表之后,还包括:所述传输发起设备通过控制命令响应队列将执行所述特性设置命令的第一执行结果发送至所述主机设备;

相应的,在根据所述目标写入地址将所述完整配置表写入所述内存之后,还包括:所述传输发起设备通过所述控制命令响应队列将执行所述特性获取命令的第二执行结果发送至所述主机设备。

8.一种数据传输系统,其特征在于,包括主机设备、待传输设备和传输发起设备,所述待传输设备和所述传输发起设备均为PCIe设备,其中:所述主机设备,用于将所述待传输设备的初始配置表发送至所述传输发起设备;所述初始配置表中包含所述待传输设备的设备信息;根据所述传输发起设备返回的完整配置表中的传输配置信息配置目标设备,将所述完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至所述传输发起设备;

所述传输发起设备,用于根据所述初始配置表中的设备信息在所述待传输设备中确定所述目标设备,在所述目标设备的初始配置表中填写传输配置信息得到所述完整配置表,并将所述完整配置表发送至所述主机设备;在确定所述完整配置表中的所述配置状态位为所述成功状态时,利用所述完整配置表与所述目标设备进行PCIe点对点数据传输;

所述待传输设备,用于在被所述主机设备配置后,与所述传输发起设备进行所述PCIe点对点数据传输。

9.根据权利要求8所述的数据传输系统,其特征在于,

所述传输发起设备,还用于根据所述目标设备的初始配置表判断所述目标设备是否需要使能;若是,则将所述初始配置表中预设的使能标志位更新为需要使能状态;从所述初始配置表中读取所述目标设备支持的中断类型,从所述中断类型中选择目标中断类型,并将所述目标中断类型填写至所述初始配置表;若所述目标中断类型为MSI中断,则将预设的中断配置信息填写至所述初始配置表;所述中断配置信息包括MSI中断地址、中断数据和中断个数;将完成填写的初始配置表设置为所述完整配置表。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至7任一项所述的数据传输方法。

说明书 :

数据传输方法、系统及计算机可读存储介质

技术领域

[0001] 本发明涉及设备通信领域,特别涉及一种数据传输方法、系统及计算机可读存储介质。

背景技术

[0002] 在PCIe总线系统(Peripheral component interconnect express,高速串行计算机扩展总线标准)中,总线上的端点设备(EP,Endpoint)之间通常可在主机设备CPU的控制下进行数据传输,例如传统的PCIe点对点数据传输(PCIe P2P)允许两个端点设备在主机设备的控制下进行数据传输,并由主机设备处理数据传输过程中的中断等操作。但是上述PCIe点对点数据传输过程容易增加端点设备之间的数据传输时延,同时该过程还需要主机设备安装配套的传输软件,容易增加PCIe总线系统的维护成本。因此,可以考虑将数据传输过程直接迁移至端点设备,让传输控制逻辑完全由端点设备本身完成。然而迁移带来了新的问题,即需要发起传输的端点设备若要与目标端点设备进行数据通信,则需在目标端点设备的配置空间(Configuration Space)中获取相关的设备信息并进行相关配置,但端点设备实际无法访问另一端点设备的配置空间,而这导致传输发起设备无法获取目标端点设备的设备信息并进行配置,进而也无法开展后续的PCIe点对点数据传输过程。
[0003] 因此,如何有效配置目标端点设备,以确保传输发起设备能够自主地与目标端点设备进行PCIe点对点数据传输,是本领域技术人员所需面对的技术问题。

发明内容

[0004] 本发明的目的是提供一种数据传输方法、系统及计算机可读存储介质,可由主机设备帮助传输发起设备配置目标设备,以确保PCIe设备可实现设备间自主的点对点传输。
[0005] 为解决上述技术问题,本发明提供一种数据传输方法,应用于数据传输系统,所述数据传输系统包括主机设备、待传输设备和传输发起设备,所述待传输设备和所述传输发起设备均为PCIe设备,所述方法包括:
[0006] 所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备;所述初始配置表中包含所述待传输设备的设备信息;
[0007] 所述传输发起设备根据所述设备信息在所述待传输设备中确定目标设备,在所述目标设备的初始配置表中填写传输配置信息得到完整配置表,并将所述完整配置表发送至所述主机设备;
[0008] 所述主机设备根据所述传输配置信息配置所述目标设备,将所述完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至所述传输发起设备;
[0009] 所述传输发起设备在确定所述配置状态位为所述成功状态时,利用所述完整配置表与所述目标设备进行PCIe点对点数据传输。
[0010] 可选地,所述在所述目标设备的初始配置表中填写传输配置信息得到完整配置表,包括:
[0011] 所述传输发起设备根据所述目标设备的初始配置表判断所述目标设备是否需要使能;
[0012] 若是,则将所述初始配置表中预设的使能标志位更新为需要使能状态;
[0013] 从所述初始配置表中读取所述目标设备支持的中断类型,从所述中断类型中选择目标中断类型,并将所述目标中断类型填写至所述初始配置表;
[0014] 若所述目标中断类型为MSI中断,则将预设的中断配置信息填写至所述初始配置表;所述中断配置信息包括MSI中断地址、中断数据和中断个数;
[0015] 将完成填写的初始配置表设置为所述完整配置表。
[0016] 可选地,所述主机设备根据所述传输配置信息配置所述目标设备,包括:
[0017] 所述主机设备从所述传输配置信息中读取所述使能标志位、所述目标中断类型及所述中断配置信息;
[0018] 若所述使能标志位为所述需要使能状态,则对所述目标设备的配置空间中的命令寄存器进行配置,以使能内存空间位和总线主控位;
[0019] 若所述目标中断类型为所述MSI中断,则利用所述中断配置信息配置所述目标设备的MSI功能寄存器。
[0020] 可选地,在所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备之前,还包括:
[0021] 所述主机设备从所述待传输设备的配置空间中提取所述设备信息,并利用所述设备信息创建所述初始配置表。
[0022] 可选地,所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备,包括:
[0023] 所述主机设备构造第一控制命令,将所述第一控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;所述第一控制命令中包含所述初始配置表在所述主机设备的内存中的存放地址;
[0024] 所述传输发起设备在检测到所述门铃寄存器的发生状态更新时,从所述控制命令提交队列提取所述第一控制命令,并根据所述存放地址从所述内存中获取所述初始配置表;
[0025] 相应的,所述将所述完整配置表发送至所述主机设备,包括:
[0026] 所述主机设备构造第二控制命令,将所述第二控制命令发送至所述控制命令提交队列,并更新所述门铃寄存器的状态;所述第二控制命令中包含所述完整配置表在所述内存中的目标写入地址;
[0027] 所述传输发起设备在检测到所述门铃寄存器的发生状态变化时,从所述控制命令提交队列提取所述第二控制命令,并根据所述目标写入地址将所述完整配置表写入所述内存。
[0028] 可选地,所述第一控制命令为特性设置命令,所述根据所述存放地址从所述内存中获取所述初始配置表,包括:
[0029] 所述传输发起设备判断所述特性设置命令中的功能标识符是否为第一预设值;
[0030] 若是,则从所述特性设置命令的数据指针中读取所述存放地址,并根据所述存放地址从所述内存中获取所述初始配置表;
[0031] 相应的,所述第二控制命令为特性获取命令,所述根据所述目标写入地址将所述完整配置表写入所述内存,包括:
[0032] 所述传输发起设备判断所述特性获取命令中的功能标识符是否为第二预设值;
[0033] 若是,则从所述特性获取命令的数据指针中读取所述目标写入地址,并根据所述目标写入地址将所述完整配置表写入所述内存。
[0034] 可选地,在根据所述存放地址从所述内存中获取所述初始配置表之后,还包括:
[0035] 所述传输发起设备通过控制命令响应队列将执行所述特性设置命令的第一执行结果发送至所述主机设备;
[0036] 相应的,在根据所述目标写入地址将所述完整配置表写入所述内存之后,还包括:
[0037] 所述传输发起设备通过所述控制命令响应队列将执行所述特性获取命令的第二执行结果发送至所述主机设备。
[0038] 本发明还提供一种数据传输系统,包括主机设备、待传输设备和传输发起设备,所述待传输设备和所述传输发起设备均为PCIe设备,其中:
[0039] 所述主机设备,用于将所述待传输设备的初始配置表发送至所述传输发起设备;所述初始配置表中包含所述待传输设备的设备信息;根据所述传输发起设备返回的完整配置表中的传输配置信息配置目标设备,将所述完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至所述传输发起设备;
[0040] 所述传输发起设备,用于根据所述初始配置表中的设备信息在所述待传输设备中确定所述目标设备,在所述目标设备的初始配置表中填写传输配置信息得到所述完整配置表,并将所述完整配置表发送至所述主机设备;在确定所述完整配置表中的所述配置状态位为所述成功状态时,利用所述完整配置表与所述目标设备进行PCIe点对点数据传输;
[0041] 所述待传输设备,用于在被所述主机设备配置后,与所述传输发起设备进行所述PCIe点对点数据传输。
[0042] 可选地,所述传输发起设备,还用于根据所述目标设备的初始配置表判断所述目标设备是否需要使能;若是,则将所述初始配置表中预设的使能标志位更新为需要使能状态;从所述初始配置表中读取所述目标设备支持的中断类型,从所述中断类型中选择目标中断类型,并将所述目标中断类型填写至所述初始配置表;若所述目标中断类型为MSI中断,则将预设的中断配置信息填写至所述初始配置表;所述中断配置信息包括MSI中断地址、中断数据和中断个数;将完成填写的初始配置表设置为所述完整配置表。
[0043] 本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上述所述的数据传输方法。
[0044] 本发明提供一种数据传输方法,应用于数据传输系统,所述数据传输系统包括主机设备、待传输设备和传输发起设备,所述待传输设备和所述传输发起设备均为PCIe设备,所述方法包括:所述主机设备将所述待传输设备的初始配置表发送至所述传输发起设备;所述初始配置表中包含所述待传输设备的设备信息;所述传输发起设备根据所述设备信息在所述待传输设备中确定目标设备,在所述目标设备的初始配置表中填写传输配置信息得到完整配置表,并将所述完整配置表发送至所述主机设备;所述主机设备根据所述传输配置信息配置所述目标设备,将所述完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至所述传输发起设备;所述传输发起设备在确定所述配置状态位为所述成功状态时,利用所述完整配置表与所述目标设备进行PCIe点对点数据传输。
[0045] 可见,在本发明中,待传输设备的设备信息可由主机设备持有,并保存在对应的初始配置表中,主机设备可将初始配置表发送至传输发起设备,并由传输发起设备根据该表中的设备信息在待传输设备中确定目标设备,不仅便于传输发起设备定位目标设备,同时还可有效解决传输发起设备无法获取目标设备的设备信息的问题;在确定目标设备之后,传输发起设备可在目标设备的初始配置表中继续填写进行PCIe点对点数据传输所必要的传输配置信息,得到完整配置表,并将完整配置表回传至主机设备,由主机设备根据完整配置表中的传输配置信息配置目标设备,可有效解决传输发起设备无法对目标设备进行配置的问题;最后,主机设备在完成配置后,可将完整配置表中预设的配置状态位更新为成功状态,以使传输发起设备启动与目标设备的PCIe点对点数据传输,进而可为实现传输发起设备与目标设备之间的自主数据传输打下基础。本发明还提供一种数据传输系统及计算机可读存储介质,具有上述有益效果。

附图说明

[0046] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0047] 图1为本发明实施例所提供的一种数据传输方法的流程图;
[0048] 图2为本发明实施例所提供的一种完整配置表的示意图;
[0049] 图3为本发明实施例所提供的一种数据传输系统的结构框图。

具体实施方式

[0050] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051] 为有效配置目标端点设备,以确保传输发起设备能够自主地与目标端点设备进行PCIe点对点数据传输,本发明提供一种数据传输方法,可由主机设备帮助传输发起设备配置目标设备,以确保PCIe设备可实现设备间自主的点对点传输。请参考图1,图1为本发明实施例所提供的一种数据传输方法的流程图。该方法应用于数据传输系统,其中包括主机设备、待传输设备和传输发起设备。需要指出的是,待传输设备和传输发起设备均为PCIe设备。本发明实施例并不限定具体的PCIe设备,可参考PCIe设备的相关技术。本方法可以包括:
[0052] S101、主机设备将待传输设备的初始配置表发送至传输发起设备;初始配置表中包含待传输设备的设备信息。
[0053] 在本发明实施例中,主机设备可持有包含待传输设备的设备信息的初始配置表,并可将这些配置表发送至传输发起设备,以便后者利用该表选择目标设备以及进行相关配置操作。初始配置表中包含的设备信息为与待传输设备建立PCIe点对点传输所需的信息,例如可包含待传输设备在PCIe总线上的位置信息(PCI总线号、设备号和设备功能号)、PCI ID信息(Vendor ID厂商标识,Device ID设备标识,Revision ID版本标识,Class Code类型代码)、基地址寄存器值(BAR,Base Address Register)、可支持的中断信息等,可根据实际应用需求进行设定。需要说明的是,本发明实施例并不限定设备信息在初始配置表中的组织形式,可根据实际应用需求进行设定。本发明实施例也不限定主机设备可持有初始配置表的数量,可以理解的是该数量与接入主机设备的PCIe设备的数量相同。本发明实施例也不限定设置初始配置表的具体方式,例如可人工设置后写入到主机设备中,也可以由主机设备自动到待传输设备的配置空间中提取上述设备信息,并根据这些信息自动生成初始配置表。在本发明实施例中,为提高初始配置表的准确性及生成便捷性,该表可由主机设备利用从待传输设备配置空间中提取得到的设备信息自动生成。
[0054] 在一种可能的情况中,在主机设备将待传输设备的初始配置表发送至传输发起设备之前,还可以包括:
[0055] 步骤11:主机设备从待传输设备的配置空间中提取设备信息,并利用设备信息创建初始配置表。
[0056] 进一步,需要说明的是,本发明实施例并不限定主机设备与传输发起设备之间传递数据的具体方式,例如两设备可通过厂商自定义的PCIe设备主机接口进行通信;也可以对某种标准的PCIe主机接口进行扩展,例如可对NVMe接口(Non‑volatile Memory Express,非易失性内存主机控制器接口规范)或VirtIO接口(半虚拟化IO接口)进行扩展,以便两设备通过扩展后的标准PCIe接口进行通信,具体可根据实际应用需求进行设定。
[0057] S102、传输发起设备根据设备信息在待传输设备中确定目标设备,在目标设备的初始配置表中填写传输配置信息得到完整配置表,并将完整配置表发送至主机设备。
[0058] 显然,传输发起设备可通过初始配置表获取到待传输设备的设备信息,并根据该信息进行目标设备选择及配置表完善,即本发明实施例可通过主机设备的传递方式,可解决传输发起设备无法获取待传输设备的设备信息的问题。需要说明的是,本发明实施例并不限定传输发起设备如何利用设备信息筛选目标设备,可根据实际应用需求进行设定。
[0059] 进一步,为便于主机设备对目标设备进行传输初始化配置,传输发起设备还需根据设备信息对目标设备的初始配置表进行完善。具体的,只有在对待传输设备的命令寄存器进行使能配置,以及对该设备在传输过程中所需使用的中断配置信息进行配置后,该设备才可与传输发起设备进行数据传输;此外,待传输设备的设备信息中通常包含其是否需要被使能的信息,以及其可支持的中断类型信息,因此传输发起设备可根据目标设备的设备信息,在初始配置表中填写对应的使能配置信息及中断配置信息。为便于识别解析,初始配置表中可包含一个预设的使能标志位,传输发起设备在确定目标设备需要使能时,便可将该标志位更新为需要使能状态;而对于中断配置信息,初始配置表中可进一步包含目标中断类型和中断配置信息,以便传输发起设备将所需要的中断类型及中断配置信息填入初始配置表。需要说明的是,本发明实施例并不限定待传输设备可支持的中断类型,例如可以为MSI中断(Message Signal Interrupt,消息信号中断),也可以为MSI‑X中断(MSI增强中断),也可以同时包含上述两种中断;本发明实施例也不限定具体的中断配置信息,可参考中断的相关技术,例如对于MSI中断而言,中断配置信息可以为MSI中断地址、中断数据及中断个数。
[0060] 在一种可能的情况中,在目标设备的初始配置表中填写传输配置信息得到完整配置表,可以包括:
[0061] 步骤21:传输发起设备根据目标设备的初始配置表判断目标设备是否需要使能;若是,则进入步骤22;若否,则进入步骤23;
[0062] 步骤22:将初始配置表中预设的使能标志位更新为需要使能状态;
[0063] 步骤23:从初始配置表中读取目标设备支持的中断类型,从中断类型中选择目标中断类型,并将目标中断类型填写至初始配置表;
[0064] 步骤24:若目标中断类型为MSI中断,则将预设的中断配置信息填写至初始配置表;中断配置信息包括MSI中断地址、中断数据和中断个数;
[0065] 步骤25:将完成填写的初始配置表设置为完整配置表。
[0066] S103、主机设备根据传输配置信息配置目标设备,将完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至传输发起设备。
[0067] 相应的,主机设备在接收到传输发起设备返回的完整配置表后,便依照该表中的使能标志位、目标中断类型及中断配置信息对目标设备进行初始化配置。需要说明的是,本发明实施例并不限定主机设备与目标设备配置空间之间具体的交互过程,可参考PCIe的相关技术。
[0068] 在一种可能的情况中,主机设备根据传输配置信息配置目标设备,可以包括:
[0069] 步骤31:主机设备从传输配置信息中读取使能标志位、目标中断类型及中断配置信息;
[0070] 步骤32:若使能标志位为需要使能状态,则对目标设备的配置空间中的命令寄存器进行配置,以使能内存空间位和总线主控位;
[0071] 步骤33:若目标中断类型为MSI中断,则利用中断配置信息配置目标设备的MSI功能寄存器。
[0072] 关于命令寄存器(Command寄存器)、内存空间位(Memory Space)、总线主控位(Bus Master)及MSI功能寄存器(MSI Capability结构体)的具体内容及具体设置方法,请参考PCIe设备配置空间的相关技术。
[0073] 在完成配置之后,为便于主机设备向传输发起设备回传配置完毕的信息,本发明实施例还在初始配置表中预设了一个配置状态位。主机设备在完成初始化配置后,便可将该状态位更新为成功状态,以便传输发起设备依照该状态位的具体状态信息确定目标设备的初始化状态。
[0074] 为便于理解,请参考图2,图2为本发明实施例所提供的一种完整配置表的示意图,该配置表中包含如下信息:
[0075] 1、待传输设备在主机PCIe总线上的位置,包括PCI总线号(PCI Bus),设备号(Device)和设备功能号(Function)。该项信息作为待传输设备的标识符,用于区分各个目标设备。
[0076] 2、待传输设备的PCI ID,包括Vendor ID,Device ID,Revision ID,Class Code。这些ID信息可被传输发起设备用于判断待传输设备是否为所需的目标设备类型。
[0077] 3、待传输设备的中断类型支持信息,包括PCI设备标准所定义的MSI、MSI‑X兼容信息数据结构(MSI Capability和MSI‑X Capability)。
[0078] 4、待传输设备配置空间上的6个BAR寄存器值。从寄存器中可以获取目标设备的BAR空间在系统总线上的映射地址和BAR空间的属性,例如是否为64bit,是否为Memory空间。PCIe的P2P传输仅支持Memory(内存)空间,不支持IO(输入输出)空间。
[0079] 5、待传输设备每个BAR空间的长度。
[0080] 6、配置状态位,用于主机通知传输发起设备目标设备是否配置成功。
[0081] 7、待传输设备使能标志位,用于传输发起设备告诉主机该目标设备是否需要使能。
[0082] 8、中断使能类型,用于传输发起设备告诉主机目标设备是否使能中断和使能的中断类型。
[0083] 9、MSI中断信息,用于传输发起设备告诉主机目标设备MSI中断配置的具体信息。
[0084] 上述内容中,1 6项由主机设备中的P2P配置软件设置,而7 9向由传输发起设备设~ ~置。
[0085] S104、传输发起设备在确定配置状态位为成功状态时,利用完整配置表与目标设备进行PCIe点对点数据传输。
[0086] 相应的,传输发起设备在确定配置状态位为成功状态时,便可利用完整配置表与目标设备进行PCIe点对点数据传输。需要说明的是,本发明实施例并不限定PCIe点对点数据传输的具体过程,可参考PCIe点对点数据传输的相关技术。
[0087] 基于上述实施例,在本发明中,待传输设备的设备信息可由主机设备持有,并保存在对应的初始配置表中,主机设备可将初始配置表发送至传输发起设备,并由传输发起设备根据该表中的设备信息在待传输设备中确定目标设备,不仅便于传输发起设备定位目标设备,同时还可有效解决传输发起设备无法获取目标设备的设备信息的问题;在确定目标设备之后,传输发起设备可在目标设备的初始配置表中继续填写进行PCIe点对点数据传输所必要的传输配置信息,得到完整配置表,并将完整配置表回传至主机设备,由主机设备根据完整配置表中的传输配置信息配置目标设备,可有效解决传输发起设备无法对目标设备进行配置的问题;最后,主机设备在完成配置后,可将完整配置表中预设的配置状态位更新为成功状态,以使传输发起设备启动与目标设备的PCIe点对点数据传输,进而可为实现传输发起设备与目标设备之间的自主数据传输打下基础。
[0088] 基于上述实施例,下面对主机设备与传输发起设备之间的通信过程进行详细介绍。在一种可能的情况中,主机设备将待传输设备的初始配置表发送至传输发起设备,可以包括:
[0089] S201、主机设备构造第一控制命令,将第一控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;第一控制命令中包含初始配置表在主机设备的内存中的存放地址。
[0090] 本发明实施例采用NVMe接口及预设的控制命令(Admin命令)来处理主机设备与传输发起设备之间的通信,其中第一控制命令用于通知传输发起设备到主机设备的内存中提取所有的初始配置表,具体包含了该配置表在内存中的存放地址。传输发起设备在接收到第一控制命令之后,便可根据其中包含的存放地址前往主机设备提取初始配置表。需要说明的是,本发明实施例并不限定第一控制命令的形式,该命令既可以是在NVMe标准所定义的Admin命令的基础上扩展得到的命令,也可以是厂商自定义的Admin命令。为方便设置,本发明实施例将对NVMe标准所定义的Admin命令进行扩展,已得到本方法中所使用的控制命令。具体的,第一控制命令可以由特性设置命令(Set Feature)扩展而来,扩展方式可以为:将特性设置命令的功能标识符(Feature Identifier)设置为预设值,以便传输发起设备识别该命令;同时,将特性设置命令的PRP指针更改为上述存放地址,以便传输发起设备提取存放地址信息。
[0091] 进一步,由于采用NVMe接口进行数据传输,因此主机设备与传输发起设备应当遵守NVMe协议所规定的通信方式。具体的,主机设备应当将第一控制命令发送到控制命令提交队列(Admin SQ队列),并更新门铃寄存器(Doorbell)的状态值;而传输发起设备在检测到门铃寄存器发生状态更新时,便会自动从控制命令提交队列中提取第一控制命令。需要说明的是,本发明实施例并不限定控制命令提交队列的具体形式,可参考NVMe的相关技术。
[0092] S202、传输发起设备在检测到门铃寄存器的发生状态更新时,从控制命令提交队列提取第一控制命令,并根据存放地址从内存中获取初始配置表。
[0093] 由于第一控制命令基于特性设置命令扩展而来,因此传输发起设备也可根据具体的扩展方式对接收到的第一控制命令进行识别及信息提取。
[0094] 在一种可能的情况中,第一控制命令为特性设置命令,根据存放地址从内存中获取初始配置表,包括:
[0095] 步骤41:传输发起设备判断特性设置命令中的功能标识符是否为第一预设值;若是,则进入步骤42;若否,则丢弃该特性设置命令;
[0096] 步骤42:从特性设置命令的数据指针中读取存放地址,并根据存放地址从内存中获取初始配置表。
[0097] 当然,在完成初始配置表的获取之后,传输发起设备还可将执行结果返回给主机设备,以通知主机设备执行后续操作。具体的,传输发起设备可通过控制命令响应队列(Admin CQ队列)将特性设置命令的执行结果返回给主机设备。需要说明的是,本发明实施例并不限定控制命令响应队列的具体形式,可参考NVMe的相关技术。
[0098] 在一种可能的情况中,在根据存放地址从内存中获取初始配置表之后,还包括:
[0099] 步骤51:传输发起设备通过控制命令响应队列将执行特性设置命令的第一执行结果发送至主机设备。
[0100] 相应的,将完整配置表发送至主机设备,可以包括:
[0101] S301、主机设备构造第二控制命令,将第二控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;第二控制命令中包含完整配置表在内存中的目标写入地址。
[0102] 第二控制命令在本发明实施例中用于通知传输发起设备将已经完成填写的完整配置表写入主机设备的内存,具体包含该配置表在内存中的目标写入地址。关于第二控制命令具体形式的限定描述与第一控制命令的相关描述相同,此处不再赘述。具体的,第二控制命令可由特性获取命令(Get Feature)扩展而来,扩展方式可以为:将特性获取命令的功能标识符(Feature Identifier)设置为预设值,以便传输发起设备识别该命令;同时,将特性获取命令的PRP指针更改为上述目标写入地址,以便传输发起设备提取目标写入地址信息。
[0103] 同样,在传输第二控制命令时,主机设备与传输发起设备同样要遵守NVMe标准的规定。
[0104] S302、传输发起设备在检测到门铃寄存器的发生状态变化时,从控制命令提交队列提取第二控制命令,并根据目标写入地址将完整配置表写入内存。
[0105] 由于第二控制命令基于特性获取命令扩展而来,因此传输发起设备也可根据具体的扩展方式对接收到的第二控制命令进行识别及信息提取。
[0106] 在一种可能的情况中,第二控制命令为特性获取命令,根据目标写入地址将完整配置表写入内存,可以包括:
[0107] 步骤61:传输发起设备判断特性获取命令中的功能标识符是否为第二预设值;若是,则进入步骤62;若否,则丢弃该特性获取命令;
[0108] 步骤62:从特性获取命令的数据指针中读取目标写入地址,并根据目标写入地址将完整配置表写入内存。
[0109] 当然,在完成完整配置表的写入之后,传输发起设备还可将执行结果返回给主机设备,以通知主机设备执行后续操作。
[0110] 在一种可能的情况中,在根据目标写入地址将完整配置表写入内存之后,还可以包括:
[0111] 步骤71:传输发起设备通过控制命令响应队列将执行特性获取命令的第二执行结果发送至主机设备。
[0112] 基于上述实施例,本发明可采用NVMe接口及自定义的控制命令来处理主机设备与传输发起设备之间的通信,以保障初始配置表及完整配置表的有效传递。
[0113] 下面对本发明实施例提供的一种数据传输系统及计算机可读存储介质进行介绍,下文描述的数据传输系统及计算机可读存储介质与上文描述的数据传输方法可相互对应参照。
[0114] 请参考图3,图3为本发明实施例所提供的一种数据传输系统的结构框图,该系统可以包括:主机设备301、待传输设备302和传输发起设备303,待传输设备302和传输发起设备303均为PCIe设备,其中:
[0115] 主机设备301,用于将待传输设备302的初始配置表发送至传输发起设备303;初始配置表中包含待传输设备302的设备信息;根据传输发起设备303返回的完整配置表中的传输配置信息配置目标设备,将完整配置表中预设的配置状态位更新为成功状态,并将更新后的完整配置表发送至传输发起设备303;
[0116] 传输发起设备303,用于根据初始配置表中的设备信息在待传输设备302中确定目标设备,在目标设备的初始配置表中填写传输配置信息得到完整配置表,并将完整配置表发送至主机设备301;在确定完整配置表中的配置状态位为成功状态时,利用完整配置表与目标设备进行PCIe点对点数据传输;
[0117] 待传输设备302,用于在被主机设备301配置后,与传输发起设备303进行PCIe点对点数据传输。
[0118] 可选地,传输发起设备303,还用于根据目标设备的初始配置表判断目标设备是否需要使能;若是,则将初始配置表中预设的使能标志位更新为需要使能状态;从初始配置表中读取目标设备支持的中断类型,从中断类型中选择目标中断类型,并将目标中断类型填写至初始配置表;若目标中断类型为MSI中断,则将预设的中断配置信息填写至初始配置表;中断配置信息包括MSI中断地址、中断数据和中断个数;将完成填写的初始配置表设置为完整配置表。
[0119] 可选地,主机设备301,还用于从传输配置信息中读取使能标志位、目标中断类型及中断配置信息;若使能标志位为需要使能状态,则对目标设备的配置空间中的命令寄存器进行配置,以使能内存空间位和总线主控位;若目标中断类型为MSI中断,则利用中断配置信息配置目标设备的MSI功能寄存器。
[0120] 可选地,主机设备301,还用于从待传输设备302的配置空间中提取设备信息,并利用设备信息创建初始配置表。
[0121] 可选地,主机设备301,还用于构造第一控制命令,将第一控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;第一控制命令中包含初始配置表在主机设备301的内存中的存放地址;
[0122] 传输发起设备303,还用于在检测到门铃寄存器的发生状态更新时,从控制命令提交队列提取第一控制命令,并根据存放地址从内存中获取初始配置表;
[0123] 相应的,主机设备301,还用于构造第二控制命令,将第二控制命令发送至控制命令提交队列,并更新门铃寄存器的状态;第二控制命令中包含完整配置表在内存中的目标写入地址;
[0124] 传输发起设备303,还用于在检测到门铃寄存器的发生状态变化时,从控制命令提交队列提取第二控制命令,并根据目标写入地址将完整配置表写入内存。
[0125] 可选地,传输发起设备303,还用于判断特性设置命令中的功能标识符是否为第一预设值;若是,则从特性设置命令的数据指针中读取存放地址,并根据存放地址从内存中获取初始配置表;
[0126] 相应的,传输发起设备303,还用于判断特性获取命令中的功能标识符是否为第二预设值;若是,则从特性获取命令的数据指针中读取目标写入地址,并根据目标写入地址将完整配置表写入内存。
[0127] 可选地,传输发起设备303,还用于通过控制命令响应队列将执行特性设置命令的第一执行结果发送至主机设备301;
[0128] 相应的,传输发起设备303,还用于通过控制命令响应队列将执行特性获取命令的第二执行结果发送至主机设备301。
[0129] 本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的数据传输方法的步骤。
[0130] 由于计算机可读存储介质部分的实施例与数据传输方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见数据传输方法部分的实施例的描述,这里暂不赘述。
[0131] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0132] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0133] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0134] 以上对本发明所提供的一种数据传输方法、系统及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。