Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
First Claim
1. A scanning processing element configured to scan a dataflow of data from a column of a database, based on a set of machine code database instructions, said processing element comprising:
- an interface to a memory holding at least a portion of the database;
an interface configured to receive machine code database instructions;
logic, configured to process a dataflow based on the machine code database instructions, for scanning and extracting data, determining whether data satisfies a given predicate, and emitting a result; and
logic for emitting the result to a communication data structure.
5 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the present invention provide processing elements that are capable of performing high level database operations in hardware based on machine code instructions. These processing elements employ a dataflow architecture that operates on data in hardware without interruption or software. A scanning/indexing processing element may comprise logic that analyze database column groups stored in local memory, perform parallel field extraction and comparison, and generates a list of row pointers (row ids or RIDs) referencing those rows whose value(s) satisfy an applied predicate. The scanning/indexing processing may also be used to project database column groups, search and join index structures, and manipulate in-flight metadata flows, composing, merging, reducing, and modifying multi-dimensional lists of intermediate and final results. Furthermore, a scanning/indexing processing element may be used for joins with indexes, like a Group Index, which involves the association of each input tuple with potentially many related data components, in a one-to-many mapping. An XCAM processing element may comprise logic to perform associative database operations, like accumulation and aggregation, sieving, sorting and associative joins.
147 Citations
58 Claims
-
1. A scanning processing element configured to scan a dataflow of data from a column of a database, based on a set of machine code database instructions, said processing element comprising:
-
an interface to a memory holding at least a portion of the database; an interface configured to receive machine code database instructions; logic, configured to process a dataflow based on the machine code database instructions, for scanning and extracting data, determining whether data satisfies a given predicate, and emitting a result; and logic for emitting the result to a communication data structure.
-
-
2. (canceled)
-
3. A processing element configured to index a dataflow of data from a column of a database, based on a set of machine code database instructions, said processing element comprising:
-
an interface to a memory holding at least a portion of the database; an interface configured to receive machine code database instructions; and logic, configured by the machine code database instructions, for composing tuples from a set of columns in the database, projection data into columns, selection of one or more tuples for row reduction, list selection of variables over a column pair, and for emitting a result to a communication data structure.
-
-
4. An associative processing element comprising:
-
an interface to a memory holding at least a portion of the database; an interface configured to receive machine code database instructions; and logic, configured by the machine code database instructions, for concatenating key fragments into a group key and associating keys with a result, aggregating information in the database based on accessing the memory, aggregating and sorting results, gathering sieved results, for providing results to a communication data structure.
-
-
5. A scanning processing element comprising:
-
an interface to a memory holding at least a portion of a database; an input for receiving a dataflow of values retrieved from the memory; and an output, coupled to the input, for emitting a dataflow of results for a scan comparing the values to a predicate based on a program having at least one machine code database instruction. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An indexing processing element comprising:
-
an interface to a memory holding at least a portion of a database; an input for receiving a dataflow of values retrieved from the memory; and an output, coupled to the input, for emitting a dataflow of results for database index operations based on a program having at least one machine code database instruction. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. An indexing processing element comprising:
-
an interface to a memory; an input for receiving a dataflow of values retrieved from the memory; and an output, coupled to the input, for emitting a dataflow of results for database list operations based on a program of at least one machine code database instruction. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)
-
-
45. An associative processing element comprising:
-
an read/write interface to a memory holding at least a portion of a database; an input for receiving a dataflow of values retrieved from the memory; and an output, coupled to the input, for emitting a dataflow of results for operations that are based on an associative key based on a program of at least one machine code database instruction. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58)
-
Specification