在当今世界,多核CPU是否仍然遭受收益递减的困扰?


8

其他问题中也表明,由于计算机应用程序的状态,多核处理器的收益递减。当今世界仍然如此吗?

大多数新应用程序是否包含多线程,从而利用了多个内核?如果不是,较新的64位操作系统的帮助是否通过将任务/过程分配给不同的内核来利用这些内核?还是多核处理器仍然继续遭受相同(或相似)收益递减的困扰?

请备份所有带参考的声明。


2
如果您的程序具有多个线程,则使用x64操作系统不会有任何区别。2008年和2012年之间的编译器格局差异很大。除非有一种简单的方法可以在多个线程之间执行操作,否则使CPU具有能够同时执行多个线程的能力是毫无意义的。即使到了今天,这样做仍然不容易。
拉姆猎犬,

Answers:


7

这在很大程度上取决于您的工作。

对于普通的Word,Excel和Minesweeper以及您母亲使用的其他任何东西,一个核心仍然足够,而超过两个核心则是一个过大的杀伤力。这些类型的应用程序会花费大部分时间空闲,以等待用户输入。

对于游戏,您将从至少两个中受益。之后,这取决于游戏。从理论上讲,您可以在单独的线程上运行每个AI对手,但是中央游戏逻辑很难轻易并行化-您需要一个地方,所有结果都放在一起形成一个一致的游戏状态。因此,通常每个人都在等待一个“主”线程。

对于多媒体,实数运算和科学,每个核心都至关重要。这些任务本身就是多线程的,或者可以很容易地做到,因此开发人员强烈地希望利用所有可用的处理能力。

高级用户喜欢多任务。Torrent,VirtualBox,屏幕截图,视频,Minecraft和Web浏览都同时运行。因此,您将受益于每个具有CPU核心的应用程序。如今,流行直播您的游戏。这就是游戏的两个核心,至少一个用于编码器线程,另外至少一个用于系统其余部分。至少有4个核心。


1
通常,良好的游戏AI比协调多个动作要困难得多。那只是花哨的补充。其次,您假设游戏只有一个中央游戏状态。这也不是必须的。即使这样做,也不一定是线程化的障碍。例如,物理计算通常是并行进行的。最后,游戏还具有很大的图形渲染部分,这本身也导致线程化。
MSalters 2012年

我怀疑单个核心是否是正确的选择(只需将一个非常慢的公式放入Excel中...),我认为您过于简化了。例如,较新的处理器上的Turbo Core(AMD)/ Turbo Boost(Intel)功能如何?它使我的六核AMD可以停泊一半的内核,并以更快的时钟速率运行另一半的内核-我相信Intel的版本甚至可以更细粒度-因此处理器可以根据需要的工作动态地进行优化。它。这会使它们成为更好的选择吗?该问题只能通过实际的测量和基准来准确解决。
DMA57361 2012年

我完全同意@ DMA57361。几年前,我的叔叔为他的未成年子女购买了几台单核AMD计算机。后台进程(Windows Update是最令人发指的违规者)通常会由于CPU过多而使它们实际上一次无法使用几分钟。
Dan在火光中摆弄

不要忘记超线程。更高级的英特尔处理器可以通过在每个内核中提供一组额外的寄存器,并允许线程同时使用每个处理器内核的不同部分来进一步提高多任务处理性能,从而模拟额外的处理器内核。
bwDraco 2014年

3D渲染是另一个具有很大优势的渲染。如果您是动画师或图形设计师,并且进行了大量渲染;所有专业级软件的优势都在于可以利用您的计算机必须提供的每个核心(在联网集群中则更多)。性能将随核心数量线性增加。
詹森C

5

恐怕答案仍然像往常一样仍然是“取决于您在做什么”。

是的,添加越来越多的内核会减少收益,并且一次只运行一个应用程序总会 带来收益。

即使在性能良好的多线程应用程序中,也要执行许多任务,以等待计算机中最慢的组件(硬盘驱动器,网络连接)而不会影响用户的外观。无法通过更大程度的并行化来改善这些限制,因此任何实际的加速极限都无法达到实用目的。

值得注意的是,很少有不是多线程的“大型”应用程序(只需查看操作系统的任务管理器,它应该能够告诉您每个进程有多少个应用程序-例如,我的Firefox当前使用31个)。

当然,运行多个非相互依赖的应用程序不受这些限制的约束。随着添加更多内核,您可以在不降低处理性能的情况下同时运行更多应用程序(但是,硬盘,网络等性能的伸缩性并不理想)。在实践中,即使这样也将导致收益递减,因为管理核心,通信管道等之间的工作分配存在不可避免的开销。

例如,Tom's Hardware的这篇文章(来自2009年)试图在同时应用程序下查看一些多核处理器的性能-在AVG扫描旁边运行游戏(两者可能都是多线程的)。四核,三核和双核处理器的性能仅与游戏相似,但同时进行了AVG扫描,性能(按平均FPS衡量)分别下降了22%,40%和59%。

因此,尽管在运行一个密集型应用程序时四核无法提供比双核更高的性能,但一旦出现另一项密集型任务,它最终的性能却提高了一倍。不幸的是,我无法找到其他任何东西来研究这种情况在更多核心和更密集任务中的扩展程度。


然后,您必须注意处理器的现代功能,例如英特尔的Turbo Boost / AMD的Turbo Core。这些特殊功能允许多核处理器停放内核(使其进入较慢的低功耗模式),并利用备用能量对仍处于活动状态的内核进行超频-从而使处理器能够优化自身以提供尽可能多的处理能力尽可能多地处理任务。


2

为了给火上加油,我在这里读到,拥有多个内核实际上使Android速度变慢:

英特尔移动和通信部门总经理迈克·贝尔说,使用多核处理器实际上会使Android设备运行速度变慢。他归咎于Android的多线程功能或缺乏Android的多线程功能,原因是操作系统难以有效处理强大的CPU。

设备拥有的内核越多,所需的功率就越多-并且就目前而言,这种功率量对于Android设备而言太过平衡了。


嗯,将其编辑到您的原始问题中会更好吗?
Journeyman Geek

我认为这整个主题将转换为社区Wiki / FAQ,并认为最好将问题保持原样,并单独添加。@主持人-该答案应与问题合并还是保留原样?
rishimaharaj 2012年

0

当然,这取决于您的工作,但是,是的,收益递减。

具有两个以上的处理器内核,诸如文字处理或Web浏览之类的简单,日常应用程序几乎不会受益。科学计算和游戏应用程序倾向于更好地利用四个(或更多)内核和/或超线程功能,因为它们往往被设计为能充分利用现代硬件,但是使用四个以上内核的好处是有限的。

此外,并非所有内容都受计算限制。如果您的工作负载受I / O限制,则添加处理器内核将无济于事。如果您曾经安装过SSD来代替机械硬盘,则您可能会知道,日常计算性能受计算机存储的限制更多。在繁忙的服务器环境中,使用大量内核使系统能够同时处理大量用户和请求,因此,使用专用磁盘阵列,SSD和其他存储系统来确保最大负载下的性能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.