Definition
Functional Unit
A functional unit is a hardware block in a processor that performs a specific class of operations.
Common functional units are the integer ALU, the floating-point unit (FPU), the load/store unit, the branch unit, and the multiplier/divider.
Types
Pipelined
Definition
Link to originalPipelined Functional Unit
A pipelined functional unit is a functional unit whose internal operation is divided into multiple independent stages. Each stage can process a different operation simultaneously, so the unit accepts a new input every clock cycle — even though a single operation takes several cycles to complete.
A pipelined unit has latency cycles but throughput of one operation per cycle. Only dependent operations pay the latency; independent operations benefit from full throughput.
Serial
Definition
Link to originalSerial Functional Unit
A serial functional unit (or unpipelined functional unit) is a functional unit that can process only one operation at a time. An operation occupies the entire unit for its full latency, and no new operation can enter until the current one completes.
A serial unit has throughput operations per cycle, where is the latency. A second operation issued before the first completes causes a structural hazard.
Example
CVA6 multiplier
The CVA6 RISC-V core has a multiplier functional unit that contains both a pipelined and a serial sub-unit:
- Multiply: 2 cycles, fully pipelined (accepts a new multiply every cycle after retiming).
- Divide: serial, up to 64 cycles in the worst case — blocks the unit until done.
This is pipelined and serial design inside one functional unit.