Memory type range register

Source: Wikipedia, the free encyclopedia.

Memory type range registers (MTRRs) are a set of

CPU's cache
and the cache is marked dirty, so that its contents are written to memory later.

Write-combining allows

memory-mapped I/O
.

MTRRs in x86-PC processors

In early

x86 architecture systems, especially where the cache was provided by separate chips outside of the CPU package, this function was controlled by the chipset and configured through BIOS
settings.

When the CPU cache was moved inside the CPU, the CPUs implemented fixed-range MTRRs which cover the first

VGA accesses and all other memory-accesses done while the system is in real mode. Above 1 MB, CPUs provide a number of variable-range MTRRs, which can be freely placed and even overlap. These variable-range MTRRs can be used to set the caching policy of graphics memory and other memory ranges used by PCI
devices.

The MTRR count varies:

  • The Intel P6 family of processors (Pentium Pro, Pentium II) and later have MTRRs which may be used to control access to memory ranges.[1]
  • The
    Address Range Registers
    (ARRs) which provide similar functionality to MTRRs.
  • The Centaur C6 WinChip has 8 MCRs, allowing write-combining.
  • The VIA Cyrix III and VIA C3 CPUs offer 8 Intel-style MTRRs.
  • The AMD Athlon family provide 8 Intel-style MTRRs.
  • The
    K6-III
    processors have two MTRRs.

The memory interface of

memory-mapped I/O. This allows, for example, shadow RAM
to be implemented by copying ROM contents into RAM.

Successor

Newer x86 CPUs support a more advanced technique called

GB
even on a laptop, and several times that amount on a desktop system.

See also

References

  1. ^ "The Linux Gamers' HOWTO". tldp.org. Retrieved 2009-10-03.
  • Details on how MTRRs work are described in the processor manuals from CPU vendors.