1. One of a small number of high-speed memory locations in a computer's CPU
. Registers differ from ordinary random-access memory
in several respects:
There are only a small number of registers (the "register set"), typically 32 in a modern processor though some, e.g. SPARC
, have as many as 144. A register may be directly addressed with a few bits. In contrast, there are usually millions of words of main memory (RAM), requiring at least twenty bits to specify a memory location. Main memory locations are often specified indirectly, using an indirect addressing
mode where the actual memory address is held in a register.
Registers are fast; typically, two registers can be read and a third written -- all in a single cycle. Memory is slower; a single access can require several cycles.
The limited size and high speed of the register set makes it one of the critical resources in most computer architectures. Register allocation
, typically one phase of the back-end
, controls the use of registers by a compiled program.
See also accumulator
, register dancing
, register allocation
, register spilling
2. An addressable location in a memory-mapped peripheral device. E.g. the transmit data register in a UART