![在当今世界,多核 CPU 是否仍面临收益递减的问题?](https://linux22.com/image/1323421/%E5%9C%A8%E5%BD%93%E4%BB%8A%E4%B8%96%E7%95%8C%EF%BC%8C%E5%A4%9A%E6%A0%B8%20CPU%20%E6%98%AF%E5%90%A6%E4%BB%8D%E9%9D%A2%E4%B8%B4%E6%94%B6%E7%9B%8A%E9%80%92%E5%87%8F%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9F.png)
它已被证明其他问题由于计算机应用的现状,多核处理器的收益正在减少。在当今世界,情况仍然如此吗?
大多数新应用程序是否都支持多线程,从而充分利用了多核?如果不是,那么较新的 64 位操作系统是否通过将任务/进程分配给不同的内核来帮助充分利用内核?还是多核处理器仍然继续遭受相同(或类似)的收益递减?
请提供参考资料来支持任何主张。
答案1
这很大程度上取决于你做什么。
对于普通的 Word、Excel、扫雷游戏以及你妈妈使用的其他程序,一个核心就足够了,两个以上就有点过头了。这些类型的应用程序大部分时间都处于空闲状态,等待用户输入。
对于游戏来说,至少两个线程会对你有益。除此之外,这取决于游戏本身。理论上,你可以在一个单独的线程上运行每个 AI 对手,但核心游戏逻辑无法轻易并行化 - 你需要在一个地方将所有结果放在一起以形成连贯的游戏状态。因此,通常有一个每个人都在等待的“主”线程。
对于多媒体、实数运算和科学而言,每个核心都很重要。这些任务要么天生就是多线程的,要么可以很容易地实现多线程,开发人员有强烈的动机去利用所有可用的处理能力。
高级用户喜欢多任务处理。Torrent、VirtualBox、屏幕截图、视频、Minecraft 和网页浏览同时运行。因此,每个占用大量 CPU 的应用程序都有自己的核心,这将使您受益匪浅。如今,直播游戏非常流行。因此,游戏需要两个核心,编码器线程至少需要一个核心,其余系统至少需要一个核心。也就是说,至少有 4 个核心。
答案2
恐怕答案还是一如既往的“这取决于你在做什么”。
是的,增加更多核心的收益会减少,而且总是会 如果你一次只运行一个应用程序。
即使是在制作精良的多线程应用程序中,许多线程化的任务也会等待机器中最慢的组件(硬盘、网络)完成,而不会影响用户所看到的性能。这些无法通过更大的并行化来改善,因此任何理论上的加速极限在实际应用中都是无法达到的。
值得注意的是,很少有“大型”应用程序不是多线程的(只需检查您的操作系统的任务管理器等效项,它应该能够告诉您每个进程有多少个线程 - 例如,我的 Firefox 当前使用 31 个)。
当然,运行多个非相互依赖的应用程序不受这些限制的限制。随着您添加更多内核,您可以同时运行更多应用程序,而处理性能几乎不会下降(但是,硬盘、网络等性能的扩展性并不好)。实际上,即使是这样,收益也会递减,因为管理内核、通信管道等之间的工作分配会产生不可避免的开销。
例如,这Tom 的硬件文章(2009 年)尝试研究几个多核处理器在同时运行应用程序时的性能 - 运行游戏和 AVG 扫描(两者都可能是多线程的)。四核、三核和双核处理器在仅运行游戏时的性能都类似,但添加同时运行 AVG 扫描后,性能(以平均 FPS 衡量)分别下降 22%、40% 和 59%。
因此,虽然在运行一个密集型应用程序时,四核处理器的性能并没有比双核处理器提升多少,但一旦出现另一个密集型任务,它的性能就会提高一倍。不幸的是,我找不到其他研究在更多内核和更多密集型任务的情况下,四核处理器的性能如何。
然后,您必须注意处理器的现代功能,例如英特尔的 Turbo Boost / AMD 的 Turbo Core。这些特殊功能允许多核处理器停用核心(将它们置于较慢、低功耗模式)并使用剩余能量对仍处于活动状态的核心进行超频 - 允许处理器进行自我优化,以针对所面临的任务数量提供尽可能多的处理能力。
答案3
火上浇油的是,我读到这里Android 的速度实际上因为拥有多个核心而变慢:
英特尔移动和通信集团总经理迈克·贝尔 (Mike Bell) 表示,使用多核处理器实际上可能会使 Android 设备的速度变慢,他将 Android 操作系统难以有效处理强大的 CPU 的原因归咎于多线程能力(或缺乏多线程能力)。
设备的核心越多,所需的电量就越大——而就目前而言,这种电量对于 Android 设备来说实在是难以平衡。
答案4
当然,这取决于你在做什么,但确实,收益会递减。
文字处理或网页浏览等简单的日常应用很少能从两个以上处理器核心中获益。科学计算和游戏应用往往能更好地利用四个(或更多)核心和/或超线程功能,因为它们的设计往往是为了充分利用现代硬件,但四个以上核心的好处是有限的。
此外,并非所有事物都受计算限制。如果您的工作负载受 I/O 限制,那么添加处理器核心也无济于事。如果您曾经安装过 SSD 来替换机械硬盘,那么您可能知道日常计算性能往往受到计算机存储的限制。在繁忙的服务器环境中,使用大量核心来使系统能够同时处理大量用户和请求,使用专用磁盘阵列、SSD 和其他存储系统来确保在负载下实现最大性能。