【问题标题】:Clock cycles in a single 8080 instruction [closed]单个8080指令中的时钟周期[关闭]
【发布时间】:2020-07-20 10:06:00
【问题描述】:

从《代码》一书中,它说:

8080 指令需要 4 到 18 个时钟周期”。

为什么执行一条指令的时钟周期数之间会有这样的波动。什么是需要很长时间才能执行的指令的示例?即,汇编指令会需要那么多周期吗?

【问题讨论】:

标签: assembly cpu-architecture instruction-set intel-8080


【解决方案1】:

使用这些较旧的处理器,您通常可以只查看指令并自己计算时钟周期。并且不要混淆,因为现代处理器绝不会在一个时钟内执行指令,它需要很多时间并且数量会有所不同,它只是流水线,因此您会产生一种错觉,即它是一个时钟用于长时间的非分支代码。当您查看汽车生产设施的外部时,如果每 5 分钟生产一辆汽车,这并不意味着制造一辆汽车需要 5 分钟,有些生产有两扇门,有些生产有四扇门。制造一辆车可能需要一个小时,他们只是每五分钟开始一辆新的,每五分钟完成一辆,而且生产线的速度保持不变。这并不意味着每个站点都必须在 5 分钟内完成它们的工作,您可能有一个 10 分钟的步骤,您只需要并行化该步骤,以便所有车辆平均进出 5 分钟。现代处理器中的乘法可以在一个具有指数逻辑量的时钟中完成,在两个时钟中完成,它比这少得多,四,比那个少得多,所以有些人会在多个时钟中完成,并且有空闲状态等待乘法器完成。

所以也许你有一个单字节指令,说向累加器添加一些 gpr。所以你可能需要一个时钟来获取 gpr,一个来做加法。也许单字节指令的提取是预取的,所以是免费的。

但也许它添加了一个带有内存位置 (CISC) 的 GPR,结果将转到内存位置。所以一个时钟来获取内存位置值,一个时钟来做加法,一个时钟来写回它。

我对 6502 比 8080 更熟悉,而 6502 文档的时钟计数非常明显。

如果为零,您可能会有比较和分支,如果采用分支,规范可能会说添加一个时钟。额外的时钟是在分支目的地获取下一条指令,如果你没有分支,下一条指令已经被获取了。

在 CISC 中,您可以在每条指令中执行多个步骤,只需仔细考虑基本步骤,并考虑哪些可以/可能在同一时钟内完成,哪些可能是/不是。 RISC也有一些指令的步骤,想法是减少它,使每条指令更简单,更容易实现,更快,你可以组合指令来执行相同的整体任务。将一个常量放入 gpr,从内存中读取,从 gpr 中读取,将读取的两个值相加,将结果存储在 gpr 中,将 gpr 值存储到内存中。

只需将其分解为单独的步骤,这将使您走得更远,但同时具体的实施可能会有所不同。在某些情况下,您可以执行 alu 操作并将结果存储在同一时钟中,而在其他情况下,存储/写回可能需要单独的时钟。你有什么具体的说明吗?

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2020-04-09
    • 2017-03-12
    • 2012-10-27
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多