
2:518
Volume 2, Part 2: MP Coherence and Synchronization
2.2.1.8
Store Buffers May Satisfy Local Loads
In the Itanium memory ordering model, store buffers (or other logically-equivalent
structures) may satisfy local read requests from loads or acquire loads even if the
stored data is not yet visible to other agents in the coherence domain. Such bypassing
must honor any ordering semantics in the memory reference stream.
and
that
presents illustrate this behavior.
.
In this sequence, each processor bypasses its locally-written value from a store buffer
before the value becomes visible to the other processor. This behavior may make
accesses of different sizes that have overlapping memory addresses appear to complete
non-atomically.
The following discussion focuses on the outcome r1 = 1, r3 = 1, r2 = 0, and r4 = 0
because this outcome is allowed if and only if store buffers can satisfy local loads (other
outcomes are allowed but do not depend on being able to satisfy local loads from a
store buffer).
The Itanium memory ordering semantics only require that
and
.
There are no constraints on the relative ordering of M1 and M2 or M3 nor on the relative
ordering of M4 and M5 or M6.
Remember that both dependencies and the memory ordering model place requirements
on the manner in which a processor based on the Itanium architecture may re-order
accesses. Even though the Itanium memory ordering model allows loads to pass stores,
a processor based on the Itanium architecture cannot re-order the following sequence:
st.rel
[x] = r0
// M1: store 0 to [x]
ld.acq
r1 = [x]
// M2: cannot move above st.rel due to RAW
This is because there is a RAW dependency through memory between M1 and M2 and
the Itanium memory ordering model requires that the local processor resolve RAW,
WAR, and WAW dependencies between its memory accesses in program order. Thus,
even though the ordering semantics place no constraints on the relative
ordering of M1 and M2.
Because there is a RAW dependency through memory between M1 and M2 and between
M4 and M5, the ordering constraints
effectively
become:
1
Table 2-10.
Store Buffers May Satisfy Loads if the Stored Data is Not Yet
Globally Visible
Processor #0
Processor #1
st.rel
[x] = 1
// M1
ld.acq
r1 = [x]
// M2
ld
r2 = [y]
// M3
st.rel
[y] = 1
// M4
ld.acq
r3 = [y]
// M5
ld
r4 = [x]
// M6
Outcome:
r1 = 1, r3 = 1, r2 = 0, and r4 = 0 is allowed
1.
That is, the store operations must become visible to the local processors before their loads that read
the stored value.
M2
M3
M5
M6
M1
M2
M1
M2
M3
M4
M5
M6
Содержание 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 ...