Intel IA-32 Manuale Utente

Pagina di 636
Vol. 3A 9-41
PROCESSOR MANAGEMENT AND INITIALIZATION
9.11.3
Processor Identification
Each microcode update is designed to for a specific processor or set of processors. To determine
the correct microcode update to load, software must ensure that one of the processor signatures
embedded in the microcode update matches the 32-bit processor signature returned by the
CPUID instruction when executed by the target processor with EAX = 1.  Attempting to load a
microcode update that does not match a processor signature embedded in the microcode update
with the processor signature returned by CPUID will cause the processor to reject the update.
Example 9-5 shows how to check for a valid processor signature match between the processor
and microcode update.
Example 9-5.  Pseudo Code to Validate the Processor Signature
ProcessorSignature 
← CPUID(1):EAX
If (Update.HeaderVersion == 00000001h)
{
// first check the ProcessorSignature field
If (ProcessorSignature == Update.ProcessorSignature)
Success
// if extended signature is present
Else If (Update.TotalSize > (Update.DataSize + 48))
{
//
// Assume the Data Size has been used to calculate the 
// location of Update.ProcessorSignature[0].
//
For (N 
← 0; ((N < Update.ExtendedSignatureCount) AND 
 
(ProcessorSignature != Update.ProcessorSignature[N])); N++);
// if the loops ended when the iteration count is
// less than the number of processor signatures in
// the table, we have a match
If (N < Update.ExtendedSignatureCount)
Success
Else
Fail
}
Else
Fail
Else
Fail