Multipass programming in buffers implemented in non-volatile data storage systems
First Claim
1. A data processing method, comprising:
- at a non-volatile data storage system;
receiving from a host a plurality of requests that specify respective elements; and
for each respective element specified by the received requests;
generating a respective set of k bit positions in a Bloom filter, using k distinct hash functions, where k is an integer greater than 2; and
setting the respective set of k bit positions in the Bloom filter, wherein the Bloom filter is stored in a non-volatile storage medium of the non-volatile data storage system; and
wherein setting a respective bit position of the k bit positions in the Bloom filter comprises;
accessing usage information for a storage medium portion of the non-volatile storage medium that includes the respective bit position in the Bloom filter;
determining whether the usage information for the storage medium portion meets predefined multipass programming criteria;
in accordance with a determination that the usage information for the storage medium portion meets the predefined multipass programming criteria, setting the respective bit position in the Bloom filter in the storage medium portion; and
in accordance with a determination that the usage information for the storage medium portion does not meet the predefined multipass programming criteria, identifying a respective unused portion of the non-volatile storage medium, copying Bloom filter information in the storage medium portion to the identified portion of the non-volatile storage medium, and setting the respective bit position in the Bloom filter.
3 Assignments
0 Petitions
Accused Products
Abstract
The various implementations described herein include systems, methods and/or devices used to enable multipass programming in buffers implemented in non-volatile data storage systems (e.g., using one or more flash memory devices). In one aspect, a portion of memory (e.g., a page in a block of a flash memory device) may be programmed many (e.g., 1000) times before an erase is required. Some embodiments include systems, methods and/or devices to integrate Bloom filter functionality in a non-volatile data storage system, where a portion of memory storing one or more bits of a Bloom filter array may be programmed many (e.g., 1000) times before the contents of the portion of memory need to be moved to an unused location in the memory.
-
Citations
30 Claims
-
1. A data processing method, comprising:
-
at a non-volatile data storage system; receiving from a host a plurality of requests that specify respective elements; and for each respective element specified by the received requests; generating a respective set of k bit positions in a Bloom filter, using k distinct hash functions, where k is an integer greater than 2; and setting the respective set of k bit positions in the Bloom filter, wherein the Bloom filter is stored in a non-volatile storage medium of the non-volatile data storage system; and wherein setting a respective bit position of the k bit positions in the Bloom filter comprises; accessing usage information for a storage medium portion of the non-volatile storage medium that includes the respective bit position in the Bloom filter; determining whether the usage information for the storage medium portion meets predefined multipass programming criteria; in accordance with a determination that the usage information for the storage medium portion meets the predefined multipass programming criteria, setting the respective bit position in the Bloom filter in the storage medium portion; and in accordance with a determination that the usage information for the storage medium portion does not meet the predefined multipass programming criteria, identifying a respective unused portion of the non-volatile storage medium, copying Bloom filter information in the storage medium portion to the identified portion of the non-volatile storage medium, and setting the respective bit position in the Bloom filter. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A non-volatile data storage system, comprising:
-
a non-volatile storage medium storing a Bloom filter; one or more processors; and memory storing one or more programs, which when executed by the one or more processors cause the non-volatile data storage system to; receive from a host a plurality of requests that specify respective elements; and for each respective element specified by the received requests; generate a respective set of k bit positions in a Bloom filter, using k distinct hash functions, where k is an integer greater than 2; and set the respective set of k bit positions in the Bloom filter; and wherein setting a respective bit position of the k bit positions in the Bloom filter comprises; accessing usage information for a storage medium portion of the non-volatile storage medium that includes the respective bit position in the Bloom filter; determining whether the usage information for the storage medium portion meets predefined multipass programming criteria; in accordance with a determination that the usage information for the storage medium portion meets the predefined multipass programming criteria, setting the respective bit position in the Bloom filter in the storage medium portion; and in accordance with a determination that the usage information for the storage medium portion does not meet the predefined multipass programming criteria, identifying a respective unused portion of the non-volatile storage medium, copying Bloom filter information in the storage medium portion to the identified portion of the non-volatile storage medium, and setting the respective bit position in the Bloom filter. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A non-transitory computer readable storage medium storing one or more programs configured for execution by one or more processors of a non-volatile data storage system, the one or more programs comprising instructions for causing the non-volatile data storage system to:
-
receive from a host a plurality of requests that specify respective elements; and for each respective element specified by the received requests; generate a respective set of k bit positions in a Bloom filter, using k distinct hash functions, where k is an integer greater than 2; and set the respective set of k bit positions in the Bloom filter, wherein the Bloom filter is stored in a non-volatile storage medium of the non-volatile data storage system; and wherein setting a respective bit position of the k bit positions in the Bloom filter comprises; accessing usage information for a storage medium portion of the non-volatile storage medium that includes the respective bit position in the Bloom filter; determining whether the usage information for the storage medium portion meets predefined multipass programming criteria; in accordance with a determination that the usage information for the storage medium portion meets the predefined multipass programming criteria, setting the respective bit position in the Bloom filter in the storage medium portion; and in accordance with a determination that the usage information for the storage medium portion does not meet the predefined multipass programming criteria, identifying a respective unused portion of the non-volatile storage medium, copying Bloom filter information in the storage medium portion to the identified portion of the non-volatile storage medium, and setting the respective bit position in the Bloom filter. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
-
Specification