BandMan home

CPU architecture

20 Mar 2021 - Zhongshan

集成电路到CPU

一块芯片上集成的电子器件越多、电路越复杂,能实现的功能也就越多。我们急需解决的问题是数据如何存储,如果能将数据存储在电路里,就可以实现很多复杂的操作,如简单的编程。

1. D触发器

为了将数据“锁“在电路里,先人用逻辑门组成了D触发器,其中CP是时钟控制信号(1秒会改变电压好多次,频率,可以用来做控制信号),当CP值为1时,D输入一个信号,则Q输出同样的信号,当CP值不为1时,D输入任何信号,Q输出都不变,所以实现了讲D信号“锁”在Q。

2. 寄存器

数个D触发器的组合就实现了一个寄存器,下图是一个4位寄存器,可以存储一个4位的数据。如”0101“

根据寄存器的存储信号工作内容,可以细分出:指令寄存器、程序计数器、地址寄存器、通用寄存器等

3. 运算器

将数个寄存器与前面所说的加、减、乘、除计算电路结合起来就是运算器了。运算器的作用是对寄存器(一个或多个)中的信号内容进行算数计算,而后将结果存入寄存器。

4. 控制器

运算器内有数个寄存器,那何时执行计算任务、计算哪几个寄存器的数据、最终存储到哪里,这些都由控制器来完成。控制器由指令寄存器、指令译码器、程序计数器、堆栈指针、数据指针组成,它从指令寄存器中获取指令,而后根据指令从外部存储中获取数据,控制运算器执行运算,获取下一步指令等等,这一切都是通过“时钟控制信号”和复杂的逻辑门实现的。 时钟控制信号:节拍器,时钟源向CPU发送有节奏的高低电平信号,让控制器内部逻辑电路被激活,该逻辑电路又根据指令寄存器的信号内容生成各种信号,指挥运算器读取数据、执行运算、读取下一步指令】存储计算结果等。

5. 存储器

又称高速缓冲存储器,作用是存储即将交付CPU处理的数据,并保存CPU处理的结果。实际上各种控制信号、数据都是放置于存储器中,控制器从这里获取下一步数据和指令。

6. CPU

存储器、控制器、运算器的结合就是一个基本的CPU了,等等?似乎CPU没有什么特殊的功能啊,那它是如何执行这么多复杂工作的呢?实际上CPU的原理就是这么简单。当我们写好代码后,编译器就将这些代码翻译成CPU可以识别的数据格式,而后按顺序放入存储器中即可,控制器会根据预设的程序按节奏从存储器中获取指令和数据,控制运算器处理这些数据,最终实现代码功能。

7. CPU运作实例

为便于理解其工作原理,我们做一个简单的示例。比如我们写了一段代码:

    A=1;

    B=2;

    C=A+B;

    输出C到屏幕

  编译器编译时可能会做如下翻译:

    1)将0001放入寄存器A、将0010放入寄存器B

    2)执行寄存器A+寄存器B,结果放入寄存器C

    3)<font color=#0000>读取屏幕显示器的存储地址</font>,放入寄存器E

    4)根据寄存器E的数据(屏幕显示器地址),<font color=#0000>将寄存器C的数据(运算结果)写入该存储地址(数据复制)</font>

  至此CPU就实现了一个简单的计算和屏幕显示。当然具体操作过程可能会比这个复杂无数倍。但是CPU的核心功能就是简单的算数运算,以及各种数据的读写。而编译器的工作就是将复杂的代码翻译成简单的算数运算和数据存储、数据移动。

Fork me on GitHub