DETAILED ACTION
This final rejection is responsive to communication filed February 2, 2026. Claims 1, 4, 8, 17, and 20 are currently amended. Claims 1-20 are pending in this application.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claim 20 is rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 20 recites the limitation “the system of claim 17, wherein the logic to search the bloom filter for each of the plurality of data blocks to determine particular ones of the plurality of data blocks that are immaterial in order to service the query for the select data is further configured to” in the preamble of the claim. There is insufficient antecedent basis for this limitation because claim 17 does not recite “logic to search the bloom filter for each of the plurality of data blocks to determine particular ones of the plurality of data blocks that are immaterial in order to service the query for the select data.”
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-7 and 17-20 are rejected under 35 U.S.C. 103 as being unpatentable over Gupta et al. (US 8,972,337 B1 )(‘Gupta’) in view of Choi et al. (US 2023/0266913 A1) (‘Choi’), and further in view of Meeramohideen Mohamed et al. (US 2023/0393783 A1) (‘Meeramohideen’).
With respect to claim 1, Gupta teaches a memory device, comprising:
an array of memory cells (col. 18 lines 56-62; col. 19 lines 57-67);
logic coupled to the array (col. 18 lines 56-62; col. 19 lines 57-67) and configured to:
receive, from a host, an indication of a query related to a dataset stored in the array of memory cells (col. 10 lines 34-56; col. 12 lines 25-27; col. 14 lines 45-48; col. 19 lines 64-67); and
implement a bloom filter using a hash algorithm (col. 11 lines 8-28; col. 14 lines 18-22) and comparison operations to process the query using the memory device (col. 10 lines 8-21; col. 14 lines 48-55).
Gupta does not explicitly teach processing the query by the memory device without transferring the dataset to the host.
Choi teaches an array of memory cells (paragraphs 45); logic coupled to the array (paragraph 46); dataset stored in the array of memory cells (paragraph 45; and processing the query by the memory device without transferring the dataset to the host (paragraphs 45, 47, and 53).
It would have been obvious to a person having ordinary skill in the art prior to the effective filing date of the invention to have modified the query processing of Gupta to be performed by the memory device without transferring data as taught by Choi to enable a combination of known prior art elements (i.e. query processing techniques) to yield predictable results (i.e. results of query processing). Further, in-memory processing reduces memory usage and the number of operations to improve memory efficiency and operation efficiency (Choi, paragraph 52). Lastly, Gupta teaches caching frequently accessed data so that the data does not have to be transferred from host (col. 12 lines 58-67), and thus it would be obvious to further reduce memory usage and speed up query processing.
Further regarding claim 1, Gupta in view of Choi does not explicitly teach implementing a bloom filter, stored in a register of control circuitry of the memory device.
Meeramohideen teaches implementing a bloom filter, stored in a register of control circuitry of the memory device (paragraphs 46-47 and 54-55).
It would have been obvious to a person having ordinary skill in the art prior to the effective filing date of the invention to have modified the bloom filter of Gupta to be stored in a register of control circuitry of the memory device as taught by Meeramohideen to enable a register that is operated in accordance with a membership bloom filter such that, prior to adding data to the register, the memory device may determine whether the data is already included in the register to avoid filling the register with duplicate entries (Meeramohideen, paragraph 55). Further, it is an obvious design choice to store a bloom filter in a register of control circuitry.
With respect to claim 2, Gupta in view of Choi and Meeramohideen teaches wherein the logic includes a plurality of exclusive OR (XOR) gates configured to perform the comparison operations (Choi, paragraph 47).
With respect to claim 3, Gupta in view of Choi and Meeramohideen teaches wherein the logic is configured to: generate a respective bloom filter for each data block storing data in the array of memory cells, wherein each bloom filter is represented as a bitmap, wherein different patterns of set bits in the bitmap indicate data values not stored in the data block (Gupta, col. 11 lines 8-15; col. 13 lines 46-49; col. 14 lines 18-24).
With respect to claim 4, Gupta in view of Choi and Meeramohideen teaches wherein the logic is configured to:
evaluate the indication of the query to determine predicate data values that identify select data for processing the query (Gupta, col. 11 lines 64-67);
in response to receiving and evaluating the indication of the query: search the bitmap representing the bloom filter for the predicate data values for each data block to determine particular ones of the data blocks that are immaterial in order to service the query for the select data (Gupta, col. 12 lines 28-35); and
read the data blocks excepting the particular ones of the data blocks that are immaterial (Gupta, col. 12 lines 44-46).
With respect to claim 5, Gupta in view of Choi and Meeramohideen teaches wherein the logic is further configured to: receive additional data to be stored in an additional data block; and generate an additional bloom filter for the additional data block (Gupta, col. 5 lines 48-54; col. 11 lines 29-38).
With respect to claim 6, Gupta in view of Choi and Meeramohideen teaches wherein to generate the bloom filter for each of the data blocks storing the data, the logic is configured to:
determine a bloom filter size based, at least in part, on a number of data values stored in the data block (Gupta, col. 13 line 63 – col. 14 line 1);
generate the bitmap representing the bloom filter and comprising a plurality of bits corresponding to the bloom filter size (Gupta, col. 14 lines 7-10); and
populate the bitmap with the different patterns of set bits based, at least in part, on the data written in the data block to produce the bloom filter (Gupta, col. 14 lines 18-26) , comprising:
apply a plurality of hash functions to each data value stored in the data block (Gupta, col. 14 lines 18-26); and
set bits in locations of the bitmap corresponding to the output of the plurality of hash functions in order to generate the different patterns of set bits (Gupta, col. 14 lines 38-44).
With respect to claim 7, Gupta in view of Choi and Meeramohideen teaches wherein the array of memory cells is a dynamic random access (DRAM) memory array (Gupta, col. 18 lines 56-62; Choi, paragraph 45).
With respect to claim 17, Gupta teaches a system, comprising:
a processor (col. 18 lines 3-5);
a memory device couples to the processor (col. 18 lines 3-5), comprising:
an array of memory cells (col. 18 lines 56-62; col. 19 lines 57-67);
logic coupled to the array (col. 18 lines 56-62; col. 19 lines 57-67) and configured to:
receive, from a host, an indication of a query related to a dataset stored in the array of memory cells (col. 10 lines 34-56; col. 12 lines 25-27; col. 14 lines 45-48; col. 19 lines 64-67); and
implement a bloom filter using a hash algorithm (col. 11 lines 8-28; col. 14 lines 18-22) and comparison operations to process the query using the memory device (col. 10 lines 8-21; col. 14 lines 48-55).
Gupta does not explicitly teach processing the query by the memory device without transferring the dataset to the host.
Choi teaches an array of memory cells (paragraphs 45); logic coupled to the array (paragraph 46); dataset stored in the array of memory cells (paragraph 45; and processing the query by the memory device without transferring the dataset to the host (paragraphs 45, 47, and 53).
It would have been obvious to a person having ordinary skill in the art prior to the effective filing date of the invention to have modified the query processing of Gupta to be performed by the memory device without transferring data as taught by Choi to enable a combination of known prior art elements (i.e. query processing techniques) to yield predictable results (i.e. results of query processing). Further, in-memory processing reduces memory usage and the number of operations to improve memory efficiency and operation efficiency (Choi, paragraph 52). Lastly, Gupta teaches caching frequently accessed data so that the data does not have to be transferred from host (col. 12 lines 58-67), and thus it would be obvious to further reduce memory usage and speed up query processing.
Further regarding claim 17, Gupta in view of Choi does not explicitly teach implementing a bloom filter, stored in a register of control circuitry of the memory device.
Meeramohideen teaches implementing a bloom filter, stored in a register of control circuitry of the memory device (paragraphs 46-47 and 54-55).
It would have been obvious to a person having ordinary skill in the art prior to the effective filing date of the invention to have modified the bloom filter of Gupta to be stored in a register of control circuitry of the memory device as taught by Meeramohideen to enable a register that is operated in accordance with a membership bloom filter such that, prior to adding data to the register, the memory device may determine whether the data is already included in the register to avoid filling the register with duplicate entries (Meeramohideen, paragraph 55). Further, it is an obvious design choice to store a bloom filter in a register of control circuitry.
With respect to claim 18, Gupta in view of Choi and Meeramohideen teaches wherein the logic is configured to:
generate a bloom filter for each of a plurality of data blocks storing data in the array, wherein each bloom filter is represented as a bitmap, wherein different patterns of set bits in the bitmap indicate data values not stored in the data block (Gupta, col. 11 lines 8-15; col. 13 lines 46-49; col. 14 lines 18-24);
for each of the plurality of data blocks, store the bitmap representing the bloom filter in a respective entry in a data structure that stores information about the plurality of data blocks (col. 4 line 64 – col. 5 line 16; col. 11 lines 12-28; claim 10);
receive an indication of a query for select data (col. 10 lines 34-56; col. 12 lines 25-27; col. 14 lines 45-48; col. 19 lines 64-67 ); and
in response to receiving the indication of the query:
search the bloom filter for each of the plurality of data blocks to determine particular ones of the plurality of data blocks that are immaterial in order to service the query for the select data (col. 10 lines 8-21; col. 12 lines 28-35, col. 14 lines 48-55); and
read the plurality of data blocks in order to service the query for the select data excepting the particular ones of the data blocks that are immaterial (Gupta, col. 12 lines 44-46).
With respect to claim 19, Gupta in view of Choi and Meeramohideen teaches wherein the logic is further configured to:
detect an indexing event (col. 5 lines 54-61; col. 16 lines 33-34); and
in response to detecting the indexing event:
for each of the plurality of data blocks, generate a new probabilistic data structure which indicates a data value not stored in the data block in place of the bloom filter (col. 5 lines 61-65; col 16 line 64 – col. 17 line 1).
With respect to claim 20, Gupta in view of Choi and Meeramohideen teaches wherein the logic to search the bloom filter for each of the plurality of data blocks to determine particular ones of the plurality of data blocks that are immaterial in order to service the query for the select data is further configured to:
for a given data block:
for each data value of the select data:
determine bit pattern locations using the plurality of hash functions applied to the data value (col. 12 lines 41-44; col. 15 lines 12-16); and
examine the bit pattern locations in the bitmap representing the bloom filter for the given data block to determine whether the given data block is one of the particular ones that are immaterial in order to service the query for the select data (col. 12 lines 41-44; col. 15 lines 22-33).
Claims 8-16 are rejected under 35 U.S.C. 103 as being unpatentable over Gupta et al. (US 8,972,337 B1 )(‘Gupta’) in view of Meeramohideen Mohamed et al. (US 2023/0393783 A1) (‘Meeramohideen’).
With respect to claim 8, Gupta teaches a method, comprising:
generating a bloom filter for each data block storing data in a memory array, wherein each bloom filter is represented as a bitmap, wherein different patterns of set bits in the bitmap indicate data values not stored in the data block (col. 13 lines 46-49; col. 14 lines 18-24);
receiving an indication of a query for select data (col. 10 lines 34-56; col. 12 lines 25-27; col. 14 lines 45-48; col. 19 lines 64-67 ); and
in response to receiving the indication of the query, searching the bloom filter for each data block to determine particular ones of the data blocks that are immaterial in order to service the query for the select data (col. 10 lines 8-21; col. 12 lines 28-35, col. 14 lines 48-55).
Gupta does not explicitly teach storing the a bloom filter for each block in a register.
Meeramohideen teaches storing the a bloom filter for each block in a register (paragraphs 46-47 and 54-55).
It would have been obvious to a person having ordinary skill in the art prior to the effective filing date of the invention to have modified the bloom filter of Gupta to be stored in a register as taught by Meeramohideen to enable a register that is operated in accordance with a membership bloom filter such that, prior to adding data to the register, the memory device may determine whether the data is already included in the register to avoid filling the register with duplicate entries (Meeramohideen, paragraph 55). Further, it is an obvious design choice to store a bloom filter in a register.
With respect to claim 9, Gupta in view of Meeramohideen teaches wherein generating the bloom filter for each of the data blocks storing the data comprises:
determining a bloom filter size based, at least in part, on a number of possible data values stored in the data block (Gupta, col. 13 line 63 – col. 14 line 1);
generating the bitmap representing the bloom filter and comprising a plurality of bits corresponding to the bloom filter size (Gupta, col. 14 lines 7-10); and
populating the bitmap with the different patterns of set bits based, at least in part, on the data written in the data block to produce the bloom filter (Gupta, col. 14 lines 18-26),
wherein populating the bitmap comprises: applying a plurality of hash functions to each data value stored in the data block (Gupta, col. 14 lines 18-26); and
setting bits in locations of the bitmap corresponding to the output of the plurality of hash functions in order to generate the different patterns of set bits (Gupta, col. 14 lines 38-44).
With respect to claim 10, Gupta in view of Meeramohideen teaches wherein searching the bloom filter for each of the data blocks comprises:
for a given data block: for each data value of the select data: determining bit pattern locations using the plurality of hash functions applied to the data value (Gupta, col. 12 lines 41-44; col. 15 lines 12-16); and
examining the bit pattern locations in the bitmap representing the bloom filter for the given data block to determine whether the given data block is one of the particular ones that are immaterial in order to service the query for the select data (Gupta, col. 12 lines 41-44; col. 15 lines 22-33).
With respect to claim 11, Gupta in view of Meeramohideen teaches further comprising in response to receiving the indication of the query, reading the data from each data block storing data in order to service the query for the select data excepting the particular ones of the data blocks that are immaterial (Gupta, col. 12 lines 44-46).
With respect to claim 12, Gupta in view of Meeramohideen teaches further comprising for each of the data blocks, storing the bitmap representing the bloom filter in a respective entry in a data structure that stores information about the data blocks (Gupta, col. 4 line 64 – col. 5 line 16; col. 11 lines 12-28; claim 10).
With respect to claim 13, Gupta in view of Meeramohideen teaches further comprising: receiving additional data to be stored in one of the data blocks; and updating the bitmap representing the bloom filter for the one data block to include the additional data (Gupta, col. 5 lines 48-54; col. 11 lines 29-38).
With respect to claim 14, Gupta in view of Meeramohideen teaches further comprising:
detecting an indexing event (Gupta, col. 5 lines 54-61; col. 16 lines 33-34); and in response to detecting the indexing event:
for each data block, generating a new probabilistic data structure which indicates a data value not stored in the data block in place of the bloom filter (Gupta, col. 5 lines 61-65; col 16 line 64 – col. 17 line 1).
With respect to claim 15, Gupta in view of Meeramohideen teaches, wherein detecting the indexing event comprises: for each data block, evaluating the bitmap representing the bloom filter for the data block to determine a selectivity level for the bitmap (Gupta, col. 16 lines 38-45); and
determining that the selectivity level for at least some of the data blocks is below a selectivity efficiency threshold (Gupta, col. 16 lines 44-51).
With respect to claim 16, Gupta in view of Meeramohideen teaches further comprising: receiving a plurality of indications of a plurality of different queries (Gupta, col. 16 lines 52-57); and
wherein detecting the indexing event comprises analyzing the plurality of different queries to determine that a number of the queries are range queries and that the number of range queries exceeds a query type threshold (Gupta, col. 16 lines 57 – 63).
Response to Arguments
Applicant’s arguments with respect to claims 1-20 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ALICIA M WILLOUGHBY whose telephone number is (571)272-5599. The examiner can normally be reached 9-5:30, EST, M-F.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Ajay Bhatia can be reached at 571-272-3906. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/ALICIA M WILLOUGHBY/ Primary Examiner, Art Unit 2156