background image

Vol. 3B 15-1

CHAPTER 15

MACHINE-CHECK ARCHITECTURE

This chapter describes the machine-check architecture and machine-check exception mechanism found in the 
Pentium 4, Intel Xeon, Intel Atom, and P6 family processors. See Chapter 6, “Interrupt 18—Machine-Check Excep-
tion (#MC),” for more 
information on machine-check exceptions. A brief description of the Pentium processor’s 
machine check capability is also given.
Additionally, a signaling mechanism for software to respond to hardware corrected machine check error is covered.

15.1 MACHINE-CHECK 

ARCHITECTURE

The Pentium 4, Intel Xeon, Intel Atom, and P6 family processors implement a machine-check architecture that 
provides a mechanism for detecting and reporting hardware (machine) errors, such as: system bus errors, ECC 
errors, parity errors, cache errors, and TLB errors. It consists of a set of model-specific registers (MSRs) that are 
used to set up machine checking and additional banks of MSRs used for recording errors that are detected. 
The processor signals the detection of an uncorrected machine-check error by generating a machine-check excep-
tion (#MC), which is an abort class exception. The implementation of the machine-check architecture does not 
ordinarily permit the processor to be restarted reliably after generating a machine-check exception. However, the 
machine-check-exception handler can collect information about the machine-check error from the machine-check 
MSRs.
Starting with 45 nm Intel 64 processor on which CPUID reports DisplayFamily_DisplayModel as 06H_1AH (see 
CPUID instruction in Chapter 3, “Instruction Set Reference, A-L” in the Intel® 64 and IA-32 Architectures Software 
Developer’s Manual, Volume 2A
), 
the processor can report information on corrected machine-check errors and 
deliver a programmable interrupt for software to respond to MC errors, referred to as corrected machine-check 
error interrupt (CMCI). See Section 15.5 for detail. 
Intel 64 processors supporting machine-check architecture and CMCI may also support an additional enhance-
ment, namely, support for software recovery from certain uncorrected recoverable machine check errors. See 
Section 15.6 for detail. 

15.2 COMPATIBILITY 

WITH 

PENTIUM

 

PROCESSOR

The Pentium 4, Intel Xeon, Intel Atom, and P6 family processors support and extend the machine-check exception 
mechanism introduced in the Pentium processor. The Pentium processor reports the following machine-check 
errors:

data parity errors during read cycles

unsuccessful completion of a bus cycle

The above errors are reported using the P5_MC_TYPE and P5_MC_ADDR MSRs (implementation specific for the 
Pentium processor). Use the RDMSR instruction to read these MSRs. See Chapter 35, “Model-Specific Registers 
(MSRs),” for th
e addresses.
The machine-check error reporting mechanism that Pentium processors use is similar to that used in Pentium 4, 
Intel Xeon, Intel Atom, and P6 family processors. When an error is detected, it is recorded in P5_MC_TYPE and 
P5_MC_ADDR; the processor then generates a machine-check exception (#MC).
See Section 15.3.3, “Mapping of the Pentium

 

Processor Machine-Check Errors to the Machine-Check Architecture,” 

and Section 15.10.2, “Pentium

 

Processor Machine-Check Exception Handling,” for information on compatibility 

between machine-check code written to run on the Pentium processors and code written to run on P6 family 
processors.