Embodiments of the invention generally relate to the field of computing systems and, more particularly, to systems, methods and apparatuses for virtual address to physical address translation with support for page attributes.
Virtual memory allows programmers to use a larger range of memory for programs and data than is provided by the actual physical memory available to a processor. In addition virtual memory allows programs to be loaded in parallel to one another with a memory map that is impassive to the presence of other programs and the location to which it is loaded. A computing system maps a program's virtual addresses (also known as a Linear Address in the IA32 architecture—in this description ‘linear address’ or LA is used synonymously with ‘virtual address’) to real hardware storage addresses (e.g., physical memory addresses) using address translation hardware. The hardware uses a tree of tables in memory as the input data for the address translation. The root of the tree is pointed to by a register that holds the physical address of the first table in the page table tree. An example of such a register is CR3 in the IA32 architecture. Page table entries (PTEs) are addressed using a base and an index. The base is taken from a register or a previous table memory pointer. The index is using a portion of the linear address. The PTE includes either the page, if the rest of the sub tree is not present in memory, or a memory pointer and other information to be discussed below. The memory pointer is for a page in memory that may either include data (that belongs to the application or the operating system) or another level of the page-table. If it is the later case, another portion of the linear address is used to index into the table in a scheme similar to what is described. If the address is for an application page, the physical address is constructed by adding the remaining bits of the address (that were not used for indexing) to the page base address that was retrieved from the page table entry. Also, some embodiments may instantiate several translation schemes (e.g., different table tree indexing structures) as described in a register, for the sake of simplifying this description we will consider such information part of the CR3 register, even though it may be kept in one or more other registers.
Beyond the address translation information, these tables include information such as access rights read, write or execute, presence of the data in memory, caching policy indications, page modified state, etc. In some cases, a page table may include pages of different sizes, where larger pages are pointed to in a lower level of the page table tree (instead of pointing to another page of pointers) The size of the page pointed to is stored as an attribute in the page table tree (typically in the level that points to the data page).
To retrieve the physical address, the page-table entries are read in a recursive manner starting from the root (CR3 in IA32) and properties of the page are retrieved and merged. The IA32 Programmers' Reference Manual (e.g., Volume 3A) provides an example of a conventional approach to retrieving physical addresses. This process requires several memory access operations and is implemented by Page-Table Handling hardware or uCode sequences.
Occasionally, software is required to retrieve the physical memory address. In such cases either an emulated full table walk or a shortened heuristic that is based on the limitations of the setup of the table that the operating system imposes are used.
A translation look aside buffer (TLB) is a cache that holds the result of previous translations such that successive accesses to an address (or a range of addresses) may avoid walking the data structure and can use the results of a previous translation. In many cases the address translation also checks for the operation to meet the conditions set for the memory location. Conventional address translation instructions typically return a physical memory address for a linear address provided as an operand without providing any additional information.
Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Embodiments of the invention are generally directed to systems, methods, and apparatuses for a virtual (to be referred to as linear) to physical address translation with support for page attributes. In some embodiments, a system receives an instruction to translate a linear memory pointer to a physical memory address for a memory location. The system may return the physical memory address and one or more page attributes.
Table 1 illustrates selected aspects of an LPAxx instruction according to some embodiments of the invention. In some embodiments, the LPAxx instruction takes, as an input, a linear address (e.g., m8) and outputs the physical address of that memory location as well as one or more page attributes. In 32-bit modes and in cases were the physical address may be larger than the register, the instruction may have 2 registers for the address output (to support a larger than 32-bit physical address space). In 64-bit modes, a single output register may suffice. In some embodiments, the basic structure of the instruction supports read semantics. Write semantics may be supported to directly check whether a page is write-enabled (e.g., see the trap discussion below).
In some embodiments, when operating in a legacy mode, the LPAxx instruction moves the address of the byte address in DS:(E)SI to EDX:EAX, and EBX holds the access permissions and page size. In 64-bit mode, the LPAxx may move the address of the byte address in (R|E)SI to EDX:EAX (or r64 register), and EBX holds the access permissions and page size. In alternative embodiments, different registers may be used and different modes may be supported.
In some embodiments, the LPAxx instruction is a protected instruction that is run, for example, at the kernel level. Running the instruction at the application level can lead to a violation of the user-application virtualization effect (e.g., a user application is not aware of the actual address at which it is running). In some embodiments, the LPAxx instruction operates in synchronous operating system calls in which the kernel code operates with the user context (in IA32 mode this refers to a specific CR3 value). In alternative embodiments (as is further described below), the instruction operates in asynchronous operating system (OS) calls. In some embodiments, the use of LPAxx is similar to the equivalent SW operations that are present in the operating system, to ensure that the resulting physical address is synchronized with the page table.
The input parameters may be nearly any valid way of pointing to memory. For example, an m8 value or an r/m8 value may be alternatively used to give the instruction more flexibility in specifying the linear address. The address translation hardware (e.g., system 200, shown in
In some embodiments, the output parameter is a physical address (PA) (e.g., up to 64-bits in length) and one or more page attributes (e.g., one or more of the attributes shown in table 2). The PA may be stored in a single 64-bit register (e.g., when operating in the IA32e mode) or in an implicitly defined register pair (e.g., when operating in the IA32 mode or, optionally, in the IA32e compatible mode). The one or more page attributes may be stored in an implicitly defined register. In alternate embodiments, other means for making the data available to software for later use are used such as storing the information in a dedicated register(s) or in a memory location.
As shown in Table 1, in some embodiments, there may be two (or more) types of LPAxx instructions. For example, some embodiments may include an LPA instruction and an LPA with touch instruction. The LPA instruction, as described above, receives, as an input, a LA and returns a PA and one or more page attributes. The LPA with touch instruction also returns a PA and one or more page attributes. In addition, the LPA with touch instruction determines whether the page is present in memory (according to the status in the last level of the page table). If the last page is not present, the LPA with touch instruction produces a fault that is the same as the fault produced by a RD or a WR for LPARD and LPAWR, respectively. This allows the standard fault handlers to take care of the fault case (e.g., bring the page to memory in case of a page fault or for a write touch to convert a read only page to a write enabled). The LPA with touch instruction determines the status of a page without accessing the data in memory, which saves an access to the memory hierarchy and in many cases a cache miss. Instead, the status determination is based on the status of the page table entries (PTEs).
In some embodiments, in addition to obtaining the PA (from either TLB 204 or PMH 206, depending on the case), one or more page attributes are obtained in response to the instruction. The PA and the associated page attributes are returned as part of the LPA parameters to the processor registers. In some embodiments, the PA and the associated page attributes are placed in a physical address return register (e.g., PARR 210) which is a register dedicated for the holding of the PA and/or attributes information and a status that indicates the completion of the operation. Optionally the processor may use microcode to read the data from the PARR and place it into a general purpose register. In an alternative embodiment, the PARR can be directly addressed by other processor instructions. In another alternative embodiment, the PA and associated page attributes may be returned to the processor via a read return bus (e.g., 224). In yet other embodiments, different techniques may be used to return the PA and associated page attributes to the processor.
Table 2 provides a list of selected page attributes that may be returned, with a PA, in some embodiments of the invention. In alternative embodiments, more attributes, fewer attributes, and/or different attributes may be returned.
For most cases, the exceptions are handled in substantially the same way as they are for a normal memory access (read or write). In some embodiments, however, the following exceptions apply. If the LPAxx fails to access a data page, the instruction returns an address that is equal to zero and the P-bit is cleared. If the address translation fails to access any of the page tables, the “Translation Page Fault” status is set to indicate the fault and the level of the fault. Regarding the LPAxx with touch instruction, the page fault is taken if the access to the page fails (e.g., generating a page fault exception). In some embodiments, the exception is not taken if the failure is on any of the page tables' access which is flagged using the “translation Page Fault” status.
In some embodiments, the LPAxx instruction supports virtualization technology (VT) with enhanced page table (EPT). When operating in a VT environment, the translation of an address may depend, in part, on whether the requestor is a guest OS or the host OS (or virtual machine manager—VMM), as indicated by status bits within the processor. In some embodiments, if the requestor is the host OS, then the LPAxx instruction returns the host PA (HPA). If, however, the requestor is the guest OS, then the LPAxx instruction may return the guest PA (GPA).
Page table tree 300 includes extended page tables (EPTs) 302-306. EPTs 302-306 are similar to the conventional tables (e.g., 308 and 310), except that EPTs 302-306 belong to the host OS. The EPT uses a tree of tables pointed to by an EPT base register to translate a GPA into a HPA. This operation is performed for any GPA that requires translation including access to the guest page tables as part of the guest page table walk. A portion of guest LA (GLA) 312 and the CR3 (314) reference a location in EPT 302. EPT 302, in turn, points to a location in page directory 308. Page directory 308 and another portion of GLA 312 may be used to reference a location in EPT 304. This process may be continued for nearly any number of levels until GPA 316 is reached. EPT 306 maps GPA 316 to HPA 318. In some embodiments, when operating in a VT environment, the LPAxx instruction returns the GPA of the page itself as stored in the last guest page table (e.g., GPA 316) and one or more associated page attributes.
In some embodiments the TLB holds only the HPA, which requires the page table to be walked for returning the GPA, as done for the case of a TLB miss. In alternate embodiments, the TLB includes an additional field that holds the GPA and attributes of the page which enables retrieving the GPA from the TLB.
In some embodiments, the LPAxx instruction supports asynchronous calls in addition to synchronous calls. An asynchronous call refers to a call to the LPAxx instruction from an application that does not correspond to the current CR3 that is being used for translation. In some embodiments, the LPAxx instruction includes additional parameters that tell the page tree where to start the page table walk (e.g., a CR3 value corresponding to the application that made the asynchronous call). In many cases, the data in the TLB cannot be used during the asynchronous call since that data corresponds to a different program. Thus, in many cases, a page table walk is executed to obtain the PA and the one or more associated page attributes. In other cases, tags are provided to identify with which address space (CR3) a TLB entry is associated. This may enable usage of TLB entrees in asynchronous calls.
Elements of embodiments of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, flash memory, optical disks, compact disks-read only memory (CD-ROM), digital versatile/video disks (DVD) ROM, random access memory (RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic or optical cards, propagation media or other type of machine-readable media suitable for storing electronic instructions. For example, embodiments of the invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
Similarly, it should be appreciated that in the foregoing description of embodiments of the invention, various features are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed subject matter requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description.
The present application is a continuation of U.S. patent application Ser. No. 14/312,669, filed Jun. 23, 2014, entitled “LINEAR TO PHYSICAL ADDRESS TRANSLATION WITH SUPPORT FOR PAGE ATTRIBUTES”, U.S. patent application Ser. No. 14/312,669 is itself a continuation of U.S. patent application Ser. No. 11/757,103, filed Jun. 1, 2007, now U.S. Pat. No. 8,799,620. U.S. patent application Ser. Nos. 14/312,669 and 11/757,103 are hereby incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4363095 | Woods et al. | Dec 1982 | A |
4466056 | Tanahashi | Aug 1984 | A |
5173872 | Crawford | Dec 1992 | A |
5754818 | Mohamed | May 1998 | A |
5893166 | Frank | Apr 1999 | A |
5918251 | Yamada et al. | Jun 1999 | A |
6085296 | Karkhanis et al. | Jul 2000 | A |
6105113 | Schimmel | Aug 2000 | A |
6138226 | Yoshioka et al. | Oct 2000 | A |
6260131 | Kikuta et al. | Jul 2001 | B1 |
6289432 | Ault et al. | Sep 2001 | B1 |
6351797 | Beard et al. | Feb 2002 | B1 |
6564311 | Kakeda et al. | May 2003 | B2 |
6598050 | Bourekas | Jul 2003 | B1 |
6651156 | Courtright et al. | Nov 2003 | B1 |
6895491 | Kjos et al. | May 2005 | B2 |
7302546 | Hsu et al. | Nov 2007 | B2 |
7334076 | Hendel et al. | Feb 2008 | B2 |
7363463 | Sheu et al. | Apr 2008 | B2 |
7428626 | Vega | Sep 2008 | B2 |
20050154854 | Hsu et al. | Jul 2005 | A1 |
20060020719 | Martinez et al. | Jan 2006 | A1 |
20060036830 | Dinechin et al. | Feb 2006 | A1 |
20060064567 | Jacobson et al. | Mar 2006 | A1 |
20060143405 | Ishikawa et al. | Jun 2006 | A1 |
20060206687 | Vega | Sep 2006 | A1 |
20070043908 | Diefendorff | Feb 2007 | A1 |
20140351553 | Falik et al. | Nov 2014 | A1 |
Number | Date | Country |
---|---|---|
85106711 | Feb 1987 | CN |
1784663 | Jun 2006 | CN |
4030287 | Apr 1991 | DE |
05-189320 | Jul 1993 | JP |
05-250262 | Sep 1993 | JP |
07-152654 | Jun 1995 | JP |
10228419 | Aug 1998 | JP |
2006-185284 | Jul 2006 | JP |
2010-228419 | Oct 2010 | JP |
2007024937 | Mar 2007 | WO |
2007139529 | Dec 2007 | WO |
Entry |
---|
Takehiro, Inoue, “64-Bit RISC CPU Employing MIPS Architecture”, Interface, Japan, CQ Publishing Co. Ltd., Aug. 1, 1998, vol. 24, No. 8, pp. 185-191. |
Non-Final Office Action received for U.S. Appl. No. 14/455,072, mailed on Mar. 17, 2015, 15 pages. |
Office Action received for German Patent Application No. 102008025476.2, mailed on Mar. 11, 2011, 6 pages of Office Action including 3 pages of English Translation. |
Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Sep. 26, 2013, 20 pages. |
Office Action received for Chinese Patent Application No. 200810100050.1, mailed on Apr. 8, 2011, 13 pages of Office Action including 7 pages of English Translation. |
Office Action received for Japanese Patent Application No. 2008-135642, mailed on May 17, 2011, 10 pages of Office Action including 4 pages of English Translation. |
Office Action received for Japanese Patent Application No. 2013-261239, mailed on Aug. 19, 2014, 3 pages of Office Action only. |
AMD, AMD64 Technology, “AMD64 Architecture Programmer's Manual,” vol. 2: System Programming, Publication No. 24593, Rev. 3.11, Dec. 2005, pp. 145 to 178. |
Doweck, Intel Corporation, “Inside Intel Core Microarchitecture,” Power Point Presentation, 2006, pp. 1-35. |
Doweck, Intel Corporation, “Inside Intel Core Microarchitecture and Smart Memory Access—An In-depth Look at Intel Innovations for Accelerating Execution of Memory-Related Instructions,” White Paper, pp. 1-12. |
Intel Corporation, Intel Technical Journal, “Intel Virtualization Technologyfor Directed 1/0,” vol. 10, Issue 3, Aug. 10, 2006, pp. 1-16. |
Intel Corporation, Intel Technical Journal, “Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization,” vol. 10, Issue 3, Aug. 20, 2006, pp. 1-14. |
Intel Corporation, “OS Independent Run-Time System Integrity Services,” pp. 1-13. |
Milenkovic, IBM Corporation, “Microprocessor Memory Management Units,” IEEE Micro, 1990, pp. 70-85. |
Simms, Patent Act 1977: Search Report under Section 17, Application No. GB0809264.5, Aug. 12, 2008. |
Klaus-Dieter Thies, “80486 Systemsoftware-Entwicklung,” Carl Hanser Verlag, Munich Vienna, 1992, pp. 172, 173, 194 to 203, and 264-265. |
Office Action received for United Kingdom Patent Application No. 0809264.5, mailed on Aug. 25, 2009, 2 pages. |
Office Action received for United Kingdom Patent Application No. 0809264.5, mailed on Aug. 13, 2008, 5 pages. |
Office Action received for German Patent Application No. 102008025476.2, mailed on Dec. 9, 2008, 3 pages of English Translation and 3 pages of Office Action. |
Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Oct. 28, 2009, 14 pages. |
Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Oct. 5, 2010, 17 pages. |
Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Dec. 6, 2011, 18 pages. |
Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Jul. 5, 2012, 18 pages. |
Non-Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Dec. 18, 2012, 23 pages. |
Non-Final Office Action received for U.S. Appl. No. 11/757,103, mailed on Apr. 2, 2012, 19 pages. |
Non-Final Office Action received for U.S. Appl. No. 11/757,103, mailed on May 24, 2011, 16 pages. |
Non-Final Office Action received for U.S. Appl. No. 11/757,103, mailed on May 14, 2010, 13 pages. |
Non-Final office Action received for U.S. Appl. No. 11/757,103, mailed on Mar. 24, 2009, 16 pages. |
Notice of Allowance received for U.S. Appl. No. 11/757,103, mailed on Apr. 3, 2014, 8 pages. |
Non-Final Office Action received for U.S. Appl. No. 14/312,669, mailed on Feb. 13, 2015, 16 pages. |
Notice of Allowance received for Chinese Patent Application No. 200810100050.1, mailed on Mar. 20, 2012, 2 Pages of English Translation and 2 Pages of Notice of Allowance. |
Office Action received for Chinese Patent Application No. 200810100050.1, mailed on Aug. 9, 2011, 4 pages of English Translation and 3 pages of Chinese Office Action. |
Office Action received for Chinese Patent Application No. 200810100050.1, mailed on Dec. 11, 2009, 3 pages of English Translation and 7 pages of Chinese Office Action. |
Office Action received for Chinese Patent Application No. 200810100050.1, mailed on Nov. 30, 2011, 4 pages of English Translation and 3 pages of Chinese Office Action. |
Office Action received for Chinese Patent Application No. 200810100050.1, mailed on Sep. 13, 2010, 7 pages of English Translation only. |
Office Action received for Japanese Patent Application No. 2008-135642, mailed on Sep. 13, 2006, 2 pages of English Translation and 2 pages of Japanese Office Action. |
Office Action received for Japanese Patent Application 2012-003898, mailed on Sep. 10, 2013, 3 pages of English Translation and 3 pages of Office Action. |
Office Action received for Japanese Patent Application No. 2012-003898 , mailed on May 21, 2013, 4 pages of English Translation and 4 pages of Office Action. |
Office Action received for Chinese Patent Application No. 201210167652.5, mailed on Aug. 8, 2014, 9 pages of English Translation and 16 pages of Chinese Office Action. |
Office Action received for Japanese Patent Application No. 2013-261239, mailed on Dec. 16, 2014, 6 pages of English Translation and 6 pages of Japanese Office Action. |
Office Action received for Chinese Patent Application No. 201210167652.5, mailed on Apr. 13, 2015, 5 pages of English Translation and 4 pages Of Chinese Office Action. |
Number | Date | Country | |
---|---|---|---|
20140351554 A1 | Nov 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14312669 | Jun 2014 | US |
Child | 14455147 | US | |
Parent | 11757103 | Jun 2007 | US |
Child | 14312669 | US |