【问题标题】:Why does higher core count lead to higher CPI?为什么更高的核心数会导致更高的 CPI?
【发布时间】:2020-08-22 15:58:25
【问题描述】:

我正在查看一个图表,该图表显示,实际上,增加 CPI 的核心数通常会导致大多数指令的 CPI 更高,并且通常会增加程序执行的指令总数。为什么会这样?

据我了解,CPI 只有在增加时钟频率时才会增加,所以 CPI 增加对我来说没有多大意义。

【问题讨论】:

  • increasing the core count on a CPI usually results in higher CPI 我的猜测:一个 CPI 太多了。
  • CPI should increase only when increasing the clock frequency 设计中还是运行中?

标签: hardware cpu-architecture


【解决方案1】:

什么图表?在增加核心数量的同时,它们保持不变的因素是什么?也许是晶体管总预算,所以每个内核必须更简单才能拥有更多内核?

增大单个内核的收益会递减,但构建更多内核具有线性收益对于令人尴尬的并行问题;因此至强融核有很多简单的内核,而 GPU 是非常简单的管道。

但是,同样关心单线程性能/延迟(而不仅仅是吞吐量)的 CPU 将推动那些收益递减并构建更宽的内核。我们在 CPU 上运行的许多问题对于并行化来说并不是微不足道的,因此大量较弱的核心比较少的更快核心更糟糕。对于给定的问题规模,线程越多,线程与其他线程通信的总时间就越多(并且可能等待来自它们的数据)。


如果您确实在添加更多内核时保持每个内核相同,则它们的 CPI 在运行相同代码时通常保持相同。 例如SPECint_rate 与当前 Intel/AMD CPU 的内核数量几乎呈线性关系(通过添加更多相同的内核确实可以扩展)。

所以这一定不是你的图表在说什么。 如果您想要更具体的答案,您需要澄清问题。

您不会获得完美的线性扩展,因为内核确实会相互竞争内存带宽以及共享的最后一级缓存中的空间。 (尽管大多数当前设计随着内核数量增加最后一级缓存的大小。例如,AMD Zen 有 4 个内核集群共享 8MiB 的 L3,这些内核是私有的。英特尔使用具有 L3 切片的大型共享 L3每个核心,因此每个核心的 L3 大致相同。)

但更多的内核也意味着更复杂的互连将它们连接在一起并连接到内存控制器。英特尔多核至强 CPU 的单线程带宽明显低于相同微架构的四核“客户端”芯片,即使两者的内核相同。 Why is Skylake so much better than Broadwell-E for single-threaded memory throughput?

【讨论】:

  • 不是特定的 CPU 型号。一切都是一样的,除了核心数。它首先显示了理想情况(2x 核心 -> 每个 CPU 执行 1/2 的指令,3x 核心 -> 每个 CPU 执行 1/3 的指令等),CPI 保持不变。之后它显示了“现实”的情况,其中 CPI 会随着内核数量的增加而变化,并且程序运行的指令总量也会增加。那么可能是程序没有针对并行操作进行优化,还是存在导致更高内核导致更高 CPI 和指令的一般规则?
  • @pol:听起来他们在谈论核心数量的不完美扩展,即不是简单的可并行化问题。我更新了我的答案。
  • @pol:无论如何,如果您想要更具体的答案,请提出更具体的问题。例如链接您正在谈论的图表。 (顺便说一句,如果您将互连跃点(环形总线或网格大小)等因素以及芯片面积或晶体管数量等考虑因素包括在内,一切就不可能相同。听起来你是说他们保持每个内核的设计不变,并添加更多,例如 Skylake i3 双核和 Skylake i7 四核之间的差异,并让晶体管数量和环形总线跳数增加。
  • 不是英文的,否则我会贴出来的。不过谢谢你的回答!
  • (另外,补充一点,核心之间的“竞争”是我记得我的教授为了解释这一点而谈论的)
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
相关资源
最近更新 更多