An arithmetic logic unit is a digital circuit that performs arithmetic and Boolean logic operations. It is one of the fundamental building blocks of modern central processing units.
Arithmetic operations that ALUs can perform are addition, subtraction, multiplication and division. Logic operations include inversion of single values and comparison of two or more values in NOT, AND and OR operations.
A control unit fetches data and desired operation type from main memory before relaying this information to the ALU for treatment. Most ALUs can only treat two values in a single operation. Operations involving more than two values, such as addition followed by multiplication, are usually broken down and done in successive steps. ALUs are the last component to perform operations on data in the processor; after exiting the ALU, the data is relayed back to memory. The ALU may also pass along information on the serial order of the current and subsequent operation.
Specialized types of ALUs are used in floating point units and graphics processing units. Most modern CPUs contain several ALUs, enabling the simultaneous execution of multiple arithmetic and logic operations. The ALU was first conceptualized by mathematician John von Neumann in 1945 as part of his work on EDVAC, an early computer.