简单的问题,增加与性能直接相关的核心?
我的理解(如果我错了,请善意纠正我)是在多核系统,通信开销和内存中 与单核相比,延迟是性能的限制因素。也许具有大型L1和L2缓存的单核心系统可以比Core 2 Duos更好地运行?但是,为什么几乎每个新架构的核心数都在增加。我必须有理由知道这一点。
感谢您的帮助!
答案 0 :(得分:1)
这取决于您的软件。如果您的CPU密集型计算任务不需要太多的外部通信并且需要并行处理 - 多核是垂直扩展的方法。与单核CPU相比,它的性能要好得多......因为它可以并行执行计算任务(再次取决于您利用并行执行的特定任务)。例如,DB服务器通常利用并行处理并在多核CPU上进行大规模扩展。
一旦垂直限制耗尽,您可以通过在群集中引入多个节点来水平扩展,并且您需要协调任务执行。
那么你的问题是:
但是,为什么几乎每个新架构的核心都是 正在增加。
其中一个原因是软件发展为利用并行处理和硬件试图满足这种饥饿感。
答案 1 :(得分:1)
通常,在扩展系统中的核心数时,内存延迟和带宽都是一个问题。注意:可能存在特殊的例外,但大多数现代系统在6个以上的硬件核心访问内存之前不会开始遇到内存瓶颈。
然而,通信开销可能非常昂贵。技术原因非常复杂,并且超出了我的答案范围 - 某些方面与硬件相关,但其他方面只与一个核心阻塞的成本相关,另一个完成其计算。两者都很糟糕。因此,利用多个内核的程序/应用程序通常必须尽可能少地在内核之间进行通信。这限制了可以卸载到单独核心上的任务类型。新系统正在添加更多核心,因为它在技术上是可行的。例如,增加单核性能在技术上和经济上都不再可行。我所知道的几乎所有应用程序编程人员都非常喜欢单个超快核心而不是必须弄清楚如何有效地利用12个核心。但即使你给他们数千万美元,芯片制造商也无法生产这样的核心。
只要光速是固定常数,就会保持并行处理。与目前一样,CPU中的大部分速度提升都是由于并行处理各个指令。尽可能地,Core 2 Duo(例如)将并行运行多达四个指令。这是有效的,因为在许多程序中,指令序列通常不会立即相互依赖:
现代CPU实际上将并行执行1,2,AND 4行,然后双回并完成第3行 - 通常与第5,6行中的任何内容并行执行。 (假设其中任何一个都不需要'c'变量结果)。这是必要的,因为我们加速或缩短执行任何单个指令的流水线的能力非常有限。因此,工程师们一直专注于“走得更远” - 更多并行指令,更多并行核心,更多并行计算机(最后类似于云计算,BOINC或@home项目)。
答案 2 :(得分:1)
您认为 核可以变得更加复杂。在这一点上,这不是一个安全的假设。
您可以一次执行更多指令("更广泛")或更高频率管道("更深")。
这两种方法都会收益递减。更宽的芯片依赖于在指令级可用的并行性,在最佳情况下它基本上不超过大约3宽,并且通常为~1。更深的芯片有功率和热量问题(功率通常由于电压增加而频率随着频率而变化,同时随着核心数量线性扩展)并且损害分支误预测恢复时间。
我们做多核心芯片不是因为我们想要,而是因为我们没有更好的选择。