IP Library Granted Patent US 10,353,607
Granted Patent B2
US 10,353,607 · App. 16/146,584 · Granted Jul 16, 2019

Bloom filters in a flash memory

Inventors: Grant R. Wallace (Pennington, NJ); Philip N. Shilane (Newtown, PA)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/064G06F3/0652G06F3/0653G06F3/0679G11C16/08G11C16/10G11C16/16G11C16/26G11C16/344G11C16/3445G11C16/3459
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 10,353,607
App. No.
16/146,584
Granted
Jul 16, 2019
Kind
B2
Abstract

Systems and methods for managing content in a flash memory. A data structure such as a Bloom filter is implemented in flash memory such that updates to the data can be performed by overwriting pages in the memory.

Claims (32)

1. A method for implementing a Bloom filter in a flash memory, the method comprising:

establishing a Bloom filter in the flash memory, wherein the Bloom filter includes a plurality of pages and wherein all bits in the Bloom filter are initially unset;

storing a record in memory, wherein the memory is separate from the flash memory, the record including a plurality of entries, each entry corresponding to a portion of the Bloom filter;

when one of the plurality of entries in the record is full, identifying bits to be set in the Bloom filter from the full entry;

overwriting the portion of the Bloom filter corresponding to the full entry in the record in order to set the identified bits.

2. The method of claim 1 , further comprising, when one of the plurality of entries in the record is full, identifying all bits in all of the plurality of entries in the record to be set in the Bloom filter and overwriting the portion of the Bloom filter corresponding to all entries in the record.

3. The method of claim 1 , further comprising performing garbage collection using the Bloom filter.

4. The method of claim 1 , further comprising performing deduplication of data using the Bloom filter.

5. The method of claim 1 , further comprising making a call to the flash memory to perform the overwriting, wherein the call is specified by a client such that the client controls how the overwriting is performed.

6. The method of claim 5 , wherein the call includes one of a logical OR or a Compare and Swap overwrite operation.

7. The method of claim 1 , wherein each entry in the record corresponds to a page in the flash memory.

8. A method for implementing a Bloom filter in a flash memory, the method comprising:

establishing a Bloom filter in the flash memory, wherein the Bloom filter includes a plurality of pages and wherein all bits in the Bloom filter are initially unset;

storing a record in memory that is separate from the flash memory, wherein the record is configured to store updates to the Bloom filter in a plurality of entries, each entry corresponding to a portion of the Bloom filter;

identifying bits in the record to be set in the Bloom filter from the plurality of entries in a batch update;

overwriting the portion of the Bloom filter corresponding to identified bits in the record during a batch update in order to set the identified bits in the Bloom filter.

9. The method of claim 8 , wherein the identified bits include at least bits in an entry in the record that is full, further comprising, overwriting the portion of the Bloom filter corresponding to all entries in the record.

10. The method of claim 9 , further comprising clearing the identified bits from the record.

11. The method of claim 8 , further comprising performing garbage collection using the Bloom filter or a deduplication operation using the Bloom filter.

12. The method of claim 8 , further comprising sorting pluralities of entries in the record.

13. The method of claim 8 , wherein the plurality of entries each include an offset and each entry includes a bucket that is associated with a portion of the Bloom filter.

14. The method of claim 8 , further comprising, when a new element is to be inserted into the Bloom filter, determining bits to set in the Bloom filter and recording those bits in the record.

15. The method of claim 8 , further comprising making a call to the flash memory to perform the overwriting, wherein the call is specified by a client such that the client controls how the overwriting is performed.

16. The method of claim 15 , wherein the call includes one of a logical OR or a Compare and Swap overwrite operation.

17. The method of claim 8 , wherein each entry in the record corresponds to a page in the flash memory.

18. A method for implementing a data structure in a flash memory, the method comprising:

establishing a data structure in the flash memory, wherein the data structure includes a plurality of pages of the flash memory and wherein all bits in the data structure are initially unset;

storing a record in memory that is separate from the flash memory, wherein the record is configured to store updates to the data structure in a plurality of entries, each entry corresponding to a portion of the data structure;

identifying bits in the record to be set in the data structure from the plurality of entries in a batch update;

overwriting the portion of the data structure corresponding to identified bits in the record during a batch update in order to set the identified bits in the Bloom filter.

19. The method of claim 18 , wherein the data structure is one of a Bloom filter, a linked list, a hash table, a locking data structure, a tree, or a graph.

20. The method of claim 18 , wherein the portion of the data structure corresponds to a page of the flash memory.

Assignments (5)
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2019
From: WALLACE, GRANT R.; SHILANE, PHILIP N.
To: EMC CORPORATION
Reel/Frame 049381/0971 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2019
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049387/0308 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
Continuity (2)
Continuation 15196196 · Jun 29, 2016
Related Publication 20190034100A1 · Jan 31, 2019