IP Library › Granted Patent US 9,830,262
Granted Patent B2
US 9,830,262 · App. 14/133,488 · Granted Nov 28, 2017

Access tracking mechanism for hybrid memories in a unified virtual system

Inventors: Jerome F. Duluk, Jr. (Palo Alto, CA); Cameron Buschardt (Round Rock, TX); James Leroy Deming (Madison, AL); Brian Fahs (Los Altos, CA)
Assignee: NVIDIA Corporation
G06F12/08G06F11/3037G06F11/3442G06F11/3471G06F2201/81G06F2201/815G06F2212/205
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 9,830,262
App. No.
14/133,488
Granted
Nov 28, 2017
Kind
B2
Abstract

Embodiments of the approaches disclosed herein include a subsystem that includes an access tracking mechanism configured to monitor access operations directed to a first memory and a second memory. The access tracking mechanism detects an access operation generated by a processor for accessing a first memory page residing on the second memory. The access tracking mechanism further determines that the first memory page is included in a first subset of memory pages residing on the second memory. The access tracking mechanism further locates, within a reference vector, a reference bit that corresponds to the first memory page, and sets the reference bit. One advantage of the present invention is that memory pages in a hybrid system migrate as needed to increase overall memory performance.

Claims (76)

1. A subsystem comprising:

an access tracking mechanism configured to monitor access operations directed to a first memory and a second memory by:

detecting an access operation generated by a first processor for accessing a first memory page residing on the second memory;

determining that the first memory page is included in a first subset of memory pages residing on the second memory;

locating, within a reference vector associated with a sliding window representing a subset of address spaces in the second memory, a reference bit that corresponds to a group of memory pages including the first memory page; and

setting the reference bit.

2. The subsystem of claim 1 , wherein the second memory stores a driver configured to cause memory pages to migrate between the first memory and the second memory by:

determining that the first memory page has not been accessed for predetermined period of time; and

causing the first memory page to be transmitted from the second memory to the first memory.

3. The subsystem of claim 2 , wherein the driver is further configured to cause memory pages to migrate between the first memory and the second memory by:

determining that a second memory page residing on the first memory has been accessed a quantity of times equal to a threshold quantity; and

causing the second memory page to be transmitted from the first memory to the second memory.

4. The subsystem of claim 3 , wherein the access tracking mechanism is further configured to monitor access operations directed to a first memory and a second memory by:

detecting an access operation generated by the first processor for accessing the second memory page;

determining whether a cache memory associated with the first processor includes a first entry corresponding to an address associated with the second memory page; and

if the cache memory includes the first entry, then:

incrementing an access counter associated with the first entry and configured to count accesses of the second memory page; or

if the cache memory does not include the first entry, then:

determining whether a second entry in the cache memory is available for allocation; and

if a second entry is available for allocation; then

associating the second entry with the second memory page; and

setting an access counter associated with the second entry to an initial value; or

if a second entry is not available for allocation; then

selecting a first valid entry included in a set of valid entries resident in the cache memory;

clearing a valid bit included in the first valid entry;

associating the first valid entry with the second memory page; and

setting an access counter associated with the first valid entry to an initial value.

5. The subsystem of claim 4 , wherein determining whether a second entry in the cache memory is available for allocation comprises determining whether a valid bit included in the second entry has been cleared.

6. The subsystem of claim 4 , wherein associating the second entry with the second memory page comprises:

storing a page number associated with the second memory page in the second entry; and

setting a valid bit included in the second entry.

7. The subsystem of claim 4 , wherein selecting the first valid entry comprises determining that the first valid entry is associated with an access counter that has the lowest value relative to the values of all other access counters associated with all other valid entries in the set of valid entries.

8. The subsystem of claim 1 , further comprising an access tracking unit configured to identify pages for migration using the sliding window.

9. The subsystem of claim 1 , wherein the sliding window is divided into groups of one or more memory pages.

10. The subsystem of claim 1 , wherein the access tracking mechanism monitors access operations directed to the first memory and the second memory during a first time period and selects the subset of address spaces represented by the sliding window based on the access operations.

11. The subsystem of claim 1 , wherein the first reference vector comprises a plurality of reference bits, and wherein each reference bit in the plurality of reference bits corresponds to a different group of memory pages included in the second memory.

12. The subsystem of claim 11 , wherein each subset of memory pages included in the plurality of memory pages comprises one memory page.

13. The subsystem of claim 11 , wherein each subset of memory pages included in the plurality of memory pages comprises two memory pages.

14. A method for monitoring access operations directed to a first memory and a second memory, the method comprising:

detecting an access operation generated by a first processor for accessing a first memory page residing on the second memory;

determining that the first memory page is included in a first subset of memory pages residing on the second memory;

locating, within a reference vector associated with a sliding window representing a subset of address spaces in the second memory, a reference bit that corresponds to a group of memory pages including the first memory page; and

setting the reference bit.

15. The method of claim 14 , further comprising:

detecting an access operation generated by the first processor for accessing a second memory page residing on the first memory;

determining whether a cache memory associated with the first processor includes a first entry corresponding to an address associated with the second memory page; and

if the cache memory includes the first entry, then:

incrementing an access counter associated with the first entry and configured to count accesses of the second memory page; or

if the cache memory does not include the first entry, then:

determining whether a second entry in the cache memory is available for allocation; and

if a second entry is available for allocation; then

associating the second entry with the second memory page; and

setting an access counter associated with the second entry to an initial value; or

if a second entry is not available for allocation; then

selecting a first valid entry included in a set of valid entries resident in the cache memory;

clearing a valid bit included in the first valid entry;

associating the first valid entry with the second memory page; and

setting an access counter associated with the first valid entry to an initial value.

16. The method of claim 15 , wherein determining whether a second entry in the cache memory is available for allocation comprises determining whether a valid bit included in the second entry has been cleared.

17. The method of claim 15 , wherein associating the second entry with the second memory page comprises:

storing a page number associated with the second memory page in the second entry; and

setting a valid bit included in the second entry.

18. The method of claim 15 , wherein selecting the first valid entry comprises determining that the first valid entry is associated with an access counter that has the lowest value relative to the values of all other access counters associated with all other valid entries in the set of valid entries.

19. A computing device comprising:

a first processing unit;

an access tracking mechanism configured to monitor access operations directed to a first memory and a second memory;

the first memory coupled to the first processing unit; and

the second memory coupled to the first processing unit and storing a driver configured to cause memory pages to migrate between the first memory and the second memory by:

determining, based on a reference bit included in a sliding window representing a subset of address spaces in the second memory that a first memory page residing on the second memory has not been accessed for predetermined period of time, wherein the reference bit corresponds to a group of memory pages including the first memory page, and

causing the first memory page to be transmitted from the second memory to the first memory.

20. The computing device of claim 19 , wherein the driver is further configured to cause memory pages to migrate between the first memory and the second memory by:

determining that a second memory page residing on the first memory has been accessed a quantity of times equal to a threshold quantity; and

causing the second memory page to be transmitted from the first memory to the second memory.

21. The computing device of claim 19 , wherein the first processor comprises a parallel processing unit, and further comprising a central processing unit coupled to the first processor, and a high speed link that provides the parallel processing unit access to the first memory.

22. The computing device of claim 19 , wherein the first processor comprises a parallel processing unit, and further comprising a central processing unit; and a memory management unit that is configured to receive memory access operations directed towards the first memory or the second memory from both the parallel processing unit and the central processing unit.

23. The computing device of claim 19 , wherein the first processor comprises a central processing unit, and further comprising a second central processing unit; and a memory management unit that is configured to receive memory access operations directed towards the first memory or the second memory from both the central processing unit and the second central processing unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2014
From: DULUK, JEROME F., JR.; BUSHCHARDT, CAMERON; DEMING, JAMES LEROY; FAHS, BRIAN
To: NVIDIA CORPORATION
Reel/Frame 032864/0673 →
Continuity (3)
Provisional Application 61785463 · Mar 14, 2013
Provisional Application 61800004 · Mar 15, 2013
Related Publication 20140281264A1 · Sep 18, 2014