ris*_*raj 8 cpu multi-core community-faq-proposed
在其他问题中已经表明,由于计算机应用程序的状态,多核处理器的收益递减。当今世界是否仍然如此?
大多数新应用程序是否都包含多线程,从而利用多核?如果没有,较新的 64 位操作系统是否通过将任务/进程分配给不同的内核来帮助利用内核?或者多核处理器是否仍然继续遭受相同(或类似)的收益递减?
请用参考支持任何声明。
这在很大程度上取决于你做什么。
对于普通的 Word、Excel 和扫雷器以及您妈妈使用的其他任何东西,一个核心仍然足够,超过两个则是矫枉过正。这些类型的应用程序大部分时间都处于空闲状态,等待用户输入。
对于游戏,您将受益于至少两个。之后就看比赛了。理论上,您可以在单独的线程上运行每个 AI 对手,但中央游戏逻辑无法轻松并行化 - 您需要一个地方将所有结果放在一起以形成连贯的游戏状态。所以通常每个人都在等待一个“主”线程。
对于多媒体、实数运算和科学,每个核心都很重要。这些任务要么本质上是多线程的,要么很容易实现,开发人员有很强的动力去利用所有可用的处理能力。
高级用户喜欢同时处理多项任务。Torrent、VirtualBox、屏幕截图、视频、我的世界和网页浏览都同时运行。因此,您将受益于每个拥有自己核心的 CPU 饥渴的应用程序。如今,直播您的游戏很流行。所以这是游戏的两个核心,至少还有一个用于编码器线程,至少还有一个用于系统的其余部分。那至少是 4 个内核。
恐怕答案仍然是,一如既往,“这取决于你在做什么”。
是的,添加越来越多的内核会带来收益递减,而且如果您一次只运行一个应用程序,收益总是会 递减的。
即使在制作精良的多线程应用程序中,许多被线程化的任务也是为了等待机器中最慢的组件——硬盘驱动器、网络——而不影响用户的明显性能。这些不能通过更大的并行化来改进,因此任何理论上的加速限制对于实际目的都是无法达到的。
值得注意的是,很少有不是多线程的“大”应用程序(只需查看您操作系统的任务管理器等效项,它应该能够告诉您每个进程有多少个-例如,我的 Firefox 当前使用的是 31 )。
当然,运行多个非相互依赖的应用程序不受这些限制的约束。随着您添加更多内核,您可以同时运行更多应用程序,而处理性能几乎没有下降(但是,硬盘驱动器、网络等性能无法很好地扩展)。在实践中,即使这样也会受到收益递减的影响,因为管理内核、通信管道等之间的工作分配存在不可避免的开销。
例如,Tom's Hardware 的这篇文章(2009 年)试图查看几个多核处理器在并发应用程序下的性能 - 在 AVG 扫描的同时运行游戏(两者都可能是多线程的)。四核、三核和双核处理器的性能都与仅游戏相似,但添加了同步 AVG 扫描,性能(以平均 FPS 衡量)分别下降了 22%、40% 和 59%。
因此,虽然在运行一个密集型应用程序时,四核并没有比双核提供性能提升,但一旦出现另一项密集型任务,它的性能就会提高一倍。不幸的是,我找不到太多其他东西来研究它在更多内核和更密集任务下的扩展情况。
然后您必须注意处理器的现代功能,例如 Intel 的 Turbo Boost / AMD 的 Turbo Core。这些特殊功能允许多核处理器停放内核(将它们置于较慢、低功耗的模式)并使用备用能量对保持活动的内核进行超频 - 允许处理器优化自身以提供尽可能多的处理能力尽可能多地为它呈现的任务数量。