我想了解如何计算FMA性能。如果我们在这里查看说明:
对于Skylake架构,该指令具有Latency=4
和Throughput(CPI)=0.5
,因此该指令的总体性能为每条指令4*0.5 = 2
个时钟。
据我了解,最大(turbo)时钟频率是否为3GHz,那么对于一秒钟的单个内核,我可以执行1 500 000 000条指令。
对吗?如果是这样,我观察到性能稍高的原因可能是什么?
答案 0 :(得分:5)
0.5的吞吐量意味着处理器可以在每个周期执行两个独立的FMA。因此,在3GHz时,整个FMA的最大值为每秒60亿。您说您只能实现略大于1.5B的吞吐量。发生这种情况的原因可能是以下一种或多种原因:
答案 1 :(得分:2)
Latency = 4并且吞吐量(CPI)= 0.5,因此该指令的整体性能为4 * 0.5 =每条指令2个时钟。
仅计算出单位即可得出cycles²/instr
,这很奇怪,我对此没有任何解释。
此处列出的吞吐量实际上是CPI的倒数吞吐量,因此每条指令0.5个周期或每周期2条指令。这些数字相互之间是相互关联的,与延迟无关。
有一个相关的计算确实涉及等待时间和(相互)吞吐量,即等待时间和吞吐量的乘积:4 * 2 = 8(以“指令数”为单位)。这可以与网络理论中的带宽延迟乘积相比较,可以同时“运行”(启动但未完成)多少个独立的操作实例。该数字可用于某些代码设计决策,因为它是代码需要向CPU公开以充分利用计算资源的指令级并行度的下限。