IP Library › Granted Patent US 10,162,525
Granted Patent B2
US 10,162,525 · App. 14/851,426 · Granted Dec 25, 2018

Translating access requests for a multi-level page data structure

Inventors: Henri van Riel (Raanana, IL); Michael Tsirkin (Raanana, IL)
Assignee: RED HAT ISRAEL, LTD.
G06F3/0605G06F3/0608G06F3/0644G06F3/0665G06F3/0673G06F12/10G06F2212/1044G06F2212/152G06F2212/50G06F2212/652
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,162,525
App. No.
14/851,426
Granted
Dec 25, 2018
Kind
B2
Abstract

Methods, systems, and computer program products for receiving a memory access request, the memory access request including a virtual memory address; locating a page entry in a page entry structure, the page entry corresponding to the virtual memory address; identifying that a page corresponding to the page entry includes a sub-page, the sub-page included within a subset of a memory space allocated to the page; determining a page frame number corresponding to the sub-page and an offset corresponding to the sub-page; and accessing the offset within the sub-page.

Claims (61)

1. A method for accessing memory of a computer, the method comprising:

receiving a memory access request, the memory access request including a virtual memory address;

locating a page entry in a page entry structure, the page entry corresponding to the virtual memory address;

identifying, based on reading a flag stored in the page entry, that a page corresponding to the page entry includes at least one sub-page, the at least one sub-page included within a subset of a memory space allocated to the page;

translating the virtual memory address to a page frame number, the page frame number corresponding to a memory address of a sub-page in memory, wherein the translating comprises:

calculating an index into the page entry structure by subtracting a start address of the page entry structure from a start address of the page entry; and

dividing the index into the page entry structure by a size of the page entry;

translating the virtual memory address to a memory offset within the sub-page; and

accessing the memory offset within the sub-page.

2. The method of claim 1 , the identifying comprising:

reading alignment indicator bits of the virtual memory address to determine whether the alignment indicator bits are set to zero, wherein the alignment indicator bits are located at a pre-determined position of the virtual memory address.

3. The method of claim 2 , the identifying further comprising:

after determining that the alignment indicator bits are set to zero, reading the flag.

4. The method of claim 1 , the method further comprising:

translating the virtual memory address to a page frame number by parsing a first pre-determined number of bits at a first position of the virtual memory address; and

translating the virtual memory address to a memory offset by parsing a second pre-determined number of bits at a second position of the virtual memory address.

5. The method of claim 4 , wherein the first pre-determined number of bits is greater than a number of bits for storing a page frame number corresponding to the page, wherein the second pre-determined number of bits is smaller than a number of bits for storing a memory offset corresponding to the page, and wherein bits at the first position have a higher order than bits at the second position.

6. The method of claim 1 , wherein the page entry structure is a page array, and wherein the page entry is defined as a struct data type.

7. The method of claim 1 , the identifying further comprising:

performing a lookup in a tree data structure, wherein the tree data structure identifies a page frame number corresponding to the page entry.

8. The method of claim 1 , wherein the memory access request is received by a kernel and is a request to read or write to a main memory.

9. The method of claim 1 , the translating of the virtual memory address to the page frame number further comprising:

reading the page frame number from a parameter of the page entry.

10. The method of claim 1 , the translating of the virtual memory address to the page frame number further comprising:

parsing an address of the page entry, the page entry stored in kernel virtual memory.

11. A computer program product stored on a non-transitory computer-readable medium, the computer program product comprising machine readable instructions that when executed by a processor cause the processor to:

receive a memory access request, the memory access request including a virtual memory address;

locate a page entry in a page entry structure, the page entry corresponding to the virtual memory address;

identify, based on reading a flag stored in the page entry, that a page corresponding to the page entry includes a sub-page, the sub-page included within a subset of memory allocated to the page;

determine a page frame number corresponding to the sub-page, wherein the determining comprises:

calculating an index into the page entry structure by subtracting a start address of the page entry structure from a start address of the page entry; and

dividing the index into the page entry structure by a size of the page entry;

determine an offset corresponding to the sub-page; and

access the offset within the sub-page, the sub-page located at the page frame number.

12. The medium of claim 11 , the identifying comprising:

reading alignment indicator bits of the virtual memory address to determine whether the alignment indicator bits are set to zero, wherein the alignment indicator bits are positioned at a pre-determined location of the virtual memory address.

13. The medium of claim 12 , the identifying further comprising:

after determining that the alignment indicator bits are set to zero, reading the flag.

14. The medium of claim 11 , the processor further to:

determine the page frame number by parsing a first pre-determined number of bits at a first position of the virtual memory address; and

determine the offset by parsing a second pre-determined number of bits at a second position of the virtual memory address.

15. The medium of claim 14 , wherein the first pre-determined number of bits is greater than a number of bits for storing a page frame number corresponding to the page, wherein the second pre-determined number of bits is smaller than a number of bits for storing an offset corresponding to the page.

16. The medium of claim 11 , the identifying further comprising:

performing a lookup in a tree data structure, wherein the tree data structure identifies a page frame number corresponding to the page entry.

17. A system comprising:

a processor and a memory, the memory storing a sub-page within a memory page;

the memory storing a page array that includes a page entry corresponding to the memory page;

the page entry including an indicator that the memory page is split into one or more sub-pages, wherein the indicator includes a flag parameter associated with the page entry;

the processor to:

receive a read or write memory access request;

read the indicator from the page entry;

determine, based at least in part on the indicator and a virtual memory address, a page frame number and an offset corresponding to the sub-page, wherein the determining comprises:

calculating an index into the page array by subtracting a start address of the page array from a start address of the page entry; and

dividing the index into the page array by a size of the page entry; and

read or write to the offset at the page frame number.

18. The system of claim 17 , wherein the page entry includes a struct data type.

19. The system of claim 17 , the processor further to:

read alignment indicator bits of the virtual memory address to determine whether the alignment indicator bits are set to zero;

parse a first pre-determined number of bits at a first position of the virtual memory address to obtain the page frame number corresponding to the sub-page; and

parse a second pre-determined number of bits at a second position of the virtual memory address to obtain the offset corresponding to the sub-page.

20. The system of claim 19 , wherein the first pre-determined number of bits is greater than a number of bits for storing a page frame number corresponding to the page, wherein the second pre-determined number of bits is smaller than a number of bits for storing an offset corresponding to the page.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2015
From: VAN RIEL, HENRI; TSIRKIN, MICHAEL
To: RED HAT ISRAEL, LTD.
Reel/Frame 036542/0403 →
Continuity (1)
Related Publication 20170075582A1 · Mar 16, 2017