2:580
Volume 2, Part 2: Runtime Support for Control and Data Speculation
Details on these three models are discussed in the next three sections as well as in
Section 5.5.5, “Deferral of Speculative Load Faults” on page 2:105
.
6.1.1
Hardware-only Deferral
Hardware only deferral is configured by setting all speculation deferral bits in the DCR
register (dd, da, dr, dx, dk, dp and dm) to 1. All excepting control speculative loads are
automatically deferred by the processor. As a result, all excepting control speculative
loads that hit non-fatal exceptions, e.g. a TLB miss or a page fault, will be deferred by
the processor hardware, and will cause speculation recovery code to be invoked. This
can cause speculation recovery code to be invoked more often than strictly necessary.
6.1.2
Combined Hardware/Software Deferral
Setting of a DCR deferral bit to 1 results in hardware deferral by the processor, whereas
clearing of a deferral bit causes exceptions to be delivered to software. The operating
system may want to configure the processor to deliver control speculative exceptions to
its handlers for certain non-fatal faults such as TLB misses or protection key misses.
Early handling of these exceptions avoids unnecessary invocation of speculation
recovery code, and the associated performance penalty. This is especially useful for
exceptions handlers whose overhead is small. Note that handlers will also be invoked
for excepting control speculative loads that have been hoisted from not taken paths,
and therefore are not needed. As a result, software handling of control speculative
exceptions is recommended only for statistically infrequent light weight fault handlers
such as TLB miss or protection key miss handlers. If, while handling the exception, the
operating system determines that this instance of the exception may require too much
effort, e.g. a TLB miss turns out to be a page fault, the handler still has the choice of
software-deferring the exception.
6.1.3
Software-only Deferral
Software only deferral is configured by clearing all speculation deferral bits in the DCR
register (dd, da, dr, dx, dk, dp and dm) to 0. Control speculative loads that hit any
Debug, Access Bit, Access Rights, Key Permissions, Key Miss, or Not Present fault, or
that suffer a TLB miss or a VHPT Translation fault will be delivered to software.
6.2
Speculation Recovery Code Requirements
As described by
, code generators for the Itanium architecture are not always
required to generate speculation recovery code for all forms of speculation. Compilers
and operating systems can collaborate to provide two models for handling of recovery
from failed control speculation:
• ITLB.ed=1 (application with recovery code
–
the default): The compiler generates
appropriate recovery code for all
ld.s
instructions, as well as for
ld.sa
and
ld.a
instructions that have speculatively executed uses. Speculation failure of
ld.sa
and
ld.a
instructions that have no speculatively executed uses can be recovered by a
ld.c
instruction, and hence do not require recovery code. The operating system
may defer non-fatal exceptions.
Содержание 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 ...