Processor register

From Wikipedia, the free encyclopedia

(Redirected from CPU register)
Jump to: navigation, search

In computer architecture, a processor register is a small amount of storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere. 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. A common property of computer programs is locality of reference: the same values are often accessed repeatedly; and holding these frequently used values in registers improves program execution performance.

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 often 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.

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.

A processor often contains several kinds of registers, that can be classified according to their content or instructions that operate on them:

  • User-accessible Registers - The most common division of user-accessible registers is into data registers and address registers.
  • Data registers are used to hold numeric values such as integer and floating-point values. In some older and low end CPUs, a special data register, known as the accumulator, is used implicitly for many operations.
  • Address registers hold addresses and are used by instructions that indirectly 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 (GPRs) can store both data and addresses, i.e., they are combined Data/Address registers.
  • Floating point registers (FPRs) 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):

Hardware registers are similar, but occur outside CPUs.

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.

Processors Integer registers Double FP registers
Intel Core Duo 8 8
Intel Core 2 16 16
Pentium 4 8 8
Pentium 4 with EM64T 16 16
Athlon 64 16 16
Athlon MP 8 8
Opteron 240 16 16
Itanium 2 128 128
UltraSPARC IIIi 32 32
POWER3 32 32
6502 3 0

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.