2:508
Volume 2, Part 2: MP Coherence and Synchronization
•
Fence
semantics combine acquire and release semantics (i.e. the instruction is
made visible after all prior orderable instructions and before all subsequent
orderable instructions).
In the above definitions “prior” and “subsequent” refer to the program-specified order.
An “orderable instruction” is an instruction that the memory ordering model can use to
establish ordering relationships
1
. The term “visible” refers to all architecturally-visible
(from the standpoint of multiprocessor coherency) effects of performing an instruction.
Specifically,
• Accesses to uncacheable or write-coalescing memory regions are visible when they
reach the processor bus.
• Loads from cacheable memory regions are visible when they hit a
non-programmer-visible structure such as a cache or store buffer.
• Stores to cacheable memory regions are visible when they enter a snooped (in a
multiprocessor coherency sense) structure.
Memory access instructions typically have an ordered and an unordered form (i.e. a
form with unordered semantics and a form with either acquire, release, or fence
semantics). The Itanium architecture does not provide all possible combinations of
instructions and ordering semantics. For example, the Itanium instruction set does not
contain a store with fence semantics.
Section 4.4.7, “Memory Access Ordering” on page 1:73
“Sequentiality Attribute and Ordering” on page 2:82
discuss ordering, orderable
instructions, and visibility in greater depth.
describes how the ordering semantics affect the Itanium
memory ordering model.
2.1.2
Loads and Stores
In the Itanium architecture, a load instruction has either unordered or acquire
semantics while a store instruction has either unordered or release semantics. By using
acquire loads (
ld.acq
) and release stores (
st.rel
), the memory reference stream of
an Itanium architecture-based program can be made to operate according to the IA-32
ordering model. The Itanium architecture uses this behavior to provide IA-32
compatibility. That is, an Itanium acquire load is equivalent to an IA-32 load and an
Itanium release store is equivalent to an IA-32 store, from a memory ordering
perspective.
Loads can be either speculative or non-speculative. The speculative forms (
ld.s
,
ld.sa
, and
ld.a
) support control and data speculation.
2.1.3
Semaphores
The Itanium architecture provides a set of three semaphore instructions: exchange
(
xchg
), compare and exchange (
cmpxchg
), and fetch and add (
fetchadd
). Both
cmpxchg
and
fetchadd
may have either acquire or release semantics depending on the
1.
The ordering semantics of an instruction
do not
imply the orderability of the instruction. Specifically,
unordered ordering semantics alone
do
not
make an instruction unorderable; there are orderable
instructions with each of the four ordering semantics.
Содержание 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 ...