CN108536526B - 一种基于可编程硬件的资源管理方法以及装置 - Google Patents
一种基于可编程硬件的资源管理方法以及装置 Download PDFInfo
- Publication number
- CN108536526B CN108536526B CN201710121416.2A CN201710121416A CN108536526B CN 108536526 B CN108536526 B CN 108536526B CN 201710121416 A CN201710121416 A CN 201710121416A CN 108536526 B CN108536526 B CN 108536526B
- Authority
- CN
- China
- Prior art keywords
- processor
- target
- unit sub
- request
- unit
- 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.)
- Active
Links
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/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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/445—Program loading or initiating
-
- 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
-
- 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]
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种基于可编程硬件的资源管理方法以及装置,其中方法包括:在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;状态标识数组包含每个单位子处理器分别对应的工作状态标识;获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。采用本发明,可以在实现资源调度时,不仅节约硬件资源,还可以降低人工成本。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于可编程硬件的资源管理方法以及装置。
背景技术
随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS(HyperText Transfer Protocol over Secure Socket Layer,安全套接字层上的超文本传输协议)加密等各类应用对计算的需求已远远超出了传统CPU(中央处理器,CentralProcessing Unit)的能力范围。而FPGA(Field-Programmable Gate Array,现场可编程逻辑门阵列)作为一种可编程硬件,其丰富的逻辑资源以及可编程性可以很好的弥补需求和性能之间的缺口。为了充分的利用FPGA中的资源,在FPGA设计开发中会实现多组并行的PE(Process Element,处理单元)。但是目前的FPGA的资源调度是在FPGA层面上进行的,因此,需要基于HDL(Hardware Description Language,硬件描述语言)语言才能对FPGA层面的资源调度进行复杂的设计,不仅浪费了硬件资源,也提高了人工成本。
发明内容
本发明实施例提供一种基于可编程硬件的资源管理方法以及装置,可以在实现资源调度时,不仅节约硬件资源,还可以降低人工成本。
本发明实施例提供了一种基于可编程硬件的资源管理方法,包括:
在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理。
相应地,本发明实施例还提供了一种基于可编程硬件的资源管理装置,包括:
配置模块,用于在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
第一选择模块,用于获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器;
第二选择模块,用于根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
第一传输模块,用于将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区;
第二传输模块,用于将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理。
本发明实施例通过在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,进而可以节约可编程硬件的硬件资源,而且驱动层中的PE资源调度对软件用户可见,而且在驱动层上实现资源调度的成本要低于在可编程硬件层面上进行资源调度的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于可编程硬件的资源管理方法的流程示意图;
图1a是本发明实施例提供的一种FPGA与资源管理装置之间的***架构示意图;
图2是本发明实施例提供的另一种基于可编程硬件的资源管理方法的流程示意图;
图2a是本发明实施例提供的另一种FPGA与资源管理装置之间的***架构示意图;
图3是本发明实施例提供的其中一种中断处理方法的流程示意图;
图4是本发明实施例提供的一种基于可编程硬件的资源管理装置的结构示意图;
图5是本发明实施例提供的一种第二选择模块的结构示意图;
图6是本发明实施例提供的一种第一控制模块的结构示意图;
图7是本发明实施例提供的另一种基于可编程硬件的资源管理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明实施例提供的一种基于可编程硬件的资源管理方法的流程示意图,所述方法可以包括:
S101,在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
具体的,服务器中的资源管理装置可以在服务器的驱动层为可编程硬件中的多个单位子处理器配置状态标识数组,其中,所述可编程硬件可以为FPGA,所述多个单位子处理器可以为FPGA中的多组可并行的PE。例如,所述可编程硬件中的单位子处理器的数量为N,那么所述可编程硬件可并发支持N个业务数据请求。其中,所述状态标识数组可以是被设置在驱动层上的bitmap数组,bitmap数组中的每一个bit可以表示对应的单位子处理器是否可用,即一个bit是一个单位子处理器对应的工作状态标识。而且,每个单位子处理器分别具有各自的单元编号,如N个单位子处理器的单元编号可以分别为PE 0、PE 1、PE2、…、PEN-1,因此,bitmap数组中的第一个bit可以对应PE 0,第二个bit可以对应PE 1,以此类推,第N个bit对应PE N-1。在实际工作过程中,所述资源管理装置可以实时监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器;根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新。例如,单位子处理器A的工作状态为空闲,当所述资源管理装置将某业务数据请求分配给单位子处理器A时,所述资源管理装置可以检测到单位子处理器A的工作状态切换到非空闲状态,进而再将所述状态标识数组中与所述单位子处理器A对应的工作状态标识更新为非空闲标识。
所述资源管理装置还进一步在驱动层配置多个数据缓冲区,所述数据缓冲区可以用于保存业务数据请求中待处理的业务数据、PE处理后返回的业务数据。由于FPGA的内核是不能触发缺页错误,且需要防止调用进程访问非法内存,所以所述资源管理装置可以在驱动层就对所述数据缓冲区中待处理的业务数据进行错误检测,以避免后续在PE中发生缺页错误。其中,所有数据缓冲区都可以存放在一个数组中,并以ring的方式进行分配,即可以轮询访问各数据缓冲区,每个数据缓冲区都可以包含一个用于标识工作状态的标识(当数据缓冲区中存储有数据时,对应标识为非空闲状态标识,说明数据缓冲区正被占用;当数据缓冲区中未存储有数据时,对应标识为空闲状态标识,说明数据缓冲区未被占用)。
S102,获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
具体的,所述资源管理装置可以获取服务器所接收到的业务数据请求,所述业务数据请求可以包括深度学习在线预测的业务请求、视频转码业务请求、图片转码业务请求等等。所述资源管理装置进一步根据所述业务数据请求在驱动层中的状态标识数组中查找工作状态标识为空闲标识的至少一个单位子处理器,并在所述工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器。其中,选择所述目标单位子处理器的具体过程可以为:在所述工作状态标识为空闲标识的至少一个单位子处理器中选择具有最大或最小的单元编号的单位子处理器,以作为目标单位子处理器;或者,选择所述目标单位子处理器的具体过程还可以为:通过轮询的方式选择出目标单位子处理器,如当前选择PE 2对应的单位子处理器为目标单位子处理器,那么就从PE 3开始向后轮询访问,并将轮询访问到的第一个工作状态标识为空闲标识的单位子处理器确定为目标单位子处理器。
所述资源管理装置还进一步根据所述业务数据请求在驱动层中的多个数据缓冲区中选择空闲的目标数据缓冲区。所述资源管理装置还可以使用一个变量记录下次扫描数据缓冲区的起始位置,由于每个数据缓冲区都可以有各自对应的缓冲区编号,所以当该变量等于某缓冲区编号时,该缓冲区编号对应的数据缓冲区即为下次扫描数据缓冲区的起始位置,且该缓冲区编号对应的数据缓冲区同时具备起始位置标识。因此,查找空闲的目标数据缓冲区的具体过程可以为:在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态(即具备空闲状态标识)的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区,并同时重新记录变量为所述目标数据缓冲区对应的缓冲区编号。例如,有N个数据缓冲区,其缓冲区编号分别为buffer 0、buffer 1、buffer 2、…、bufferN-1,当变量x=buffer 5时,buffer 5对应的数据缓冲区具备起始位置标识,因此,在开始扫描空闲的数据缓冲区时,从buffer 5对应的数据缓冲区开始扫描,若逐一扫描到buffer 11对应的数据缓冲区的工作状态为空闲状态,则将buffer 11对应的数据缓冲区筛选出来以作为目标数据缓冲区,且将变量x更新为buffer11,并将所述起始位置标识更新到buffer 11对应的数据缓冲区上,以便于在下次选择目标数据缓冲区时可以从buffer 11对应的数据缓冲区开始向后查找。
可选的,所述资源管理装置还可以通过使用linux(一种操作***)内核提供的原子(atmoic)操作,来调度业务数据请求,使得业务数据请求可以被逐一响应。而且由于可能同时发起多个业务数据请求,所以必须使用内核bit操作默认的atmoic版本,以保证资源管理调度时的高一致性。
S103,将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理;
具体的,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源申请,可以节约可编程硬件的硬件资源。通过将所述目标单位子处理器和所述目标数据缓冲区进行绑定,可以将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据通过PCIe(PeripheralComponent Interconnect Express,一种总线和接口标准)传输至所述目标单位子处理器。同时,FPGA支持所有配置信息对于N各PE共享,且FPGA中的寄存器配置空间可以提供多个配置信息空间(如64个),多个配置信息空间的分配和释放均由上层应用控制,且不同的配置信息空间存储不同的业务处理要求参数。因此,当所述业务数据传输到所述目标单位子处理器时,服务器中的总控制器可以指示所述目标单位子处理器所需要使用的配置信息空间,进而所述目标单位子处理器可以根据所述总控制器所选择的配置信息空间中的业务处理要求参数对所述业务数据进行处理。
所述目标单位子处理器在处理完所述业务数据后,所述资源管理装置可以通过所述目标单位子处理器将处理后的业务数据通过PCIe传输到所述目标数据缓冲区,再将所述目标数据缓冲区中的所述处理后的业务数据传输至所述服务器的上层业务服务中。由于所述目标单位子处理器在处理完所述业务数据后,直接将处理后的业务数据传输至所述目标数据缓冲区,所以FPGA无需对PE资源的释放进行调度,只需所述资源管理装置对驱动层中的数据缓冲区的资源的释放进行调度即可,即完成对数据缓冲区的资源释放也就同样完成了对PE资源的释放。所述资源管理装置调度数据缓冲区的资源的释放过程可以为:按照接收到各业务数据请求的先后顺序对包含处理后的业务数据的数据缓冲区进行先后释放(其释放过程即为将处理后的业务数据发送至服务器的上层业务服务中),或者,按照各业务数据请求的重要性对包含处理后的业务数据的数据缓冲区进行先后释放。因此,本发明实施例中对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
进一步的,请一并参见图1a,是本发明实施例提供的一种FPGA与资源管理装置之间的***架构示意图,在图1a中,资源管理装置具体包括PE资源调度模块100,所述PE资源调度模块100设置于驱动层,且所述PE资源调度模块100可以在驱动层设置状态标识数组200和数据缓冲区总集合300,其中,所述数据缓冲区总集合300包括数据缓冲区Buffer 0至数据缓冲区Buffer 63(即一共有64个数据缓冲区),在FPGA中设置有寄存器配置空间500和,所述PE总集合包括单位子处理器PE 0至单位子处理器PE N-1(即一共有N个单位子处理器)。其中,所述PE资源调度模块100可以与状态标识数组200和数据缓冲区总集合300进行通信连接;所述PE资源调度模块100可以通过PCIe与FPGA中的寄存器配置空间500和PE总集合400进行通信连接。其中,所述状态标识数组200的功能具体参见上述图1实施例中S101步骤中对所述状态标识数组的描述,所述寄存器配置空间500的功能具体参见上述图1实施例中S103步骤中对所述寄存器配置空间的描述。当所述PE资源调度模块100接收到业务数据请求时,所述PE资源调度模块100可以在所述状态标识数组中查找到PE 0对应的工作状态标识为空闲标识,所述PE资源调度模块100还在所述数据缓冲区总集合300中查找到Buffer1为可用的数据缓冲区,进而所述PE资源调度模块100可以将PE 0和Buffer 1绑定;所述PE资源调度模块100先将所述业务数据请求中的业务数据缓存到Buffer 1,再将Buffer 1中的所述业务数据通过PCIe传输给PE 0,PE 0还可以同时获取所述寄存器配置空间500发送的业务处理要求参数,PE 0根据所述业务处理要求参数对所述业务数据进行运算处理,得到处理后的业务数据,进而所述PE资源调度模块100可以控制PE 0将处理后的业务数据通过PCIe传输回Buffer 1,所述PE资源调度模块100再进一步将Buffer1中的处理后的业务数据发送回上层业务服务。通过设置所述PE资源调度模块100,可以使得PE资源的申请和释放均在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
本发明实施例通过在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,即实现了对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
请参见图2,是本发明实施例提供的一种基于可编程硬件的资源管理方法的流程示意图,所述方法可以包括:
S201,在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;
S202,获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
其中,S201和S202步骤的具体实现方式可以参见上述图1对应实施例中的S101-S102步骤,这里不再进行赘述。
优选地,在S201之前,还可以包括以下步骤:
为所述可编程硬件挂载源内存,并将所述源内存划分为多个单位内存块;每个单位内存块的内存容量相等;
将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;
将各单位子处理器集合分别划分到各单位内存块;一个单位子处理器集合对应一个单位内存块;
具体的,服务器中的资源管理装置可以为所述可编程硬件挂载源内存,所述源内存可以为16G的DDR(Double Data Rate,双倍速率同步动态随机存储器),所述资源管理装置可以将DDR划分为多个单位内存块,每个单位内存块可以分别对应一条内存通道。其中,每个单位子处理器集合分别通过一条内存通道连接至对应的单位内存块。例如,若划分出4个单位内存块(一个单位内存块对应一条内存通道),则将N各单位子处理器划分为4个单位子处理器集合,每个单位子处理器集合包括N/4个单位子处理器,4个单位子处理器集合分别通过一条内存通道连接到对应的单位内存块,每个单位内存块可以处理N/4个PE的并行请求。
S203,将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区;
具体的,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源申请,可以节约可编程硬件的硬件资源。通过将所述目标单位子处理器和所述目标数据缓冲区进行绑定,可以将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区。
S204,对所述目标数据缓冲区中的所述业务数据进行缺页错误检测;
具体的,由于FPGA的内核是不能触发缺页错误,且需要防止调用进程访问非法内存,所以所述资源管理装置可以在驱动层就对所述数据缓冲区中的所述业务数据进行错误检测,以避免后续在PE中发生缺页错误。
S205,若检测出所述业务数据不存在所述缺页错误,则所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
具体的,若检测出所述业务数据不存在所述缺页错误,则所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块,所述目标单位内存块即为所述目标单位子处理器所连接的单位内存块。若检测出所述业务数据存在所述缺页错误,则将所述目标数据缓冲区中的所述业务数据删除,并返回错误提示信息到上层业务服务中。
S206,当所述目标单位内存块根据预设的请求优先级规则响应所述第一内存读写请求时,将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块;
具体的,所述第一内存读写请求属于第一请求类型,即第一请求类型是指将数据缓冲区中的待处理的业务数据缓存到DDR的内存读写请求的类型。所述请求优先级规则包括:第一请求类型的处理优先级小于第二请求类型的处理优先级,且第二请求类型的处理优先级小于第三请求类型的处理优先级。其中,所述第二请求类型是指对待处理的业务数据进行运算处理的内存读写请求的类型;所述第三请求类型是指将处理后的业务数据传输回数据缓冲区的内存读写请求的类型。为了整体减少PE处理时延,所以将第三请求类型的处理优先级设为最高;同时,为了提高吞吐率,所以第二请求类型的处理优先级高于第一请求类型的处理优先级。
因此,在所述目标单位子处理器发送第一内存读写请求到所述目标单位内存块时,所述目标单位内存块还可以同时接收其他单位子处理器并行发送的内存读写请求,对于同时接收到的多个内存读写请求(包括所述第一内存读写请求),所述目标单位内存块可以根据所述请求优先级规则优先响应属于第三请求类型的内存读写请求,再响应属于第二请求类型的内存读写请求,最后响应属于第三请求类型的内存读写请求(包括所述第一内存读写请求);在所述目标单位内存块响应所述第一内存读写请求后,所述资源管理装置可以将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块。
其中,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源申请,可以节约可编程硬件的硬件资源。通过将所述目标单位子处理器和所述目标数据缓冲区进行绑定,可以将所述目标数据缓冲区中的所述业务数据通过PCIe缓存至所述目标单位子处理器对应的目标单位内存块。
S207,控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
具体的,在所述业务数据缓存至所述目标单位内存块后,所述资源管理装置可以控制所述目标单位子处理器发送第二内存读写请求到所述目标单位内存块,所述第二内存读写请求属于所述第二请求类型,即所述第二内存读写请求是指对所述目标单位内存块中的所述业务数据进行运算处理的内存读写请求。
S208,当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
具体的,在所述目标单位子处理器发送第二内存读写请求到所述目标单位内存块时,所述目标单位内存块还可以同时接收其他单位子处理器并行发送的内存读写请求,对于同时接收到的多个内存读写请求(包括所述第二内存读写请求),所述目标单位内存块可以根据所述请求优先级规则优先响应属于第三请求类型的内存读写请求,再响应属于第二请求类型的内存读写请求(包括所述第二内存读写请求),最后响应属于第三请求类型的内存读写请求;在所述目标单位内存块响应所述第二内存读写请求后,所述资源管理装置可以控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理。
其中,FPGA支持所有配置信息对于N各PE共享,且FPGA中的寄存器配置空间可以提供多个配置信息空间(如64个),多个配置信息空间的分配和释放均由上层应用控制,且不同的配置信息空间存储不同的业务处理要求参数。因此,当所述目标单位内存块响应所述第二内存读写请求时,服务器中的总控制器可以指示所述目标单位子处理器所需要使用的配置信息空间,进而所述目标单位子处理器可以根据所述总控制器所选择的配置信息空间中的业务处理要求参数对所述业务数据进行运算处理。
S209,当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
具体的,所述第三内存读写请求属于第三请求类型,即所述第三内存读写请求是指将所述目标单位内存块中处理后的业务数据传输回所述目标数据缓冲区的内存读写请求。
S210,当所述目标单位内存块根据所述请求优先级规则响应所述第三内存读写请求时,将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区,并控制所述目标数据缓冲区将所述运算处理后的业务数据返回至上层业务服务;
具体的,在所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块时,所述目标单位内存块还可以同时接收其他单位子处理器并行发送的内存读写请求,对于同时接收到的多个内存读写请求(包括所述第三内存读写请求),所述目标单位内存块可以根据所述请求优先级规则优先响应属于第三请求类型的内存读写请求(包括所述第三内存读写请求),再响应属于第二请求类型的内存读写请求,最后响应属于第三请求类型的内存读写请求;在所述目标单位内存块响应所述第三内存读写请求后,所述资源管理装置可以将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区,并控制所述目标数据缓冲区将所述运算处理后的业务数据返回至上层业务服务。
由于所述目标单位内存块响应所述第三内存读写请求后,所述目标单位子处理器可以直接将处理后的业务数据传输至所述目标数据缓冲区,所以FPGA无需对PE资源的释放进行调度,只需所述资源管理装置对驱动层中的数据缓冲区的资源的释放进行调度即可,即完成对数据缓冲区的资源释放也就同样完成了对PE资源的释放。所述资源管理装置调度数据缓冲区的资源的释放过程可以为:按照接收到各业务数据请求的先后顺序对包含处理后的业务数据的数据缓冲区进行先后释放(其释放过程即为将处理后的业务数据发送至服务器的上层业务服务中),或者,按照各业务数据请求的重要性对包含处理后的业务数据的数据缓冲区进行先后释放。因此,本发明实施例中对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
在待处理的所述业务数据缓存到所述目标单位内存块后,通过预先设置的所述请求优先级规则,可以使得所述目标单位子处理器无需等待其他业务数据都缓存到所述目标单位内存块即可开始对所述业务数据进行运算处理(因为第二请求类型的处理优先级高于第一请求类型的处理优先级)。而且对所述业务数据进行运算处理的时间可以与数据传输的时间(包括将其他业务数据缓存到所述目标单位内存块的时间或将其他业务数据传输回对应数据缓冲区的时间)重合,从而可以大幅度降低单个内存读写请求的处理延迟。例如,若所述目标单位内存块响应完属于第三请求类型的内存读写请求后,立即响应属于第二请求类型的内存读写请求,此时,对所述业务数据进行运算处理的时间可以与将其他业务数据传输回对应数据缓冲区的时间有部分重叠;若所述目标单位内存块响应完属于第二请求类型的内存读写请求后,立即响应属于第一请求类型的内存读写请求,此时,对所述业务数据进行运算处理的时间可以与将其他业务数据缓存到所述目标单位内存块的时间有部分重叠。
可选的,在每个单位子处理器集合中都设置一个最高优先级权限,即一个单位子处理器集合中只能有一个单位子处理器可以具备最高优先级权限,且最高优先级权限是基于轮询的方式进行分配的。对所述最高优先级权限的具体使用过程可以为:当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第二内存读写请求中的任意一种;在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。例如,在目标单位内存块中有9个单位子处理器,分别为PE 0至PE 9,当PE 3具备所述最高优先级权限时,PE 3无论发起哪一种请求类型的目标内存读写请求,所述目标单位内存块都会优先响应所述目标内存读写请求,对于除了PE 3之外的其他8个单位子处理器所发起的内存读写请求,所述目标单位内存块依然根据所述请求优先级规则进行响应,同时,所述最高优先级权限通过轮询的方式分配给下一个单位子处理器(即PE 4),使得PE 4具备所述最高优先级权限,以此类推。通过设置所述最高优先级权限,可以有效防止在大压力情况下的部分PE的内存读写请求始终得不到响应,进而有效避免整体延时大幅提升。
其中,所述目标单位内存块可以将各PE发起的内存读写请求转化为标准的AXI(Advanced eXtensible Interface,总线协议)接口进行读写操作。
可选的,每个PE都可以具备各自独立的控制器,该控制器只对所属PE中存在资源竞争的部分进行调度。PE内的独立的控制器负责向总控制器发送请求,总控制器利用反馈机制通知PE中独立的控制器任务完成,由于PE内部的控制器只关注于自己的资源情况和流程,不必考虑其他PE,所以可以进一步提高内存调度的效率。
再请一并参见图2a,是本发明实施例提供的另一种FPGA与资源管理装置之间的***架构示意图,图2a所示的***架构可以包括上述图1a对应实施例中的PE资源调度模块100、状态标识数组200、数据缓冲区总集合300以及PE总集合400,进一步的,在图2a中,所述资源管理装置不仅可以包括PE资源调度模块100,所述资源管理装置还可以包括内存调度模块600,所以图2a所示的***架构还可以包括所述内存调度模块600和单位内存块集合700。其中,所述单位内存块集合700包括4个单位内存块(包括单位内存块DDR 0至单位内存块DDR 3,这4个单位内存块是通过对源内存进行均等划分所得到的),在图2a所示的***架构中,将所述PE总集合400中的N个PE划分成4个单位子处理器集合(第一个单位子处理器集合包括PE 0至PE N/4-1,第二单位子处理器集合包括PE N/4至PE N/2-1,第三单位子处理器集合包括PE N/2至PE 3*N/4-1,第四单位子处理器集合包括PE 3*N/4至PE N-1),每个单位子处理器集合均分别连接一个内存调度模块600,且每个内存调度模块600均分别与一个单位内存块连接。每个内存调度模块600内均设置有请求优先级规则和最高优先级权限,使得每个内存调度模块600均可以基于所述请求优先级规则和所述最高优先级权限对所对应的单位子处理器集合内所并发的多个内存读写请求进行调度(对所述请求优先级规则和所述最高优先级权限的用法可以具体参见上述图2对应实施例中的S205-S210,这里不再进行赘述),以保证各种内存读写请求和各PE之间的公平性,进而可以有效减少整体PE处理时延,并大幅度降低单个内存读写请求的处理延迟。
本发明实施例通过在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,即实现了对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。同时,本发明实施例通过在FPGA片上设置请求优先级规则和最高优先级权限,可以保证各种请求类型和各PE之间的公平性,进而可以有效减少整体PE处理时延,并大幅度降低单个内存读写请求的处理延迟。
再请参见图3,是本发明实施例提供的其中一种中断处理方法的流程示意图,所述方法可以包括:
S301,当存在至少一个单位子处理器完成对所述业务数据的处理操作时,将完成所述处理操作的各单位子处理器确定为待中断单位子处理器,并在所述可编程硬件侧接收各待中断单位子处理器分别发起的中断请求;
具体的,资源管理装置可以在所述FPGA内接收各待中断单位子处理器分别发起的中断请求。例如,若有20个单位子处理器同时完成对所述业务数据的处理操作,则这20个单位子处理器均会发起中断请求,进而所述资源管理装置可以在FPGA内接收到这20个中断请求。
S302,根据所述各待中断单位子处理器分别发起的中断请求,将中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识;所述中断请求寄存器位于所述可编程硬件内,且所述中断请求寄存器中的每个中断标识分别对应不同的单位子处理器;
具体的,所述中断请求寄存器中的bitmap数组中的各个bit分别对应的一个单位子处理器,且每个bit包含一个中断标识,即在一个bit表示一个单位子处理器所对应的中断标识,所述中断标识包括待中断标识(待中断标识对应的bit为1)和无中断标识(无中断标识对应的bit为0)。所述资源管理装置可以将处于FPGA内的所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识(即将对应的bit更新为1)。
S303,将所述各待中断单位子处理器分别发起的中断请求进行合并,得到合并中断请求,并将所述合并中断请求发送至中断处理进程,以使所述中断处理进程根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理;
具体的,S302和S303步骤可以不分先后执行,即所述资源管理装置在更新所述中断请求寄存器的同时,还可以将所述各待中断单位子处理器分别发起的中断请求进行合并,得到一个合并中断请求,并将所述合并中断请求通过PCIe发送至所述驱动层中的中断处理进程,使得所述中断处理进程在响应所述合并中断请求后,可以根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理。通过合并所述各待中断单位子处理器分别发起的中断请求,可以大大减少FPGA通过PCIe发起中断请求的数量,进而提高***效率。
S304,在检测到所述中断处理进程完成所述中断处理时,将所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为无中断标识;
具体的,所述中断处理进程每处理完一个待中断单位子处理器对应的中断操作,就会反馈对应的中断已处理信息到所述资源管理装置,使得所述资源管理装置可以进一步通过DMA(Direct Memory Access,直接内存存取)读取所述中断请求寄存器,以将所述中断请求寄存器中的完成中断操作的单位子处理器对应的中断标识更新为无中断标识(即将对应的bit更新为0),以此类推,当所述中断请求寄存器中的bitmap==0时,说明所述各待中断单位子处理器分别对应的中断操作都已处理完毕。
本发明实施例通过将多个单位子处理器发起的中断请求进行合并,再将合并后的中断请求通过PCIe发送到中断处理进程,可以大大减少FPGA通过PCIe发起中断请求的数量,进而提高***效率。
请参见图4,是本发明实施例提供的一种基于可编程硬件的资源管理装置1的结构示意图,所述资源管理装置1可以应用在服务器中的驱动层和FPGA层中,所述资源管理装置1可以包括:配置模块11、第一选择模块12、第二选择模块13、第一传输模块14、第二传输模块15、监控模块16、更新模块17、第一控制模块19、第二控制模块20、划分模块18、确定接收模块21、中断更新模块22、中断合并模块23;
所述配置模块11,用于在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
所述第一选择模块12,用于获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器;
所述第二选择模块13,用于根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
所述第一传输模块14,用于将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区;
所述第二传输模块15,用于将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理;
其中,所述第二传输模块15可以具体用于若所述第一传输模块14检测出所述目标数据缓冲区中的所述业务数据不存在所述缺页错误,则控制所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块,并当所述目标单位内存块根据预设的请求优先级规则响应所述第一内存读写请求时,将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块。
所述监控模块16,用于监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器;
所述更新模块17,用于根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新;
所述第一控制模块19,用于控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,控制所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区;
所述第二控制模块20,用于控制所述目标数据缓冲区将所述处理后的业务数据返回至上层业务服务;
其中,所述配置模块11、所述第一选择模块12、所述第二选择模块13、所述第一传输模块14、所述第二传输模块15、所述监控模块16、所述更新模块17、所述第一控制模块19、所述第二控制模块20的具体功能实现方式可以参见上述图1对应实施例中的S101-S103,这里不再进行赘述。其中,所述配置模块11、所述第一选择模块12、所述第二选择模块13、所述第一传输模块14、所述监控模块16、所述更新模块17以及所述第二控制模块20可以被设置在驱动层中;所述第二传输模块15和所述第一控制模块19可以被设置在FPGA中。
所述划分模块18,用于为所述可编程硬件挂载源内存,并将所述源内存划分为多个单位内存块;每个单位内存块的内存容量相等;
所述划分模块18,还用于将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;
所述划分模块18,还用于将各单位子处理器集合分别划分到各单位内存块;一个单位子处理器集合对应一个单位内存块;
其中,所述划分模块18的具体功能实现方式可以参见上图2对应实施例中对所述单位子处理器集合和所述单位内存块的描述,这里不再进行赘述。所述划分模块18可以被设置在所述FPGA中。
所述确定接收模块21,用于当存在至少一个单位子处理器完成对所述业务数据的处理操作时,将完成所述处理操作的各单位子处理器确定为待中断单位子处理器,并在所述可编程硬件侧接收各待中断单位子处理器分别发起的中断请求;
所述中断更新模块22,用于根据所述各待中断单位子处理器分别发起的中断请求,将中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识;所述中断请求寄存器位于所述可编程硬件内,且所述中断请求寄存器中的每个中断标识分别对应不同的单位子处理器;
所述中断合并模块23,用于将所述各待中断单位子处理器分别发起的中断请求进行合并,得到合并中断请求,并将所述合并中断请求发送至中断处理进程,以使所述中断处理进程根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理;
所述中断更新模块22,还用于在检测到所述中断处理进程完成所述中断处理时,将所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为无中断标识;
其中,所述确定接收模块21、所述中断更新模块22、所述中断合并模块23的具体功能实现方式可以参见上述图3对应实施例中的S301-S304,这里不再进行赘述。所述确定接收模块21、所述中断更新模块22、所述中断合并模块23可以被设置在所述FPGA中。
进一步的,请一并参见图5,是本发明实施例提供的一种第二选择模块13的结构示意图,所述第二选择模块13可以包括:查找单元131、确定单元132;
所述查找单元131,用于在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;各数据缓冲区分别对应一个缓冲区编号,且各缓冲区编号互不相同;
所述确定单元132,用于从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区。
所述查找单元131、所述确定单元132的具体功能实现方式可以参见上述图1对应实施例中的S102,这里不再进行赘述。
进一步的,再请一并参见图6,是本发明实施例提供的一种第一控制模块19的结构示意图,所述第一控制模块19可以包括:第一控制单元191、第二控制单元192、第三控制单元193;
所述第一控制单元191,用于控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
所述第一控制单元191,还用于当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
所述第二控制单元192,用于当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
所述第二控制单元192,还用于当所述目标单位内存块根据所述请求优先级规则响应所述第三内存读写请求时,控制将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区;
所述第三控制单元193,用于当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第二内存读写请求中的任意一种;
所述第三控制单元193,还用于在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。
其中,所述请求优先级规则包括:所述第一内存读写请求对应的第一请求类型的处理优先级小于所述第二内存读写请求对应的第二请求类型的处理优先级,且所述第二请求类型的处理优先级小于所述第三内存读写请求对应的第三请求类型的处理优先级。
其中,所述第一控制单元191、所述第二控制单元192、所述第三控制单元193的具体功能实现方式可以参见上述图2对应实施例中的S205-S210,这里不再进行赘述。
本发明实施例通过在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,即实现了对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。同时,本发明实施例通过在FPGA片上设置请求优先级规则和最高优先级权限,可以保证各种请求类型和各PE之间的公平性,进而可以有效减少整体PE处理时延,并大幅度降低单个内存读写请求的处理延迟。
请参见图7,是本发明实施例提供的另一种基于可编程硬件的资源管理装置的结构示意图。如图7所示,所述资源管理装置1000可以应用在服务器中,所述资源管理装置1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,可编程硬件1003(例如FPGA),存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。其中,处理器1001是用于执行服务器中的驱动层内的相关功能。
在图7所示的资源管理装置1000中,网络接口1004主要用于连接客户端,以接收客户端发送的业务数据请求;而处理器1001和可编程硬件1003均可以用于调用存储器1005中存储的设备控制应用程序。
所述处理器1001,用于在驱动层为可编程硬件1003中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
所述处理器1001,还用于获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
所述处理器1001,还用于将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区;
所述可编程硬件1003,用于再将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理。
其中,所述处理器1001,还用于监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器,并根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新。
其中,所述处理器1001在执行根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区时,具体执行以下步骤:
在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;各数据缓冲区分别对应一个缓冲区编号,且各缓冲区编号互不相同;
从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区。
其中,所述可编程硬件1003,还用于控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,控制所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区;
所述处理器1001,还用于控制所述目标数据缓冲区将所述处理后的业务数据返回至上层业务服务。
其中,所述可编程硬件1003,还用于为所述可编程硬件1003挂载源内存,并将所述源内存划分为多个单位内存块,并将多个单位子处理器划分为多个单位子处理器集合,并将各单位子处理器集合分别划分到各单位内存块;每个单位内存块的内存容量相等;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;一个单位子处理器集合对应一个单位内存块。
其中,所述可编程硬件1003在将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器时,具体执行以下步骤:
若所述处理器1001检测出所述目标数据缓冲区中的所述业务数据不存在所述缺页错误,则控制所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块,并当所述目标单位内存块根据预设的请求优先级规则响应所述第一内存读写请求时,将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块。
其中,所述可编程硬件1003在控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,控制所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区时,具体执行以下步骤:
控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
当所述目标单位内存块根据所述请求优先级规则响应所述第三内存读写请求时,将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区。
其中,所述请求优先级规则包括:所述第一内存读写请求对应的第一请求类型的处理优先级小于所述第二内存读写请求对应的第二请求类型的处理优先级,且所述第二请求类型的处理优先级小于所述第三内存读写请求对应的第三请求类型的处理优先级。
其中,所述可编程硬件1003,还用于当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第二内存读写请求中的任意一种;
所述可编程硬件1003,还用于在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。
其中,所述可编程硬件1003,还用于当存在至少一个单位子处理器完成对所述业务数据的处理操作时,将完成所述处理操作的各单位子处理器确定为待中断单位子处理器,并接收各待中断单位子处理器分别发起的中断请求;
所述可编程硬件1003,还用于根据所述各待中断单位子处理器分别发起的中断请求,将中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识;所述中断请求寄存器位于所述可编程硬件1003内,且所述中断请求寄存器中的每个中断标识分别对应不同的单位子处理器;
所述可编程硬件1003,还用于将所述各待中断单位子处理器分别发起的中断请求进行合并,得到合并中断请求,并将所述合并中断请求发送至中断处理进程,以使所述中断处理进程根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理;
所述可编程硬件1003,还用于在检测到所述中断处理进程完成所述中断处理时,将所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为无中断标识。
本发明实施例通过在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,即实现了对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。同时,本发明实施例通过在FPGA片上设置请求优先级规则和最高优先级权限,可以保证各种请求类型和各PE之间的公平性,进而可以有效减少整体PE处理时延,并大幅度降低单个内存读写请求的处理延迟。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (18)
1.一种基于可编程硬件的资源管理方法,其特征在于,包括:
在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理;
当存在至少一个单位子处理器完成对所述业务数据的处理操作时,将完成所述处理操作的各单位子处理器确定为待中断单位子处理器,并在所述可编程硬件侧接收各待中断单位子处理器分别发起的中断请求;
根据所述各待中断单位子处理器分别发起的中断请求,将中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识;所述中断请求寄存器位于所述可编程硬件内,且所述中断请求寄存器中的每个中断标识分别对应不同的单位子处理器;
将所述各待中断单位子处理器分别发起的中断请求进行合并,得到合并中断请求,并将所述合并中断请求发送至中断处理进程,以使所述中断处理进程根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理;
在检测到所述中断处理进程完成所述中断处理时,将所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为无中断标识。
2.如权利要求1所述的方法,其特征在于,还包括:
监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器;
根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新。
3.如权利要求1所述的方法,其特征在于,所述根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,包括:
在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;各数据缓冲区分别对应一个缓冲区编号,且各缓冲区编号互不相同;
从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区。
4.如权利要求1所述的方法,其特征在于,还包括:
控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,通知所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区,并控制所述目标数据缓冲区将所述处理后的业务数据返回至上层业务服务。
5.如权利要求4所述的方法,其特征在于,在所述为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区的步骤之前,还包括:
为所述可编程硬件挂载源内存,并将所述源内存划分为多个单位内存块;每个单位内存块的内存容量相等;
将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;
将各单位子处理器集合分别划分到各单位内存块;一个单位子处理器集合对应一个单位内存块。
6.如权利要求5所述的方法,其特征在于,所述将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,包括:
对所述目标数据缓冲区中的所述业务数据进行缺页错误检测;
若检测出所述业务数据不存在所述缺页错误,则所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
当所述目标单位内存块根据预设的请求优先级规则响应所述第一内存读写请求时,将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块。
7.如权利要求6所述的方法,其特征在于,所述控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,通知所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区,并控制所述目标数据缓冲区将所述处理后的业务数据返回至上层业务服务,包括:
控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
当所述目标单位内存块根据所述请求优先级规则响应所述第三内存读写请求时,将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区,并控制所述目标数据缓冲区将所述运算处理后的业务数据返回至上层业务服务。
8.如权利要求7所述的方法,其特征在于,所述请求优先级规则包括:所述第一内存读写请求对应的第一请求类型的处理优先级小于所述第二内存读写请求对应的第二请求类型的处理优先级,且所述第二请求类型的处理优先级小于所述第三内存读写请求对应的第三请求类型的处理优先级。
9.如权利要求8所述的方法,其特征在于,还包括:
当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第三内存读写请求中的任意一种;
在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。
10.一种基于可编程硬件的资源管理装置,其特征在于,包括:
配置模块,用于在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;所述状态标识数组包含每个单位子处理器分别对应的工作状态标识;
第一选择模块,用于获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器;
第二选择模块,用于根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
第一传输模块,用于将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区;
第二传输模块,用于将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理;
确定接收模块,用于当存在至少一个单位子处理器完成对所述业务数据的处理操作时,将完成所述处理操作的各单位子处理器确定为待中断单位子处理器,并在所述可编程硬件侧接收各待中断单位子处理器分别发起的中断请求;
中断更新模块,用于根据所述各待中断单位子处理器分别发起的中断请求,将中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为待中断标识;所述中断请求寄存器位于所述可编程硬件内,且所述中断请求寄存器中的每个中断标识分别对应不同的单位子处理器;
中断合并模块,用于将所述各待中断单位子处理器分别发起的中断请求进行合并,得到合并中断请求,并将所述合并中断请求发送至中断处理进程,以使所述中断处理进程根据所述合并中断请求在所述中断请求寄存器中查找各待中断标识,并对所述各待中断标识分别对应的待中断单位子处理器进行中断处理;
所述中断更新模块,还用于在检测到所述中断处理进程完成所述中断处理时,将所述中断请求寄存器中与所述各待中断单位子处理器分别对应的中断标识更新为无中断标识。
11.如权利要求10所述的装置,其特征在于,还包括:
监控模块,用于监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器;
更新模块,用于根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新。
12.如权利要求10所述的装置,其特征在于,所述第二选择模块包括:
查找单元,用于在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;各数据缓冲区分别对应一个缓冲区编号,且各缓冲区编号互不相同;
确定单元,用于从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区。
13.如权利要求10所述的装置,其特征在于,还包括:
第一控制模块,用于控制所述目标单位子处理器对所述业务数据进行处理,并在所述目标单位子处理器处理完所述业务数据时,控制所述目标单位子处理器将处理后的业务数据传输至所述目标数据缓冲区;
第二控制模块,用于控制所述目标数据缓冲区将所述处理后的业务数据返回至上层业务服务。
14.如权利要求13所述的装置,其特征在于,还包括:
划分模块,用于为所述可编程硬件挂载源内存,并将所述源内存划分为多个单位内存块;每个单位内存块的内存容量相等;
所述划分模块,还用于将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;
所述划分模块,还用于将各单位子处理器集合分别划分到各单位内存块;一个单位子处理器集合对应一个单位内存块。
15.如权利要求14所述的装置,其特征在于,
所述第二传输模块,具体用于若所述第一传输模块检测出所述目标数据缓冲区中的所述业务数据不存在缺页错误,则控制所述目标单位子处理器发送第一内存读写请求到与所述目标单位子处理器对应的目标单位内存块,并当所述目标单位内存块根据预设的请求优先级规则响应所述第一内存读写请求时,将所述目标数据缓冲区中的所述业务数据缓存至与所述目标单位子处理器对应的目标单位内存块。
16.如权利要求15所述的装置,其特征在于,所述第一控制模块包括:
第一控制单元,用于控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
所述第一控制单元,还用于当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
第二控制单元,用于当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
所述第二控制单元,还用于当所述目标单位内存块根据所述请求优先级规则响应所述第三内存读写请求时,控制将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区。
17.如权利要求16所述的装置,其特征在于,所述请求优先级规则包括:所述第一内存读写请求对应的第一请求类型的处理优先级小于所述第二内存读写请求对应的第二请求类型的处理优先级,且所述第二请求类型的处理优先级小于所述第三内存读写请求对应的第三请求类型的处理优先级。
18.如权利要求17所述的装置,其特征在于,所述第一控制模块还包括:
第三控制单元,用于当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第三内存读写请求中的任意一种;
所述第三控制单元,还用于在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121416.2A CN108536526B (zh) | 2017-03-02 | 2017-03-02 | 一种基于可编程硬件的资源管理方法以及装置 |
PCT/CN2018/077735 WO2018157836A1 (zh) | 2017-03-02 | 2018-03-01 | 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121416.2A CN108536526B (zh) | 2017-03-02 | 2017-03-02 | 一种基于可编程硬件的资源管理方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536526A CN108536526A (zh) | 2018-09-14 |
CN108536526B true CN108536526B (zh) | 2022-09-13 |
Family
ID=63369777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710121416.2A Active CN108536526B (zh) | 2017-03-02 | 2017-03-02 | 一种基于可编程硬件的资源管理方法以及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108536526B (zh) |
WO (1) | WO2018157836A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104134B (zh) * | 2018-10-26 | 2021-09-07 | 华为技术有限公司 | 可编程器件的管理单元的更新方法、装置和存储介质 |
CN111382857B (zh) * | 2018-12-29 | 2023-07-18 | 上海寒武纪信息科技有限公司 | 任务处理装置、神经网络处理器芯片、组合装置以及电子设备 |
CN110196842A (zh) * | 2019-04-26 | 2019-09-03 | 视联动力信息技术股份有限公司 | 文件存储方法、管理方法、装置、服务器及存储介质 |
CN111427696B (zh) * | 2020-04-07 | 2023-03-14 | 上海飞旗网络技术股份有限公司 | 业务资源调度方法及装置 |
CN111506426B (zh) * | 2020-04-17 | 2021-05-04 | 翱捷科技(深圳)有限公司 | 内存管理方法、装置及电子设备 |
CN111522673A (zh) * | 2020-04-26 | 2020-08-11 | 腾讯科技(深圳)有限公司 | 内存数据访问方法、装置、计算机设备和存储介质 |
CN111708626A (zh) * | 2020-06-17 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 数据访问方法、装置、计算机设备和存储介质 |
CN111813338B (zh) * | 2020-06-30 | 2024-06-14 | 飞诺门阵(北京)科技有限公司 | 一种网络存储设备 |
CN111813759A (zh) * | 2020-07-13 | 2020-10-23 | 北京九维数安科技有限公司 | 小包数据并行处理装置和方法 |
CN113079152B (zh) * | 2021-03-26 | 2023-01-24 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置及介质 |
CN113704165B (zh) * | 2021-07-15 | 2023-09-12 | 郑州云海信息技术有限公司 | 一种超融合服务器、数据处理方法及装置 |
CN116700633B (zh) * | 2023-08-08 | 2023-11-03 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译***及方法 |
CN102236543A (zh) * | 2010-05-07 | 2011-11-09 | 百度在线网络技术(北京)有限公司 | 数据解压装置及方法 |
CN103238305A (zh) * | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器*** |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与*** |
WO2016070431A1 (zh) * | 2014-11-07 | 2016-05-12 | 华为技术有限公司 | 内存访问方法、装置和计算机设备 |
CN106445876A (zh) * | 2015-08-13 | 2017-02-22 | 阿尔特拉公司 | 基于应用的动态异构多核***和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020008B (zh) * | 2012-12-26 | 2015-08-12 | 无锡江南计算技术研究所 | 计算能力增强的可重构微服务器 |
CN103076849B (zh) * | 2012-12-26 | 2014-07-02 | 无锡江南计算技术研究所 | 可重构微服务器*** |
-
2017
- 2017-03-02 CN CN201710121416.2A patent/CN108536526B/zh active Active
-
2018
- 2018-03-01 WO PCT/CN2018/077735 patent/WO2018157836A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236543A (zh) * | 2010-05-07 | 2011-11-09 | 百度在线网络技术(北京)有限公司 | 数据解压装置及方法 |
CN103238305A (zh) * | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器*** |
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译***及方法 |
WO2016070431A1 (zh) * | 2014-11-07 | 2016-05-12 | 华为技术有限公司 | 内存访问方法、装置和计算机设备 |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与*** |
CN106445876A (zh) * | 2015-08-13 | 2017-02-22 | 阿尔特拉公司 | 基于应用的动态异构多核***和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018157836A1 (zh) | 2018-09-07 |
CN108536526A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536526B (zh) | 一种基于可编程硬件的资源管理方法以及装置 | |
US8239868B2 (en) | Computer system, servers constituting the same, and job execution control method and program | |
EP3255553B1 (en) | Transmission control method and device for direct memory access | |
WO2021227677A1 (zh) | 场景推送方法、执行方法、装置、终端、服务器和*** | |
CN111191777B (zh) | 一种神经网络处理器及其控制方法 | |
RU2568292C2 (ru) | Система и способ выбора синхронного или асинхронного межпроцессного взаимодействия | |
US20060277325A1 (en) | Efficient data transmission system and method via direct memory access controller | |
WO2015074393A1 (zh) | 一种基于异构多核体系的cpu调度方法、装置和*** | |
JP4992408B2 (ja) | ジョブ割当プログラム、方法及び装置 | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
US9836516B2 (en) | Parallel scanners for log based replication | |
CN108920111B (zh) | 数据共享方法及分布式数据共享*** | |
CN111338779B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN104750690A (zh) | 一种查询处理方法、装置及*** | |
US8639840B2 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
CN110716691A (zh) | 调度方法、装置、闪存设备和*** | |
US10579419B2 (en) | Data analysis in storage system | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN103500108A (zh) | ***内存访问方法、节点控制器和多处理器*** | |
KR20150007698A (ko) | 가상 데스크탑 서비스를 위한 부하 분산 시스템 | |
CN111126604A (zh) | 模型训练方法、装置、服务器及存储介质 | |
CN110706148A (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN111382141B (zh) | 主从架构配置方法、装置、设备以及计算机可读存储介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
US12019909B2 (en) | IO request pipeline processing device, method and system, and storage medium |
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 |