beautypg.com

Intel IA-32 User Manual

Page 8

background image

CONTENTS

viii

Vol. 3A

PAGE

7.5.4

MP Initialization Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18

7.5.4.1

Typical BSP Initialization Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-19

7.5.4.2

Typical AP Initialization Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-21

7.5.5

Identifying Logical Processors in an MP System. . . . . . . . . . . . . . . . . . . . . . . . . 7-22

7.6

HYPER-THREADING AND MULTI-CORE TECHNOLOGY . . . . . . . . . . . . . . . . . 7-23

7.7

DETECTING HARDWARE MULTI-THREADING SUPPORT AND
TOPOLOGY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-24

7.7.1

Initializing IA-32 Processors Supporting Hyper-Threading Technology . . . . . . . 7-24

7.7.2

Initializing Dual-Core IA-32 Processors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25

7.7.3

Executing Multiple Threads on an IA-32 Processor
Supporting Hardware Multi-Threading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25

7.7.4

Handling Interrupts on an IA-32 Processor
Supporting Hardware Multi-Threading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25

7.8

INTEL

®

HYPER-THREADING TECHNOLOGY ARCHITECTURE . . . . . . . . . . . . 7-26

7.8.1

State of the Logical Processors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-27

7.8.2

APIC Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-28

7.8.3

Memory Type Range Registers (MTRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-28

7.8.4

Page Attribute Table (PAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29

7.8.5

Machine Check Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-29

7.8.6

Debug Registers and Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29

7.8.7

Performance Monitoring Counters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29

7.8.8

IA32_MISC_ENABLE MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30

7.8.9

Memory Ordering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30

7.8.10

Serializing Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30

7.8.11

MICROCODE UPDATE Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30

7.8.12

Self Modifying Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-31

7.8.13

Implementation-Specific HT Technology Facilities . . . . . . . . . . . . . . . . . . . . . . . 7-31

7.8.13.1

Processor Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-31

7.8.13.2

Processor Translation Lookaside Buffers (TLBs) . . . . . . . . . . . . . . . . . . . . . . 7-31

7.8.13.3

Thermal Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-32

7.8.13.4

External Signal Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32

7.9

DUAL-CORE ARCHITECTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-33

7.9.1

Logical Processor Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-33

7.9.2

Memory Type Range Registers (MTRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-34

7.9.3

Performance Monitoring Counters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-34

7.9.4

IA32_MISC_ENABLE MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-34

7.9.5

MICROCODE UPDATE Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-34

7.10

PROGRAMMING CONSIDERATIONS FOR HARDWARE
MULTI-THREADING CAPABLE PROCESSORS . . . . . . . . . . . . . . . . . . . . . . . . . 7-35

7.10.1

Hierarchical Mapping of Shared Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-35

7.10.2

Identifying Logical Processors in an MP System. . . . . . . . . . . . . . . . . . . . . . . . . 7-36

7.10.3

Algorithm for Three-Level Mappings of APIC_ID . . . . . . . . . . . . . . . . . . . . . . . . 7-38

7.10.4

Identifying Topological Relationships in a MP System . . . . . . . . . . . . . . . . . . . . 7-41

7.11

MANAGEMENT OF IDLE AND BLOCKED CONDITIONS . . . . . . . . . . . . . . . . . . 7-45

7.11.1

HLT Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-45

7.11.2

PAUSE Instruction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-46

7.11.3

Detecting Support MONITOR/MWAIT Instruction . . . . . . . . . . . . . . . . . . . . . . . . 7-46

7.11.4

MONITOR/MWAIT Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-47

7.11.5

Monitor/Mwait Address Range Determination . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-48

7.11.6

Required Operating System Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-49

7.11.6.1

Use the PAUSE Instruction in Spin-Wait Loops . . . . . . . . . . . . . . . . . . . . . . . 7-49

7.11.6.2

Potential Usage of MONITOR/MWAIT in C0 Idle Loops . . . . . . . . . . . . . . . . 7-50