IP Library › Granted Patent US 9,389,915
Granted Patent B2
US 9,389,915 · App. 14/418,687 · Granted Jul 12, 2016

Method and system for allocating FPGA resources

Inventors: Xiaotao Chang (Beijing, CN); Fei Chen (Beijing, CN); Kun Wang (Beijing, CN); Yu Zhang (Beijing, CN); Jia Zou (Beijing, CN)
Assignee: International Business Machines Corporation
G06F9/50G06F9/48G06F9/4881G06F9/5005G06F9/505G06F9/5011G06F9/5016G06F9/5022G06F9/5027G06F9/5038G06F9/5044G06F2209/5011
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,389,915
App. No.
14/418,687
Granted
Jul 12, 2016
Kind
B2
Abstract

The present invention relates to technical solutions for allocating FPGA resources in a resource pool. In an embodiment, the technical solution includes: receiving resource request for FPGA resources in the resource pool from a client; performing resource allocation operation based on resource pool state information record in response to the resource request, said resource pool state information record including utilization state information of the FPGA in said resource pool; and updating said resource pool state information record based on the result of said resource allocation operation. FPGA resource allocation can be implemented with the adoption of the technical solution of the application.

Claims (52)

1. A method for allocating FPGA resources in a resource pool, comprising:

receiving resource requests for FPGA resources in the resource pool from a client;

performing a resource allocation operation based on a resource pool state information record in response to the resource request, said resource pool state information record including utilization state information of the FPGA in said resource pool and further including a functional unit information record of said FPGA, said functional unit information record including at least functional unit information created in said FPGA; and

updating said resource pool state information record based on the result of said resource allocation operation, and

maintaining a First In First Out (FIFO) task queue, a description information of a task in said task queue including at least one data credit value reset based on a predetermined period, said data credit value being determined based on the bandwidth required by said task; and

in response to said data credit value being greater than zero, executing said task at the head of said task queue and adjusting the said data credit value according to a processed amount of data; and

in response to said data credit value being equal to zero, not executing the task at the head of said task queue.

2. The method according to claim 1 , wherein,

said resource request includes the type and quantity of the requested programmable resources;

in said resource allocation operation, going through said resource pool state information record and determining the FPGA resources that satisfy the requested type and bandwidth of programmable resources based on said FPGA utilization state information and allocating them to said client.

3. The method according to claim 1 , wherein,

said resource request includes requested type and bandwidth of the functional unit;

in said resource allocation operation, determining whether a functional unit meeting requested type and bandwidth of the functional unit has been found based on said resource pool state information record and said functional unit information record;

allocating a found functional unit to said client in response to finding a functional unit meeting the requested type and bandwidth of the functional unit.

4. The method according to claim 3 , further comprises,

creating and allocating new functional units to said client in response to not finding a functional unit meeting the requesting type and bandwidth of the functional unit.

5. The method according to claim 1 , wherein, said functional unit information record further includes an application information record of said functional unit, said application information record including at least an identification code of the requestor requesting said functional unit and a bandwidth of said functional unit occupied by said requestor, in which, said identification code of said requestor is the identification information generated in response to the opening of an allocated functional unit by said requestor.

6. A system for allocating FPGA resources in a resource pool, comprising:

a reception means, configured to receive resource requests for FPGA resources in the resource pool from a client;

a resource allocation operation means, configured to perform resource allocation operation based on resource pool state information record in response to the resource request, said resource pool state information record including utilization state information of the FPGA in said resource pool and further including the functional unit information record of said FPGA, said functional unit information record including at least functional unit information having been created in said FPGA; and

an updating means, configured to update said resource pool state information record based on the result of said resource allocation operation:

a means configured to maintain a First In First Out (FIFO) task queue, with description information of a task in said task queue including at least one data credit value reset according to a predetermined period, said data credit value being determined according to the bandwidth required by said task; and

a means configured to perform the following operations when executing a task at the head of said task queue:

in response to said data credit value being greater than zero, executing said task at the head and adjusting the said data credit value according to a processed amount of data;

in response to said data credit value being equal to zero, not executing the task at the head of said task queue.

7. The system according to claim 6 , wherein,

said resource request includes the type and quantity of the requested programmable resources;

said resource allocation operation means is further configured to go through said resource pool state information record and determine the FPGA resources that satisfy the requested type and bandwidth of programmable resources based on said FPGA utilization state information and allocate to said client.

8. The system according to claim 6 , wherein,

said resource request includes requested type and bandwidth of the functional unit;

said resource allocation operation means is further configured to determine whether a functional unit satisfying requested type and bandwidth of the functional unit has been found based on said resource pool state information record and said functional unit information record;

said resource allocation operating means is further configured to allocate a found functional unit to said client in respond to finding a functional unit satisfying the requested type and bandwidth of the functional unit.

9. The system according to claim 8 , wherein,

said resource allocation operation means is further configured to create and allocate new functional units to said client in response to not finding a functional unit satisfying the requesting type and bandwidth of the functional unit.

10. The system according to claim 8 , wherein, said functional unit information record further includes an application information record of said functional unit, said application information record including at least an identification code of the requestor requesting said functional unit and a bandwidth of said functional unit occupied by said requestor, in which, said identification code of said requestor is the identification information generated in response to the opening of an allocated functional unit by said requestor.

11. A computer program product comprising a non-transitory computer readable media, the computer readable media having program code embodied thereon for configuring a computer system to perform a method to allocate FPGA resources in a resource pool, said method comprising:

receiving resource requests for FPGA resources in the resource pool from a client;

performing resource allocation operation based on resource pool state information record in response to the resource request, said resource pool state information record including utilization state information of the FPGA in said resource pool and further including a functional unit information record of said FPGA, said functional unit information record including at least functional unit information created in said FPGA; and

updating said resource pool state information record based on the result of said resource allocation operation, and

maintaining a First In First Out (FIFO) task queue, a description information of a task in said task queue including at least one data credit value reset based on a predetermined period, said data credit value being determined based on the bandwidth required by said task; and

in response to said data credit value being greater than zero, executing said task at the head of said task queue and adjusting the said data credit value according to a processed amount of data; and

in response to said data credit value being equal to zero, not executing the task at the head of said task queue.

12. The computer program product according to claim 11 , wherein,

said resource request includes the type and quantity of the requested programmable resources, said method further comprising:

in said resource allocation operation, going through said resource pool state information record and determining the FPGA resources that satisfy the requested type and bandwidth of programmable resources based on said FPGA utilization state information and allocating them to said client.

13. The computer program product according to claim 11 , wherein,

said resource request includes requested type and bandwidth of the functional unit, said method further comprising:

in said resource allocation operation, determining whether a functional unit meeting requested type and bandwidth of the functional unit has been found based on said resource pool state information record and said functional unit information record;

allocating a found functional unit to said client in response to finding a functional unit meeting the requested type and bandwidth of the functional unit.

14. The computer program product according to claim 13 , further comprises,

creating and allocating new functional units to said client in response to not finding a functional unit meeting the requesting type and bandwidth of the functional unit.

15. The computer program product according to claim 11 , wherein, said functional unit information record further includes an application information record of said functional unit, said application information record including at least an identification code of the requestor requesting said functional unit and a bandwidth of said functional unit occupied by said requestor, in which, said identification code of said requestor is the identification information generated in response to the opening of an allocated functional unit by said requestor.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2016
From: CHANG, XIAOTAO; CHEN, FEI; WANG, KUN; ZHANG, YU; ZOU, JIA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038957/0371 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2016
From: CHANG, XIAOTAO; CHEN, FEI; WANG, KUN; ZHANG, YU; ZOU, JIA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038749/0315 →
Priority Claims (1)
CN 2012 1 0270573 · Jul 31, 2012 · national
Continuity (1)
Related Publication 20150169376A1 · Jun 18, 2015