
Volume 1, Part 1: Application Programming Model
1:73
purpose. Memory updates by DMA devices are coherent with respect to instruction and
data accesses of processors. The consistency between instruction and data caches of
processors with respect to memory updates by DMA devices is provided by the
hardware. In case a program modifies its own instructions, the
sync.i
and
srlz.i
instructions are used to ensure that prior coherency actions are observed by a given
point in the program. Refer to the description
sync.i
Intel® Itanium® Instruction Set Reference
for an example of self-modifying code.
4.4.7
Memory Access Ordering
Memory data access ordering must satisfy read-after-write (RAW), write-after-write
(WAW), and write-after-read (WAR) data dependencies to the same memory location.
In addition, memory writes and flushes must observe control dependencies. Except for
these restrictions, reads, writes, and flushes may occur in an order different from the
specified program order. Note that no ordering exists between instruction accesses and
data accesses or between any two instruction accesses. The mechanisms described
below are defined to enforce a particular memory access order. In the following
discussion, the terms “previous” and “subsequent” are used to refer to the program
specified order. The term “visible” is used to refer to all architecturally visible effects of
performing a memory access (at a minimum this involves reading or writing memory).
Memory accesses follow one of four memory ordering semantics: unordered, release,
acquire or fence. Unordered data accesses may become visible in any order. Release
data accesses guarantee that all previous data accesses are made visible prior to being
made visible themselves. Acquire data accesses guarantee that they are made visible
prior to all subsequent data accesses. Fence operations combine the release and
acquire semantics into a bi-directional fence, i.e., they guarantee that all previous data
accesses are made visible prior to any subsequent data accesses being made visible.
Explicit memory ordering takes the form of a set of instructions: ordered load and
ordered check load (
ld.acq
,
ld.c.clr.acq
), ordered store (
st.rel
), semaphores
(
cmpxchg
,
xchg
,
fetchadd
), and memory fence (
mf
). The
ld.acq
and
ld.c.clr.acq
instructions follow acquire semantics. The
st.rel
follows release semantics. The
mf
instruction is a fence operation. The
xchg
,
fetchadd.acq
, and
cmpxchg.acq
instructions have acquire semantics. The
cmpxchg.rel
, and
fetchadd.rel
instructions
have release semantics. The semaphore instructions also have implicit ordering. If
there is a write, it will always follow the read. In addition, the read and write will be
performed atomically with no intervening accesses to the same memory region.
illustrates the ordering interactions between memory accesses with different
ordering semantics. “O” indicates that the first and second reference are performed in
order with respect to each other. A “-” indicates that no ordering is implied other than
data dependencies (and control dependencies for writes and flushes).
Table 4-20.
Memory Ordering Rules
First Reference
Second Reference
Fence
Acquire
Release
Unordered
fence
O
O
O
O
acquire
O
O
O
O
release
O
–
O
–
unordered
O
–
O
–
Содержание 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 ...