Volume 3A System Programming Guide_ Part 1 (794103), страница 5
Текст из файла (страница 5)
. . . . . . . . . . . . . . . . . . . . . . . . . . . 7-19Typical BSP Initialization Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-19Typical AP Initialization Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 7-21Identifying Logical Processors in an MP System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22HYPER-THREADING AND MULTI-CORE TECHNOLOGY. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 7-24DETECTING HARDWARE MULTI-THREADING SUPPORT AND TOPOLOGY . . . . . . . . . . . . . . 7-24Initializing Processors Supporting Hyper-Threading Technology . . . . . . . . . . . . . . . . . . 7-25Initializing Multi-Core Processors . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25Executing Multiple Threads on an Intel® 64 or IA-32 Processor SupportingHardware Multi-Threading. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 7-25Handling Interrupts on an IA-32 Processor Supporting Hardware Multi-Threading . 7-26INTEL® HYPER-THREADING TECHNOLOGY ARCHITECTURE . . . . . . . . . . . . . . . . . . . . . . . . . 7-27State of the Logical Processors . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-28APIC Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29Memory Type Range Registers (MTRR).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29Page Attribute Table (PAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30Machine Check Architecture . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30Debug Registers and Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30Performance Monitoring Counters . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 7-31IA32_MISC_ENABLE MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-31Memory Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 7-31Serializing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-31MICROCODE UPDATE Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 7-31Self Modifying Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32Implementation-Specific HT Technology Facilities. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 7-32Processor Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32Processor Translation Lookaside Buffers (TLBs) . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 7-33Thermal Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-33External Signal Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 7-33MULTI-CORE ARCHITECTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-34Logical Processor Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 7-35Memory Type Range Registers (MTRR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-35Performance Monitoring Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 7-35IA32_MISC_ENABLE MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-35MICROCODE UPDATE Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-36PROGRAMMING CONSIDERATIONS FOR HARDWARE MULTI-THREADING CAPABLEPROCESSORS . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-36Hierarchical Mapping of Shared Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-36Identifying Logical Processors in an MP System. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 7-37Algorithm for Three-Level Mappings of APIC_ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-39Identifying Topological Relationships in a MP System . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 7-43MANAGEMENT OF IDLE AND BLOCKED CONDITIONS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-47HLT Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 7-47PAUSE Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-47Detecting Support MONITOR/MWAIT Instruction . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 7-48MONITOR/MWAIT Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-48Monitor/Mwait Address Range Determination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 7-50Required Operating System Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-51Use the PAUSE Instruction in Spin-Wait Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-51viii Vol. 3ACONTENTSPAGE7.11.6.27.11.6.37.11.6.47.11.6.57.11.6.67.11.6.7Potential Usage of MONITOR/MWAIT in C0 Idle Loops . . . . . . . . .
. . . . . . . . . . . . . . . .7-52Halt Idle Logical Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-53Potential Usage of MONITOR/MWAIT in C1 Idle Loops . . . . . . . . . . . . . . . . . . . . . . . . .7-54Guidelines for Scheduling Threads on Logical Processors Sharing ExecutionResources . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-55Eliminate Execution-Based Timing Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-55Place Locks and Semaphores in Aligned, 128-Byte Blocks of Memory. . . . .
. . . . . .7-55CHAPTER 8ADVANCED PROGRAMMABLEINTERRUPT CONTROLLER (APIC)8.18.28.38.48.4.18.4.28.4.38.4.48.4.58.4.68.4.78.4.7.18.4.7.28.4.7.38.4.7.48.4.88.58.5.18.5.28.5.38.5.48.5.58.68.6.18.6.28.6.2.18.6.2.28.6.2.38.6.2.48.6.38.78.88.8.18.8.28.8.38.8.3.18.8.48.8.58.8.68.8.6.1LOCAL AND I/O APIC OVERVIEW . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1SYSTEM BUS VS. APIC BUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5THE INTEL® 82489DX EXTERNAL APIC, THE APIC, AND THE XAPIC .
. . . . . . . . . . . . . . . . . 8-5LOCAL APIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6The Local APIC Block Diagram . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6Presence of the Local APIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10Enabling or Disabling the Local APIC . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10Local APIC Status and Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-11Relocating the Local APIC Registers . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-12Local APIC ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-12Local APIC State . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-13Local APIC State After Power-Up or Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-13Local APIC State After It Has Been Software Disabled . . . . . . . . . . . . . . . .
. . . . . . . . .8-14Local APIC State After an INIT Reset (“Wait-for-SIPI” State) . . . . . . . . . . . . . . . . . . . .8-14Local APIC State After It Receives an INIT-Deassert IPI . . . . . . . . . . . . . . . . . . . . . . . .8-15Local APIC Version Register . . . . . . . . . . . . . . .