Patent ID: 7979638

Claim:
A system for storing data, comprising: a main memory comprising a cache metadata, wherein the main memory comprises random access memory (RAM), and wherein the main memory comprises a first datum; and an asymmetric cache device (ACD), wherein the ACD comprises flash-type memory; wherein the system is configured to: (a) receive a first request for a second datum; (b) query the cache metadata to determine that the second datum is present in the ACD and not present in the main memory; in response to the determination: (c) retrieve the second datum from the ACD; (d) store a copy of the second datum in the main memory; (e) update the cache metadata to indicate that the copy of the second datum is stored in the main memory; (f) identify that the first datum is to be copied to the ACD using a usage data structure, wherein the usage data structure is located in the main memory and tracks a frequency of requests for the first datum; (g) create a copy of the first datum; (h) store the copy of the first datum in the ACD; (i) update the cache metadata to indicate the copy of the first datum is located in both the main memory and the ACD; (j) receive a third request for a third datum and a fourth request for a fourth datum; (k) query the cache metadata to determine that the third datum and fourth datum are present in the main memory and not present in the ACD; (l) create a copy of the third datum and the fourth datum; (m) store the copy of the third datum in the ACD; (n) update the cache metadata to indicate the copy of the third datum is stored in the ACD; (o) initiate storing the copy of the fourth datum in the ACD; (p) receive, after initiating, an indication the fourth datum in the main memory is dirty; and (q) store the copy of the fourth datum in the ACD, wherein the cache metadata is not updated to indicate that the copy of the fourth datum is stored in the ACD.