Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : 指令周期与机器周期的区别是什么?
【简要回答】
指令周期与机器周期的概念:
- 指令周期:CPU执行一条指令所需的完整时间,包括取指、译码、执行等阶段。
- 机器周期:CPU完成一个基本操作(如取指、访存)所需的时间,通常由多个时钟周期组成。
指令周期与机器周期的对比:
-
如下表所示:
对比项 指令周期(Instruction Cycle) 机器周期(Machine Cycle) 定义 CPU执行一条指令所需的完整时间。 CPU完成一个基本操作(如取指、访存)所需的时间。 包含的阶段 取指、译码、执行、写回等。 一个工作周期(如取指周期、访存周期)通常由一个或多个机器周期组成。 时间长度 通常较长,涵盖一条指令的完整执行过程。 通常较短,是工作周期的组成部分。 组成关系 包含多个工作周期(如取指周期、访存周期、执行周期等)。 是工作周期的组成部分。
【详细回答】
- 指令周期:
将一条指令从 取出 到 执行完成 所需的时间称为指令周期,指令周期又可进一步划分为若干个机器周期(也称为CPU周期)。 - 机器周期:
是指令周期中一步相对完整的操作所用的时间,通常定义为CPU从主存中取出一个存储字所需的最短时间,因为CPU的速度比主存快,所以机器周期一般设置为存取周期(存取周期 = 存储周期 = 存取时间 + 恢复时间)。
而每个机器周期又包含多个时钟周期,时钟周期是CPU处理的最基本单位,其数值为时钟频率的倒数,也可称为节拍脉冲或T周期。 - 通常可以将指令周期划分为取指周期、间址周期 / 译码周期、执行周期、中断周期这4个工作周期。一般情况下,每个工作周期至少对应一个机器周期,即一个工作周期可能需要一个或多个机器周期完成,注意——此处的工作周期是一个更偏向功能角度的逻辑概念,而机器周期是时间概念。(不过也有些教材将工作周期当作是机器周期的另一种表述,请大家具体问题具体分析)
【知识拓展】
-
传统指令周期的划分将指令周期划分为4个工作周期。
- 指令执行时,首先进入取指周期,CPU 以 PC 为地址访问主存取指令,同时更新 PC 的值作为后续指令的地址,注意,如果当前指令为分支指令,且分支条件满足,那么在 PC + "1" 后会重新对 PC 的值进行修改;
- 然后判断是否存在间址周期,如果存在,就进入间址周期获取操作数的有效地址,随后进入执行周期;
- 否则,直接进入执行周期,在执行周期中,需要完成取操作数、执行运算和存操作数的任务。
- 在执行周期结束后,如果控制器检测到中断请求,处理器会进入中断周期,此时需要关中断、保存断点、修改 PC 值为 中断服务程序的入口地址,然后转向中断服务程序。(也就是说,中断周期只完成“中断响应”的任务,至于“中断处理”,即中断服务程序的执行,并不算在中断周期里面)
-
每个工作周期都可能有访存操作,但访存的目的不同,具体的访存目的见下表:
CPU工作周期 访存目的 取指周期 取指令 间址周期 取操作数的有效地址 执行周期 取 / 存操作数 中断周期 保存断点、执行中段服务程序、恢复断点