在其他问题中也表明,由于计算机应用程序的状态,多核处理器的收益递减。当今世界仍然如此吗?
大多数新应用程序是否包含多线程,从而利用了多个内核?如果不是,较新的64位操作系统的帮助是否通过将任务/过程分配给不同的内核来利用这些内核?还是多核处理器仍然继续遭受相同(或相似)收益递减的困扰?
请备份所有带参考的声明。
在其他问题中也表明,由于计算机应用程序的状态,多核处理器的收益递减。当今世界仍然如此吗?
大多数新应用程序是否包含多线程,从而利用了多个内核?如果不是,较新的64位操作系统的帮助是否通过将任务/过程分配给不同的内核来利用这些内核?还是多核处理器仍然继续遭受相同(或相似)收益递减的困扰?
请备份所有带参考的声明。
Answers:
这在很大程度上取决于您的工作。
对于普通的Word,Excel和Minesweeper以及您母亲使用的其他任何东西,一个核心仍然足够,而超过两个核心则是一个过大的杀伤力。这些类型的应用程序会花费大部分时间空闲,以等待用户输入。
对于游戏,您将从至少两个中受益。之后,这取决于游戏。从理论上讲,您可以在单独的线程上运行每个AI对手,但是中央游戏逻辑很难轻易并行化-您需要一个地方,所有结果都放在一起形成一个一致的游戏状态。因此,通常每个人都在等待一个“主”线程。
对于多媒体,实数运算和科学,每个核心都至关重要。这些任务本身就是多线程的,或者可以很容易地做到,因此开发人员强烈地希望利用所有可用的处理能力。
高级用户喜欢多任务。Torrent,VirtualBox,屏幕截图,视频,Minecraft和Web浏览都同时运行。因此,您将受益于每个具有CPU核心的应用程序。如今,流行直播您的游戏。这就是游戏的两个核心,至少一个用于编码器线程,另外至少一个用于系统其余部分。至少有4个核心。
恐怕答案仍然像往常一样仍然是“取决于您在做什么”。
是的,添加越来越多的内核会减少收益,并且一次只运行一个应用程序总会 带来收益。
即使在性能良好的多线程应用程序中,也要执行许多任务,以等待计算机中最慢的组件(硬盘驱动器,网络连接)而不会影响用户的外观。无法通过更大程度的并行化来改善这些限制,因此任何实际的加速极限都无法达到实用目的。
值得注意的是,很少有不是多线程的“大型”应用程序(只需查看操作系统的任务管理器,它应该能够告诉您每个进程有多少个应用程序-例如,我的Firefox当前使用31个)。
当然,运行多个非相互依赖的应用程序不受这些限制的约束。随着添加更多内核,您可以在不降低处理性能的情况下同时运行更多应用程序(但是,硬盘,网络等性能的伸缩性并不理想)。在实践中,即使这样也将导致收益递减,因为管理核心,通信管道等之间的工作分配存在不可避免的开销。
例如,Tom's Hardware的这篇文章(来自2009年)试图在同时应用程序下查看一些多核处理器的性能-在AVG扫描旁边运行游戏(两者可能都是多线程的)。四核,三核和双核处理器的性能仅与游戏相似,但同时进行了AVG扫描,性能(按平均FPS衡量)分别下降了22%,40%和59%。
因此,尽管在运行一个密集型应用程序时四核无法提供比双核更高的性能,但一旦出现另一项密集型任务,它最终的性能却提高了一倍。不幸的是,我无法找到其他任何东西来研究这种情况在更多核心和更密集任务中的扩展程度。
然后,您必须注意处理器的现代功能,例如英特尔的Turbo Boost / AMD的Turbo Core。这些特殊功能允许多核处理器停放内核(使其进入较慢的低功耗模式),并利用备用能量对仍处于活动状态的内核进行超频-从而使处理器能够优化自身以提供尽可能多的处理能力尽可能多地处理任务。
为了给火上加油,我在这里读到,拥有多个内核实际上使Android速度变慢:
英特尔移动和通信部门总经理迈克·贝尔说,使用多核处理器实际上会使Android设备运行速度变慢。他归咎于Android的多线程功能或缺乏Android的多线程功能,原因是操作系统难以有效处理强大的CPU。
设备拥有的内核越多,所需的功率就越多-并且就目前而言,这种功率量对于Android设备而言太过平衡了。
当然,这取决于您的工作,但是,是的,收益递减。
具有两个以上的处理器内核,诸如文字处理或Web浏览之类的简单,日常应用程序几乎不会受益。科学计算和游戏应用程序倾向于更好地利用四个(或更多)内核和/或超线程功能,因为它们往往被设计为能充分利用现代硬件,但是使用四个以上内核的好处是有限的。
此外,并非所有内容都受计算限制。如果您的工作负载受I / O限制,则添加处理器内核将无济于事。如果您曾经安装过SSD来代替机械硬盘,则您可能会知道,日常计算性能受计算机存储的限制更多。在繁忙的服务器环境中,使用大量内核使系统能够同时处理大量用户和请求,因此,使用专用磁盘阵列,SSD和其他存储系统来确保最大负载下的性能。