Отключить гиперпоточность в реестре Windows 7


17

У некоторых биосов нет опции отключения Hyperthreading процессора, есть ли способ отключить его в реестре Windows 7? Или инструмент или программное обеспечение?

Я знаю о загрузочной вкладке msconfig (дополнительные параметры) и отключении там процессоров, не уверен, отключает ли она полные ядра или гиперпотоки, или как сказать.

32-битная или 64-битная Windows 7

РЕДАКТИРОВАТЬ:

Предположим, что это двухъядерный или более с гиперпоточностью.

В диспетчере устройств он показывает 4 процессора на моем процессоре Intel i5, и их тоже нельзя отключить, черт побери.


5
Я думаю, что это невозможный вопрос месяца.
Moab

Вы действительно не можете отключить его в BIOS? Это последняя версия?
KCotreau

2
Это ПК HP, хорошо известный своими искалеченными биосами, независимо от версии.
Moab

1
Не все микросхемы i5 созданы равными, у некоторых есть 4 физических ядра и отключена гиперпоточность, в то время как у некоторых есть 2 ядра и включена гиперпоточность - обычно в записных книжках используется гиперпоточность, и настольные чипы с большей вероятностью являются четырехъядерным вариантом. Вы используете настольный компьютер или ноутбук и знаете ли вы модель i5?
Dustin G.

Я бы не слишком беспокоился о Hyperthreading. После P4 он значительно улучшился. В наше время это не высосет производительность.
surfasb

Ответы:


3

От Техническое описание процессора Intel Core, том 1 , стр. 38:

Технология Intel Hyper-Threading

[...]   Эта функция должна быть включена с использованием BIOS и требует использования   поддержка системы.

Это связано с тем, что гиперпоточность является фактическим физическим оборудованием на кристалле ЦП и поэтому может быть включена / отключена. на аппаратном уровне только ,

Если вы знаете, какое приложение плохо работает с гиперпоточностью, вы можете использовать такой инструмент, как StartAffinity если у вас есть XP.

Если вы используете 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 в гекс. Если вы не знаете, как конвертировать эти базы, вы можете просто использовать эта таблица преобразования ,


Я понимаю близость, но это не отключит гиперпоточность, только полное ядро. Я не думаю, что в ОС возможно отключить только гиперпоточность, только в биосе, но у некоторых биосов такой опции нет, в основном на ПК HP, я надеялся, что кто-то может доказать, что я не прав.
Moab

1
Каждое физическое ядро ​​отображается в ОС как два логических. Если вы отключите один из них логический ядра, вы фактически отключаете гиперпоточность, так как инструкции отправляются только один из двух логических ядер, так что гиперпоточность фактически не выполняется - очередь инструкций напрямую отправляется физическому ядру.
Breakthrough

Я понял, но он отключает гиперпоточность только для этого ядра. Мне нужно оба отключены.
Moab

1
@Moab Затем вы просто активируете все четные или нечетные ядра, чтобы отключить все остальные, используя маски, которые я перечислил выше. Так что, если у вас есть четыре логических ядра, используйте 00000101 или 5 в шестнадцатеричном формате, чтобы установить только CPU0 и CPU2 в качестве включенных. Если у вас 8 логических ядер, ваша битовая маска будет 01010101 или 55 в шестнадцатеричном (для включения только CPU0, 2, 4 и 6).
Breakthrough

2
@ Moab это технически не имеет значения, если вы отключите все остальные ядра. Каждый набор из двух логических ядер составляет обработчики потоков для одного физического ядра.
Breakthrough

2

Отключение Hyper-Threading - дело только в BIOS.

Я предполагаю, что вы хотели бы отключить Hyper-Threading, потому что у вас есть приложение, которое не оптимизировано для этой функции и может снизить производительность?

Если посмотреть на нумерацию ЦП, то физические ядра имеют нечетную нумерацию, поэтому в двухъядерной системе HT ядра 1 и 3 будут «настоящими» ЦП. Если вы выберете 2 ядра в msconfig, то процессоры 1 и 2 будут включены, поэтому у вас будет активен физический и логический (HT) процессор - это не поможет вам, если у вас возникнут проблемы с программным обеспечением, имеющим проблемы с HT.


Да, но ... вы можете использовать диспетчер задач, чтобы установить привязку к процессорам 1 и 3.
Ben Voigt

Дастин Г., это то, что я думал, но найти какие-либо статьи по этому вопросу практически невозможно. Благодарю.
Moab

0

В Windows наиболее простым способом является изменение сродства explorer.exe, поскольку каждый запущенный из этого процесс наследует маску сродства. Это все еще далеко от совершенства, но, по крайней мере, вы делаете это только один раз за сеанс.


Я не уверен, что это отвечает на вопрос, так как сходство процессов не то же самое, что Hyperthreading.
Doktoro Reichard

К счастью, все зависит не от того, в чем вы уверены или нет, а от того, как они указаны в MSDN (например) msdn.microsoft.com/en-us/library/windows/desktop/... GetLogicalProcessorInformation предоставляет сходство процессов, обрабатывающих физические / логические процессоры (это точный способ). В системах с гиперпоточностью с 2-логическими ядрами SMT (например, гиперпоточность) Ядро № 0 - это биты 0 и 1, Ядро # 1, биты 2 и 3 маски сходства и т. Д. (Это эмпирический способ). Я был бы признателен, если бы вы могли избежать опровержения вещей, на которых у вас есть только интуиция ...
E. Attia
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.