在计算机体系结构中,寄存器是非常快的计算机内存,用于有效地执行程序和操作。这是通过访问常用值来实现的,即当时处于操作/执行点的值。因此,为此目的,有几种不同类别的 CPU 寄存器与计算机内存协同工作以有效运行操作。
拥有寄存器的唯一目的是快速检索数据以供 CPU 处理。虽然使用硬盘从 RAM 访问指令相对更快,但对于 CPU 来说仍然不够。为了更好的处理,CPU 中有内存可以从 RAM 中获取即将执行的数据。在寄存器上面我们有高速缓存,它比寄存器更快。
这些分类如下。
- 累加器:
这是最常用的寄存器,用于存储从内存中获取的数据。它在不同的微处理器中具有不同的数量。 - 存储器地址寄存器 (MAR):
它保存要从内存访问的位置的地址。 MAR 和 MDR(内存数据寄存器)一起促进了 CPU 和主存储器的通信。 - 存储器数据寄存器 (MDR):
它包含要写入或从寻址位置读出的数据。 - 通用寄存器:
这些编号为 R0、R1、R2….Rn-1,用于在任何正在进行的操作期间存储临时数据。其内容可以通过汇编编程访问。现代 CPU 架构倾向于使用更多的 GPR,以便可以更多地使用寄存器到寄存器寻址,这比其他寻址模式相对更快。 - 程序计数器(PC):
程序计数器 (PC) 用于跟踪程序的执行情况。它包含要提取的下一条指令的内存地址。当前一条指令成功完成时,PC 指向要从主存储器中取出的下一条指令的地址。程序计数器 (PC) 还具有计算指令数量的功能。 PC 的增量取决于所使用的架构类型。如果我们使用 32 位架构,PC 每次都会增加 4 以获取下一条指令。 - 指令寄存器(IR):
IR 持有即将执行的指令。来自 PC 的指令被取出并存储在 IR 中。一旦指令放入 IR,CPU 就开始执行该指令,PC 指向下一条要执行的指令。 - 条件代码寄存器(CCR):条件代码寄存器包含不同的标志,指示任何操作的状态。例如,假设一个操作导致创建一个负结果或零,然后这些标志相应地设置为高。这些标志是
- 进位 C:如果加法运算产生进位或减法运算产生借位,则设置为 1;否则清零。
- 溢出 V:仅在对有符号整数进行运算时有用。
- 零 Z:如果结果为 0,则设置为 1,否则清零。
- 否定 N:仅在有符号数运算中有意义。如果产生否定结果,则设置为 1。
- 扩展 X:用作多精度算术运算的进位。
而这些一般是由ALU决定的。
因此,这些是为特定目的而运行的不同寄存器。