С Intel Core Processor Техническое Описание, Том 1, стр. 38:
Технологии Многопоточности
[...]
Эта функция должна быть включена с помощью BIOS и требует
поддержка системы.
это потому, что hyperthreading фактическое физическое оборудование на процессоре умереть, и, таким образом, может быть включен/выключен на аппаратном уровне только.
если вы знаете, какое приложение плохо работает с hyperthreading, вы можете использовать такой инструмент, как StartAffinity если у вас XP.
если вы используете Windows 7, есть встроенный start
команда, которая сможет это сделать. Используйте следующую команду для запуска процесса с определенным сходством процессора (опять же,/AFFINITY
аргумент был добавлен только в Windows 7):
start /AFFINITY <mask> "C:\yourprogram.exe"
здесь <mask>
должен быть заменен на шестнадцатеричную маску для процессоров, которые вы хотите запустить (маска процессора - это просто двоичная маска, включающая / отключающая это сродство, поэтому 00000101 включает CPU0 и CPU2, а 00000010-только CPU1).
чтобы вычислить шестнадцатеричное значение, вы можете преобразовать двоичную маску,или возьмите сумму 2 к мощности ядер, на которых вы хотите запустить программу (начиная с 0), и преобразуйте это значение в шестнадцатеричное.
например, если у меня есть четырехъядерная система, и я хочу, чтобы процесс выполнялся только на CPU0 и CPU2, Я бы добавил 20 + 22 = 1 + 4 = 5. Преобразуйте 5 в hex, что составляет всего 5, и установите это как ваш <mask>
. Вы также можете просто преобразовать 00000101 в hex. Если вы не знаете, как конвертировать эти базы, вы можете просто использовать эта таблица преобразования.