我对 CPU 中的多核有疑问。假设我同时在几个程序中工作,例如: - Photoshop - Autodesk Maya - Visual Studio - Unreal Engine
如果我的 CPU 有更多核心,那就意味着这些程序的运行速度会更快(例如每个核心对应一个程序,等等)。
答案1
操作系统使用进程和线程的概念来运行程序。
当你加载一个程序时,就会创建一个进程。该进程有自己的内存和凭证,并且该进程只能读取/写入自己的内存,并通过内核执行其凭证允许的任何操作。
在单 CPU 系统上,操作系统会循环检查每个正在运行的进程,并为其分配一部分 CPU 时间。在给定的时间内,实际上只有一个进程执行。(如果某个进程正在等待或“阻塞” I/O,这是一种非常常见的情况,则会跳过该进程。)
进程可以将其自身的一部分拆分为线程。这实际上是单个进程的两个部分,它们分别在 CPU 上轮流使用(进程中的所有线程都“驻留在”进程中,并且可以看到进程的内存)。
流程也可以
- 生成另一个单独的新进程 - 即加载单独的程序。Windows 资源管理器在启动程序时会生成进程。
- 分叉另一个进程 - 即创建自身的副本,作为一个单独的进程(而不是线程) - 这在 Unix/Linux 操作系统中很常见。
如果有多个 CPU 核心,虽然一个进程在单个核心上启动,但操作系统可以将其线程放在其他核心上,并且如果该进程生成或分叉其他进程,它可以将它们放在父进程以外的其他核心上。
操作系统管理其使用哪些核心,甚至可能不时透明地将进程迁移到不同的 CPU 以保持平衡。在 Windows 和 Linux 上,您可以固定 CPU“亲和性”,以便它仅停留在特定核心上(如果您愿意)。
因此,如果应用程序生成线程和/或进程来完成其工作,它将受益于多个 CPU 核心。如果没有,则该特定程序不会受益。您的操作系统仍会将其他程序分配给其他核心,因此这可能意味着其他程序对您的单线程单进程程序的影响较小。
答案2
这取决于应用程序是否使用核心。对于像您列出的程序这样的渲染,是的,这些类型的应用程序应该使用最多的核心,因此程序的执行速度会更快。它会在所有使用的核心之间分担负载。
如果您同时在多个应用程序中执行多个处理器密集型任务,它会加快速度(前提是您有足够的 RAM 来执行这些任务)。
(例如每个核心对应一个程序等)
更像是所有程序都分布在所有核心上。
然而,游戏(现代游戏)仅使用大约 4 个核心,更不用说旧游戏了,因此使用更多核心不会产生任何区别。
因此,简而言之:额外的处理器核心只会增强支持多核使用的重型应用程序的系统性能。额外的核心还将增强多任务处理。要使较轻的系统(较小的应用程序,例如 Web 浏览)运行得更快,您需要更高的时钟速度。