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 § 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.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claim(s) 1-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Inbar et al., US PGPub 2018/0239547, in view of Palmer, US PGPub 2022/0197790, in view of Fleming et al., US PGPub 2004/0064672, further in view of Dragojevic et al., US PGPub 2018/0365141.
With respect to claim 1, Inbar teaches a device, including:
a processor (par. 54, controller 430);
a memory array comprising a plurality of memory devices (pars. 44-45, the controller coupled to the non-volatile memory 404 and the volatile memory 444), wherein the plurality of memory devices include a plurality of control table sets comprising but not limited to logical to physical address map data (pars. 144 and 148-149, the first copy of the control table and the second copy of the control table comprising a plurality of control table sets, the control tables containing pointers to current parts of an L2P table 1404, portions of an L2P table 1340, and a list of free blocks available for new writes, 1408);
Inbar fails to teach the control table set management logic of the claim.
Palmer teaches:
a control table set management logic configured to:
generate one or more subsets of control table sets by dividing the plurality of control table sets, wherein each of the one or more subsets of control table sets include at least one block configured to store a set of data entries (par. 39, the L2P table divided into multiple subsets);
upon receiving a data entry, determine a subset of control table sets of the generated one or more subsets of control table sets associated with the data entry (par. 45, when writing data, the applicable subset is identified);
store the data entry in the determined subset of control table sets (par. 45, when writing data, the applicable subset is identified and updated); and
Inbar and Palmer fail to teach to determine whether a subset of control table sets that the entry belongs to is full or has a vacancy and upon a determination that the subset of control table sets that the entry belongs to has no vacancy, allocating an additional block to the subset of control table sets and linking the additional block and the full block via a pointer
Fleming teaches:
determine whether a subset of control table sets that the entry belongs to is full or has a vacancy (par. 33, determining if the alias table has space for the entry);
upon a determination that a block within the subset of control table sets that the entry belongs to has no vacancy, identifying the block as a full block, increasing the storage capacity of the determined subset of control table sets by allocating an additional block to the subset of control table sets (par. 34, adding an entry to the software page frame table from the pool of fixed pages).
Inbar, Palmer, and Fleming fail to teach linking the additional block and the full block via a pointer. Dragojevic teaches:
linking the additional block and the full block via a pointer (pars. 61-66. When a new node N5 is allocated to the active page table, the node N2 is made to point to N5 and the new node N5 points to node N3. Thus the new node is linked in the control table set via pointer).
It would have been obvious to one of ordinary skill in the art, having the teachings of Inbar and Palmer before him before the earliest effective filing date, to modify the memory device of Inbar with the memory device of Palmer, as dividing the control table into subsets avoids taking a large amount of time to perform steps like identifying valid data during a garbage collection operation, as taught by Palmer in par. 39. Further, it would have been obvious to one of ordinary skill in the art, also having the teachings of Fleming before him before the earliest effective filing date, to modify the memory device of Inbar and Palmer with the memory device of Fleming, in order to add new entries to page tables to avoid page faults, as taught by Fleming in par. 2. Finally, it would have been obvious also having the teachings of Dragojevic before him before the earliest effective filing date, to modify the memory device of Inbar, Palmer and Fleming with the memory device of Dragojevic, in order to use a linked list as the particular data structure to implement a control table, as a linked list allows for efficient recovery from power failure, as taught by Dragojevic in par. 70.
With respect to claim 2, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 1, wherein to store the data entry in the determined subset of control table sets, the control table set management logic is configured to: perform a first read operation on the determined subset of control table sets sequentially to identify the vacant position to store the data entry; and store the data entry in the vacant position of the determined subset of control table sets (pars. 40-42, where the active page table is traversed and a page is inserted into the active page table).
With respect to claim 3, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Palmer teaches the device of claim 1, wherein the at least one block and the additional block have a same size (par. 51, the subsets 215 have a fixed size).
With respect to claim 4, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 1, wherein the control table set logic is configured to apply a hashing function to the data entry to determine the subset of control table sets associated with the data entry (par. 83, the hash table).
With respect to claim 5, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Palmer teaches the device of claim 1, wherein each of the plurality of control table sets is configured to store logical-to-physical map data entries (par. 39, where L2P stands for logical-to-physical).
With respect to claim 6, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Palmer teaches the device of claim 1, wherein each of the one or more subsets of control table sets is configured to store a distinct range of logical-to-physical address map data entries (pars. 44-45, each subset has a range of logical addresses).
With respect to claim 7, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Palmer teaches the device of claim 1, wherein the control table set logic is configured to: determine a number of data entries in the plurality of control table sets; determine a number of the one or more subsets of control table sets; and calculate a size of each of the at least one block based on the determined number of data entries in the plurality of control table sets and the determined number of the one or more subsets of control table sets (par. 49, the sizes of the subsets are based on the quantity of subsets).
With respect to claim 8, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 1, wherein the control table set logic is configured to: perform a second read operation on the at least one block and the additional block of the one or more subsets of control table sets, wherein the second read operation is performed from a last block towards a first block of the one or more subsets of control table sets; and identify a last occurrence of each data entry in the one or more subsets of control table sets (pars. 89-92 and the associated fig. 4, where the active page table is searched and the last allocated epoch is identified and stored in metadata).
With respect to claim 9, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 8, wherein the second read operation is performed sequentially (par. 61, where the data structure is a linked list, which is searched sequentially starting at the head H).
With respect to claim 10, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 8, wherein the control table set logic is configured to determine all occurrences of each data entry in the one or more subsets of control table sets (par. 58, the steps 304-314 are repeated for all pages in the active page table).
With respect to claim 11, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the device of claim 1, wherein each of the one or more subsets of control table sets is initially configured with one block (par. 56, the head points to the first node in the list, and nodes are added to the list from thereon).
With respect to claim 12, Inbar teaches a method for managing control table sets, the method comprising:
generating one or more subsets of control table sets by dividing the one or more subsets of control table sets, wherein each of the one or more subsets of control table sets includes, but is not limited to logical to physical address map data, and at least one block configured to store a set of data entries (pars. 144 and 148-149, the first copy of the control table and the second copy of the control table comprising a plurality of control table sets, the control tables containing pointers to current parts of an L2P table 1404, portions of an L2P table 1340, and a list of free blocks available for new writes, 1408);
Inbar fails to teach dividing the control table sets into subsets in the manner done by the claim.
Palmer teaches:
upon receiving a data entry, determining a subset of control table sets of the generated one or more subsets of control table sets associated with the data entry (par. 45, when writing data, the applicable subset is identified);
storing the data entry in the determined subset of control table sets (par. 45, when writing data, the applicable subset is identified and updated); and
Inbar and Palmer fail to teach determining whether a subset of control table sets that the entry belongs to is full or has a vacancy and upon a determination that the subset of control table sets that the entry belongs to has no vacancy, allocating an additional block to the subset of control table sets and linking the additional block and a full block via a pointer.
Fleming teaches:
determining whether a subset of control table sets that the entry belongs to is full or has a vacancy (par. 33, determining if the alias table has space for the entry);
upon a determination that a block within the subset of control table sets that the entry belongs to has no vacancy, identifying the block as a full block, increasing the storage capacity of the determined subset of control table sets by allocating an additional block to the subset of control table sets (par. 34, adding an entry to the software page frame table from the pool of fixed pages. Note that this is a contingent limitation based on the condition “upon a determination that a block within the subset of control table sets that the entry belongs to has no vacancy,” and is not required to occur).
Inbar, Palmer, and Fleming fail to teach linking the additional block and the full block via a pointer. Dragojevic teaches:
linking the additional block and the full block via a pointer (pars. 61-66. When a new node N5 is allocated to the active page table, the node N2 is made to point to N5 and the new node N5 points to node N3. Thus the new node is linked in the control table set via pointer. Note that this is a contingent limitation based on the condition “upon a determination that a block within the subset of control table sets that the entry belongs to has no vacancy,” and is not required to occur).
It would have been obvious to one of ordinary skill in the art, having the teachings of Inbar and Palmer before him before the earliest effective filing date, to modify the memory device of Inbar with the memory device of Palmer, as dividing the control table into subsets avoids taking a large amount of time to perform steps like identifying valid data during a garbage collection operation, as taught by Palmer in par. 39. Further, it would have been obvious to one of ordinary skill in the art, also having the teachings of Fleming before him before the earliest effective filing date, to modify the memory device of Inbar and Palmer with the memory device of Fleming, in order to add new entries to page tables to avoid page faults, as taught by Fleming in par. 2. Finally, it would have been obvious also having the teachings of Dragojevic before him before the earliest effective filing date, to modify the memory device of Inbar, Palmer and Fleming with the memory device of Dragojevic, in order to use a linked list as the particular data structure to implement a control table, as a linked list allows for efficient recovery from power failure, as taught by Dragojevic in par. 70.
With respect to claim 13, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the method of claim 12, wherein storing the data entry in the determined subset of control table sets comprises: performing a first read operation on the determined subset of control table sets sequentially to identify the vacant position to store the data entry; and storing the data entry in the vacant position of the determined subset of control table sets (pars. 40-42, where the active page table is traversed and a page is inserted into the active page table).
With respect to claim 14, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the method of claim 12, further comprising applying a hashing function to the data entry to determine the subset of control table sets associated with the data entry (par. 83, the hash table).
With respect to claim 15, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Palmer teaches the method of claim 12, further comprising: determining a number of data entries in the plurality of control table sets; determining a number of the one or more subsets of control table sets; and calculating a size of each of the at least one block based on the determined number of data entries in the plurality of control table sets and the determined number of the one or more subsets of control table sets (par. 49, the sizes of the subsets are based on the quantity of subsets).
With respect to claim 16, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the method of claim 12, further comprising: performing a second read operation on the at least one block and the additional block of the one or more subsets of control table sets, wherein the second read operation is performed from a last block towards a first block of the one or more subsets of control table sets; and identifying a last occurrence of each data entry in the one or more subsets of control table sets (pars. 89-92 and the associated fig. 4, where the active page table is searched and the last allocated epoch is identified and stored in metadata).
With respect to claim 17, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the method of claim 16, wherein the second reading operation is performed sequentially (par. 61, where the data structure is a linked list, which is searched sequentially starting at the head H).
With respect to claim 18, Inbar, Palmer, Fleming and Dragojevic teach all limitations of the parent claim. Dragojevic teaches the method of claim 16, further comprising determining all occurrences of each data entry in the one or more subsets of control table sets (par. 58, the steps 304-314 are repeated for all pages in the active page table).
With respect to claim 19, Inbar, Palmer, Fleming and Dragojevic teach al limitations of the parent claim. Palmer teaches the method of claim 12, wherein each of the one or more subsets of control table sets is configured to store a distinct range of logical-to-physical address map data entries (pars. 44-45, each subset has a range of logical addresses).
With respect to claim 20, Inbar teaches a storage device, comprising:
a processor (par. 54, controller 430);
a memory array communicatively coupled to the processor, the memory array comprising a plurality of memory devices (pars. 44-45, the controller coupled to the non-volatile memory 404 and the volatile memory 444), wherein the plurality of memory devices include a plurality of control table sets comprising but limited to logical to physical address map data (pars. 144 and 148-149, the first copy of the control table and the second copy of the control table comprising a plurality of control table sets, the control tables containing pointers to current parts of an L2P table 1404, portions of an L2P table 1340, and a list of free blocks available for new writes, 1408);
Inbar fails to teach the control table set management logic of the claim.
Palmer teaches:
a control table set management logic configured to:
generate one or more subsets of control table sets based on the plurality of control table sets, wherein each of the one or more subsets of control table sets has a same size (par. 39, the L2P table divided into multiple subsets, and par. 51, the subsets have a fixed size);
assign a range of data entries to each of the generated one or more subsets of control table sets, wherein each of the range of data entries of each of the generated one or more subsets of control table sets is distinct from other range of data entries of other generated subsets of control table sets (pars. 44-45, each subset has a distinct range of logical addresses); and
in response to receiving a data entry, store the data entry in a corresponding subset of control table set sets (par. 45, when writing data, the applicable subset is identified and updated).
Inbar and Palmer fail to upon a determination that the subset of control table sets that the entry belongs to has no vacancy, allocating an additional block to the subset of control table sets and linking the additional block via a pointer.
Fleming teaches:
upon a determination that a block within the subset of control table sets that the entry belongs to has no vacancy, identifying the block as a full block, increasing the storage capacity of the determined subset of control table sets by allocating an additional block to the subset of control table sets (pars. 33-34, adding an entry to the software page frame table from the pool of fixed pages).
Inbar, Palmer, and Fleming fail to teach linking the additional block and the full block via a pointer. Dragojevic teaches:
linking the additional block and the full block via a pointer (pars. 61-66. When a new node N5 is allocated to the active page table, the node N2 is made to point to N5 and the new node N5 points to node N3. Thus the new node is linked in the control table set via pointer).
It would have been obvious to one of ordinary skill in the art, having the teachings of Inbar and Palmer before him before the earliest effective filing date, to modify the memory device of Inbar with the memory device of Palmer, as dividing the control table into subsets avoids taking a large amount of time to perform steps like identifying valid data during a garbage collection operation, as taught by Palmer in par. 39. Further, it would have been obvious to one of ordinary skill in the art, also having the teachings of Fleming before him before the earliest effective filing date, to modify the memory device of Inbar and Palmer with the memory device of Fleming, in order to add new entries to page tables to avoid page faults, as taught by Fleming in par. 2. Finally, it would have been obvious also having the teachings of Dragojevic before him before the earliest effective filing date, to modify the memory device of Inbar, Palmer and Fleming with the memory device of Dragojevic, in order to use a linked list as the particular data structure to implement a control table, as a linked list allows for efficient recovery from power failure, as taught by Dragojevic in par. 70.
Response to Arguments
Applicant's arguments filed 07/09/2025 have been fully considered but they are not persuasive. With respect to Applicant’s arguments on pages 7-8, regarding the rejection under 35 USC 112, the examiner has withdrawn this rejection due to the claim amendments made. Applicant’s arguments on pages 8-9 are directed towards Dragojevic failing to teach “increasing the storage capacity of the determined subset of control table sets by allocating an additional block” when a block within that subset is full. These arguments are moot, as the new Fleming reference has been supplied to teach this limitation.
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 RYAN DARE whose telephone number is (571)272-4069. The examiner can normally be reached M-F 9:00-5:00.
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, Kenneth Lo can be reached on 571-272-9774. 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.
/RYAN DARE/Examiner, Art Unit 2136 /KENNETH M LO/Supervisory Patent Examiner, Art Unit 2136