IP Library Granted Patent US 11,210,231
Granted Patent B2
US 11,210,231 · App. 16/665,328 · Granted Dec 28, 2021

Cache management using a bucket-partitioned hash table

Inventors: Anton Kucherov (Dudley, MA); Ronen Gazit (Tel Aviv, IL); Vladimir Shveidel (Pardes-Hana, IL); Uri Shabi (Tel Mond, IL)
Assignee: EMC IP Holding Company LLC
G06F12/0893G06F2212/608
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,210,231
App. No.
16/665,328
Filed
Oct 28, 2019
Granted
Dec 28, 2021
Kind
B2
Examiner
DARE, RYAN A
Art Unit
2136
USPC
711/129
Abstract

Techniques for performing cache management includes partitioning entries of a hash table into buckets, wherein each of the buckets includes a portion of the entries of the hash table, configuring a cache, wherein the configuring includes allocating a section of the cache for exclusive use by each bucket, and performing first processing that stores a data block in the cache. The first processing includes determining a hash value for a data block, selecting, in accordance with the hash value, a first bucket of the plurality of buckets, wherein a first section of the cache is used exclusively for storing cached data blocks of the first bucket, storing metadata used in connection with caching the data block in a first entry of the first bucket, and storing the data block in a first cache location of the first section of the cache.

Claims (49)

1. A method of performing cache management comprising:

partitioning a plurality of entries of a hash table into a plurality of buckets, wherein each of the plurality of buckets includes a portion of the plurality of entries of the hash table;

configuring a cache, wherein said configuring includes, for each bucket of the plurality of buckets, allocating a section of the cache for exclusive use by said each bucket; and

performing first processing that stores a data block in the cache, wherein the first processing includes:

determining a hash value for a data block;

selecting, in accordance with the hash value, a first bucket of the plurality of buckets, wherein a first section of the cache is used exclusively for storing cached data blocks of the first bucket;

storing metadata used in connection with caching the data block in a first entry of the first bucket; and

storing the data block in a first cache location of the first section of the cache.

2. The method of claim 1 , wherein each bucket of the plurality of buckets includes a same number of the plurality of entries of the hash table.

3. The method of claim 1 , wherein the first section of the cache includes a number of cache locations equal to a number of entries in the first bucket.

4. The method of claim 1 , wherein said configuring allocates a plurality of sections of the cache, wherein a different one of the plurality of sections is allocated for exclusive use by a different corresponding one of the plurality of bucket, and wherein each of the plurality of sections of the cache includes a same number of cache locations.

5. The method of claim 4 , wherein each entry of the plurality of entries includes a first field identifying a cache location of the cache, and wherein the first field has a size determined in accordance with the same number of cache locations of the cache allocated for exclusive use by one of the plurality of buckets.

6. The method of claim 5 , wherein the first field of the first entry references the first cache location.

7. The method of claim 1 , wherein the first bucket has a first bucket identifier determined using at least some bits of the hash value determined for the data block.

8. The method of claim 1 , wherein the first entry is associated with an index determined using at least some bits of the hash value determined for the data block.

9. The method of claim 1 , wherein the hash value is generated using a hash function and a key that is provided as an input to the hash function, wherein the key is associated with the data block.

10. The method of claim 9 , wherein the key has an associated size of N bits and wherein the first bucket has a first bucket identifier determined using M of the N bits of the key associated with the data block.

11. The method of claim 10 , wherein M<N and the M bits of the key are encoded in the first bucket identifier.

12. The method of claim 11 , wherein the first entry includes a field having a size that is N-M bits and includes bit values of the N-M bits of the key that are not encoded in the first bucket identifier.

13. The method of claim 1 , further comprising performing second processing to read a first data block from the cache, the second processing including:

determining a first hash value for the first data block using a first key associated with the first data block;

selecting one bucket of the plurality of buckets using at least some bits of the first hash value, wherein a specified section of the cache is used exclusively for storing cached data blocks of said one bucket;

determining a first index for the first data block using at least some bits of the first hash value;

using first mapping information for said one bucket to identify a particular entry of said one bucket that is associated with said first index, wherein said first mapping information maps indices of data blocks cached in said specified section of the cache to corresponding entries in said one bucket;

determining whether said first key matches an existing key of the particular entry; and

responsive to determining the first key matches the existing key of the particular entry, determining that the particular entry is associated with the first data block that is stored in the cache.

14. The method of claim 13 , wherein the particular entry includes a field identifying the cache location of the specified section of cache where the first data block is cached.

15. A system comprising:

at least one processor; and

at least one memory comprising code stored thereon that, when executed, performs a method of performing cache management comprising:

partitioning a plurality of entries of a hash table into a plurality of buckets, wherein each of the plurality of buckets includes a portion of the plurality of entries of the hash table;

configuring a cache, wherein said configuring includes, for each bucket of the plurality of buckets, allocating a section of the cache for exclusive use by said each bucket; and

performing first processing that stores a data block in the cache, wherein the first processing includes:

determining a hash value for a data block;

selecting, in accordance with the hash value, a first bucket of the plurality of buckets, wherein a first section of the cache is used exclusively for storing cached data blocks of the first bucket;

storing metadata used in connection with caching the data block in a first entry of the first bucket; and

storing the data block in a first cache location of the first section of the cache.

16. A computer readable medium comprising code stored thereon that, when executed, performs a method of performing cache management comprising:

partitioning a plurality of entries of a hash table into a plurality of buckets, wherein each of the plurality of buckets includes a portion of the plurality of entries of the hash table;

configuring a cache, wherein said configuring includes, for each bucket of the plurality of buckets, allocating a section of the cache for exclusive use by said each bucket; and

performing first processing that stores a data block in the cache, wherein the first processing includes:

determining a hash value for a data block;

selecting, in accordance with the hash value, a first bucket of the plurality of buckets, wherein a first section of the cache is used exclusively for storing cached data blocks of the first bucket;

storing metadata used in connection with caching the data block in a first entry of the first bucket; and

storing the data block in a first cache location of the first section of the cache.

17. The computer readable medium of claim 16 , wherein each bucket of the plurality of buckets includes a same number of the plurality of entries of the hash table.

18. The computer readable medium of claim 16 , wherein the first section of the cache includes a number of cache locations equal to a number of entries in the first bucket.

19. The computer readable medium of claim 16 , wherein said configuring allocates a plurality of sections of the cache, wherein a different one of the plurality of sections is allocated for exclusive use by a different corresponding one of the plurality of bucket, and wherein each of the plurality of sections of the cache includes a same number of cache locations.

20. The computer readable medium of claim 19 , wherein each entry of the plurality of entries includes a first field identifying a cache location of the cache, and wherein the first field has a size determined in accordance with the same number of cache locations of the cache allocated for exclusive use by one of the plurality of buckets.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2019
From: KUCHEROV, ANTON; GAZIT, RONEN; SHVEIDEL, VLADIMIR; SHABI, URI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050843/0115 →
Continuity (1)
Related Publication 20210124689A1 · Apr 29, 2021