Functional Units
2-5
CPU Data Paths and Control
SPRU733
2.3 Functional Units
The eight functional units in the C6000 data paths can be divided into two
groups of four; each functional unit in one data path is almost identical to the
corresponding unit in the other data path. The functional units are described
in Table 2
−
2.
Most data lines in the CPU support 32-bit operands, and some support long
(40-bit) and double word (64-bit) operands. Each functional unit has its own
32-bit write port into a general-purpose register file (Refer to Figure 2
−
1). All
units ending in 1 (for example, .L1) write to register file A, and all units ending
in 2 write to register file B. Each functional unit has two 32-bit read ports for
source operands
src1
and
src2
. Four units (.L1, .L2, .S1, and .S2) have an
extra 8-bit-wide port for 40-bit long writes, as well as an 8-bit input for 40-bit
long reads. Because each unit has its own 32-bit write port, when performing
32-bit operations all eight units can be used in parallel every cycle.
See Appendix B for a list of the instructions that execute on each functional
unit.
Table 2
−
2. Functional Units and Operations Performed
Functional Unit
Fixed-Point Operations
Floating-Point Operations
.L unit (.L1, .L2)
32/40-bit arithmetic and compare operations
32-bit logical operations
Leftmost 1 or 0 counting for 32 bits
Normalization count for 32 and 40 bits
Arithmetic operations
DP
→
SP, INT
→
DP, INT
→
SP
conversion operations
.S unit (.S1, .S2)
32-bit arithmetic operations
32/40-bit shifts and 32-bit bit-field operations
32-bit logical operations
Branches
Constant generation
Register transfers to/from control register
file (.S2 only)
Compare
Reciprocal and reciprocal square-root
operations
Absolute value operations
SP
→
DP conversion operations
SPand DP adds and subtracts
SP and DP reverse subtracts (src2
−
src1)
.M unit (.M1, .M2) 16
×
16-bit multiply operations
32
×
32-bit multiply operations
Floating-point multiply operations
Mixed-precision multiply operations
.D unit (.D1, .D2)
32-bit add, subtract, linear and circular
address calculation
Loads and stores with 5-bit constant offset
Loads and stores with 15-bit constant
offset (.D2 only)
Load doubleword with 5-bit constant
offset