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
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...