Intelligent data storage and processing using FPGA devices
First Claim
1. A data processing apparatus comprising:
- a field programmable gate array (FPGA) that offloads a plurality of processing tasks from a processor within a computer system;
wherein the FPGA is configured to receive and process streaming data through a multi-functional pipeline deployed on the FPGA;
wherein the multi-functional pipeline comprises a plurality of pipelined data processing engines, each pipelined data processing engine being configured to (1) perform a processing operation on streaming data received by that data processing engine, and (2) be responsive to a control instruction that defines whether that pipelined data processing engine is an activated data processing engine or a deactivated data processing engine, wherein an activated data processing engine is configured to perform the processing operation for that data processing engine on received streaming data, and wherein a deactivated data processing engine remains in the pipeline but does not perform the processing operation for that data processing engine on received streaming data, the multi-functional pipeline thereby being configured to provide a plurality of different pipeline functions in response to control instructions that are configured to selectively activate and deactivate the pipelined data processing engines, each pipeline function being the combined functionality of each activated pipelined data processing engine in the pipeline at a given time.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and systems are disclosed where a plurality of precompiled hardware templates are stored in memory, each of the hardware templates being configured for loading onto a re-configurable logic device such as a FPGA to define a data processing operation to be performed by the re-configurable logic device, each of the data processing operations defined by the precompiled hardware templates having an associated performance characteristic. A processor selects a precompiled hardware template from a plurality of the precompiled hardware templates in the memory for loading onto the re-configurable logic device based at least in part on the associated performance characteristics of the data processing operations defined by the precompiled hardware templates.
-
Citations
66 Claims
-
1. A data processing apparatus comprising:
-
a field programmable gate array (FPGA) that offloads a plurality of processing tasks from a processor within a computer system; wherein the FPGA is configured to receive and process streaming data through a multi-functional pipeline deployed on the FPGA; wherein the multi-functional pipeline comprises a plurality of pipelined data processing engines, each pipelined data processing engine being configured to (1) perform a processing operation on streaming data received by that data processing engine, and (2) be responsive to a control instruction that defines whether that pipelined data processing engine is an activated data processing engine or a deactivated data processing engine, wherein an activated data processing engine is configured to perform the processing operation for that data processing engine on received streaming data, and wherein a deactivated data processing engine remains in the pipeline but does not perform the processing operation for that data processing engine on received streaming data, the multi-functional pipeline thereby being configured to provide a plurality of different pipeline functions in response to control instructions that are configured to selectively activate and deactivate the pipelined data processing engines, each pipeline function being the combined functionality of each activated pipelined data processing engine in the pipeline at a given time. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A data processing apparatus comprising:
-
a processor; a field programmable gate array (FPGA) that offloads a plurality of processing tasks from the processor; a bus that links the processor with the FPGA; and a network interface; wherein the FPGA is configured to process streaming data received via the network interface; wherein the FPGA is controllable in response to control instructions received from the processor via the bus; wherein the FPGA comprises resident hardware logic for a plurality of data processing engines that are combinable as a processing pipeline within the FPGA; wherein the FPGA, in response to the control instructions, controls the data processing engines to selectively tap into the streaming data to perform processing operations on the streaming data; wherein the FPGA selectively provides a pass through path for the streaming data whereby the data processing engines do not perform processing operations on a selected portion of the streaming data; and wherein the data processing engines comprise at least one of (1) an encryption engine, (2) a decryption engine, (3) a search engine, (4) a compression engine, (5) a decompression engine, and/or (6) an engine that computes a running aggregation of data within the streaming data. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A data processing apparatus comprising:
-
a field programmable gate array (FPGA) that offloads a plurality of processing tasks from a processor within a computer system; and a network interface; wherein the FPGA is configured to process streaming data received via the network interface; wherein the FPGA comprises a multi-functional pipeline deployed thereon; wherein the multi-functional pipeline comprises a plurality of pipelined data processing engines, each pipelined data processing engine being configured to (1) perform a processing operation on streaming data received by that data processing engine, and (2) be responsive to a control instruction that defines whether that pipelined data processing engine is an activated data processing engine or a deactivated data processing engine, wherein an activated data processing engine is configured to perform the processing operation for that data processing engine on received streaming data, and wherein a deactivated data processing engine remains in the pipeline but does not perform the processing operation for that data processing engine on received streaming data, the multi-functional pipeline thereby being configured to provide a plurality of different pipeline functions in response to control instructions that are configured to selectively activate and deactivate the pipelined data processing engines, each pipeline function being the combined functionality of each activated pipelined data processing engine in the pipeline at a given time. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
-
47. A method comprising:
-
streaming data through a field programmable gate array (FPGA), wherein the FPGA includes a plurality of areas in which resident hardware logic is arranged for performing a plurality of pipelined processing operations on the streaming data, wherein the pipelined processing operations comprise at least one of (1) encryption, (2) decryption, (3) matching, (4) compression, (5) decompression, and/or (6) running aggregation; for processing a first portion of the streaming data, (1) activating a first area of the FPGA corresponding to resident hardware logic for performing a plurality of the pipelined processing operations, (2) deactivating a second area of the FPGA corresponding to resident hardware logic for performing a second plurality of the pipelined processing operations, wherein the resident hardware logic for the deactivated second area remains resident on the FPGA while deactivated, (3) the resident hardware logic for the activated first area performing the pipelined processing operations for that resident hardware logic on the first portion of the streaming data, and (4) the resident hardware logic for the deactivated second area not performing the pipelined processing operations for that resident hardware logic on the first portion of the streaming data; and selectively changing which areas of the FPGA are activated and deactivated when processing a different portion of the streaming data through the FPGA. - View Dependent Claims (48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
-
Specification