为什么核数越高,CPI越高?

问题描述 投票:0回答:1

我在看一张图,图中显示,在现实中,增加CPI上的核数通常会导致大多数指令的CPI升高,同时它通常也会增加程序执行的总指令量。为什么会出现这种情况呢?

根据我的理解,CPI应该只在增加时钟频率时才会增加,所以CPI的增加对我来说没有什么意义。

hardware cpu-architecture
1个回答
0
投票

什么图? 在增加核心数的同时,他们保持什么因素不变? 也许是总的晶体管预算,所以每个核心都要更简单才会有更多的核心?

把单核做大收益递减,但构建更多的核有线性收益 尴尬的平行问题因此,Xeon Phi有很多简单的核心,而GPU则有很多简单的核心。 简单的流水线。

但是CPU如果也关心单线程性能延迟(而不是只关心吞吐量),就会推到这些收益递减的问题,并建立更宽的核心。 我们在CPU上遇到的很多问题是 琐碎的并行化,所以大量的弱核比较少的快核更糟糕。 对于给定的问题大小,你拥有的线程越多,线程与其他线程通信的总时间就越多(也许还要等待它们的数据)。


如果你 当增加更多的核心时,保持每个核心相同,当运行相同的代码时,它们的CPI一般保持不变。 如:SPECint_rate与当前IntelAMD CPU的核心数几乎是线性缩放的(确实是通过增加更多相同的核心来缩放)。

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

你不会得到完美的线性扩展,因为核心之间确实会相互竞争内存带宽,以及共享最后一级缓存的空间。 例如,AMD Zen的4个核心集群共享8MiB的L3,这对这些核心来说是私有的。 英特尔采用的是大的共享L3,每个核心都有一片L3,所以每个核心的L3是差不多的)。

但更多的核心也意味着更复杂的互连,要把它们都连接在一起,并连接到内存控制器上. 英特尔多核Xeon CPU的单线程带宽明显比相同微架构的四核 "客户端 "芯片要差,尽管两者的核心是一样的。 为什么Skylake的单线程内存吞吐量比Broadwell-E好那么多?

© www.soinside.com 2019 - 2024. All rights reserved.