Вимкнути Hyperthreading у реєстрі Windows 7


18

Деякі біоси не мають можливості вимкнути Hyperthreading CPU, чи є спосіб відключити його в реєстрі Windows 7? Або інструмент чи програмне забезпечення?

Я знаю про вкладку завантаження msconfig (розширені параметри) та відключення процесорів там, не впевнений, що вона відключає повні ядра чи гіпертоки, або як сказати.

32-бітний або 64-бітний Windows 7

Редагувати:

Припустимо, це двоядерне або більше із гіперточенням.

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


5
Я думаю, що це неможливе питання місяця.
Моаб

Ви дійсно не можете відключити його в BIOS? Це остання версія?
KCotreau

2
Це комп'ютер HP, добре відомий за каліком біосу незалежно від версії.
Моаб

1
Не всі мікросхеми i5 створені рівними, деякі мають 4 фізичні ядра та Hyper-Threading вимкнено, тоді як деякі мають 2 ядра та Hyper-Threading - зазвичай ноутбуки використовують Hyper-Threading, а мікросхеми Desktop, швидше за все, є чотирьохядерним варіантом. Використовуєте настільний ПК або ноутбук і чи знаєте ви модель i5?
Дастін Г.

Я б не переймався над 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 в шістнадцятковий. Якщо ви не знаєте, як перетворити ці бази, ви можете просто скористатися цією таблицею перетворення .


Я розумію спорідненість, але це не відключить гіперточку, лише повне ядро. Я не думаю, що всередині операційної системи можна відключити лише гіперточення, лише в біографії, але деякі біоси не мають такого варіанту, в основному на ПК на ПК, я сподівався, що хтось може довести мене неправильно.
Моаб

1
Кожне фізичне ядро ​​відображається в ОС як два логічні. Якщо ви вимкнете одне з цих логічних ядер, ви фактично відключите гіперточення, оскільки вказівки надсилаються лише одному з двох логічних ядер, тому гіперперетворення насправді не виконується - черга інструкцій безпосередньо надсилається до фізичного ядра.
Прорив

Я розумію, але це лише вимикає гіпертребування для цього одного ядра. Мені потрібні обидва інваліди.
Моаб

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

2
@Moab це технічно не має значення, якщо ви відключите будь-яке інше ядро. Кожен набір з двох логічних ядер складається з обробників потоків для одного фізичного ядра.
Прорив

2

Вимкнення Hyper-Threading - справа лише для BIOS.

Я припускаю, що ви хочете вимкнути Hyper-Threading, оскільки у вас є додаток, який не оптимізований для цієї функції і, можливо, має знижену продуктивність?

Якщо дивитися на нумерацію процесора, фізичні ядра мають непарну нумерацію - тому в двоядерній системі HT, ядра 1 і 3 були б "справжніми" процесорами. Якщо ви вибрали 2 ядра в msconfig, 1 і 2 процесора будуть включені, щоб у вас був активний фізичний та логічний (HT) процесор - це не піде на користь, якщо у вас виникнуть проблеми з програмним забезпеченням, що має проблеми з HT.


Так, але ... ви можете використовувати диспетчер завдань, щоб встановити спорідненість до процесорів 1 і 3.
Бен Войгт

Дастін Г, саме так я і думав, але знайти будь-які статті з цього приводу майже неможливо. Спасибі.
Моаб

0

У Windows найпростіший спосіб - це змінити спорідненість explorer.exe, оскільки кожен процес, запущений з цього, успадковуватиме маску спорідненості. Це ще далеко не ідеально, але принаймні ви робите це лише один раз за сеанс.


Я не впевнений, що це відповідає на питання, оскільки спорідненість до процесу - це не те саме, що Hyperthreading.
Докторо Рейхард

На щастя, речі не ґрунтуються на тому, що ви впевнені чи ні, але як вони визначені в MSDN (наприклад) msdn.microsoft.com/en-us/library/windows/desktop/… GetLogicalProcessorInformation надає приємності процесу обробки фізичної / логічної процесори (це точно спосіб). У системах гіперточення з 2-логічними ядрами SMT (наприклад, гіперточення) Core # 0 - це біт 0 і 1, Core # 1, біт 2 і 3 маски афінності тощо ... (це емпіричний шлях). Буду вдячний, якщо ви зможете уникнути заборони речей, на яких у вас є лише інтуїція ...
E. Attia,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.