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 .
Remarks
Claims 1-2, 6-10 are pending in the application, claims 3-5 and 11 are canceled, and claims 12-20 are withdrawn.
CLAIM INTERPRETATION
Claims in this application are not interpreted under 35 U.S.C. §112(f).
Claim Objections
Claims 1 and 6-10 are objected to because of the following informalities:
Claim 1 recites, “gaming or streaming operations” and “gaming/streaming operations”, which should be harmonized around one form for consistency.
Claim 10 recites, “the calculated CRC read data”, which as best understood by the Examiner in light of the specification should be amended to recite, “the calculated CRC read value”.
Claims 2 and 6-10 are objected to for failing to correct the deficiencies of a base claim from which they depend.
Claim Rejections - 35 USC § 112(b)
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.
Claims 7-8 are 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 pre-AIA the applicant regards as the invention.
Regarding claim 7:
Claim 7 recites, “wherein the controller does not generate error correction code (ECC).” During earlier prosecution, this limitation appears to have been intended to address scenarios in which a request corresponds to gaming or streaming operations, rather than an I/O operation, such that ECC would not be generated. However, paragraph [0007] of the specification states that for I/O operations, a standard ECC scheme is used, including the addition of cyclic redundancy check (CRC) data. Therefore, the specification suggests that ECC encompasses CRC, and a broadest reasonable interpretation (BRI) of ECC would include CRC.
Amended claim 1 recites that, for a second request corresponding to a gaming or streaming operation, data is written “without calculating CRC data”, while also reciting that, for a first request corresponding to an I/O operation, the controller “calculates CRC write data.” Because CRC falls within the scope of ECC under the BRI supported by the specification, claim 1 affirmatively requires the controller to perform an ECC-related operation.
Accordingly, claim 7’s limitation that the controller “does not generate ECC” conflicts with the requirements of claim 1, rendering the claims internally inconsistent. Additionally, the apparent original intent of claim 7 (to exclude CRC generation for the case where the request is for gaming or streaming operations) is already captured by claim 1 as amended.
Therefore, claim 7 recites a limitation that is inconsistent with claim 1, resulting in indefinite claim scope, while also appearing redundant in purpose. Therefore, the Examiner suggests deleting the limitation in claim 7. For the purposes of claim examination, the Examiner will interpret ECC as being something other than CRC to avoid the internal inconsistency.
Regarding claim 8:
Claim 1 recites, “the write request of the second memory” and “the translated CRC address range of the second memory”. However, there is insufficient antecedent basis for these limitations in the claim. For example, there is nothing tying the write request to being the first request to write first data to a second memory, there is nothing tying calculation of the CRC write data to determining the first write request is for IO operations, and there is nothing tying the translated CRC address range to being of the second memory. Accordingly, the scope of the claim cannot be determined and the claim is indefinite.
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-2, 6 and 10 are rejected under 35 U.S.C. 103 as being unpatentable over US Patent No. US 11,403,011 B1 (Gunda) in view of US Patent Application Publication No. US 2024/0329842 A1 (Pereira) in further view of US Patent Application Publication No. US 2021/0255801 A1 (Jang) in further view of US Patent Application Publication No. US 2018/0039541 A1 (Hahn) in further view of US Patent Application Publication No. US 2021/0334200 A1 (Xu) in further view of US Patent Application Publication No. US 2011/0084978 A1 (Schuette).
Regarding claim 1:
Gunda teaches a data storage device (storage device (102)), comprising: a first memory device (NVM (110)); and a controller (120) coupled to the memory device (coupled to NMV (110)), wherein the controller is configured to: configure table ranges and input/output ranges for storage (by disclosing that the storage controller configures ranges and allocations of the host memory buffer for use by different modules. The different modules include address mapping tables (table ranges), which are read from the L2P mapping table (120) in the NVM (110) in memory location (114). The modules also include read/write buffers (I/O ranges) (824) for writing data to the NVM (110) [Fig. 8] [Figs. 10A-B] [Col 7: lines 21-38] [Col 16: line 49 – Col 17: line 2] [Col 21: line 16 – Col 22: line 14]) receive a first request to write first data to a second memory or read first data from the second memory; wherein the first request is associated with either input/output operations, gaming/streaming operations, or table operations, and wherein the second memory is a host memory buffer (HMB); determine that the first request is for the IO operations rather than for the table operations; receive a second request to write second data; and write second data to the memory (by disclosing that the host device (104) sends read and write requests to the storage device (102) over interface (106) to the controller (123) [Fig. 1]. The controller can determine that the requests are to read or write data for the host (I/O) and appropriately handle the requests, which includes reading and writing data to the HMB as part of a read/write buffer (write first data to the second memory or read first data from the second memory) (102) as opposed to reading/writing to the SAT or iSAT (rather than for the table operations) [Col 7: line 58 – Col 8: line 9] [see Figs. 10A/10B] [Col 16: lines 49-67]. The memory device is part of the NVMe specification and the HMB is a highlighted feature of the NVMe protocol [Col 4: lines 33-43]).
Although Gunda teaches to allocate HMB space as a host read/write buffer, Gunda doesn’t explicitly disclose, but Pereira teaches that to use the HMB space as a read buffer - to store read data there for the host to access as part of a host read request (read I/O) (by teaching that part of the HMB (116) may be allocated as a read destination space (118) [Fig. 1A]. The read destination space (118) is reserved in the HMB for storing data read from the flash memory (126) as part of a read request [0027] [0042] [0055]. The data in the read destination space (118) may be error corrected in the read destination space (118) [0051] [0062-0063]).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the allocation of host read/write buffer space in the HMB as taught by Gunda to include storing the read data there in the HMB for the host application to access as part of a read request as taught by Pereira.
One of ordinary skill in the art would have been motivated to make this modification because it reduces latency, power consumption, and cost of the storage device as taught by Pereira in [0065-0066].
Although Gunda teaches to allocate HMB space as a host read/write buffer, Gunda doesn’t explicitly disclose, but Jang teaches that to use the HMB space as a write buffer - to store write commands and data there (write I/O) from the host before they are processed during a later idle period (by teaching that the HMB may be used to queue/cache (buffer) write requests when there is a mixed read/write I/O pattern so that read requests may be prioritized. Later, when the device is idle, the write requests may be flushed/processed and stored to non-volatile memory in the storage device [0027-0029] [0032]).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the allocation of host read/write buffer space in the HMB as taught by Gunda to include storing the write commands and data there in the HMB for the storage device to flush/process at a later time when the device is otherwise idle as taught by Jang.
One of ordinary skill in the art would have been motivated to make this modification because it may boost performance by up to 30% as taught by Jang in [0030].
Gunda in view of Pereira in further view of Jang do not explicitly disclose, but Hahn teaches, translate the first (and second) request into two address ranges, a logical block address (LBA) range (which is a single address range of the second memory) and an error code address range (by teaching that data stored in the HMB includes both the data bits (131) and the parity bits (133). In this way, data read from the HMB or stored within the HMB is divided into two address ranges, one associated with the user data (data bits) (i.e. associated with the LBA of the read/write request [0055]) (LBA range, single address range of the memory) and the other associated with the parity bits (133) (error code range) [Fig. 1]) either: calculate error code write data for a write request; write IO write data to the second memory; and write the calculated error code write data to the translated error code address range for the write request of the second memory; and write the second data to the single address range (by teaching that when data is written (and write data to the single address range) (134) into the HMB, the data may have a new error code calculated (calculate the error code) and stored by the controller as the parity bits (133) along with the user write data (131) (write IO write data to the memory) in the HMB [0030-0032] [0036] [Fig. 1]); or read an error code stored at the translated CRC address range and IO read data stored at the translated LBA range for a read request, and compare the error code read data to a calculated error code read value, wherein the calculated error code read value is calculated from the IO read data (by teaching that when data is read from the HMB, the data bits (131) may be read and the 1st parity bits (133), then the first parity bits (133) may be compared with 2nd parity bits (139) (calculated error code read value)); and determine whether to provide the IO read for the read request based on whether the error code read data is equal to the calculated error code read value (by disclosing that when data is read from the HMB, if 2nd parity bits (139) do not match the 1st parity bits (133), the data read from the HMB is not used in the operation, but if the bits match, the data is validated and used [0038-0039] [0041]. Hahn teaches that any error correction code may be used, which includes those that correct or detect errors in data [0028).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the read and write data stored in the HMB for host read and write requests as taught by Gunda in view of Pereira in further view of Jang to include being stored with a calculated parity code and have the parity code read and checked as part of a read operation from the HMB for the data so that if there is an uncorrectable error in the data the data is not used, and only validated data that has matching parity codes are read from the HMB and provided in response to the operation as taught by Hahn.
One of ordinary skill in the art would have been motivated to make this modification because it allows the controller to determine if the data read from the HMB has been corrupted or overwritten during the time the data was stored in the HMB as taught by Hahn in [0036].
Hahn does not explicitly disclose that the ECC code is a CRC code, but Xu teaches that an example of an error correcting code may be a CRC code (by teaching that CRC codes may be used to protect data in an HMB. When the read and calculated CRC codes do not match, the data that was read may be discarded [0045] [0053] [0071]).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the parity bits as taught by Hahn, which may be any sort of error detecting or correcting codes as taught by Hahn [Hahn, 0028] with the CRC bits, which are also parity bits, as taught by Xu. One of ordinary skill in the art would have been motivated to make this modification because it would have only required the combination of known elements according to known methods to yield predictable results. For example, Hahn teaches parity bits, but does not restrict the parity bits to any particular type of error correction or detection code. Then, Xu teaches that a type of error detection code may be CRC. Both Hahn and Xu use the codes to determine whether an error exists in a HMB. Accordingly, one of ordinary skill in the art could have combined the use of the parity bits as taught by Hahn by implementing the particular CRC code scheme as taught by Xu according to known methods and the results would have been predictable. Furthermore, in combination, each element would continue to perform the same function that it did separately. Accordingly, the claim would have been obvious to one of ordinary skill in the art.
Gunda in view of Pereira in further view of Jang in further view of Hahn in further view of Xu do not explicitly disclose, but Schuette teaches, that the first request may be for gaming/streaming operations and the controller performs, determining that the first request is for IO operations rather than for the gaming/streaming operations and determining that the second request is for gaming or streaming operations such that in response to determining the second request is for gaming or streaming operations, such that the second data written (to the single address range as taught by Hahn above does not include nonvolatile memory express (NVMe) protection information) is written without calculating CRC data for the second request (by teaching that a memory controller can determine if a request is for general purpose computing (IO) or for gaming operations [Fig. 1], in which case if the request is for gaming, the ECC is turned off (protection information – which is NVMe protection information as it is used in an NVMe memory device as taught in combination with Gunda), whereas if the request is for general purpose computing (IO), the ECC will be turned on [Fig. 1] [0017-0019]).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the access to the HBM with two address ranges, one to the user data and one to CRC data in response to read and write requests as taught by Gunda in view of Pereira in further view of Jang in further view of Hahn in further view of Xu to include determining whether the request is from a gaming application so that error correction or detection may be turned off (without calculating CRC data for the second request), such that only the data would be written (to a user data address range as taught by Hahn) without protection information (ECC or CRC) (i.e., no data would be written to an ECC or CRC address range as taught by Hahn in further view of Xu), or from regular IO so that error correction or detection may remain enabled (such that error correction or detection data (ECC or CRC) would be written to an error code address range alongside the user data written to the user data address range of the memory as taught by Hahn in further view of Xu) as taught by Schuette.
One of ordinary skill in the art would have been motivated to make this modification because for general purpose computing, error correction or detection is absolutely mandatory, but for gaming, it causes a high performance cost and is not necessary so it may be avoided as taught by Schuette in [0006-0008].
Regarding claim 2:
The data storage device of claim 1 is made obvious by Gunda in view of Pereira in further view of Jang in further view of Hahn in further view of Xu in further view of Schuette (Gunda-Pereira-Jang-Hahn-Xu-Schuette).
Gunda teaches that the storage device (102) that the host writes and reads data to/from is non-volatile flash memory [Col 6: lines 39-67]). Accordingly, storing the data in the HMB for host reads and writes to the storage device as taught by Gunda in view of Pereira in further view of Jang (as seen in the rejection for claim 1) include storing and managing data units in the HMB for non-volatile flash memory (flash management units). Therefore, the address translated for the CRC protection data added to the data stored in the HMB for host reads and writes to the non-volatile flash memory as taught by Gunda-Pereira-Jang-Hahn-Xu-Schuette (as seen in the rejection for claim 1) may be interpreted as a translated CRC address range for a flash management unit (wherein the translated CRC address range is for a flash management unit (FMU) CRC range).
Regarding claim 6:
The data storage device of claim 1 is made obvious by Gunda-Pereira-Jang-Hahn-Xu-Schuette.
Gunda further discloses, wherein the input/output operations comprise user data for write cache, user data for XOR recovery, or user data for read look ahead (that the I/O operations for the HMB may include I/O operations for data used in XOR recovery (1024), and data for a read and write buffer [Col 20: lines 38-42] [Col 16: line 49 – Col 17: line 2] [Col 21: lines 8-67] [Fig. 8] [Fig. 10A]).
Regarding claim 10:
The data storage device of claim 1 is made obvious by Gunda-Pereira-Jang-Hahn-Xu-Schuette.
Gunda-Pereira-Jang-Hahn-Xu-Schuette teaches, wherein the controller is configured to: read the first data from the second memory for a read request; and provide the first data if the calculated CRC read data equals the read CRC read data (through the analysis performed for claim 1).
Claim 7 is rejected under 35 U.S.C. 103 as being unpatentable over Gunda-Pereira-Jang-Hahn-Xu-Schuette in further view of US Patent Application Publication No. US 2020/0117814 A1 (Ito).
Regarding claim 7:
The data storage device of claim 1 is made obvious by Gunda-Pereira-Jang-Hahn-Xu-Schuette.
Gunda-Pereira-Jang-Hahn-Xu-Schuette teaches wherein the controller generates CRC parity bits.
Xu does not explicitly disclose, but Ito teaches does not generate error correction code (ECC) (by teaching that CRC is an alternative to be used instead of ECC [0043]). It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the use of ECC parity bits, such as taught by Hahn, to instead include CRC parity bits and not ECC as taught by Ito because it would have only required the simple substation of one known element for another to yield predictable results. For example, Hahn teaches using ECC parity bits, but does not teach using CRC parity bits, however, Ito teaches that you can use CRC schemes instead of ECC/EDC. One of ordinary skill in the art could have substituted the ECC for the CRC taught by Ito and the results would have been predictable. Furthermore, Ito recognizes ECC and CRC as alternatives and recognizes that one may be substituted for the other. Accordingly, the substitution would have been obvious to one of ordinary skill in the art.
Claims 8-9 are rejected under 35 U.S.C. 103 as being unpatentable over Gunda-Pereira-Jang-Hahn-Xu-Schuette in further view of US Patent No. US 6,901,551 B1 (Corrigan).
Regarding claim 8:
The data storage device of claim 1 is made obvious by Gunda-Pereira-Jang-Hahn-Xu-Schuette.
Gunda-Pereira-Jang-Hahn-Xu-Schuette do not explicitly disclose, but Corrigan teaches, wherein the controller is configured to determine whether the data includes metadata and protection information (by teaching that different address ranges are used to communicate whether the CRC data should be generated, whether to check the CRC error data (metadata), or whether it is a normal access that does not include the use of CRC [Fig. 2].
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the creation of CRC data for data stored in a memory to be dependent on determining the memory address range that is accessed to determine whether it already exists and needs to be read (including CRC error data (metadata)) or whether it does not exist and needs to be calculated and written as taught by Corrigan.
One of ordinary skill in the art would have been motivated to make this modification because it allows the CRC to be generated transparently on-the-fly without software overhead as taught by Corrigan in [Col 1: line 62 – Col 2: line 9].
Regarding claim 9:
The data storage device of claim 8 is made obvious by Gunda-Pereira-Jang-Hahn-Xu-Schuette in further view of Corrigan.
Gunda-Pereira-Jang-Hahn-Xu-Schuette do not explicitly disclose, but Corrigan teaches wherein the controller is configured to generate and inject protection information to the data when not included by a host (by teaching that when the address range indicates that the data should be protected (and the CRC is not provided by the host), the CRC data (protection information) should be generated (504 -> Yes) and stored with the write data [Fig. 5]).
It would have been obvious for one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the creation of CRC data for data stored in a memory to be dependent on determining the memory address range that is accessed to determine whether it already exists and needs to be read (including CRC error data (metadata)) or whether it does not exist and needs to be calculated and written as taught by Corrigan.
One of ordinary skill in the art would have been motivated to make this modification because it allows the CRC to be generated transparently on-the-fly without software overhead as taught by Corrigan in [Col 1: line 62 – Col 2: line 9].
Response to Amendments/Arguments
In response to the amendments to the claims, the objection regarding gaming/streaming operations and gaming or streaming operations is maintained, the other previous objections are withdrawn, and other new objections are made in response to the amendments.
In response to the amendments to the claims, the previous 35 USC §112(b) rejections have been withdrawn, however a new 35 USC §112(b) rejection has been made in response to the amendments to claims 7-8 as seen in the corresponding rejection section above.
In response to the amendments to the claims, the 35 USC §103 rejection has been updated to reflect the newly amended limitations.
Applicant argues that Gunda does not teach a plethora of limitations. However, Gunda was not relied upon in insolation to teach the claimed limitations. Accordingly, Applicant’s argument against the reference individually is not persuasive.
Applicant argues that Pereira does not teach a plethora of limitations. However, Pereira was not relied upon in insolation to teach the claimed limitations. Accordingly, Applicant’s argument against the reference individually is not persuasive.
Applicant argues that Jang does not teach a plethora of limitations. However, Jang was not relied upon in insolation to teach the claimed limitations. Accordingly, Applicant’s argument against the reference individually is not persuasive.
Applicant argues that Hahn in view of Xu does not teach selectively generating CRC for requests such that it is generated for I/O operations and not generated for gaming or streaming operations. Furthermore, Applicant argues that not using CRC data is different than never calculating CRC data, to which the Examiner does not disagree. However, Hahn in view of Xu were not relied upon to teach these limitations, but instead Schuette was. Accordingly, Applicant’s argument is not persuasive.
Applicant argues that Schuette is directed to generically disabling ECC to improve gaming performance. Applicant argues that this does not amount to “modifying how data is written into a host memory buffer”. However, the Examiner finds that one of ordinary skill in the art, applying teachings to “generically disable ECC to improve gaming performance” in the context of the prior combination of references that teach writing data into the host memory buffer, would be motivated to modify how data is written into the host memory buffer to selectively disable ECC to improve gaming performance (i.e., such as not generating it in the first place and not merely not using it – aka, disabling). Accordingly, the combination would have been obvious to one of ordinary skill in the art, and Applicant’s argument against the reference individually, is not persuasive when the rejection is based upon the combination of references. Applicant then argues that Schuette is silent with regard a plethora of other limitations of the claim. However, Schuette was not relied upon to teach most of these limitations, and was not relied upon in isolation to teach these limitations, as the rejection was based upon the combination of references. Accordingly, Applicant’s argument is not persuasive.
Applicant further provides arguments regarding the allowability of claim 4, which has been cancelled. Accordingly, Applicant’s argument is not persuasive.
Applicant’s arguments with respect to claims 7-9 appear to depend from Applicant’s arguments with respect to claim 1, and further argue that limitations are not taught by references which were not relied upon to teach those limitations, as those limitations were instead rejected with a combination of references. Accordingly, Applicant’s arguments are not persuasive as they depend from claim 1 and argue against the references individually.
As the claims stand rejected under 35 USC §103 and/or 35 USC §112(b), the claims are not indicated as allowable.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
US Patent Application Publication No. US 2017/0300246 A1 (Michaeli) – teaches to use CRC data to protect and correct an L2P map stored in a HMB [Fig. 3] [0053-0054] [0058-0059].
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 CURTIS JAMES KORTMAN whose telephone number is (303)297-4404. The examiner can normally be reached Monday through Friday 7:30 AM through 4:00 PM MT.
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, Reginald Bragdon can be reached at (571) 272-4204. 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.
/CURTIS JAMES KORTMAN/Primary Examiner, Art Unit 2139