【问题标题】:How to compute the single-precision data and double-precision data peak performance for Intel(R) Core(TM) i7-3770 CPU如何计算 Intel(R) Core(TM) i7-3770 CPU 的单精度数据和双精度数据峰值性能
【发布时间】:2014-06-28 14:19:06
【问题描述】:

如何计算 Intel(R) Core(TM) i7-3770 CPU 的单精度数据和双精度数据的峰值性能。 linux的“cat /proc/cpuinfo”如下,是最后一个:

processor   : 7
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping    : 9
microcode   : 0x10
cpu MHz     : 1600.000
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 3
cpu cores   : 4
apicid      : 7
initial apicid  : 7
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips    : 6784.16
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

有一个类似的问题名为How to compute the theoretical peak performance of CPU,答案给出了计算峰值性能的公式,它提供了双精度的峰值性能。那么如何计算单精度的性能呢?谁能给出两个公式分别计算单精度数据和双精度数据。

浮点数据由SSE单元完成,i7-3770的一个是SSE4.1/4.2, AVX,那么另一个问题是不同版本的SSE对单精度数据和双精度数据每个周期提供不同的CPU指令?我在哪里可以找到详细的文档。

【问题讨论】:

  • 对于最近使用 SIMD 的 x86,单精度峰值性能是双精度峰值性能的两倍。
  • Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz的单精度峰值性能为3.4GHz*2(mul,add)*4(SIMD单精度)*4(物理核心)=108.8GFLOPS?
  • 英特尔显然在这里列出了 i7-3770 的双精度数字:download.intel.com/support/processors/corei7/sb/…。单精度是这个数字的两倍(217.6 GFLOPS)。
  • 如果算上 GPU,SP 数量要高得多(kyokojap.myweb.hinet.net/gpu_gflops - 寻找 HD4000)。

标签: architecture cpu


【解决方案1】:

GFLOPS 方程

对于具有一个处理器(和一个插槽)的系统,公式如下:

GFLOPS = 核心数 × 核心频率 (GHz) × 每个时钟周期的操作数

对于等式,您使用物理内核,而不是逻辑(线程)。此外,处理器内核每秒可以完成的操作数量取决于相关处理器的架构,以及您追求的是单精度还是双精度数字。我将在下面进一步解释这一点。


SSE、SSE2 和 3DNow!说明 (ISE)

计算旧处理器架构的 FLOP 性能比我们习惯的新芯片要复杂一些。如果您不打算计算任何早于 K8 或 Core2 的芯片的 FLOPs/cycle,那么您可以忽略本节。不过,要摆脱这一点的是,像这样的指令集扩展会影响芯片可以运行的 FLOPs/cycle 的数量。例如,没有指令集扩展的 Pentium 4 最多只能以单精度执行 1 FLOP/cycle。然而,使用 SSE,它可以在单精度下执行 4 个 FLOP/周期。此外,Pentium 4 的双精度从没有扩展的 1 FLOP/周期翻倍到使用 SSE2 的 2 FLOP/周期。

如果支持 SSE 指令,每个时钟周期可以执行 4 个 FLOP。这适用于支持 SSE 指令的 Intel 和 AMD 处理器。

SSE2 指令允许每个周期进行 2 次 FLOP,用于双精度算术。 SSE2 不影响单精度。这同样适用于两家供应商,但请注意。 AMD 处理器的有限型号范围在早期采用阶段支持 SSE2,这就是最后一组指令的用武之地...

3D现在!指令仅由 AMD 部件使用。在 FLOPs/cycle 的范围内,功能与 SSE 指令相同。因此,支持 3DNow 的 AMD 芯片!但缺乏 SSE 支持,仍然可以在每个时钟周期执行 4 次 FLOP 以实现单精度。 3D现在!不影响双精度。也有支持 3DNow 的 AMD 型号!和 SSE 指令。你为什么问?这些指令的功能超越了 FLOP 改进,其中一个提供了另一个不提供的功能,反之亦然。这超出了您所要求的范围,但我认为有必要澄清以避免混淆。

英特尔和 AMD 都喜欢在启用所有指令集扩展的情况下计算 FLOPs/cycle,因此我建议您也这样做。

对于较新的架构,这不必担心。 Pentium III 的所有 Intel 系列都支持 SSE,而 Pentium 4 的所有 Intel 系列都支持 SSE2。 K6-2 的所有 AMD 系列都支持 3DNow!,而 Athlon XP/MP、Duron 和 Sempron 的所有 AMD 系列都支持 SSE。 AMD 芯片中的 SSE2 支持直到 Athlon 64 及其兄弟 Sempron 和 Turion 64 才出现。


每个架构的 FLOPs/周期

(注意以下列表包含架构名称,而不是处理器系列名称。)

  • P5 和 P6(无 ISE)+ Pentium Pro 和 Pentium II = 1(单个); 1(双)
  • P6(仅限 Pentium III) = 4(单个); 1(双)
  • NetBurst = 4(单个); 2(双)
  • 奔腾 M 和增强型奔腾 M = 4(单个); 2(双)
  • Core、Penryn、Nehalem 和 Westmere = 8(单人); 4(双)
  • 沙桥和常春藤桥 = 16(单); 8(双)
  • Haswell、Broadwell、Skylake(LGA1151 和 Mobile)、Kaby Lake 和 Coffee Lake = 32(单人); 16(双)
  • Skylake(“Skylake-X”Core i7 & Core i9 [LGA2066]) = 128(单); 64(双)
  • Skylake(“Skylake-SP”至强青铜和至强银) = 64(单); 32(双)
  • Skylake(“Skylake-SP”Xeon Gold 和 Xeon Platinum) = 128(单个); 64(双)
  • Bonnell、Saltwell、Silvermont 和 Airmont = 6(单人); 1.5(双)
  • MIC(“骑士角”Xeon Phi) = 32(单曲); 16(双)
  • MIC(“骑士登陆”Xeon Phi) = 64(单曲); 32(双)
  • K5 & K6 = 0.5(单次); 0.5(双倍)
  • K6-2 & K6-III = 4(单); 0.5(双倍)
  • K7 & K8 = 4(单); 2(双)
  • K10/星星 = 8(单次); 4(双)
  • 哈士奇 = 8(单人); 4(双)
  • [注] 推土机、打桩机、压路机和挖掘机 = 8(单); 4(双)
  • Zen & Zen+ = 16(单); 8(双)
  • 禅2 = 32(单); 16(双)
  • 山猫 = 4(单); 1.5(双)
  • 捷豹、彪马和彪马+ = 8(单); 3(双)

注意 — 共享 FPU 意味着每两个内核有一个 FPU。尽管在线传播,AMD 声称基于 Steamroller 的 A10-7850K 能够达到 856 SP GFLOP;其中 737 个是 Radeon R7 集成显卡,剩下 119 个是 CPU。要实现 119 SP GFLOP,每个周期需要 8 FLOP。这应该适用于 Bulldozer 的所有变体,因为 FPU 设计始终保持相同。

【讨论】:

  • 这是一个很棒的清单。您还可以添加(供将来参考)Knights Corner 和 Knights Landing 吗?
  • @azar 谢谢。我已将 Skylake 和 Knights Corner 添加到列表中。我还不确定 Knights Landing 或 Zen,但我会在将来获得详细信息时添加它们。 :)
  • @azar 我已经添加了 Knights Landing 的详细信息。我希望 Zen 至少在每个时钟周期的 FLOPS 方面与 Haswell 持平。 :)
  • Skylake 数据并不完全准确。
  • @Jeff 没有证据表明另有说明,我相信它是准确的。 6700K 的理论计算值是 256 GFLOPS,使用所有四个内核。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多