Intel 64 and IA-32 Architectures Software Developers Manual Volume 3A, System Programming Guide, Part 1
10-30 Vol. 3A
MEMORY CACHE CONTROL
• FIX (fixed range registers supported) flag, bit 8 — Fixed range MTRRs
(IA32_MTRR_FIX64K_00000 through IA32_MTRR_FIX4K_0F8000) are
supported when set; no fixed range registers are supported when clear.
• WC (write combining) flag, bit 10 — The write-combining (WC) memory type
is supported when set; the WC type is not supported when clear.
Bit 9 and bits 11 through 63 in the IA32_MTRRCAP MSR are reserved. If software
attempts to write to the IA32_MTRRCAP MSR, a general-protection exception (#GP)
is generated.
For the Pentium 4, Intel Xeon, and P6 family processors, the IA32_MTRRCAP MSR
always contains the value 508H.
10.11.2 Setting Memory Ranges with MTRRs
The memory ranges and the types of memory specified in each range are set by three
groups of registers: the IA32_MTRR_DEF_TYPE MSR, the fixed-range MTRRs, and
the variable range MTRRs. These registers can be read and written to using the
RDMSR and WRMSR instructions, respectively. The IA32_MTRRCAP MSR indicates
the availability of these registers on the processor (see Section 10.11.1, “MTRR
Feature Identification”).
10.11.2.1 IA32_MTRR_DEF_TYPE MSR
The IA32_MTRR_DEF_TYPE MSR (named MTRRdefType MSR for the P6 family
processors) sets the default properties of the regions of physical memory that are not
encompassed by MTRRs. The functions of the flags and field in this register are as
follows:
• Type field, bits 0 through 7 — Indicates the default memory type used for
those physical memory address ranges that do not have a memory type specified
for them by an MTRR (see Table 10-8 for the encoding of this field). The legal
values for this field are 0, 1, 4, 5, and 6. All other values result in a general-
protection exception (#GP) being generated.
Intel recommends the use of the UC (uncached) memory type for all physical
memory addresses where memory does not exist. To assign the UC type to
Figure 10-4. IA32_MTRRCAP Register
VCNT — Number of variable range registers
FIX — Fixed range registers supported
WC — Write-combining memory type supported
63
0
Reserved
W
C
71011
VCNT
F
I
X
89
Reserved