什么是机器周期?

Abd*_*Eid 4 assembly z80 cpu-architecture cpu-speed

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

例如,一些网上说,这就是:

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

虽然" Z80编程"这本书有着良好的声誉,但他说:

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

现在令我困惑的是 - 从我的理解 - 第一个基本上是说:机器周期是一个获取 - 解码 - 执行周期,而本书基本上是这样说的:一个机器周期是一个 - 或多个 - 时钟周期是发生在每个取指,译码和执行周期独立.

那么,什么是什么?

har*_*old 6

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

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

然后,每个M循环需要多个(3到6个)时钟周期(也称为T循环或T状态,除非引用旧的多循环处理器,否则该术语大多数已经死亡).例如,存储器读取将花费3个周期,操作码解码通常需要4个,一些内部操作需要5个,并且16位增量似乎以某种方式将OCF延长了另外2个周期.

这完全是z80特有的.

在其他地方,术语"机器周期"已被用于指代从开始到结束的某种指令的"完整行程".这不是z80环境中的含义.