PROCESSOR REGISTER

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 frequently used values—typically, these values are involved in multiple expression evaluations occurring within a small region on the program. Most, but not all, modern computer architectures operate on the principle of moving data from main memory into registers, operating on them, then moving the result back into main memory—a so-called load-store architecture.
Processor registers are at the top of the memory hierarchy, and provide the fastest way for a cpu to access data. The term is often used to refer only to the group of registers that are directly encoded as part of an instruction, as defined by the instruction set. More properly, these are called the "architectural 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.
Allocating frequently used variables to registers can be critical to a program's performance. This action, namely register allocation is performed by a compiler in the code generation phase.

Contents
Categories of registers
Some examples
See also

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". Registers are now usually implemented as a register file, but they have also been implemented using individual flip-flops, high speed core memory, thin film memory, and other ways in various machines.
There are several classes of registers according to the content:

★ 'User-Visible Registers' - It has two types. Data Registers and Address registers.

★ 'Data registers' are used to store integer numbers (see also Floating Point Registers, below). In some older and simple current CPUs, a special data register is the accumulator, used implicitly for many operations.

★ 'Address registers' hold memory addresses and are used to access memory. In some CPUs, a special address register is an index register, although often these hold numbers used to modify addresses rather than holding addresses.

★ 'Conditional registers' hold truth values often used to determine whether some instruction should or should not be executed.

★ 'General purpose registers' ('GPR's) can store both data and addresses, i.e., they are combined Data/Address registers.

★ 'Floating point registers' ('FPR's) store floating point numbers in many architectures.

★ 'Constant registers' hold read-only values such as zero, one, or pi.

★ 'Vector registers' hold data for vector processing done by SIMD instructions (Single Instruction, Multiple Data).

★ 'Special purpose registers' hold program state; they usually include the program counter (aka instruction pointer), stack pointer, and status register (aka processor status word).


★ 'Instruction registers' store the instruction currently being executed.


★ 'Index registers' are used for modifying operand addresses during the run of a program.

★ In some architectures, 'model-specific registers' (also called ''machine-specific registers'') store data and settings related to the processor itself. Because their meanings are attached to the design of a specific processor, they cannot be expected to remain standard between processor generations.

★ 'Control and status registers' - It has three types. Program counter, instruction registers, Program status word (PSW).

★ Registers related to fetching information from RAM, a collection of storage registers located on separate chips from the CPU (unlike most of the above, these are generally not ''architectural'' registers):


Memory buffer register


Memory data register


Memory address register


Memory Type Range Registers
Hardware registers are similar, but occur outside CPUs.

Some examples


The table below shows the number of registers of several mainstream processors. Note that the stack pointer (ESP) is counted as an integer register on x86-compatible processors, even though there are a limited number of instructions that may be used to operate on its contents.
ProcessorsInteger registersDouble FP registers
Intel Core Duo88
Intel Core 21616
Pentium 488
Pentium 4 with EM64T1616
Athlon 641616
Athlon MP88
Opteron 2401616
Itanium 2128128
UltraSPARC IIIi3232
POWER33232
650230

See also



Shift register

Register allocation

This article provided by Wikipedia. To edit the contents of this article, click here for original source.

psst.. try this: add to faves