A register is a small set of data-holding places within a computer processor that hold information fetched from memory or received during input/output operations. These places are where a CPU stores intermediate results of calculations and other data that might be needed for future use. This prevents the CPU from having to retrieve this data from main memory for every operation and reduces its overall power consumption. The number of registers is a key element in determining the performance of a particular CPU.
A specialized form of this computer hardware component is used in embedded systems, which are microprocessors that serve as the brains of smaller devices such as cars and household appliances. These small computers are designed to consume minimal power so that they can be operated without requiring a significant amount of power from a battery or other external source. They do this by using a register system that stores data for later processing and reduces the need to constantly fetch it from main memory.
Despite their low power requirements, these registers are still quite powerful computationally, because they store large amounts of data in relatively small spaces. A register in an embedded microprocessor is typically 8 bits in size, although larger sizes are also common. Registers are paired with control logic circuitry that helps coordinate their transfer, storage, and manipulation during instruction execution. They can also act as a buffer between the processor and main memory, storing data until it is ready to be loaded into a memory address.
Registers come in a wide variety of forms that are specific to the individual hardware architecture. These may be referred to as model-specific or machine-specific registers, and the meanings they convey are largely dependent on the design of a particular processor. They might be numbered, or they might be given names by the underlying software and a naming convention that may not correspond to the physical hardware.
Some registers are dedicated to holding either addresses or numeric values, while others allow the same register to hold both types of data. Most mainstream processors include general-purpose register files that combine data/address registers and floating-point registers. Other special-purpose registers might contain the program counter and a status register, for example, or a stack pointer in a multithreaded environment.
Some instructions specify registers as part of their operands, and movement instructions usually take the form MOVE 1,2, with register-register or memory-to-register being optional. Many instruction sets have a mode that breaks down registers into smaller parts (32-bit registers into four eight-bit ones, for example) so that they can operate on multiple data elements at once. The resulting capability is called vector processing, and it provides an important speedup for some operations. These are not available on all CPUs, however, because most of them only support a limited number of instruction sets. However, some of the more advanced CPUs have this capability, which can greatly improve their performance when doing arithmetic and other computational tasks.