《用于对现场可编程门阵列资源进行分配的方法及系统.pdf》由会员分享,可在线阅读,更多相关《用于对现场可编程门阵列资源进行分配的方法及系统.pdf(15页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN103577266A43申请公布日20140212CN103577266A21申请号201210270573722申请日20120731G06F9/5020060171申请人国际商业机器公司地址美国纽约阿芒克72发明人章宇陈飞王鲲常晓涛邹嘉74专利代理机构北京市柳沈律师事务所11105代理人王珊珊54发明名称用于对现场可编程门阵列资源进行分配的方法及系统57摘要本发明涉及对资源池中FPGA资源进行分配的技术方案。在一个实施例中,该技术方案包括接收客户端对所述资源池中FPGA资源的资源请求;基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所。
2、述资源池中FPGA的使用状态信息;基于所述资源分配操作的结果更新所述资源池状态信息记录。采用申请的技术方案,可以实现对FPGA资源分配。51INTCL权利要求书2页说明书9页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书9页附图3页10申请公布号CN103577266ACN103577266A1/2页21一种对资源池中FPGA资源进行分配的方法,所述方法包括接收客户端对所述资源池中FPGA资源的资源请求;基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所述资源池中FPGA的使用状态信息;基于所述资源分配操作的结果更新所述资源池。
3、状态信息记录。2根据权利要求1所述的方法,其中,所述资源请求中包括所请求的可编程资源种类和数量;在所述资源分配操作中,遍历所述资源池状态信息记录,根据所述FPGA的使用状态信息确定出满足所述所请求的可编程资源种类和数量的FPGA资源并分配给所述客户端。3根据权利要求1所述的方法,其中,所述资源池状态信息记录还包括所述FPGA的功能单元信息记录,所述功能单元信息记录至少包括该FPGA中已创建的功能单元信息。4根据权利要求3所述的方法,其中,所述资源请求包括所请求的功能单元类型及带宽;在所述资源分配操作中,基于所述资源池状态信息记录以及所述功能单元信息记录,确定是否找到满足所述所请求的功能单元类型。
4、及带宽的功能单元;响应于找到满足所述所请求的功能单元类型及带宽的功能单元,将所找到的功能单元分配给所述客户端。5根据权利要求4所述的方法,还包括,响应于未找到满足所述所请求的功能单元类型及带宽的功能单元,创建新的功能单元并分配给所述客户端。6根据权利要求3所述的方法,其中,所述功能单元信息记录还包括该功能单元的应用信息记录,所述应用信息记录至少包括请求该功能单元的请求者识别码以及该请求者占用该功能单元的带宽,其中,所述请求者识别码是响应于所述请求者打开一个所分配的功能单元时所生成的识别信息。7根据权利要求3所述的方法,进一步包括维护一先进先出的任务队列,所述任务队列中任务的描述信息至少包括一按。
5、照预定周期进行复位的数据信用值,根据该任务所申请的带宽确定所述数据信用值;在执行所述任务队列中位于头部的任务时,包括响应于所述数据信用值大于零,执行所述位于头部的任务,并根据已经处理的数据量对所述数据信用数值进行调整;响应于所述数据信用数值等于零,则不执行所述位于头部的任务。8一种对资源池中FPGA资源进行分配的系统,所述系统包括接收装置,配置为接收客户端对所述资源池中FPGA资源的资源请求;资源分配操作装置,配置为基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所述资源池中FPGA的使用状态信息;更新装置,配置为基于所述资源分配操作的结果更新所述资源池状。
6、态信息记录。9根据权利要求8所述的系统,其中,所述资源请求中包括所请求的可编程资源种类和数量;所述资源分配操作装置,还配置为遍历所述资源池状态信息记录,根据所述FPGA的使权利要求书CN103577266A2/2页3用状态信息确定出满足所述所请求的可编程资源种类和数量的FPGA资源并分配给所述客户端。10根据权利要求8所述的系统,其中,所述资源池状态信息记录还包括所述FPGA的功能单元信息记录,所述功能单元信息记录至少包括该FPGA中已创建的功能单元信息。11根据权利要求10所述的系统,其中,所述资源请求包括所请求的功能单元类型及带宽;所述资源分配操作装置,还配置为基于所述资源池状态信息记录以。
7、及所述功能单元信息记录,确定是否找到满足所述所请求的功能单元类型及带宽的功能单元;所述资源分配操作装置,还配置为响应于找到满足所述所请求的功能单元类型及带宽的功能单元,将所找到的功能单元分配给所述客户端。12根据权利要求11所述的系统,其中,所述资源分配操作装置,还配置为响应于未找到满足所述所请求的功能单元类型及带宽的功能单元,创建新的功能单元并分配给所述客户端。13根据权利要求11所述的系统,其中,所述功能单元信息记录还包括该功能单元的应用信息记录,所述应用信息记录至少包括请求该功能单元的请求者识别码以及该请求者占用该功能单元的带宽,其中,所述请求者识别码是响应于所述请求者打开一个所分配的功。
8、能单元时所生成的识别信息。14根据权利要求11所述的系统,进一步包括配置为维护一先进先出的任务队列的装置,所述任务队列中任务的描述信息至少包括一按照预定周期进行复位的数据信用值,根据该任务所申请的带宽确定所述数据信用值;配置为在执行所述任务队列中位于头部的任务时进行如下操作的装置,用于响应于所述数据信用值大于零,执行所述位于头部的任务,并根据已经处理的数据量对所述数据信用数值进行调整;响应于所述数据信用数值等于零,则不执行所述位于头部的任务。权利要求书CN103577266A1/9页4用于对现场可编程门阵列资源进行分配的方法及系统技术领域0001本发明涉及资源的虚拟化,更具体地,涉及一种对FP。
9、GA资源进行分配的方法及系统。背景技术0002现在,越来越多的硬件或软件资源可以基于虚拟化的方式供用户使用,随着云计算的广泛普及,IAAS(INFRASTRUCTUREASASERVICE),即基础设施即服务,正在成为一种流行的资源使用方式。但传统的资源虚拟化主要是面向处理器、内存、存储装置以及网络等基础资源,并没有涉及对现场可编程门阵列(FIELDPROGRAMMABLEGATEARRAY,简称FPGA)的虚拟化。0003FPGA作为一种半定制电路,能够反复使用,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。同一片FPGA通过不同的编程数据,可以产生不同的电路功能,因此,。
10、FPGA的使用非常灵活。目前,FPGA的品种很多,有XILINX公司的VIRTEX系列,还有TI公司的TPC系列、ALTERA公司的FIEX系列等。其中,赛灵思公司XILINX的VIRTEX7系列现场可编程门阵列FPGA,在一个FPGA芯片上能够实现120个AES加解密加速单元,或者可以实现260个ARM处理器核心,如果能够通过虚拟化的方式供用户使用,将极大的提升FPGA资源的利用效率。0004综上,可以得知FPGA作为一种特殊的资源,尚未成为一种虚拟化的资源,因此,现有技术仍然存在着改善的空间。发明内容0005根据本发明的一个方面,提供了一种对资源池中FPGA资源进行分配的方法,包括接收客户。
11、端对所述资源池中FPGA资源的资源请求;基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所述资源池中FPGA的使用状态信息;基于所述资源分配操作的结果更新所述资源池状态信息记录。0006根据本发明的另一个方面,提供了一种对资源池中FPGA资源进行分配的系统,包括接收装置,配置为接收客户端对所述资源池中FPGA资源的资源请求;资源分配操作装置,配置为基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所述资源池中FPGA的使用状态信息;更新装置,配置为基于所述资源分配操作的结果更新所述资源池状态信息记录。0007采用本申请的。
12、技术方案,可以根据客户端的资源请求对资源池中的FPGA资源进行分配,从而提升FPGA资源的利用效率。附图说明0008通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号说明书CN103577266A2/9页5通常代表相同部件。0009图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。0010图2示出了用于对FPGA资源进行分配的方法的流程图。0011图3示出了一个三级状态信息记录表的示意图。0012图4是实现本发明的实施例的进行带宽控制的一个例子的示意图。0013图5示出了一个更为。
13、具体的任务队列的示意图。0014图6是根据本发明的一个实施例的用于对FPGA资源进行分配的系统的示意性方框图。具体实施方式0015下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。0016图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线。
14、104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目。
15、的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。0017所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。0018可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可。
16、读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CDROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。0019计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其。
17、中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但说明书CN103577266A3/9页6不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。0020计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、射频RF等等,或者上述的任意合适的组合。0021可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如JAV。
18、A、SMALLTALK、C,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。0022下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图。
19、中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。0023也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(INSTRUCTIONMEANS)的制造品(MANUFACTURE)。0024也可以把计算机程序指令加载到计算机、其。
20、它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。0025下面参照图2说明根据本发明的实施例的用于对资源池中FPGA资源进行分配的方法0026在步骤210中,接收客户端对所述资源池中FPGA资源的资源请求。客户端的形式不限,既可是普通物理客户端,也可是虚拟机客户端。0027可以设置控制模块(CONTROLMODULE)用于实现该接收步骤,例如,在创建虚拟机时发出FPGA资源请求,位于虚拟机监视器(VMM)中的控制。
21、模块可以接收该请求。当然,该控制模块是一个独立的控制模块,并不必然位于虚拟机监视器中,所属领域技术人员能够以其它方式实现该控制模块。0028通常,资源请求具有多种形式。在一个实施例中,接收到的是功能单元带宽形式的资源请求,在该种资源请求中至少包括所请求的功能单元类型、以及所请求的带宽。在另一个实施例中,所接收到的是可编程资源形式的资源请求,该种类型资源请求中至少包括所请求资源的种类和数量。在本申请中,“功能单元”特指是可通过对FPGA进行配置而具有一说明书CN103577266A4/9页7定功能的功能单元实例,例如AES加密功能单元。“功能单元”明显区分于FPGA中所固有的不同种类的可编程资源。
22、,例如LUT,DSPSLICE等等。其中,LUT是查找表LOOKUPTABLE的简称,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表即结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。对于其它可编程资源的种类而言,对于所属领域技术人员而言,是已有的知识,在此不做赘述。0029针对不同的资源请求方式,控制模块可进行不同的处理,接下来,将在对步骤2。
23、20的说明中详细阐述如何基于资源池状态信息记录进行资源分配操作以满足不同类型的资源请求。0030在步骤220中,基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中包括所述资源池中FPGA的使用状态信息。0031在一个实施例中,是在控制模块中,建立并维护该资源池状态信息记录,以用于记录和判断资源池中全部FPGA的资源当前使用状态,从而对来自各个客户端(包括客户端中的应用)的资源请求进行响应。0032FPGA资源使用状态信息记录可以用任何现有的数据结构实现,例如采取数据表的方式进行存储。根据具体的需要,FPGA资源池的资源池状态信息记录可具有多个层级。在一个实施例中。
24、是由三级表组成,其逻辑关系如下FPGA的资源池状态信息记录是FPGA芯片表,这一级表描述了在资源池中一共有多少片FPGA芯片,以及每一片FPGA的总体资源使用状况。可选的,在第一级状态记录信息中的每一项记录还可包含一个第二级表,这一级表描述了在一个FPGA芯片中,已经建立了多少个功能单元,以及功能单元的对应状态信息。可选的,在第二级表的每一项记录中还可包括一个第三级表,即,该功能单元的应用信息记录,所述应用信息记录至少包括请求该功能单元的请求者识别码以及该请求者占用该功能单元的带宽,其中,所述请求者识别码是响应于所述请求者打开一个所分配的功能单元时所生成的识别信息。这一级表描述了一个功能单元的。
25、各个请求者(例如,客户端中的应用)对该功能单元的使用状态信息。其中的信息至少应当包括请求者识别码(即SID)和QOS信息(例如,该用户占用的功能单元处理带宽信息)。在图3A及说明中将举出一个更为具体的三级结构的状态表,然而,需要说明的是,虽然此处以三级表进行示例,但并不是所有实施例中都需要三级的状态表,后面会有相应的说明。0033接下来描述步骤220如何基于资源池状态信息记录进行资源分配操作0034在一个实施例中,当上述资源请求是可编程资源形式的资源请求时,在所述资源分配操作中,遍历所述资源池状态信息记录,根据所述FPGA的使用状态信息确定出满足所述所请求的可编程资源种类和数量的FPGA资源并。
26、分配给所述客户端。0035具体而言,在该实施例中,收到来自某个客户端的如表1所示的一组资源请求。0036表10037LUTELEMENTS,50M说明书CN103577266A5/9页8BLOCKMEMORY,16M0038该资源请求至少包括了该客户端需要的FPGA可编程逻辑资源的种类和数量。其中的每一行代表一个具体的资源请求,第一个资源请求表示请求50M的LUT,第二个资源请求表示请求16M的块内存。可编程逻辑资源的种类包括但不限于查找表(LUT)、块内存(BLOCKMEMORY)、DSPSLICES、时钟线等。因此,接到上述资源请求后,将首先遍历FPGA芯片表,看看是否有哪片FPGA芯片上。
27、有足够的空闲资源满足该需求,如果有,则直接进行分配。如果没有,表示无法处理此情况,可以由系统管理员增加新的FPGA芯片以满足该资源请求,在本申请所公开信息的基础上,所属领域技术人员还容易可想到其它处理方式,例如拒绝请求等等,在此不做赘述。0039在另一个实施例中,当上述资源请求是功能单元带宽形式的资源请求时,且所述资源池状态信息记录还包括FPGA的功能单元信息记录,所述功能单元信息记录至少包括该FPGA中已创建的功能单元信息,功能单元信息例如包括功能单元的识别码、功能单元的类型、性能以及资源分配情况等等。进而,在所述资源分配操作中,遍历所述资源池状态信息记录,基于所述功能单元信息记录,确定是否。
28、找到满足所述所请求的功能单元类型及带宽的已创建功能单元。进而,响应于找到,将所找到的功能单元分配给所述客户端;响应于未找到,创建新的功能单元并分配给所述客户端。作为替代的实施方式,响应于未找到,还可以拒绝客户端的资源请求。0040具体而言,用一个更为具体的例子来说明该实施方式,参看表2,是接收到的来自某客户端的一组资源请求。0041表20042AES,128MBPS,BESTEFFORTRC4,128MBPS,GUARANTEEDDECOMP,1GBPS,GUARANTEEDXML,512MBPS,BESTEFORT0043该资源请求至少包括带宽信息、功能单元信息,可选的,还可包括申请类型信息。
29、,例如尽力服务(BESTEFFORT),确保服务(GUARANTEED)。表2中的每一行代表一个具体的资源请求,如第一条代表了申请带宽为128MBPS的AES算法的加密资源。0044在收到这个请求后,遍历FPGA芯片表(资源池状态信息记录表),对找到的每一个FPGA芯片,则遍历其功能单元表。如果能够找到一个符合要求的功能单元实例(如一个AES加密单元),则判断该功能单元是否能够提供足够的空闲带宽。如果能够提供,则直接将空闲带宽分配给VM。如果没有足够的空闲带宽,则应根据申请的类型和分配策略进行进一步判断。在此需要说明的是,根据申请的类型如何确定FPGA资源分配的策略并不是必须的。说明书CN10。
30、3577266A6/9页9举例而言,如果该申请的类型为尽力服务,则看该功能单元实例能否部分满足其带宽要求。如果能够满足,则可以进行分配。如果不能满足,则直接拒绝其请求。如果该申请的类型为确保服务,则应继续遍历FPGA芯片表和功能单元表,寻找下一个满足要求的功能单元实例。0045如果在遍历了所有FPGA芯片后,没有找到符合要求的功能单元实例,则应当判断有无用于建立这个类型的功能单元的配置文件(BITFILE)存在于系统中。如果不存在,则无法处理这一情况,应由系统管理员负责增加对应的配置文件。如果存在,则应该遍历FPGA芯片表,查找是否有某个FPGA芯片中有足够的空闲可编程资源,能够用于建立这样一。
31、个功能单元实例。如果不能找到,则控制模块无法处理这一情况,应由系统管理员负责增加新的FPGA芯片资源。如果能够找到,则判断当前是否有权直接创建这一功能单元实例。如果没有,则控制模块无法处理这一情况,应由系统管理员进行授权。如果有权,则应当向选定的FPGA芯片发送命令,创建所需的功能单元实例,并进行带宽资源分配。0046在上述所有资源分配和功能单元建立过程中,均需要对FPGA状态记录信息表进行对应更新。显然,在这个实施例中主要用到了资源池状态信息记录,以及功能单元信息记录。所属领域技术人员明了,以上两种实施方式可单独或结合使用。0047在步骤230中,基于所述资源分配操作的结果更新所述资源池状态。
32、信息记录。通过该步骤,可以在对资源请求进行响应的过程中,对FPGA状态记录信息进行相应的修改,以便反映FPGA资源使用状态的变化情况。响应于所述资源分配操作的成功执行,还可将请求成功的FPGA资源的接口信息发送至所述客户端。0048图3示出了一个三级状态信息记录表的示意图。在这个实施例中,FPGA状态记录信息由三级表组成。其逻辑关系如下图所示0049由图中所示信息可见,FPGA状态记录信息的第一级为FPGA芯片表。在一个实施例中,这一级表描述了在本系统中一共有多少片FPGA芯片,以及每一片FPGA的总体资源使用状况。在这一级中,每一项记录即描述了一片FPGA芯片的信息。其中的信息至少应当包括F。
33、PGA识别码(在CHIPINFO域中)和FPGA可编程资源分配情况信息(即该片FPGA的全部可编程资源中剩余的,或者说,空闲的可编程资源的比例,包含在STATUSINFO域中)。除上述信息外,可选的,每一项记录还可包含一个第二级表。0050FPGA状态记录信息的第二级为功能单元表。这一级表描述了在一个FPGA芯片中,已经建立了多少个功能单元,以及该功能单元的对应状态信息。在第二级表中,每一项记录即描述了一个功能单元的信息。其中的信息至少应该包括该功能单元的功能类型(如加密、压缩等),该功能单元的识别码,该功能单元的性能信息(如最大带宽信息,包括在DESCRIPTION域中),该功能单元的资源分。
34、配情况信息(即该功能单元的带宽还有多少比例为空闲)等。除上述信息外,可选的,每一项记录还可包括一个第三级表。0051FPGA状态记录信息的第三级为应用信息记录表。这一级表描述了一个功能单元的各个用户(例如客户端中的应用)对该功能单元的使用状态信息。在第三级表中,每一项记录即描述了一个用户对该功能单元的使用状态信息。其中的信息至少应当包括用户识别码信息(即SID)和QOS信息(例如,该用户能够占用的功能单元处理带宽信息),该第三级应用表可辅助服务质量(QOS)的管理。0052按照上述方式所介绍的技术方案,可根据客户端的请求为其分配FPGA资源。而在说明书CN103577266A7/9页10客户端。
35、实际运行过程中,还会涉及到服务质量QOS的管理,特别是根据包含功能单元类型以及带宽的请求所分配的虚拟资源,需要在客户端的运行过程中控制该客户端的使用不会超过所分配的带宽。0053图4是可实现根据本发明的实施例的进行带宽控制的示意图,在该实施例中,是由一个先进先出的任务队列以及相应的控制流程实现带宽的控制。0054在步骤420中,维护一先进先出的任务队列。所述任务队列中任务的描述信息至少包括一按照预定周期进行复位的数据信用值,根据该任务所申请的带宽确定所述数据信用值。数据信用数值(CREDIT)表示当前周期该任务可以被处理的数据量的大小,它被一个计时器周期性地复位,每次复位后的初始值需要重新根据。
36、所申请的带宽进行计算。0055在一个实施例中,任务队列中的每一行存放着一个软件发送过来的任务描述信息。这些描述信息例如包括下面的描述SID是一个全系统唯一的ID,当一个应用(APPLICATION)申请打开FPGA上面的一个功能单元时,由控制模块生成,并返回给该应用;ACCID是FPGA中一个功能单元的ID,表示该任务使用哪个功能单元进行处理,在该FPGA系统中也是唯一的;SRC是应用发送的一个任务的原始数据在内存中的起始地址,DST是该任务计算结果存放在内存中的起始地址,LENGTH是该任务的数据长度;BW是应用申请的该任务的带宽;数据信用数值表示当前周期该任务可以被处理的数据量的大小,它被。
37、一个计时器周期性地复位,每次复位后的初始值需要重新根据BW进行计算。0056在执行所述任务队列中位于头部的任务时,还包括0057步骤420,响应于所述数据信用值大于零,执行所述位于头部的任务,并根据已经处理的数据量对所述数据信用数值进行调整。0058步骤430,响应于所述数据信用数值等于零,则不执行所述位于头部的任务。0059以下在一个更为具体的示例中说明步骤420以及步骤430的执行。参看图5,示出了一个更为具体的任务队列的示意图。新来的任务添加在任务队列的末尾,当一个任务描述到达任务队列的头部时,得到执行机会。硬件会检查该任务的的数据信用数值字段,如果是0,则不执行该任务,重新把该任务放到。
38、任务队列的尾部。如果数据信用数值字段大于0,以大于4KBYTE为例,则硬件生成一个该任务的子任务,子任务的描述为ACCID,SRC,DST,4KBYTE;该子任务表示使用ID为ACCID的功能模块,处理源地址为SRC,目的地址为DES,长度为4KBYTE(这里仅以4KBYTE为例,可以设计为其他合适的值)的一段数据;把该子任务发送到DMA模块进行执行。在发送子任务的同时,更新原有任务的字段,SRC递增4KBYTE,DST递增4KBYTE,该任务的数据长度(LENGTH)递减4KBYTE,数据信用数值递减4KBYTE。当LENGTH递减到0时,表示该任务已经完成,则从任务队列中删除该任务。006。
39、0数据信用数值的初始值是实现带宽控制的关键,数据信用数值的初始值等于BW字段减去当前周期该应用已经处理的数据量大小。比如BW等于100MB/S,计时器(TIMER)的周期为1秒,那么该应用在当前周期的第一个任务的数据信用数值等于100MB,而第二个任务的数据信用数值(CREDIT)等于100MB减去第一个任务的数据长度(LENGTH)字段,如果是负数,则让数据信用数值(CREDIT)等于0。数据信用数值(CREDIT)在该任务放到任务队列的尾部,或者是从任务队列里面取出来的时候,根据周期数、BW字段,LENGTH字段进行计算。0061该方法还支持动态更改某个应用对于某个功能单元实例的使用带宽限。
40、制,发送一说明书CN103577266A108/9页11条附带SID以及新带宽的更新命令“SID,NEWBW”(参看图5),可以通过SID找到该任务,从而更新其中的BW字段。0062在同一个发明构思下,图6示出了根据本发明的一个实施例的用于对资源池中FPGA资源进行分配的系统的示意性方框图。下面结合附图,对本实施例进行详细说明。对于与前面实施例相同的部分,适当省略其说明。如图6所示,本实施例的系统包括0063接收装置610,配置为接收客户端对所述资源池中FPGA资源的资源请求0064资源分配操作装置620,配置为基于资源池状态信息记录进行资源分配操作以满足所述资源请求,所述资源池状态信息记录中。
41、包括所述资源池中FPGA的使用状态信息。0065更新装置630,配置为基于所述资源分配操作的结果更新所述资源池状态信息记录。0066在一个改进的实施例中,所述资源请求中包括所请求的可编程资源种类和数量。在这个实施例中,资源分配操作装置620,还配置为遍历所述资源池状态信息记录,根据所述FPGA的使用状态信息确定出满足所述所请求的功能单元类型及带宽的FPGA资源并分配给所述客户端。0067在一个实施例中,所述资源池状态信息记录还包括所述FPGA的功能单元信息记录,所述功能单元信息记录至少包括该FPGA中已创建的功能单元信息。0068在另一个实施例中,所述资源请求包括所请求的功能单元类型及带宽。所。
42、述资源分配操作装置620,还配置为基于所述资源池状态信息记录以及所述功能单元信息记录,确定是否找到满足所述资源请求的功能单元;所述资源分配操作装置620还配置为响应于找到,将所找到的功能单元分配给所述客户端;所述资源分配操作装置620还配置为响应于未找到,创建新的功能单元并分配给所述客户端。0069其中,所述功能单元信息记录还包括该功能单元的应用信息记录,所述应用信息记录至少包括请求该功能单元的请求者识别码以及该请求者占用该功能单元的带宽,其中,所述请求者识别码是响应于所述请求者打开一个所分配的功能单元时所生成的识别信息。0070进一步包括配置为维护一先进先出的任务队列的装置,所述任务队列中任。
43、务的描述信息至少包括一按照预定周期进行复位的数据信用值,根据该任务所申请的带宽确定所述数据信用值;配置为在执行所述任务队列中位于头部的任务时,用于响应于所述数据信用值大于零,执行所述位于头部的任务,并根据已经处理的数据量对所述数据信用数值进行调整的装置;响应于所述数据信用数值等于零,则不执行所述位于头部的任务的装置。0071本申请所提供的FPGA资源分配方法及系统,可以应用于IAAS中实现对FPGA资源的虚拟化利用,从而丰富现有IAAS服务。0072附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可。
44、以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行说明书CN103577266A119/9页12规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。0073以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。说明书CN103577266A121/3页13图1图2说明书附图CN103577266A132/3页14图3图4说明书附图CN103577266A143/3页15图5图6说明书附图CN103577266A15。