寄存器Register)是中央处理器内用来暂存指令、数据地址电脑记忆体。寄存器的存贮容量有限,读写速度非常快。在电脑架构里,暂存器存储在已知时间点所作计算的中间结果,通过快速地存取数据来加速电脑程式的执行。[1]

暂存器位于记忆体阶层的最顶端,也是CPU可以读写的最快的存储器,事实上所谓的暂存已经不像记忆体,而是非常短暂的读写少量资讯并马上用到,因为通常程序执行的步骤中,这期间就会一直使用它。暂存器通常都是以他们可以保存的位元数量来计量,举例来说,一个8位元暂存器或32位元暂存器。在中央处理器中,包含寄存器的部件有指令寄存器(IR)、程序计数器累加器。暂存器现在都以暂存器阵列的方式来实作,但是他们也可能使用单独的正反器、高速的核心记忆体薄膜记忆体以及在数种机器上的其他方式来实作出来。

寄存器也可以指代由一个指令之输出或输入可以直接索引到的暂存器群组,这些寄存器的更确切的名称为“架构暂存器”。例如,x86指令集定义八个32位元暂存器的集合,但一个实作x86指令集CPU内部可能会有八个以上的暂存器。

暂存器的种类

资料寄存器
用来储存整数数字(参考以下的浮点暂存器)。在某些简单(或旧)的CPU,特别的资料暂存器是用于数学计算的累加器
位址寄存器
持有记忆体位址,以及用来存取记忆体。在某些简单/旧的CPU里,特别的位址暂存器是索引暂存器(可能出现一个或多个)。
通用目的暂存器
GPRs)- 可以保存资料或位址两者,也就是说他们是结合 资料/位址 暂存器的功用。
浮点寄存器
FPRs)- 用来储存浮点数字。
常数寄存器
用来持有唯读的数值(例如0、1、圆周率等等)。由于“其中的值不可更改”这一特殊性质,这些寄存器未必会有实体的硬件电路相对应,例如将从零常数寄存器读的操作实现为接通目标寄存器的下拉电阻
一般而言,即使真正在硬件中放置常数寄存器也未必会是出于体系结构理论上的考虑,而很可能是由硬件描述语言为了简化操作而自动生成的电路。
向量寄存器
用来储存由向量处理器执行SIMD指令所得到的资料。
特殊目的寄存器
储存CPU内部的资料,像是程式计数器(或称为指令指标),堆叠暂存器,以及状态暂存器(或称微处理器状态字组)。
  • 指令寄存器 - 储存现在正在被执行的指令
  • 变址寄存器英语Index_register - 是在程式执行时用来更改操作数位址之用。
  • 在某些架构下,模式指示暂存器(也称为“机器指示寄存器”)储存和设定跟处理器自己有关的资料。由于他们的意图目的是附加到特定处理器的设计,因此他们并不被预期会成微处理器世代之间保留的标准。
  • 有关从随机存取记忆体提取资讯的寄存器与CPU(位于不同晶片的储存寄存器集合)

CPU支持情况

More information CPU架构, 整数 暂存器数量 ...
CPU架构 整数
暂存器数量
双精度浮点数
暂存器数量
x86 8 8
x86-64 16 16
System/360 16 4
z/Architecture 16 16
Itanium 128 128
UltraSPARC 32 32
IBM POWER 32 32
Alpha 32 32
6502 3 0
PIC微控制器 1 0
AVR微控制器 32 0
ARM 16 16
RISC-V 32 32
Close

参见

参考资料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.