CPU 是如何执行程序的?
1. 图灵记的工作方式
1.1 图灵机的基本组成
- 纸带:纸带相当于内存,由一个个连续的格子组成,格子中的字符就好比内存中的数据或程序。
- 读写头:读写格子中的字符
- 读写头上的部件:1.存储单元:存放数据 2.控制单元:识别字符是数据还是指令,以及控制程序的流程 3.运算单元:执行运算指令
1.2 1+2运算过程
- 读写头将纸带上写上字符1、2、+
- 控制单元判断1、2是数据,于是依次将1、2读入到存储设备(图灵机的状态)中
- 控制单元判断 + 号是指令,于是不存到图灵机状态中,而是通知运算单元执行指令。
- 运算单元将1、2读取进来,进行运算得到3,然后将3存放到状态中。
- 运算单元将状态中的3返回给控制单元,控制单元再返回给读写头,读写头将3写入到纸带的格子中。
1.3 图灵机功能总结
读取纸带格子中的内容,然后交给控制单元识别字符是数字还是运算符指令,如果是数字则存入到图灵机状态中,如果是运算符,则通知运算符单元读取状态中的数值进行计算,计算结果最终返回给读写头,读写头把结果写入到纸带的格子中。
2. 冯诺依曼模型
2.1 冯诺依曼模型的组成
运算器、控制器、存储器、输入设备、输出设备
对应到现在的计算机:运算器和控制器以及其他组件构成cpu,存储器是内存,输入输出设备是键盘、显示器等外设。
2.2 中央处理器
中央处理器又称为CPU,CPU有一个重要的属性即CPU位宽
,我们说的32位CPU和64位CPU的含义如下:
- 32位CPU:一次性计算4个字节
- 64位CPU:一次性计算8个字节
- 2^32B = 4GB 2^10B = 1KB 2^20B = 1MB 2^30B = 1GB 2^40B = 1TB
3. 线路位宽和CPU位宽
- 线路位宽:地址总线有多少根即通常所说的操作系统多少位
- CPU位宽:一次可以计算数据的bit数-
- 32 位 CPU 最大只能操作 4GB 内存,就算你装了 8GB 内存条,也没用,换句话说,你的最大计算能力是4GB,但是你的寻址能力是 8GB ,也就是说你顶多能利用 4GB 的寻址。
4. 程序执行的基本过程
CPU执行程序的过程:
- 程序计数器:存放指令的地址 指令寄存器:存放指令
- 第一步:CPU读取程序计数器的值,然后控制单元操作地址总线制定需要访问的内存地址,接着通知内存设备准备数据,设备准备好之后通过数据总线将指令数据传给CPU,CPU将收到的指令数据存放到指令寄存器中。
- 第二步:CPU分析指令寄存器中的指令,确定指令的类型和参数,如果是计算型的指令,就把指令交给逻辑运算单元运算,如果是存储类型的指令,就交给控制单元执行。
- 第三步:CPU执行完指令后,程序计数器的值自增,表示指向下一条指令。这个自增的大小,由 CPU 的位宽决定,比如 32 位的 CPU,指令是 4 个字节,需要 4 个内存地址存放,因此程序计数器的值会自增 4;
CPU的指令周期: - CPU从程序计数器读取指令、到执行再到下一条指令这个不断循环的过程。
5. a=1+2的具体执行过程
6. 指令
- 指令的编码:将程序编译为汇编代码、用汇编器将汇编码翻译为机器码
- 指令的解码:CPU执行程序时解析指令
- CPU执行指令的4级流水线:
详细看小林coding