Hardware Reference
In-Depth Information
FIGURE 3.51
Sample code for superscalar register renaming
.
FIGURE 3.52
Rename table and on-the-fly register substitution logic for superscalar
machines
. (Note that
src
is source, and
dest
is destination.)
3.9 [5] <3.4> If you ever get confused about what a register renamer has to do, go back to the
assembly code you're executing, and ask yourself what has to happen for the right result to
be obtained. For example, consider a three-way superscalar machine renaming these three
instructions concurrently:
ADDI R1, R1, R1
ADDI R1, R1, R1
ADDI R1, R1, R1
If the value of
R1
starts out as 5, what should its value be when this sequence has executed?
3.10 [20] <3.4, 3.9> Very long instruction word (VLIW) designers have a few basic choices to
make regarding architectural rules for register use. Suppose a VLIW is designed with self-
draining execution pipelines: once an operation is initiated, its results will appear in the
destination register at most
L
cycles later (where
L
is the latency of the operation). There are
never enough registers, so there is a temptation to wring maximum use out of the registers
that exist. Consider
Figure 3.53
.
If loads have a 1 + 2 cycle latency, unroll this loop once,
Search WWH ::
Custom Search