某些BIOS的选项没有禁用CPU超线程的选项,它是否可以在Windows 7注册表中禁用它?还是工具或软件?
我知道msconfig的“启动”选项卡(高级选项)并在其中禁用处理器,不确定是否禁用了完整的内核或超线程,或者如何分辨。
32位或64位Windows 7
编辑:
假设它是具有超线程的双核或更多个。
在设备管理器中,它在我的i5英特尔处理器上显示4个处理器,但您也不能禁用它们。
某些BIOS的选项没有禁用CPU超线程的选项,它是否可以在Windows 7注册表中禁用它?还是工具或软件?
我知道msconfig的“启动”选项卡(高级选项)并在其中禁用处理器,不确定是否禁用了完整的内核或超线程,或者如何分辨。
32位或64位Windows 7
编辑:
假设它是具有超线程的双核或更多个。
在设备管理器中,它在我的i5英特尔处理器上显示4个处理器,但您也不能禁用它们。
Answers:
从英特尔核心处理器数据表,第1卷,第38页:
英特尔超线程技术
[...]必须使用BIOS启用此功能,并且需要操作系统支持。
这是因为超线程是CPU芯片上实际的物理硬件,并且因此可以启用/禁用在硬件水平只。
如果您知道哪个应用程序不能很好地与超线程配合使用,则可以在拥有XP的情况下使用StartAffinity之类的工具。
如果使用Windows 7,则有一个内置start
命令可以执行此操作。使用以下命令启动具有特定处理器亲缘关系的进程(同样,该/AFFINITY
参数仅在Windows 7中添加):
start /AFFINITY <mask> "C:\yourprogram.exe"
对于<mask>
要运行的处理器,应该在此处用十六进制掩码替换(处理器掩码只是启用/禁用该关联的二进制掩码,因此00000101启用CPU0和CPU2,而00000010仅启用CPU1)。
要计算十六进制值,您可以转换二进制面具,或采取2总和要运行在(从0开始)计划的核心的强大动力,并将该值转换为十六进制。
例如,如果我有一个四核系统,并且只希望该进程在CPU0和CPU2上执行,我将添加2 0 + 2 2 = 1 + 4 =5。将5转换为十六进制,即5,然后将其设置为您的<mask>
。您也可以将00000101转换为十六进制。如果您不知道如何转换这些基数,则可以使用此转换表。
在Windows中,最简单的方法是更改explorer.exe的亲和力,因为从它启动的每个进程都将继承亲和力掩码。距离理想还差很远,但是至少每个会话只能执行一次。