计算机寄存器是如何实现的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

一、前言

前几篇文章,我们分别拆解了,计算内存是如何实现的,计算机CPU是如何实现的等等,今天我们来看一下计算机寄存器是如何实现的。

二、冯·诺依曼体系

冯·诺依曼体系为现代计算机的设计和发展奠定了基础,它的核心思想和原则在当今计算机体系结构中仍然被广泛采用和应用。所以只要谈论计算机的组成就离不开冯诺依曼体系

作为核心组成部分的CPU除了由运算器和控制器组成之外,还有一些寄存器

三、寄存器

3.1 CPU中的寄存器分为:

通用寄存器:通用寄存器是CPU中最常用的寄存器,用于存储临时数据和计算结果等信息。通用寄存器通常由多个DFF(数据触发器)或锁存器(latch)组成,可以进行读写和算术逻辑运算等操作。本文中我们主要介绍DFF组成

特殊寄存器:特殊寄存器是CPU中用于特定目的的寄存器,例如程序计数器(PC)、堆栈指针(SP)和状态寄存器(SR)等。这些寄存器通常由硬件电路直接控制,用于存储程序执行的状态和控制信息等。

控制寄存器:控制寄存器是CPU中用于控制系统运行的寄存器,例如中断控制寄存器(ICR)和时钟控制寄存器(CCR)等。这些寄存器通常由操作系统或应用程序进行编程和控制,用于控制系统的运行和响应外部事件等,底层还是硬件电路实现的。

另外的话,我们需要知道 SRAM和DRAM也可以用于构建寄存器。比如

  1. 缓存寄存器:缓存寄存器通常由SRAM组成,用于存储CPU访问频率较高的数据。缓存寄存器可以提高CPU的访问速度,减少CPU访问主存的次数,从而提高系统的性能。

  2. 显存寄存器:显存寄存器通常由DRAM组成,用于存储图形处理器(GPU)处理的图像数据。显存寄存器可以提供高带宽的数据传输,从而支持高分辨率的图像显示和复杂的图形处理。

  3. 内存控制寄存器:内存控制寄存器通常由SRAM或DRAM组成,用于存储内存控制器的配置信息和状态信息。内存控制寄存器可以控制内存的访问方式和时序,从而提高内存的访问效率和稳定性。

  4. 状态寄存器:状态寄存器通常由SRAM或DRAM组成,用于存储CPU运行过程中的状态信息,如进位标志位、零标志位、溢出标志位等。状态寄存器可以用于条件判断和控制流程,从而实现复杂的计算和控制逻辑。

这些基于 SRAM和DRAM组成的寄存器跟我们之前提到的相似,感兴趣的同学可以自行查阅。本篇我们只关注哪些非RAM组成的寄存器,即可以通过DFF实现的寄存器

3.2 寄存器作用

  1. 存储数据:寄存器可以暂时存储CPU需要处理的数据,包括指令中的操作数和程序中的变量等。由于寄存器的读写速度非常快,因此可以大大提高CPU的运行效率。

  2. 存储指令:CPU从内存中读取指令后,需要将指令存储到寄存器中进行解码和执行。由于寄存器的读写速度非常快,因此可以大大提高CPU的指令解码和执行速度。

  3. 存储地址:寄存器可以存储内存地址,用于访问内存中的数据。CPU从寄存器中读取内存地址后,可以快速地访问内存中的数据。

  4. 存储特殊用途:CPU中还有一些特殊用途的寄存器,如指令指针寄存器、栈指针寄存器、状态寄存器等。这些寄存器用于存储特殊用途的数据,如指向下一条指令的地址、指向栈顶的地址、存储CPU的状态信息等。

所以寄存器的作用基本就是存储

3.3 DFF实现寄存器

由这篇文章我们知道,因为时钟周期的存在,所以我们只考虑时钟结束时的输出,中间的结果不考虑,因为没有意义。

因此我们可以通过基本门And Or Not 来组成下图 1-Bit 寄存器

这个寄存器作用是:当load=1时,芯片开始加载 in输入的数据并保持不变,一直到下次load=1时才改变,如:

而1-Bit register在现实生活中的取值逻辑

依此类推

而1-Bit regitster最关键的逻辑是

out(t + 1) = in(t)

这个是怎么实现的呢?

四、DFF

案是DFF芯片,全称为Data Flip Flop,它是一种数字电路元件,用于存储和传输二进制数据。它可以将输入数据存储在内部存储器中,并在时钟信号的作用下将其输出。DFF芯片通常用于计算机内存、寄存器、时序逻辑电路等领域。在数字电路中,DFF是最基本的存储器元件之一,它可以实现各种逻辑功能,如计数器、移位寄存器、状态机等。

多说一句,归根到底DFF芯片还是想之前讲CPU的实现那样,是由最基础的门:或门、与门、非门构成的

DFF伴随着时钟周期它的取值逻辑为:

依此类推

了解完了DFF后,1-Bit register可以是这样组成的

其中Mux 全称是Multiplexer,中文名为多路复用器。Mux可以将多个输入信号中的一个选择输出,这个选择是由Mux的控制信号决定的。它也是有And Or Not 门组成的。这样就可以有 load 来控制 Mux。从而决定本次输出是选择out(t-1)还是 in 的。

这是一个1bit寄存器的最简单的实现。但CPU中的寄存器不可能是1bit,而是16/32甚至更多,具体怎么做呢?以16bit为例

16位寄存器可以通过使用16个D触发器(DFF)来制作。每个D触发器都可以存储一个位(0或1),并且可以在时钟上升沿时将其输出更新为其输入。因此,将16个D触发器连接在一起,并将它们的时钟信号连接在一起,那么在时钟信号上升沿到来时,所有DFF都会同时将其输入端的值存储到其输出端,从而实现了16位寄存器的功能。

形象一点的话:

五、总结

本文详细介绍了计算机寄存器的实现原理,包括各种类型的寄存器和基于SRAM和DRAM构建的寄存器。重点介绍了DFF寄存器的实现原理,以及如何通过DFF构建1-Bit寄存器和16位寄存器。通过本文的学习,读者可以更好地理解计算机内部的运行机制。

相关推荐
无线图像传输研究探索3 分钟前
单兵图传终端:移动场景中的 “实时感知神经”
网络·人工智能·5g·无线图传·5g单兵图传
知识浅谈6 分钟前
基于Dify构建本地化知识库智能体:从0到1的实践指南
后端
网络安全打工人12 分钟前
CentOS7 安装 rust 1.82.0
开发语言·后端·rust
梦兮林夕36 分钟前
04 gRPC 元数据(Metadata)深入解析
后端·go·grpc
pe7er1 小时前
RESTful API 的规范性和接口安全性如何取舍
前端·后端
zzywxc7871 小时前
AI在编程、测试、数据分析等领域的前沿应用(技术报告)
人工智能·深度学习·机器学习·数据挖掘·数据分析·自动化·ai编程
铭keny1 小时前
YOLOv8 基于RTSP流目标检测
人工智能·yolo·目标检测
山风呼呼2 小时前
golang--通道和锁
开发语言·后端·golang
墨尘游子2 小时前
11-大语言模型—Transformer 盖楼,BERT 装修,RoBERTa 直接 “拎包入住”|预训练白话指南
人工智能·语言模型·自然语言处理
金井PRATHAMA2 小时前
主要分布于内侧内嗅皮层的层Ⅲ的网格-速度联合细胞(Grid × Speed Conjunctive Cells)对NLP中的深层语义分析的积极影响和启示
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·知识图谱