寄存器
作为数字处理器的一部分可用存储
寄存器(Register)是中央处理器内用来暂存指令、数据和地址的存储器。寄存器的存贮容量有限,读写速度非常快。在计算机体系结构里,寄存器存储在已知时间点所作计算的中间结果,通过快速地访问数据来加速计算机程序的执行。[1]
寄存器位于存储器层次结构的最顶端,也是CPU可以读写的最快的存储器,事实上所谓的暂存已经不像存储器,而是非常短暂的读写少量信息并马上用到,因为通常程序执行的步骤中,这期间就会一直使用它。寄存器通常都是以他们可以保存的比特数量来计量,举例来说,一个8位寄存器或32位寄存器。在中央处理器中,包含寄存器的部件有指令寄存器(IR)、程序计数器和累加器。寄存器现在都以寄存器数组的方式来实现,但是他们也可能使用单独的触发器、高速的核心存储器、薄膜存储器以及在数种机器上的其他方式来实现出来。
寄存器也可以指代由一个指令之输出或输入可以直接索引到的寄存器组群,这些寄存器的更确切的名称为“架构寄存器”。例如,x86指令集定义八个32位寄存器的集合,但一个实现x86指令集的CPU内部可能会有八个以上的寄存器。
寄存器的种类
- 资料寄存器
- 用来存储整数数字(参考以下的浮点寄存器)。在某些简单(或旧)的CPU,特别的资料寄存器是用于数学计算的累加器。
- 地址寄存器
- 持有存储器地址,以及用来访问存储器。在某些简单/旧的CPU里,特别的地址寄存器是索引寄存器(可能出现一个或多个)。
- 通用目的寄存器
- (GPRs)- 可以保存资料或地址两者,也就是说他们是结合 资料/地址 寄存器的功用。
- 浮点寄存器
- (FPRs)- 用来存储浮点数字。
- 常量寄存器
- 用来持有只读的数值(例如0、1、圆周率等等)。由于“其中的值不可更改”这一特殊性质,这些寄存器未必会有实体的硬件电路相对应,例如将从零常数寄存器读的操作实现为接通目标寄存器的下拉电阻。
- 一般而言,即使真正在硬件中放置常数寄存器也未必会是出于体系结构理论上的考虑,而很可能是由硬件描述语言为了简化操作而自动生成的电路。
- 向量寄存器
- 用来存储由向量处理器执行SIMD指令所得到的资料。
- 特殊目的寄存器
- 存储CPU内部的资料,像是程序计数器(或称为指令指针),堆栈寄存器,以及状态寄存器(或称微处理器状态字组)。
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 |
参见
参考资料
- ^ Glenn Brookshear , Dennis Brylow. Computer Science: An Overview, 13/e (IE-Paperback). Pearson FT Press. 2019-02-25: p.112–113. ISBN 1292263423.