IP Library › Granted Patent US 10,705,975
Granted Patent B2
US 10,705,975 · App. 16/182,695 · Granted Jul 7, 2020

Hybrid memory management

Inventors: Joel Dylan Coburn (Mountain View, CA); Albert Borchers (Aptos, CA); Christopher Lyle Johnson (San Francisco, CA); Robert S. Sprinkle (San Jose, CA)
Assignee: Google LLC
G06F12/1009G06F12/121G06F2212/1024G06F2212/1032G06F2212/152G06F2212/657
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 10,705,975
App. No.
16/182,695
Granted
Jul 7, 2020
Kind
B2
Abstract

Methods, systems, and apparatus for determining whether an access bit is set for each page table entry of a page table based on a scan of the page table with at least one page table walker, the access bit indicating whether a page associated with the page table entry was accessed in a last scan period; incrementing a count for each page in response to determining that the access bit is set for the page table entry associated with the page; resetting the access bit after determining whether the access bit is set for each page table entry; receiving a request to access, from a main memory, a first page of data; initiating a page fault based on determining that the first page of data is not stored in the main memory; and servicing the page fault with a DMA engine.

Claims (49)

1. A computer-implemented method comprising:

determining, with a processor, whether an access bit is set for each page table entry of a page table based on a scan of the page table with a page table scanner, the access bit indicating whether a page associated with the page table entry was accessed in a last scan period;

incrementing a count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was not accessed in the last scan period, wherein the count for each page indicates the number of consecutive previous scan periods that the page was not accessed ending at the last scan period and the count for a particular page is greater than one;

after determining, with the processor, whether the access bit is set for each page table entry, resetting the access bit of each of the pages that were accessed;

receiving a request to access, from a main memory, a first page of data;

initiating a page fault based on determining that the first page of data is not stored in the main memory; and

in response to initiating the page fault, determining a particular page based on the count for each page and transferring the first page of data from the secondary memory to the main memory at the location of the released particular page.

2. The method of claim 1 , wherein the particular page is determined as one of the least used pages based on the count for each page.

3. The method of claim 1 , wherein initiating the page fault comprises:

stalling execution of a thread while the page fault is serviced; and

releasing the thread to access the main memory after the page fault is serviced.

4. The method of claim 1 , wherein the count for each page is maintained by at least one of a counter for each page stored in static random access memory, counting bloom filters, or a counter for each page stored in dynamic random access memory.

5. The method of claim 1 , wherein resetting the access bit of each of the pages that were accessed comprises:

resetting the count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period.

6. The method of claim 5 , wherein resetting the count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period comprises:

setting the count to zero for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period.

7. The method of claim 1 , wherein the count for each page stored in the main memory and each page stored in the secondary memory is stored in static random access memory.

8. The method of claim 1 , wherein the page table scanner is implemented by adding a thread to one or more hardware page table walkers.

9. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

determining, with a processor, whether an access bit is set for each page table entry of a page table based on a scan of the page table with a page table scanner, the access bit indicating whether a page associated with the page table entry was accessed in a last scan period;

incrementing a count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was not accessed in the last scan period, wherein the count for each page indicates the number of consecutive previous scan periods that the page was not accessed ending at the last scan period and the count for a particular page is greater than one;

after determining, with the processor, whether the access bit is set for each page table entry, resetting the access bit of each of the pages that were accessed;

receiving a request to access, from a main memory, a first page of data;

initiating a page fault based on determining that the first page of data is not stored in the main memory; and

in response to initiating the page fault, determining a particular page based on the count for each page and transferring the first page of data from the secondary memory to the main memory at the location of the released particular page.

10. The system of claim 9 , wherein the particular page is determined as one of the least used pages based on the count for each page.

11. The system of claim 9 , wherein initiating the page fault comprises:

stalling execution of a thread while the page fault is serviced; and

releasing the thread to access the main memory after the page fault is serviced.

12. The system of claim 9 , wherein the count for each page is maintained by at least one of a counter for each page stored in static random access memory, counting bloom filters, or a counter for each page stored in dynamic random access memory.

13. The system of claim 9 , wherein resetting the access bit of each of the pages that were accessed comprises:

resetting the count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period.

14. The system of claim 13 , wherein resetting the count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period comprises:

setting the count to zero for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was accessed in the last scan period.

15. The system of claim 9 , wherein the count for each page stored in the main memory and each page stored in the secondary memory is stored in static random access memory.

16. The system of claim 9 , wherein the page table scanner is implemented by adding a thread to one or more hardware page table walkers.

17. A non-transitory computer-readable medium storing software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising:

determining, with a processor, whether an access bit is set for each page table entry of a page table based on a scan of the page table with a page table scanner, the access bit indicating whether a page associated with the page table entry was accessed in a last scan period;

incrementing a count for each page in response to determining that the access bit for the page table entry associated with the page indicates that the page associated with the page table entry was not accessed in the last scan period, wherein the count for each page indicates the number of consecutive previous scan periods that the page was not accessed ending at the last scan period and the count for a particular page is greater than one;

after determining, with the processor, whether the access bit is set for each page table entry, resetting the access bit of each of the pages that were accessed;

receiving a request to access, from a main memory, a first page of data;

initiating a page fault based on determining that the first page of data is not stored in the main memory; and

in response to initiating the page fault, determining a particular page based on the count for each page and transferring the first page of data from the secondary memory to the main memory at the location of the released particular page.

18. The medium of claim 17 , wherein the particular page is determined as one of the least used pages based on the count for each page.

19. The medium of claim 17 , wherein initiating the page fault comprises:

stalling execution of a thread while the page fault is serviced; and

releasing the thread to access the main memory after the page fault is serviced.

20. The medium of claim 17 , wherein the count for each page is maintained by at least one of a counter for each page stored in static random access memory, counting bloom filters, or a counter for each page stored in dynamic random access memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2018
From: COBURN, JOEL DYLAN; BORCHERS, ALBERT; JOHNSON, CHRISTOPHER LYLE; SPRINKLE, ROBERT S.
To: GOOGLE INC.
Reel/Frame 047439/0172 →
ENTITY CONVERSION Recorded Nov 7, 2018
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 047446/0114 →
Continuity (2)
Continuation 15235495 · Aug 12, 2016
Related Publication 20190073314A1 · Mar 7, 2019
Cited By (2)
US 12,730,591 US 12,730,763