计算机的工作就是执行程序,程序是指令序列。所以计算机的工作就是按照一定的顺序,一条条地执行指令。
一、计算机中指令的执行过程
程序编写完成后,经过编译变成有“0”、“1”所表示的机器语言指令,存储在硬盘中,硬盘无法和CPU进行信息交互,加载到内存后才能被CPU执行。上图右侧为指令加载到内存后的示意图。
(1)取指令:将指令聪内存加载到CPU;
(2)分析指令:明确指令的功能;是+还是-
(3)读取操作数:读取+或-的操作对象;
(4)执行指令:对操作数进行运算;
(5)存放结果:将结果存入内存。
- CPU内部执行没有:读操作数以及存放结果步骤。
- 取指令可能由一个或多个取指令部件完成,分析指令、执行指令亦如此。多核CPU的多运算单元,即多个执行单元。
- BUS即总线,取指令时需要通过总线与内存交互,分析指令与执行指令在CPU内部执行,总线空闲。
- 当n较大时,效率低
- 三个部件协同作业,取指令部件先取指令1;其次分析指令部件分析指令,同时取指令部件读取指令2.;然后执行指令部件执行指令1,同时取指令部件取指令3,分析指令部件分析指令2
- 但实际情况是,指令的读取时间、分析实际、执行实际并不是一样的,如今的流水线技术逐步完善。如:增加硬(各部件),软件(如判断循环,减数读取)
二、冯诺伊曼计算机
- 程序计数器是指挥棒,刚开始指向第一条指令,取指令会取程序计数器指向地址的指令。
- 过程描述:首先PC(程序计数器)存放的是指令地址,第一步:PC把指令地址赋给地址寄存器(位于PC内部),目的是将自己指向下一条指令(即+1运算),为取下一条指令做好准备;第二步:指令地址通过地址寄存器送到地址总线,指向内存单元;第三步:CPU发送读存储器命令,然后指令被读出,通过数据总线读取到数据寄存器,如果是指令。就送去译码。