寄存器

什么是注册?

处理器可以对数值(数字)进行操作,但这些必须先存储在某处。数据主要存储在存储器中,或存储在指令操作码内(通常也存储在存储器中),或存储在直接放置在处理器中的特殊片上存储器中,称为寄存器

要在寄存器中使用值,你不需要按地址寻址,但使用特殊的助记符名称,例如 x86 上的 ax 或 Z80 上的 A 或 ARM 上的 r0

有些处理器的构造方式几乎所有寄存器都相同,并且可以用于所有目的(通常是 RISC 处理器组),其他处理器具有不同的特殊性,只有一些寄存器可用于算术运算( 早期 CPU 上的 累加器 )和其他寄存器仅用于存储器寻址等。

直接在处理器芯片上使用存储器的这种结构具有巨大的性能影响,通过该处理器在寄存器中添加两个数字,通常将在寄存器中存储它返回寄存器(ARM 处理器上的示例:ADD r2,r0,r1r2 设置为 (r0 + r1) 值,在单处理器中)周期)。

相反,当其中一个操作数引用存储器位置时,处理器可能会停止一段时间,等待值从存储器芯片到达(在 x86 上,这可以从零等待 L0 高速缓存中的值到数百个当值不在任何高速缓存中并且必须直接从存储器 DRAM 芯片读取时,CPU 循环。

因此,当程序员创建一些数据处理代码时,她通常希望在寄存器处理过程中获得所有数据以获得最佳性能。如果这是不可能的,并且需要存储器读/写,那么应该最小化这些并且形成与特定平台的高速缓存/存储器架构协作的模式。

以位为单位的寄存器的本机大小通常用于对处理器进行分组,例如 Z80“8 位处理器” ,而 80386“32 位处理器” - 尽管该分组很少是明确的。例如, Z80 还使用成对寄存器进行操作,形成本机 16 位值,32 位 80686 CPU 具有 MMX 指令,可与本地 64 位寄存器配合使用。