Volume 2, Part 2: Context Management
2:551
4.1.2
Preserving Floating-point Registers
The Itanium architecture encodes a floating-point register’s control speculative state as
a special unnormalized floating-point number called NaTVal. As a result, Itanium
floating-point registers do not have a NaT bit. The architecture provides the
stf.spill
and
ldf.fill
instructions to save and restore floating-point register values and control
speculative state. These instructions always generate a 16-byte memory image
regardless of the precision of the floating-point number contained in the register.
Preservation of data speculative state associated with floating-point registers needs to
be managed by software. As with the general registers, software is required to explicitly
invalidate a register’s ALAT entry using the
invala.e
instruction when restoring a
floating-point register. The Itanium calling conventions avoid such explicit ALAT
invalidations by disallowing data speculation to preserved floating-point registers
(FR2-5, FR16-31) across procedure calls.
4.2
Preserving Register State in the OS
The software calling conventions described in the previous section apply to state
preservation across procedure call boundaries. When entering the operating system
kernel either voluntarily (for a system call) or involuntarily (for handling an exception or
an external interrupt) additional concerns arise because the interrupted user’s context
needs to be preserved in its entirety.
The Itanium architecture defines a large register set: 128 general registers and 128
floating-point registers account for approximately 1 KByte and 2 KBytes of state,
respectively. The architecture provides a variety of mechanisms to reduce the amount
of state preservation that is needed on commonly executed code paths such as system
calls and high frequency exceptions such as TLB miss handlers.
Additionally, Itanium architecture-based operating systems have opportunities to
reduce the amount of context they need to save by distinguishing various kernel entry
and exit points. For instance, when entering the kernel on behalf of a voluntary system
call, the kernel need only preserve registers as outlined by the calling conventions.
Furthermore, the operating system can be sensitive to whether the preserved context is
coming from the IA-32 or Itanium instruction set, especially since the IA-32 register
context is substantially smaller than the full Itanium register set. Ideally, an Itanium
architecture-based operating system should use a single state storage structure which
contains a field that indicates the amount of populated state.
Table 4-2 summarizes several key operating system points at which state preservation
is needed.
Scratch GRs and FRs, the bulk of all state, only need to be preserved at involuntary
interruptions resulting from unexpected external interrupts or from exceptions that
need to call code written in a high-level programming language. The demarcation of
floating-point registers FR32-127 as “scratch” along with architectural support for lazy
state save/restore of the floating-point register file allows software to substantially
reduce the overhead of preserving the scratch FRs. See
for details.
Содержание 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 ...