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
This office action is in response to the amendment filed on 3/21/2025.
Claims 1-3, 5-7, 9-17, and 19-23 are presented for further examination.
Response to Arguments
Applicant's argument concerning claim limitation is not taught in the cited prior art has been fully considered but moot in view of the new ground(s) of rejection as set forth below. It is noted that Applicant's arguments are directed towards limitations newly added via amendments.
Claim Rejections - 35 USC § 103
In the event a determination of the status of the application as subject to AIA 35 U.S.C. 102, 103, and 112 (or as subject to pre-AIA 35 U.S.C. 102, 103, and 112) is incorrect, any correction of the statutory basis for a rejection will not be considered a new ground of rejection if the prior art relied upon and/or 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 set forth in Graham v. John Deere Co., 383 U.S. 1, 148 USPQ 459 (1966), that are applied 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.
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
Claims 1-3, 5-7, 9-17, 19 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Ramanujan et al. (US 2014/0304475; hereinafter Ramanujan) in view of Li et al. (US 2019/0138448; hereinafter Li).
Regarding independent claims 1, 10 and 15, taking claim 1 as exemplary analysis, Ramanujan teaches A semiconductor apparatus (Fig. 4, semiconductor apparatus; Fig. 1, storage device with two-level memory hierarchy; [0291], a non-transitory computer readable medium) comprising: a host interface implemented at least partly in one or more of configurable or fixed-functionality hardware logic, the host interface to receive a request from a host application to allocate memory address space for a buffer (Fig. 7A, Software 750 interface with MSC controller 512; [0219], Software 750 identifies a specific portion of the cache 740 to be de-activated or re-activated; [0066], the cache memories 101 a-109 may operate transparently to the software …the cores may also support execution of instructions to allow software to provide some control (configuration, policies, hints, etc.) to some or all of the cache(s)); and a memory controller to: map, via a memory controller, cached data allocate the memory address space in a dynamic random access memory that acts as a transparent cache for a persistent memory, including to map data in the buffer to an original address of copied data in a persistent memory, wherein the memory controller includes a two level memory controller mode that uses the dynamic random access memory as a transparent cache for the persistent memory (
Figs. 7A, 7B; Fig. 5; [0152], allows the near memory address to be directly extracted from the system memory address; [0091], NVRAM 142 represents the introduction of a second-level system memory (e.g., the system memory may be viewed as having a first level system memory comprising near memory as cache 150B (part of the DRAM device 340) and a second level system memory comprising far memory (FM) 151B (part of the NVRAM 142); [0176], a two-level memory hierarchy may be used for introducing fast non-volatile memory such as PCM as system memory while using a very large DRAM-based near memory; [0214], a two-level memory hierarchy with a MSC which includes a flush engine that (1) evicts dirty cache lines and invalidate them in a specified manner (although the underlying principles of the invention may be used in the context of any multi-level memory hierarchy); (2) monitors cache usage dynamically; (3) allows software to specify a power management policy; and (4) de-activates specified portions of the volatile-memory based MSC);
track, via the memory controller, whether the cached data in the dynamic random access memory is valid or track the memory address space as invalid data with respect to the copied data in the persistent memory (Fig. 5A-5E; [0149]-[0152], a 3-Byte (24-bit) tag 522 is used with the bit assignments illustrated in FIG. 5D…bits 21-22 indicate the current state of the cache line (e.g., 00=clean; 01=dirty; 10 and 11=unused); and bit 23 indicates whether the cache line is valid (e.g., 1=valid; 0=invalid); [0153], a dirty line tag cache that maintains the tags of recently-accessed near memory addresses (NMAs). Since many writes target recently accessed addresses, a reasonably small tag cache can get an effective hit rate to filter most of the reads prior to a write)
Ramanujan teaches write back dirty and valid data to the persistent memory when the cached data is tracked as invalid data, and Ramanujan teaches evict, via the memory controller, the cached data from the dynamic random access memory (([0192], A flush engine to evict dirty lines to PCM and invalidate in specified regions of the near memory address space);
Ramanujan does not teach bypass a writeback of dirty but invalid data.
In an analogous art of cache management, Li teaches
in response to an indication via the host interface that the data in the buffer is invalid (
[0039], FIG. 6 illustrates an embodiment of a read-with-invalidate (RWI) command 600 triggered by the driver 121 to invalidate data in cache lines stored in the cache memory 114. The RWI command 600 includes an RWI opcode 602 identifying an RWI command to the 2LM controller 110, a target address 604 having data to read and invalidate, and a portion 606 of the target address 604 to read and invalidate...user defined bus signals for a cache operation may use one of the encoding of the signals to identify the cache operation as an RWI command. When the driver 121 sends a read command onto the bus 112 {host interface}, the driver 121 may also assert the RWI signal together with the transaction; [0040], FIG. 7 illustrates an embodiment of operations performed by the 2LM controller 110 to process a read-with-invalidate (RWI) command 600 received from one of the components 104, 106, 108 that is reading locally used and modified data for the last time that is now ready to be discarded without needing to be further saved); and
evict, via the memory controller, the cached data from the dynamic random access memory ([0021], The 2LM controller 110, also on the SoC 102, stores cache lines for addresses in a cache memory 114, also referred to as a near memory or first memory. Modified data in cache lines evicted from the cache memory 114 to make room for new data are copied to a non-volatile memory 116); and
bypass, via the memory controller, a bypass a writeback to the persistent memory of the cached data that has been evicted to the persistent in the buffer in response to an eviction of the buffer from the dynamic random access memory when the cached data memory address space is tracked as invalid data (
[0022], This invalidation of the portion of the data prevents the data in the cache line from being copied to the non-volatile memory 116. In this way, the 2LM controller 110 frees a cache line in the cache memory 114 to make room for new data without having to flush the modified cache line to the non-volatile (far) memory 116;
[0049], With the embodiment of FIG. 8, a cache line having all portions invalidated, such as through an RWI command 600 or other process, that also has modified/dirty data, is removed from cache, such as when selected to cache data for another address according to an associative caching algorithm, without copying to the non-volatile memory 116. The modified data for the cache line does not need to be copied and preserved in the non-volatile memory 116 because all portions of the cache line have been invalidated by the process that stored the data in the cache memory 114 for local use during processing operations. Discarding modified data without copying to the non-volatile memory 116, which will not be needed by future processes, minimizes writing and reading operations to the non-volatile memory 116 to avoid wear and extend the life of the non-volatile memory 116, which is particularly important for non-volatile memory devices that experience usage wear leveling).
It would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention was made, with the teachings of Ramanujan and Li before them, to incorporate Li’s discarding modified data without copying to the non-volatile memory 116, which will not be needed by future processes for the motivation of minimizes writing and reading operations to the non-volatile memory to avoid wear and extend the life of the non-volatile memory, which is particularly important for non-volatile memory devices that experience usage wear leveling (Li, [0016], [0049]).
Regarding claim(s) 2, 11 and 16, the combination of Ramanujan and Li further teaches the memory controller further to: receive a free buffer command from the host application indicating that the data in the buffer is invalid data (Ramanujan, [0263], software 850 can command the flush engine 701 to invalidate “zero” or “discarded” pages from the MSC 510; Li, [0022], Upon reading such local data for a last time, the component 104, 106, 108 hardware may issue a read-with-invalidate (RWI) command to the cache line or a portion of the cache line having the data being read for the last time to cause that portion of the data in the cache line to be invalidated after being read), and
wherein the memory controller is to track the memory address space as invalid data [[is]] based on the received free buffer command (Li, [0022], The 2LM controller 110 includes a tag table 200 having information on addresses of data stored in cache lines in the cache memory 114, e.g., address, valid bit, dirty bit, etc., and a read-with-invalidate (RWI) table 300 having entries for some or all of the cache lines in the cache memory 114 that indicates whether portions of data in a cache line have valid data...Upon reading such local data for a last time, the component 104, 106, 108 hardware may issue a read-with-invalidate (RWI) command to the cache line or a portion of the cache line having the data being read for the last time to cause that portion of the data in the cache line to be invalidated after being read...This invalidation of the portion of the data prevents the data in the cache line from being copied to the non-volatile memory 116).
Regarding claim(s) 3, the combination of Ramanujan and Li further teaches wherein the operation to track the cached data as valid or invalid includes an operation to mark, via the memory controller, the cached data as valid or memory address space as invalid and comprises the memory controller to mark the memory address space as dirty or clean, wherein the operation to bypass the writeback of the cached data is performed is in response to the cached data is memory address space being marked as dirty but invalid (Li, [0022], The 2LM controller 110 includes a tag table 200 having information on addresses of data stored in cache lines in the cache memory 114, e.g., address, valid bit, dirty bit, etc., and a read-with-invalidate (RWI) table 300 having entries for some or all of the cache lines in the cache memory 114 that indicates whether portions of data in a cache line have valid data...Upon reading such local data for a last time, the component 104, 106, 108 hardware may issue a read-with-invalidate (RWI) command to the cache line or a portion of the cache line having the data being read for the last time to cause that portion of the data in the cache line to be invalidated after being read...This invalidation of the portion of the data prevents the data in the cache line from being copied to the non-volatile memory 116).
Regarding claim(s) 5, the combination of Ramanujan and Li further teaches wherein the operation memory controller is to mark the cached data memory address space as dirty but invalid [[is]] based on one or more of the following events: a deallocation of data during an iteration of machine learning training, upon a system shutdown, and a closing of the active host application (Ramanujan, [0264]-[0265], when the powerfail detector unit 830 detects a power fail state and generates a warning to the flush engine 701, the following sequence occurs: the flush engine 701 is triggered to start sequentially traversing the MSC 510 for dirty lines;
Li, [0049], a cache line having all portions invalidated, such as through an RWI command 600 or other process, that also has modified/dirty data, is removed from cache, such as when selected to cache data for another address according to an associative caching algorithm, without copying to the non-volatile memory 116. The modified data {dirty data} for the cache line does not need to be copied and preserved in the non-volatile memory 116 because all portions of the cache line have been invalidated by the process that stored the data in the cache memory 114 for local use during processing operations).
Regarding claim(s) 12 and 17, the combination of Ramanujan and Li further teaches wherein … (Claim recites substantially the same limitations as in claims 3 and 5, and is therefore rejected for the same reasons set forth in the analysis of claims 3 and 5).
Regarding claim(s) 6 and 13, the combination of Ramanujan and Li further teaches perform writeback to the persistent memory of the data in the buffer in response to an eviction of the buffer from the dynamic random access memory when the memory address space is marked as dirty and valid data (Li, [0045], if (at block 806) not all portion indicators 506 1, 506 2 . . . 506 n in the tag 500 i for the selected cache line having modified data are set to invalid, then the cache line, including portions of data marked invalid, is copied (at block 812) to the non-volatile memory 116. If (at block 804) the selected cache line does not have modified/dirty data, then the data for the target address is written (at block 814) to the selected cache line in the cache memory 114).
Regarding claim(s) 7 and 19, the combination of Ramanujan and Li further teaches wherein the memory address space marked as dirty stores data including one or more of: duplicate data, outdated data, insecure data, incorrect data, incomplete data, and inconsistent data (Ramanujan, [0279], “dirty”—i.e., a modified state that is no longer reflected in the copy stored in PCM 530; Li, [0032], a dirty bit 204 indicating whether the cache line corresponding to the tag entry 200 i has modified data; and a valid bit 206 indicating whether the cache line has valid data.).
Regarding claim(s) 9, and 20, in view of Li, Ramanujan further teaches wherein the persistent memory extends the dynamic random access memory, wherein the dynamic random access memory is system visible, and wherein the persistent memory has a write bandwidth that is lower than and a storage capacity that is larger than the dynamic random access memory ([0063], The near memory 121 may be coupled in communicate with the processor 100 using a single or multiple high bandwidth links, such as DDR or other transactional high bandwidth links; [0143], For a DRAM-based MSC, the size may be set to a tenth the size of the workload memory footprint or the PCM far memory 530 size. Such an MSC is very large compared to conventional caches found in current processor/system architectures; [0115]; [0176], a two-level memory hierarchy may be used for introducing fast non-volatile memory such as PCM as system memory while using a very large DRAM-based near memory. The near memory may be used as a hardware-managed cache;
FIG. 9A & [0279], PCM based non-volatile memory provides the software visible memory address space. Due to the need to hide the PCM performance characteristics from direct software access, a large DRAM based write-back MSC 510 is employed that is hardware managed (e.g., via MSC controller 512) and may be transparent to software).
Regarding claim(s) 14, the combination of Ramanujan and Li further teaches wherein … (Claim recites substantially the same limitations as in claims 7 and 9, and is therefore rejected for the same reasons set forth in the analysis of claims 7 and 9).
Claims 21-23 are rejected under 35 U.S.C. 103 as being unpatentable over Ramanujan et al. (US 2014/0304475; hereinafter Ramanujan) in view of Li et al. (US 2019/0138448; hereinafter Li), further in view of Hsia (US 2013/0054925).
Regarding claim(s) 21, 22 and 23, the combination of Ramanujan and Li teaches host application indicating that the data in the buffer is invalid data, and wherein the memory controller is to track the memory address space as invalid data based on the received application command (Li, [0017], To allow communication of such an invalidation of data upon last read access, described embodiments provide a read-with-invalidate (RWI) command to read and invalidate at least one portion of a plurality of portions of a cache line having modified data. When the cache line having modified data is selected for replacement, the modified data is not copied to the non-volatile (far) memory if portions (some or all) of the cache line being flushed have been invalidated with the (RWI) command).
Although Li teaches using host API to indicate invalid memory, Ramanujan and Li do not expressly teach a free buffer command received during a garbage collection routine. In an analogous art of memory management, Hsia teaches a free buffer command received during a garbage collection routine ([0056], the memory allocation command and the memory free command can be received as explicit instructions from the at least one process. Alternatively, at reference numeral 908, the memory free command and/or the memory allocation command can be received in connection with a system-managed garbage collection routine. In the latter case discussed with regard to reference numeral 908, then at reference numeral 910, the tag can be updated in response to a change in a memory allocation reference provided by the system-managed garbage collection routine; [0046], rather than expecting a corresponding memory release call, such can be managed by, e.g., a garbage collection operation or algorithm or another managed process, denoted as garbage collection process 208. In the case of managed operations such as garbage collection routines, intercept component 102 can subsequently intercept an associated memory release call (e.g., GC Start 210, GC Finish 212, . . . ) explicitly called by garbage collection process 208).
It would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention was made, with the teachings of Hsia, Ramanujan and Li before them, to incorporate Hsia’s explicit memory free command provided by garbage collection routine to invalidate memory for the motivation that bypass writeback could be utilized during garbage collection to reduce un-necessary writeback during garbage collection.
Thus, the combination of Ramanujan, Li and Hsia teaches receive a free buffer command from a host operating system during a garbage collection routine indicating that the data in the buffer is invalid data, and wherein the memory controller is to track the memory address space as invalid data based on the received free buffer command.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to TRACY C CHAN whose telephone number is (571)272-9992. The examiner can normally be reached on Monday - Friday 10 AM to 6 PM EST.
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, TIM VO can be reached on (571)272-3642. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see https://ppair-my.uspto.gov/pair/PrivatePair. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/TRACY C CHAN/ Primary Examiner, Art Unit 2138