【发布时间】:2020-07-20 10:06:00
【问题描述】:
从《代码》一书中,它说:
8080 指令需要 4 到 18 个时钟周期”。
为什么执行一条指令的时钟周期数之间会有这样的波动。什么是需要很长时间才能执行的指令的示例?即,汇编指令会需要那么多周期吗?
【问题讨论】:
-
除法和乘法通常需要很长时间。
-
它在所有现代 x86 CPU 中都在波动。例如,Intel Silvermont 中的 64 位除法需要 47-107 个周期,而 VIA nano 3000 中需要 182-200 个周期。您可以在Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs 中查看 x86 CPU 的延迟和吞吐量
-
它是一个带有可变长度指令的微编码 CISC,有 一些 变体也就不足为奇了。 pastraiser.com/cpu/i8080/i8080_opcodes.html 显示时间。较慢的是例如从 16 位绝对地址加载 16 位:此 8 位 CPU 的 4 次额外内存访问与单字节指令。更慢的是
call a16,它必须分支(并重新启动指令获取)并推送返回地址。顺便说一句,这在retrocomputing.stackexchange.com 上可能会更好地接受 - 我们不再构建以这种方式进行微编码的 CPU。
标签: assembly cpu-architecture instruction-set intel-8080