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.
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...