DETAILED ACTION
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 .
Response to Amendment
Applicant’s preliminary amendments filed 08 September 2025 and 25 September 2025 have been considered and entered. Accordingly, claims 21-40 are pending in this application. Claims 1-20 are cancelled; claims 21-40 are new.
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
Claims 21-40 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-20 of U.S. Patent No. 12,430,347. Although the claims at issue are not identical, they are not patentably distinct from each other because the claims of US Patent No. 12,430,347 anticipate or render obvious claims 21-40 of the instant application as demonstrated in the table below.
Instant Application
US Pat No. 12,430,347
21. An apparatus, comprising:
one or more memories comprising a plurality of rows and a plurality of columns of memory cells to store a plurality of bit vectors; and
circuitry coupled to the one or more memories, wherein the circuitry is to:
generate, based on a query from a requesting entity, a search key in an encoded format, wherein the search key comprises a bit vector comprising a plurality of set bits;
identify one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits;
identify one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors;
determine, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key; and
based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors.
1. An apparatus, comprising:
row and column addressable memory media having plurality of rows and columns of memory cells configured to be populated with binary data comprising a plurality of bit vectors;
circuitry connected to the memory media, wherein the circuitry is to:
receive a query from a requesting entity for matching an integer or floating-point number;
convert the integer or floating-point number to generate a search key having an encoded format comprising a bit vector having a predetermined number k set bits;
perform column-wise reads of the memory media on only k columns of the plurality of columns, each of the k columns associated with a respective one of the k set bits, to obtain a plurality of vertical bit vectors;
aggregate set bits in the plurality of vertical bit vectors on a row-wise basis;
based on the aggregation, calculate similarity scores for a plurality of rows;
determine, based on the similarity scores, rows, of the plurality rows, that store data matching the search key; and
return the rows that store data matching the search key to the requesting entity.
22. The apparatus of claim 21, wherein the query is indicative of an integer or a floating-point number, and wherein the circuitry is to generate the search key by:
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values; and
concatenating the encoded Hex values to form the bit vector comprising the plurality of set bits.
1. … receive a query from a requesting entity for matching an integer or floating-point number;
…
2. The apparatus of claim 1, wherein the circuitry generates the encoded format by:
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values; and
concatenating the encoded Hex values to form a bit vector having k set bits.
23. The apparatus of claim 22, wherein the m-of-n constant weight encoding comprises one of a 2-of-7 encoding or a 3-of-7 encoding.
3. The apparatus of claim 2, wherein the m-of-n constant weight encoding comprises 2-of-7 or 3-of-7 encoding.
24. The apparatus of claim 22, wherein:
the query is indicative of a floating point number comprising a mantissa portion and an exponent portion; and
the encoded Hex values comprise a first number of encoded Hex values for the mantissa portion and a second number of encoded Hex values for the exponent portion.
4. The apparatus of claim 2, wherein
the query is for a 32-bit floating point number comprising a mantissa portion and an exponent portion, and
wherein the encoded Hex values comprise 6 encoded Hex values for the mantissa portion and 2 encoded Hex values for the exponent portion.
25. The apparatus of claim 24, wherein the floating point number is one of a 32-bit floating point number or 64-bit floating point number.
5. The apparatus of claim 2, wherein the query is for a 64-bit floating point number comprising a mantissa portion and an exponent portion, and wherein the encoded Hex values comprise 13 encoded Hex values for the mantissa portion and 3 encoded Hex values for the exponent portion.
26. The apparatus of claim 22, wherein the circuitry is to determine the respective similarities between the respective bit vectors and the search key by calculating a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
6. The apparatus of claim 2, wherein the circuitry is configured to calculate a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
27. The apparatus of claim 21, wherein the circuitry comprises a vector function unit (VFU), and wherein the VFU is to aggregate the respective set bits of the one or more rows for determining the respective similarities between the respective bit vectors and the search key.
8. The apparatus of claim 1, wherein the circuitry connected to the memory media includes a vector function unit (VFU), and wherein the operations of aggregating set bits in the plurality of vertical bit vectors and calculating the similarity scores are performed by the VFU.
28. The apparatus of claim 21, wherein the one or more memories comprise one or more of stochastic associative memory (SAM) media or three-dimensional cross-point memory.
9. The apparatus of claim 1, wherein the memory media comprises stochastic associative memory (SAM) media.
In alternative:
10. The apparatus of claim 1, wherein the memory media comprises three-dimensional cross-point memory.
29. A computing system comprising:
a processor;
one or more memories comprising a plurality of rows and a plurality of columns of memory cells; and
circuitry coupled to the one or more memories and the processor, wherein the circuitry is to:
store, at respective rows of the one or more memories, a plurality of bit vectors;
generate, based on a query from a requesting entity, a search key in an encoded format, wherein the search key comprises a bit vector comprising a plurality of set bits;
identify one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits;
identify one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors;
determine, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key; and
based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors.
13. A computing system comprising a processor;
row and column addressable memory media having plurality of rows and columns of memory cells; and
circuitry connected to the memory media and operatively connected to the processor, wherein the computing system is configured to:
store data comprising a plurality of sparse binary bit vectors in respective rows in the memory media;
receive a query from a requesting entity for matching an integer or floating-point number;
convert the integer or floating-point number to generate a search key having an encoded format comprising a bit vector having a predetermined number k set bits;
perform column-wise reads of the memory media on only k columns of the plurality of columns, each of the k columns associated with a respective one of the k set bits, to obtain a plurality of vertical bit vectors;
aggregate set bits in the plurality of vertical bit vectors on a row-wise basis;
based on the aggregation, calculate similarity scores for a plurality of rows;
determine, based on the similarity scores, rows, of the plurality of rows, that store data matching the search key; and
return the rows that store data matching the search key to the requesting entity.
30. The system of claim 29, wherein the query is indicative of an integer or a floating-point number, and wherein the circuitry is to generate the search key by:
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values; and
concatenating the encoded Hex values to form the bit vector comprising the plurality of set bits.
13. … receive a query from a requesting entity for matching an integer or floating-point number;
…
14. The computing system of claim 13, wherein the search key is generated by:
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values; and
concatenating the encoded Hex values to form a bit vector having k set bits.
31. The system of claim 30, wherein the m-of-n constant weight encoding comprises one of a 2-of-7 encoding or a 3-of-7 encoding.
15. The computing system of claim 14, wherein the m-of-n constant weight encoding comprises one of 2-of-7 encoding and 3-of-7 encoding.
32. The system of claim 30, wherein:
the query is indicative of a floating point number comprising a mantissa portion and an exponent portion; and
the encoded Hex values comprise a first number of encoded Hex values for the mantissa portion and a second number of encoded Hex values for the exponent portion.
16. The computing system of claim 14, wherein the query is for one of a 32-bit floating point number composed of a 24-bit mantissa portion and an 8-bit exponent portion or a 64-bit floating point number composed of a 52-bit mantissa portion and a 12-bit exponent portion.
4. The apparatus of claim 2, wherein the query is for a 32-bit floating point number comprising a mantissa portion and an exponent portion, and wherein the encoded Hex values comprise 6 encoded Hex values for the mantissa portion and 2 encoded Hex values for the exponent portion.
Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to modify claim 16 to more explicitly use hex values like in claim 4. Said artisan would recognize that at apparatus in claim 4 is similar in scope to the system of claim 16 and that incorporating features between the two could be done with a reasonable expectation of success.
33. The system of claim 30, wherein the circuitry is to determine the respective similarities between the respective bit vectors and the search key by calculating a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
13. …
aggregate set bits in the plurality of vertical bit vectors on a row-wise basis;
based on the aggregation, calculate similarity scores for a plurality of rows;
determine, based on the similarity scores, rows, of the plurality of rows, that store data matching the search key; and
…
6. The apparatus of claim 2, wherein the circuitry is configured to calculate a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to modify claim 13 to more explicitly calculate the similarity score for a group of columns like in claim 6. Said artisan would recognize that at apparatus in claim 6 is similar in scope to the system of claim 13 and that incorporating features between the two could be done with a reasonable expectation of success.
34. The system of claim 29, wherein the circuitry comprises a vector function unit (VFU), and wherein the VFU is to aggregate the respective set bits of the one or more rows for determining the respective similarities between the respective bit vectors and the search key.
17. The computing system of claim 11, wherein the circuitry connected to the memory media includes a vector function unit (VFU), and the operations of aggregating set bits in the plurality of vertical bit vectors and calculating the similarity scores are performed by the VFU.
35. The system of claim 29, wherein the one or more memories comprise one or more of stochastic associative memory (SAM) media or three-dimensional cross-point memory.
18. The computing system of claim 11, wherein the memory media comprises stochastic associative memory (SAM) media.
36. A method comprising:
generating, based on a query from a requesting entity, a search key in an encoded format for searching one or more memories, wherein the search key comprises a bit vector comprising a plurality of set bits, and wherein the one or more memories comprise a plurality of rows and a plurality of columns of memory cells to store a plurality of bit vectors;
identifying one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits;
identifying one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors;
determining, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key; and
based on determining the respective similarities between the respective bit vectors and the search key, returning, to the requesting entity, one or more bit vectors of the respective bit vectors.
19. A method comprising:
receiving a query from a requesting entity for matching an integer or floating-point number previously written to a memory media having a plurality of rows and columns of memory cells using an encoded version of the integer or floating-point number using an m-of-n constant weight encoding;
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using the m-of-n constant weight encoding to generate encoded Hex values;
concatenating the encoded Hex values to form a search key comprising a bit vector having k set bits;
performing column-wise reads of the memory media on only k columns of the plurality of columns, each of the k columns associated with a respective one of the k set bits, to obtain a plurality of vertical bit vectors, each vertical bit vector associated with a respective column and comprising a sequence of binary data having bit positions associated with respective rows;
aggregating set bits in the plurality of vertical bit vectors on a row-wise basis;
based on the aggregation, calculating similarity scores for a plurality of rows;
determining, based on the similarity scores, rows, of the plurality of rows, that store data matching the search key; and
returning the rows that store data matching the search key to the requesting entity.
37. The method of claim 36, wherein the query is indicative of an integer or a floating-point number, and wherein generating the search key comprises:
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values; and
concatenating the encoded Hex values to form the bit vector comprising the plurality of set bits.
19. … receiving a query from a requesting entity for matching an integer or floating-point number
…
converting the integer or floating-point number to a Hexadecimal (Hex) format;
for each of a plurality of Hex values in the Hex format, encoding the Hex value using the m-of-n constant weight encoding to generate encoded Hex values;
concatenating the encoded Hex values to form a search key comprising a bit vector having k set bits;
38. The method of claim 37, wherein the m-of-n constant weight encoding comprises one of a 2-of-7 encoding or a 3-of-7 encoding.
21. The method of claim 20, wherein the m-of-n constant weight encoding comprises one of 2-of-7 encoding and 3-of-7 encoding.
39. The method of claim 37, wherein:
the query is indicative of a floating point number comprising a mantissa portion and an exponent portion; and
the encoded Hex values comprise a first number of encoded Hex values for the mantissa portion and a second number of encoded Hex values for the exponent portion.
22. The method of claim 20, wherein at least one floating point number comprises one of a 32-bit floating point number composed of a 24-bit mantissa portion and
an 8-bit exponent portion or a 64-bit floating point number composed of a 52-bit mantissa portion and a 12-bit exponent portion.
4. The apparatus of claim 2, wherein the query is for a 32-bit floating point number comprising a mantissa portion and an exponent portion, and wherein the encoded Hex values comprise 6 encoded Hex values for the mantissa portion and 2 encoded Hex values for the exponent portion.
Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to modify claim 16 to more explicitly use hex values like in claim 4. Said artisan would recognize that at apparatus in claim 4 is similar in scope to the system of claim 16 and that incorporating features between the two could be done with a reasonable expectation of success.
40. The method of claim 37, wherein determining the respective similarities between the respective bit vectors and the search key comprises calculating a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
19. …
aggregating set bits in the plurality of vertical bit vectors on a row-wise basis;
based on the aggregation, calculating similarity scores for a plurality of rows;
determining, based on the similarity scores, rows, of the plurality of rows, that store data matching the search key; and
…
6. The apparatus of claim 2, wherein the circuitry is configured to calculate a similarity score for a group of columns storing data corresponding to a single encoded Hex value.
Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to modify claim 13 to more explicitly calculate the similarity score for a group of columns like in claim 6. Said artisan would recognize that at apparatus in claim 6 is similar in scope to the system of claim 13 and that incorporating features between the two could be done with a reasonable expectation of success.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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 21, 27-29, and 34-36 are rejected under 35 U.S.C. 103 as being unpatentable over Sengupta et al. (US 2019/0220735 A1), hereinafter Sengupta, in view of Khan et al. (US 2019/0220202 A1), hereinafter Khan.
As to claim 21, Sengupta discloses an apparatus, comprising:
one or more memories comprising a plurality of rows and a plurality of columns of memory cells to store a plurality of bit vectors (Figs. 2, 6; [0017], [0028], Rows of bits forming bit vectors); and
circuitry coupled to the one or more memories ([0017]), wherein the circuitry is to:
generate, based on a query from a requesting entity, a search key in an encoded format, wherein the search key comprises a bit vector comprising a plurality of set bits (Figs. 4, 6-7; [0026], Lines 24-29, [0027]-[0031], A search key is obtained from a requesting entity, e.g. a from an application, to search a data set. The claim does not specify how the search key is generated based on the query. Thus, Sengupta obtaining a key from a request is interpreted as at least generating a copy of the key received, or otherwise generating the search key bit vector (e.g. 602, 702) used within the memory for comparisons. The search key is encoded as a bit vector having N bits to match the bit length of the rows. A predetermined number of bits are set representing particular positions having reference data to be searched.);
identify one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. To do so, the columns having the set bits, and not set bits, must be identified.);
identify one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. Rows are identified during this process to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). Thus, rows are identified as claimed in order to perform the actions based on the rows.);
determine, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key ([0027], [0029]; Rows are identified to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). The count representing a similarity.); and
based on determining the respective similarities between the respective bit vectors and the search key, identify and read matched, one or more bit vectors of the respective bit vectors (Figs. 6-7; [0015], [0027], [0029], [0031], A counter is maintained for each row for matching bits in the column vectors. The count is used to determine a hamming distance, i.e. similarity score, for the rows, and a closest match therefrom [0019].).
Sengupta does not explicitly disclose that matched one or more bit vectors are returned to the requesting entity.
However, Khan discloses receiving a request having a search key (Fig. 3; [0027]); based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors (Fig. 3; [0031], [0033], The matching data sets are output, e.g. to a requesting application).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to recognize that an application that produces requests to read from and/or write to memory locations (Sengupta, [0017], [0018]) would generally make a read request with the intention of having matching found data be read and returned for use by the application that initiated the request, as such practices are routine and well-known in the database and file access arts. As such, it would have been obvious to said artisan to modify Sengupta such that when the matching data is read in response to the read requests, that the data is also at least returned to the requesting application like is done with Khan. Thus, rendering obvious “based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors” as a whole. Said artisan would have been motivated to do so in order to enable applications to request and process desired data stored in the system of Sengupta, e.g. to better enable machine learning based on matches found (Sengupta, [0019], Lines 28-32; [0025]; Khan, Fig. 3; [0031], [0033]).
As to claim 29, Sengupta discloses a computing system comprising:
a processor (Fig 1.; [0017]);
one or more memories comprising a plurality of rows and a plurality of columns of memory cells (Figs. 2, 6; [0017], [0028], Rows of bits forming bit vectors); and
circuitry coupled to the one or more memories and the processor (Fig. 1; [0017]), wherein the circuitry is to:
store, at respective rows of the one or more memories, a plurality of bit vectors (Figs. 2, 6; [0017], [0028], Rows of bits forming bit vectors);
generate, based on a query from a requesting entity, a search key in an encoded format, wherein the search key comprises a bit vector comprising a plurality of set bits (Figs. 4, 6-7; [0026], Lines 24-29, [0027]-[0031], A search key is obtained from a requesting entity, e.g. a from an application, to search a data set. The claim does not specify how the search key is generated based on the query. Thus, Sengupta obtaining a key from a request is interpreted as at least generating a copy of the key received, or otherwise generating the search key bit vector (e.g. 602, 702) used within the memory for comparisons. The search key is encoded as a bit vector having N bits to match the bit length of the rows. A predetermined number of bits are set representing particular positions having reference data to be searched.);
identify one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. To do so, the columns having the set bits, and not set bits, must be identified.);
identify one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. Rows are identified during this process to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). Thus, rows are identified as claimed in order to perform the actions based on the rows.);
determine, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key ([0027], [0029]; Rows are identified to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). The count representing a similarity.); and
based on determining the respective similarities between the respective bit vectors and the search key, identify and read matched, one or more bit vectors of the respective bit vectors.
Sengupta does not explicitly disclose that matched one or more bit vectors are returned to the requesting entity.
However, Khan discloses receiving a request having a search key (Fig. 3; [0027]); based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors (Fig. 3; [0031], [0033], The matching data sets are output, e.g. to a requesting application).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to recognize that an application that produces requests to read from and/or write to memory locations (Sengupta, [0017], [0018]) would generally make a read request with the intention of having matching found data be read and returned for use by the application that initiated the request, as such practices are routine and well-known in the database and file access arts. As such, it would have been obvious to said artisan to modify Sengupta such that when the matching data is read in response to the read requests, that the data is also at least returned to the requesting application like is done with Khan. Thus, rendering obvious “based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors” as a whole. Said artisan would have been motivated to do so in order to enable applications to request and process desired data stored in the system of Sengupta, e.g. to better enable machine learning based on matches found (Sengupta, [0019], Lines 28-32; [0025]; Khan, Fig. 3; [0031], [0033]).
As to claim 36, Sengupta discloses a method comprising:
generating, based on a query from a requesting entity, a search key in an encoded format for searching one or more memories, wherein the search key comprises a bit vector comprising a plurality of set bits (Figs. 4, 6-7; [0026], Lines 24-29, [0027]-[0031], A search key is obtained from a requesting entity, e.g. a from an application, to search a data set. The claim does not specify how the search key is generated based on the query. Thus, Sengupta obtaining a key from a request is interpreted as at least generating a copy of the key received, or otherwise generating the search key bit vector (e.g. 602, 702) used within the memory for comparisons. The search key is encoded as a bit vector having N bits to match the bit length of the rows. A predetermined number of bits are set representing particular positions having reference data to be searched.), and wherein the one or more memories comprise a plurality of rows and a plurality of columns of memory cells to store a plurality of bit vectors (Figs. 2, 6; [0017], [0028], Rows of bits forming bit vectors);
identifying one or more columns, of the plurality of columns, that are associated with a respective one of the plurality of set bits (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. To do so, the columns having the set bits, and not set bits, must be identified.);
identifying one or more rows, of the plurality of rows, that store respective set bits of the plurality of set bits at the one or more columns by performing a column-wise read of the one or more memories on each of the one or more columns, wherein the one or more rows are associated with respective bit vectors of the plurality of bit vectors (Figs. 4, 6-7; [0027]-[0031], Columns are read in a column-wise manner, searching only the columns that correspond to positions in a search key having set bits. Rows are identified during this process to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). Thus, rows are identified as claimed in order to perform the actions based on the rows.);
determining, based on the respective set bits of the one or more rows, respective similarities between the respective bit vectors and the search key ([0027], [0029]; Rows are identified to identify specific bit values to compare to corresponding values in the key ([0027]), and a counter maintained to associate rows that is indicative of a number of matches ([0029]). The count representing a similarity.); and
based on determining the respective similarities between the respective bit vectors and the search key, identify and read matched, one or more bit vectors of the respective bit vectors (Figs. 6-7; [0015], [0027], [0029], [0031], A counter is maintained for each row for matching bits in the column vectors. The count is used to determine a hamming distance, i.e. similarity score, for the rows, and a closest match therefrom [0019].).
Sengupta does not explicitly disclose that matched one or more bit vectors are returned to the requesting entity.
However, Khan discloses receiving a request having a search key (Fig. 3; [0027]); based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors (Fig. 3; [0031], [0033], The matching data sets are output, e.g. to a requesting application).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to recognize that an application that produces requests to read from and/or write to memory locations (Sengupta, [0017], [0018]) would generally make a read request with the intention of having matching found data be read and returned for use by the application that initiated the request, as such practices are routine and well-known in the database and file access arts. As such, it would have been obvious to said artisan to modify Sengupta such that when the matching data is read in response to the read requests, that the data is also at least returned to the requesting application like is done with Khan. Thus, rendering obvious “based on determining the respective similarities between the respective bit vectors and the search key, return, to the requesting entity, one or more bit vectors of the respective bit vectors” as a whole. Said artisan would have been motivated to do so in order to enable applications to request and process desired data stored in the system of Sengupta, e.g. to better enable machine learning based on matches found (Sengupta, [0019], Lines 28-32; [0025]; Khan, Fig. 3; [0031], [0033]).
As to claims 27 and 34, the claims are rejected for the same reasons as claims 21 and 29 above. In addition, Sengupta, as previously modified with Khan, discloses wherein the circuitry comprises a vector function unit (VFU), and wherein the VFU is to aggregate the respective set bits of the one or more rows for determining the respective similarities between the respective bit vectors and the search key (Sengupta, Figs. 6-7; [0017], [0027], [0029], [0031], A counter is maintained for each row for matching bits in the column vectors. The count is used to determine a hamming distance, i.e. similarity score, for the rows, and a match therefrom. These operations are performed by a set of code executed by the circuitry designed to do so, and thus by an analogous VFU.).
As to claims 28 and 35, the claims are rejected for the same reasons as claims 21 and 29 above. In addition, Sengupta, as previously modified with Khan, discloses wherein the one or more memories comprise one or more of stochastic associative memory (SAM) media or three-dimensional cross-point memory (Sengupta, [0017], [0019], The addressable memory media enables a stochastic associated search, and thus is SAM media as claimed.).
Claims 22-26, 30-33, and 37-40 are rejected under 35 U.S.C. 103 as being unpatentable over Sengupta and Khan as applied above, and further in view of Mishra et al. (US 2019/0102391 A1), hereinafter Mishra, and Kuekes et al. (US 2007/0053378 A1), hereinafter Kuekes.
As to claims 22, 30, and 37, the claims are rejected for the same reasons as claims 21, 29, and 36 above. In addition, Sengupta, as previously modified with Khan, does not specifically disclose, but Mishra does disclose, wherein the query is indicative of an integer or a floating-point number (Mishra, [0006], [0042], [0046], [0049]; Cached integers and floating point numbers stored as LCF hexadecimals values can be queried from a column based store.), and wherein the circuitry is to generate the search key by:
converting the integer or floating-point number to a Hexadecimal (Hex) format (Mishra, [0010]-[0012], [0042], The floating point number is converted into hexadecimal bytes for the mantissa and also for the scale.);
for each of a plurality of Hex values in the Hex format, encoding the Hex value using an to generate encoded Hex values (Mishra, [0014], The Hex values are then encoded into hexadecimal byte values concatenated together to form an encoded version of the number for native operations. Together, these form an analogous vector having k set bits representing bits that must be set to represent the number in binary for each byte.); and
concatenating the encoded Hex values to form the bit vector comprising the plurality of set bits (Mishra, [0014], The Hex values are then encoded into hexadecimal byte values concatenated together to form an encoded version of the number for native operations. Together, these form an analogous vector having k set bits representing bits that must be set to represent the number in binary for each byte.).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to recognize that the type of data stored and searched for in Sengupta could be any type of data storable in a column based store, and as such to combine the teachings of Sengupta, as previously modified with Khan, with the teachings of Mishra by modifying Sengupta such that the data stored and searched for is numerical data like Mishra, and to store and search for the numerical data like is done by Mishra. Said artisan would have been motivated to do so in order to enable the system of Sengupta to query for data to efficiently perform low-computation operations on stored numbers (Mishra, [0013], [0049]).
Sengupta, as previously modified with Khan and Mishra, does not disclose encoding the Hex value using an m-of-n constant weight encoding to generate encoded Hex values.
However, Kuekes discloses encoding values using an m-of-n constant weight encoding to form encoded bit vectors (Fig. 7; [0062]-[0063], [0066], [0081]).
Before the effective filing date of the claimed invention, it would have been obvious to a person having ordinary skill in the art to combine the teachings of Sengupta, as previously modified with Khan and Mishra, with the teachings of Kuekes, by further modifying Sengupta such that m-of-n constant weight encoding is used to generate encoded the Hex value of Sengupta. Said artisan would have been motivated to do so in order to establish error control in the data stored by Sengupta and therefore improve robustness of its system (Kuekes, [0035], [0080]).
As to claims 23, 31, and 38, the claims are rejected for the same reasons as claims 22, 30, and 37 above. In addition, Sengupta, as previously modified with Khan, Mishra, and Kuekes, discloses wherein the m-of-n constant weight encoding comprises one of a 2-of-7 encoding or a 3-of-7 encoding (Kuekes, [0062], [0081], Any desired number of bits can be set as a fixed set of bits of a desired r bits. Such combinations are merely user preference and thus would obviously include 2-of-7 and 3-of-7 as desired.).
As to claims 24, 32, and 39, the claims are rejected for the same reasons as claims 22, 30, and 37 above. In addition, Sengupta, as previously modified with Khan, Mishra, and Kuekes, discloses the query is indicative of a floating point number comprising a mantissa portion and an exponent portion (Mishra, [0011], Each set of n decimal digits of the mantissa of a queried value is stored as a byte. An example shows 6 hex digits in 3 bytes, thus 24 bits. It would have been obvious to also specify the scale, i.e. an exponent, similarly for consistency, with the example pair “-1” being 2 Hex digits worth and thus another byte of 8 bits. Thus combined, a 32-bit number being queried. As such, matching would obviously require a 32-bit number query.); and
the encoded Hex values comprise a first number of encoded Hex values for the mantissa portion and a second number of encoded Hex values for the exponent portion (Mishra, [0011], Each set of n decimal digits of the mantissa of a queried value is stored as a byte. An example shows 6 hex digits in 3 bytes, thus 24 bits. It would have been obvious to also specify the scale, i.e. an exponent, similarly for consistency, with the example pair “-1” being 2 Hex digits worth and thus another byte of 8 bits. Thus combined, a 32-bit number being queried. As such, matching would obviously require a 32-bit number query.).
As to claim 25, the claim is rejected for the same reasons as claim 24 above. In addition, Sengupta, as previously modified with Khan, Mishra, and Kuekes, discloses wherein the floating point number is one of a 32-bit floating point number or 64-bit floating point number (Mishra, [0011], Each set of n decimal digits of the mantissa of a queried value is stored as a byte. An example shows 6 hex digits in 3 bytes, thus 24 bits. It would have been obvious to also specify the scale, i.e. an exponent, similarly for consistency, with the example pair “-1” being 2 Hex digits worth and thus another byte of 8 bits. Thus combined, a 32-bit number being queried. As such, matching would obviously require a 32-bit number query.).
As to claims 26, 33, and 40, the claims are rejected for the same reasons as claims 22, 30, and 37 above. In addition, Sengupta, as previously modified with Khan, Mishra, and Kuekes, discloses wherein the circuitry is to determine the respective similarities between the respective bit vectors and the search key by calculating a similarity score for a group of columns storing data corresponding to a single encoded Hex value (Sengupta, Figs. 6-7; [0015], [0027], [0029], [0031], A counter is maintained for each row for matching bits in the column vectors. The count is used to determine a hamming distance, i.e. similarity score, for the rows, and a closest match therefrom [0019]. Mishra, [0042], [0049]; The column data is stored as Hex values and compared. As combined, storing bit representation of the Hex values and comparing in a columnar manner as disclosed by Sengupta.).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Schwarz et al. (US 11,360,769 B1) discloses converting numbers to hexadecimal floating point numbers, wherein the hexadecimal floating point numbers may be stored in different formats including 32-bit and 64-bit formats (Col. 3, Lines 56-64; Col. 4, Lines 22-25), and wherein 64-bit floating point number comprising a mantissa portion and an exponent portion, and wherein the encoded Hex values comprise 13 encoded Hex values for the mantissa portion and values for the exponent portion (Col. 4, Lines 4-30, A 64-bit hexadecimal is encoded with 14 Hex values for the fraction (mantissa), and a characteristic of 7 bits for the exponent.).
Madduri et al. (US 10,224,954 B1) discloses conversion of floating to fixed point numbers with hexadecimal.
Hopcroft et al. (US 2016/0378805 A1) discloses identifying matching documents for a search query using a bit vector search index.
French et al. (US 5,649,181) discloses using bit vectors to search databases.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JAMES E RICHARDSON whose telephone number is (571)270-1917. The examiner can normally be reached Mon-Fri 9:00-5:30.
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, Sherief Badawi can be reached at (571) 272-9782. 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.
/James E Richardson/Primary Examiner, Art Unit 2169