前言
更新了!以后我会每个周稳定在更新三篇及以上。这一期主要是续上一期来讲,可以说是进行一个总结吧!
主机完成一条指令过程
先放图
举个例子现在我用a×b这个算式,来解释这个过程。
大概是先是把a这个数取出来,存入ACC中;再通过PC+1的功能找×b这个指令,在ALU中进行计算。下面来个详细的解释:(我先解释早期的CPU的硬件实现方法,之后再解释现代的)
早期的过程
取指令(访存指令)
1)PC会通过地址线把地址传给主存的MAR。
2)MAR在存储体(存储芯片)中选中PC传给他的地址。
3)CU通过控制线发出读的信号。
4)在第二步(也就是2))中通过地址码选中的指令传给MDR。
5)把MDR的值通过数据线传给IR。
6)PC自动加一,可自动形成下一条指令的地址。
分析指令(访存指令)
1)IR中的操作码送至CU进行分析。(在这个题中的第一步操作码是指取数)
2)准备取操作数。(IR中的地址码作为操作数的地址)(步骤如执行指令第一条)
执行指令(访存数据)
1)访存数据:IR中的地址码送至存储器的MAR。
2)MAR在存储体(存储芯片)中选中这个地址。
3)CU通过控制线发出读的信号。
4)在存储体中的数据传给MDR。
5)将这个数据送至ACC中。(这个数据就是a,a暂存在ACC中)
继续重复之前的步骤(不同的是在分析指令的第一步操作码的意思是乘b,以及在执行指令的第五步时,不把数据存在ACC中要存在MQ中。)(不懂可以看我上一个文章)
运算器内执行乘法操作
1)将ACC的值传给X寄存器。
2)将ACC清零。
3)ALU从MQ和X中读取数据,执行乘法操作。
4)乘积高位存入ACC中,低位存入MQ中。
现代的过程
取指令以及分析指令还有执行指令都和早期的一样。只有运算器内执行算法操作不一样。
因为早期CPU的硬件没有专用乘法器,必须分布计算。
现代的CPU直接用硬件乘法器一步完成。
这个步骤比较早期简单,如下:
直接用ACC中的数(a)乘MQ中的数(b)把值传给ACC即可。
总结
结束,感谢你们的点赞!!祝大家天天开心!