一、CPU的主要功能
1、进行各种算数运算
2、进行各种逻辑判断
二、CPU是如何执行指令的
所谓的指令,都是要先加载到内存中,任何才能被CPU读取,并执行。
比如一个Java程序,写出来的是一个 .java 源代码文件,编译得到 .class 二进制文件(仍然是在硬盘上)。运行程序的时候,jvm就会把这个 .class 文件加载到内存中,再进一步翻译成 CPU能识别的二进制指令。
冯诺依曼体系结构规定:一个程序,指令和依赖的数据,都是要在存储器中保存的。CPU如果需要执行,都是要自动的从存储器中读取到对应的指令。
因此,CPU执行程序,大概经历以下三个阶段:
1、读指令(把内存中的指令数据,读取到CPU的寄存器中)
CPU上也能存储数据,存储数据的模块就称为“寄存器”。速度比内存更快,但是存储空间更小,更贵。CPU的寄存器,往往就是几百个字节左右大小。
2、解析指令(理解当前指令要做什么)
3、执行指令
(上述讨论的是简化版模型,实际的CPU会更复杂)
三、CPU的指令表与指令执行
每个 CPU被设计出来的时候都会提供一个这样的指令表。
所谓指令,即指导 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成。 其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是 寄存器编号等。指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
此处一个指令是8位的二进制数字,前四位用来区分这是一个什么样的指令,后四位是操作数。不同的指令有不一样的作用。
表中的四位 opcode 就是 CPU 的操作码,用于区分是一个什么样的指令。
实例练习:
此处假设从0号地址开始执行。
图中的三个箭头,从上到下依次代表着。取指令、解析指令、执行指令。
由于不是跳转指令,则顺延往下继续执行指令。如果遇到的是跳转指令再跳转到相应位置,执行指令。
接下来的执行过程也是如图所示的一样,依次往下执行。