Volume 2, Part 1: Addressing and Protection
2:79
become flushed and made visible prior to itself becoming visible. Even though IA-32
stores and loads are ordered, the write-coalesced data is not flushed unless the IA-32
stores or loads are to uncached memory types.
The Flush Cache (
fc
,
fc.i
) instruction flushes all write-coalesced data whose address
is within at least 32 bytes of the 32-byte aligned address specified by the Flush Cache
(
fc
,
fc.i
) instruction, forcing the data to become visible. The Flush Cache (
fc
,
fc.i
)
instruction may also flush additional write-coalesced data. The Flush Write buffers (
fwb
)
instruction is a “hint” to the processor to expedite flushing (visibility) of any pending
stores held in the coalescing buffer(s), without regard to address.
No indication is given when the flushing of the stores is completed. An
fwb
instruction
does not ensure ordering of coalesced stores, since later stores may be flushed before
prior stores. To ensure prior coalesced stores are made visible before later stores,
software must issue a release operation between stores.
The processor may at any time flush coalesced stores in any order before explicitly
requested to do so by software.
Coalesced pages are not ensured to be coherent with other processors’ coalescing
buffers or caches, or with the local processor’s caches. Loads to coalesced memory
pages by a processor see the results of all prior stores by the same processor to the
same coalesced memory page. Memory references made by the coalescing buffer (e.g.,
buffer flushes) have an unordered non-sequential memory ordering attribute.
“Sequentiality Attribute and Ordering” on page 2:82.
Data that has been read or prefetched into a coalescing buffer prior to execution of an
Itanium acquire or fence type instruction is invalidated by the acquire or fence
instruction. (See
for a list of acquire and fence instructions.)
4.4.6
Speculation Attributes
For present pages (TLB.p=1) which are marked with a
speculative
or a NaTPage
memory attribute, the processor may prefetch instructions (including IA-32), perform
address generation and perform load accesses (including IA-32) without resolving prior
control dependencies, including predicates, branches and interruptions. A page should
only be marked speculative if accesses to that page have no side-effects. For example,
many memory-mapped I/O devices have side-effects associated with reads and should
be marked non-speculative. If a page is marked speculative, a processor can read any
location in the page at any time independent of a programmer’s intentions or control
flow changes. As a result, software is required, at all times, to maintain valid page table
attributes for the ppn, ps and ma fields of all present translations whose memory
attribute is speculative or NaTPage. (For example, software should not insert into the
TLB, nor create in the VHPT, mappings whose memory attribute is WB, WC or NaTPage
unless the entire corresponding physical address range is populated. Placing such
mappings in the VHPT or inserting such mappings in the TLB could result in machine
check aborts.) High-performance operation is only attainable on speculative pages. The
speculative attribute is a hint; a processor may behave non-speculatively.
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 ...