2:510
Volume 2, Part 2: MP Coherence and Synchronization
To support existing IA-32 atomic read-modify-write operations that require the
LOCK
pin, an Itanium architecture-based operating system can use the DCR.lc bit to intercept
all external IA-32 read-modify-write operations. Then, the IA_32_Intercept(Lock)
handler can emulate these operations by first acquiring a cacheable virtualized
LOCK
variable, then performing the required memory operations non-atomically, and then
releasing the virtualized
LOCK
variable. This emulation allows the read-modify-write
sequence to appear atomic to other processors that use the semaphore.
2.1.4
Memory Fences
The memory fence instruction (
mf
) is the only instruction in the Itanium instruction set
with fence semantics. This instruction serializes the set of memory accesses before the
memory fence in program order with respect to the set of memory accesses that follow
the fence in program order.
2.2
Memory Ordering in the Intel
®
Itanium
®
Architecture
Understanding a system’s memory ordering model is key to writing either user- or
system-level multiprocessor software that uses shared memory to communicate
between processes and also that executes correctly on a shared-memory
multiprocessor system. For a general introduction to memory ordering models, see
Adve and Gharachorloo [AG95].
Four factors determine how a processor or system based on the Itanium architecture
orders a group of memory operations with respect to each other:
•
Data dependencies
define the relationship between operations from the same
processor that have register or memory dependencies on the same address
1
. This
relationship need only be honored by the local processor (i.e. the processor that
executes the operations).
• The
memory ordering semantics
define the relationship between memory
operations from a particular processor that reference different addresses. For
cacheable references, this relationship is honored by
all
observers in the coherence
domain.
• Aligned
release stores
and
semaphore operations
(both require and release forms)
become visible to all observers in the coherence domain in a single total order
except each processor may observe its own release stores (via loads or acquire
loads) prior to their being observed globally
2
.
• Non-programmer-visible state, such as
store buffers, processor caches,
or any
logically-equivalent structure, may satisfy read requests from loads or acquire loads
on the local processor before the data in the structure is made globally visible to
other observers.
1.
That is, A precedes B in program order and A produces a value that B consumes. This relationship is
transitive.
2.
Consequently, each such operation appears to become visible to each observer in the coherence
domain at the same time, with the exception that a release store can become visible to the storing
processor before others.
Содержание 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 ...