 in computer architecture, a processor register is a small amount of storage available as part of a digital processor, such as a cpu. such registers are (typically) addressed by mechanisms other than main memory and can be accessed faster. almost all computers, load-store architecture or not, load data from a larger memory into registers where it is used for arithmetic, manipulated, or tested, by some machine instruction. manipulated data is then often stored back in main memory, either by the same instruction or a subsequent one. modern processors use either static or dynamic ram as main memory, the latter often being implicitly accessed via one or more cache levels. a common property of computer programs is locality of reference: the same values are often accessed repeatedly and frequently used values held in registers improves performance. this is what makes fast registers (and caches) meaningful. processor registers are normally at the top of the memory hierarchy, and provide the fastest way to access data. the term normally refers only to the group of registers that are directly encoded as part of an instruction, as defined by the instruction set. however, modern high performance cpus often have duplicates of these "architectural registers" in order to improve performance via register renaming, allowing parallel and speculative execution. modern x86 is perhaps the most well known example of this technique.since around 1995 and the pentium pro, cyrix 6x86, nx586, and amd k5. allocating frequently used variables to registers can be critical to a program's performance. this register allocation is either performed by a compiler, in the code generation phase, or manually, by an assembly language programmer. ==categories of registers== registers are normally measured by the number of bits they can hold, for example, an "8-bit register" or a "32-bit register". a processor often contains several kinds of registers, that can be classified accordingly to their content or instructions that operate on them: * user-accessible registers â instructions that can be read or written by machine instructions. the most common division of user-accessible registers is into data registers and address registers. ** data registers can hold numeric values such as integer and, in some architectures, floating-point values, as well as characters, small bit arrays and other data. in some older and low end cpus, a special data register, known as the [[accumulator (computing)|accumulator]
Central_processing_unit Digital_registers