# US 10,872,041 B2 · Method and apparatus for journal aware cache management

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,872,041 B2
- Document ID: US10872041B2
- Status: Granted
- Kind: B2
- Application number: 16/211,157
- Filed: 2018-12-05
- Published: 2019-04-11
- Granted: 2020-12-22
- Earliest claimed: 2018-12-05
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Madhurima Ray; Sanjeev N. Trika
- Web page: https://patentgrep.com/patent/US10872041B2

## CPC

- G06F 12/121: using replacement algorithms
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/0895: of parts of caches, e.g. directory or tag array
- G06F 2212/1044: Space efficiency improvement
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An intelligent journal-aware caching manager for journaled data is provided. The caching manager ensures that data is not duplicated in a write-ahead-log (“journal”) and volatile cache memory (“cache”). The caching manager maintains first-in-first-out (“FIFO”) policy for the journal as needed and includes an alternate caching policy for non-journaled data.

## Claims

### Claim 1

An apparatus comprising:
a journal to store a key value pair to be written to a storage device;
a cache to store the key value pair read from the storage device; and
journal-aware cache logic to evict the key value pair from the cache when the key value pair is written to the journal and to insert the key value pair in the cache when the key value pair is evicted from the journal such that the key value pair is stored in one of the cache or the journal to ensure the key value pair is not duplicated in the journal and the cache, the journal-aware cache logic comprises a least recently used list, each entry in the least recently used list has a pointer to a cache entry in the cache or to a write-ahead-log entry in the journal.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the key value pair stored in the journal to be written to the storage device in first-in-first-out order.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the journal is a pseudo non-volatile memory in the storage device.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the journal is a non-volatile memory and the cache is a volatile memory.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the non-volatile memory is a byte addressable write-in-place memory.

### Claim 6

A system comprising:
a journal to store a key value pair to be written to a storage device;
a cache to store the key value pair read from the storage device; and
journal-aware cache logic to evict the key value pair from the cache when the key value pair is written to the journal and to insert the key value pair in the cache when the key value pair is evicted from the journal such that the key value pair is stored in one of the cache or the journal to ensure the key value pair is not duplicated in the journal and the cache, the journal-aware cache logic comprises a least recently used list, each entry in the least recently used list has a pointer to a cache entry in the cache or to a write-ahead-log entry in the journal; and
a display communicatively coupled to a processor to display the key value pair stored in the cache.

### Claim 7 (depends on 6)

The system of claim 6, wherein the key value pair stored in the journal to be written to the storage device in first-in-first-out order.

### Claim 8 (depends on 6)

The system of claim 6, wherein the journal is a non-volatile memory and the cache is a volatile memory.

### Claim 9 (depends on 8)

The system of claim 8, wherein the non-volatile memory is a byte addressable write-in-place memory.

### Claim 10

A method comprising:
storing a key value pair to be written to a storage device in a journal;
storing the key value pair read from the storage device in a cache; and
evicting, by journal-aware cache logic, the key value pair from the cache when the key value pair is written to the journal; and
inserting, by the journal-aware cache logic, the key value pair in the cache when the key value pair is evicted from the journal such that the key value pair is stored in one of the cache or the journal to ensure the key value pair is not duplicated in the journal and the cache, the journal-aware cache logic comprises a least recently used list, each entry in the least recently used list has a pointer to a cache entry in the cache or to a write-ahead-log entry in the journal.

### Claim 11 (depends on 10)

The method of claim 10, wherein data stored in the journal to be written to the storage device in first-in-first-out order.

### Claim 12 (depends on 10)

The method of claim 10, wherein the journal is a pseudo non-volatile memory in the storage device.

### Claim 13 (depends on 10)

The method of claim 10, wherein the journal is a non-volatile memory and the cache is a volatile memory.

### Claim 14 (depends on 13)

The method of claim 13, wherein the non-volatile memory is a byte addressable write-in-place memory.
