Intelligent data storage and processing using fpga devices
First Claim
1. A programmable logic device in communication with a mass storage medium, said device being configured to manipulate data passing to or from said mass storage medium in a continuous data stream.
3 Assignments
0 Petitions
Accused Products
Abstract
A data storage and retrieval device and method is disclosed. The device includes at least one magnetic storage medium configured to store target data and at least one re-configurable logic device comprising an FPGA coupled to the at least one magnetic storage medium and configured to read a continuous stream of target data therefrom, having been configured with a template or as otherwise desired to fit the type of search and data being searched. The re-configurable logic device is configured to receive at least one search inquiry in the form of a data key and to determine a match between the data key and the target data as it is being read from the at least one magnetic storage medium. This device and method can perform a variety of searches on the target data including without limitation exact and approximate match searches, sequence match searches, image match searches and data reduction searches. This device and method may be provided as part of a stand-alone computer system, embodied in a network attached storage device, or can otherwise be provided as part of a computer LAN or WAN. In addition to performing search and data reduction operations, this device may also be used to perform a variety of other processing operations including encryption, decryption, compression, decompression, and combinations thereof.
265 Citations
104 Claims
- 1. A programmable logic device in communication with a mass storage medium, said device being configured to manipulate data passing to or from said mass storage medium in a continuous data stream.
-
17. A method of manipulating data moving to or from a mass storage medium in a continuous stream, the method comprising:
-
receiving a continuous data stream moving to or from a mass storage medium; and
manipulating data in said continuous stream with reconfigurable hardware logic. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. For a programmable logic device in communication with a mass storage medium, the programmable logic device being configured to process data moving to or from the mass storage medium in accordance with a template loaded thereon, the template defining one or more processing functions, each function having an associated performance characteristic for data processing performed thereby, a method for selecting a template for programming the programmable logic device, the method comprising:
-
selecting a stored template from a plurality of stored templates for loading into the programmable logic device at least partially on the basis of the determined performance characteristics for each function defined by the templates, the plurality of stored templates each having a type associated with the data processing performed thereby; and
replacing a template on the programmable logic device with the selected template, the type of the selected template being the same as the type of the template on the programmable logic device. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. (canceled)
-
40. A data processing system comprising:
-
a data storage medium;
a processing device in communication with the data storage medium; and
a computer system having a system bus, wherein the computer system is configured to communicate with the processing device over the system bus;
wherein the processing device comprises a programmable logic device configured to process the data, as it passes between the data storage medium and the computer system, through a plurality of stages implemented on the programmable logic device as a processing pipeline, each processing stage being dedicated to a different processing operation; and
wherein the processing operations comprise at least two selected from the group consisting of a search operation, a data reduction operation, a data classification operation, an encryption operation, a decryption operation, a compression operation, and a decompression operation. - View Dependent Claims (41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 98, 99)
-
-
53. (canceled)
-
54. A hard disk drive accelerator for connection between a hard disk drive and a processor, said accelerator comprising reconfigurable hardware logic arranged such that data read from the hard disk drive streams through the reconfigurable hardware logic prior to being passed on to the processor, wherein the reconfigurable hardware logic is configured to process the data stream through pipeline comprising a plurality of processing stages, each processing stage being configured to perform a data processing operation on the data it receives, and wherein the processing operations performed by the stages of the pipeline are at least two selected from the group consisting of:
- a search operation, a data reduction operation, a data classification operation, an encryption operation, a decryption operation, a compression operation, and a decompression operation.
- View Dependent Claims (55, 56, 57, 58, 59, 60, 61, 62, 63, 64)
-
65. A device for compressing data, the device comprising:
a programmable logic device in communication with a data storage medium, the programmable logic device being configured to (1) receive data from a data source, (2) perform an encryption operation on the received data to thereby create encrypted data. (3) perform a compression operation on the encrypted data to thereby create compressed data, and (4) store the compressed data in the data storage medium. - View Dependent Claims (66, 67, 68)
-
69. A device for decompressing data, the device comprising:
a programmable logic device in communication with a data storage medium, the data storage medium comprising data stored therein in a compressed format, the programmable logic device being configured to (1) receive a continuous stream of compressed data from the data storage medium, (2) perform a decompression operation on the received continuous stream of compressed data to thereby create decompressed data, and (3) perform a decryption operation on the decompressed data. - View Dependent Claims (70, 71, 72)
-
73. A data storage medium upon which data is stored magnetically for subsequent retrieval by a magnetic read head, the medium comprising:
-
a rotatable magnetic medium; and
a plurality of discontiguous arcs located on the magnetic medium for storing data. - View Dependent Claims (74, 75, 76, 77, 78, 79, 80)
-
-
81. A method of reading data from a rotatable planar magnetic storage medium upon which data is stored on a plurality of discontiguous circular arcs, and wherein the plurality of discontiguous circular arcs together define a generally helical pattern about a central origin, the method comprising:
-
rotating the magnetic storage medium; and
positioning a read head to follow the generally helical pattern on the magnetic storage medium as the storage medium rotates. - View Dependent Claims (82)
-
-
83. A disk drive system for magnetically storing data, the system comprising:
-
a rotatable disk upon which data is magnetically stored in a plurality of discontiguous arcs, wherein each arc possesses a substantially constant curvature;
a device for rotating the disk when data is to be read therefrom;
a read head positioned for reading the data stored on the disk as the disk rotates; and
a positioning system configured to position the read head over the disk such that, as the disk rotates, the read head follows the generally helical pattern of the discontiguous arcs. - View Dependent Claims (84, 85)
-
-
86. A method of storing a data file on a storage medium, the data file having a file size comprising a total number of bytes therein, the method comprising:
-
determining whether the file size is an even power of 2;
if the file size is an even power of 2, requesting a block of storage space on the storage medium equal to the file size;
if the file size is not an even power of 2, requesting a plurality of blocks of storage space on the storage medium, each block having a size that is equal to a power of 2; and
if the request is accepted, storing the data file on the storage medium as one or more data file segments in accordance with the request. - View Dependent Claims (87, 88, 89, 90, 91)
-
-
92. A method of storing a data file on a storage medium, the data file having a file size comprising a total number of bytes therein, the method comprising:
-
maintaining a minimum size 2m for a block of storage space into which the data file or a segment thereof will be stored;
determining whether the file size is an even power of 2;
if the file size is an even power of 2 and greater than or equal to 2m, requesting a block of storage space on the storage medium equal to the file size;
if the file size is less than 2m, requesting a block of storage space on the storage medium equal to 2m;
if the file size is not an even power of 2 and greater than 2m, requesting a plurality of blocks of storage space on the storage medium, each block having a size that is equal to a power of 2 and equal to or greater than 2m; and
if the request is accepted, storing the data file on the storage medium in accordance with the request. - View Dependent Claims (93, 94, 95, 96, 97)
-
-
100. A data processing system comprising:
-
a data storage medium;
a processing device in communication with the data storage medium; and
a computer system having a system bus, wherein the computer system is configured to communicate with the processing device over the system bus;
wherein the processing device comprises a programmable logic device, the programmable logic device implementing a plurality of data processing stages;
wherein each data processing stage is dedicated to a different data processing operation;
wherein the data processing operations comprise at least two selected from the group consisting of a search operation, a data reduction operation, a data classification operation, an encryption operation, a decryption operation, a compression operation, and a decompression operation;
wherein the processing device is configured to selectively activate and deactivate individual ones of the data processing stages to define a data processing pipeline, wherein a deactivated stage acts as a pass through for the data it receives, and wherein an activated stage performs the data processing operation to which that stage is dedicated upon the data it receives; and
wherein the programmable logic device is further configured to process data, as it passes between the data storage medium and the computer system, through the defined data processing pipeline. - View Dependent Claims (101)
-
-
102. A hard disk drive accelerator for connection between a hard disk drive and a processor, said accelerator comprising reconfigurable hardware logic arranged such that data read from the hard disk drive streams through the reconfigurable hardware logic prior to being passed on to the processor, wherein the reconfigurable hardware logic is configured to process the data stream through a pipeline comprising a plurality of processing stages, each processing stage being configured to perform a data processing operation on the data it receives, wherein the processing operations performed by the stages of the pipeline are at least two selected from the group consisting of:
- a search operation, a data reduction operation, a data classification operation, an encryption operation, a decryption operation, a compression operation, and a decompression operation, and wherein the reconfigurable hardware logic is further configured to selectively deactivate a processing stage of the plurality of stages, whereby the deactivated stage acts as a pass through for the data it receives.
- View Dependent Claims (103, 104)
Specification