今天我们再聊聊计算机中读写速度最快的寄存器。

下边这张图,我相信学过计算机基础的朋友都见过
这就是计算机最基础的组成结构,寄存器又是CPU的组成部分,如下图:

寄存器到底是个啥?

寄存器就像是 CPU 里面的小抽屉,用来临时存放数据

CPU 是个高速工作的“大脑”,它不能总是从内存(RAM)中取数据,那样太慢了。所以它在自己身体里塞了几个“口袋”(也就是寄存器),专门用来快速存储、读取数据,比如:

总之,寄存器是速度最快的存储单元,容量虽然不大,但位置靠得近,随取随用。

CPU比内存还快,那么它的内部结构是怎样的呢?

上篇我们介绍的内存,是由晶体管+电容组成,通过晶体管控制电容的充放电,形成0/1信息;寄存器之所以快,是因为寄存器是纯晶体管组成的电路,

没有电容的充放电环节,那么光靠晶体管,是如何实现0/1信息传递与存储的呢?其实,如果看过我们半导体晶体管原理介绍的哪篇文章的话,聪明的你,大概已经有所理解了。

寄存器的最基础单元是触发器。每个寄存器由若干‌D触发器‌构成,每个触发器存储1位二进制数据(0或1)。

触发器有很多种,我们以最基础的RS触发器为例简单介绍一下它的结构。

RS触发器是由2个与非门电路组成,如果看逻辑电路图的话,是下边这样子

与非门的电路结构,大家可以看上篇文章半导体晶体管原理,有详细的介绍。

这个图就不详细介绍了,我相信大家也不感兴趣,总之,R、S是输入端,Q、Q是输出端,如下:

当R=1,S=0,Q=1,Q=0;

当R=0,S=1,Q=0,Q=1;

当R=1,S=1,触发器保持原有值不变,这就体现了触发器的记忆能力;

当R=0,S=0,设计中应避免这种情况,会破坏触发器的逻辑关系。

总之,触发器,就是这样的逻辑电路组成的,在不同的设计中,会有不同的电路构成,如果想了解更多触发器,像D触发器、锁存器的等可以在评论区留言。

那我们如果把很多个触发器组合起来,比如32个D触发器,那就可以构成一个32位的寄存器

屏幕快照 2018-07-01 15.37.51

当然这只是一个很简单的原理性实现。用这样一个32位的寄存器就可以做成CPU当中的一个通用寄存器,用同样的方法可以作出其它的通用寄存器以及PC,IR 这样的寄存器,

再将这些寄存器与由逻辑门构成的电路相连, 就构成了我们这个复杂的CPU了。

寄存器是一个统称,实际在CPU中,寄存器按照功能不同,分的更细,一般常见的如下:

数据寄存器(Data Register)

功能:用于存储数据和中间计算结果。

示例:通用寄存器(如x86架构中的EAX、EBX等)。

地址寄存器(Address Register):

功能:用于存储内存地址,以便访问内存中的数据。

示例:基址寄存器(Base Register)、变址寄存器(Index Register)。

指令寄存器(Instruction Register, IR):

功能:用于存储当前正在执行的指令。

示例:CPU从内存中读取指令,并将其存储在指令寄存器中进行译码和执行。

程序计数器(Program Counter, PC):

功能:用于存储下一条将要执行的指令地址。

示例:指向内存中的指令地址,每执行一条指令后自动加1,指向下一条指令。

状态寄存器(Status Register):

功能:用于存储CPU当前的状态和条件码(如零标志、进位标志等)。

示例:在算术运算后,状态寄存器中的标志位可以反映运算结果的性质(如结果是否为零)。

堆栈指针寄存器(Stack Pointer, SP):

功能:用于指示栈顶位置,管理函数调用和返回。

示例:在函数调用过程中,堆栈指针寄存器用于保存返回地址和局部变量。

最后,我们将寄存器与内存做个对比

1.物理结构差异

  1. 距离极近
    寄存器直接集成在CPU核心区域,与运算单元的物理距离仅微米级,电信号传输延迟可忽略不计。相比之下,内存模块位于CPU外部主板插槽上,

  2. 数据传输需通过总线跨越厘米级距离,仅信号传输耗时已达数纳秒

  3. 集成方式不同
    寄存器和CPU共享同一硅晶片制造工艺,无需额外封装接口;而内存需通过PCB板上的金手指与CPU连接,增加了信号衰减和接口延迟。

  4. 2.硬件设计策略

  5. 寄存器采用高性能但高成本的晶体管方案,因容量极小可实现极致速度;内存为平衡成本和容量使用电荷存储技术,需周期性刷新电荷导致速度下降

特性
寄存器
内存
存储单元
高速触发器(Flip-Flop)
电容阵列(DRAM单元)
工艺技术
硅基高频晶体管
电荷存储技术
能耗成本
每位功耗高
每位功耗低
容量规模
典型值:64-128位
典型值:8GB-128GB

3、访问机制差异

  1. 寻址流程对比

    • 寄存器‌:通过指令直接指定名称(如EAX),单周期完成读写6
    • 内存‌:需经过多级转换:
      (1) 虚拟地址→物理地址(MMU转换)
      (2) 物理地址→内存控制器路由
      (3) 行列地址译码→电容数据读取
      整个过程耗时超过100个时钟周期
  2. 控制逻辑复杂度
    寄存器读写仅需简单使能信号控制,而内存访问需要协调总线仲裁、预充电、行列激活等复杂时序控制

4、性能层级关系

存储层级速度排序(典型值):