Volume 2, Part 1: Addressing and Protection
2:93
8. If PAL_CACHE_FLUSH is used to flush caches, it must also be called on all
processors in the coherency domain. In any case, PAL_MC_DRAIN must be called
on all processors. Using the IPI mechanism defined in
“Inter-processor Interrupt Messages” on page 2:128
the coherence domain, perform step 6.a, if necessary, and step 7 above in that
order on all processors in the coherence domain, and wait for all PAL_MC_DRAIN
calls to complete on all processors in the coherence domain before continuing.
This further guarantees that any cache lines containing addresses belonging to
page [X] have been evicted from all caches in the coherence domain and forced
onto the platform fabric. Note that this operation does not ensure that the cache
lines have been written back to memory.
9. Perform whatever platform dependent actions are necessary to flush any platform
caches of any copies of the memory being OLDed and to force all cache lines back
to the memory being OLDed. (Note: Refer to platform specific documentation.)
This sequence ensures that speculation and prefetching is disabled for the memory
range, regardless of WB or WBL attribute, that all in-flight prefetches are completed,
and that all caches lines are returned to memory.
4.5
Memory Datum Alignment and Atomicity
All Itanium instruction fetches, aligned load, store and semaphore operations (including
IA-32) are atomic, except for floating-point extended memory references (
ldfe
,
stfe
,
and IA-32 10-byte memory references) to non-write-back cacheable memory. In some
processor models, aligned 10-byte Itanium floating-point extended memory references
to non-write-back cacheable memory may raise an Unsupported Data Reference fault.
See
“Effects of Memory Attributes on Memory Reference Instructions” on page 2:86
for
details. Loads are allowed to be satisfied with values obtained from a store buffer (or
any logically equivalent structure) where architectural ordering permits, and values
loaded may appear to be non-atomic. For details, refer to
.
Load pair instructions are performed atomically under the following conditions: a
16-byte aligned load integer/double pair is performed as an atomic 16-byte memory
reference. An 8-byte aligned load single pair is performed as an atomic 8-byte memory
reference.
An aligned
ld16
or
st16
instruction is performed as an atomic 16-byte memory
reference. For these instructions, the address specified must be 16-byte aligned.
Unaligned
ld16
and
st16
instructions result in an Unaligned Data Reference fault
regardless of the state of PSR.ac.
Aligned Itanium data memory references never raise an Unaligned Data Reference
fault. Minimally, each Itanium instruction and its corresponding template are fetched
together atomically. Itanium unordered loads can use the store buffer for data values.
See
“Sequentiality Attribute and Ordering” on page 2:82
for details.
When PSR.ac is 1, any Itanium data memory reference that is not aligned on a
boundary the size of the operand results in an Unaligned Data Reference fault; e.g., 1,
2, 4, 8, 10, and 16-byte datums should be aligned on 1, 2, 4, 8, 16, and 16-byte
Содержание 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 ...