In computer architecture, a processor register is a small amount of very fast computer memory used to speed the execution of computer programs by providing quick access to commonly used values—typically, the values being in the midst of a calculation at a given point in time.
These registers are the top of the memory hierarchy, and are the fastest way for the system to manipulate data. Registers are normally measured by the number of bits they can hold, for example, an "8-bit register" or a "32-bit register". Registers are now usually implemented as an array of SRAMs, but they have also been implemented using individual flip-flops, high speed core memory, thin film memory, and other ways in various machines.
The term is often used to refer only to the group of registers that can be directly indexed for input or output of an instruction, as defined by the instruction set. More properly, these are called the "architected registers". For instance, the x86 instruction set defines a set of eight 32-bit registers, but a CPU that implements the x86 instruction set will contain many more registers than just these eight. There are several other classes of registers:
- Data registers are used to store integer numbers (see also Floating Point Registers, below). In some simple/older CPUs, a special data register is the accumulator, used for arithmetic calculations.
- Address registers hold memory addresses and are used to access memory. In some simple/older CPUs, a special address register is the index register (one or more of these may be present)
- General Purpose registers (GPRs) can store both data and addresses, i.e., they are combined Data/Address registers.
- Floating Point registers (FPRs) are used to store floating point numbers.
- Constant registers hold read-only values (e.g., zero, one, pi, ...).
- Vector registers hold data for vector processing done by SIMD instructions (Single Instruction, Multiple Data).
- Special Purpose registers store internal CPU data, like the program counter (aka instruction pointer), stack pointer, and status register (aka processor status word).
Two different approaches of modern physical register implementation have been pursued: The first is to have an electronic switch, such as a flip-flop, for each bit of the register. This system is stable, and is standard engineering practice. The other method is to map several states to the charge in one capacitor. This approach can sometimes be used to save money. Capacitors are the standard way to store data in electronic RAM.