CN116932097A - 一种用于驱动多dpu协同工作的驱动方法和系统 - Google Patents
一种用于驱动多dpu协同工作的驱动方法和系统 Download PDFInfo
- Publication number
- CN116932097A CN116932097A CN202311015214.1A CN202311015214A CN116932097A CN 116932097 A CN116932097 A CN 116932097A CN 202311015214 A CN202311015214 A CN 202311015214A CN 116932097 A CN116932097 A CN 116932097A
- Authority
- CN
- China
- Prior art keywords
- dpu
- hardware
- dpus
- sub
- instruction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000006870 function Effects 0.000 claims abstract description 139
- 238000012545 processing Methods 0.000 claims abstract description 67
- 239000000872 buffer Substances 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种用于驱动多DPU协同工作的驱动方法和系统,所述方法包括:通过应用编程接口接收来自上层的原始指令,基于多个DPU的硬件功能协同工作方式确定每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令,其中,所述多个DPU的硬件功能协同工作方式包括每个DPU独立完成相同硬件功能的横向协同方式和每个DPU分别完成完整硬件功能中的部分硬件功能的纵向协同方式;将每个子指令所对应的处理负载传递到相应的DPU,并向每个DPU提供支持实现目标功能的子驱动;获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据。本发明能够在降低上层实现复杂功能的软件设计难度的同时提高多DPU硬件协作的处理性能。
Description
技术领域
本发明涉及外设驱动技术领域,尤其涉及一种用于驱动多DPU协同工作的驱动方法和系统。
背景技术
DPU(Data Processing Unit)是以数据为中心构造的专用处理器,随着DPU技术的兴起,DPU功能越来越强大,其硬件实现也越来越复杂。当一个单独的DPU无法实现一个更复杂功能时,可能的技术路线包括:(1)将DPU功能进行横向拆分,使每一个DPU独立完成相同的功能,通过负载分担的方式对上提供高规格性能;(2)将DPU功能进行纵向拆分,使每个DPU完成一部分功能,DPU之间相互配合实现一个复杂功能。
以上将DPU功能横向拆分或纵向拆分的方法虽然可以显著降低单一硬件功能的实现难度,但是均可能增加对于Host主机的软件实现上的复杂性。
为此,如何提供一种在DPU功能横向拆分和纵向拆分的模式下的克服软件实现复杂性的方法,是一个亟待解决的技术问题。
发明内容
鉴于此,本发明实施例提供了一种用于驱动多DPU协同工作的通用驱动方法和系统,以消除或改善现有技术中存在的一个或更多个缺陷。
本发明的一个方面提供了一种用于驱动多DPU协同工作的驱动方法,该方法包括以下步骤:通过应用编程接口接收来自上层的原始指令,基于多个DPU的硬件功能协同工作方式确定每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令,其中,所述多个DPU的硬件功能协同工作方式包括每个DPU独立完成相同硬件功能的横向协同方式和每个DPU分别完成完整硬件功能中的部分硬件功能的纵向协同方式;将每个子指令所对应的处理负载传递到相应的DPU,并向每个DPU提供支持实现目标功能的子驱动;获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据。
在本发明的一些实施例中,来自上层的原始指令、每个子指令所对应的处理负载和向上层反馈的数据基于PCIe协议进行传输。
在本发明的一些实施例中,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令包括:当多个DPU的硬件功能协同工作方式为横向协同方式,每个DPU的目标功能功能相同且包含目标实现的完整硬件功能,将所述原始指令所对应的处理负载基于负载均衡的原则分配到不同的DPU,并生成相应的针对每个DPU的子指令。
在本发明的一些实施例中,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的子指令还包括:当多个DPU的硬件功能协同工作方式为横向协同方式,对于存在设备故障的DPU选择忽略,并将所述原始指令所对应的处理负载基于负载均衡的原则分配到不存在设备故障的其他DPU。
在本发明的一些实施例中,在所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤后,该方法还包括:将生成的向上层反馈的数据放置在缓存器中;当通过应用编程接口接收到来自上层的调用指令,基于调用指令所对应的处理负载从所述缓存器中获取相应数据并向上层反馈。
在本发明的一些实施例中,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令包括:当多个DPU的硬件功能协同工作方式为纵向协同方式,每个DPU的目标功能不同且分别包含完整功能中的部分功能,将所述原始指令所对应的处理负载按照每一DPU的目标功能和记录待实现功能的原始指令进行分配,并生成相应的针对每个DPU的子指令。
在本发明的一些实施例中,所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤包括:DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载并生成向上层反馈的数据。
在本发明的一些实施例中,该方法还包括:DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载后,生成对其他DPU的进行操作的子指令和相应的负载任务。
本发明的另一方面提供了一种用于驱动多DPU协同工作的驱动系统,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如上实施例中任一项所述方法的步骤。
本发明的另一方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上实施例中任一项所述方法的步骤。
本发明所提供的用于驱动多DPU协同工作的驱动方法和系统,能够针对多个DPU硬件的横向协同方式和纵向协同方式将多个DPU硬件虚拟为一个DPU硬件,并将该统一的虚拟的DPU硬件通过应用编程接口提供给上层,一方面降低了上层实现复杂功能的软件设计难度,另一方面协同工作的多个DPU硬件也提供了更强的处理性能,进而支持更为复杂的DPU功能的设计。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。附图中的部件不是成比例绘制的,而只是为了示出本发明的原理。为了便于示出和描述本发明的一些部分,附图中对应部分可能被放大,即,相对于依据本发明实际制造的示例性装置中的其它部件可能变得更大。在附图中:
图1为本发明一实施例中用于驱动多DPU协同工作的通用驱动方法流程图。
图2为本发明一实施例中基于负载分担的横向协同方式的系统架构。
图3为本发明一实施例中基于功能拆分的纵向协同方式的系统架构。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
DPU驱动是添加到Host主机的操作系统中的特殊程序,其中包含有关DPU硬件的信息,Host主机基于DPU驱动调动DPU硬件以实现目标功能,本发明通过改进DPU驱动架构以克服将DPU功能横向拆分或纵向拆分导致的软件实现复杂性的问题。
在当前的DPU驱动架构中,每一种硬件功能要求对应一个独立的驱动模块,驱动仅为对应硬件功能提供软件接口,通过驱动向上层提供预定功能,驱动在软件栈中位于软硬件之间,在Host主机的操作系统的应用层对这些功能进行整合,这显然会导致软件与硬件方案的极度耦合。这意味着硬件方案无论采用横向拆分还是纵向拆分,软件必须以与其匹配的不同方案来实现。其中,需要说明的是,驱动的上层包括了内核的上层模块和用户态的应用(或软件),具体包括:(1)与驱动对接的内核模块(Kernel Module),例如,向Linux网络子系统暴露的xmit、ndev_ops、ethtool_ops等;(2)Linux驱动框架定义的、向应用层暴露的接口,向应用层暴露的包括文件系统定义的标准API接口,例如,用于读写的read、write,字符设备框架定义的ioctl等,sysfs文件系统定义的load、store,还有netlink定义的各种接口。
因此,本发明需要从驱动层面对被分割的硬件功能进行整合,就可以将横向拆分或纵向拆分的多个DPU以一个独立完整硬件功能暴露给软件,使软件不必感知底层细节,降低系统耦合。
同时,在解决上述问题的过程中,改进的DPU驱动架构还需要遵从现有OS驱动框架的约束,硬件设备的驱动仍然以既有方式加载,同时需要支持不同独立硬件之间的协作关系,最后驱动对上以一个独立设备的形式提供功能接口。其中,既有的硬件设备的驱动注册在操作系统中,在用户通过操作系统(如个人电脑上的)访问某个硬件以实现其相应功能的时候,操作系统查找并加载该驱动系统。
为了克服现有的DPU驱动方法存在的缺陷,本发明提出了一种用于驱动多DPU协同工作的驱动方法和驱动框架,该方法通过改进DPU驱动架构以克服将DPU功能横向拆分或纵向拆分导致的软件实现复杂性的问题,使得不同的底层硬件功能划分方式都能以预定方式向上层提供统一功能,并对上体现为一个独立的硬件功能。该驱动框架通过子驱动管理层管理相同或不同类型的DPU驱动,并通过通用驱动层管理和DPU硬件驱动和DPU硬件,并将集成抽象出的DPU硬件整体通过应用编程接口提供给应用。本发明提出了一种用于驱动多DPU协同工作的驱动方法和驱动框架,使得不同的底层硬件功能划分方式都能以预定方式向上层提供统一功能,并对上体现为一个独立的硬件功能。DPU驱动是添加到Host主机的操作系统中的特殊程序,其中包含有关DPU硬件的信息,Host主机基于DPU驱动调动DPU硬件以实现目标功能。
图1为本发明一实施例中用于驱动多DPU协同工作的通用驱动方法流程图,该方法的执行主体为驱动系统,该方法包含以下步骤:
步骤S110:通过应用编程接口接收来自上层的原始指令,基于多个DPU的硬件功能协同工作方式确定每个DPU的目标功能,将原始指令转化并分发为针对每个DPU的目标功能的子指令,其中,多个DPU的硬件功能协同工作方式包括每个DPU独立完成相同硬件功能的横向协同方式和每个DPU分别完成完整硬件功能中的部分硬件功能的纵向协同方式。
其中,原始指令无需针对多DPU硬件的协同工作进行专门设计,而是直接对一个“整体DPU硬件”的调用,所述整体DPU硬件是本发明所提出的驱动对多个DPU硬件的调用,其本质是对来自上层的原始指令进行拆解和分发,以及对多个DPU硬件处理的结果进行统计和返回。将原始指令转化并分发为针对每个DPU的目标功能的子指令包含了将原始指令所对应的原始计算负载拆分成多个子计算负载,子指令将子指令负载、子驱动和进行处理的DPU关联起来。
步骤S120:将每个子指令所对应的处理负载传递到相应的DPU,并向每个DPU提供支持实现目标功能的子驱动。
其中,子驱动是针对每个DPU硬件的驱动,子驱动可以是基于所实现的功能分类存储的,也可以是基于DPU硬件的编号所分门别类存储的。子驱动由DPU驱动架构中的子驱动管理层进行统一管理,并接收DPU硬件的调用将驱动提供给相应的DPU硬件。
步骤S130:获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据。
其中,向上层反馈的数据通过PCIe接口传输回上层(应用)或操作系统。基于DPU的处理负载的结果解析需要向上层传输的数据的执行主体是DPU设备,驱动系统在这个步骤中的作用是驱动DPU将处理结果发送到PCIe接口并传输回指定的应用。
在本发明的一些实施例中,在步骤S110之前,该方法还包括:当协同工作的多个DPU硬件连接到主机,通用驱动程序识别每个DPU硬件、多个DPU硬件的协同工作方式和每个DPU硬件的预设功能,并遵从主机上操作系统的驱动框架,将通用驱动程序加载到所述操作系统内核中。其中,所述通用驱动程序基于识别的每个DPU硬件、多个DPU硬件的协同工作方式和每个DPU硬件的预设功能,将协同工作的多个DPU硬件虚拟抽象为一个统一的DPU硬件,创建呈现给上层的用于描述所述统一的DPU硬件信息的设备文件,并向上层提供对所述统一的DPU硬件进行访问的所述应用编程接口。以上的DPU驱动架构遵从现有的操作系统功能驱动框架(即驱动注册到操作系统的标准流程),保障了本方法的扩展性,本发明所提供的通用驱动方法和驱动系统,能够在极小的适应成本前提下应用到Windows、MacOS和Linux操作系统之中。在本实施例中,该驱动系统将多个DPU硬件虚拟为一个整体DPU硬件,并构建针对上层的统一的设备文件,提供相应的应用程序接口(Application ProgrammingInterface,API)给上层以进行调用或访问。驱动程序(Device Driver)是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作。
在本发明一实施例中,来自上层的原始指令、每个子指令所对应的处理负载和向上层反馈的数据基于PCIe协议进行传输。其中,DPU硬件通常基于PCIe接口连接到操作系统所在的主机或服务器等设备。PCIe协议具备较好的数据传输协议和非常广泛的使用范围,绝大多数设备的主板兼容PCIe接口。PCIe标准(Peripheral Component InterconnectExpress,又称PCI-Express)是计算机总线的一个重要分支,它沿用既有的PCI编程概念及信号标准,并且构建了更加高速的串行通信标准,这一标准目前由PCI-SIG组织制定和维护,PCIe仅用于内部互连,PCIe拥有更快的速率,几乎取代了以往所有的内部总线(包括AGP和PCI)。PCIe的连接是创建在一个单向的序列的点对点连接基础上,这称之为通道(lane)。PCIe是一个多层协议,由事务层,数据交换层和物理层构成。物理层又可分为逻辑子层和电气子层,逻辑子层可分为物理代码子层(PCS)和介质接入控制子层(MAC)。
在本发明的步骤S110中,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令步骤,包括:
步骤S111:当多个DPU的硬件功能协同工作方式为横向协同方式,每个DPU的目标功能功能相同且包含目标实现的完整硬件功能,将原始指令所对应的处理负载基于负载均衡的原则分配到不同的DPU,并生成相应的针对每个DPU的子指令。
步骤S112:当多个DPU的硬件功能协同工作方式为纵向协同方式,每个DPU的目标功能不同且分别包含完整功能中的部分功能,将所述原始指令所对应的处理负载按照每一DPU的目标功能和记录待实现功能的原始指令进行分配,并生成相应的针对每个DPU的子指令。其中,在本发明一具体实施例中,该分配过程可以包括工序的划分也可能包括功能的划分,这种划分是基于DPU硬件实际所目标实现的整体功能进行的划分,DPU硬件是可以根据用于的实际需求进行定制的,例如用于服务器数据的特定筛选处理等。
这种对于横向协同和纵向协同的区别设计,增加了DPU硬件在功能设计上的灵活性,扩展了DPU实现复杂功能的能力,横向协同的方法能够处理更高“带宽”的计算负载,纵向协同的方法能够处理功能线性复杂度更高的任务,而每个DPU处理单个任务又保障了计算上的高效。
可选地,步骤S111中采取加权负载均衡的策略。基于负载均衡的任务分配方法,能够保障各个DPU处理任务的时间均匀,降低了DPU空转的发生率,保障了DPU的利用效率。
可选地,在步骤S112中采取负载均衡的策略进行功能划分,获取DPU整体功能的各个局部功能的运算量,建立和所述运算量成正比的针对各个局部功能的权重,基于所述权重将DPU整体功能划分为各个局部功能。
可选地,在步骤S110中该方法还包括:当多个DPU的硬件功能协同工作方式为横向协同方式,对于存在设备故障的DPU选择忽略,并将所述原始指令所对应的处理负载基于负载均衡的原则分配到不存在设备故障的其他DPU。
在本发明一实施例中,在步骤S130中,所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤包括:DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载并生成向上层反馈的数据。进一步地,该方法还包括:DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载后,生成对其他DPU的进行操作的子指令和相应的负载任务。
在步骤S130之后,在所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤后,该方法还包括:将生成的向上层反馈的数据放置在缓存器中;当通过应用编程接口接收到来自上层的调用指令,基于调用指令所对应的处理负载从所述缓存器中获取相应数据并向上层反馈。其中,处理负载对应的原始指令或子指令包含了负载的来源信息,也指明了目标得到的结果。
在本发明一具体实施例中,在基于该通用驱动方法进行DPU处理计算负载的过程中,对于H2C(host to client)方向的数据流,驱动根据所聚合的硬件设备,按照既定规则进行分发,并传递到具体的硬件,对于C2H(client to host)方向的数据流,驱动可以按照中断或轮询的方式,获得数据,并根据既定的规则生成需要向上层反馈的数据,上述既定规则具体包含两种情况:(1)横向拆分,H2C方向需要驱动将处理负载尽可能均匀的分担到不同硬件及硬件的处理单元中,C2H方向将接收数据放在各自的接收buffer,并在上层调用接收API时,根据具体的业务从相应的接收buffer中获取数据并返回。(2)纵向拆分,H2C方向需要将处理负责根据所需要的功能分别分发到不同的硬件单元,C2H方向在各个组件驱动获取数据后,根据各自的依赖关系,触发对不同硬件的操作,或者形成对上返回的数据。并触发驱动执行相应的操作。
与上述方法相应地,本发明还提供了一种用于驱动多DPU协同工作的驱动系统,该系统包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如前所述方法的步骤。
其中,本发明所提出的驱动系统的架构包括:应用编程接口,用于接收来自上层的原始指令;统一驱动层,用于基于多个DPU的硬件功能协同工作方式和每个DPU硬件的目标功能,将所述原始指令转化并分发为针对每个DPU硬件的子指令,获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据;其中,所述多个DPU的硬件功能协同工作方式包括每个DPU硬件独立完成相同功能的横向协同方式和每个DPU硬件分别完成完整功能中的部分功能的纵向协同方式;子驱动管理层,用于将每个子指令所对应的处理负载传递到相应的DPU硬件,并向每个DPU硬件提供支持实现目标功能的子驱动。
如图2和图3所示,图2为本发明一实施例中基于负载分担的横向协同方式的系统架构,在横向硬件功能协同情境下,每个设备均完成全部的功能,通用驱动层将来自应用编程接口的原始指令拆分为多个子指令,将原始计算负载均衡的分配到每个DPU硬件,DPU设备与计算机系统通过PCIe协议接口进行数据传输,DPU硬件处理的结果也通过应用编程接口返回到原始指令的发起方/来源方。图3为本发明一实施例中基于功能拆分的纵向协同方式的系统架构,在纵向硬件协同情境下,每个设备完成整体功能中的一部分,通用驱动层将来自应用编程接口的原始指令拆分为多个子指令,将原始计算负载按照顺序输入到DPU硬件并管理输出内容,DPU设备与计算机系统通过PCIe协议接口进行数据传输,DPU硬件处理的结果也通过应用编程接口返回到原始指令的发起方/来源方。
在图2和图3中,自驱动管理层(integrate level)记录有所聚合的DPU硬件设备的型号、种类、编号和所用于实现的功能等。进一步地,基于本方法的驱动按照中断或轮询的方式,获得每个DPU硬件的处理负载的结果(数据或数据流),并根据既定的规则生成需要向上层反馈的数据。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现如前所述方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本发明所提供的用于驱动多DPU协同工作的驱动方法和系统,能够针对多个DPU硬件的横向协同方式和纵向协同方式将多个DPU硬件虚拟为一个DPU硬件,使得软件无需感知底层硬件是否为虚拟(或抽象)而成的设备,并将该统一的虚拟的DPU硬件通过应用编程接口提供给上层,从而避免了在Host主机上的软件在开发调用DPU的程序过程中由于考虑多个DPU硬件协同所导致的软件实现上的复杂性,一方面降低了上层实现复杂功能的软件设计难度,另一方面协同工作的多个DPU硬件也提供了更强的处理性能,进而支持更为复杂的DPU功能的设计。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于驱动多DPU协同工作的驱动方法,其特征在于,该方法包括以下步骤:
通过应用编程接口接收来自上层的原始指令,基于多个DPU的硬件功能协同工作方式确定每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令,其中,所述多个DPU的硬件功能协同工作方式包括每个DPU独立完成相同硬件功能的横向协同方式和每个DPU分别完成完整硬件功能中的部分硬件功能的纵向协同方式;
将每个子指令所对应的处理负载传递到相应的DPU,并向每个DPU提供支持实现目标功能的子驱动;
获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据。
2.根据权利要求1所述的方法,其特征在于,来自上层的原始指令、每个子指令所对应的处理负载和向上层反馈的数据基于PCIe协议进行传输。
3.根据权利要求1所述的方法,其特征在于,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令包括:
当多个DPU的硬件功能协同工作方式为横向协同方式,每个DPU的目标功能功能相同且包含目标实现的完整硬件功能,将所述原始指令所对应的处理负载基于负载均衡的原则分配到不同的DPU,并生成相应的针对每个DPU的子指令。
4.根据权利要求3所述的方法,其特征在于,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的子指令还包括:
当多个DPU的硬件功能协同工作方式为横向协同方式,对于存在设备故障的DPU选择忽略,并将所述原始指令所对应的处理负载基于负载均衡的原则分配到不存在设备故障的其他DPU。
5.根据权利要求3所述的方法,其特征在于,在所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤后,该方法还包括:
将生成的向上层反馈的数据放置在缓存器中;
当通过应用编程接口接收到来自上层的调用指令,基于调用指令所对应的处理负载从所述缓存器中获取相应数据并向上层反馈。
6.根根据权利要求1所述的方法,其特征在于,所述基于多个DPU的硬件功能协同工作方式和每个DPU的目标功能,将所述原始指令转化并分发为针对每个DPU的目标功能的子指令包括:
当多个DPU的硬件功能协同工作方式为纵向协同方式,每个DPU的目标功能不同且分别包含完整功能中的部分功能,将所述原始指令所对应的处理负载按照每一DPU的目标功能和记录待实现功能的原始指令进行分配,并生成相应的针对每个DPU的子指令。
7.根据权利要求6所述的方法,其特征在于,所述获得每个DPU的处理负载的结果,并基于全部DPU的处理负载的结果生成向上层反馈的数据步骤包括:
DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载并生成向上层反馈的数据。
8.根据权利要求7所述的方法,其特征在于,该方法还包括:
DPU所对应的子驱动在接收到子指令后,触发对相应DPU的操作以完成处理负载后,生成对其他DPU的进行操作的子指令和相应的负载任务。
9.一种用于驱动多DPU协同工作的驱动系统,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如权利要求1至8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311015214.1A CN116932097B (zh) | 2023-08-11 | 2023-08-11 | 一种用于驱动多dpu协同工作的驱动方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311015214.1A CN116932097B (zh) | 2023-08-11 | 2023-08-11 | 一种用于驱动多dpu协同工作的驱动方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116932097A true CN116932097A (zh) | 2023-10-24 |
CN116932097B CN116932097B (zh) | 2024-08-06 |
Family
ID=88382637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311015214.1A Active CN116932097B (zh) | 2023-08-11 | 2023-08-11 | 一种用于驱动多dpu协同工作的驱动方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932097B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241305A (zh) * | 2016-12-28 | 2017-10-10 | 神州灵云(北京)科技有限公司 | 一种基于多核处理器的网络协议分析系统及其分析方法 |
CN109271156A (zh) * | 2018-09-25 | 2019-01-25 | Oppo广东移动通信有限公司 | 游戏平台的底层调用方法及相关产品 |
CN109271155A (zh) * | 2018-09-11 | 2019-01-25 | Oppo广东移动通信有限公司 | 游戏平台的能力调用方法及相关产品 |
CN115203142A (zh) * | 2022-07-27 | 2022-10-18 | 重庆大学 | 一种多核核间实时通信系统及方法 |
CN115516425A (zh) * | 2020-05-29 | 2022-12-23 | 英特尔公司 | 用于工作负载经优化中央处理单元(cpu)的系统、方法和装置 |
US20220414027A1 (en) * | 2021-06-23 | 2022-12-29 | Dell Products, L.P. | Platform framework standby operation |
-
2023
- 2023-08-11 CN CN202311015214.1A patent/CN116932097B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241305A (zh) * | 2016-12-28 | 2017-10-10 | 神州灵云(北京)科技有限公司 | 一种基于多核处理器的网络协议分析系统及其分析方法 |
CN109271155A (zh) * | 2018-09-11 | 2019-01-25 | Oppo广东移动通信有限公司 | 游戏平台的能力调用方法及相关产品 |
CN109271156A (zh) * | 2018-09-25 | 2019-01-25 | Oppo广东移动通信有限公司 | 游戏平台的底层调用方法及相关产品 |
CN115516425A (zh) * | 2020-05-29 | 2022-12-23 | 英特尔公司 | 用于工作负载经优化中央处理单元(cpu)的系统、方法和装置 |
US20220414027A1 (en) * | 2021-06-23 | 2022-12-29 | Dell Products, L.P. | Platform framework standby operation |
CN115203142A (zh) * | 2022-07-27 | 2022-10-18 | 重庆大学 | 一种多核核间实时通信系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116932097B (zh) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853142B2 (en) | Stateless instance backed mobile devices | |
CN111490949B (zh) | 用于转发数据包的方法、网卡、主机设备和计算机系统 | |
WO2017066944A1 (zh) | 一种存储设备访问方法、装置和系统 | |
US10908895B2 (en) | State-preserving upgrade of an intelligent server adapter | |
CN112764872B (zh) | 计算机设备、虚拟化加速设备、远程控制方法及存储介质 | |
CN111314799A (zh) | 终端系统构架、通信系统及通信方法、存储介质 | |
EP2754030A1 (en) | Virtual switch extensibility | |
CN114553635B (zh) | Dpu网络设备中的数据处理方法、数据交互方法及产品 | |
US7539987B1 (en) | Exporting unique operating system features to other partitions in a partitioned environment | |
CN105389199A (zh) | 一种基于Xen的FPGA加速器虚拟化平台及应用 | |
CN103874984A (zh) | 可虚拟化以及前向兼容硬件-软件接口 | |
US11750749B1 (en) | Method to use native scanning properties dialog to scan in scanner redirection | |
CN115599502B (zh) | 基于虚拟机监控器的rtos网络共享方法 | |
CN111490946B (zh) | 基于OpenCL框架的FPGA连接实现方法及装置 | |
CN110048875A (zh) | 一种升级驱动的方法及设备 | |
CN116886751A (zh) | 一种异构设备的高速通信方法、装置和异构通信系统 | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
CN110083468A (zh) | 一种数据传输方法、电子装置和存储介质 | |
CN115686836A (zh) | 一种安装有加速器的卸载卡 | |
CN103092676A (zh) | 虚拟机集群的模拟输入输出方法、装置及系统 | |
CN116932097B (zh) | 一种用于驱动多dpu协同工作的驱动方法和系统 | |
CN117555832A (zh) | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 | |
CN108351802B (zh) | 计算机数据处理系统和用于虚拟机通信的基于通信流量的优化的方法 | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN108874699B (zh) | 多系统使用mtp功能的方法、装置及电子设备 |
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 |