Volume 2, Part 1: Register Stack Engine
2:133
Register Stack Engine
6
The register stack engine (RSE) moves registers between the register stack and the
backing store in memory without explicit program intervention. The RSE operates
concurrently with the processor and can take advantage of unused memory bandwidth
to dynamically issue register spill and fill operations. In this manner, the latency of
register spill/fill operations can be overlapped with useful program work. The basic
principles of the register stack are discussed in
Section 4.1, “Register Stack” on
. This chapter presents the internal state, the programming model and the
interruption behavior of the register stack engine.
6.1
RSE and Backing Store Overview
The register stack frames are mapped onto a set of physical registers which operate as
a circular buffer containing the most recently created frames. The RSE spills and fills
these physical registers to/from a backing store in memory. The RSE moves registers
between the physical register stack and the backing store without explicit program
intervention. As indicated in
, the RSE operates on the physical stacked
registers outside of the currently active frame (as defined by CFM). These registers
contain the frames of the parent procedures of the current procedure.
, the backing store is organized as a stack in memory that grows
from lower to higher addresses. The Backing Store Pointer (BSP) application register
contains the address of the first (lowest) memory location reserved for the current
frame (i.e., the location at which GR32 of the current frame will be spilled). RSE spill/fill
activity occurs at addresses below what is contained in the BSP since the RSE spills/fills
the frames of the current procedure’s parents. The BSPSTORE application register
contains the address at which the next RSE spill will occur. The address register which
corresponds to the next RSE fill operation, the BSP load pointer, is not architecturally
visible. The addresses contained in BSP and BSPSTORE are always aligned to an 8-byte
boundary. The backing store contains the local area of each frame. The output area is
not spilled to the backing store (unless it later becomes part of a callee’s local area).
Within each stack frame, lower-addressed registers are stored at lower memory
addresses. RSE spills of NaTed stacked general registers are subject to the same
memory update constraints as software spills (st8.spill) of NaTed static general
registers (see
“Register Spill and Fill” on page 1:62
The RSE also spills/fills the NaT bits corresponding to the stacked registers. The NaT
bits corresponding to the static subset must be spilled/filled as necessary by software.
The NaT bits are the 65th bit of each general register. The NaT bits for the stacked
subset are spilled/filled in groups of 63 corresponding to 63 consecutive physical
stacked registers. When the RSE spills a register to the backing store the corresponding
NaT bit is copied to the RSE NaT collection (RNAT) application register. Whenever bits
8:3 of BSPSTORE are all ones, the RSE stores RNAT to the backing store. As shown in
, this results in a backing store memory image in which every 63 register
values are followed by a collection of NaT bits. Bit 0 of the NaT collection corresponds to
the first (lowest addressed) of the 63 register values; bit 62 corresponds to the 63rd
register value. Bit 63 of the NaT collection is always written as zero. When the RSE fills
Содержание 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 ...