WO2018157836A1 - 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质 - Google Patents
一种可编程硬件的资源管理方法、可编程硬件设备及存储介质 Download PDFInfo
- Publication number
- WO2018157836A1 WO2018157836A1 PCT/CN2018/077735 CN2018077735W WO2018157836A1 WO 2018157836 A1 WO2018157836 A1 WO 2018157836A1 CN 2018077735 W CN2018077735 W CN 2018077735W WO 2018157836 A1 WO2018157836 A1 WO 2018157836A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processor
- unit sub
- data
- service data
- request
- Prior art date
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
本申请要求于2017年3月2日提交中国专利局、申请号为201710121416.2、申请名称为“一种基于可编程硬件的资源管理方法以及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及计算机技术领域,尤其涉及一种可编程硬件的资源管理方法、可编程硬件设备及存储介质。
背景
随着互联网用户的快速增长,数据体量的急剧膨胀,各种数据处理设备(例如,服务器、数据中心,等)对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,安全套接字层上的超文本传输协议)加密等各类应用对计算的需求已远远超出了传统CPU(中央处理器,Central Processing Unit)的能力范围。而可编程硬件具有丰富的逻辑资源以及可编程性,应用在数据处理设备中可以很好的弥补数据处理需求的缺口。目前的可编程硬件中,一般会有多组并行的PE(Process Element,处理单元),并由可编程硬件中基于HDL(Hardware Description Language,硬件描述语言)设计的电路来进行资源调度。
技术内容
本申请实施例提供一种基于可编程硬件的资源管理方法、可编程硬件设备和存储介质,可以节约硬件资源。
本申请实施例提供了一种可编程硬件的资源管理方法,应用于连接有可编程硬件的数据处理设备,包括:
为可编程硬件中的多个单位子处理器配置状态标识数组,所述状态标识数组包括表示每个单位子处理器是否可用的工作状态标识;
获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器;
将所述业务数据请求中的业务数据传输至可编程硬件中,指令所述目标单位子处理器对所述业务数据进行处理。
本申请实施例还提供了一种可编程硬件设备,可以连接到数据处理设备,包括:可编程逻辑器件和内存;所述可编程逻辑器件包括:总控制电路和多个处理单元;
所述总控制电路用于,从所述数据处理设备获取控制信息,所述控制信息包括业务数据的信息和所述多个处理单元中一处理单元的信息;指令所述处 理单元对所述业务数据进行处理;根据所述处理单元的数据获取请求,从所述数据处理设备获取所述业务数据并存储到所述内存中;
所述处理单元用于,根据总控制电路提供的业务数据的信息向所述总控制电路发送所述数据获取请求;对所述内存中存储的所述业务数据进行处理。
本申请实施例还提供了一种计算机可读存储介质,其中存储有计算机可读指令,所述指令可以使至少一个处理器本申请各实施例的方法。
本申请实施例在驱动层中进行PE资源调度,可以节约可编程硬件的硬件资源,而且在驱动层上实现资源调度的成本要低于在可编程硬件层面上进行资源调度的成本。
附图简要说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例的一种数据处理设备的示意图;
图1b为本申请实施例的一种可编程硬件设备的示意图;
图1c为本申请实施例的一种可编程硬件的资源管理方法的流程图;
图1d为本申请实施例的一种可编程硬件设备的示意图;
图1e为本申请实施例的一种可编程硬件设备的示意图;
图2a是本申请实施例的一种可编程硬件的资源管理方法的流程示意图;
图2b是本申请实施例的一种FPGA与资源管理装置之间的系统架构示意图;
图2c是本申请实施例的一种可编程硬件的资源管理方法的流程示意图;
图2d是本申请实施例的一种FPGA与资源管理装置之间的系统架构示意图;
图3是本申请实施例的一种中断处理方法的流程示意图;
图4是本申请实施例的一种可编程硬件的资源管理装置的结构示意图;
图5是本申请实施例的一种第二选择模块的结构示意图;
图6是本申请实施例的一种第一控制模块的结构示意图;
图7是本申请实施例的一种可编程硬件的资源管理装置的结构示意图。
实施本申请的方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请各实施例中,可以在数据处理设备中采用可编程硬件设备来提高数据处理设备的数据处理能力。可编程硬件设备可以为插入数据处理设备的扩 展卡,或者与数据处理设备相连接的外接扩展单元。
图1a为本申请实施例的一种数据处理设备的示意图。如图1a所示,数据处理设备30可以包括处理器31、存储装置32和可编程硬件接口35。
处理器31可以包括一个或多个处理芯片,每个处理芯片可以为单核或多核处理芯片。处理器31可以执行存储装置32中存储的计算机可读指令,从而实现各种操作。
存储装置32可以包括一个或多个存储器。存储装置32中存储有操作系统33和应用软件34。操作系统33中包括资源管理装置35,用于管理可编程硬件设备中的计算资源。
资源管理装置35可以将待处理的业务数据存储到数据缓冲单元36,根据可编程硬件设备的请求将待处理的业务数据传送到可编程硬件设备。资源管理装置35可以在状态标识存储单元37中记录可编程硬件设备中各处理单元的工作状态,根据各处理单元的工作状态将待处理的业务请求分配给各处理单元,从而实现对可编程硬件设备中处理资源的调度和管理。资源管理装置35可以由计算机可读指令实现,例如驱动程序、API等。
可编程硬件接口35用于将可编程硬件设备(下文也称为可编程硬件)连接到数据处理设备30,可以为PCI接口、USB接口等。
数据处理设备30还包括互联机构39。互联机构39可以为一条或者多条连接数据处理设备30中的各部件的通信线路。互联机构39可以为总线,例如PCI总线,ISA总线、EISA总线、VESA总线等。
图1b为本申请实施例的一种可编程硬件设备的示意图。如图1b所示,可编程硬件设备40可以包括可编程逻辑器件49和内存43。
内存43可以是可编程逻辑器件49外接的内存设备。为了与数据处理设备中的内存进行区别,本文中也将内存43称为板载内存(on-board memory)或源内存。内存43可以以焊接等方式固定在可编程逻辑器件49上。
可编程逻辑器件49可以是现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、特定用途集成电路(ASIC)等。可编程逻辑器件49可以包括总控制电路41、多个处理单元421~42N、配置寄存器45、控制寄存器44。各部件均由逻辑电路实现,可以通过互联机构相连。互联机构可以包括一条或多条连接线路。互联机构可以为各种芯片内总线,例如AMBA总线、Wishbone总线、Avalon总线,等。
配置寄存器45用于存储各种预先配置的信息,例如数据处理过程所需的各种参数、关于内存分配的信息,等。
控制寄存器44用于存储来自数据处理设备30的控制信息。
总控制电路41用于根据控制寄存器44中的控制信息控制处理单元421~42N处理业务数据。
处理单元421~42N,用于在总控制电路41的控制下处理业务数据,本文中也称为单位子处理器。
本申请各实施例中,将可编程硬件设备40中各处理单元421~42N的任 务分配和调度交由数据处理设备30完成,从而不需要在可编程硬件设备40中设置调度管理电路,节约了硬件处理资源。图1c为本申请实施例的一种可编程硬件的资源管理方法的流程图。该方法可以由连接有可编程硬件设备40的数据处理设备30执行。一些例子中,该方法可以由资源管理装置35执行。如图1c所示,该方法110可以包括以下步骤。
步骤S111,为可编程硬件中的多个单位子处理器配置状态标识数组,所述状态标识数组包括表示每个单位子处理器是否可用的工作状态标识。
一些例子中,可以用状态标识数组中的每个bit对应一个处理单元(即单位子处理器),bit的值指示该处理单元是否空闲。
步骤S112,获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器。
业务处理请求的内容和形式与数据处理设备30处理的业务有关。例如,业务处理请求可以为视频转码请求、图片压缩/解压缩请求、基于深度学习的在线预测请求、HTPS加密请求,等。业务处理请求中包括待处理的业务数据的信息。
各实施例中,在空闲的PE中选择一个目标PE可以采用各种方式。例如,选择空闲PE中编号最大/最小的PE,按照PE的某种排列顺序依次轮询,或者根据需要设计的选择方法来进行选择,等。
一些实施例中,数据处理设备30可以监控各PE的工作状态,在监控到PE的工作状态发生更新时,对所述状态标识数组中该PE对应的工作状态标识进行更新。例如,当指令一PE对一业务请求的业务数据进行处理后,将该PE对应的工作状态修改为非空闲。当接收到该PE的处理完成指示后,将该PE对应的工作状态修改为空闲。一个例子中,收到处理完成指示后,数据处理设备30可以读取可编程硬件设备40中的中断寄存器,将中断寄存器中存储的信息指示的发起中断的一个或多个PE对应的工作状态修改为空闲。
步骤S113,将所述业务数据请求中的业务数据传输至所述可编程硬件中,指令所述目标单位子处理器对所述业务数据进行处理。
一些例子中,数据处理设备30可以将控制信息传送到可编程硬件设备40,所述控制信息包括所述业务数据的信息和所述目标单位子处理器的信息。接收到目标单位子处理器的数据请求时,将所述业务数据传输至所述可编程硬件中。总控制电路41可以从所述数据处理设备40获取控制信息,控制信息包括业务数据的信息和处理单元的信息;指令所述处理单元对所述业务数据进行处理;根据所述处理单元的数据获取请求,从所述数据处理设备获取所述业务数据并存储到内存43中。处理单元可以根据总控制电路提供的业务数据的信息向所述总控制电路发送所述数据获取请求;对所述内存43中存储的所述业务数据进行处理。
一些例子中,数据处理设备30可以将待处理的业务数据存储在数据缓冲单元36中,将该业务数据在数据缓冲单元36中的存储位置作为控制信息中的业务数据的信息传送到可编程硬件设备40。
例如,数据处理设备30可以将业务数据在数据缓冲单元36中的存储位置以及为该业务数据选择的PE的信息通过总线39写入可编程硬件设备40的控制寄存器44中。总控制电路41从控制寄存器44读取控制信息,将控制信息中的业务数据在数据处理设备30中的存储位置信息提供给PE。该PE向数据处理设备30发起数据获取请求,请求将该业务数据从数据缓冲单元36传送到板载内存43中。该请求可以是通过总线39发起的直接内存存取(DMA)操作。数据处理设备30把数据缓冲单元36中的业务数据传送到板载内存43中。PE对板载内存43中的业务数据进行处理,并将处理得到的结果数据传送到数据处理设备30。
一些例子中,数据处理设备30传送的控制信息还可以包括:处理结果存储位置信息。收到可编程硬件设备40的处理完成指示后,从该处理结果存储位置信息指示的存储位置读取PE反馈的对该业务处理处理得到的结果数据。总控制电路41可以将控制信息中的所述处理结果存储位置信息提供给PE;PE可以将处理所述业务数据得到的结果数据存储到所述处理结果存储位置信息指示的所述存储位置。
一些例子中,数据处理设备30还可以对可编程硬件设备40进行初始化配置。
一些例子中,数据处理设备30可以将板载内存43划分为多个存储空间,并为每个PE分配一个存储空间。内存分配的信息可以写入配置寄存器45。
一些例子中,数据处理设备30可以将内存43的读写通道划分为多个子通道,将各PE分为多个PE集合,为各PE集合分配一个子通道。这里,PE集合的数量与子通道的数量相同。内存读写通道的分配信息可以写入配置寄存器45。
一些例子中,数据处理设备30从空闲PE中选择处理业务数据的PE时,可以在各PE集合中空闲的PE数目最多的PE集合中选择空闲PE来处理待处理的业务数据,有利于各个内存的子通道之间的负载均衡,进一步提高可编辑硬件设备40的处理性能。
如图1d所示,该可编程硬件设备40还可以包括内存调度电路46。内存调度电路46可以,响应于处理单元的内存访问请求,根据配置寄存器45中的内存分配信息,在PE对应的读写通道中进行该PE的内存访问操作。
一些例子中,内存调度电路46可以,响应于来自至少一个处理单元的至少两个内存访问请求,所述至少一个处理单元对应所述内存的第一读写通道,根据所述至少两个内存访问请求的类型确定所述至少两个内存访问请求的内存访问操作的执行顺序,按照所述执行顺序在所述第一读写通道中依次进行所述内存访问操作。
一些例子中,内存调度电路46可以,将用于从所述内存传输数据到所述数据处理设备的内存访问请求对应的内存访问操作排在所述内存访问请求中其它类型的内存访问请求的内存访问操作之前。
一些例子中,内存调度电路46可以,将用于从所述数据处理设备传输 数据到所述内存的内存访问请求对应的内存访问操作排在所述内存访问请求中其它类型的内存访问请求的内存访问操作之后。
如图1e所示,该可编程硬件设备40还可以包括中断寄存器48和中断处理电路49。中断处理电路49可以,响应于处理单元的中断请求,当所述中断寄存器中存储的信息为空时,向所述数据处理设备30发送处理请求,并在所述中断寄存器中记录所述处理单元的信息;当所述中断寄存器中存储的信息不为空时,在所述中断寄存器中记录所述处理单元的信息;当接收到所述数据处理设备的处理完毕响应时,将所述中断寄存器存储的信息清空。相应地,数据处理设备30可以在收到中断处理电路49处理请求的时候,读取中断寄存器48中记录的所有的信息,并处理。这里的处理包括更新PE的工作状态、读取PE返回的处理结果数据。这样,可以避免每次收到PE的中断都向数据处理设备30发送处理请求,数据处理设备30每次仅处理一个PE的中断带来的处理效率低下的问题。
例如,当PE完成一个业务请求的业务数据的处理之后,会发起中断,请求向数据处理设备30传送处理结果。中断处理电路47根据中断寄存器48中的存储的信息判断是否需要向数据处理设备30发送处理请求。例如,当中断寄存器48为清空状态时,中断处理电路47发送处理请求;当终端寄存器48记录有其它PE的中断时,则不发送处理请求。中断处理电路47还会将中断寄存器48中该PE对应的信息位设置为表示发起中断的值。从发送处理请求到数据处理设备30响应,会有一个时间差,在这个期间收到的其它PE的中断可以通过一个处理请求来处理,提高了处理效率。
请参见图2a,是本申请实施例的一种可编程硬件的资源管理方法的流程示意图,所述方法可以包括以下步骤。
S101,在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区。所述状态标识数组包含每个单位子处理器分别对应的工作状态标识。
驱动层指数据处理设备30的操作系统中接近硬件的部分,例如,可以为驱动、API,等。
一些例子中,数据处理设备30(例如服务器等)中的资源管理装置35可以在服务器的驱动层为可编程硬件中的多个单位子处理器配置状态标识数组。其中,所述可编程硬件可以为FPGA,所述多个单位子处理器可以为FPGA中的多组可并行的PE。例如,所述可编程硬件中的单位子处理器的数量为N,那么所述可编程硬件可并发支持N个业务数据请求。其中,所述状态标识数组可以是被设置在驱动层上的bitmap数组,bitmap数组中的每一个bit可以表示对应的单位子处理器是否可用,即一个bit是一个单位子处理器对应的工作状态标识。而且,每个单位子处理器分别具有各自的单元编号。如N个单位子处理器的单元编号可以分别为PE 0、PE 1、PE 2、…、PE N-1。因此,bitmap数组中的第一个bit可以对应PE 0,第二个bit可以对应PE 1,以此类推,第N 个bit对应PE N-1。在实际工作过程中,所述资源管理装置可以实时监控各单位子处理器分别对应的工作状态,并在监控到至少一个单位子处理器对应的工作状态发生更新时,将所述工作状态发生更新的单位子处理器确定为待更新单位子处理器。根据更新后的工作状态,对所述状态标识数组中所述待更新单位子处理器对应的工作状态标识进行更新。例如,单位子处理器A的工作状态为空闲,当所述资源管理装置将某业务数据请求分配给单位子处理器A时,所述资源管理装置可以检测到单位子处理器A的工作状态切换到非空闲状态,进而再将所述状态标识数组中与所述单位子处理器A对应的工作状态标识更新为非空闲标识。
所述资源管理装置还进一步在驱动层配置多个数据缓冲区,所述数据缓冲区可以用于保存业务数据请求中待处理的业务数据、PE处理后返回的业务数据。由于FPGA的内核是不能触发缺页错误,且需要防止调用进程访问非法内存,所以所述资源管理装置可以在驱动层就对所述数据缓冲区中待处理的业务数据进行错误检测,以避免后续在PE中发生缺页错误。其中,所有数据缓冲区都可以存放在一个数组中,并以ring的方式进行分配,即可以轮询访问各数据缓冲区,每个数据缓冲区都可以包含一个用于标识工作状态的标识(当数据缓冲区中存储有数据时,对应标识为非空闲状态标识,说明数据缓冲区正被占用;当数据缓冲区中未存储有数据时,对应标识为空闲状态标识,说明数据缓冲区未被占用)。
S102,获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
一些例子中,所述资源管理装置可以获取服务器所接收到的业务数据请求,所述业务数据请求可以包括深度学习在线预测的业务请求、视频转码业务请求、图片转码业务请求等等。所述资源管理装置进一步根据所述业务数据请求在驱动层中的状态标识数组中查找工作状态标识为空闲标识的至少一个单位子处理器,并在所述工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器。其中,选择所述目标单位子处理器的具体过程可以为:在所述工作状态标识为空闲标识的至少一个单位子处理器中选择具有最大或最小的单元编号的单位子处理器,以作为目标单位子处理器;或者,选择所述目标单位子处理器的具体过程还可以为:通过轮询的方式选择出目标单位子处理器,如当前选择PE 2对应的单位子处理器为目标单位子处理器,那么就从PE3开始向后轮询访问,并将轮询访问到的第一个工作状态标识为空闲标识的单位子处理器确定为目标单位子处理器。
所述资源管理装置还进一步根据所述业务数据请求在驱动层中的多个数据缓冲区中选择空闲的目标数据缓冲区。所述资源管理装置还可以使用一个变量记录下次扫描数据缓冲区的起始位置,由于每个数据缓冲区都可以有各自对应的缓冲区编号,所以当该变量等于某缓冲区编号时,该缓冲区编号对应的数据缓冲区即为下次扫描数据缓冲区的起始位置,且该缓冲区编号对应的数据 缓冲区同时具备起始位置标识。因此,查找空闲的目标数据缓冲区的具体过程可以为:在所述多个数据缓冲区中查找具有起始位置标识的数据缓冲区;从所述具有起始位置标识的数据缓冲区开始按照缓冲区编号顺序逐一检测数据缓冲区的工作状态,直到检测出工作状态为空闲状态(即具备空闲状态标识)的数据缓冲区,则停止检测数据缓冲区的工作状态,并将所述工作状态为空闲状态的数据缓冲区确定为目标数据缓冲区,并将所述起始位置标识更新到所述目标数据缓冲区,并同时重新记录变量为所述目标数据缓冲区对应的缓冲区编号。例如,有N个数据缓冲区,其缓冲区编号分别为buffer 0、buffer 1、buffer 2、…、buffer N-1,当变量x=buffer 5时,buffer 5对应的数据缓冲区具备起始位置标识,因此,在开始扫描空闲的数据缓冲区时,从buffer 5对应的数据缓冲区开始扫描,若逐一扫描到buffer 11对应的数据缓冲区的工作状态为空闲状态,则将buffer 11对应的数据缓冲区筛选出来以作为目标数据缓冲区,且将变量x更新为buffer 11,并将所述起始位置标识更新到buffer 11对应的数据缓冲区上,以便于在下次选择目标数据缓冲区时可以从buffer 11对应的数据缓冲区开始向后查找。
可选的,所述资源管理装置还可以通过使用linux(一种操作系统)内核提供的原子(atmoic)操作,来调度业务数据请求,使得业务数据请求可以被逐一响应。而且由于可能同时发起多个业务数据请求,所以必须使用内核bit操作默认的atmoic版本,以保证资源管理调度时的高一致性。
S103,将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据传输至所述目标单位子处理器,以便于所述目标单位子处理器对所述业务数据进行处理;
一些例子中,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源申请,可以节约可编程硬件的硬件资源。通过将所述目标单位子处理器和所述目标数据缓冲区进行绑定,可以将所述业务数据请求中的业务数据缓存至所述目标数据缓冲区,再将所述目标数据缓冲区中的所述业务数据通过PCIe(Peripheral Component Interconnect Express,一种总线和接口标准)传输至所述目标单位子处理器。同时,FPGA支持所有配置信息对于N各PE共享,且FPGA中的寄存器配置空间可以提供多个配置信息空间(如64个),多个配置信息空间的分配和释放均由上层应用控制,且不同的配置信息空间存储不同的业务处理要求参数。因此,当所述业务数据传输到所述目标单位子处理器时,服务器中的总控制器可以指示所述目标单位子处理器所需要使用的配置信息空间,进而所述目标单位子处理器可以根据所述总控制器所选择的配置信息空间中的业务处理要求参数对所述业务数据进行处理。
所述目标单位子处理器在处理完所述业务数据后,所述资源管理装置可以通过所述目标单位子处理器将处理后的业务数据通过PCIe传输到所述目标数据缓冲区,再将所述目标数据缓冲区中的所述处理后的业务数据传输至所述服务器的上层业务服务中。由于所述目标单位子处理器在处理完所述业务数据 后,直接将处理后的业务数据传输至所述目标数据缓冲区,所以FPGA无需对PE资源的释放进行调度,只需所述资源管理装置对驱动层中的数据缓冲区的资源的释放进行调度即可,即完成对数据缓冲区的资源释放也就同样完成了对PE资源的释放。所述资源管理装置调度数据缓冲区的资源的释放过程可以为:按照接收到各业务数据请求的先后顺序对包含处理后的业务数据的数据缓冲区进行先后释放(其释放过程即为将处理后的业务数据发送至服务器的上层业务服务中),或者,按照各业务数据请求的重要性对包含处理后的业务数据的数据缓冲区进行先后释放。因此,本申请实施例中对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
进一步的,请一并参见图2b,是本申请实施例提供的一种FPGA与资源管理装置之间的系统架构示意图,在图2b中,资源管理装置具体包括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中查找到Buffer 1为可用的数据缓冲区,进而所述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再进一步将Buffer 1中的处理后的业务数据发送回上层业务服务。通过设置所述PE资源调度模块100,可以使得PE资源的申请和释放均在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
本申请实施例通过在驱动层为可编程硬件中的多个单位子处理器配置 状态标识数组以及多个数据缓冲区,并获取业务数据请求,并根据业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区,再将业务数据请求中的业务数据缓存至目标数据缓冲区,再将目标数据缓冲区中的业务数据传输至目标单位子处理器,以便于目标单位子处理器对业务数据进行处理。由此可见,通过在驱动层选择出目标单位子处理器和目标数据缓冲区,可以实现在驱动层中进行PE资源调度,即实现了对PE资源的申请和释放均可以在驱动层中完成,不仅可以节约FPGA的硬件资源,也可以使得驱动层中的PE资源的申请和释放对软件用户可见,而且在驱动层上实现资源调度的成本要低于在FPGA层面上进行资源调度的成本。
请参见图2c,是本申请实施例提供的一种基于可编程硬件的资源管理方法的流程示意图,所述方法可以包括:
S201,在驱动层为可编程硬件中的多个单位子处理器配置状态标识数组以及多个数据缓冲区;
S202,获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器,并根据所述业务数据请求在预设的多个数据缓冲区中选择空闲的目标数据缓冲区;
其中,S201和S202步骤的具体实现方式可以参见上述图2a对应实施例中的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,所以可以进一步提高内存调度的效率。
再请一并参见图2d,是本申请实施例提供的另一种FPGA与资源管理装置之间的系统架构示意图,图2d所示的系统架构可以包括上述图2b对应实施例中的PE资源调度模块100、状态标识数组200、数据缓冲区总集合300以及PE总集合400。在图2d中,所述资源管理装置不仅可以包括PE资源调度模块100,所述资源管理装置还可以包括内存调度模块600,所以图2d所示的系统架构还可以包括所述内存调度模块600和单位内存块集合700。其中,所述单位内存块集合700包括4个单位内存块(包括单位内存块DDR 0至单位内存块DDR 3,这4个单位内存块是通过对源内存进行均等划分所得到的),在图2d所示的系统架构中,将所述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均可以基于所述请求优先级规则和所述最高优先级权限对所对应的单位子处理器集合内所并发的多个内存读写请求进行调度(对所述请求优先级规则和所述最高优先级权限的用法可以具体参见上述图2c对应实施例中的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的具体功能实现方式可以参见上述图2a对应实施例中的S101-S103,这里不再进行赘述。其中,所述配置模块11、所述第一选择模块12、所述第二选择模块13、所述第一传输模块14、所述监控模块16、所述更新模块17以及所述第二控制模块20可以被设置在驱动层中;所述第二传输模块15和所述第一控制模块19可以被设置在FPGA中。
所述划分模块18,用于为所述可编程硬件挂载源内存,并将所述源内存划分为多个单位内存块;每个单位内存块的内存容量相等;
所述划分模块18,还用于将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合;每个单位子处理器集合中的单位子处理器的数量相同,且所述单位子处理器集合的数量与所述单位内存块的数量相同;
所述划分模块18,还用于将各单位子处理器集合分别划分到各单位内存块;一个单位子处理器集合对应一个单位内存块;
其中,所述划分模块18的具体功能实现方式可以参见上图2c对应实施例中对所述单位子处理器集合和所述单位内存块的描述,这里不再进行赘述。所述划分模块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的具体功能实现方式可以参见上述图2a对应实施例中的S102,这里不再进行赘述。
进一步的,再请一并参见图6,是本申请实施例提供的一种第一控制模块19的结构示意图,所述第一控制模块19可以包括:第一控制单元191、第二控制单元192、第三控制单元193;
所述第一控制单元191,用于控制所述目标单位子处理器发送第二内存读写请求到与所述目标单位子处理器对应的目标单位内存块;
所述第一控制单元191,还用于当所述目标单位内存块根据所述请求优先级规则响应所述第二内存读写请求时,控制所述目标单位子处理器对所述目标单位内存块中的所述业务数据进行运算处理;
所述第二控制单元192,用于当所述目标单位子处理器完成对所述业务数据的运算处理时,控制所述目标单位子处理器发送第三内存读写请求到所述目标单位内存块;
所述第二控制单元192,还用于当所述目标单位内存块根据所述请求优 先级规则响应所述第三内存读写请求时,控制将所述目标单位内存块中的运算处理后的业务数据传输至所述目标数据缓冲区;
所述第三控制单元193,用于当所述目标单位子处理器获得最高优先级权限时,控制所述目标单位内存块最先响应所述目标单位子处理器发起的目标内存读写请求;所述目标内存读写请求包括所述第一内存读写请求、所述第二内存读写请求、所述第二内存读写请求中的任意一种;
所述第三控制单元193,还用于在所述目标单位内存块响应所述目标内存读写请求后,基于预设的轮询方式将所述最高优先级权限转移至与所述目标单位子处理器对应的下一个单位子处理器,并控制所述目标单位内存块根据所述请求优先级规则对不具备所述最高优先级权限的所述目标单位子处理器所发起的新的目标内存读写请求进行响应。
其中,所述请求优先级规则包括:所述第一内存读写请求对应的第一请求类型的处理优先级小于所述第二内存读写请求对应的第二请求类型的处理优先级,且所述第二请求类型的处理优先级小于所述第三内存读写请求对应的第三请求类型的处理优先级。
其中,所述第一控制单元191、所述第二控制单元192、所述第三控制单元193的具体功能实现方式可以参见上述图2c对应实施例中的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-volatile memory),例如至少一个磁盘存储器。存储器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 Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (20)
- 一种可编程硬件的资源管理方法,应用于连接有可编程硬件的数据处理设备,包括:为可编程硬件中的多个单位子处理器配置状态标识数组,所述状态标识数组包括表示每个单位子处理器是否可用的工作状态标识;获取业务数据请求,并根据所述业务数据请求在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器;将所述业务数据请求中的业务数据传输至所述可编程硬件中,指令所述目标单位子处理器对所述业务数据进行处理。
- 如权利要求1所述的方法,其中,将所述业务数据请求中的业务数据传输至所述可编程硬件中,指令所述目标单位子处理器对所述业务数据进行处理包括:将控制信息传送到所述可编程硬件,所述控制信息包括所述业务数据的信息和所述目标单位子处理器的信息;接收到所述目标单位子处理器的数据请求时,将所述业务数据传输至所述可编程硬件中。
- 如权利要求2所述的方法,其中,将控制信息传送到所述可编程硬件包括:将所述业务数据存储在所述数据处理设备中的数据缓冲区中;将所述业务数据在所述数据缓冲区中的存储位置作为所述控制信息中的所述业务数据的信息传送到所述可编程硬件。
- 如权利要求2所述的方法,所述控制信息进一步包括:处理结果存储位置信息;所述方法进一步包括:从所述处理结果存储位置信息指示的存储位置读取所述目标单位子处理器存放的处理所述业务数据后得到的结果数据。
- 如权利要求1所述的方法,进一步包括:监控各单位子处理器分别对应的工作状态;在监控到至少一个单位子处理器对应的工作状态发生更新时,对所述状态标识数组中所述至少一个单位子处理器对应的工作状态标识进行更新。
- 如权利要求5所述的方法,其中,在监控到至少一个单位子处理器对应的工作状态发生更新时,对所述状态标识数组中所述至少一个单位子处理器对应的工作状态标识进行更新包括:指令所述目标单位子处理器对所述业务数据进行处理后,将所述目标单位子处理器对应的工作状态标识修改为非空闲标识。
- 如权利要求5所述的方法,其中,在监控到至少一个单位子处理器对应 的工作状态发生更新时,对所述状态标识数组中所述至少一个单位子处理器对应的工作状态标识进行更新包括:接收到单位子处理器的处理完成指示,将所述单位子处理器对应的工作状态标识修改为空闲标识。
- 如权利要求7所述的方法,其中,接收到所述目标单位子处理器的处理完成指示包括:读取所述可编程硬件中的中断寄存器,将所述中断寄存器中存储的信息指示的发起中断的一个或多个单位子处理器对应的工作状态标识修改为空闲标识。
- 如权利要求1所述的方法,进一步包括:将所述可编程硬件挂载的内存的通道划分为多个子通道;将所述可编程硬件中的多个单位子处理器划分为多个单位子处理器集合,所述单位子处理器集合的数量与所述子通道的数量相同;为各单位子处理器集合分配一个子通道。
- 如权利要求9所述的方法,其中,在工作状态标识为空闲标识的至少一个单位子处理器中选择目标单位子处理器包括:在所述多个单位子处理器集合中空闲的单位子处理器的数目最多的单位子处理器集合中选择所述目标单位子处理器。
- 一种可编程硬件设备,可以连接到数据处理设备,包括:可编程逻辑器件和内存;所述可编程逻辑器件包括:总控制电路和多个处理单元;所述总控制电路用于,从所述数据处理设备获取控制信息,所述控制信息包括业务数据的信息和所述多个处理单元中一处理单元的信息;指令所述处理单元对所述业务数据进行处理;根据所述处理单元的数据获取请求,从所述数据处理设备获取所述业务数据并存储到所述内存中;所述处理单元用于,根据总控制电路提供的业务数据的信息向所述总控制电路发送所述数据获取请求;对所述内存中存储的所述业务数据进行处理。
- 如权利要求11所述的可编程硬件设备,进一步包括:控制寄存器,用于接收所述数据处理设备写入的所述控制信息;其中,所述总控制电路用于,从所述控制寄存器中读取所述控制信息。
- 如权利要求11所述的可编程硬件设备,其中,所述业务数据的信息包括所述业务数据在所述数据处理设备中的存储位置信息;所述总控制电路用于,将所述控制信息中的所述业务数据在所述数据处理设备中的存储位置信息提供给所述处理单元;所述处理单元用于,根据所述存储位置信息向所述总控制电路发送所述数据获取请求。
- 如权利要求11所述的可编程硬件设备,其中,所述控制信息进一步包 括处理结果存储位置信息,所述处理结果存储位置信息指示所述数据处理设备中的存储位置;所述总控制电路用于,将所述控制信息中的所述处理结果存储位置信息提供给所述处理单元;所述处理单元用于,将处理所述业务数据得到的结果数据存储到所述处理结果存储位置信息指示的所述存储位置。
- 如权利要求11所述的可编程硬件设备,进一步包括:配置寄存器和内存调度电路;其中,所述配置寄存器用于,存储所述数据处理设备写入的内存分配信息,所述内存分配信息包括所述数据处理设备为各处理单元分配的所述内存的读写通道;所述内存调度电路用于,响应于处理单元的内存访问请求,在所述内存分配信息指定的所述处理单元对应的读写通道中进行所述处理单元的内存访问操作。
- 如权利要求15所述的可编程硬件设备,其中,所述内存调度电路用于,响应于来自至少一个处理单元的至少两个内存访问请求,所述至少一个处理单元对应所述内存的第一读写通道,根据所述至少两个内存访问请求的类型确定所述至少两个内存访问请求的内存访问操作的执行顺序,按照所述执行顺序在所述第一读写通道中依次进行所述内存访问操作。
- 如权利要求16所述的可编程硬件设备,其中,所述内存调度电路用于,将用于从所述内存传输数据到所述数据处理设备的内存访问请求对应的内存访问操作排在所述内存访问请求中其它类型的内存访问请求的内存访问操作之前。
- 如权利要求16所述的可编程硬件设备,其中,所述内存调度电路用于,将用于从所述数据处理设备传输数据到所述内存的内存访问请求对应的内存访问操作排在所述内存访问请求中其它类型的内存访问请求的内存访问操作之后。
- 如权利要求11所述的可编程硬件设备,进一步包括:中断寄存器和中断处理电路;其中,所述中断处理电路用于,响应于处理单元的中断请求,当所述中断寄存器中存储的信息为空时,向所述数据处理设备发送处理请求,并在所述中断寄存器中记录所述处理单元的信息;当所述中断寄存器中存储的信息不为空时,在所述中断寄存器中记录所述处理单元的信息;当接收到所述数据处理设备的处理完毕响应时,将所述中断寄存器存储的信息清空。
- 一种计算机可读存储介质,存储有计算机可读指令,所述指令可以使至少一个处理器执行如权利要求1-10中任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121416.2A CN108536526B (zh) | 2017-03-02 | 2017-03-02 | 一种基于可编程硬件的资源管理方法以及装置 |
CN201710121416.2 | 2017-03-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018157836A1 true WO2018157836A1 (zh) | 2018-09-07 |
Family
ID=63369777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/077735 WO2018157836A1 (zh) | 2017-03-02 | 2018-03-01 | 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108536526B (zh) |
WO (1) | WO2018157836A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196842A (zh) * | 2019-04-26 | 2019-09-03 | 视联动力信息技术股份有限公司 | 文件存储方法、管理方法、装置、服务器及存储介质 |
CN111382857A (zh) * | 2018-12-29 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 任务处理装置、神经网络处理器芯片、组合装置以及电子设备 |
CN113079152A (zh) * | 2021-03-26 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置及介质 |
CN113704165A (zh) * | 2021-07-15 | 2021-11-26 | 郑州云海信息技术有限公司 | 一种超融合服务器、数据处理方法及装置 |
CN116700633A (zh) * | 2023-08-08 | 2023-09-05 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104134B (zh) * | 2018-10-26 | 2021-09-07 | 华为技术有限公司 | 可编程器件的管理单元的更新方法、装置和存储介质 |
CN111427696B (zh) * | 2020-04-07 | 2023-03-14 | 上海飞旗网络技术股份有限公司 | 业务资源调度方法及装置 |
CN111506426B (zh) * | 2020-04-17 | 2021-05-04 | 翱捷科技(深圳)有限公司 | 内存管理方法、装置及电子设备 |
CN111813338A (zh) * | 2020-06-30 | 2020-10-23 | 飞诺门阵(北京)科技有限公司 | 一种网络存储设备 |
CN111813759A (zh) * | 2020-07-13 | 2020-10-23 | 北京九维数安科技有限公司 | 小包数据并行处理装置和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN103020008A (zh) * | 2012-12-26 | 2013-04-03 | 无锡江南计算技术研究所 | 计算能力增强的可重构微服务器 |
CN103076849A (zh) * | 2012-12-26 | 2013-05-01 | 无锡江南计算技术研究所 | 可重构微服务器系统 |
CN103238305A (zh) * | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236543B (zh) * | 2010-05-07 | 2015-07-22 | 百度在线网络技术(北京)有限公司 | 数据解压装置及方法 |
WO2016070431A1 (zh) * | 2014-11-07 | 2016-05-12 | 华为技术有限公司 | 内存访问方法、装置和计算机设备 |
CN104375899B (zh) * | 2014-11-21 | 2016-03-30 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与系统 |
US9891935B2 (en) * | 2015-08-13 | 2018-02-13 | Altera Corporation | Application-based dynamic heterogeneous many-core systems and methods |
-
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103238305A (zh) * | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器系统 |
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN103020008A (zh) * | 2012-12-26 | 2013-04-03 | 无锡江南计算技术研究所 | 计算能力增强的可重构微服务器 |
CN103076849A (zh) * | 2012-12-26 | 2013-05-01 | 无锡江南计算技术研究所 | 可重构微服务器系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382857A (zh) * | 2018-12-29 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 任务处理装置、神经网络处理器芯片、组合装置以及电子设备 |
CN111382857B (zh) * | 2018-12-29 | 2023-07-18 | 上海寒武纪信息科技有限公司 | 任务处理装置、神经网络处理器芯片、组合装置以及电子设备 |
CN110196842A (zh) * | 2019-04-26 | 2019-09-03 | 视联动力信息技术股份有限公司 | 文件存储方法、管理方法、装置、服务器及存储介质 |
CN113079152A (zh) * | 2021-03-26 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置及介质 |
CN113079152B (zh) * | 2021-03-26 | 2023-01-24 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置及介质 |
CN113704165A (zh) * | 2021-07-15 | 2021-11-26 | 郑州云海信息技术有限公司 | 一种超融合服务器、数据处理方法及装置 |
CN113704165B (zh) * | 2021-07-15 | 2023-09-12 | 郑州云海信息技术有限公司 | 一种超融合服务器、数据处理方法及装置 |
CN116700633A (zh) * | 2023-08-08 | 2023-09-05 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
CN116700633B (zh) * | 2023-08-08 | 2023-11-03 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108536526A (zh) | 2018-09-14 |
CN108536526B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018157836A1 (zh) | 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质 | |
CN112099941B (zh) | 实现硬件加速处理的方法、设备和系统 | |
KR101798369B1 (ko) | 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법 | |
US7689694B2 (en) | Process management apparatus, computer systems, distributed processing method, and computer program for avoiding overhead in a process management device | |
WO2015074393A1 (zh) | 一种基于异构多核体系的cpu调度方法、装置和系统 | |
US10459773B2 (en) | PLD management method and PLD management system | |
US20080140896A1 (en) | Processor and interrupt controlling method | |
US8195737B2 (en) | Process management apparatus, computer systems, distributed processing method, and computer program | |
US10067691B1 (en) | System and method for dynamic control of shared memory management resources | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
KR100630071B1 (ko) | 다중 프로세서 환경에서의 dma를 이용한 고속 데이터전송 방법 및 그 장치 | |
US20110246667A1 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
US8756356B2 (en) | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
JP2007249635A (ja) | データ転送装置及びデータ転送方法 | |
US20170178275A1 (en) | Method and system for using solid state device as eviction pad for graphics processing unit | |
US10635157B2 (en) | Information processing apparatus, method and non-transitory computer-readable storage medium | |
KR20060112349A (ko) | 에스오씨 버스 시스템 및 버스 데이터 처리방법 | |
JP6364827B2 (ja) | 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム | |
US20230042247A1 (en) | Shared unit instruction execution | |
US20220019459A1 (en) | Controlled early response in master-slave systems | |
US11606316B2 (en) | System and method for modem stabilization when waiting for AP-driven link recovery | |
KR102268796B1 (ko) | 하이퍼바이저 기반 plc 서비스 처리 장치 | |
JP2017156907A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JPS58182737A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18761782 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18761782 Country of ref document: EP Kind code of ref document: A1 |