CN117033275A - 加速卡间的dma方法、装置、加速卡、加速平台及介质 - Google Patents
加速卡间的dma方法、装置、加速卡、加速平台及介质 Download PDFInfo
- Publication number
- CN117033275A CN117033275A CN202311279391.0A CN202311279391A CN117033275A CN 117033275 A CN117033275 A CN 117033275A CN 202311279391 A CN202311279391 A CN 202311279391A CN 117033275 A CN117033275 A CN 117033275A
- Authority
- CN
- China
- Prior art keywords
- memory
- acceleration
- data
- card
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 378
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000015654 memory Effects 0.000 claims abstract description 391
- 230000006870 function Effects 0.000 claims description 62
- 238000011144 upstream manufacturing Methods 0.000 claims description 39
- 238000013507 mapping Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 17
- 230000006854 communication Effects 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 101100004179 Schizophyllum commune BAR2 gene Proteins 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 101150090657 ADRB3 gene Proteins 0.000 description 2
- 101150071434 BAR1 gene Proteins 0.000 description 2
- 101100378536 Ovis aries ADRB1 gene Proteins 0.000 description 2
- 101100004181 Schizophyllum commune (strain H4-8 / FGSC 9210) BAR3 gene Proteins 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了计算机技术领域内的一种加速卡间的DMA方法、装置、加速卡、加速平台及介质。本发明中的第一加速卡能够主动进行DMA的发起,并根据自身里记录的数据目的端的第二加速卡的内存空闲信息,直接把数据以DMA方式写入第二加速卡的内存,无需在DMA之前询问第二加速卡的内存空闲地址,也无需等第二加速卡进行DMA发起。该方案实现了:不同加速卡在硬件层面的直接DMA写操作,解决了加速卡间的DMA操作问题。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种加速卡间的DMA方法、装置、加速卡、加速平台及介质。
背景技术
在主机和加速卡构成的加速架构中,DMA(Direct Memory Access,存储器直接访问)必须有主机参与,也即:加速卡只能和主机进行DMA。并且,加速卡和主机DMA时,需要先由主机确定数据在自身的存储地址,然后通知加速卡,之后由加速卡向主机发起DMA,然后数据才能发往加速卡,交互过程较繁琐。
因此,如何简化DMA流程,提升DMA效率,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种加速卡间的DMA方法、装置、加速卡、加速平台及介质,以简化DMA流程,提升DMA效率。其具体方案如下:
第一方面,本发明提供了一种加速卡间的DMA方法,应用于无主机的加速平台中的第一加速卡,包括:
若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡;所述加速平台中的每一加速卡均设有存储器直接访问控制器;
在自身中查询所述第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存。
可选地,所述根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡,包括:
预估所述需传输数据的数据量大小;
确定具备处理所述需传输数据功能、且内存空闲容量不小于所述数据量大小的第二加速卡。
可选地,所述确定具备处理所述需传输数据功能、且内存空闲容量不小于所述数据量大小的第二加速卡,包括:
查询所述加速平台中除所述第一加速卡之外的其他加速卡的数据处理功能,并选择数据处理功能与所述需传输数据的下一步处理功能一致的待选加速卡;
将内存空闲容量不小于所述数据量大小的至少一个待选加速卡确定为所述第二加速卡。
可选地,还包括:
定时广播自身的存储资源使用信息至所述加速平台中除所述第一加速卡之外的其他加速卡。
可选地,还包括:
预估执行所述加速任务所需的内存量,若自身当前的内存空闲容量与所述内存量的差值大于预设阈值,则广播自身的存储资源使用信息至所述加速平台中除所述第一加速卡之外的其他加速卡。
可选地,还包括:
接收所述加速平台中除所述第一加速卡之外的其他加速卡广播的存储资源使用信息;所述其他加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播包括内存空闲信息的存储资源使用信息;
根据所述存储资源使用信息更新自身存储的其他加速卡的内存空闲信息。
可选地,所述利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存,包括:
利用自身中的存储器直接访问控制器,根据所述内存空闲信息和所述需传输数据在自身中占用的内存地址构造描述符信息;
按照所述描述符信息将所述需传输数据构造为第一报文;
将所述第一报文发送至所述第二加速卡,以使所述第二加速卡将所述第一报文中的所述需传输数据写入自身内存。
可选地,所述第二加速卡将所述第一报文中的所述需传输数据写入自身内存,包括:
所述第二加速卡若确定所述第一报文的数据写入地址落入内存地址范围,则将所述第一报文中的所述需传输数据写入自身内存。
可选地,还包括:
接收第二报文并转换所述第二报文为目标格式;
若确定所述第二报文的数据写入地址落入寄存器地址范围,则将所述第二报文中的数据写入自身寄存器;
利用寄存器中的数据配置地址映射表中的表项和/或修改存储资源使用信息的广播周期。
可选地,还包括:
若确定所述第二报文的数据写入地址落入内存地址范围,则将所述第二报文中的数据写入自身内存。
可选地,还包括:
接收外部主机发送的存储器直接访问请求;
在地址映射表中查询所述存储器直接访问请求中的虚拟地址对应的内存地址;
按照所述内存地址完成所述存储器直接访问请求。
可选地,还包括:
若所述需传输数据为所述加速任务的最终结果,则将所述需传输数据发送至外部主机。
可选地,还包括:
接收所述外部主机通过交换机网络发送的所述加速任务。
可选地,所述第一加速卡的下游接口为支持串行计算机扩展总线标准的根设备模式接口或从设备模式接口,且所述下游接口的总线地址范围不小于其所连下游设备的总线地址范围。
可选地,所述下游接口的配置过程包括:
通过所述第一加速卡的上游接口接收所述下游接口的配置报文;
将所述配置报文转换为符合所述串行计算机扩展总线标准的第二报文;
根据所述第二报文配置所述下游设备的总线地址范围,并为所述下游设备配置标识信息;
根据所述第二报文对所述下游接口的根设备核或从设备核进行总线地址配置,使所述下游接口的总线地址范围不小于所述下游设备的总线地址范围。
可选地,根据所述第二报文对所述下游接口的从设备核进行总线地址配置之前,将所述第二报文转换为与从设备模式匹配的数据格式。
可选地,所述下游接口有多个;
相应地,还包括:
接收任意下游接口所连下游设备发送的数据报文;
若所述数据报文的目的地址不在网络路由窗口内,则判断所述数据报文的目的地址是否在其他下游接口的转发路由窗口内;
若所述数据报文的目的地址在目的接口的转发路由窗口内,则通过所述目的接口将所述数据报文转发至所述目的接口所连的下游设备;所述目的接口为其他下游接口中的至少一个。
第二方面,本发明提供了一种加速卡间的DMA装置,应用于无主机的加速平台中的第一加速卡,包括:
确定模块,用于若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡;所述加速平台中的每一加速卡均设有存储器直接访问控制器;
查询模块,用于在自身中查询所述第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
访问模块,用于利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存。
第三方面,本发明提供了一种加速卡,所述加速卡用于实现上述任一项所述的方法,所述加速卡设有存储器直接访问控制器、存储资源寄存器、选择模块和内存;
选择模块根据内存空闲容量和加速卡功能确定用于处理执行加速任务获得的需传输数据的其他加速卡;查询其他加速卡的内存空闲信息;其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播内存空闲信息;
存储资源寄存器存储其他加速卡的内存空闲信息;
存储器直接访问控制器根据内存空闲信息将需传输数据以存储器直接访问方式写入其他加速卡的内存。
可选地,所述加速卡为FPGA加速卡、ASIC加速卡或多核处理器。
第四方面,本发明提供了一种加速平台,包括:多个前述加速卡,不同加速卡通过扩展芯片连接;
其中,每一加速卡设有存储器直接访问控制器、存储资源寄存器、选择模块和内存;
选择模块根据内存空闲容量和加速卡功能确定用于处理执行加速任务获得的需传输数据的其他加速卡;查询其他加速卡的内存空闲信息;其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播内存空闲信息;
存储资源寄存器存储其他加速卡的内存空闲信息;
存储器直接访问控制器根据内存空闲信息将需传输数据以存储器直接访问方式写入其他加速卡的内存。
可选地,选择模块还包括:预估单元和选择单元;
预估单元预估需传输数据的数据量大小;
选择单元查询其他加速卡的数据处理功能,并选择数据处理功能与需传输数据的下一步处理功能一致的、内存空闲容量不小于数据量大小的加速卡。
可选地,每一加速卡还设有资源共享模块,资源共享模块预估执行加速任务所需的内存量,若内存的内存空闲容量与内存量的差值大于预设阈值,则广播内存的存储资源使用信息至其他加速卡;若处于空闲状态,则在内存的内存空闲容量大于预设阈值时,广播内存的存储资源使用信息至其他加速卡;
相应地,资源共享模块还接收其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播的包括内存空闲信息的存储资源使用信息;根据存储资源使用信息更新存储资源寄存器存储的其他加速卡的内存空闲信息。
第五方面,本发明提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一项所述的方法。
通过以上方案可知,本发明提供了一种加速卡间的DMA方法,应用于无主机的加速平台中的第一加速卡,包括:若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡;所述加速平台中的每一加速卡均设有存储器直接访问控制器;在自身中查询所述第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存。
可见,本发明的有益效果为:作为数据源端的第一加速卡主动进行DMA的发起,并根据自身里记录的数据目的端的第二加速卡的内存空闲信息,直接把数据以DMA方式写入第二加速卡的内存,无需在DMA之前询问第二加速卡的内存空闲地址,也无需等第二加速卡进行DMA发起。该方案实现了:不同加速卡在硬件层面的直接DMA写操作,简化了DMA流程,提升了DMA效率。
相应地,本发明提供的一种加速卡间的DMA装置、加速卡、加速平台及介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明公开的一种加速卡间的DMA方法流程图;
图2为本发明公开的一种数据传输方法流程图;
图3为本发明公开的一种FPGA加速卡的DMA功能示意图;
图4为本发明公开的一种报文解析和判断示意图;
图5为本发明公开的一种DMA触发和内存更新示意图;
图6为本发明公开的一种加速系统示意图;
图7为本发明公开的另一种FPGA加速卡的Switch功能示意图;
图8为本发明提供的一种加速卡1的结构图;
图9为本发明提供的一种加速卡2的结构图;
图10为本发明公开的一种加速平台示意图;
图11为本发明提供的又一种加速卡的结构图;
图12为本发明提供的另一种加速平台示意图;
图13为本发明提供的再一种加速平台示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在主机和加速卡构成的加速架构中,DMA(Direct Memory Access,存储器直接访问)必须有主机参与,也即:加速卡只能和主机进行DMA。并且,加速卡和主机DMA时,需要先由主机确定数据在自身的存储地址,然后通知加速卡,之后由加速卡向主机发起DMA,然后数据才能发往加速卡,交互过程较繁琐。为此,本发明提供了一种加速卡间的DMA方案,能够实现不同加速卡在硬件层面的直接DMA写操作,简化了DMA流程,提升了DMA效率。
参见图1所示,本发明实施例公开了一种加速卡间的DMA方法,应用于无主机的加速平台中的第一加速卡,包括:
S101、若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理需传输数据的加速平台中的第二加速卡。
在本实施例中,无主机的加速平台可以接收外部主机发送的加速任务,如:图像识别任务、加密或解密任务等。一般地,同一加速任务可划分给加速平台中的不同加速卡,如:第一加速卡执行加速任务中的查表操作,第二加速卡进行查表操作结果的逻辑运算操作后得到整个任务的处理结果。第一加速卡和第二加速卡均可以有多个。
需要说明的是,加速任务由外部主机通过交换机网络发送至第一加速卡;第一加速卡可能先执行加速任务中的前置操作(如前述查表操作),也可能执行加速任务中的后置操作(如前述逻辑运算操作)。如果第一加速卡执行加速任务中的后置操作,那么需传输数据为加速任务的最终结果,因此将需传输数据发送至外部主机,无需再让其他加速卡处理需传输数据。
在一种实施方式中,根据内存空闲容量和加速卡功能确定用于处理需传输数据的加速平台中的第二加速卡,包括:预估需传输数据的数据量大小;确定具备处理需传输数据功能、且内存空闲容量不小于数据量大小的第二加速卡。其中,确定具备处理需传输数据功能、且内存空闲容量不小于数据量大小的第二加速卡,包括:查询加速平台中除第一加速卡之外的其他加速卡的数据处理功能,并选择数据处理功能与需传输数据的下一步处理功能一致的待选加速卡;将内存空闲容量不小于数据量大小的至少一个待选加速卡确定为第二加速卡。由此可见,第二加速卡是具备处理需传输数据的功能的且内存剩余容量足够大的加速卡;如果需传输数据的下一步处理功能是加密,则加速卡功能即为加密,那么第二加速卡需能够执行加密操作,如果一个加速卡仅能进行解密操作,则加速卡功能即为解密,那么该加速卡不会被选为待选加速卡。
其中,加速平台中的每一加速卡均设有存储器直接访问控制器(即DMA控制器)。
S102、在自身中查询第二加速卡的内存空闲信息。
其中,第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息。
需要说明的是,加速平台中的每一加速卡中均记录有加速平台中其他加速卡的存储资源使用信息,存储资源使用信息包括:空闲的内存起始地址、内存总容量等信息。因此在一种实施方式中,第一加速卡定时广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡。第一加速卡还接收加速平台中除第一加速卡之外的其他加速卡广播的存储资源使用信息;根据存储资源使用信息更新自身存储的其他加速卡的内存空闲信息。内存空闲信息具体为:空闲的内存起始地址。第二加速卡或其他加速卡可以是:与第一加速卡通过扩展芯片连接的加速卡,也可以是第一加速卡的任意下游接口所连的下游设备。
在一种示例中,第一加速卡可以预估执行加速任务所需的内存量,若自身当前的内存空闲容量与内存量的差值大于预设阈值,则广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡;若第一加速卡处于空闲状态,则在自身当前的内存空闲容量大于预设阈值时,广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡。相应地,第一加速卡接收的其他加速卡广播的存储资源使用信息是其他加速卡在内存空闲容量大于预设阈值时广播的,存储资源使用信息包括内存空闲信息。
S103、利用自身中的存储器直接访问控制器和内存空闲信息将需传输数据以存储器直接访问方式写入第二加速卡的内存。
在一种实施方式中,利用自身中的存储器直接访问控制器和内存空闲信息将需传输数据以存储器直接访问方式写入第二加速卡的内存,包括:利用自身中的存储器直接访问控制器,根据内存空闲信息和需传输数据在自身中占用的内存地址构造描述符信息;按照描述符信息将需传输数据构造为第一报文;将第一报文发送至第二加速卡,以使第二加速卡将第一报文中的需传输数据写入自身内存。其中,第二加速卡将第一报文中的需传输数据写入自身内存,包括:第二加速卡若确定第一报文的数据写入地址落入内存地址范围,则将第一报文中的需传输数据写入自身内存。其中,第一报文具体为TLP(TransactionLayer Packet)报文,不同加速卡通过PCIE(Peripheral Component InterconnectExpress,一种高速串行计算机扩展总线标准)通信。存储器直接访问方式即:DMA方式。
在本实施例中,第一加速卡还接收第二报文(用于配置寄存器的报文)并转换第二报文为目标格式(如PCIE Stream,PCIE流模式);若确定第二报文的数据写入地址落入寄存器地址范围,则将第二报文中的数据写入自身寄存器;利用寄存器中的数据配置地址映射表中的表项和/或修改存储资源使用信息的广播周期。若确定第二报文的数据写入地址落入内存地址范围,则将第二报文中的数据写入自身内存。
其中,地址映射表中的表项为:外部主机使用的虚拟地址与内存地址之间的映射,因此在一种实施方式中,第一加速卡还接收外部主机发送的存储器直接访问请求;在地址映射表中查询存储器直接访问请求中的虚拟地址对应的内存地址;按照内存地址完成存储器直接访问请求。可见,本实施例的任意加速卡还能够与外部主机进行存储器直接访问。
参照图1所示流程,其对应的加速平台可参见图13,在图13中,无主机的加速平台包括第一加速卡和第二加速卡,第一加速卡和第二加速卡均设有存储器直接访问控制器和内存等模块,第一加速卡和第二加速卡都可以按照图1所示流程直接进行DMA数据传输,能够在硬件层面直接进行DMA写操作。其中,第一加速卡和第二加速卡将对方的内存空闲信息存储在存储资源寄存器中。第一加速卡和第二加速卡可以通过扩展芯片连接。
可见,在本实施例中,作为数据源端的第一加速卡主动进行DMA的发起,并根据自身里记录的数据目的端的第二加速卡的内存空闲信息,直接把数据以DMA方式写入第二加速卡的内存,无需在DMA之前询问第二加速卡的内存空闲地址,也无需等第二加速卡进行DMA发起。该方案实现了:不同加速卡在硬件层面的直接DMA写操作,简化了DMA流程,提升了DMA效率。
本发明实施例公开了另一种数据传输方法,应用于任意加速卡,所述加速卡的下游接口为支持串行计算机扩展总线标准(如PCIE)的根设备模式接口或从设备模式接口,且下游接口的总线地址范围不小于其所连下游设备的总线地址范围。加速卡的PCIE接口存在根设备模式(Root Port,RP)和从设备模式(End Point,EP),当前的根设备模式和当前的从设备模式仅支持加速卡与其PCIE接口所连设备的一对一通信,不支持加速卡的上游设备与加速卡的PCIE接口所连设备的通信,也不支持加速卡的不同PCIE接口所连设备的P2P通信。
参见图2所示,本实施例提供的数据传输方法包括:
S201、接收加速卡的任意下游接口所连下游设备发送的数据报文。
S202、若数据报文的目的地址在网络路由窗口内,则根据网络寄存器中的当前协议信息确定上游传输协议,将数据报文转换为符合上游传输协议的上游报文,并通过上游接口发送上游报文至上游设备。
S203、若数据报文的目的地址在目的接口的转发路由窗口内,则通过目的接口将数据报文转发至目的接口所连的下游设备;目的接口为其他下游接口中的至少一个。
其中,其他下游接口和发数据报文的下游接口为属于同一加速卡的不同下游接口。
本实施例中的步骤S202可使下游设备通过下游接口发给加速卡的报文到达上游接口所连的上游设备,实现由下至上的数据通路。本实施例中的步骤S203可使下游设备通过某一下游接口发给加速卡的报文到达其他下游接口所连的下游设备,实现同一加速卡的不同下游接口所连下游设备之间的数据通路。相应地,若数据报文的目的地址不在网络路由窗口内、且数据报文的目的地址不在任意一个下游接口的转发路由窗口内,则丢弃数据报文。
在本实施例中,一个加速卡的下游接口有多个,任意下游接口的配置过程包括:通过第一加速卡的上游接口接收下游接口的配置报文;将配置报文转换为符合串行计算机扩展总线标准的第二报文;根据第二报文配置下游设备的总线地址范围,并为下游设备配置标识信息;根据第二报文对下游接口的根设备核或从设备核进行总线地址配置,使下游接口的总线地址范围不小于下游设备的总线地址范围。其中,根据第二报文对下游接口的从设备核进行总线地址配置之前,将第二报文转换为与从设备模式匹配的数据格式。与从设备模式匹配的数据格式为type0格式,与根设备模式匹配的数据格式为type1格式。
在一种示例中,根据第二报文对下游接口的根设备核或从设备核进行地址配置,包括:根据第二报文配置加速卡中的总线寄存器和内存窗口寄存器,以对下游接口的根设备核进行配置;或将第二报文转换为与从设备模式匹配的数据格式,并根据转换后的第二报文将由下游设备的内存地址转换得到的总线地址配置于从设备核。
在为下游接口配置IP地址时,配置使能内存空间寄存器、IO空间寄存器以及总线主控寄存器等commond命令寄存器;配置写最大负载长度寄存器,最大读请求寄存器和强序模式寄存器。在下游接口初始化时,配置根总线寄存器、子总线寄存器和最大总线寄存器等总线寄存器;配置内存窗口寄存器,以设定接口可预取内存范围、不可预取的内存的窗口基地址、窗口大小等信息;配置下游设备的标识信息(BDF值)。至此下游接口可基于内置的根设备核实现Switch功能。一般RP的capability(能力)配置空间寄存器在根端口(RootPort),而Switch的capability配置寄存器在Switch。BDF(Bus Device Function)值指:总线号、设备号及功能号。
在为下游接口内置的从设备核进行配置时,先将type0格式的TLP配置报文转换为type1格式,然后配置BDF寄存器,以为当前接口的下游设备配置标识信息;然后配置BAR地址(由下游设备的内存地址转换得到),以使当前接口能够读取下游设备的内存地址;之后配置使能内存空间寄存器、IO空间寄存器以及总线主控寄存器等commond命令寄存器;配置写最大负载长度寄存器,最大读请求寄存器和强序模式寄存器。至此下游接口可基于内置的从设备核实现Switch功能。
在一种实施方式中,根据网络寄存器中的当前协议信息确定上游传输协议,包括:从网络寄存器中读取当前协议信息;将当前协议信息对应的协议类型确定为上游传输协议。网络寄存器中存有上游设备当前使用的上游传输协议的协议信息,且用户可灵活修改网络寄存器中的协议信息。在一种示例中,响应于用户输入的协议配置操作,将协议配置操作配置的协议信息写入网络寄存器,以更改上游设备当前使用的上游传输协议。上游传输协议如:TCP(Transmission Control Protocol,一种传输层通信协议)等。
在本实施例中,上游接口和各下游接口均能灵活使能和去使能。因此在根据网络寄存器中的当前协议信息确定上游传输协议之前,还包括:使能上游接口,并去使能其他下游接口,以使数据报文通过上游接口发出。相应地,通过目的接口将数据报文转发至目的接口所连的下游设备之前,还包括:使能目的接口,去使能上游接口和其他下游接口中除目的接口之外的接口,以使数据报文通过目的接口发出。
在一种实施方式中,加速卡还将通过上游接口接收的数据报文转换为符合串行计算机扩展总线标准的第二报文;若第二报文的目的地址在至少一个下游接口的转发路由窗口内,则通过至少一个下游接口将第二报文转发至至少一个下游接口所连的下游设备。由此可使上游设备通过上游接口发给加速卡的报文到达至少一个下游接口所连的下游设备,实现由上至下的数据通路。若第二报文的目的地址不在任意一个下游接口的转发路由窗口内,则丢弃第二报文。
可见,在本实施例中,任意一个加速卡的任意下游接口适用串行计算机扩展总线标准,且被配置为根设备模式接口或从设备模式接口,同时还配置有不小于其所连下游设备的总线地址范围。据此可在此加速卡中实现:由下至上的数据通路、由上至下的数据通路以及该加速卡的不同下游接口所连下游设备之间的数据通路,而不用借助扩展芯片。并且可根据场景需求灵活确定上游用的传输协议类型。
下面以FPGA这一加速卡为例,介绍使FPGA在硬件层面直接进行DMA写的具体功能实现。在本实施例中,FPGA内部实现P2P DMA功能,既可作为PCIE Master发起DMA请求,也可作为PCIE Slave接收其他PCIE设备发起的P2P DMA请求,扩大了使用场景,由于在纯硬件层面操作,吞吐率性能接近PCIE接口理论性能。其中,PCIE Master为DMA请求的发起端,PCIESlave为DMA请求的接收端,在P2P DMA场景下,任何一个EP都可以作为Master。EP指:加速卡;P2P DMA即:一个加速卡和另一加速卡的DMA。PCIE P2P DMA为两个加速卡的内存空间数据的直接访问。
其中,FPGA作为PCIE Master且与GPU加速卡进行DMA时,FPGA需要获取GPU加速卡的地址,GPU加速卡的地址是PCIE总线域的物理地址。FPGA与主机进行DMA时,由于主机使用虚拟地址,因此需要通过FPGA内地址映射模块把虚拟地址转换为PCIE总线域的物理地址。如果FPGA作为PCIE Slave,另一加速卡GPU作为PCIE Master,则需要获取FPGA的PCIE总线域的物理地址,FPGA映射自己的内存空间到自己的PCIE总线,那么GPU进行DMA操作时直接使用FPGA的PCIE总线域物理地址。
并且,作为PCIE Slave的加速卡,还需要能解析TLP报文,区分其中的寄存器读写地址和DMA内存读写地址,并发送到对应的模块分别进行处理。
如图3所示,一个既能作为PCIE Master又能作为PCIE Slave的FPGA的内部需设DMA控制器,DMA控制器包括:接口转换模块、接收模块、寄存器控制模块、内存控制模块、转换模块、地址映射模块、缓存模块和发送模块。
接口转换模块。由于不同FPGA厂商提供的PCIE用户接口不统一,因此可以在FPGA内设置接口转换模块,使所有送往FPGA内的报文为PCIE ST格式或PCIE AXIS格式(PCIEAdvanced eXtensible Interface Stream,PCIE AXIS流模式)。FPGA的PCIE用户接口总线为PCIE ST格式或PCIE AXIS格式,PCIE ST总线为PCIE接口标准总线,因此优先使送往FPGA内的报文为PCIE ST格式。
接收模块用于接收PCIE EP核(FPGA的下游PCIE接口自带的硬核)输出的TLP报文并进行解析,能够丢弃异常报文。如果是读写存储介质的TLP报文,则根据地址进行判断,如果地址范围是寄存器读写地址范围,则把TLP转发给寄存器控制模块进行处理,如果地址范围在设备内存地址范围,则把TLP报文发送给内存控制模块进行处理,如果是完成报文,则发送给转换模块进行处理。具体过程可参照图4。
寄存器控制模块能够转换寄存器读写控制接口。
内存控制模块能够控制转换内存的读写控制信号。
转换模块能够进行寄存器写或内存写信号的转换。
地址映射模块记录虚拟地址到物理地址的映射,该模块只有在主机发起DMA操作时有效,其他时候则直接透传输出给接收模块;地址映射模块中的映射表在应用加速之前由主机完成初始化配置。
缓存模块用于缓存FPGA内存使用情况及空闲内存情况。
发送模块能够根据远端网络输入或FPGA内的kernel(内核)发起的DMA触发请求,对端加速卡GPU的显存资源信息、FPGA内存情况构造描述符请求信息,发起DMA请求操作,把数据通过PCIE接口发送给GPU。另外,FPGA内存使用情况及空闲内存情况也通过该模块经FPGA的PCIE接口发送给对端加速卡GPU,具体过程可参照图5。
如图3所示,除DMA控制器外,还需实现:寄存器、总控模块、网络模块和管理模块。
寄存器包括:DMA的doorbell寄存器(门铃寄存器);存储对端加速卡的资源信息的寄存器,周期性写此寄存器来记录对端加速卡的剩余内存资源。
总控模块能够完成对FPGA的内存的接口的读写。FPGA的内存为:DDR(Double DataRate,双倍速率同步动态随机存储器)或HBM(High Bandwidth Memory)。
网络模块为网络报文处理及控制模块,能够解析并处理远端输入的报文信息,若是数据加速计算信号则发送给kernel模块,若是DMA数据则发送给地址映射模块,若是控制信号则发送给管理模块。Kernel为FPGA板卡内的加速单元,可完成网络加速、计算加速和存储加速等加速功能。
管理模块能够监测板卡内的内存资源使用情况,并通过网络接口检测远端加速卡的资源使用情况。
下面从系统角度来详细说明FPGA与GPU之间的DMA以及FPGA与GPU共同完成加速任务的过程。请参见图6,一个加速平台包括:FPGA加速卡1、FPGA加速卡2和一个GPU加速卡,这三个加速卡通过扩展芯片(PCIE Switch)连接,两两之间可直接进行DMA写,DMA传输延时低,并在DMA传输过程中解耦主机服务器;加速平台通过交换机网络和一个主机服务器连接。
在此实例中,假设主机服务器使用加速平台加速一个推荐推理算法,使用FPGA加速卡和GPU加速卡共同加速完成,其中FPGA加速卡完成嵌入向量查找表功能,GPU加速卡完成DNN计算加速。
该系统的初始化过程:PCIE Switch的三个下游端口分别初始化两块FPGA加速卡和一块GPU加速卡的PCIE接口,完成配置空间的配置以及BAR(总线)基地址的分配。在加速平台中,三个加速卡周期性通过PCIE接口广播自己的空闲内存信息。PCIE Switch通常包括一个上游端口和多个下游端口,其中上游端口与CPU连接,下游端口连接PCIE设备,通过PCIE Switch,CPU可以与多个PCIe设备通信,PCIe设备间也可实现P2P通信。
该系统的加速卡间的DMA流程:
(1)主机服务器把推荐推理算法所需的处理数据通过网络分别发送给FPGA加速卡1、FPGA加速卡2,使得FPGA加速卡1、FPGA加速卡2同时进行嵌入式向量的查表计算,并行加速查找。FPGA加速卡1、FPGA加速卡2的网络模块接收网络报文信息处理后发送给kernel模块进行嵌入式查表处理。
(2)查表处理完成数据存储到FPGA加速卡1、FPGA加速卡2各自的内存,然后FPGA加速卡1、FPGA加速卡2分别通知自身中的发送模块发起DMA写操作。在FPGA加速卡1、FPGA加速卡2中,发送模块接收到kernel发起的DMA doorbell请求,然后读取存储GPU内存信息的寄存器的值,并读取本地内存资源使用信息组成描述符队列,以发起DMA写操作,把内存中的数据组成TLP报文发送到格式转换模块。
(3)在FPGA加速卡1、FPGA加速卡2中,TLP报文经格式转换模块被送到PCIE EP核,以通过PCIE接口到达PCIE Switch,PCIE Switch根据TLP报文的目的地址转发给GPU。
(4)GPU内部的PCIE DMA控制器接收两块FPGA加速卡发送的数据,把收到的数据发送给自身显存,然后其中的计算核心模块开始进行DNN计算处理。
(5)GPU计算完成后触发DMA请求,因为处理后的数据只需要一个FPGA卡就能完成后续处理,这里默认发送给FPGA加速卡1。GPU根据FPGA加速卡1的空闲内存直接对FPGA加速卡1进行DMA写。
(6)PCIE Switch接收到GPU对FPGA加速卡1的DMA写请求后,根据目的地址转发给FPGA加速卡1,FPGA加速卡1的PCIE接口处理后输出TLP报文到FPGA加速卡1内部。
(7)FPGA加速卡1接收并解析TLP报文,通过内存控制模块存储到自身内存,然后再把内存中的数据转换成网络报文发回给主机服务器,完成推荐推理算法的加速处理。
在上述整个加速过程中,主机服务器除了完成原始数据的发送和加速结果的接收外,不需进行任何操作,加速平台内的FPGA加速卡和GPU加速卡自主完成控制和处理,在两次P2P DMA过程中,都是要发数据的一方主动发起DMA写,期间无需其他交互,延时低且性能高。具体的,本实施例提供的P2P DMA相比于现有DMA过程,减少了两次信息交互;在现有DMA过程中,首先需要GPU告知FPGA数据已经准备好,其次FPGA向GPU发起DMA读请求,然后GPU的数据才能发送给FPGA,而本实施例提供的P2P DMA由GPU直接向FPGA发起DMA写,无需询问FPGA的内存空闲地址,也无需等FPGA进行DMA发起。由此,FPGA既可以作为PCIE Master发起对GPU的内存写,也可作为PCIE Slave完成GPU发起的DMA写,使用场景广泛,支持真正意义上的P2P DMA功能。
可见,本实施例使DMA过程解耦了主机服务器,利用各加速卡内部的实现的DMA控制器,使各加速卡既可作为PCIE Master发起DMA请求,也可作为PCIE Slave接收其他加速卡发起的DMA请求,扩大了DMA使用场景,同时,由于DMA通过纯硬件地址实现,因此DMA性能也接近PCIE接口的理论性能。另外,各加速卡能自主完成描述符队列的创建,并触发DMA操作,使延时性能和吞吐率性能达到了最优,减少了主机服务器CPU的使用,释放CPU宝贵资源。
下面以FPGA这一加速卡为例,介绍在FPGA的PCIE接口为根设备模式的情况下,FPGA的上游设备与FPGA的PCIE接口所连设备的通信过程,FPGA的不同PCIE接口所连设备的P2P通信过程。
具体的,本实施例基于FPGA内部的PCIE RP硬核实现PCIE Switch功能,还能提高FPGA逻辑资源使用率。在RP模式下配置PCIE接口,只需在配置空间内容上进行改动,就可以实现PCIE Switch功能。
请参见图7,需要基于FPGA内部的PCIE RP硬核实现接口配置模块、下游设备配置模块、逻辑处理模块以及网络模块;逻辑处理模块针对网络模块、下游两个PCIE接口分别设有:解析模块、多路复用模块和仲裁模块。图7中的FPGA有两个下游PCIE接口,每一下游PCIE接口内设PCIE RP硬核。当然,一个加速卡可有更多或更少的下游PCIE接口,一个下游PCIE接口连接一个下游设备。
一般地,PCIE RP硬核提供三组用户接口,分别为用户接收总线、用户发送总线和配置空间配置总线。其中,用户接收总线和发送总线为传输TLP报文的用户接口,通过配置空间配置总线可以完成对PCIE RP的配置空间配置,并读取配置空间默认寄存器值输出给逻辑处理模块的解析模块协助解析处理。下游设备配置模块通过发起的配置TLP报文完成对两个处理器的配置空间的初始化配置,两个处理器的BAR基地址分别被配置为BAR1和BAR2。接口配置模块通过cfg_mgnt总线(configuration management,控制管理总线)完成对FPGA的两个PCIE接口的配置空间的初始化配置,两个PCIE接口的BAR基地址分别被配置为BAR3和BAR4,其中,BAR3地址范围大于等于BAR1地址范围,BAR4地址范围大于等于BAR2地址范围。
可见,下游设备配置模块用于初始化下游EP设备。接口配置模块用于初始化配置PCIE接口。逻辑处理模块用于实现TLP报文的转发和控制,其中针对单个端口均设有解析模块、多路复用模块和仲裁模块。解析模块解析PCIE RP的发送总线输出的TLP报文,并根据路由信息输出仲裁请求,同时处理异常的TLP报文;仲裁模块接收仲裁请求,并输出仲裁信号,以为报文选择对应的发送通路,多路复用模块接收各通路解析模块输出的数据,根据仲裁信号选择合适的通路发送给PCIE RP的接收总线。
而网络模块为处理与网络接口相关的处理。在本实施例中,网络模块连接FPGA的上游端口。网络模块内部实现了多个网络传输协议,如RDMA(Remote Direct MemoryAccess,远程直接数据存取)、TCP/IP或自定义的低延时网络协议等,根据用户输入的模式配置选择其中一种网络协议通过网络接口输出给上游设备。如前所述,网络模块不仅支持FPGA内部的PCIE协议,还支持外部的RDMA、TCP/IP等协议,且可实现内部与外部协议的相互转换。请参见图7,选择外部支持的协议时,可通过模式选择开关进行动态配置,用户通过网络接口发送配置模式选择的开关寄存器报文,Switch上游端口接收到报文后解析该报文,并提取对应的模式选择开关值配置到模式选择寄存器模块,而网络协议处理模块根据模式选择寄存器的值进行对应网络协议的处理。
在此实例中,PCIE Switch共包含3个通路,其中两路与AI处理器连接,另一路与网络接口连接。下面介绍FPGA的两个下游接口连接的两个处理器间的通信。AI处理器-1发起对AI处理器-2的内存访问操作,目标地址为BAR2。AI处理器-1的DMA控制器发起操作,此操作消息先通过PCIE接口发送给FPGA PCIE Switch对应的下游端口PCIE RP IP-1,PCIE RPIP-1输出后发送给解析模块1,解析模块1模块解析TLP报文,提取对应的目的地址等信息。如果目的地址在PCIE IP-2的路由窗口内,则输出目的地址仲裁请求发送给各端口的仲裁模块,当前例子中目的地址为BAR2地址,仲裁模块2输出有效的仲裁使能信号,其他仲裁模块输出无效的使能信号。根据有效的仲裁信号,TLP报文被发送给PCIE RP IP-2的接收总线,再通过PCIE接口发送给AI处理器-2,AI处理器-2的DMA控制器提取TLP报文的数据并存储到对应存储介质。如果TLP报文的目的地址不在路由窗口范围内(即不在PCIE IP-2的路由窗口内,也不在网络通路的路由窗口内)或者TLP报文异常,则丢弃报文。
需要说明的是,按照本实施例可对FPGA的每一PCIE接口进行配置,以使PCIE接口变为PCIE Switch的下游接口。当然,FPGA的网络端口也可以据此被配置为Switch的上游接口。由此可通过对FPGA进行配置实现AI处理器间的P2P通信,实现AI处理器与FPGA的上游网络接口的通信,而无需借助扩展芯片或扩展卡。
可见,本实施例能够基于FPGA自带的PCIE RP IP硬核实现PCIE Switch功能,无需使用额外的PCIE Switch芯片,成本低,实现简单,并且FPGA逻辑资源利用率低。同时该方法几乎可应用于所有FPGA芯片,可迁移性强。该方法也可以扩展到其他PCIE处理器芯片,如果其PCIE接口自带PCIE RP IP,但不支持PCIE Switch模式,则可通过PCIE RP IP可以实现PCIE Switch的下游端口,以实现Switch转发功能。参照此实现方式,还可以借助加速卡自带的PCIE EP IP硬核,在不增加Switch芯片的前提下,配置实现PCIE Switch的PCIE上游端口;但需留意,EP模式下需要把配置PCIE Switch的配置TLP报文格式由type0格式转换为type1格式,其他配置内容可参照本发明提供的RP模式的配置。IP(Intellectualproperty)硬核为硬件模块形式的芯片。
下面对本发明实施例提供的一种加速卡间的DMA装置进行介绍,下文描述的一种加速卡间的DMA装置与本文描述的其他实施例可以相互参照。
本发明实施例公开了一种加速卡间的DMA装置,应用于无主机的加速平台中的第一加速卡,包括:
确定模块,用于若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理需传输数据的加速平台中的第二加速卡;加速平台中的每一加速卡均设有存储器直接访问控制器;
查询模块,用于在自身中查询第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
访问模块,用于利用自身中的存储器直接访问控制器和内存空闲信息将需传输数据以存储器直接访问方式写入第二加速卡的内存。
在一种实施方式中,确定模块具体用于:
预估需传输数据的数据量大小;
确定具备处理需传输数据功能、且内存空闲容量不小于数据量大小的第二加速卡。
在一种实施方式中,确定模块具体用于:
查询加速平台中除第一加速卡之外的其他加速卡的数据处理功能,并选择数据处理功能与需传输数据的下一步处理功能一致的待选加速卡;
将内存空闲容量不小于数据量大小的至少一个待选加速卡确定为第二加速卡。
在一种实施方式中,还包括:
广播模块,用于定时广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡。
在一种实施方式中,广播模块还用于:
预估执行加速任务所需的内存量,若自身当前的内存空闲容量与内存量的差值大于预设阈值,则广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡;
若处于空闲状态,则在自身当前的内存空闲容量大于预设阈值时,广播自身的存储资源使用信息至加速平台中除第一加速卡之外的其他加速卡。
在一种实施方式中,还包括:
信息更新模块,用于接收加速平台中除第一加速卡之外的其他加速卡广播的存储资源使用信息;其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播包括内存空闲信息的存储资源使用信息;根据存储资源使用信息更新自身存储的其他加速卡的内存空闲信息。
在一种实施方式中,访问模块具体用于:
利用自身中的存储器直接访问控制器,根据内存空闲信息和需传输数据在自身中占用的内存地址构造描述符信息;
按照描述符信息将需传输数据构造为第一报文;
将第一报文发送至第二加速卡,以使第二加速卡将第一报文中的需传输数据写入自身内存。
在一种实施方式中,第二加速卡若确定第一报文的数据写入地址落入内存地址范围,则将第一报文中的需传输数据写入自身内存。
在一种实施方式中,还包括:
读写判断模块,用于接收第二报文并转换第二报文为目标格式;若确定第二报文的数据写入地址落入寄存器地址范围,则将第二报文中的数据写入自身寄存器;利用寄存器中的数据配置地址映射表中的表项和/或修改存储资源使用信息的广播周期。
在一种实施方式中,读写判断模块还用于:
若确定第二报文的数据写入地址落入内存地址范围,则将第二报文中的数据写入自身内存。
在一种实施方式中,还包括:
主机响应模块,用于接收外部主机发送的存储器直接访问请求;在地址映射表中查询存储器直接访问请求中的虚拟地址对应的内存地址;按照内存地址完成存储器直接访问请求。
在一种实施方式中,还包括:
发送模块,用于若需传输数据为加速任务的最终结果,则将需传输数据发送至外部主机。
在一种实施方式中,还包括:
任务接收模块,用于接收外部主机通过交换机网络发送的加速任务。
在一种实施方式中,第一加速卡的下游接口为支持串行计算机扩展总线标准的根设备模式接口或从设备模式接口,且下游接口的总线地址范围不小于其所连下游设备的总线地址范围。
在一种实施方式中,下游接口的配置过程包括:
通过第一加速卡的上游接口接收下游接口的配置报文;
将配置报文转换为符合串行计算机扩展总线标准的第二报文;
根据第二报文配置下游设备的总线地址范围,并为下游设备配置标识信息;
根据第二报文对下游接口的根设备核或从设备核进行总线地址配置,使下游接口的总线地址范围不小于下游设备的总线地址范围。
在一种实施方式中,根据第二报文对下游接口的从设备核进行总线地址配置之前,将第二报文转换为与从设备模式匹配的数据格式。
在一种实施方式中,下游接口有多个;相应地,还包括:
接收任意下游接口所连下游设备发送的数据报文;
若数据报文的目的地址不在网络路由窗口内,则判断数据报文的目的地址是否在其他下游接口的转发路由窗口内;
若数据报文的目的地址在目的接口的转发路由窗口内,则通过目的接口将数据报文转发至目的接口所连的下游设备;目的接口为其他下游接口中的至少一个。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种加速卡间的DMA装置,能够实现不同加速卡在硬件层面的直接DMA写操作,简化了DMA流程,提升了DMA效率。
下面对本发明实施例提供的一种加速卡进行介绍,下文描述的一种加速卡与本文描述的其他实施例可以相互参照。
本发明实施例公开了一种加速卡,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
可见,本发明实施例公开的加速卡能够实现上述任一实施例所述的方法,且加速卡设有存储器直接访问控制器。
在一种实施方式中,加速卡为FPGA加速卡、ASIC加速卡或多核处理器。
进一步的,本发明实施例还提供了一种加速卡。其中,上述加速卡既可以是如图8所示的加速卡1,也可以是如图9所示的加速卡2。图8和图9均是根据一示例性实施例示出的加速卡结构图,图中的内容不能被认为是对本发明的使用范围的任何限制。
图8为本发明实施例提供的一种加速卡1的结构示意图。该加速卡1具体可以包括:至少一个处理器、至少一个存储器、电源、通信接口、输入输出接口和通信总线。其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行,以实现前述任一实施例公开的加速卡间的DMA中的相关步骤。
本实施例中,电源用于为加速卡1上的各硬件设备提供工作电压;通信接口能够为加速卡1创建与外界设备之间的加速卡间的DMA通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
其中,操作系统用于管理与控制加速卡1上的各硬件设备以及计算机程序,以实现处理器对存储器中数据的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序除了包括能够用于完成前述任一实施例公开的加速卡间的DMA方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据除了可以包括应用程序的更新信息等数据外,还可以包括应用程序的开发商信息等数据。
图9为本发明实施例提供的一种加速卡2的结构示意图,该加速卡2具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
通常,本实施例中的加速卡2包括有:处理器和存储器。
其中,处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以在集成有GPU,GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器至少用于存储以下计算机程序,其中,该计算机程序被处理器加载并执行之后,能够实现前述任一实施例公开的由加速卡2侧执行的加速卡间的DMA方法中的相关步骤。另外,存储器所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括Windows、Unix、Linux等。数据可以包括但不限于应用程序的更新信息。
在一些实施例中,加速卡2还可包括有显示屏、输入输出接口、通信接口、传感器、电源以及通信总线。
本领域技术人员可以理解,图9中示出的结构并不构成对加速卡2的限定,可以包括比图示更多或更少的组件。
下面对本发明实施例提供的一种加速平台进行介绍,下文描述的一种加速平台与本文描述的其他实施例可以相互参照。
请参见图10,本发明实施例提供了一种加速平台,包括:多个前述实施例提供的加速卡,不同加速卡通过扩展芯片连接,不同加速卡之间可直接进行DMA。
请参见图11,本发明实施例所提供加速平台中的每一加速卡设有存储器直接访问控制器、存储资源寄存器、选择模块和内存;选择模块根据内存空闲容量和加速卡功能确定用于处理执行加速任务获得的需传输数据的其他加速卡;查询其他加速卡的内存空闲信息;其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播内存空闲信息;存储资源寄存器存储其他加速卡的内存空闲信息;存储器直接访问控制器根据内存空闲信息将需传输数据以存储器直接访问方式写入其他加速卡的内存。其中,图11所示加速卡与上述实施例提及的任意加速卡可相互参照。
在一种实施方式中,选择模块还包括:预估单元和选择单元;预估单元预估需传输数据的数据量大小;选择单元查询其他加速卡的数据处理功能,并选择数据处理功能与需传输数据的下一步处理功能一致的、内存空闲容量不小于数据量大小的加速卡。
在一种实施方式中,每一加速卡还设有资源共享模块,资源共享模块预估执行加速任务所需的内存量,若内存的内存空闲容量与内存量的差值大于预设阈值,则广播内存的存储资源使用信息至其他加速卡;若处于空闲状态,则在内存的内存空闲容量大于预设阈值时,广播内存的存储资源使用信息至其他加速卡;相应地,资源共享模块还接收其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播的包括内存空闲信息的存储资源使用信息;根据存储资源使用信息更新存储资源寄存器存储的其他加速卡的内存空闲信息。
在一种实施方式中,任意加速卡利用自身中的存储器直接访问控制器,根据内存空闲信息和需传输数据在自身中占用的内存地址构造描述符信息;按照描述符信息将需传输数据构造为第一报文;将第一报文发送至其他加速卡,以使其他加速卡在确定第一报文的数据写入地址落入内存地址范围后,将第一报文中的需传输数据写入自身内存。
在一种实施方式中,任意加速卡还接收第二报文(用于配置寄存器的报文)并转换第二报文为目标格式;若确定第二报文的数据写入地址落入寄存器地址范围,则将第二报文中的数据写入自身寄存器;利用寄存器中的数据配置地址映射表中的表项和/或修改存储资源使用信息的广播周期。其中,存储资源使用信息的寄存器和存储地址映射表的寄存器不同。具体的,加速卡在确定第二报文的数据写入地址落入内存地址范围后,将第二报文中的数据写入自身内存。
在一种实施方式中,任意加速卡还接收外部主机发送的存储器直接访问请求;在地址映射表中查询存储器直接访问请求中的虚拟地址对应的内存地址;按照内存地址完成存储器直接访问请求。
在一种实施方式中,若需传输数据为加速任务的最终结果,则加速卡将需传输数据发送至外部主机。加速卡接收外部主机通过交换机网络发送的加速任务。
在一种实施方式中,任意加速卡的下游接口为支持串行计算机扩展总线标准的根设备模式接口或从设备模式接口,且下游接口的总线地址范围不小于其所连下游设备的总线地址范围。在一种实施方式中,下游接口的配置过程包括:通过加速卡的上游接口接收下游接口的配置报文;将配置报文转换为符合串行计算机扩展总线标准的第二报文;根据第二报文配置下游设备的总线地址范围,并为下游设备配置标识信息;根据第二报文对下游接口的根设备核或从设备核进行总线地址配置,使下游接口的总线地址范围不小于下游设备的总线地址范围。在一种实施方式中,根据第二报文对下游接口的从设备核进行总线地址配置之前,将第二报文转换为与从设备模式匹配的数据格式。
在一种实施方式中,下游接口有多个;相应地,还包括:加速卡接收任意下游接口所连下游设备发送的数据报文;若数据报文的目的地址不在网络路由窗口内,则判断数据报文的目的地址是否在其他下游接口的转发路由窗口内;若数据报文的目的地址在目的接口的转发路由窗口内,则通过目的接口将数据报文转发至目的接口所连的下游设备;目的接口为其他下游接口中的至少一个。
参照前述实施例提供的图1所示流程,其对应的加速平台可参见图12,在图12中,加速平台包括第一加速卡和第二加速卡,第一加速卡和第二加速卡均设有存储器直接访问控制器、存储资源寄存器、选择模块和内存,第一加速卡和第二加速卡都可以按照图1所示流程进行DMA数据传输。第一加速卡和第二加速卡通过扩展芯片连接。
在本实施例中,加速平台可以包括GPU、FPGA、NPU(Neural Processing Unit,网络处理器)和TPU(Tensor Processing Unit,张量处理器)等加速卡,GPU通常进行纯计算加速,FPGA可以完成计算加速、网络加速和存储加速等应用加速处理。
如图6所示,加速平台可以通过交换网络和主机服务器通信,由此加速平台可以在不改变数据中心原有拓扑的情况下为数据中心中的主机服务器增加池化的高性能计算。并且,加速平台中的各加速卡使用PCIE P2P DMA进行加速卡间的DMA,无论是GPU加速卡还是FPGA加速卡都可以自主发起DMA请求操作,在解耦CPU的情况下实现了P2P DMA。并且,各加速卡还能够基于其自身实现PCIE Switch功能,无需使用额外的PCIE Switch芯片进行连接。
下面对本发明实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与本文描述的其他实施例可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的加速卡间的DMA方法。其中,可读存储介质为计算机可读存储介质,其作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (21)
1.一种加速卡间的DMA方法,其特征在于,应用于无主机的加速平台中的第一加速卡,包括:
若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡;所述加速平台中的每一加速卡均设有存储器直接访问控制器;
在自身中查询所述第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存。
2.根据权利要求1所述的方法,其特征在于,所述根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡,包括:
预估所述需传输数据的数据量大小;
确定具备处理所述需传输数据功能、且内存空闲容量不小于所述数据量大小的第二加速卡。
3.根据权利要求2所述的方法,其特征在于,所述确定具备处理所述需传输数据功能、且内存空闲容量不小于所述数据量大小的第二加速卡,包括:
查询所述加速平台中除所述第一加速卡之外的其他加速卡的数据处理功能,并选择数据处理功能与所述需传输数据的下一步处理功能一致的待选加速卡;
将内存空闲容量不小于所述数据量大小的至少一个待选加速卡确定为所述第二加速卡。
4.根据权利要求1所述的方法,其特征在于,还包括:
预估执行所述加速任务所需的内存量,若自身当前的内存空闲容量与所述内存量的差值大于预设阈值,则广播自身的存储资源使用信息至所述加速平台中除所述第一加速卡之外的其他加速卡。
5.根据权利要求1所述的方法,其特征在于,还包括:
接收所述加速平台中除所述第一加速卡之外的其他加速卡广播的存储资源使用信息;所述其他加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播包括内存空闲信息的存储资源使用信息;
根据所述存储资源使用信息更新自身存储的其他加速卡的内存空闲信息。
6.根据权利要求1所述的方法,其特征在于,所述利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存,包括:
利用自身中的存储器直接访问控制器,根据所述内存空闲信息和所述需传输数据在自身中占用的内存地址构造描述符信息;
按照所述描述符信息将所述需传输数据构造为第一报文;
将所述第一报文发送至所述第二加速卡,以使所述第二加速卡将所述第一报文中的所述需传输数据写入自身内存。
7.根据权利要求6所述的方法,其特征在于,所述第二加速卡将所述第一报文中的所述需传输数据写入自身内存,包括:
所述第二加速卡若确定所述第一报文的数据写入地址落入内存地址范围,则将所述第一报文中的所述需传输数据写入自身内存。
8.根据权利要求1至7任一项所述的方法,其特征在于,还包括:
接收第二报文并转换所述第二报文为目标格式;
若确定所述第二报文的数据写入地址落入寄存器地址范围,则将所述第二报文中的数据写入自身寄存器;
利用寄存器中的数据配置地址映射表中的表项和/或修改存储资源使用信息的广播周期。
9.根据权利要求8所述的方法,其特征在于,还包括:
若确定所述第二报文的数据写入地址落入内存地址范围,则将所述第二报文中的数据写入自身内存。
10.根据权利要求8所述的方法,其特征在于,还包括:
接收外部主机发送的存储器直接访问请求;
在地址映射表中查询所述存储器直接访问请求中的虚拟地址对应的内存地址;
按照所述内存地址完成所述存储器直接访问请求。
11.根据权利要求1至7任一项所述的方法,其特征在于,所述第一加速卡的下游接口为支持串行计算机扩展总线标准的根设备模式接口或从设备模式接口,且所述下游接口的总线地址范围不小于其所连下游设备的总线地址范围。
12.根据权利要求11所述的方法,其特征在于,所述下游接口的配置过程包括:
通过所述第一加速卡的上游接口接收所述下游接口的配置报文;
将所述配置报文转换为符合所述串行计算机扩展总线标准的第二报文;
根据所述第二报文配置所述下游设备的总线地址范围,并为所述下游设备配置标识信息;
根据所述第二报文对所述下游接口的根设备核或从设备核进行总线地址配置,使所述下游接口的总线地址范围不小于所述下游设备的总线地址范围。
13.根据权利要求12所述的方法,其特征在于,根据所述第二报文对所述下游接口的从设备核进行总线地址配置之前,将所述第二报文转换为与从设备模式匹配的数据格式。
14.根据权利要求11所述的方法,其特征在于,所述下游接口有多个;
相应地,还包括:
接收任意下游接口所连下游设备发送的数据报文;
若所述数据报文的目的地址不在网络路由窗口内,则判断所述数据报文的目的地址是否在其他下游接口的转发路由窗口内;
若所述数据报文的目的地址在目的接口的转发路由窗口内,则通过所述目的接口将所述数据报文转发至所述目的接口所连的下游设备;所述目的接口为其他下游接口中的至少一个。
15.一种加速卡间的DMA装置,其特征在于,应用于无主机的加速平台中的第一加速卡,包括:
确定模块,用于若执行加速任务获得需传输数据,则根据内存空闲容量和加速卡功能确定用于处理所述需传输数据的所述加速平台中的第二加速卡;所述加速平台中的每一加速卡均设有存储器直接访问控制器;
查询模块,用于在自身中查询所述第二加速卡的内存空闲信息;所述第二加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
访问模块,用于利用自身中的存储器直接访问控制器和所述内存空闲信息将所述需传输数据以存储器直接访问方式写入所述第二加速卡的内存。
16.一种加速平台,其特征在于,包括:多个加速卡,不同加速卡通过扩展芯片连接;
其中,每一加速卡设有存储器直接访问控制器、存储资源寄存器、选择模块和内存;
所述选择模块根据内存空闲容量和加速卡功能确定用于处理执行加速任务获得的需传输数据的其他加速卡;查询其他加速卡的内存空闲信息;其他加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播所述内存空闲信息;
所述存储资源寄存器存储其他加速卡的内存空闲信息;
存储器直接访问控制器根据所述内存空闲信息将所述需传输数据以存储器直接访问方式写入其他加速卡的内存。
17.根据权利要求16所述的加速平台,其特征在于,所述选择模块还包括:预估单元和选择单元;
所述预估单元预估所述需传输数据的数据量大小;
所述选择单元查询其他加速卡的数据处理功能,并选择数据处理功能与所述需传输数据的下一步处理功能一致的、内存空闲容量不小于所述数据量大小的加速卡。
18.根据权利要求16所述的加速平台,其特征在于,每一加速卡还设有资源共享模块,所述资源共享模块预估执行所述加速任务所需的内存量,若内存的内存空闲容量与所述内存量的差值大于预设阈值,则广播内存的存储资源使用信息至其他加速卡;若处于空闲状态,则在内存的内存空闲容量大于预设阈值时,广播内存的存储资源使用信息至其他加速卡;
相应地,所述资源共享模块还接收其他加速卡在内存空闲容量大于预设阈值时在所述加速平台中广播的包括内存空闲信息的存储资源使用信息;根据所述存储资源使用信息更新所述存储资源寄存器存储的其他加速卡的内存空闲信息。
19.一种加速卡,其特征在于,设有存储器直接访问控制器、存储资源寄存器、选择模块和内存;
所述选择模块根据内存空闲容量和加速卡功能确定用于处理执行加速任务获得的需传输数据的其他加速卡;查询其他加速卡的内存空闲信息;其他加速卡在内存空闲容量大于预设阈值时在加速平台中广播所述内存空闲信息;
所述存储资源寄存器存储其他加速卡的内存空闲信息;
存储器直接访问控制器根据所述内存空闲信息将所述需传输数据以存储器直接访问方式写入其他加速卡的内存。
20.根据权利要求19所述的加速卡,其特征在于,所述加速卡为FPGA加速卡、ASIC加速卡或多核处理器。
21.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279391.0A CN117033275B (zh) | 2023-10-07 | 2023-10-07 | 加速卡间的dma方法、装置、加速卡、加速平台及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279391.0A CN117033275B (zh) | 2023-10-07 | 2023-10-07 | 加速卡间的dma方法、装置、加速卡、加速平台及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117033275A true CN117033275A (zh) | 2023-11-10 |
CN117033275B CN117033275B (zh) | 2024-02-09 |
Family
ID=88632074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311279391.0A Active CN117033275B (zh) | 2023-10-07 | 2023-10-07 | 加速卡间的dma方法、装置、加速卡、加速平台及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117033275B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312229A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535745A (zh) * | 2021-08-09 | 2021-10-22 | 威讯柏睿数据科技(北京)有限公司 | 一种层次化数据库操作加速系统和方法 |
CN113900982A (zh) * | 2021-12-09 | 2022-01-07 | 苏州浪潮智能科技有限公司 | 一种分布式异构加速平台通信方法、系统、设备及介质 |
CN114764374A (zh) * | 2021-01-15 | 2022-07-19 | 安徽寒武纪信息科技有限公司 | 一种在加速卡系统中执行通信任务的方法和设备 |
CN116303141A (zh) * | 2023-03-01 | 2023-06-23 | 上海燧原科技有限公司 | 一种数据传输方法、装置、设备及介质 |
-
2023
- 2023-10-07 CN CN202311279391.0A patent/CN117033275B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114764374A (zh) * | 2021-01-15 | 2022-07-19 | 安徽寒武纪信息科技有限公司 | 一种在加速卡系统中执行通信任务的方法和设备 |
CN113535745A (zh) * | 2021-08-09 | 2021-10-22 | 威讯柏睿数据科技(北京)有限公司 | 一种层次化数据库操作加速系统和方法 |
WO2023015780A1 (zh) * | 2021-08-09 | 2023-02-16 | 威讯柏睿数据科技(北京)有限公司 | 一种层次化数据库操作加速系统和方法 |
CN113900982A (zh) * | 2021-12-09 | 2022-01-07 | 苏州浪潮智能科技有限公司 | 一种分布式异构加速平台通信方法、系统、设备及介质 |
CN116303141A (zh) * | 2023-03-01 | 2023-06-23 | 上海燧原科技有限公司 | 一种数据传输方法、装置、设备及介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312229A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
CN117312229B (zh) * | 2023-11-29 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117033275B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210112003A1 (en) | Network interface for data transport in heterogeneous computing environments | |
CN107690622B9 (zh) | 实现硬件加速处理的方法、设备和系统 | |
KR100775406B1 (ko) | Dma 데이터 전송 장치 및 dma 데이터 전송 방법 | |
CN117033275B (zh) | 加速卡间的dma方法、装置、加速卡、加速平台及介质 | |
CN114546913B (zh) | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 | |
CN114153754B (zh) | 用于计算集群的数据传输方法、装置及存储介质 | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
CN114817120A (zh) | 一种跨域数据共享方法、系统级芯片、电子设备及介质 | |
CN113472624A (zh) | 一种基于vDPA实现虚拟网络数据包转发的方法及应用 | |
CN117312229B (zh) | 一种数据传输装置、数据处理设备、系统、方法及介质 | |
CN117591450B (zh) | 一种数据处理系统、方法、设备及介质 | |
CN115686836A (zh) | 一种安装有加速器的卸载卡 | |
CN110737618A (zh) | 内嵌处理器进行快速数据通信的方法、装置及存储介质 | |
US20230153153A1 (en) | Task processing method and apparatus | |
US20230198740A1 (en) | Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device | |
US20190286606A1 (en) | Network-on-chip and computer system including the same | |
CN116418848A (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
CN111240845A (zh) | 一种数据处理方法、装置和存储介质 | |
CN117421268A (zh) | 一种互联系统、设备及网络 | |
CN118170699B (zh) | 数据传输方法、设备及存储介质、数据采集系统 | |
CN114124850B (zh) | 一种网络通信方法及装置、存储介质 | |
CN114253733B (zh) | 一种内存管理方法、装置、计算机设备和存储介质 | |
CN113297111B (zh) | 人工智能芯片及其操作方法 | |
US12001370B2 (en) | Multi-node memory address space for PCIe devices | |
CN114610661B (zh) | 数据处理装置、方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |