一种DMA通道调度方法、装置及主机与流程
未命名
08-07
阅读:62
评论:0

一种dma通道调度方法、装置及主机
技术领域
1.本发明实施例涉及通信技术领域,尤其涉及一种dma通道调度方法、装置及主机。
背景技术:
2.随着科技和社会经济的发展,服务器、个人计算机等各种具备通信和数据处理能力的主机广泛应用于人们的生活中。与此同时,主机的处理速度越来越快,主机与外设之间通信的带宽需求也越来越高。在此背景下,具备高速数据传输能力的pcie((peripheral component interconnect express,高速串行计算机扩展总线标准)总线出现并得以推广。
3.更进一步地,在一些场景中,为保证主机的运算能力得到充分利用、主机共享等需求,同一主机可支持多个相同pcie设备共同运行,为提高主机和pcie设备之间的通信速度,每个pcie设备上都设置有多个dma(direct memory access,直接内存访问)通道,以实现pcie设备和主机之间的高速数据传输。
4.然而,对于支持多个相同pcie设备的主机,虽然主机的运算能力得到提升,但与之对应的是,已有技术中用户手动实现多个pcie设备之间以及多个dma通道的调度,调度效率低且用户体验不好。
技术实现要素:
5.本发明实施例旨在至少在一定程度上解决相关技术中的技术问题之一。
6.为此,本发明实施例公开一种dma通道调度方法、装置及主机,利用配置文件中的通道记录信息记录dma通道的使用情况,sdk可根据配置文件中通道记录信息为会话自动分配pcie设备编号和dma通道独立编号,实现了多个pcie设备之间以及多个dma通道的自动调度,调度效率高,用户体验好。
7.在第一方面中,本发明实施例提供一种dma通道调度方法,应用于主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述方法包括:应用程序调用sdk打开会话;所述sdk执行dma通道调度操作,所述dma通道调度操作包括:获取与所述会话对应的当前进程标识符和当前线程标识符;获取配置文件;其中,所述配置文件是由pcie设备的驱动程序生成的,所述配置文件包括:n*t条通道记录信息,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符;判断所述配置文件中是否存在目标记录信息;其中,所述目标记录信息为含有所述当前进程标识符和所述当前线程标识符的通道记录信息;若所述配置文件中存在所述目标记录信息,将所述目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给所述会话;若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当
前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。
8.在第一方面的一具体实施例中,各条通道记录信息按照dma通道编号的大小在所述配置文件中顺序排布,dma通道编号与pcie设备编号和dma通道独立编号之间的对应关系如下:devno = (gchannel-1) % n;devchanle = (gchannel-1)/ n;其中,gchannel表示dma通道编号,devno表示pcie设备编号,devchanle表示dma通道独立编号。
9.在第一方面的一具体实施例中,判断所述配置文件中是否存在目标记录信息,包括:读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符,i的初始值取1;判断第i条通道记录信息中的进程标识符是否等于所述当前进程标识符,线程程标识符是否等于所述当前线程标识符;若第i条通道记录信息中的进程标识符等于所述当前进程标识符,且线程标识符等于所述当前线程标识符,确定所述配置文件中存在所述目标记录信息;若第i条通道记录信息中的进程标识符不等于所述当前进程标识符,或线程标识符不等于所述当前线程标识符,取i=i+1,返回sdk读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤;若从i=1到i=n*t,任一条通道记录信息中的进程标识符不等于所述当前进程标识符,或线程标识符不等于所述当前线程标识符,则确定所述配置文件中不存在所述目标记录信息。
10.在第一方面的一具体实施例中,所述 dma通道调度操作还包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为空,判断第i条通道记录信息是否为第一个进程标识符和线程程标识符为空的通道记录信息;若第i条通道记录信息为第一个进程标识符和线程程标识符为空的通道记录信息,标记第i条通道记录信息的dma通道编号为第一通道编号;相应的,若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话,包括:若所述配置文件中不存在所述目标记录信息,将所述第一通道编号对应的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,将所述第一通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。
11.在第一方面的一具体实施例中,所述dma通道调度操作还包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为非空,判断第i条通道
记录信息中的进程标识符和线程程标识符是否正在运行;若第i条通道记录信息中的进程标识符和线程程标识符正在运行,则执行判断第i条通道记录信息中的进程标识符是否等于所述当前进程标识符,线程程标识符是否等于所述当前线程标识符的步骤;若第i条通道记录信息中的进程标识符和线程程标识符不在运行,则将第i条通道记录信息中的进程标识符和线程程标识符置零,且将置零后的第i条通道记录信息回写到所述配置文件;若i≠n*t,取i=i+1,返回sdk读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤。
12.在第一方面的一具体实施例中,所述dma通道调度操作还包括:若所述配置文件中不存在所述目标记录信息,且不存在进程标识符和进程标识符为空的通道记录信息,将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话;其中,预设dma通道编号对应的dma通道独立编号执行加锁运算。
13.在第一方面的一具体实施例中,所述dma通道调度操作还包括:判断位于全局数组中的、与分配的pcie设备编号对应的设备句柄是否为空;若分配的pcie设备编号对应的设备句柄为空,遍历所述全局数组,将所述全局数组中第一个非空的设备句柄作为与分配的pcie设备编号对应的设备句柄;将dma通道独立编号置零。
14.在第一方面的一具体实施例中,所述方法还包括:所述sdk还执行如下操作:在全局数组中查找与分配的pcie设备编号对应的设备句柄;将查找到的设备句柄和dma通道独立编号保存到会话对象中;应用程序调用所述sdk,通过所述会话对象中的设备句柄和dma通道独立编号与pcie设备进行数据交互;在出现数据交互失败时,根据失败原因确定是否是对应的pcie设备硬件损坏,若是,则将所述会话对应的设备句柄置空,并把所述会话清空。
15.在第一方面的一具体实施例中,所述配置文件中还包括:设备记录信息,所述设备记录信息包括:pcie设备个数n和每个pcie设备的通道个数t,所述方法还包括:所述应用程序调用sdk执行如下操作:通过设备节点名称打开所有的pcie设备;对于打开成功的pcie设备,将其设备句柄保存到全局数组中;在打开成功的pcie设备个数不等于n时,更新所述配置文件中的n值。
16.在第一方面的一具体实施例中,所述pcie设备为:pcie密码卡。
17.在第二方面中,本发明实施例还公开一种dma通道调度装置,应用于主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述装置包括:应用程序模块,用于调用sdk模块打开会话;sdk模块,用于执行dma通道调度操作,所述dma通道调度操作包括:获取与所述会话对应的当前进程标识符和当前线程标识符;获取配置文件;其中,所述配置文件包括:n*t条通道记录信息,每条通道记录信息
包括:dma通道编号、进程标识符和线程标识符;判断所述配置文件中是否存在目标记录信息;其中,所述目标记录信息为含有所述当前进程标识符和所述当前线程标识符的通道记录信息;若所述配置文件中存在所述目标记录信息,将所述目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给所述会话;若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。
18.在第三方面中,本发明实施例还公开一种主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述主机用于执行第一方面任一实施例所述的dma通道调度方法。
19.本发明实施例的有益效果:本发明实施例提供的一种dma通道调度方法、装置及主机,应用程序调用sdk打开会话;sdk判断配置文件中是否存在目标记录信息;若配置文件中存在目标记录信息,将目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话;若配置文件中不存在目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。
20.本发明实施例的技术方案,利用配置文件中的通道记录信息记录dma通道的使用情况,sdk可根据配置文件中通道记录信息为会话自动分配pcie设备编号和dma通道独立编号,实现了多个pcie设备之间以及多个dma通道的自动调度,调度效率高,用户体验好。
附图说明
21.图1为本发明实施例提供的一种计算机系统的结构示意图;图2为本发明实施例提供的一种dma通道调度方法的流程示意图;图3为本发明实施例提供的一种sdk执行dma通道调度操作的流程示意图;图4a为本发明实施例提供的一种配置文件的格式示意图;图4b为本发明实施例提供的一种设备记录信息的格式示意图;图4c为本发明实施例提供的一种通道记录信息的格式示意图;图5为本发明实施例提供的一种配置文件初始化的流程示意图;图6为本发明实施例提供的一种dma通道编号与pcie设备和dma通道之间对应关系的示意图;图7为本发明实施例提供的另一种dma通道调度方法的流程示意图;图8为本发明实施例提供的一种dma通道调度装置的结构示意图。
具体实施方式
22.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实
施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
23.为方便理解,首先对本发明实施例的硬件环境进行介绍。参见图1所示,为本发明实施例提供的一种计算机系统的结构示意图,该计算机系统构成本发明实施例的硬件环境。如图1所示,该计算机系统包括:主机10和n0个pcie设备20,每个pcie设备20内部设置有t个dma通道。每个pcie设备20通过pcie总线和主机连接。其中,在实际应用中,主机10可以为个人计算机、服务器等具备通信能力和数据处理能力的电子设备。pcie设备20可以是pcie密码卡,pcie网卡等设置有pcie接口的电子设备。每个pcie设备20可通过pcie接口插接在主机上。
24.在介绍完本发明实施例的硬件环境之后,这里再对本发明实施例的技术构思进行简要说明:具体地,首先,位于主机中的pcie设备驱动程序建立配置文件,并通过探测函数枚举识别出连接在主机上的pcie设备总数n,基于枚举得到的pcie设备总数n和每个pcie设备上dma通道个数t计算出dma通道的总数n*t。然后为n*t个dma通道进行统一编号,得到n*t个dma通道通道编号,对于每个dma通道编号,在配置文件中存入对应的通道记录信息,完成配置文件的初始化。其中,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符。每条通道记录信息中的进程标识符和线程标识符的初始值设置为零,也即进程标识符和线程标识符为空。一般地,通道记录信息中的dma通道编号从1开始,逐一递增,各条通道记录信息按照dma通道编号的大小顺序写入配置文件,但本发明实施例并不限于此,只要通道记录信息和真实的dma通道建立确定的对应关系即可。
25.进一步地,在主机内部创建sdk(software development kit,软件开发工具包),应用程序可调用sdk打开会话,sdk在每次打开会话时,将配置文件中一个进程标识符和线程标识符为空的通道记录信息分配给本次会话,将本次打开会话时产生的进程标识符和线程标识符写入所分配的通道记录信息,以表示该通道记录信息对应的dma通道已被占用,后续应用程序利用分配的通道记录信息与对应的dma通道和pcie设备进行交互。如此,sdk可通过配置文件记录dma通道的占用情况,并将空闲的dma通道(对应的个进程标识符和线程标识符为空)分配给新的会话,实现dma通道的自动分配。
26.在介绍完本发明实施例的技术构思之后,下面将通过具体实施例对本发明实施例提供的一种dma通道调度方法及主机的操作流程、系统组成和/或功能模块等进行详细的说明。
27.参见图2所示,为本发明实施例提供的一种dma通道调度方法的流程示意图。其中,图2所示dma通道调度方法应用于主机,主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道。此处需要说明的是,各pcie设备是同一型号的pcie设备,n个pcie设备是sdk成功打开的pcie设备,一般也是pcie设备驱动程序枚举到的pcie设备,通常n=n0,但存在pcie设备与主机接触不良等情形下,n<n0。
28.具体地,图2所示的dma通道调度方法包括:在步骤s210中,应用程序调用sdk打开会话。
29.具体地,应用程序可以为需要用到pcie设备功能的任一应用程序,也即需要用到pcie设备功能的任一应用程序均能够执行图2所示的dma通道调度方法。一般地,应用程序通过api(application programming interface,应用程序接口)接口实现sdk的调用,以打
开会话。需要说明的是,图2所示实施例对应的是同一会话。
30.在步骤s220中,sdk执行dma通道调度操作。
31.具体地,sdk打开会话后,执行dma通道调度操作,以为打开的会话分配dma通道。
32.进一步地,这里参见图3对sdk执行的dma通道调度操作进行更为细节的说明。
33.参见图3所示,为本发明实施例提供的一种sdk执行dma通道调度操作的流程示意图。dma通道调度操作包括:在步骤s2201中,获取与会话对应的当前进程标识符和当前线程标识符。
34.具体地,当前进程标识符和当前线程标识符也即该会话在首次打开后,由操作系统产生的进程标识符和线程标识符。
35.在步骤s2202中,获取配置文件。
36.其中,配置文件是由pcie设备的驱动程序生成的。在本发明实施例中,配置文件包括:n*t条通道记录信息,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符。由于每条通道记录信息包括进程标识符和线程标识符,根据进程标识符和线程标识符的取值可确定dma通道的使用情况,所以配置文件记录了dma通道的使用情况。
37.需要说明的是:实际应用中,配置文件中还可以包括其他信息。如在本发明实施例的一种具体实施方式中,配置文件中还可以包括:设备记录信息。其中,设备记录信息包括:pcie设备个数n和每个pcie设备的通道个数t。此外,在一些实施方式中,通道记录信息还可以包括通道状态等其他信息,设备记录信息还可以包括设备参数等其他信息。特别地,在一些实施例中,这些其他信息可以是空的,便于用户根据实际情况灵活配置,如用户可灵活配置通道可不可用,哪些应用程序可用等。
38.为更加直观的理解配置文件,这里举一具体实施例对配置文件的内容和初始化过程进行说明。
39.参见图4a所示,该配置文件中共有n*t+1条信息,其中,第1条信息为设备记录信息,记录了pcie设备个数n和每个pcie设备的dma通道个数t,第2条至第n*t+1条信息为通道记录信息,记录了每条通道记录信息的dma通道编号、进程标识符和线程标识符。
40.需要说明的是:图4a中第1条信息中的“0”表征其他信息,可为空。第2条至第n*t+1条信息中第一列为dma通道编号,第二列为进程标识符,第三列为线程标识符。在实际应用中,可分别为每个dma通道编号、每个线程标识符和每个进行标识符分配4个字节,为n和t分配4个字节,如果配置文件中还有其他信息,可根据实际需求灵活分配其他信息所占字节数的多少。
41.另外,在实际应用中,设备记录信息和通道记录信息的格式可以是不一样的。参见图4b和图4c所示,分别给出了设备记录信息和通道记录信息的一种具体格式。
42.进一步地,对配置文件初始化的过程进行介绍。参见图5所示,为本发明实施例提供的配置文件初始化的流程示意图。
43.具体地,首先,向配置文件中写入第1条设备记录信息,信息格式(n,t,0);然后,取i=1,在i>n*t不成立时,往配置文件中写入一条通道记录信息(did=i,pid=0,tid=0);取i=i+1,再次判断i>n*t不成立是否成立,在不成立时,继续执行往配置文件中写入一条通道记录信息(did=i,pid=0,tid=0)的步骤,直至i>n*t成立时,退出,完成配置文件的初始化。
44.还需要说明的是,配置文件中的设备记录信息是为了后续sdk根据需要获取dma通
道的总个数n*t,pcie设备个数n等信息,在其他的一些实施例中,配置文件中也可以没有设备记录信息,例如,设备记录信息单独存储,又例如,通过遍历计算配置文件中通道记录信息,获知n*t的取值。此外,即使配置文件中有设备记录信息,设备记录信息也可以不位于第一条的位置,如设备记录信息也可以位于最后一条的位置。
45.在步骤s2203中,判断配置文件中是否存在目标记录信息。
46.其中,目标记录信息为含有当前进程标识符和当前线程标识符的通道记录信息。配置文件可能含有目标记录信息的原因在于部分会话需要周期性的多次执行,某一会话周期性执行时,其对应的进程标识符和线程标识符并不会被销毁,而是在该会话完全结束之前,一直保存在配置文件中。
47.具体地,若配置文件中存在目标记录信息,则执行步骤s2204,若配置文件中不存在目标记录信息,则执行步骤s2205。
48.在步骤s2204中,将目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给会话。
49.其中,与主机通信连接的每个pcie设备对应一个pcie设备编号,每个pcie设备上设置的t个dma通道独立编号。dma通道编号与pcie设备编号和dma通道独立编号存在唯一确定的对应关系,根据该对应关系可确定出目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号,也即确定出此次会话使用的pcie设备以及dma通道。
50.这里进一步对dma通道编号与pcie设备编号和dma通道独立编号之间的对应关系进行说明,在本发明实施例的一具体实施方式中,各条通道记录信息按照dma通道编号的大小在配置文件中顺序排布,dma通道编号与pcie设备编号和dma通道独立编号之间的对应关系如下:devno = (gchannel-1) % n;devchanle = (gchannel-1)/ n;其中,gchannel表示dma通道编号,devno表示pcie设备编号,devchanle表示dma通道独立编号。该具体实施方式中,pcie设备编号从0开始,每个pcie设备对应额dma通道独立编号也从0开始。 %表示取余运算,/表示除法运算。
51.这里以有3个pcie设备,每个pcie设备有6个dma通道为例进行举例说明,dma通道编号与pcie设备和dma通道之间的对应关系如图6所示。
52.采用该具体实施方式,随着配置文件的顺序读取,dma通道编号顺序增加,在分配dma通道时,可顺序使用不同pcie设备的同一dma通道,相同dma通道独立编号对应的dma通道使用完之后,再使用下一组相同dma通道独立编号对应的dma通道,在一定程度上保证pcie设备的负载均衡,同时能够最大限度的发挥每个pcie设备的性能。
53.需要补充说明的是:dma通道编号与pcie设备编号和dma通道独立编号之间还可以存在其他的对应关系,如采用将一个pcie设备的dma通道利用完后,再利用下一个pcie设备的dma通道进行通信。
54.在步骤s2205中,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。
55.具体地,通道记录信息的进程标识符和进程标识符为空,即表明该通道记录信息对应的dma通道未被使用,因此可直接分配给会话使用。此外,具体选择通道记录信息时,可在进程标识符和进程标识符为空的通道记录信息中随机选择,也可按照通道记录信息对应的dma通道编号的大小顺序选择。
56.进一步地,在为会话分配过pcie设备编号和dma通道独立编号后,通过与dma通道独立编号对应的dma通道,应用程序可调用sdk与相应的pcie设备进行数据交互。其中,数据交互的内容以具体的pcie设备相关。以pcie设备为pcie密码卡为例,pcie设备与主机的数据交互可提供加解密、数字签名和验签等服务。主机与pcie设备的数据交互的具体技术与本发明实施例的技术构思不相关,可参见已有技术,此处不再赘述。
57.需要说明的是,每打开一个会话,都可以执行本发明实施例提供的dma通道调度方法,也即本发明实施例不限制会话数量,即不限制同时在线用户的数量。
58.本发明实施例提供的dma通道调度方法,应用程序调用sdk打开会话;sdk判断配置文件中是否存在目标记录信息;若配置文件中存在目标记录信息,将目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话;若配置文件中不存在目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。本发明实施例的技术方案,利用配置文件中的通道记录信息记录dma通道的使用情况,sdk可根据配置文件中通道记录信息为会话自动分配pcie设备编号和dma通道独立编号,实现了多个pcie设备之间以及多个dma通道的自动调度,调度效率高,用户体验好。
59.进一步地,在本发明实施例的一种具体实施方式e1中,步骤s2203可以包括:读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符,i的初始值取1;判断第i条通道记录信息中的进程标识符是否等于当前进程标识符,线程程标识符是否等于当前线程标识符;若第i条通道记录信息中的进程标识符等于当前进程标识符,且线程标识符等于当前线程标识符,确定配置文件中存在目标记录信息;若第i条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于当前线程标识符,取i=i+1,返回sdk读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤;若从i=1到i=n*t,任一条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于所述当前线程标识符,则确定配置文件中不存在目标记录信息。
60.需要说明的是,第i条通道记录信息中的进程标识符不等于当前进程标识符,且线程标识符不等于当前线程标识符的情形也包括在第i条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于当前线程标识符的情形中。此外,在另一些实施方式中,也可以从最后一条通道记录信息开始查找目标通道记录信息。
61.更进一步地,在本发明实施例的一种具体实施方式e2中,步骤s220还可以包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为空,判断第i条通道记录信息是否为第一个进程标识符和线程程标识符为空的通道记录信息;若第i条通道记录信息为第一个进程标识符和线程程标识符为空的通道记录信息,标记第i条通道记录信息的dma通道编号为第
一通道编号,若第i条通道记录信息不为第一个进程标识符和线程程标识符为空的通道记录信息,且i≠n*t,取i=i+1,返回sdk读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤。
62.相应的,步骤s2205可以包括:若配置文件中不存在目标记录信息,将第一通道编号对应的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,将第一通道编号对应的pcie设备编号和dma通道独立编号分配给会话。
63.采用该具体实施方式e2,可将第一通道编号对应的pcie设备编号和dma通道独立编号分配给会话。如此,可将空闲的dma通道按照设定的顺序分配给会话,使得最终各dma通道按照用户设定顺序分配,更好地满足用户需求。以图6为例,假如前6个会话对应的dma通道编号为1至6,在第7个会话到来时,如第3个会话的dma通道已释放,则第7个会话将会分配给dma通道编号为3的dma通道,可保证各pcie设备的负载动态均衡。
64.可以理解,该具体实施方式e2,发生在具体实施方式e1中读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符之后,至于其与具体实施方式e1中其他步骤的先后顺序,则可以根据具体的设计需求而定,没有固定的先后顺序。
65.具体的,当该具体实施方式e2位于具体实施方式e1中判断第i条通道记录信息中的进程标识符是否等于当前进程标识符,线程程标识符是否等于当前线程标识符之前时,可以提前排除由于dma通道空闲而造成的第i条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于当前线程标识符的情况。
66.当该具体实施方式e2位于具体实施方式e1中确定第i条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于当前线程标识符之后时,可以进一步确定第i条通道记录信息中的进程标识符不等于当前进程标识符,或线程标识符不等于当前线程标识符的情况是否是由于dma通道空闲造成的。
67.进一步地,在本发明实施例的一种具体实施方式e3中,步骤s220还可以包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为非空,判断第i条通道记录信息中的进程标识符和线程程标识符是否正在运行;若第i条通道记录信息中的进程标识符和线程程标识符正在运行,则执行判断第i条通道记录信息中的进程标识符是否等于当前进程标识符,线程程标识符是否等于当前线程标识符的步骤;若第i条通道记录信息中的进程标识符和线程程标识符不在运行,则将第i条通道记录信息中的进程标识符和线程程标识符置零,且将置零后的第i条通道记录信息回写到配置文件;若i≠n*t,取i=i+1,返回sdk读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤。
68.采用该具体实施方式e3,通过轮询的方式将进程标识符和线程程标识符不在运行的通道记录信息中的进程标识符和线程程标识符置零,使得异常的线程对应的通道记录信息及时释放,有利于资源的充分利用。此外,在实际使用中,也可以在第i条通道记录信息中的进程标识符和线程程标识符置零后,判断第i条通道记录信息是否为第一个进程标识符和线程程标识符为空的通道记录信息,如是,则对第i条通道记录信息的dma通道编号进行
标记。当然,在另一些实施方式中,也可以不执行判断第i条通道记录信息是否为第一个进程标识符和线程程标识符为空的通道记录信息的步骤。
69.另外,该具体实施方式e3发生在具体实施方式e1中读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符之后,判断第i条通道记录信息中的进程标识符是否等于当前进程标识符,线程程标识符是否等于当前线程标识符之前,在实际使用中,若第i条通道记录信息中的进程标识符和线程程标识符至少一个为空,且i≠n*t,取i=i+1,则返回sdk读取配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤,而无需继续判断第i条通道记录信息中的进程标识符是否等于当前进程标识符,线程程标识符是否等于当前线程标识符,从而可以节约步骤,加快判断流程。
70.进一步地,在本发明实施例的一种具体实施方式e4中,步骤s220还可以包括:若配置文件中不存在目标记录信息,且不存在进程标识符和进程标识符为空的通道记录信息,将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话,后续利用对应的dma通道进行数据交互;其中,预设dma通道编号对应的dma通道独立编号执行加锁运算。
71.这里对预设dma通道编号进行说明,在实际应用中,可以将某一个dma通道编号设置为预设dma通道编号。以图6为例,将dma通道编号为1的dma通道编号设置为预设dma通道编号。在打开的会话数量很多dma通道被占用完毕时,dma通道编号为1的dma通道编号被共用,也即pcie设备编号为0的pcie设备的0号dma通道被共用。该情形下,pcie设备编号为0的pcie设备的0号dma通道需要进行加锁运算,实现分配给该dma通道的会话依次使用该dma通道。相应的,其他dma通道则无需进行加锁运算,可以在一定程度上提高其他dma通道运算效率。
72.需要说明的是,预设dma通道编号也可以为多个,并设置各预设dma通道编号的优先级。进一步地,可优先分配优先级高的预设dma通道编号,在出现优先级高的预设dma通道编号对应的pcie设备损坏等情形时,可使用次优先级高的预设dma通道编号进行递补。
73.需要补充说明的是,将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话的方式有两种。一种是在预设dma通道编号对应的线程标识符和进程标识符释放时,将预设dma通道编号对应的线程标识符和进程标识符修改为当前进程标识符和当前线程标识符,然后将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。另一种是预设dma通道编号对应的线程标识符和进程标识符被写入一次之后,其进程标识符和线程标识符不再变化,只要配置文件中不存在目标记录信息,且不存在进程标识符和进程标识符为空的通道记录信息,直接将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。显而易见的是,第二种情形下,如果将具体实施方式e3和e4结合执行,具体实施方式e3中的步骤“若第i条通道记录信息中的进程标识符和线程程标识符不在运行,则将第i条通道记录信息中的进程标识符和线程程标识符置零,且将置零后的第i条通道记录信息回写到配置文件”从i=2开始执行。
74.采用该具体实施方式e4,能够保证前n*t个会话,sdk为每个会话自动分配一个dma通道,保证一个会话使用一个dma通道,后续的会话共用预设dma通道编号对应的dma通道,保证除预设dma通道编号对应的dma通道外的其他dma通道的运算效率,也保证了n个pcie设
备整体的运算的效率。
75.进一步地,在本发明实施例的一种具体实施方式e5中,步骤s220中为会话分配pcie设备编号和dma通道独立编号后,还可以包括:判断位于全局数组中的、与分配的pcie设备编号对应的设备句柄是否为空;若分配的pcie设备编号对应的设备句柄为空,遍历全局数组,将全局数组中第一个非空的设备句柄作为与分配的pcie设备编号对应的设备句柄;将dma通道独立编号置零。
76.具体地,一个应用程序在打开时,为该应用程序分配进程,并建立对应的全局数组。全局数组具体建立方式为:应用程序调用sdk执行操作:通过设备节点名称打开所有的pcie设备;对于打开成功的pcie设备,将其设备句柄保存到全局数组中。其中,设备节点名称与pcie设备编号一一对应,设备节点名称与设备句柄也一一对应,因此,pcie设备编号和设备句柄也一一对应。
77.由于在设备句柄对应的pcie设备出现硬件问题时,设备句柄为空。因此可根据pcie设备编号在全局数组中查找对应的设备句柄,并判断设备句柄是否为空,以检测pcie设备是否出现硬件问题。
78.进一步地,在该具体实施方式e5中,可将各pcie设备中dma通道独立编号为零的dma通道作为共享dma通道,一旦出现设备句柄为空的pcie设备,可将全局数组中第一个非空的设备句柄作为与分配的pcie设备编号对应的设备句柄;将dma通道独立编号置零。此外,共享dma通道需要执行加锁运算。
79.采用该具体实施方式e5,可在为会话分配pcie设备编号和dma通道独立编号后,自动检测出现硬件问题的pcie设备,且在为会话分配的pcie设备出现硬件问题时,及时为该会话分配新的设备句柄(相当于重新分配了pcie设备编号)和dma通道独立编号,以确保会话的正常进行,进而使得出现硬件问题的pcie设备对用户无感不影响用户使用,提高用户体验。
80.进一步地,在本发明实施例的一种具体实施方式e6中,本发明实施例的dma通道调度方法还可以包括:sdk执行dma通道调度操作后,还执行如下操作:在全局数组中查找与分配的pcie设备编号对应的设备句柄;将查找到的设备句柄和dma通道独立编号保存到会话对象中;应用程序调用sdk,通过会话对象中的设备句柄和dma通道的独立编号与pcie设备进行数据交互。在实际应用中,pcie设备不同,数据交互的内容不同,以pcie设备为pcie密码卡为例,交互的数据可以是对称运算数据、非对称运算数据、摘要数据等。其中,sdk根据会话对象中的设备句柄和dma通道的独立编号可确定数据交互使用的dma通道。
81.进一步地,在出现数据交互失败时,根据失败原因确定是否是对应的pcie设备硬件损坏,若是,则将会话对应的设备句柄置空,并把会话清空。其中,sdk可根据pcie设备反馈的错误编码等信息,确定数据交互失败的原因,确定pcie设备是否出现硬件损坏问题。这里举例说明,如pcie设备反馈的错误编码表示权限不足,表明是配置问题,又如pcie设备没有响应,可确定pcie设备出现硬件问题。
82.采用该具体实施方式e6,及时将出现硬件损坏的pcie设备的设备句柄置空,以保证下次打开会话不再分配到硬件损坏的pcie设备的设备句柄。
83.进一步地,在具体实施方式e6的基础上,根据失败原因确定不是对应的pcie设备
硬件损坏,而是配置问题的时候,则将会话对应的设备句柄置空,并把会话清空,同时,提醒用户修改配置。
84.进一步地,在本发明实施例的一种具体实施方式e7中,配置文件中还可以包括:设备记录信息,设备记录信息包括:pcie设备个数n和每个pcie设备的通道个数t,本发明实施例的dma通道调度方法还可以包括:应用程序调用sdk执行如下操作:通过设备节点名称打开所有的pcie设备;对于打开成功的pcie设备,将其设备句柄保存到全局数组中;在打开成功的pcie设备个数不等于n时,更新配置文件中的n值。
85.具体地,这里用totaldevnum变量表示打开成功的pcie设备个数,用gdevicehandle[]表示全局数组。sdk通过设备节点名称打开所有的设备,如果打开设备成功则获取设备句柄,并把得到的设备句柄保存在全局数组gdevicehandle[]中,把totaldevnum变量加1。sdk判断打开成功的pcie设备个数totaldevnum和枚举的pcie设备个数n是否一致,如果不一致,把totaldevnum赋值给n,并修改配置文件中的n值。
[0086]
采用该具体实施方式e7,在一个应用程序打开,建立设备句柄的全局数组的过程中,比较打开成功的pcie设备总数和驱动程序枚举到的pcie设备总数,且在打开成功的pcie设备总数和驱动程序枚举到的pcie设备总数不一致时,及时修改配置文件中的n值,以避免不可用pcie设备后续被分配给会话。
[0087]
进一步地,为更直观地呈现前述各实施例组合得到的dma通道调度方法,这里举一个较优的具体实施例进行说明。参见图7所示,为本发明实施例提供的另一种dma通道调度方法的流程示意图。图7所示实施例中以did表示dma通道编号,pid表示进程标识符,tid表示线程标识符,cpid表示当前进程标识符,ctid表示当前线程标识符。配置文件包括n*t条通道记录信息,1条设备记录信息,且设备记录信息位于第1条,第1条通道记录信息中的dma通道编号为预设dma通道编号,通道记录信息和设备记录信息统称为记录信息。图7所示dma通道调度方法包括:在步骤s701中,获取与会话对应的cpid和ctid。
[0088]
在步骤s702中,从配置文件读取第1条记录信息,并解析获取pcie设备的个数n,每个pcie设备的dma通道个数t,以及dma通道总个数n*t。
[0089]
在步骤s703中,从配置文件中读取第j条记录信息,并解析获取本条记录信息中的pid、tid以及did。其中,j的初始值取2。
[0090]
在步骤s704中,判断pid和tid是否为0,如果为0,执行步骤s707,否则执行步骤s705。
[0091]
在步骤s705中,判断pid和tid是否正在运行,如果是执行步骤s709,否则执行步骤s706。
[0092]
在步骤s706中,将pid和tid置0,并回写到配置文件对应的位置。
[0093]
在步骤s707中,判断本条记录信息的位置是否为第1个pid和tid为0的位置,如果是执行步骤s708,否则执行步骤s711。
[0094]
在步骤s708中,记录下本条记录信息记录的did,记作fdid,继续执行步骤s711。
[0095]
在步骤s709中,判断cpid是否等于pid,且ctid是否等于tid,如果均相等执行步骤s710,否则执行步骤s711。
[0096]
在步骤s710中,记录下本条记录信息记录的did,记作cdid,继续执行步骤s711。
[0097]
在步骤s711中,判断本条记录信息是否为最后一条记录信息,如果是最后一条记录信息,则执行步骤s712,否则取j=j+1,返回步骤s703。
[0098]
在步骤s712中,判断cdid是否被赋值,如果是,把cdid标记为与会话对应的记录信息,否则执行步骤s713。其中,步骤s710即为cdid被赋值过程。
[0099]
在步骤s713中,判断fdid是否被赋值,如果是,把fdid标记为与会话对应的记录信息后执行步骤s714,否则执行步骤s715。其中,步骤s708即为fdid被赋值过程。
[0100]
在步骤s714中,将配置文件中与会话对应的记录信息中的pid修改为cpid,tid修改为ctid。
[0101]
在步骤s715中,将第2条记录信息中的pid修改为cpid,tid修改为ctid。其中,第2条记录信息也即第1条通道记录信息。
[0102]
至此,完成会话的dma通道分配。
[0103]
与前述方法实施例对应,本发明实施例还公开一种dma通道调度装置,应用于主机,主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道。参见图8所示,本发明实施例的dma通道调度装置可以包括:应用程序模块810和sdk模块820。
[0104]
应用程序模块810用于调用sdk模块810打开会话;sdk模块820用于执行dma通道调度操作,所述dma通道调度操作包括:获取与所述会话对应的当前进程标识符和当前线程标识符;获取配置文件;其中,所述配置文件包括:n*t条通道记录信息,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符;dma通道编号与pcie设备编号和dma通道独立编号存在唯一确定的对应关系;判断所述配置文件中是否存在目标记录信息;其中,所述目标记录信息为含有所述当前进程标识符和所述当前线程标识符的通道记录信息;若所述配置文件中存在所述目标记录信息,将所述目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给所述会话;若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。
[0105]
本发明实施例提供的dma通道调度装置,应用程序调用sdk打开会话;sdk判断配置文件中是否存在目标记录信息;若配置文件中存在目标记录信息,将目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话;若配置文件中不存在目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给会话。本发明实施例的技术方案,利用配置文件中的通道记录信息记录dma通道的使用情况,sdk可根据配置文件中通道记录信息为会话自动分配pcie设备编号和dma通道独立编号,实现了多个pcie设备之间以及多个dma通道的自动调度,调度效率高,用户体验好。
[0106]
与前述方法实施例对应,本发明实施例还公开一种主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述主机用于执行前述方法实施例中任一项所述的dma通道调度方法。
[0107]
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需
的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0108]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统及装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0109]
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0110]
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种dma通道调度方法,其特征在于,应用于主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述方法包括:应用程序调用sdk打开会话;所述sdk执行dma通道调度操作,所述dma通道调度操作包括:获取与所述会话对应的当前进程标识符和当前线程标识符;获取配置文件;其中,所述配置文件是由pcie设备的驱动程序生成的,所述配置文件包括:n*t条通道记录信息,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符;判断所述配置文件中是否存在目标记录信息;其中,所述目标记录信息为含有所述当前进程标识符和所述当前线程标识符的通道记录信息;若所述配置文件中存在所述目标记录信息,将所述目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给所述会话;若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。2.如权利要求1所述的dma通道调度方法,其特征在于,各条通道记录信息按照dma通道编号的大小在所述配置文件中顺序排布,dma通道编号与pcie设备编号和dma通道独立编号之间的对应关系如下:devno = (gchannel-1) % n;devchanle = (gchannel-1)/ n;其中,gchannel表示dma通道编号,devno表示pcie设备编号,devchanle表示dma通道独立编号。3.如权利要求1或2所述的dma通道调度方法,其特征在于,判断所述配置文件中是否存在目标记录信息,包括:读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符,i的初始值取1;判断第i条通道记录信息中的进程标识符是否等于所述当前进程标识符,线程程标识符是否等于所述当前线程标识符;若第i条通道记录信息中的进程标识符等于所述当前进程标识符,且线程标识符等于所述当前线程标识符,确定所述配置文件中存在所述目标记录信息;若第i条通道记录信息中的进程标识符不等于所述当前进程标识符,或线程标识符不等于所述当前线程标识符,取i=i+1,返回sdk读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤;若从i=1到i=n*t,任一条通道记录信息中的进程标识符不等于所述当前进程标识符,或线程标识符不等于所述当前线程标识符,则确定所述配置文件中不存在所述目标记录信息。4.如权利要求3所述的权限管理方法,其特征在于,所述dma通道调度操作还包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为空,判断第i条通道记录信
息是否为第一个进程标识符和线程程标识符为空的通道记录信息;若第i条通道记录信息为第一个进程标识符和线程程标识符为空的通道记录信息,标记第i条通道记录信息的dma通道编号为第一通道编号;相应的,若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话,包括:若所述配置文件中不存在所述目标记录信息,将所述第一通道编号对应的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,将所述第一通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。5.如权利要求3所述的dma通道调度方法,其特征在于,所述dma通道调度操作还包括:判断第i条通道记录信息中的进程标识符和线程程标识符是否均为空;若第i条通道记录信息中的进程标识符和线程程标识符均为非空,判断第i条通道记录信息中的进程标识符和线程程标识符是否正在运行;若第i条通道记录信息中的进程标识符和线程程标识符正在运行,则执行判断第i条通道记录信息中的进程标识符是否等于所述当前进程标识符,线程程标识符是否等于所述当前线程标识符的步骤;若第i条通道记录信息中的进程标识符和线程程标识符不在运行,则将第i条通道记录信息中的进程标识符和线程程标识符置零,且将置零后的第i条通道记录信息回写到所述配置文件;若i≠n*t,取i=i+1,返回sdk读取所述配置文件中的第i条通道记录信息,并解析获取第i条通道记录信息中的进程标识符和线程标识符的步骤。6.如权利要求1或2所述的dma通道调度方法,其特征在于,所述dma通道调度操作还包括:若所述配置文件中不存在所述目标记录信息,且不存在进程标识符和进程标识符为空的通道记录信息,将预设dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话;其中,预设dma通道编号对应的dma通道独立编号执行加锁运算。7.如权利要求1或2所述的dma通道调度方法,其特征在于,所述dma通道调度操作还包括:判断位于全局数组中的、与分配的pcie设备编号对应的设备句柄是否为空;若分配的pcie设备编号对应的设备句柄为空,遍历所述全局数组,将所述全局数组中第一个非空的设备句柄作为与分配的pcie设备编号对应的设备句柄;将dma通道独立编号置零。8.如权利要求1或2所述的dma通道调度方法,其特征在于,所述方法还包括:所述sdk还执行如下操作:在全局数组中查找与分配的pcie设备编号对应的设备句柄;将查找到的设备句柄和dma通道独立编号保存到会话对象中;应用程序调用所述sdk,通过所述会话对象中的设备句柄和dma通道独立编号与pcie设备进行数据交互;
在出现数据交互失败时,根据失败原因确定是否是对应的pcie设备硬件损坏,若是,则将所述会话对应的设备句柄置空,并把所述会话清空。9.如权利要求1或2所述的dma通道调度方法,其特征在于,所述配置文件中还包括:设备记录信息,所述设备记录信息包括:pcie设备个数n和每个pcie设备的通道个数t,所述方法还包括:所述应用程序调用sdk执行如下操作:通过设备节点名称打开所有的pcie设备;对于打开成功的pcie设备,将其设备句柄保存到全局数组中;在打开成功的pcie设备个数不等于n时,更新所述配置文件中的n值。10.一种dma通道调度装置,其特征在于,应用于主机,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述装置包括:应用程序模块,用于调用sdk模块打开会话;sdk模块,用于执行dma通道调度操作,所述dma通道调度操作包括:获取与所述会话对应的当前进程标识符和当前线程标识符;获取配置文件;其中,所述配置文件包括:n*t条通道记录信息,每条通道记录信息包括:dma通道编号、进程标识符和线程标识符;判断所述配置文件中是否存在目标记录信息;其中,所述目标记录信息为含有所述当前进程标识符和所述当前线程标识符的通道记录信息;若所述配置文件中存在所述目标记录信息,将所述目标记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号给所述会话;若所述配置文件中不存在所述目标记录信息,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为所述当前进程标识符和所述当前线程标识符,并将所选择通道记录信息中的dma通道编号对应的pcie设备编号和dma通道独立编号分配给所述会话。11.一种主机,其特征在于,所述主机与n个pcie设备通信连接,每个pcie设备上设置有t个dma通道,所述主机用于执行如权利要求1至9任一项所述的dma通道调度方法。
技术总结
本发明实施例公开的一种DMA通道调度方法、装置及主机,方法包括:应用程序调用SDK打开会话;SDK判断配置文件中是否存在目标记录信息;若配置文件中存在目标记录信息,将目标记录信息中的DMA通道编号对应的PCIE设备编号和DMA通道独立编号分配给会话;否则,选择一条进程标识符和进程标识符为空的通道记录信息,将所选择通道记录信息中的进程标识符和线程标识符修改为当前进程标识符和当前线程标识符,并将所选择通道记录信息中的DMA通道编号对应的PCIE设备编号和DMA通道独立编号分配给会话。本发明实施例的技术方案,实现了多个PCIE设备之间以及多个DMA通道的自动调度,调度效率高,用户体验好。用户体验好。用户体验好。
技术研发人员:刘熙胖 彭金辉 雷宗华
受保护的技术使用者:郑州信大捷安信息技术股份有限公司
技术研发日:2023.05.12
技术公布日:2023/8/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/