CPU的FLOPS如何远高于其时钟速度?

0x2*_*2fe 0 cpu performance flops

例如,现代i7-8700k可以做到~60 GFLOPS(单精度,),而它的最高频率是4.7GHz.据我所知,指令必须至少完成一个周期才能完成,那么这怎么可能呢?

har*_*old 5

对于这种大的影响,有多个因素都会成倍增加:

  • SIMD,Intel 8700k和类似的处理器支持AVX和AVX2,其中包含许多指令,这些指令可以在可以同时容纳8个浮点数的寄存器上运行.
  • 多核,8700k有6个核心.
  • fusion multiply-add是AVX2的一部分,在同一条指令中有乘法和加法.
  • 高吞吐量执行.该延迟(时间个别指令获取)没有多少计算的处理器可以在单位时间内做直接的重要意义.诸如8700k之类的现代CPU可以在同一周期内开始执行两个(独立的)FMA(并且记住这些仍然是SIMD指令,因此代表了许多浮点运算),即使通过操作的延迟实际上是4个周期.

将所有这些因素相乘得到:8*6*2*2*4.3 = 825 GFLOPS(与此处报告的统计数据相匹配).这种计算当然并不意味着它实际上可以实现.例如,处理器可能会在这样的工作负载下显着降频,以便保持在其功率预算范围内,这是英特尔至少自Haswell以来所做的事情(尽管具体情况已经改变并且应用于服务器部件).此外,大多数实际代码在为许多FMA提供数据方面存在很大问题.大矩阵乘法可以接近,例如根据这些统计数据,8700k在其SGEMM基准测试中达到了496.7 Gflops.可能在6核上的8700k最大AVX2涡轮增压速度是2.6GHz但是据我所知它默认没有AVX偏移(仅在超频时需要),或者GEMM不接近达到峰值FLOPS.