Volume 3A System Programming Guide_ Part 1 (794103), страница 97
Текст из файла (страница 97)
It mustbe excluded from theapplication's segmentarea.Location of theapplication TSSin the GDTTSS_INDEX EQU 10TABLE GDT(ENTRY = (10:PROTECTED_MODE_TASK))Put the descriptor of theapplication TSS in GDTentry 10.EPROM sizeand locationsize and location of theinitialization codeSEGMENT startup.code (base =0FFFF0000H) ...memory(RANGE(ROM_AREA = ROM(x..y))Initialization code sizemust be less than 64Kand resides at upper most64K of the 4-GBytememory space.9.11MICROCODE UPDATE FACILITIESThe Pentium 4, Intel Xeon, and P6 family processors have the capability to correcterrata by loading an Intel-supplied data block into the processor. The data block iscalled a microcode update.
This section describes the mechanisms the BIOS needs toprovide in order to use this feature during system initialization. It also describes aspecification that permits the incorporation of future updates into a system BIOS.Intel considers the release of a microcode update for a silicon revision to be theequivalent of a processor stepping and completes a full-stepping level validation forreleases of microcode updates.A microcode update is used to correct errata in the processor.
The BIOS, which hasan update loader, is responsible for loading the update on processors during systeminitialization (Figure 9-7). There are two steps to this process: the first is to incorporate the necessary update data blocks into the BIOS; the second is to load updatedata blocks into the processor.9-36 Vol.
3PROCESSOR MANAGEMENT AND INITIALIZATIONUpdateLoaderNew UpdateUpdateBlocksCPUBIOSFigure 9-7. Applying Microcode Updates9.11.1Microcode UpdateA microcode update consists of an Intel-supplied binary that contains a descriptiveheader and data. No executable code resides within the update. Each microcodeupdate is tailored for a specific list of processor signatures. A mismatch of theprocessor’s signature with the signature contained in the update will result in afailure to load. A processor signature includes the extended family, extended model,type, family, model, and stepping of the processor (starting with processor family0fH, model 03H, a given microcode update may be associated with one of multipleprocessor signatures; see Section 9.11.2 for detail).Microcode updates are composed of a multi-byte header, followed by encrypted dataand then by an optional extended signature table. Table 9-6 provides a definition ofthe fields; Table 9-7 shows the format of an update.The header is 48 bytes.
The first 4 bytes of the header contain the header version.The update header and its reserved fields are interpreted by software based upon theheader version. An encoding scheme guards against tampering and provides ameans for determining the authenticity of any given update. For microcode updateswith a data size field equal to 00000000H, the size of the microcode update is 2048bytes. The first 48 bytes contain the microcode update header.
The remaining 2000bytes contain encrypted data.For microcode updates with a data size not equal to 00000000H, the total size fieldspecifies the size of the microcode update. The first 48 bytes contain the microcodeupdate header. The second part of the microcode update is the encrypted data. Thedata size field of the microcode update header specifies the encrypted data size, itsvalue must be a multiple of the size of DWORD. The total size field of the microcodeupdate header specifies the encrypted data size plus the header size; its value mustbe in multiples of 1024 bytes (1 KBytes). The optional extended signature table ifimplemented follows the encrypted data, and its size is calculated by (Total Size –(Data Size + 48)).Vol.
3 9-37PROCESSOR MANAGEMENT AND INITIALIZATIONNOTEThe optional extended signature table is supported starting withprocessor family 0FH, model 03H..Table 9-6. Microcode Update Field DefinitionsField NameOffset(bytes)Length(bytes)DescriptionHeader Version04Version number of the update header.Update Revision44Unique version number for the update, the basis for theupdate signature provided by the processor to indicatethe current update functioning within the processor.Used by the BIOS to authenticate the update and verifythat the processor loads successfully. The value in thisfield cannot be used for processor stepping identificationalone. This is a signed 32-bit number.Date84Date of the update creation in binary format: mmddyyyy(e.g.
07/18/98 is 07181998H).ProcessorSignature124Extended family, extended model, type, family, model,and stepping of processor that requires this particularupdate revision (e.g., 00000650H). Each microcodeupdate is designed specifically for a given extendedfamily, extended model, type, family, model, and steppingof the processor.The BIOS uses the processor signature field inconjunction with the CPUID instruction to determinewhether or not an update is appropriate to load on aprocessor. The information encoded within this fieldexactly corresponds to the bit representations returnedby the CPUID instruction.Checksum164Checksum of Update Data and Header. Used to verify theintegrity of the update header and data.
Checksum iscorrect when the summation of all the DWORDs (includingthe extended Processor Signature Table) that comprisethe microcode update result in 00000000H.Loader Revision204Version number of the loader program needed tocorrectly load this update. The initial version is00000001H.Processor Flags244Platform type information is encoded in the lower 8 bitsof this 4-byte field. Each bit represents a particularplatform type for a given CPUID. The BIOS uses theprocessor flags field in conjunction with the platform Idbits in MSR (17H) to determine whether or not an updateis appropriate to load on a processor.
Multiple bits may beset representing support for multiple platform IDs.Data Size284Specifies the size of the encrypted data in bytes, andmust be a multiple of DWORDs. If this value is00000000H, then the microcode update encrypted datais 2000 bytes (or 500 DWORDs).Total Size324Specifies the total size of the microcode update in bytes.It is the summation of the header size, the encrypteddata size and the size of the optional extended signaturetable.
This value is always a multiple of 1024.9-38 Vol. 3PROCESSOR MANAGEMENT AND INITIALIZATIONTable 9-6. Microcode Update Field Definitions (Contd.)Field NameOffset(bytes)Length(bytes)DescriptionReserved3612Reserved fields for future expansionUpdate Data48Data Size or2000Update dataExtended SignatureCountData Size +484Specifies the number of extended signature structures(Processor Signature[n], processor flags[n] andchecksum[n]) that exist in this microcode update.ExtendedChecksumData Size +524Checksum of update extended processor signature table.Used to verify the integrity of the extended processorsignature table.
Checksum is correct when thesummation of the DWORDs that comprise the extendedprocessor signature table results in 00000000H.ReservedData Size +5612Reserved fieldsProcessorSignature[n]Data Size +68 + (n * 12)4Extended family, extended model, type, family, model,and stepping of processor that requires this particularupdate revision (e.g., 00000650H). Each microcodeupdate is designed specifically for a given extendedfamily, extended model, type, family, model, and steppingof the processor.The BIOS uses the processor signature field inconjunction with the CPUID instruction to determinewhether or not an update is appropriate to load on aprocessor.
The information encoded within this fieldexactly corresponds to the bit representations returnedby the CPUID instruction.Processor Flags[n]Data Size +72 + (n * 12)4Platform type information is encoded in the lower 8 bitsof this 4-byte field. Each bit represents a particularplatform type for a given CPUID. The BIOS uses theprocessor flags field in conjunction with the platform Idbits in MSR (17H) to determine whether or not an updateis appropriate to load on a processor.
Multiple bits may beset representing support for multiple platform IDs.Checksum[n]Data Size +76 + (n * 12)4Used by utility software to decompose a microcodeupdate into multiple microcode updates where each ofthe new updates is constructed without the optionalExtended Processor Signature Table.To calculate the Checksum, substitute the PrimaryProcessor Signature entry and the Processor Flags entrywith the corresponding Extended Patch entry. Delete theExtended Processor Signature Table entries. TheChecksum is correct when the summation of all DWORDsthat comprise the created Extended Processor Patchresults in 00000000H.Vol. 3 9-39PROCESSOR MANAGEMENT AND INITIALIZATIONTable 9-7.
Microcode Update Format31241680Header VersionBytes0Update Revision4Month: 8Day: 8Year: 168Processor Signature (CPUID)12Stepping: 4Model: 4Family: 4Type: 2Reserved: 2ExtendedMode: 4ExtendedFamily: 8Res: 4Checksum16Loader Revision20Processor Flags24P0P1P2P3P4P5P6P7Reserved (24 bits)Data Size28Total Size32Reserved (12 Bytes)36Update Data (Data Size bytes, or 2000 Bytes if Data Size = 00000000H)48Extended Signature Count ‘n’Data Size+ 48Extended Processor Signature Table ChecksumData Size+ 52Reserved (12 Bytes)Data Size+ 56Processor Signature[n]Data Size+ 68 +(n * 12)Processor Flags[n]Data Size+ 72 +(n * 12)Checksum[n]Data Size+ 76 +(n * 12)9-40 Vol. 3PROCESSOR MANAGEMENT AND INITIALIZATION9.11.2Optional Extended Signature TableThe extended signature table is a structure that may be appended to the end of theencrypted data when the encrypted data only supports a single processor signature(optional case).
The extended signature table will always be present when theencrypted data supports multiple processor steppings and/or models (requiredcase).The extended signature table consists of a 20-byte extended signature header structure, which contains the extended signature count, the extended processor signaturetable checksum, and 12 reserved bytes (Table 9-8). Following the extended signature header structure, the extended signature table contains 0-to-n extendedprocessor signature structures.Each processor signature structure consist of the processor signature, processorflags, and a checksum (Table 9-9).The extended signature count in the extended signature header structure indicatesthe number of processor signature structures that exist in the extended signaturetable.The extended processor signature table checksum is a checksum of all DWORDs thatcomprise the extended signature table.