1:68
Volume 1, Part 1: Application Programming Model
3. Software accesses the RSE backing store with advanced loads. See
“RSE and ALAT Interaction” on page 2:146
(since RSE stores do not invalidate
ALAT entries).
4. Software explicitly changes the virtual to physical register mapping on stacked
registers by switching the RSE backing stores. See
Backing Store Switch” on page 2:148
.
4.4.5.4
Combining Control and Data Speculation
Control speculation and data speculation are not mutually exclusive; a given load may
be both control and data speculative. Both control speculative (
ld.sa
,
ldf.sa
,
ldfp.sa
) and non-control speculative (
ld.a
,
ldf.a
,
ldfp.a
) variants of advanced
loads are defined for general and floating-point registers. If a speculative advanced
load generates a deferred exception token then:
1. Any existing ALAT entry with the same ALAT register tag is invalidated.
2. No new ALAT entry is allocated.
3. If the target of the load was a general-purpose register, its NaT bit is set.
4. If the target of the load was a floating-point register, then NaTVal is written to the
target register.
If a speculative advanced load does not generate a deferred exception, then its
behavior is the same as the corresponding non-control speculative advanced load.
Since there can be no matching entry in the ALAT after a deferred fault, a single
advanced load check or check load is sufficient to check both for data speculation
failures and to detect deferred exceptions.
4.4.5.5
Instruction Completers for ALAT Management
To help the compiler manage the allocation and deallocation of ALAT entries, two
variants of advanced load checks and check loads are provided: variants with clear
(
chk.a.clr
,
ld.c.clr
,
ld.c.clr.acq
,
ldf.c.clr
,
ldfp.c.clr
) and variants with no
clear (
chk.a.nc
,
ld.c.nc
,
ldf.c.nc
,
ldfp.c.nc
).
The clear variants are used when the compiler knows that the ALAT entry will not be
used again and wants the entry explicitly removed. This allows software to indicate
when entries are unneeded, making it less likely that a useful entry will be
unnecessarily forced out because all entries are currently allocated.
For the clear variants of check load, any ALAT entry with the same ALAT register tag is
invalidated independently of whether the address or size fields of the check load and
the corresponding advanced load match. For
chk.a.clr
, the entry is guaranteed to be
invalidated only when the instruction falls through (the recovery code is not executed).
Thus, a failing
chk.a.clr
may or may not clear any matching ALAT entries. In such
cases, the recovery code must explicitly invalidate the entry in question if program
correctness depends on the entry being absent after a failed
chk.a.clr
.
Non-clear variants of both kinds of data speculation checks act as a hint to the
processor that an existing entry should be maintained in the ALAT or that a new entry
should be allocated when a matching ALAT entry doesn’t exist. Such variants can be
used within loops to check advanced loads which were presumed loop-invariant and
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 ...