2:552
Volume 2, Part 2: Context Management
In principal, preserved GRs and FRs need not be spilled/filled when entering the kernel.
Whatever function is called from the low-level interruption handler or the system call
entry point will itself observe the calling conventions and preserve the registers. The
only occasion when preserved registers need to be spilled/filled is on a process or
thread context switch. However, many operating systems provide
get_context()
functions that provide user context upon demand. Although such functions are called
infrequently, many operating systems prefer to pay the penalty of spilling preserved
registers at system call and at interruption entry points to avoid the complexity of
piecing together user state from various potentially unknown kernel stack locations on
demand. Fortunately, the amount of preserved Itanium general register state is
relatively small, and the Itanium architecture provides additional mechanisms for lazy
floating-point state management. See
for details.
Stacked GRs are managed by the register stack engine (RSE). On process/thread
context switches the operating system is required to completely flush the register stack
to its backing store in memory (using the
flushrs
instruction). In cases where the
operating system knows that it will return to the user process along the same path, e.g.
in system calls and exception handling code, the Itanium architecture allows operating
systems to switch the register stack backing store without having to flush all stacked
registers to memory. This allows such kernel entry points to switch from the user’s to
the kernel’s backing store without causing any memory traffic, as described in the next
section.
4.2.1
Preservation of Stacked Registers in the OS
A switch from a thread of execution into the operating system kernel, whether on
behalf of an involuntary interruption or a voluntary system call, requires preservation of
the stacked registers. Instead of flushing all dirty stacked register’s to memory, the RSE
can be used to automatically preserve the stacked registers of the interrupted context.
Table 4-2.
Register State Preservation at Different Points in the OS
Register Type
Number of
Registers
System Call
(Voluntary)
Lightweight
Interrup-
tions
a
(Involuntary)
a. For details on lightweight interruption handlers refer to
Section 3.4.1, “Lightweight Interruptions” on
Heavyweight
Interrup-
tions
b
(Involuntary)
b. For details on heavyweight interruption handlers refer to
Section 3.4.2, “Heavyweight Interruptions” on
Process/Thread
Context Switch
(Voluntary)
Scratch GRs
23
no spill/fill
required
Untouched
(use banked
registers)
spill/fill
required
no spill/fill required
(done at interruption)
Preserved GRs
4
no spill/fill
required
Untouched
(use banked
registers)
no spill/fill
required
spill/fill
required
Stacked GRs
96
Backing Store
Switch
Untouched
Backing Store
Switch
Synchronous
Backing Store Switch
using
flushrs
c
c. Refer to
Section 6.11.3, “Synchronous Backing Store Switch”
for details.
Scratch FRs
106
no spill/fill
required
Untouched
spill/fill
required
no spill/fill required
(done at interruption)
Preserved FRs
20
no spill/fill
required
Untouched
no spill/fill
required
spill/fill
required
Содержание 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 ...