CN115576661A - 数据处理系统、方法和控制器 - Google Patents
数据处理系统、方法和控制器 Download PDFInfo
- Publication number
- CN115576661A CN115576661A CN202111313944.0A CN202111313944A CN115576661A CN 115576661 A CN115576661 A CN 115576661A CN 202111313944 A CN202111313944 A CN 202111313944A CN 115576661 A CN115576661 A CN 115576661A
- Authority
- CN
- China
- Prior art keywords
- data processing
- data
- queue
- controller
- accelerator
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 595
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000006870 function Effects 0.000 claims abstract description 45
- 238000004891 communication Methods 0.000 claims description 30
- 238000013473 artificial intelligence Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 18
- 238000011156 evaluation Methods 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 45
- 230000003068 static effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000003672 processing method Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种数据处理的系统,包括:处理器、控制器和多个加速器,其中,控制器分别与处理器和多个加速器耦合;控制器,用于从处理器或者任意一个加速器处获取静荷数据;再根据调度策略从多个加速器中选择一个算力需求匹配的第一加速器;将静荷数据发送给第一加速器。通过控制器替代中央处理器CPU执行静荷数据的调度过程,可以完全卸载CPU功能,避免由于CPU的处理能力和总线带宽限制整个系统的数据处理效率,无法充分发挥整个系统的算力的问题。
Description
本申请要求于2021年6月21日提交中国专利局、申请号为202110685809.2、发明名称为“数据处理的方法、控制装置和计算机可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机领域,尤其涉及一种数据处理系统、方法和控制器。
背景技术
随着计算机领域中处理器技术的发展,包括中央处理器(central processingunit,CPU)和其他类型的处理器的异构系统在越来越多场景得到广泛应用,例如,在分布式存储场景中使用加速器执行数据加密操作;在大数据场景中,使用加速器执行数据的重删或压缩操作;在云手机、云游戏场景中,使用加速器(例如,图形处理器(graphicprocessing unit,GPU))执行图像渲染操作等,上述场景中均以加速器执行CPU功能卸载操作。但是,卸载过程仍需要CPU参与消息的传输过程,例如,CPU需要识别处理数据处理请求的加速器,或者,当同一系统内需要不同加速器先后执行数据处理请求的操作时,加速器之间消息的传输过程仍需经由CPU的处理。上述过程都未完全将CPU功能卸载至加速器,而且,CPU的处理能力和总线带宽还会限制整个系统的数据处理效率,无法充分发挥整个系统的算力,因此,如何提供一种更高效的数据处理方法成为亟待解决的技术问题。
发明内容
本申请提供了一种数据处理系统、方法和控制器,可以提升数据处理的效率。
第一方面,提供一种数据处理系统,包括处理器、控制器和多个加速器,其中,控制器分别与处理器和多个加速器耦合。控制器,用于从处理器或者任意一个加速器处获取静荷数据;根据调度策略从多个加速器中选择一个算力需求匹配的第一加速器;将静荷数据发送给第一加速器。通过控制器替代中央处理器CPU执行静荷数据的调度过程,可以完全卸载CPU功能,避免由于CPU的处理能力和总线带宽限制整个系统的数据处理效率,无法充分发挥整个系统的算力的问题,提升数据处理的效率。
在一种可能的实现方式中,控制器,具体用于获取第一数据处理请求,并解析第一数据处理请求获取其携带的静荷数据。
在一种可能的实现方式中,控制器包括输入通信接口,输入通信接口包括物理功能PF和虚拟功能VF,处理器或多个加速器分别通过物理功能PF或虚拟功能VF获取第一数据处理请求。通过虚拟化技术扩展通信接口的通信能力,使得处理器和加速器可以分别通过PF或VF与控制器建立数据传输的通道,即保证了业务流的数据可以通过指定通道有效传输,同时,控制器可以通过多个通道实现并发处理的能力,提升了控制器的并发处理能力,进而优化了整个系统的数据处理效率。
在另一种可能的实现方式中,第一数据处理请求还包括通道标识,通道标识用于指示传输第一数据处理请求的通道的标识,通道用于指示控制器与处理器或多个加速器之间传输特定业务流的数据处理请求的通路。通过通道标识标记各个通道,使得控制器可以根据该通道标识进一步确定存储该数据处理请求的提交队列,进而有效保证特定业务流的数据处理请求可以被有效调度和传输。
在另一种可能的实现方式中,控制器,具体用于获取第一数据处理请求中通道标识和静荷数据;根据通道标识将静荷数据存储至第一提交队列,第一提交队列用于存储与通道标识关联的业务流的数据处理请求。控制器可以实现硬件队列功能,即利用硬件实现队列的管理和调度,在控制器获取第一数据处理请求的静荷数据后,可以根据通道标识确定与其关联的提交队列,并将第一数据处理请求存储至该提交队列,以便按照接收顺序依次处理各个数据处理请求。
在另一种可能的实现方式中,控制器还包括第一处理队列集合,第一处理队列集合包括第一空闲队列和第一运行队列,第一空闲队列包括多个存储单元,当需要在所述控制器内执行静荷数据搬迁时,根据静荷数据的大小从多个存储单元中选择存储单元,并将该存储单元挂载至第一运行队列。控制器可以实现硬件队列功能,其中,硬件队列还包括处理队列集合,处理队列集合用于控制器执行数据处理请求的调度。
在另一种可能的实现方式中,控制器,具体用于根据通道标识将第一数据处理请求搬迁至第一空闲队列的第一存储单元;并将第一存储单元挂载至第一运行队列,第一空闲队列和第一运行队列归属的第一处理队列集合与第一提交队列关联。同一通道标识除了与一个或多个提交队列关联外,在控制器执行调度过程中,还可以根据通道标识确定与同一提交队列关联的处理队列集合,进而将待处理的数据处理请求存储至运行队列,使得控制器监控该运行队列的处理单元执行相应的处理操作,实现待处理的数据处理请求的传输过程。
在另一种可能的实现方式中,控制器,具体用于对第一运行队列加锁;获取第一数据处理请求的数据处理类型和静荷数据;当数据处理类型为特定操作时,确定第一数据处理请求的算力需求;根据算力需求确定与第一数据处理请求的数据处理类型和算力需求匹配的第一加速器。由于控制器中同一运行队列可以被一个或多个处理单元监控,为了避免多个处理单元同时对同一运行队列中待处理的数据处理请求执行操作所带来的数据不一致问题,可以在执行具体操作前,首先对第一运行队列执行加锁操作,然后,再根据第一数据处理请求的算力需求确定与第一数据处理请求的数据处理类型和算力需求匹配的第一加速器,进而完成数据处理请求的调度过程。
在另一种可能的实现方式中,控制器,具体获取与数据处理类型匹配的多个加速器的硬件信息,硬件信息包括硬件能力、硬件负载和数据传输距离;根据硬件信息计算多个加速器的评估分数;以及,选择评估分数最高的加速器为所述第一加速器。通过上述方法,控制器可以各个加速器的评估分数选择第一加速器,提升数据处理请求的处理效率。
在另一种可能的实现方式中,控制器,具体用于判断第一数据处理请求中静荷数据的长度是否超过第一阈值;当静荷数据的长度低于第一阈值时,执行合并操作,将第一数据处理请求集合合并为第二数据处理请求,第一数据处理请求集合包括第一数据处理请求的静荷数据和第一运行队列中与存储第一数据处理请求相邻的其他存储单元的数据处理请求的静荷数据;生成第二数据处理请求,第二数据处理请求中消息头段的数据总长度为合并后的静荷数据的总长度,消息头段包括状态标志、数据段类型、数据段有效长度、数据段总长度、队列标识、数据处理类型、描述段长度中至少一种。对于待处理的数据处理请求中携带过小的静荷数据的情况,可以通过合并操作将同一运行队列中两个或两个以上的待处理的数据处理请求进行合并,也即将各个数据处理请求的静荷数据合并后作为第二数据处理请求的静荷数据,并更新消息头字段,生成第二数据处理请求。通过上述合并操作,可以减少控制器搬迁数据处理请求的次数。此外,第一加速器同样可以减少获取数据处理请求的次数,一次数据处理请求的获取过程可以针对多个静荷数据执行相应的操作,同样提升了数据处理的效率。
在另一种可能的实现方式中,控制器,具体用于当第一数据处理请求的静荷数据的长度高于第二阈值时,执行拆分操作,将第一数据处理请求的静荷数据拆分为多个数据块,在第一运行队列中申请第二存储单元集合,利用第一存储单元和第二存储单元集合分别存储多个数据块,第二存储单元集合包括至少一个第二存储单元;生成多个第二数据处理请求,每个第二数据处理请求的消息头段包括状态标志、数据段类型、数据段有效长度、数据段总长度、队列标识、数据处理类型、描述段长度中至少一种。对于待处理的数据处理请求中静荷数据过大的情况,控制器还可以根据加速器的处理能力将同一个静荷数据拆分为多个数据块,每个数据块作为一个新的数据处理请求的静荷数据,并更新消息头字段。再分别将各个数据块所在第二数据处理请求分别传输给第一加速器,使得第一加速器可以依据自身的处理能力逐个处理各个数据块,避免静荷数据过大导致第一加速器无法有效处理或处理速度慢的问题。
在另一种可能的实现方式中,第一阈值小于第二阈值。
在另一种可能的实现方式中,第一阈值等于第二阈值。
在另一种可能的实现方式中,控制器还包括输出接口,输出接口包括物理功能PF和虚拟功能VF,控制器分别通过物理功能PF或虚拟功能向第一加速器发送静荷数据。控制器的输出接口用于将其获取的静荷数据传输至加速器,为了提升控制器的并发处理能力,可以通过PF和VF分别与多个加速器连接,通过不同通道向各个加速器分别传输其待处理的静荷数据。
在另一种可能的实现方式中,控制器,具体用于从第一运行队列中获取第二数据处理请求;确定与第一加速器关联的完成队列,完成队列用于存储待向第一加速器发送的第二数据处理请求;将第二数据处理请求存储至完成队列;向第一加速器发送第二数据处理请求,第二数据处理请求包括静荷数据。控制器实现的硬件队列功能还包括完成队列,每个加速器与一个完成队列关联,控制器可以根据调度策略确定执行该数据处理请求的加速器,进而将第二数据处理请求存储至与该加速器关联的完成队列,再依据存储顺序向第一以加速器发送各个待处理的数据处理请求,最终完成待处理的数据处理请求的调度过程。
在另一种可能的实现方式中,第一加速器包括中央处理单元CPU、图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片中至少一种。
在另一种可能的实现方式中,控制器包括中央处理单元CPU、图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片、片上系统SoC中至少一种。
在另一种可能的实现方式中,所述数据处理系统包括分布式存储系统、大数据系统、存储系统、云手机系统、云游戏系统、融合视频系统中任意一种。
第二方面,本申请还提供一种数据处理的方法,该方法由控制器执行,控制器分别与处理器或多个加速器耦合,所述方法包括如第一方面或第一方面中任意一种可能实现方式中所述控制器实现具体功能时所执行的步骤。
第三方面,本申请还提供一种数据处理的装置,该装置包括用于执行第二方面或第二方面任一种可能实现方式中的数据处理的方法的各个模块。
第四方面,本申请还提供一种控制器,该控制器用于实现上述各个方面或各个可能的实现方式中控制器所实现的具体功能。
第五方面,本申请还提供一种芯片,该芯片用于实现上述各个方面或各个可能的实现方式中控制器所实现的具体功能。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第七方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的数据处理系统的架构示意图;
图2为本申请提供的另一种数据处理系统的架构示意图;
图3为本申请提供的一种控制器的系统架构示意图;
图4为本申请提供的一种数据处理方法的流程示意图;
图5为本申请提供的另一种数据处理方法的流程示意图;
图6为本申请提供的另一种数据处理方法的流程示意图;
图7为本申请提供的一种控制器中消息数据结构的示意图;
图8为本申请提供的一种控制器的结构示意图;
图9为申请提供的另一种控制器的结构示意图。
具体实施方式
为了解决上述技术问题,本申请提供一种数据处理的方法,通过在数据处理系统中添加分别与中央处理器(central processing unit,CPU)和加速器连接的控制器,由控制器直接识别待执行数据处理请求的加速器,以及控制不同加速器间的消息的传输和数据处理,无需CPU参与由不同加速器完成的数据处理过程,完全卸载CPU在不同加速器间的数据处理功能至控制器。具体地,控制器中包括处理器和存储器,控制器可以实现硬件队列的功能。即由控制器的存储器实现以下不同类型的队列:提交队列、空闲队列、运行队列和完成队列。控制器可以基于数据处理请求的数据处理类型确定调度策略,识别与数据处理请求匹配的加速器,并通过上述不同类型的队列完成数据处理的过程,向匹配的加速器发送数据。
下面结合附图详细介绍本申请实施例中的技术方案。
图1为本申请提供的一种数据处理系统的逻辑架构示意图,如图所示,数据处理系统100为多处理器系统或称为异构系统,包括处理器101、控制器102、网卡103和多个加速器,例如,加速器104和加速器105。处理器101、控制器102、网卡103、加速器104和加速器105通过总线相连,该总线包括快捷外围部件互连标准(Peripheral Component InterconnectExpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。
示例地,数据处理系统100可以为服务器、边缘设备、个人电脑(personalcomputer,PC)、智能终端(例如,手机、移动智能设备)、异构服务器或其他类型的设备。
处理器101可以为CPU,用于运行操作系统和应用程序,并将应用程序的数据处理请求发送给控制器102,由控制器102直接控制不同加速器间的消息的传输和数据处理,无需处理器101的参与,实现由控制器在数据处理过程中实现卸载CPU的功能。
控制器102用于实现硬件队列,以及确定调度策略,并根据确定的调度策略,利用硬件队列实现待处理的数据处理请求的传输。控制器102可以通过CPU实现,也可以通过图形处理器(graphic processing unit,GPU)、神经网络处理单元(neural networkprocessing unit,NPU)、张量处理单元(tensor processing unit,TPU)、软件定义架构(software-defined infrastructure,SDI)芯片、现场可编程门阵列(field-programmablegate array,FPGA)、或人工智能(artificial intelligence,AI)芯片实现,还可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),通用阵列逻辑(generic array logic,GAL)或其任意组合。可选地,控制器102还可以通过片上系统(system on chip,SoC)、分发单元(dispatching unit,DPU)或其他硬件电路实现。
加速器103和加速器104分别用于实现特定操作。其中,特定操作包括图像处理,数据压缩、重复数据删除(也可以称为重删)、数据加密、人脸识别、机器学习处理等与具体应用场景的业务相关的数据操作,而且,上述特殊特定操作可以仅包括一种类型的操作,也可以包括两种或两种以上的操作。
加速器103或加速器104可以通过CPU实现,也可以通过图形处理器GPU、神经网络处理单元NPU、张量处理单元TPU、软件定义架构SDI芯片、现场可编程门阵列FPGA、或人工智能AI芯片、DPU实现,还可以通过专用集成电路ASIC实现,或可编程逻辑器件PLD实现,上述PLD可以是复杂程序逻辑器件CPLD,通用阵列逻辑GAL或其任意组合。
作为一种可能的实现方式,控制器102和网卡103可以合并,也就是说,数据处理系统100中包括的控制器102可以实现网卡103的功能,即控制器102可以实现数据处理系统100与其他设备或系统进行通信连接的功能。此时,控制器102在具体实施中可以为网络接口卡(network interface card,NIC)(也称为网卡)、智能网卡(intelligent networkinterface card,iNIC),或者其他实现设备间或系统间通信的通信器件。
作为另一种可能的实施例,图2还提供了另一种数据处理系统的逻辑架构示意图。与图1所示数据处理系统的区别在于,数据处理系统200包括多个相连接的设备,多个设备间可以以集群方式进行管理,也即多个设备可以被统一控制和管理,使得整个系统的硬件资源可以被有效调度,充分利用系统资源,提升数据处理的效率。
如图所示,数据处理系统200包括多个设备,例如,设备201和设备201,不同电子设备间通过网络203相连,网络203包括以太网、光纤、IB等有线网络。可选地,除了上述有线网络外,网络203也可以由无线网络技术实现,例如,无线、蓝牙通信技术等。
设备201包括处理器2011、控制器2012和网卡2013。设备201通过网卡2013与计算设备202的网卡2023相连,除了网卡2023外,计算设备202还包括处理器2021、控制器2022、加速器2024。处理器2011和处理器2021可以为CPU。加速器2024可以通过CPU实现,也可以通过图形处理器GPU、神经网络处理单元NPU、张量处理单元TPU、软件定义架构SDI芯片、现场可编程门阵列FPGA、或者,人工智能AI芯片实现,还可以通过专用集成电路ASIC实现,或可编程逻辑器件PLD实现,上述PLD可以是复杂程序逻辑器件CPLD,通用阵列逻辑GAL或其任意组合。
可选地,设备201中也可以包括加速器,设备201和设备202中加速器分别用于实现相同或不同的特定操作,以此满足不同业务需求。
可选地,图2所示的数据处理系统200除了包括设备201和设备202外,还可以根据具体业务场景的需求添加其他设备,例如,利用多个存储设备构成存储池,用于在大数据场景中实现加密数据的远端存储。
值得说明的是,上述图1和图2所示的数据处理系统仅为一种示例,具体实施时,可以根据不同业务场景添加不同器件或设备。为了便于描述,以下实施例以图1所示的数据处理系统100为例进行说明。
本申请的技术方案中,通过在CPU和加速器间添加控制器,由控制器实现硬件队列,进而实现完全卸载CPU在不同加速器间数据传输的功能,减轻CPU的负担。
接下来,以图3为例进一步介绍控制器的逻辑结构。图3为本申请提供的一种控制器的结构示意图,如图所示,控制器300包括输入模块301、调度模块302、控制模块303、消息逻辑处理模块304、存储单元305和输出模块306,其中,输入模块301、调度模块302、控制模块303、消息逻辑处理模块304、存储单元305和输出模块306通过内部总线相连。内部总线为内部自定义协议总线,包括片内总线、统一总线(unified bus,UB或uBus),示例地,该内部总线可以为超运输(hyper transport,HT)总线、前置总线(front side bus,FSB)、或其他能够实现芯片内器件间通信的自定义总线。其中,调度模块301、调度模块302、控制模块303、消息逻辑处理模块304和输出模块306均可以通过软件或硬件,或者软硬结合的方式实现。
存储单元305则可以通过控制器300中存储器实现,存储器可以通过易失性存储器或非易失性存储器实现,或通过包括易失性和非易失性的存储器实现。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
下面结合图3分别介绍输入模块301、调度模块302、控制模块303、消息逻辑处理模块304、存储单元305和输出模块306的实现方式和功能。
输入模块301,用于通过控制器的通信接口(也可以称为端口)获取数据处理请求,并将该数据处理请求存储至提交队列。具体地,输入模块可以为通信接口,例如,输入端口可以通过端口实现。如图所示,输入模块101中每个通信接口可以实现一个与控制器300外的主体(例如,器件/设备/虚拟设备/应用程序)连接的通道。为了提升控制器300的并行处理能力,可以通过虚拟化直通技术扩展通道的并行处理能力,例如,通过硬直通(single-root input/output virtualization,SR-IOV)技术将一个通信接口的物理功能(physicalfunction,PF)虚拟成多个虚拟功能(virtual function,VF),此时,每个VF也可以用于与控制器300外的器件/设备连接形成通道,每个通道用于指示控制器102与处理器101或多个加速器(如图1中加速器103、加速器104)之间传输特定业务流的数据处理请求的通路,每个通道具有唯一标识。每个提交队列包括至少一个工作队列单元(work queue entry,WQE)。每个提交队列可以关联一个通道标识,即每个提交队列用于存储与其关联的通道传输的数据处理请求。在具体应用中,每个PF或VF可以分别与处理器或加速器相连形成多个通道,每个通道用于传输不同业务流,使得控制器可以通过上述多个通道获取不用业务流的数据处理请求,每个数据处理请求可以携带通道标识,输入模块301可以根据通道标识将数据处理请求分别存储在与其关联的接收队列,以此实现批量处理多个数据处理请求的目的,提升数据处理效率。
控制器102可以用于实现硬件队列,具体包括提交队列、处理队列集合和完成队列。其中,提交队列,用于存储与所述通道标识关联的业务流的数据处理请求。处理队列集合包括空闲队列和运行队列,空闲队列用于控制器在执行调度策略过程中存储待处理的数据处理请求,例如,当需要在控制器内搬迁待处理的数据处理请求时,根据静荷数据(payload)的大小从空闲队列的多个存储单元中选择存储单元,并将该存储单元挂载至第一运行队列。以便消息逻辑处理模块中处理单元可以获取运行队列中待处理的数据处理请求,并根据静荷数据的长度和与该数据处理请求匹配的加速器的处理能力执行合并或拆分操作。完成队列,用于存储待向第一加速器发送的第二数据处理请求,包括执行合并操作或拆分操作后获得的静荷数据。其中,静荷数据是指数据处理请求中携带的数据,该数据是加速器实际要处理的数据,例如,加密处理请求中待加密的数据。具体实施时,可以根据数据的长度采用以下任意一种方式传输该数据:1)当数据小于阈值时,直接将待处理数据作为静荷数据;2)数据大于阈值时,则将存储待处理数据的存储位置作为静荷数据,具体可以为数据描述符,该数据描述符可以用于指示存储待处理数据的存储空间的地址。
此外,上述提交队列、完成队列、空闲队列和运行队列为逻辑概念,具体实施时,可以分别利用一个或多个工作队列单元(work queue entry,WQE)存储待处理的数据处理请求,提交队列、完成队列、空闲队列和运行队列之间可以采用相同的调度方式执行各个待处理的数据处理请求的处理过程。其中,调度方式包括策略先入先出(first-in-first-out,FIFO)、随机、优先级中至少一种,优先级用于指示与业务重要程度相关的等级,包括业务流的优先级、数据处理请求的优先级、通道优先级中至少一种。调度模块302,可以通过处理器实现,也可以通过硬件逻辑电路实现,还可以通过软硬件结合方式实现。处理器包括但不限于CPU、GPU、NPU、TPU、SDI芯片、FPGA、AI芯片、DPU实现,还可以通过ASIC实现,或PLD实现,上述PLD可以是CPLD,通用阵列逻辑GAL或其任意组合。
调度模块302,用于轮询输入模块301中各个提交队列,当存在待处理的数据处理请求时,解析该数据处理请求,并确定调度策略,即确定执行该数据处理请求的加速器。此外,调度模块302,还用于确定该通道标识关联的提交队列所关联的一组处理队列集合,该处理队列集合包括存储模块306中一个空闲队列和一个运行队列,也即,根据通道标识在存储模块中确定与该通道标识关联的一组处理队列集合。示例地,提交队列1关联一个处理队列集合,该处理队列集合包括空闲队列3051和运行队列3052构成的。可选地,还可以根据控制器300的处理能力设置同一处理队列集合中运行队列和空闲队列的比例。例如,一个处理队列集合可以包括一个空闲队列和多个运行队列。或者,一个处理队列集合也可以包括多个空闲队列和一个运行队列。或者,一个处理队列集合还可以包括多个运行队列和多个空闲队列。具体实施中,空闲队列包括多个工作队列单元,当存在待处理的数据处理请求时,则可以从空闲队列中申请足够的存储单元,然后将已申请的存储单元挂载至同一处理队列集合的运行队列。运行队列的工作队列单元用于存储用于待处理的数据处理请求的静荷数据。当任意一个工作队列单元的静荷数据被读出后,则释放该工作队列单元的存储空间。具体地。将该工作队列单元挂载至同一处理队列集合的空闲队列,以便该工作队列单元可以被重复利用。
作为一种可能的实现方式,处理队列集合也可以由一个处理队列构成,每个队列与一个提交队列关联,当轮询到提交队列存在待处理的数据处理请求时,则从提交队列中获取待处理的数据处理请求,将其存储至与该提交队列关联的处理队列,具体可以通过环形队列实现处理队列,即通过读指针指示当前可写的位置,通过写指针指示当前可读的位置。当任意一个工作队列单元中数据被读出后,则将该工作队列单元清空,以便重复利用该处理队列。
为了便于描述,以下实施例以处理队列集合为例进行说明,且每个处理队列集合中包括一个运行队列和一个空闲队列。
调度模块102包括多个决策器,例如,决策器3021、决策器3022和决策器302。多个决策器可以分别执行轮询提交队列和确定调度策略的操作,以此实现并行处理。当无任务时,也可以对全部或部分决策器执行休眠操作。每个决策器可以通过一个处理器实现,例如,当调度模块102由CPU实现时,每个调度器可以为该CPU的一个处理器核。可选地,决策器也可以通过软件或软硬结合的方式实现,例如,决策器可以由调度模块102所在处理器进程实现。
消息逻辑处理模块304,用于监测存储模块中运行队列是否为空,并在运行队列为非空情况下,对待处理的数据处理请求执行合并、拆分等操作。如图所示,消息逻辑处理模块304包括多个处理单元,例如,处理单元3041、处理单元3042、……、处理单元304m。每个处理单元用于监测一组队列集合,也就是说,每个处理单元可以通过监测一组队列集合中运行队列为非空情况下,对待处理的数据请求执行如合并、拆分、透传或格式转换等变换处理操作。然后,再将处理后的数据处理请求存储至输出模块的完成队列。
控制模块303包括信息管理模块3031、初始化模块3032和实时信息感知模块3033。初始化模块3032,用于在初始化时识别与控制器连接的加速器、处理器的类型,并将获取的信息汇总至信息管理模块3031。信息管理模块3031,用于为消息逻辑处理模块304中处理单元提供第一加速器的数据转换逻辑和其他信息。实时信息感知模块3033,用于获取消息逻辑处理模块304中各个处理单元的负载、心跳等实时信息。
输出模块306与输入模块301类似,也可以通过通信接口实现,用于可实现控制器300与控制器300外的设备进行数据传输,具体按照调度模块确定的调度策略,向与待处理的数据处理请求匹配的加速器发送待处理的数据处理请求。具体实施时,输出模块306可以通过端口实现,通过该端口可以向加速器发送待处理的数据处理请求。
此外,为了提上控制器300的并发处理能力,每个通信接口也可以包括物理功能PF和虚拟功能VF,并分别通过PF和VF分别建立控制器300与加速器之间的通信通道。如图3所示,输出模块306可以通过通信接口与控制器300外的加速器建立多个数据传输的通道。为了提升控制器300的并行处理能力,也可以通过虚拟化直通技术扩展通道的并行处理能力,例如,通过硬件直通技术将一个通信接口的物理功能PF虚拟成多个虚拟功能VF,此时,每个VF也可以用作与控制器300外的加速器连接的通道,每个通道具有唯一标识。每个PF或VF分别关联一个或多个完成队列,每个完成队列包括至少一个工作队列单元(work queueentry,WQE),相应地,每个完成队列关联一个通道标识。在实际业务处理过程中,每个PF或VF可以分别关联不同的加速器,使得加速器可以通过与其关联的完成队列获取待处理的数据处理请求。
值得说明的是,同一个通信接口根据其处理能力的不同,可以包括多个PF,相应地,每个PF可以再通过硬件直通技术将其虚拟为多个VF,此时,同一个通信接口可以包括多个PF,每个PF又包括多个VF,每个PF或VF可以分别与一个加速器建立数据传输的通道,使得控制器300可以根据调度策略分别通过不同通道向不同加速器传输待处理的数据处理请求。
存储模块305,则用于实现处理队列集合。存储模块中可以包括至少一组处理队列集合,每组处理队列集合分别与一个提交队列和一个处理单元关联,使得处理单元可以根据运行队列的状态执行相应的处理。
接下来,结合图4进一步介绍本申请提供的数据处理方法。如图所示,该方法由图3所示的控制器300中各个模块实现,该方法具体包括:
S401、输入模块将获取的第一数据处理请求存储至第一提交队列。
输入模块可以为图3所示的输入模块301,输入模块可以从CPU或加速器获取待处理的数据处理请求,为了便于描述,可以将该数据处理请求称为第一数据处理请求。
第一数据处理请求包括静荷数据和数据处理类型。其中,静荷数据为待处理的数据或数据描述符,数据描述符则用于标识存储待处理数据的存储位置,例如,数据处理系统为服务器时,数据描述符可以标识内存(也称为主存(main memory))中存储待处理数据的存储空间的地址。具体实施时,可以根据业务需求和数据长度确定数据处理请求中携带静荷数据的具体形式。数据处理类型,则用于指示数据处理类型,具体可以是一种或多种特定操作,例如,当第一数据处理请求的数据处理类型为加密和压缩时,控制器可以对静荷数据执行数据加密和数据压缩操作。
作为一种可能的实现方式,第一数据请求还可以包括通道标识。通道标识,用于标识数据处理请求传输的通道的标识。通过图1至图3的描述可知,输入模块包括通信接口,加速器或CPU通过通信接口与控制器相连,每个通信接口的物理功能又可以扩展为多个虚拟功能,每个物理功能或虚拟功能分别用于传输加速器或CPU的一个业务流的数据,相应地,每个传输业务流数据的通路可以称为通道。可选地,控制器也可以通过获取数据处理请求的方式标记数据处理请求的通道标识,例如,当控制器接收从CPU与控制器之间的通道获取的数据处理请求时,则利用该通道的通道标识记录该数据处理请求的通道标识。
输入模块获取第一数据处理请求时,可以通过如下任意一种方式确认第一数据处理请求的通道标识:
方式1,当第一数据处理请求包括通道标识时,输入模块可以解析第一数据处理请求获得通道标识。
方式2,当第一数据处理请求未包括通道标识时,输入模块可以通过获取第一数据处理请求的通道确定通道标识。
进一步地,为了实现CPU和多个加速器的并行处理,可以分别利用不同提交队列分别存储来自不同业务流的数据处理请求。输入模块可以预先记录业务流和提交队列的对应关系,当接收到第一数据处理请求时,可以根据上述方式1或方式2将其存储至对应的提交队列。
值得说明的是,每个提交队列包括至少一个工作队列单元,输入模块可以按照获取数据处理请求的顺序依次将其存储至不同的工作队列单元。提交队列可以采用先入先出(first-in-first-out,FIFO)的方式控制数据的处理顺序。
S402、输入模块向调度模块发送通知消息。
当输入模块将一个数据处理请求存储至任意一个提交队列时,可以向调度模块发送通知消息,以便调度模块可以从提交队列获取该数据处理请求,并执行相应的处理操作。其中,调度模块可以为图3中调度模块302。
S403、调度模块获取并解析第一数据处理请求,确定调度策略。
调度模块可以解析第一数据处理请求,进而获取第一数据处理请求中数据处理类型和静荷数据,其中,静荷数据为该数据处理请求待处理的数据,具体可以为数据或数据描述符。当静荷数据为数据描述符时,调度模块需要根据数据描述符从存储数据的存储空间获取数据。数据处理类型则为待处理数据的数据操作类型,可以为普通操作或特定操作,普通操作包括转发,特定操作包括图像处理,数据压缩、重复数据删除(也可以称为重删)、数据加密等与业务相关的数据操作中任意一种或任意两种或多种的组合。进而根据数据处理类型和静荷数据确定调度策略,调度策略用于识别与所述第一数据处理请求的数据处理类型和算力需求匹配的第一加速器。具体地,图5为本申请提供的一种调度模块确定调度策略的方法流程图,如图所示,该方法具体包括:
S4031、判断第一数据处理请求的数据处理类型是否为特定操作?
S4032、当数据处理类型为普通操作时,记录算力需求为普通算力。
调度模块可以根据数据处理类型判断第一数据处理请求是否为需要实现功能卸载的特定操作,即是否需要加速器执行的特定操作。当数据处理类型为普通操作时,无需通过加速器实现具体数据处理过程,此时,可以记录算力需求为普通算力,可以通过数据库或寄存器记录每个数据处理请求和算力需求的关联关系。具体地,可以通过步骤S4036至S4037的描述确定调度策略。当数据处理请求为特定操作时,则需要进一步判断算力需求,再根据算力需求选择满足该算力需求的第一加速器,具体过程参见步骤S4033至S4037的描述确定调度策略。
S4033、当数据处理类型为特定操作时,判断数据处理请求的算力需求是否为特定算力?
S4034、当第一数据处理请求的算力需求为非特定算力时,记录算力需求为普通算力。
S4035、当第一数据处理请求的算力需求为特定算力时,记录算力需求为特定算力。
由于数据处理系统包括多个加速器,除了加速器所能实现的功能不同外,每类加速器的算力也存在差异,为了提升数据处理效率,调度模块可以根据数据处理请求的算力需求选择与其匹配的加速器。
S4036、计算与算力需求匹配的各个加速器的评估分数。
S4037、根据评估分数确定执行第一数据处理请求的第一加速器。
调度模块可以先识别与数据处理类型匹配的多个加速器的硬件信息,例如,加速器的处理能力、负载和数据传输距离。然后,根据上述硬件信息确定每个加速器的评估分数选择评估分数最高的加速器为第一加速器。
示例地,表1为本申请提供的一种计算加速器的评估分数的示例,如表1所示,根据加速器的类型不同可以将加速器区分为通用、专用、混合和其他几类。其中,通用类型的加速器,是指通用计算所使用的加速器,例如,CPU。专用类型的加速器,是指仅用于执行特定操作的加速器,专用类型的加速器在特定应用功能场景中相对于其他类型的加速器具有更高性能、更强算力。例如,加速器1仅用于执行加密操作,加速器2仅用于人工智能技术中人脸识别的处理操作。混合类型的加速器,则是指同时具备通用和专用类型加速器的处理能力的加速器。上述每种类型对应一个系数,例如,类型为专用的加速器的系数为P,类型为混合的加速器的系数为Q,类型为通用的加速器的系数为M,类型为其他的系数为0,P>Q>M>0,例如,P为100,Q为50,Q为20,具体实施中可根据业务需要调整不同类型的加速器的系数。
表1中处理能力用于指示加速器的硬件处理能力,如每秒进行读写操作的次数(input/output operations per second,IOPS),处理器核数等影响数据处理效率的硬件参数。负载用于指示加速器当前时刻的工作负载,即正在处理的任务所占用的硬件资源的比例。可选地,负载也可以为正在处理任务所占用加速器的硬件处理能力的比例。数据传输距离,用于指示控制器将静荷数据传输至加速器所需的数据传输距离,可以通过数据传输过程中所经过的总线长度或端点个数确认。
在获取加速器的系数、处理能力、负责、数据传输距离后,则可以利用如下公式(1)计算各个加速器的评估分数:
加速器的评估分数=系数*处理能力/负载/数据传输距离公式(1)
表1一种评估分数的计算方式的示例
加速器的类型 | 计算方式 |
专用 | P*处理能力/负载/数据传输距离 |
混合 | Q*处理能力/负载/数据传输距离 |
通用 | M*处理能力/负载/数据传输距离 |
其他 | 0 |
进而选择评估分数在预设范围的加速器为第一加速器,也即从多个加速器中选择处理效率最高的加速器执行第一数据处理请求。其中,预设范围可以根据业务需求设置,例如,根据加速器的处理效率将评估分数为80~90的加速器选定为第一加速器,处理效率用于指示多个加速器在完成相同待处理数据处理请求的数据处理过程的速度。
可选地,除了采用评估分数选择与待处理的数据处理请求匹配的加速器外,还可以根据与数据处理类型匹配的多个加速器的负载确定第一加速器,例如,第一时刻,与数据处理类型匹配的多个加速器中加速器1的负载低于预设阈值,则选择加速器1为第一加速器。
调度模块除了通过确定调度策略外,还用于将第一数据处理请求搬迁至空闲队列。具体过程参见步骤S404描述。
S404、调度模块在存储模块的第一空闲队列中申请存储第一数据处理请求的第一存储单元,将第一数据处理请求存储至第一存储单元,并将第一存储单元挂载至第一运行队列。
存储模块用于实现多组处理队列,每个处理队列关联一个通道标识,也即,每个处理队列与一个提交队列管理。调度模块可以根据第一数据处理请求的通道标识确定与其关联的处理队列,为了便于描述,将与第一提交队列关联的处理队列称为第一处理队列,第一处理队列包括第一运行队列和第一空闲队列。调度模块可以在第一空闲队列申请一个存储单元,将第一数据处理请求存储至该存储单元,并将第一存储单元挂载至第一运行队列。为了便于描述,将存储第一数据处理请求的存储单元称为第一存储单元。
S405、消息逻辑处理模块轮询第一运行队列,当第一运行队列非空时,根据第一数据处理请求中静荷数据的长度执行合并操作或拆分操作,生成第二数据处理请求,将第二数据处理请求存储至第一运行队列的存储单元集合。
为了提升控制器中数据处理的效率,可以并行执行多个数据处理请求的处理操作。具体地,控制器的消息逻辑处理模块包括多个处理单元,每个处理单元可以关联至少一组处理队列集合,处理单元可以实时监控与其关联的运行队列的状态,当运行队列非空时,则按照预设顺序(例如,先入先出或优先级)获取运行队列中各个工作队列单元中的待处理的数据处理请求,将其搬迁至调度策略确定的加速器关联的完成队列,以便加速器可以获取待处理的数据处理请求,进而执行数据处理操作。为了便于描述,将监控第一运行队列的处理单元称为第一处理单元。
具体实施过程中,由于每个加速器的处理能力不同,对于不同大小的数据的处理效率也不同。因此,为了提升整个系统的处理效率,消息逻辑处理中处理单元模块可以根据静荷数据的长度和加速器的处理能力执行合并操作或拆分操作。其中,当数据处理请求中携带的静荷数据为待处理的数据时,静荷数据的长度即为该数据的长度。当数据处理请求中携带的静荷数据为待处理的数据的数据描述符时,静荷数据的长度即为该数据描述符所指示的存储空间中存储的数据的长度,例如,当数据的描述符指示内存中存储的数据时,静荷数据的长度用于指示内存中存储的描述符所指示的数据的长度。具体地,图6为本申请提供的一种处理单元执行合并操作或拆分操作方法的流程示意图,如图所示,该方法包括:
S501、第一处理单元根据调度策略获取第一加速器的信息。
控制模块在初始化阶段可以获取与控制器相连的各个加速器的信息,包括各个加速器的算力和所能处理的数据长度的最大值。第一处理单元可以根据调度策略从调度模块获取第一加速器的信息。
S502、第一处理单元对第一运行队列加锁。
为了提高控制器中数据处理的速度,消息逻辑处理模块中各个处理单元可以分别关联一组或多组处理队列集合。也就是说,同一组处理队列集合可以关联至少一个消息逻辑处理模块中处理单元。当需要从第一队列中获取数据处理请求时,为了多个处理单元同时操作所带来的数据冲突问题,在执行第一运行队列的操作前,可以对第一运行队列加锁,保证同一时刻仅有一个处理单元可以对该运行队列执行相应操作。
S503、第一处理单元获取第一存储单元中静荷数据的长度。
S504、第一处理单元判断第一数据处理请求中静荷数据的数据长度是否超过阈值?
第一存储单元用于存储第一数据处理请求,第一处理单元可以先从第一存储单元中获取第一数据处理请求,解析第一数据处理请求,进而确定静荷数据的长度。可选地,第一处理单元也可以从输入模块获取第一数据处理请求中静荷数据的长度。
阈值可以包括第一阈值和第二阈值,第一阈值或第二阈值可根据分别根据处理单元所能处理的数据长度的最大值确定,具体地,第一阈值或第二阈值可以小于处理单元所能处理的数据长度的最大值,还是为处理单元所能处理的数据长度的最大值的倍数,例如,当处理单元所能处理的数据长度为1时,第一阈值为0.8,第二阈值为0.3。可选地,第一阈值和第二阈值也可以相同,此时,第一阈值可以为处理单元所能处理的数据长度的最大值。具体实施时第一阈值和第二阈值可以根据业务需求进行设置,本申请对此不做限定。
当静荷数据的数据长度低于阈值(例如,第一阈值)时,表示静荷数据过小,无法充分利用处理单元的算力,调度模块可以执行合并操作,将同一运行队列中待处理的其他数据处理请求的静荷数据和第一数据处理请求的静荷数据进行合并,生成新的数据处理请求,使得处理单元可以通过一次操作将新的数据处理请求拷贝至提交队列,减少处理单元执行数据拷贝的次数,提升处理效率。此外,通过合并过小的静荷数据,生成新的数据处理请求,在第一加速器获取该新的数据处理请求后,也可以一次执行归属于多个不同数据处理请求的静荷数据的特定操作,充分利用了第一加速器的处理能力,同时也提升了第一加速器的处理效率。具体过程参见步骤S505至S509的描述。
当静荷数据的数据长度超过阈值(例如,第二阈值)时,表示静荷数据过大,处理单元可能无法一次完成处理过程,第一处理单元可以执行拆分操作,将第一数据处理请求的静荷数据拆分为多个数据块,然后,分别将各个数据块存储至第一运行队列的多个存储单元,进而由处理单元执行数据处理操作。具体参见步骤S510至S514的描述。
S505、当确定第一数据中静荷数据的长度低于阈值时,第一处理单元确定N个待合并的数据处理请求所在的第二存储单元。
S506、第一处理单元解锁第一运行队列中N个第二存储单元。
S507、第一处理单元将N个第二存储单元关联的数据/描述符拷贝至第一存储单元。
S508、第一处理单元挂载N个第二存储单元至第一空闲队列。
S509、第一处理单元更新第一存储单元的消息头段,生成第二数据处理请求。
由于同一运行队列存储的均为同一业务流的静荷数据,第一处理单元可以执行将过小的多个静荷数据执行合并操作。具体地,第一处理单元可以根据第一加速器的处理能力,在同一运行队列中选择一个或多个待处理的数据处理请求,其中,上述待处理的数据处理请求为第一运行队列中与存储第一数据处理请求相邻的存储单元存储的待处理的数据处理请求,合并后静荷数据的总长度小于或等于处理单元所能处理的数据长度的最大值。
然后,分别从待合并的静荷数据所在存储单元(例如,N个第二存储单元)获取静荷数据,将其存储至第一存储单元,再释N个第二存储单元。
示例地,如果第一运行队列非空的存储单元包括相邻的存储单元1、存储单元2和存储单元3,存储单元1的数据为处理单元正在处理的数据所在存储单元。如果存储单元1中静荷数据的长度过小,则可以根据加速器的处理能力将存储单元2和存储单元3中存储的数据处理请求的静荷数据与存储单元1的静荷数据执行合并操作。并在合并后,释放存储单元2和存储单元3的存储空间,将存储单元2和存储单元3挂载至与第一运行队列关联的第一空闲队列。
此时,由于第一存储单元中不仅包括第一数据处理请求的静荷数据,还包括其他数据处理请求的静荷数据,为了保证加速器的后续处理过程,可以通过消息头段添加对静荷数据的描述信息。具体地,图7为本申请提供的一种数据处理请求的数据结构示意图,如图所示,数据处理请求包括消息头段、描述段和数据段。其中,消息头段中各个字段说明如表2所示。每个静荷数据可以分别按照表2中字段说明添加各自的说明,也可以将各自的表头字段说明合并,本申请对此不做限定。
值得说明的是,由于运行队列加锁的原因,待合并的多个静荷数据归属于同一运行队列,也就是说,对于每个数据处理请求而言,第二数据处理请求的消息头字段仅需要修改第一数据处理请求中消息头字段数据总长度即可
表2消息头字段说明
S510、当确定第一数据处理请求中静荷数据的长度超过阈值时,第一处理单元解锁第一运行队列。
S511、第一处理单元确定第一数据处理请求中静荷数据需要切分数据块数量M。
S512、第一处理单元从第一空闲队列中获取M-1个第二存储单元。
S513、第一处理单元将各个数据块依次拷贝至第一存储单元和M-1个第二存储单元。
S514、第一处理单元分别更新第一存储单元和M-1个第二存储单元中消息头段,生成多个第二数据处理请求。
当静荷数据过大时,加速器可能无法一次完成该静荷数据的处理过程,则需要执行数据的拆分。具体拆分规则可以根据加速器的处理能力执行拆分操作,获得两个或两个以上数据块(例如,M个),然后,再从第一空闲队列申请M-1个存储单元,分别将各个数据块存储至各个存储单元中。为了便于描述,可以将存储拆分后的数据块的存储单元称为存储单元集合。
此时,同样需要更新消息头段,具体地,在每个存储单元中,以第一数据处理请求的消息头段为准,分别根据数据块的长度修改第一数据处理请求的消息头段中数据长度,并将修改后的消息头段分别作为各个存储单元中存储的待处理的数据处理请求的消息头段。为了便于描述,将每个存储单元中存储的待处理的数据处理请求称为第二数据处理请求。
S515、当第一数据处理请求中静荷数据的数据长度与处理单元的算力匹配时,解锁第一运行队列。
除了第一数据处理请求中静荷数据的数据长度过大或过小场景外,第一数据处理请求中静荷数据也可能与处理单元的算力匹配,此时,则直接解锁第一运行队列。
通过上述步骤S501至S515的描述,调度模块已将满足处理单元处理能力的数据处理请求存储至第一运行队列,接下来,结合步骤S406至S409进一步介绍后续数据处理过程。
S406、第一处理单元获取第二数据处理请求,将第二数据处理请求存储至与第一加速器关联的完成队列。
第一处理单元可以按照第一运行队列中存储单元中数据存储顺序依次获取各个待处理的数据处理请求,并将其分别存储至输出模块中与各个加速器匹配的完成队列中。
示例地,当第一运行队列采用先入先出模式存储和处理待处理的数据处理请求时,第一处理单元可以依次获取各个存储单元的数据处理请求,例如,当前待处理的数据处理请求为第二数据处理请求时,则获取第二数据处理请求,并将其存储至与第一加速器关联的完成队列,以便第一加速器可以获取第二数据处理请求,并按照数据处理请求中数据处理类型完成对静荷数据的相应操作。
S408、第一处理单元将存储单元集合挂载至第一空闲队列。
S409、输出模块向第一加速器发送第二数据处理请求。
为了提升处理队列中各个存储单元的使用率,当第一运行队列中第二数据处理请求被发送给第一加速器时,可以释放存储空间,可以删除存储第二数据处理请求的存储单元,并将其挂载至第一空闲队列,以便循环利用。
值得说明的是,若第一处理单元执行拆分操作时,多个第二数据处理请求会被依次分别传输至第一加速器。
具体地,第一加速器可以通过以下方式获取第二数据处理请求:
方式1,控制器的输出模块按照先入先出的顺序向加速器发送第二数据处理请求。
方式2,监控与第一处理器关联的完成队列的状态,当该完成队列非空时,则可以从该完成队列中获取待处理的第二数据处理请求。
作为一种可能的实施例,在如图2所示的数据处理系统200中,控制器还可以通过网卡与加速器进行通信,此时,步骤S409中输出模块向网卡发送第二数据处理请求,进而由网卡将第二数据处理请求发送另一个设备的第一加速器,实现跨设备的数据传输过程。
通过上述描述可知,由于在CPU和加速器之间添加控制器,控制器可以直接识别执行数据处理请求的加速器和具体数据处理过程,无需CPU参与数据处理的过程,实现了CPU功能的完全卸载。而且,控制器的输入模块和输出模块可以分别通过物理功能和虚拟功能扩展端口的并行处理能力,控制器和加速器之间可以通过通道进行数据传输,可以根据不同业务流存储数据处理请求,并基于通道标识利用处理队列集合完成数据的合并操作或拆分操作,充分利用了控制器中硬件资源,提升了数据处理效率。此外,处理队列集合中空闲队列和运行队列的存储单元可以复用,处理单元分别关联不同处理队列集合,使得处理单元可以并行监控多个处理队列集合,提升了并发度,降低了处理时延。
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明本申请并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明本申请所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本发明本申请的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明本申请所必须的。
上文中结合图1至图7,详细描述了根据本发明本申请实施例所提供的数据处理的方法,下面将结合图8和图9,描述根据本发明本申请实施例所提供的数据处理的系统和数据处理的装置。
图8为本申请提供的一种数据处理系统的架构图,如图所示,数据处理系统800包括处理器801、控制器802、通信接口804、加速器805和总线806。可选地,数据处理系统800还包括存储器803、内存单元(也可以称为主存,图中未示出)。数据处理系统800包括处理器801、控制器802、存储器803、通信接口804、加速器805通过总线806相连。处理器801、控制器802、加速器805分别用于实现上述图4至图6中所述方法中相应执行所执行步骤的功能,为了便于描述,在此不再赘述。
其中,控制器802包括处理器8021、存储器8022、通信接口8023和总线8024。处理器8021、存储器8022和通信接口8023通过总线8024相连。处理器8021用于实现图3实现调度模块302、控制模块303、消息逻辑处理模块304的功能,存储器8022用于实现图3中存储模块305的功能,通信接口8023用于实现图3中输入模块301和输出模块306的功能。
处理器801的数量可以为一个或多个,调度模块302、控制模块303、消息逻辑处理模块304可以通过一个处理器实现,也可以分别通过多个处理器实现。
应理解,在本发明本申请实施例中,处理器8021可以是CPU,处理器8021还可以通过图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片、片上系统SoC中至少一种。
存储器8022可以包括只读存储器和随机存取存储器,实现存储模块306的功能,以及图3中提交队列、空闲队列、运行队列和完成队列。存储器8022还可以包括非易失性随机存取存储器。例如,存储器8021还可以存储设备类型的信息。
存储器803或存储器8022可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
总线8024或总线806除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线8024。总线8024可以是快捷外围部件互连标准(Peripheral Component Interconnect Express,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线8024可以分为地址总线、数据总线、控制总线等。
加速器805或处理器801可以分别通过CPU实现,也可以分别图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片、片上系统SoC中至少一种。
作为一种可能的实施例,本申请还提供一种数据处理系统,该处理处理系统包括多个如图8所示的数据处理系统800,多个数据处理系统800通过通信接口804进行通信,为了简洁,在此不再赘述。
图9为本申请提供的一种数据处理的装置900,如图所示,装置900包括输入模块901、调度模块902、控制模块903、消息逻辑处理模块904、输出模块905和存储模块(图中未示出)。上述各个模块分别用于实现图4至图6中所述方法中各个模块所实现的功能,为了简洁,在此不再赘述。
本申请还提供一种芯片,该芯片用于实现上述图4至图6中所述方法中控制器所实现的功能,为了简洁,在此不再赘述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (20)
1.一种数据处理系统,其特征在于,包括:处理器、控制器和多个加速器,所述控制器分别与处理器和所述多个加速器耦合;
所述控制器,用于从所述处理器或者任意一个加速器处获取静荷数据;根据调度策略从所述多个加速器中选择一个算力需求匹配的第一加速器;将所述静荷数据发送给所述第一加速器。
2.根据权利要求1所述的数据处理系统,其特征在于,
所述控制器,具体用于获取第一数据处理请求,所述第一数据处理请求包括静荷数据;解析所述第一数据处理请求获取所述静荷数据。
3.根据权利要求2所述的数据处理系统,其特征在于,所述控制器包括输入通信接口,所述输入通信接口包括物理功能PF和虚拟功能VF,所述处理器或所述多个加速器分别通过所述物理功能PF或所述虚拟功能获取所述第一数据处理请求。
4.根据权利要求3所述的数据处理系统,其特征在于,所述第一数据处理请求还包括通道标识,所述通道标识用于指示传输所述第一数据处理请求的通道的标识,所述通道用于指示所述控制器与所述处理器或所述多个加速器之间传输特定业务流的数据处理请求的通路。
5.根据权利要求4所述的数据处理系统,其特征在于,
所述控制器,具体用于获取所述第一数据处理请求中所述通道标识和所述静荷数据;根据所述通道标识将所述静荷数据存储至第一提交队列,所述第一提交队列用于存储与所述通道标识关联的业务流的数据处理请求。
6.根据权利5所述的数据处理系统,其特征在于,所述控制器还包括第一处理队列集合,所述第一处理队列集合包括第一空闲队列和第一运行队列,所述第一空闲队列包括多个存储单元,当需要在所述控制器内执行所述静荷数据搬迁时,根据所述静荷数据的大小从所述多个存储单元中选择存储单元,并将该所述存储单元挂载至所述第一运行队列。
7.根据权利6所述的数据处理系统,其特征在于,
所述控制器,具体用于根据所述通道标识将所述第一数据处理请求搬迁至所述第一空闲队列的第一存储单元;并将所述第一存储单元挂载至所述第一运行队列,所述第一空闲队列和所述第一运行队列归属的所述第一处理队列集合与所述第一提交队列关联。
8.根据权利要求1所述的数据处理系统,其特征在于,
所述控制器,具体用于对所述第一运行队列加锁;获取所述第一数据处理请求的数据处理类型和所述静荷数据;当所述数据处理类型为特定操作时,确定所述第一数据处理请求的算力需求;根据所述算力需求确定与所述第一数据处理请求的所述数据处理类型和所述算力需求匹配的第一加速器。
9.根据权利要求8所述的数据处理系统,其特征在于,
所述控制器,具体获取与所述数据处理类型匹配的多个加速器的硬件信息,所述硬件信息包括硬件能力、硬件负载和数据传输距离;根据所述硬件信息计算所述多个加速器的评估分数;以及,选择所述评估分数最高的加速器为所述第一加速器。
10.根据权利要求1所述的数据处理系统,其特征在于,
所述控制器,具体用于判断所述静荷数据的长度是否超过第一阈值;当所述静荷数据的长度低于第一阈值时,执行合并操作,将第一数据处理请求集合合并为所述第二数据处理请求,所述第一数据处理请求集合包括所述第一数据处理请求的静荷数据和所述第一运行队列中与存储所述第一数据处理请求相邻的其他存储单元的数据处理请求的静荷数据;生成所述第二数据处理请求,所述第二数据处理请求中消息头段的数据总长度为合并后的静荷数据的总长度,所述消息头段包括状态标志、数据段类型、数据段有效长度、数据段总长度、队列标识、所述数据处理类型、描述段长度中至少一种。
11.根据权利要求1所述的数据处理系统,其特征在于,
所述控制器,具体用于当所述静荷数据的长度高于第二阈值时,执行拆分操作,将所述第一数据处理请求的静荷数据拆分为多个数据块,在所述第一运行队列中申请第二存储单元集合,利用所述第一存储单元和所述第二存储单元集合分别存储所述多个数据块,所述第二存储单元集合包括至少一个第二存储单元;生成多个所述第二数据处理请求,所述第二数据处理请求的所述消息头段包括状态标志、数据段类型、数据段有效长度、数据段总长度、队列标识、所述数据处理类型、描述段长度中至少一种。
12.根据权利要求10或11所述的数据处理系统,其特征在于,所述第一阈值小于所述第二阈值。
13.根据权利要求10或11所述的数据处理系统,其特征在于,所述第一阈值等于所述第二阈值。
14.根据权利要求1所述的数据处理系统,其特征在于,所述控制器还包括输出接口,所述输出接口包括物理功能PF和虚拟功能VF,所述控制器分别通过所述物理功能PF或所述虚拟功能向所述第一加速器发送所述静荷数据。
15.根据权利要求14所述的数据处理系统,其特征在于,
所述控制器,具体用于从所述第一运行队列中获取所述第二数据处理请求;确定与所述第一加速器关联的完成队列,所述完成队列用于存储待向所述第一加速器发送的所述第二数据处理请求;将所述第二数据处理请求存储至所述完成队列;向所述第一加速器发送所述第二数据处理请求,所述第二数据处理请求包括所述静荷数据。
16.根据权利要求1至15中任一所述的数据处理系统,其特征在于,所述第一加速器包括中央处理单元CPU、图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片、片上系统SoC中至少一种。
17.根据权利要求1至16中任一所述的数据处理系统,其特征在于,所述数据处理系统包括分布式存储系统、大数据系统、存储系统、云手机系统、云游戏系统、融合视频系统中任意一种。
18.根据权利要求1至17中任一所述的数据处理系统,其特征在于,所述控制器包括中央处理单元CPU、图形处理单元GPU、神经网络处理单元NPU、张量处理单元TPU、网卡NIC、智能网卡iNIC、软件定义架构SDI卡、现场可编程门阵列FPGA、人工智能AI芯片、片上系统SoC中至少一种。
19.一种数据处理的方法,其特征在于,所述方法由控制器执行,所述控制器分别与处理器或多个加速器耦合,所述方法包括如权利要求1至16中所述控制器实现具体功能时所执行的步骤。
20.一种控制器,其特征在于,所述控制器用于实现如权利要求1至16中所述控制器实现的功能。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110685809 | 2021-06-21 | ||
CN2021106858092 | 2021-06-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115576661A true CN115576661A (zh) | 2023-01-06 |
Family
ID=84579999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111313944.0A Pending CN115576661A (zh) | 2021-06-21 | 2021-11-08 | 数据处理系统、方法和控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576661A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723058A (zh) * | 2023-08-10 | 2023-09-08 | 井芯微电子技术(天津)有限公司 | 网络攻击检测和防护方法和装置 |
-
2021
- 2021-11-08 CN CN202111313944.0A patent/CN115576661A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723058A (zh) * | 2023-08-10 | 2023-09-08 | 井芯微电子技术(天津)有限公司 | 网络攻击检测和防护方法和装置 |
CN116723058B (zh) * | 2023-08-10 | 2023-12-01 | 井芯微电子技术(天津)有限公司 | 网络攻击检测和防护方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642777B2 (en) | System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection | |
US11755513B2 (en) | Data processing and writing method based on virtual machine memory identification field and devise | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US20190044879A1 (en) | Technologies for reordering network packets on egress | |
WO2021018183A1 (zh) | 一种资源分配方法和资源借调方法 | |
CN106571978B (zh) | 数据包捕获方法及装置 | |
US11750418B2 (en) | Cross network bridging | |
US20200274943A1 (en) | Data Processing Method and Apparatus, Server, and Controller | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
WO2020163327A1 (en) | System-based ai processing interface framework | |
CN111641566B (zh) | 数据处理的方法、网卡和服务器 | |
CN114201421A (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
CN112685148A (zh) | 海量终端的异步通信方法、装置、计算机设备和存储介质 | |
CN115129621A (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
WO2022228485A1 (zh) | 一种数据传输方法、数据处理方法及相关产品 | |
US10534737B2 (en) | Accelerating distributed stream processing | |
CN115576661A (zh) | 数据处理系统、方法和控制器 | |
CN113986969A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
CN115934624B (zh) | 多主机远程直接内存访问网络管理的方法、设备及介质 | |
CN116244231A (zh) | 一种数据传输方法、装置、系统、电子设备及存储介质 | |
CN115878333A (zh) | 进程组间的一致性判断方法、装置及设备 | |
CN113553279B (zh) | 一种rdma通信加速集合通信的方法及系统 | |
CN116340246B (zh) | 用于直接内存访问读取操作的数据预读方法及介质 | |
WO2024041140A1 (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 |