冯·诺依曼体系
冯·诺依曼体系为现代计算机的设计和发展奠定了基础,它的核心思想和原则在当今计算机体系结构中仍然被广泛采用和应用。所以只要谈论计算机的组成就离不开冯诺依曼体系
图片.png
作为核心组成部分的CPU除了由运算器和控制器组成之外,还有一些寄存器
寄存器
CPU中的寄存器分为:
通用寄存器:通用寄存器是CPU中最常用的寄存器,用于存储临时数据和计算结果等信息。通用寄存器通常由多个DFF(数据触发器)或锁存器(latch)组成,可以进行读写和算术逻辑运算等操作。本文中我们主要介绍DFF组成
特殊寄存器:特殊寄存器是CPU中用于特定目的的寄存器,例如程序计数器(PC)、堆栈指针(SP)和状态寄存器(SR)等。这些寄存器通常由硬件电路直接控制,用于存储程序执行的状态和控制信息等。
控制寄存器:控制寄存器是CPU中用于控制系统运行的寄存器,例如中断控制寄存器(ICR)和时钟控制寄存器(CCR)等。这些寄存器通常由操作系统或应用程序进行编程和控制,用于控制系统的运行和响应外部事件等,底层还是硬件电路实现的。
另外的话,我们需要知道 SRAM和DRAM也可以用于构建寄存器。比如
-
缓存寄存器:缓存寄存器通常由SRAM组成,用于存储CPU访问频率较高的数据。缓存寄存器可以提高CPU的访问速度,减少CPU访问主存的次数,从而提高系统的性能。
-
显存寄存器:显存寄存器通常由DRAM组成,用于存储图形处理器(GPU)处理的图像数据。显存寄存器可以提供高带宽的数据传输,从而支持高分辨率的图像显示和复杂的图形处理。
-
内存控制寄存器:内存控制寄存器通常由SRAM或DRAM组成,用于存储内存控制器的配置信息和状态信息。内存控制寄存器可以控制内存的访问方式和时序,从而提高内存的访问效率和稳定性。
-
状态寄存器:状态寄存器通常由SRAM或DRAM组成,用于存储CPU运行过程中的状态信息,如进位标志位、零标志位、溢出标志位等。状态寄存器可以用于条件判断和控制流程,从而实现复杂的计算和控制逻辑。
这些基于 SRAM和DRAM组成的寄存器跟我们之前提到的相似,感兴趣的同学可以自行查阅。本篇我们只关注哪些非RAM组成的寄存器,即可以通过DFF实现的寄存器
寄存器作用
-
存储数据:寄存器可以暂时存储CPU需要处理的数据,包括指令中的操作数和程序中的变量等。由于寄存器的读写速度非常快,因此可以大大提高CPU的运行效率。
-
存储指令:CPU从内存中读取指令后,需要将指令存储到寄存器中进行解码和执行。由于寄存器的读写速度非常快,因此可以大大提高CPU的指令解码和执行速度。
-
存储地址:寄存器可以存储内存地址,用于访问内存中的数据。CPU从寄存器中读取内存地址后,可以快速地访问内存中的数据。
-
存储特殊用途:CPU中还有一些特殊用途的寄存器,如指令指针寄存器、栈指针寄存器、状态寄存器等。这些寄存器用于存储特殊用途的数据,如指向下一条指令的地址、指向栈顶的地址、存储CPU的状态信息等。
所以寄存器的作用基本就是存储
DFF实现寄存器
由这篇文章我们知道,因为时钟周期的存在,所以我们只考虑时钟结束时的输出,中间的结果不考虑,因为没有意义。
因此我们可以通过基本门And Or Not 来组成下图 1-Bit 寄存器
图片.png
这个寄存器作用是:当load=1时,芯片开始加载 in输入的数据并保持不变,一直到下次load=1时才改变,如:
而1-Bit register在现实生活中的取值逻辑
图片.png 图片.png
依此类推
图片.png
而1-Bit regitster最关键的逻辑是
out(t + 1) = in(t)
这个是怎么实现的呢?
DFF
案是DFF芯片,全称为Data Flip Flop,它是一种数字电路元件,用于存储和传输二进制数据。它可以将输入数据存储在内部存储器中,并在时钟信号的作用下将其输出。DFF芯片通常用于计算机内存、寄存器、时序逻辑电路等领域。在数字电路中,DFF是最基本的存储器元件之一,它可以实现各种逻辑功能,如计数器、移位寄存器、状态机等。
多说一句,归根到底DFF芯片还是想之前讲CPU的实现那样,是由最基础的门:或门、与门、非门构成的
图片.png
DFF伴随着时钟周期它的取值逻辑为:
图片.png 图片.png
依此类推
图片.png
了解完了DFF后,1-Bit register可以是这样组成的
图片.png
其中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位寄存器的功能。
形象一点的话:
图片.png
网友评论