Method and apparatus for executing standard functions in a computer system using a field programmable gate array
First Claim
1. A computer system comprising:
- (a) a mass storage medium including a library of functions at least some of which are stored in pre-compiled firmware forms each comprising configuration data;
(b) a field programmable gate array (FPGA) including a set of bus line connections, and a set of configuration line connections operatively associated with the mass storage medium to allow configuration of the FPGA with the pre-compiled firmware forms of the functions from the mass storage medium; and
(c) a processor unit comprising a processor operatively associated with the FPGA through the set of bus line connections thereof and operable to execute a call to a given one of said functions, wherein the processor unit is operable to determine whether a pre-compiled firmware form of the given function is available;
wherein the processing unit is further operable to use the FPGA configured with the pre-compiled firmware form of the given function in response to determining that the pre-compiled firmware form of the given function is available;
wherein the processing unit is further operable to use a software form of the given function in response to determining that the pre-compiled firmware form of the given function is not available.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer system comprising mass storage, a system bus connected to the mass storage, and a processor unit connected to the system bus. A library of standard functions is stored in the mass storage. Each library function is stored in at least one of two versions. The first version is obtained from compilation of firmware code, as is conventional. The second version is obtained from compilation of firmware code and comprises a set of configuration data for loading into a field programmable gate array (FPGA). The computer system is provided with a FPGA connected to the system bus which can be configured by the second versions of the library functions so that these can be performed in the FPGA, instead of in the processor. The apparatus and method are well suited to libraries of database search engine functions. Performance advantages can be obtained by executing function calls in the FPGA.
-
Citations
18 Claims
-
1. A computer system comprising:
-
(a) a mass storage medium including a library of functions at least some of which are stored in pre-compiled firmware forms each comprising configuration data;
(b) a field programmable gate array (FPGA) including a set of bus line connections, and a set of configuration line connections operatively associated with the mass storage medium to allow configuration of the FPGA with the pre-compiled firmware forms of the functions from the mass storage medium; and
(c) a processor unit comprising a processor operatively associated with the FPGA through the set of bus line connections thereof and operable to execute a call to a given one of said functions, wherein the processor unit is operable to determine whether a pre-compiled firmware form of the given function is available;
wherein the processing unit is further operable to use the FPGA configured with the pre-compiled firmware form of the given function in response to determining that the pre-compiled firmware form of the given function is available;
wherein the processing unit is further operable to use a software form of the given function in response to determining that the pre-compiled firmware form of the given function is not available. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
a system bus to which is connected the mass storage medium, the FPGA through the set of bus line connections thereof, and the processor unit;
an I/O bridge having a first side connected to the system bus and a second side connected to an I/O interface; and
a load path interconnecting the set of configuration line connections of the FPGA and the second side of the I/O bridge;
wherein the processor is operable to configure the FPGA with the given one of the library functions by causing the pre-compiled firmware form of the given function to be transmitted from the mass storage medium, onto the system bus, through the I/O bridge, along the load path, and to the configuration line connections of the FPGA.
-
-
3. The system of claim 1, further including:
-
a system bus to which is connected the mass storage medium and the processor unit;
an I/O bridge having a first side connected to the system bus and a second side connected to an I/O interface;
a load path interconnecting the set of configuration line connections of the FPGA and the second side of the I/O bridge; and
an external device, of which the mass storage medium forms at least a part, arranged connected to the I/O interface;
wherein the processor is operable to configure the FPGA with the given one of the library functions by causing the pre-compiled firmware form of the given function to be transmitted from the mass storage medium, to the I/O bridge, along the load path, and to the configuration line connections of the FPGA.
-
-
4. The system of claim 1, further including:
-
a system bus to which is connected the processor unit;
an I/O bridge having a first side connected to the system bus and a second side connected to an I/O interface;
a load path interconnecting the set of configuration line connections of the FPGA and the second side of the I/O bridge;
wherein the processor unit further comprises an internal bus to which is connected the processor, the field programmable gate array, through the set of bus line connections thereof, and a bus interface having a first side connected to the internal bus of the processor unit and a second side connected to the system bus.
-
-
5. The system of claim 4:
-
wherein the mass storage medium is connected to the system bus; and
wherein the processor is operable to configure the FPGA with the given one of the library functions by causing the pre-compiled firmware form of the given function to be transmitted from the mass storage medium, onto the system bus, through the I/O bridge, along the load path, and to the configuration line connections of the FPGA.
-
-
6. The system of claim 4, further including:
-
an external device, of which the mass storage medium forms at least a part, arranged connected to the I/O interface;
wherein the processor is operable to configure the FPGA with the given one of the library functions by causing the pre-compiled firmware form of the given function to be transmitted from the mass storage medium, to the I/O bridge, along the load path, and to the configuration line connections of the FPGA.
-
-
7. The system of claim 1, wherein the FPGA comprises a plurality of independently addressable areas, each configurable with one of the library functions.
-
8. The system of claim 7, there being one independently addressable area for each library function stored in the mass storage medium, the system having a boot-up routine for configuring the FPGA with each of the library functions.
-
9. The system of claim 1, wherein the pre-compiled firmware form is derived from compilation of firmware code.
-
10. The system of claim 9, wherein the firmware code from which the pre-compiled firmware form is derived is written in a high-level description language (HDL).
-
11. The system of claim 1, wherein each of the functions in said library of functions is stored in at least one of a first version and a second version, the first version being pre-compiled from software code, and the second version being pre-compiled from firmware code.
-
12. The system of claim 1, wherein the library of functions comprises at least one of a search function, a string search function and a sort function.
-
13. The system of claim 1, wherein at least a sub-group of said functions is for supporting a database search engine.
-
14. A method of executing program flow including calls to any one of a plurality of library functions at least some of which are held in a storage medium as firmware comprising configuration data for a field programmable gate array (FPGA), the method comprising:
-
detecting a call to a particular library function in the program flow;
determining whether the firmware for executing the particular library function is held in the storage medium;
determining whether the FPGA is configured to execute the particular library function call;
in response to determining that the firmware for executing the particular library function is held in the storage medium and that the FPGA is not configured to execute the particular library function call, configuring the FPGA by loading the firmware for executing the particular library function into the FPGA from the storage medium, and executing the call to the particular library function using the FPGA configured with the library function;
executing the call to the particular library function using a software form of the particular library function in response to determining that the firmware form for executing the particular library function is not held in the storage medium. - View Dependent Claims (15, 16, 17)
detecting a subsequent call in the program flow to a second library function; and
configuring the second area of the FPGA by loading the second library function into the FPGA from the storage medium.
-
-
17. The method of claim 14, wherein the FPGA has at least a first area and a second area to allow simultaneous configuration of the FPGA with at least two library functions, the method further comprising:
configuring at least the first and second areas of the FPGA with respective ones of the library functions and executing multiple library function calls in parallel.
-
18. A method of executing a program flow including calls to any one of a plurality of library functions held in a storage medium as firmware, wherein each of the functions in said library of functions is stored in at least one of a first version and a second version, the first version being pre-compiled from software code, and the second version being pre-compiled from firmware code, the method comprising:
-
detecting a call to a particular library function in the program flow;
testing for presence of a field programmable gate array (FPGA) hardware capable of supporting that call;
testing for presence of the second version of the called function;
absent the FPGA hardware or said second version, executing the call in software using the first version of the particular library function; and
present the FPGA hardware and said second version, loading the FPGA with the second version of the particular library function and executing the call in hardware using the FPGA.
-
Specification