寄存器

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

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

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

寄存器的种类

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

CPU支持情况

CPU架构 整数
寄存器数量
双精度浮点数
寄存器数量
x8688
x86-641616
System/360164
z/Architecture1616
Itanium128128
UltraSPARC3232
IBM POWER3232
Alpha3232
650230
PIC单片机10
AVR单片机320
ARM1616
RISC-V3232

参见

参考数据

  1. Glenn Brookshear , Dennis Brylow. . Pearson FT Press. 2019-02-25: p.112–113. ISBN 1292263423.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.