<font style="line-height: 40px;" color="#c200ff"><strong>时钟周期 机器周期 指令周期</strong></font>
时钟周期:时钟是CPU的动力源,CPU之所以能够快速工作就是由时钟驱动,时钟不停的振荡,CPU就不停的工作。时钟周期是CPU内部衡量时长的最基本单位。
机器周期:也叫CPU周期,规定为CPU访问一次内存所需要的最短时间。这就是说,一条指令的取值阶段(从内存读取)就需要一个机器周期。一个机器周期可能由若干个时钟周期组成。
指令周期:一条指令完成所需要的时间,可能由若干个机器周期组成。
因此,从时间长度来说,指令周期 > 机器周期 > 时钟周期
<center><img width="600" src="https://cdn.eetrend.com/files/2022-10/%E5%8D%9A%E5%AE%A2/100565171-2762…; alt="指令周期 > 机器周期 > 时钟周期"></center><br>
<font style="line-height: 40px;" color="#c200ff"><strong>精简指令集与复杂指令集</strong></font>
精简指令集(RISC)与复杂指令集(CISC)是相对于指令执行时长来说的,而不是指令本身的复杂度。精简指令集追求的是在单个机器周期里面完成指令。
举个例子,如果对于"启动汽车"这个功能,复杂指令集可能直接就是一条指令,告诉处理器"启动汽车",那么处理器内部会完成整个启动过程,发出这条复杂指令的人不用关心处理器的内部实现。如果使用精简指令集,就得告诉处理器3条指令:
1 插入钥匙指令
2 点火指令
3 踩油门指令
可以看到,完成同一件事,复杂指令集使用了一条指令,而精简指令集需要3条指令来完成一个复杂动作。
接下来看一个实际的编程例子,对于乘法操作来说,复杂指令集使用一条简单指令MUL来完成:
<pre>mul A, B</pre>
当处理器看到这样一条指令,内部会做如下操作:
1. 从内存中加载地址A上的数,存放在寄存器中
2. 从内存中夹杂地址B上的数,存放在寄存器中
3. ALU根据寄存器中的值进行乘积
4. 将乘积写回内存
接下来看使用精简指令集如何完成这项工作:
<pre>LOAD RA, A ; 从内存读取数据A
LOAD RB, B ; 从内存读取数据B
PROD RA, RB ; 计算两者乘积
STORE A, RA ; 将寄存器中的结果写回内存</pre>
虽然从代码量来看,完成同一件事精简指令集占用的空间更多,但是这些指令都很简单,不需要复杂的硬件逻辑来进行解码,可以节约晶体管的数量,处理器就可以更小。
同时,从编译器的角度看,复杂指令集CPU对编译器隐藏了实现细节,编译器能够优化代码的可能性很小,而精简指令集CPU的执行过程都暴露出来,更有利于编译器进行代码优化。
<font style="line-height: 40px;" color="#c200ff"><strong>指令集与处理器架构</strong></font>
目前流行的两种指令集:精简指令集与复杂指令集都有与之对应的处理器架构。所谓处理器架构,可以看成是使用一堆硬件电路来完成指令集中的指令,使用相同指令集的处理器,可能会有不同的架构设计。使用精简指令集的架构有:PowerPC架构、ARM架构、MIPS架构;使用复杂指令集的架构有x86架构。
<center><img width="600" src="https://cdn.eetrend.com/files/2022-10/%E5%8D%9A%E5%AE%A2/100565171-2762…; alt=""></center><br>
参考链接:
不懂精简指令集还敢说自己是程序员?
https://mp.weixin.qq.com/s/VMDpW67zhJka0DKL8TQHrA
<hr>
<font color="#9a9a9a">本文转自:<a href="https://mp.weixin.qq.com/s/VTAIcPpOqIunRunVLm_5Yg"><font color="#9a9a9a">白羊哈哈</font></a>,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。</font>
<br>