我有一台华硕 1025c,配备双核Atom,启用了超线程。当我玩游戏时,处理器负载率始终低于 25%(1 核)。这是否意味着该游戏(运行单线程)仅占用一个核心的一半功率?那么,如果我禁用超线程,应用程序可以并且将占用一个核心的全部功率?
如果它正确,我该怎么做?我的笔记本电脑中的 BIOS 非常有限,有超线程(已启用)的线路,但它没有激活,所以我无法将其关闭。
答案1
在 Windows XP 中(我认为 Vista、7 和 8 也一样),超线程单核 CPU 在 100% 利用率下运行单个线程时,Windows 任务管理器中将显示 50% 的 CPU 利用率。推断一下,这意味着当单个内核被单个线程 100% 利用时,使用带 HT 的双核计算机将显示 25%;也就是说,如果您的游戏是单线程的,它将使用 100% 的内核,即 50% 的 CPU,但仅显示 25% 的利用率。
如果禁用 HT,单线程游戏仍将利用 100% 的核心,这仍然是 CPU 的 50%,但实际上会显示 50% 的利用率。
许多文章表明,即使在某些情况下 HT 会降低性能,但平均而言,启用 HT 可以提高性能。话虽如此,关闭 HT 的最大好处是感觉更好,因为看起来您使用 CPU 的次数更多。心理学会通过安慰剂效应说,这实际上可能看起来有性能优势,因为您感觉 CPU 的使用率是原来的 2 倍。虽然许多人可能不同意,但您对事物的看法可能比实际情况更有影响力。如果您也是这样,那么请关闭 HT!性能下降将微乎其微。
但是如果您想坚持事实,那么禁用 HT 都会降低平均性能,无论 CPU 计量器显示什么,因此您应该保持它处于启用状态。
至于您是否可以在该计算机上启用和禁用 HT;似乎在您的笔记本电脑的用户手册中没有提到 BIOS 中有可以修改的选项。您可以尝试更新 BIOS,看看是否允许您切换该选项。除此之外,如果您无法修改设置,那么您就没那么幸运了。
答案2
超线程只是一种处理器(核心)能够通过管道从多个线程执行指令的方式同时在同一个核心当它检测到操作是独立的并使用管道的不同部分。可以将其视为创建一个虚拟核心,供使用并行线程运行的应用程序使用。就应用程序而言,单核非 HT 处理器和 8 核 HT 处理器之间没有区别。
为了使应用程序能够利用多核或 HT 技术,它必须是多线程的,以便能够并行执行代码。这不是一项简单的任务,当以这种方式设计应用程序时,必须考虑许多问题。例如,如果一个线程需要等待另一个线程完成其工作,则必须为所有此类操作手动编码。然后必须小心确保线程不会处于相互等待的状态。
对于游戏之类的东西,通常不值得进行这种详细的设计,并且许多适合并行处理的任务(例如矩阵运算)被卸载到更适合这种类型操作的 GPU 上,从而使主处理器上仅使用一个 HT 核心。
禁用多个核心或 HT 是一种可用选项,用于支持在真正的多线程环境下运行不佳(或根本无法运行)的旧版应用程序。但是,这只会关闭其他核心或关闭处理 HT 功能的处理器部分。这根本不会导致性能提升。事实上,它基本上可以保证会降低性能,因为即使在游戏仅使用一个核心的情况下,其他后台任务仍可以在其他核心上执行。如果您禁用此功能,那么您的游戏速度会因操作系统与系统中的其他后台任务共享游戏使用的核心而变慢。
编辑:另请参阅这个问题。Windows 任务调度程序基本上会确保如果一个线程大量使用超线程核心,它不应安排许多任务来使用核心的另一半虚拟部分。然而,这仍然会显示为 50% 的利用率,尽管有效利用率可能更高。