Volume 2, Part 2: MP Coherence and Synchronization
2:509
specific opcode chosen. The
xchg
instruction always has acquire semantics. These
instructions read a value from memory, modify this value using an instruction-specific
operation, and then write the modified value back to memory. The read-modify-write
sequence is atomic by definition.
2.1.3.1
Considerations for using Semaphores
The memory location on which a semaphore instruction operates on must obey two
constraints. First, the location must be cacheable (the
fetchadd
instruction is an
exception to this rule; it may also operate on exported uncacheable locations, UCE).
Thus, with the exception of
fetchadd
to UCE locations, the Itanium architecture does
not support semaphores in uncacheable memory. Second, the location must be
naturally-aligned to the size of the semaphore access. If either of these two constraints
are not met, the processor generates a fault.
The exported uncacheable memory attribute, UCE, allows a processor based on the
Itanium architecture to export fetch and add operations to the platform. A processor
that does not support exported
fetchadd
will fault when executing a
fetchadd
to a UCE
memory location. If the processor supports exported
fetchadd
but the platform does
not, the behavior is undefined when executing a
fetchadd
to a UCE memory location.
Sharing locks between IA-32 and Itanium architecture-based code does work with the
following restrictions:
• Itanium architecture-based code can only manipulate an IA-32 semaphore if the
IA-32 semaphore is aligned.
• Itanium architecture-based code can only manipulate an IA-32 semaphore if the
IA-32 semaphore is allocated in write-back cacheable memory.
An Itanium architecture-based operating system can emulate IA-32 uncacheable or
misaligned semaphores by using the technique described in the next section.
2.1.3.2
Behavior of Uncacheable and Misaligned Semaphores
A processor based on the Itanium architecture raises an Unsupported Data Reference
fault if it executes a semaphore that accesses a location with a memory attribute that
the semaphore does not support.
If the alignment requirement for Itanium architecture-based semaphores is not met, a
processor based on the Itanium architecture raises an Unaligned Data Reference fault.
This fault is taken regardless of the setting of the user mask alignment checking bit,
UM.ac.
The DCR.lc bit controls how the processor behaves when executing an atomic IA-32
memory reference under an external bus lock. When the DCR.lc bit (see
3.3.4.1, “Default Control Register (DCR – CR0)”
) is 1 and an IA-32 atomic memory
reference requires a non-cacheable or misaligned read-modify-write operation, an
IA_32_Intercept(Lock) fault is raised. Such memory references require an external bus
lock to execute correctly. To preserve
LOCK
pin functionality, an Itanium
architecture-based operating system can virtualize the bus lock by implementing a
shared cacheable global
LOCK
variable.
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...