2013-04-11 76 views
-1

简单的问题,增加与表现直接相关的核心?增加与性能直接相关的CPU核心?

我的理解(善意纠正我,如果我错了)是在多核系统中,通信开销和内存延迟是性能的一个限制因素与单核相比。也许一个拥有大量L1和L2高速缓存的核心系统可以在Core 2 Duos上表现更好?但是为什么几乎每个新架构的内核数量都在增加。我一定有理由知道。

感谢您的帮助!

回答

1

当扩展系统中的内核数量时,内存延迟和带宽通常都是一个问题。注意:可能存在专门的异常,但大多数现代系统在6个以上硬件内核访问内存之前不会开始运行内存瓶颈。

但是,通信开销可能非常昂贵。其技术原因非常复杂,超出了我的答案范围 - 某些方面与硬件有关,但其他方面仅与一个核心阻塞另一个核心以完成其计算的成本有关。两者都不好。正因为如此,使用多核的程序/应用程序通常必须尽可能在尽可能少的内核之间进行通信。这限制了可以卸载到独立内核上的任务类型。

由于技术上的可行性,新系统增加了更多内核。例如,增加单核性能既不具有技术上的经济可行性。几乎所有我知道的应用程序员绝对会选择单个超高速内核,而不必考虑如何有效利用12个内核。但是即使你给了他们数千万美元的芯片制造商也不能生产这样的核心。

只要光速是一个固定的常数,并行处理将在这里停留。就像今天一样,CPU中大部分的速度提升都是由于个别指令的并行处理。尽可能多的Core 2 Duo(例如)将并行运行多达四条指令。这是有效的,因为在许多程序中,指令序列通常不会立即相互依赖:

  1. a = g_Var1 + 1;
  2. b = g_Var2 + 3;
  3. c = b * a;
  4. d = g_Var3 + 5;

现代CPU将实际上并行地执行第1,2和4行,然后双击回来并完成第3行 - 通常与第5,6行中的任何行同时执行。 (假设其中任何一个都不需要'c'变量结果)。这是必要的,因为我们加快或缩短执行任何单个指令的管道的能力非常有限。因此,工程师们一直关注“走向全面” - 更多并行指令,更多并行内核,更多并行计算机(最后类似于云计算,BOINC或@home项目)。

+0

非常感谢它清除了几件事情! – Saqlain 2013-04-11 16:28:22

+0

我希望我能给你更多的投票:) – Saqlain 2013-04-12 06:13:08

1

这取决于您的软件。如果您的CPU密集型计算任务不使用太多的外部通信并且需要并行处理 - 多核是垂直扩展的方式。由于它可以并行执行计算任务(这又取决于利用并行执行的特定任务),它将比单核CPU更好地执行。例如,DB服务器通常利用并行处理,并在多核CPU上大幅扩展。

一旦纵向限制耗尽,可以通过在集群中引入多个节点来水平缩放,并且您需要协调任务执行。

所以你的问题:

不过,为什么几乎在核心的每一个新的架构数量 正在增加。

其中一个原因是软件不断发展以利用并行处理和硬件来满足这种饥饿。

1

你在假设核心可以变得有用地更复杂。在这一点上,这不是一个安全的假设。

您可以一次执行更多指令(“更宽”)或更高频率的管道(更深)。

这两种方法的回报都是递减的。更宽的芯片依赖于指令级别的并行性,在最好的情况下它大体上不超过约3宽度,通常约为1。更深的芯片存在功耗和散热问题(功耗通常会随着电压的增加而随频率变化成正方形,同时随着内核数量线性缩放),并且会影响分支误预测恢复时间。

我们做多核心芯片并不是因为我们想要,而是因为我们没有更好的选择。