Specifications
Intel
®
64 and IA-32 Architectures Software Developer’s Manual Documentation Changes 223
Documentation Changes
• PDPTE cache (IA-32e paging only).
1
Each PDPTE-cache entry is referenced by an
18-bit value and is used for linear addresses for which bits 47:30 have that value.
The entry contains information from the PML4E and PDPTE used to translate such
linear addresses:
— The physical address from the PDPTE (the address of the page directory). (No
PDPTE-cache entry is created for a PDPTE that maps a 1-GByte page.)
— The logical-AND of the R/W flags in the PML4E and the PDPTE.
— The logical-AND of the U/S flags in the PML4E and the PDPTE.
— The logical-OR of the XD flags in the PML4E and the PDPTE.
— The values of the PCD and PWT flags of the PDPTE.
The following items detail how a processor may use the PDPTE cache:
— If the processor has a PDPTE-cache entry for a linear address, it may use that
entry when translating the linear address (instead of the PML4E and the PDPTE in
memory).
— The processor does not create a PDPTE-cache entry unless the P flag is 1, the PS
flag is 0, and the reserved bits are 0 in the PML4E and the PDPTE in memory.
...
4.10.3.2 Recommended Invalidation
The following items provide some recommendations regarding when software should
perform invalidations:
• If software modifies a paging-structure entry that identifies the final page frame for
a page number (either a PTE or a paging-structure entry in which the PS flag is 1), it
should execute INVLPG for any linear address with a page number whose translation
uses that PTE.
2
(If the paging-structure entry may be used in the translation of
different page numbers — see Section 4.10.2.3 — software should execute INVLPG
for linear addresses with each of those page numbers; alternatively, it could use MOV
to CR3 or MOV to CR4.)
• If software modifies a paging-structure entry that references another paging
structure, it may use one of the following approaches depending upon the types and
number of translations controlled by the modified entry:
— Execute INVLPG for linear addresses with each of the page numbers with trans-
lations that would use the entry. However, if no page numbers that would use the
entry have translations (e.g., because the P flags are 0 in all entries in the paging
structure referenced by the modified entry), it remains necessary to execute
INVLPG at least once.
— Execute MOV to CR3 if the modified entry controls no global pages.
— Execute MOV to CR4 to modify CR4.PGE.
• If software using PAE paging modifies a PDPTE, it should reload CR3 with the
register’s current value to ensure that the modified PDPTE is loaded into the corre-
sponding PDPTE register (see Section 4.4.1).
1. With PAE paging, the PDPTEs are stored in internal, non-architectural registers. The operation of
these registers is described in Section 4.4.1 and differs from that described here.
2. One execution of INVLPG is sufficient even for a page with size greater than 4 KBytes.