5

我对“机器周期”的确切定义有点困惑。

例如,网上的一些消息来源说它是:

CPU 对每条机器语言指令执行四个步骤:获取、解码、执行和存储。

据称享有良好声誉的《Z80 编程》一书说:

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

现在让我感到困惑的是——据我所知——第一个基本上是在说:机器周期是一个获取-解码-执行周期,而这本书基本上是在说:一个机器周期是一个或多个时钟在每个提取、解码或执行周期中单独发生的周期。

那么,什么是什么?

4

2 回答 2

6

z80有两种不同的“循环”概念。区别很重要,因为 z80 是一个多周期架构,它在每个“步骤”中使用多个时钟周期,并且(通常)在每个指令中使用多个“步骤”。

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

然后,每个 M 周期需要多个(3 到 6 个)时钟周期(也称为 T 周期或 T 状态,除非指的是旧的多周期处理器,否则这个术语大部分已经消失)。例如,内存读取需要 3 个周期,操作码解码通常需要 4 个周期,一些内部操作需要 5 个周期,而 16 位增量似乎以某种方式将 OCF 扩展了另外 2 个周期。

这都是 z80 特有的。

在其他地方,术语“机器周期”已用于指代指令从开始到结束的某种“完整行程”。这不是 z80 上下文中的含义。

于 2016-08-06T17:29:10.777 回答
3

CPU 对每条机器语言指令执行四个步骤:获取、解码、执行和存储。

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


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

不,不是这么说的。这是完全错误的。旧的非流水线 CPU 通常每个周期的吞吐量小于一条指令,因为每条指令需要多个周期才能开始下一条指令


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

CPU 的最大时钟速度受到单个时钟周期内需要发生的最慢的事情的限制。例如,解码阶段可能有很多门延迟,因此如果时钟运行得更快,则当时钟从高电平转换为低电平时,结果不会被锁存到该阶段和下一个阶段之间的锁存器中。

流水线 CPU 将尝试同时保持其各个阶段的占用,而不是等到一条指令完成执行后再解码(甚至可能获取)下一条指令。见https://en.wikipedia.org/wiki/Classic_RISC_pipeline

于 2016-08-06T16:35:51.857 回答