Model (or machine) Specific Register. A
register found in, and uniquely
serviced by, a given
microprocessor. MSRs are generally used for recording or observing
internal processor events which, though sometimes useful for
debugging purposes or
performance tuning, are generally not thought of as being addressable by the
CPU's core programming interface or
instruction set architecture. In general, they are not
guaranteed to be present in future
CPU redesigns, and therefore code which uses them should be labeled as such. Also, code which uses
MSRs will suffer from
portability issues when cross-platform recompilation is desired.
For example, the Pentium Pro provides access to its performance data through Model Specific Registers. These registers include counts of memory reads, memory writes, L1 cache misses, branches, pipeline flushes, instructions executed, pipeline stalls, misaligned memory accesses, bus locked cycles, and interrupts. The Pentium IV uses MSRs to provide data on ACPI and thermal monitoring.
The Sun UltraSPARC 3, IBM Power2, DEC/Compaq Alpha, and MIPS R10000 provide a similar set of counters. Many DSPs provide similar data in a variety of ways, including MSRs.