Live-Too-Long Issues
6-106
Figure 6–20. Dependency Graph of Live-Too-Long Code (Split-Join Path Resolved)
SHR
a1
a0
2
MPY
ADD
sum0
1
ai
5
LDH
1
MPY
a2
1
ADD
a3
2
SHR
b1
b0
2
MPY
ADD
sum1
1
bi
5
LDH
2
1
MPY
b2
1
ADD
b3
2
b0
Ȁ
MV
1
2
a0
Ȁ
MV
1
A side
B side
6.10.5 Linear Assembly Resource Allocation
Example 6–58 shows the linear assembly code with the functional units as-
signed. The choice of units for the ADDs and SUB is flexible and represents
one of a number of possibilities. One goal is to ensure that no functional unit
is used more than the minimum iteration interval, or two times.
The two 2X paths and one 1X path are required because the values c, d, and
e reside on the side opposite from the instruction that is reading them. If these
values had created a bottleneck of resources and caused the minimum itera-
tion interval to increase, c, d, and e could have been loaded into the opposite
register file outside the loop to eliminate the cross path.