Functional Units
2-5CPU Data Paths and ControlSPRU733
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