人世繁华|CPU中的程序是怎么运行起来的( 六 )


取指令:负责把指令从RAM中复制到指令寄存器中
如下所示:CPU把0010 1110放到指令寄存器中
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
解码阶段:负责解析复制过来的指令对应到操作码是哪个执行 , 先解析0010
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
LOAD_A指令的工作:把RAM里面的值放入寄存器A中
再解析后四位1110 , 为地址14
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
接下来通过控制单元进行选择确认是否执行load指令
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
当然控制单元也是由逻辑门连接起来的 , 这个时候需要一个电路 , 检查操作码是不是LOAD_A对应的0010
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
执行阶段:当确认了执行的操作码 , 我们就开始执行
人世繁华|CPU中的程序是怎么运行起来的
人世繁华|CPU中的程序是怎么运行起来的?
从地址1110(10进制14)读取出0000 0011的数据 ,因为是LOAD_A指令 , 我们把该数据放进寄存器A , 不操作其他寄存器
本次执行完成 , 然后我们就把“指令地址寄存器”+1 , 执行下一条命令 , 一直重复到代码结束 。
如果我们遇到了例如加减运算时候 , 就可以用到ALU了 , 数据寄存器把需要进行add的两个数据输入 , 然后在发送操作码给ALU , ALU开始执行最后输出到暂存的寄存器 , 关闭ALU , 最后再把数据放入正确的寄存器
除了执行动作 , 现代CPU还有时钟控制 。 很早的计算机都是用人工插拔来进行每一条指令的计算 , 但是对于现在的CPU执行频率来说 , 人工是做不到这样的速度 , 所以现在CPU里面有专门的时钟进行管理CPU的节奏 , 来告诉CPU要取指令-解码-执行 。 类似于练习乐器时候使用的节拍器一样 。


推荐阅读