什么是机器周期?

时间:2016-08-06 16:20:47

标签: assembly cpu-architecture cpu-speed z80

我对机器周期"的确切定义感到困惑。

例如,某些source在线说它是:

  

CPU为每个机器语言指令执行的四个步骤:获取,解码,执行和存储。

虽然据称有良好声誉的书Programming the Z80说:

  

我们已经看到所有指令分三个阶段执行:FETCH,DECODE,EXECUTE。我们现在需要介绍一些定义。每个阶段都需要几个时钟周期。 Z80在一个或多个逻辑循环中执行每个阶段,称为机器循环。"

现在令我困惑的是 - 根据我的理解 - 第一个基本上是说:机器周期是一个获取 - 解码 - 执行周期,而本书基本上是这样说: em>机器周期是一个或多个时钟周期,发生在每次提取,解码或执行周期单独

那么,什么是什么?

2 个答案:

答案 0 :(得分:6)

z80有两个不同的概念"周期"。区别很重要,因为z80是一个多周期架构,它每个"步骤"使用多个时钟周期。和(经常)多个"步骤"每条指令。

"步骤"被称为机器周期(M循环),他们做高级"高水平"从内存中读取,执行ALU操作等任务。inc (iy+42)等复杂指令需要很多机器周期,用于解码前缀,主操作码,读取偏移量,将其添加到iy,做增量,并写回结果。条件跳转甚至具有不同数量的M循环,如果条件为假,它们省略了实际跳跃的M循环。

然后每个M循环需要多个(3到6个)时钟周期(也就是T-cycle或T-state,除非引用旧的多周期处理器,否则这个术语大部分都会死掉)。例如,内存读取将需要3个周期,操作码解码通常需要4个,一些内部操作需要5个,而16位增量似乎会以某种方式将OCF扩展另外2个周期。

这完全是z80特有的。

在其他地方,术语"机器周期"已被用来指某种"完整的旅行"从头到尾的指令这不是z80环境中的意思。

答案 1 :(得分:3)

  

CPU为每个机器语言指令执行的四个步骤:获取,解码,执行和存储。

这些步骤中的每一步通常都会在不同的周期中发生。 "执行"这是一个涉及一些子步骤和大量晶体管的复杂过程,但对于大多数指令,它仍然可以在一个周期内完成。这就是在这些地方放置CPU部分之间边界的部分原因。

  

第一个基本上是说:机器周期是一个获取 - 解码 - 执行周期

不,不是这样说的。这完全错了。旧的非流水线CPU通常每个周期的吞吐量小于一个指令,因为每个指令在下一个指令开始之前需要多个周期

CPU时钟周期或机器周期是低电压到高电压并返回的周期。 https://en.wikipedia.org/wiki/Clock_signal。 CPU使用此时钟输入来同步各个步骤。

CPU的最大时钟速度受限于单个时钟周期中最慢的事情。例如也许解码阶段有很多gate delays,所以如果时钟运行得更快,那么当时钟从高转变为低时,结果将不被锁存到该阶段与下一阶段之间的锁存器中。 / p>

流水线CPU将尝试同时保持其各个阶段,而不是等到一个指令完成执行之后才解码(或者甚至取出)下一个指令。见https://en.wikipedia.org/wiki/Classic_RISC_pipeline