我想了解如何计算 FMA 性能。如果我们查看这里的描述:
对于 Skylake 架构,指令具有Latency=4
和Throughput(CPI)=0.5
,因此指令的整体性能是4*0.5 = 2
每条指令的时钟数。
据我所知,如果最大(涡轮)时钟频率为 3GHz,那么对于单个内核,我可以在一秒钟内执行 1 500 000 000 条指令。
这样对吗?如果是这样,我观察到性能略高的原因可能是什么?
我想了解如何计算 FMA 性能。如果我们查看这里的描述:
对于 Skylake 架构,指令具有Latency=4
和Throughput(CPI)=0.5
,因此指令的整体性能是4*0.5 = 2
每条指令的时钟数。
据我所知,如果最大(涡轮)时钟频率为 3GHz,那么对于单个内核,我可以在一秒钟内执行 1 500 000 000 条指令。
这样对吗?如果是这样,我观察到性能略高的原因可能是什么?
0.5 的吞吐量意味着处理器每个周期可以执行两个独立的 FMA。所以在 3GHz 时,最大 FMA 为每秒 60 亿次。您说您只能实现略大于 1.5B 的吞吐量。这可能是由于以下一种或多种原因造成的:
延迟=4,吞吐量(CPI)=0.5,所以指令的整体性能是 4*0.5 = 每条指令 2 个时钟。
只是计算出单位给出cycles²/instr
,这很奇怪,我对此没有任何解释。
此处列出的吞吐量实际上是倒数吞吐量,以 CPI 为单位,因此每条指令 0.5 个周期或每周期 2 条指令。这些数字相互关联,延迟与它无关。
有一个相关的计算确实涉及延迟和(倒数)吞吐量,即延迟和吞吐量的乘积:4 * 2 = 8(以“指令数”为单位)。这是操作的多少个独立实例可以同时“进行中”(开始但未完成),与网络理论中的带宽延迟产品相当。这个数字会通知一些代码设计决策,因为它是代码需要向 CPU 公开的指令级并行量的下限,以便它充分利用计算资源。