IP Library Granted Patent US 11,544,197
Granted Patent B2
US 11,544,197 · App. 17/025,589 · Granted Jan 3, 2023

Random-access performance for persistent memory

Inventors: Shuo Chen (Bellevue, WA); Zhu Pang (Bellvue, WA); Qingda Lu (Bellevue, WA); Jiesheng Wu (Redmond, WA); Yuanjiang Ni (Santa Cruz, CA)
Assignee: Alibaba Group Holding Limited
G06F12/0888G06F2212/608
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,544,197
App. No.
17/025,589
Granted
Jan 3, 2023
Kind
B2
Abstract

A mapping correspondence between memory addresses and request counts and a cache line flusher are provided, enabling selective cache flushing for persistent memory in a computing system to optimize write performance thereof. Random writes from cache memory to persistent memory are prevented from magnifying inherent phenomena of write amplification, enabling computing systems to implement persistent memory as random-access memory, at least in part. Conventional cache replacement policies may remain implemented in a computing system, but may be effectively overridden by operations of a cache line flusher according to example embodiments of the present disclosure preventing conventional cache replacement policies from being triggered. Implementations of the present disclosure may avoid becoming part of the critical path of a set of computer-executable instructions being executed by a client of cache memory, minimizing additional computation overhead in the critical path.

Claims (31)

1. A method comprising:

tracking write request counts mapped to write-traced memory addresses of a cache memory by replacing an existing one-to-one mapping correspondence between memory addresses and request counts with a new one-to-one mapping correspondence between memory addresses and incremented request counts;

filtering, by a cache line flusher, traced memory addresses based at least in part on request counts mapped thereto; and

flushing, by the cache line flusher from the cache memory, cache lines corresponding to memory addresses not excluded by filtering.

2. The method of claim 1 , wherein tracking write request counts comprises incrementing a request count upon a write trace of the traced memory address being performed.

3. The method of claim 1 , wherein tracking write request counts comprises batch incrementing a plurality of request counts mapped to a plurality of collected traced memory addresses.

4. The method of claim 1 , wherein at least filtering traced memory addresses and flushing cache lines are performed after a thread running the cache line flusher wakes upon a wakeup time occurring.

5. The method of claim 4 , further comprising setting a wakeup time based on a proportion of excluded memory addresses compared to a total number of memory addresses and/or a proportion of non-excluded memory addresses compared to a total number of memory addresses.

6. The method of claim 1 , wherein filtering traced memory addresses comprises excluding memory addresses corresponding to request counts over a predetermined threshold.

7. The method of claim 1 , wherein filtering traced memory addresses comprises ordering memory addresses, identifying one or more substantially contiguous ranges of memory addresses among the ordered memory addresses, and excluding memory addresses falling outside of the one or more contiguous ranges.

8. A system comprising:

one or more processors; and

memory communicatively coupled to the one or more processors, the memory storing computer-executable modules executable by the one or more processors that, when executed by the one or more processors, perform associated operations, the computer-executable modules comprising:

a request count tracking module configured to track write request counts mapped to write-traced memory addresses of a cache memory by replacing an existing one-to-one mapping correspondence between memory addresses and request counts with a new one-to-one mapping correspondence between memory addresses and incremented request counts;

a memory address filtering module configured to filter traced memory addresses based at least in part on request counts mapped thereto; and

a cache line flushing module configured to flush from the cache memory cache lines corresponding to memory addresses not excluded by filtering.

9. The system of claim 8 , wherein the request count tracking modules is configured to track write request counts by incrementing a request count upon a write trace of the traced memory address being performed.

10. The system of claim 8 , wherein the request count tracking modules is configured to track write request counts by batch incrementing a plurality of request counts mapped to a plurality of collected traced memory addresses.

11. The system of claim 8 , wherein at least the memory address filtering module and the cache line flushing module are configured to run in a cache line flusher thread, and configured to filter traced memory addresses and flush cache lines, respectively, after the cache line flusher thread wakes upon a wakeup time occurring.

12. The system of claim 11 , further comprising a wakeup time setting module configured to set a wakeup time based on a proportion of excluded memory addresses compared to a total number of memory addresses and/or a proportion of non-excluded memory addresses compared to a total number of memory addresses.

13. The system of claim 8 , wherein the memory address filtering module is configured to filter traced memory addresses by excluding memory addresses corresponding to request counts over a predetermined threshold.

14. The system of claim 8 , wherein the memory address filtering module is configured to filter traced memory addresses by ordering memory addresses, identifying one or more substantially contiguous ranges of memory addresses among the ordered memory addresses, and excluding memory addresses falling outside of the one or more contiguous ranges.

15. A computer-readable storage medium storing computer-readable instructions executable by one or more processors, that when executed by the one or more processors, cause the one or more processors to perform operations comprising:

tracking write request counts mapped to write-traced memory addresses of a cache memory by replacing an existing one-to-one mapping correspondence between memory addresses and request counts with a new one-to-one mapping correspondence between memory addresses and incremented request counts;

filtering, by a cache line flusher, traced memory addresses based at least in part on request counts mapped thereto; and

flushing, by the cache line flusher from the cache memory, cache lines corresponding to memory addresses not excluded by filtering.

16. The computer-readable storage medium of claim 15 , wherein tracking write request counts comprises batch incrementing a plurality of request counts mapped to a plurality of collected traced memory addresses.

17. The computer-readable storage medium of claim 15 , wherein at least filtering traced memory addresses and flushing cache lines are performed after a thread running the cache line flusher wakes upon a wakeup time occurring.

18. The computer-readable storage medium of claim 17 , further comprising setting a wakeup time based on a proportion of excluded memory addresses compared to a total number of memory addresses and/or a proportion of non-excluded memory addresses compared to a total number of memory addresses.

19. The computer-readable storage medium of claim 15 , wherein filtering traced memory addresses comprises excluding memory addresses corresponding to request counts over a predetermined threshold.

20. The computer-readable storage medium of claim 15 , wherein filtering traced memory addresses comprises ordering memory addresses, identifying one or more substantially contiguous ranges of memory addresses among the ordered memory addresses, and excluding memory addresses falling outside of the one or more contiguous ranges.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075499/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2020
From: CHEN, SHUO; PANG, ZHU; LU, QINDA; WU, JIESHENG; NI, YUANJIANG
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 053822/0032 →
Continuity (1)
Related Publication 20220091989A1 · Mar 24, 2022