Worm hashing
First Claim
1. A non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more hardware processors, are configurable to cause the one or more processors to:
- maintain an entries array having a pre-selected number of initially empty buckets and structured as a circular array in a physical memory system coupled with the one or more hardware processors, wherein each of the pre-selected number of entries in the entries array has a corresponding index value;
maintain a chaining array having the pre-selected number of buckets and structured as a circular array in the physical memory system coupled with the one or more hardware processors, wherein each of the pre-selected number of entries in the chaining array has the same corresponding index value as the corresponding bucket in the entries array;
perform a hash operation on data to be stored to determine a hash value corresponding to the data with the one or more hardware processors;
store the data in a bucket in the entries array corresponding to the hash value as an unmovable head-of-chain entry, and moving previous data, if any, stored in the entries array corresponding to the hash value when the previous data has a different hash value;
store the data in another bucket in the entries array when the bucket in the entries array corresponding to the hash value is occupied by a head-of-chain entry;
link the bucket storing the data to the head-of-chain entry with the chaining array with the one or more hardware processors.
1 Assignment
0 Petitions
Accused Products
Abstract
An entries array having a pre-selected number of initially empty buckets and structured as a circular array is maintained. Each of the pre-selected number of entries in the entries array has a corresponding index value. A chaining array having the pre-selected number of buckets and structured as a circular array is also maintained. Each of the pre-selected number of entries in the chaining array has the same corresponding index value as the corresponding bucket in the entries array. A hash operation is performed on data to be stored to determine a hash value corresponding to the data. The data is stored in a bucket in the entries array corresponding to the hash value as an unmovable head-of-chain entry, and moving previous data, if any, stored in the entries array corresponding to the hash value if the previous data has a different hash value. The data is stored in another bucket in the entries array if the bucket in the entries array corresponding to the hash value is occupied by a head-of-chain entry. The bucket storing the data is linked to the head-of-chain entry with the chaining array.
-
Citations
22 Claims
-
1. A non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more hardware processors, are configurable to cause the one or more processors to:
-
maintain an entries array having a pre-selected number of initially empty buckets and structured as a circular array in a physical memory system coupled with the one or more hardware processors, wherein each of the pre-selected number of entries in the entries array has a corresponding index value; maintain a chaining array having the pre-selected number of buckets and structured as a circular array in the physical memory system coupled with the one or more hardware processors, wherein each of the pre-selected number of entries in the chaining array has the same corresponding index value as the corresponding bucket in the entries array; perform a hash operation on data to be stored to determine a hash value corresponding to the data with the one or more hardware processors; store the data in a bucket in the entries array corresponding to the hash value as an unmovable head-of-chain entry, and moving previous data, if any, stored in the entries array corresponding to the hash value when the previous data has a different hash value; store the data in another bucket in the entries array when the bucket in the entries array corresponding to the hash value is occupied by a head-of-chain entry; link the bucket storing the data to the head-of-chain entry with the chaining array with the one or more hardware processors. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer-implemented method comprising:
-
maintaining, with one or more processors, an entries array having a pre-selected number of initially empty buckets and structured as a circular array in a physical memory system coupled with one or more hardware processors, wherein each of the pre-selected number of entries in the entries array has a corresponding index value; maintaining, with one or more processors, a chaining array having the pre-selected number of buckets and structured as a circular array in the physical memory system coupled with the one or more hardware processors, wherein each of the pre-selected number of entries in the chaining array has the same corresponding index value as the corresponding bucket in the entries array; performing, with one or more processors, a hash operation on data to be stored to determine a hash value corresponding to the data; storing, with one or more processors, the data in a bucket in the entries array corresponding to the hash value as an unmovable head-of-chain entry, and moving previous data, if any, stored in the entries array corresponding to the hash value when the previous data has a different hash value; storing, with one or more processors, the data in another bucket in the entries array when the bucket in the entries array corresponding to the hash value is occupied by a head-of-chain entry; linking, with one or more processors, the bucket storing the data to the head-of-chain entry with the chaining array. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
Specification