Electronic – Why are ALUs still serial

alucpu

One of the most common optimizations used in modern processors is to keep the silicon as busy as possible. Cache units access memory for the processor so other circuitry isn't tied up for the dozens of clock cycles it takes to access memory. Branch predictors speculatively schedule instructions so that the processor does not have to wait for a branch to fully resolve to pipeline instructions after a branch. Instructions are executed out of order so that instructions that follow it aren't unnecessarily delayed. Anything that can be parallelized in a processor, is.

Except apparently the ALU.

As far as I'm aware, ALUs are integrated circuits that direct operations to one of several individual operation circuits based on the operation specified by an operation field. ALUs are combinatorial: if a processor sets the ALU to perform a operation, such as multiplication, then while the ALU runs that specific computation, other functionality within the ALU, such as addition, is inaccessible while the multiplication still runs. It would appear to me that a processor that had separate logic circuitry for each operation rather than an ALU could run both operations in parallel, yielding performance gains for code that heavily uses multiple arithmetic operations.

So why isn't this done?

(Or at least, why isn't it common or noteworthy enough to be written about in literature about computer architecture?)

Best Answer

If addition is inaccessible while multiplication is still running it is because multiplication requires also some addition operations (together with some shifting).

Otherwise the ALU needs to have more than one adder (which is not unrealistic at all).

BTW: If the ALU can't do more than one arithmetic operation at the same time I wouldn't call that "serial" (because it reminds too much of serial adder; which performs adding operation bit by bit).
If the CPU can't do more than one instruction at the same time (in one cycle) it is just called "not super-scalar".

Related Topic