Memory Type Range-Registers define write policies for ranges of memory on the x86 architecture. Until the P6, MTRRs governed only peripherals. Following the P6, they also applied to memory accesses by the processor. MTRR's have largely been superseded by Page Attribute Tables. MTRR setup on Linux can be examined via /proc/mtrr.
For more detail, see my entry on caches.
- Uncacheable: Must never be cached. Primarily used for memory-mapped I/O.
- Write-through: Write both to cache and backing memory.
- Write-combining: Temporarily store to a write-combining buffer, and write in burst mode
- Write-protect: Writes are not allowed
- Write-back: Write to cache immediately, but to memory only when forced