Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 Manual page 386

Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3:
Table of Contents

Advertisement

place at lower addresses, defined relative to BSP by the sizes of the clean and dirty
partitions. Although the stack is conceptually infinite in both directions, the effective
base of the stack is expected to be the first memory location of the first page allocated
to the backing store.
To allow the highest possible degree of concurrent execution, the processor and the
RSE operate independently of each other during normal program execution. The RSE
distinguishes between mandatory and eager load/store operations. Mandatory
load/store operations occur as the result of alloc, flushrs, loadrs, br.ret or rfi
instructions. Eager operations occur when the RSE is speculatively working ahead of
program execution, and it is not known whether this register spill/fill is actually
required by the program.
When the RSE works in the background, it issues eager RSE spill and fill operations to
extend the size of the clean partition in both directions—by decreasing the RSE load
pointer and loading values from the backing store into invalid registers (eager RSE
load), and by saving dirty registers to the backing store and increasing the RSE store
pointer (eager RSE store). Allocation of a sufficiently large frame (using alloc) or
execution of a flushrs instruction may cause the RSE to suspend program execution
and issue mandatory RSE stores until the required number of registers have been
spilled to the backing store. Similarly a br.ret or rfi back to a sufficiently large frame
or execution of a loadrs instruction may cause the RSE to suspend program execution
and issue mandatory RSE loads until the required number of registers have been
restored from the backing store. The RSE only operates in the foreground and suspends
program execution whenever forward progress of the program actually requires
registers to be spilled or filled.
Table 6-2
Table 6-2.
RSE Operation Instructions and State Modification
alloc
Affected State
r
=ar.pfs,i,l,
1
a
o,r
AR[BSP]{63:3}
unchanged
AR[PFS]
unchanged
GR[r
]
AR[PFS]
1
CFM
CFM.sof = i+l+o
CFM.sol = i+l
CFM.sor = r >> 3
a. These instructions have undefined behavior with an incomplete frame.
on page 2:146.
b. Normal br.ret instructions restore CFM with AR[PFS].pfm. However, if a bad PFS value is read by the br.ret instruction, all
CFM fields are set to zero.
2:138
describes the RSE operation instructions and state modifications.
a
br.call
, brl.call
AR[BSP]{63:3} + CFM.sol +
(AR[BSP]{8:3} + CFM.sol)/63
AR[PFS].pfm = CFM
AR[PFS].pec = AR[EC]
AR[PFS].ppl = PSR.cpl
N/A
CFM.sof -= CFM.sol
CFM.sol = 0
CFM.sor = 0
CFM.rrb.gr = 0
CFM.rrb.fr = 0
CFM.rrb.pr = 0
See "Bad PFS used by Branch Return" on page 2:143.
Instruction
a
a
br.ret
AR[BSP]{63:3} -
AR[PFS].pfm.sol -
(62-AR[BSP]{8:3}+
AR[PFS].pfm.sol)/63
unchanged
N/A
AR[PFS].pfm
b
or
CFM.sof = 0
CFM.sol = 0
CFM.sor = 0
CFM.rrb.gr = 0
CFM.rrb.fr = 0
CFM.rrb.pr = 0
See "RSE Behavior with an Incomplete Register Frame"
Volume 2, Part 1: Register Stack Engine
rfi
when CR[IFS].v = 1
AR[BSP]{63:3} -
CR[IFS].ifm.sof -
(62-AR[BSP]{8:3}+
CR[IFS].ifm.sof)/63
unchanged
N/A
CR[IFS].ifm

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 and is the answer not in the manual?

Questions and answers

Subscribe to Our Youtube Channel

This manual is also suitable for:

Itanium architecture 2.3

Table of Contents