一. 冯诺依曼体系结构 (Von Neumann Architecture)
冯诺依曼体系结构是现代计算机的基础,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。冯诺依曼提出计算机制造的三个基本原则:采用二进制逻辑、程序存储执行以及计算机由五个部分组成。
1. 冯诺依曼结构示意图
基于上述示意图,我们能够知道冯诺依曼体系结构由以下5部分构成:
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
运算器和控制器又被称为中央处理器(CPU)
2. 冯诺依曼体系结构的特点
”程序存储,共享数据,顺序执行“,需要CPU从存储器中取出指令和数据进行相应的计算是冯诺依曼体系的结构特点。
- 单处理机结构,机器以运算器为中心
- 采用程序存储思想
- 指令和数据一样可以参与运算
- 数据以二进制形式表示
- 将软件和硬件完全分离
- 指令由
操作码
和操作数
组成 - 指令
顺序执行
二. CPU
的工作流程
我们知道在执行一段程序的时候,站在CPU的角度来讲只能看懂以二进制形式表达的机器语言。那么实际上CPU执行程序的过程就是执行这些程序所表达二进制语言所构成的一条一条指令的过程。
1. 指令 (Instruction)
指令是计算机程序中用于控制计算机操作的基本命令,一条指令由操作码 + 操作数组成。指令也是一串二进制数字,其中操作码表示将要进行操作的动作,被操作数是要操作的数据,可能是一段内存地址,也可能是寄存器编号等信息。
TIP:
为了方便我们理解CPU的工作流程,这里我们假设一条指令占一个字节、由8个bit构成,同时我们构造一个简化版本的指令表来协助我们展开。
我们还约定A寄存器的编号为00,B寄存器的编号为01.
2. CPU执行指令的流程
- 读取指令:根据PC寄存器的值读入指令数据
- 解析指令: 对照指令表,理解指令的含义
- 执行指令
我们引入一段例子,在开始前我们默认指令从0号地址开始执行,也就是说PC寄存器中存储的下一条要执行的指令的地址为0号地址。
按照CPU执行指令的流程,上述过程可拆解为:
- 从0号地址开始执行
- 读取0号地址指令
- 解析指令[ 00101110 -> 0010 + 1110 ] ,对照指令表进行解析:将1110 (14)地址上的数据读取到寄存器A中。
- 执行指令:
- CPU默认顺序执行下一条指令 (遇到条件语句,循环语句,函数调用语句等除外)
- 读取1号地址指令
- 解析指令 [ 00011111 -> 0001 + 1111 ] ,对照指令表进行解析:将1111 (15)地址上的数据读取到寄存器B中。
- 执行指令:
- CPU顺序执行下一条指令
- 读取2号地址指令
- 解析指令 [ 10000100 -> 1000 + 0100 ] ,对照指令表进行解析:将寄存器B (01)和寄存器A (00)中的值相加,最终放到寄存器A (00)中。
- 执行指令:
- CPU继续顺序执行下一条指令
- 读取3号地址指令
- 解析指令 [ 01001101 -> 0100 + 1101 ] ,对照指令表进行解析:将数据从寄存器A (00) 写入指定内存地址1101 (13)。
- 执行指令:
- CPU顺序执行下一条指令
- 读取4号地址指令
- 解析指令 : 当遇到全零的指令时,我们认为程序结束。
- 执行指令,程序结束。
上述CPU的工作流程实际上就是实现了 3 + 14 的运算过程,通过这个简单过程的梳理,使我们能够认识CPU的基本工作流程。