
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
Содержание 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 ...