Arithmetic Logic Unit (ALU): A subunit within a computer's CENTRAL PROCESSING UNIT that performs mathematical operations such as addition, and logical shifts on the values held in the processors REGISTERS or its ACCUMULATOR.
It is the size of the word that the ALU can handle which, more than any other measure, determines the word-size of a processor: that is, a 3Z-bit processor is one with a 32-bit ALU.
The simplest sort of ALU performs only addition, BOOLEAN LOGIC (including the NOT or complement operation) and shifts a word one bit to the right or left, all other arithmetic operations being synthesized from sequences of these primitive operations. For example, subtraction is performed as complement-add, multiplication by a power of two by shifting, division by repeated subtraction. However, there is an increasing tendency in modern processors to implement extra arithmetic functions in hardware, such as dedicated multiplier or divider units.
The ALU might once have been considered the very core of the computer in the sense that it alone actually performed calculations. However, in modern SUPERSCALAR processor architectures this is no longer true, as there are typically several different ALUs in each of several separate integer and floating-point units. An ALU may be required to perform not only those calculations required by a user program but also many internal calculations required by the processor itself, for example to derive addresses for instructions that employ different ADDRESSING MODES, say by adding an offset to a base address. Once again, however, in modern architectures there is a tendency to distribute this work into a separate load/store unit.
The three fundamental attributes of an ALU are its operands and results, functional organization, and algorithms.
The operands and results of the ALU are machine words of two kinds: arithmetic words, which represent numerical values in digital form, and logic words, which represent arbitrary sets of digitally encoded symbols. Arithmetic words consist of digit vectors (strings of digits).
A typical ALU consists of three types of functional parts: storage registers, operations logic, and sequencing logic.