Deaktivieren Sie Hyperthreading in der Windows 7-Registrierung

18

Einige BIOS haben nicht die Option zum Deaktivieren von Hyperthreading der CPU, gibt es eine Möglichkeit, es in der Windows 7-Registrierung zu deaktivieren? Oder ein Tool oder eine Software?

Ich kenne die Registerkarte "Start" von msconfig (erweiterte Optionen) und deaktiviere dort Prozessoren. Ich weiß nicht, ob sie vollständige Kerne oder Hyperthreads deaktivieren oder wie ich sie erkennen kann.

32bit oder 64bit Windows 7

BEARBEITEN:

Nehmen wir an, es ist ein Dual Core oder mehr mit Hyperthreading.

Im Geräte-Manager werden 4 Prozessoren auf meinem i5 Intel-Prozessor angezeigt, und Sie können sie auch nicht deaktivieren, verdammt.

Moab
quelle
5
Ich denke, das ist die unmögliche Frage des Monats.
Moab
Sie können es wirklich nicht im BIOS deaktivieren? Ist es die neueste Version?
KCotreau
2
Es ist ein HP PC, der für verkrüppelte Bios bekannt ist, unabhängig von der Version.
Moab
1
Nicht alle i5-Chips sind gleich, einige haben 4 physische Kerne und Hyper-Threading deaktiviert, während einige 2 Kerne und Hyper-Threading aktiviert haben - normalerweise verwenden Notizbücher Hyper-Threading und Desktop-Chips sind eher eine Quad-Core-Variante. Verwenden Sie einen Desktop oder ein Notebook und kennen Sie das i5-Modell?
Dustin G.
Über Hyperthreading würde ich mir keine Sorgen machen. Es hat große Verbesserungen seit dem P4 gesehen. Es ist heutzutage nicht mehr leistungsfähig.
Surfasb

Antworten:

3

Aus dem Intel Core Processor-Datenblatt, Band 1 , Seite 38:

Intel Hyper-Threading-Technologie

[...] Diese Funktion muss über das BIOS aktiviert werden und erfordert die Unterstützung des Betriebssystems.

Dies liegt daran, dass Hyperthreading die tatsächliche physische Hardware auf dem CPU-Chip ist und daher nur auf Hardwareebene aktiviert / deaktiviert werden kann .

Wenn Sie wissen, welche Anwendung mit Hyperthreading nicht gut funktioniert, können Sie ein Tool wie StartAffinity verwenden, wenn Sie XP haben.

Wenn Sie Windows 7 verwenden, gibt es einen integrierten startBefehl, der dies ermöglicht. Verwenden Sie den folgenden Befehl, um einen Prozess mit einer bestimmten Prozessoraffinität zu starten (erneut wurde das /AFFINITYArgument nur in Windows 7 hinzugefügt):

start /AFFINITY <mask> "C:\yourprogram.exe" 

Wobei <mask>für die Prozessoren, die Sie ausführen möchten, die hexadezimale Maske ersetzt werden sollte (die Prozessormaske ist nur eine Binärmaske, die diese Affinität aktiviert / deaktiviert, sodass 00000101 CPU0 und CPU2 aktiviert und 00000010 nur CPU1 aktiviert).

Um den Hex-Wert zu berechnen, können Sie entweder die Binärmaske konvertieren oder die Summe von 2 zur Potenz der Kerne, auf denen Sie das Programm ausführen möchten (beginnend mit 0), und diesen Wert in Hexadezimal umwandeln.

Wenn ich zum Beispiel ein Vier-Kern-System habe und nur möchte, dass der Prozess auf CPU0 und CPU2 ausgeführt wird, würde ich 2 0 + 2 2 = 1 + 4 = 5 hinzufügen Setze das als dein <mask>. Sie können auch einfach 00000101 in Hex konvertieren. Wenn Sie nicht wissen, wie diese Basen konvertiert werden sollen, können Sie einfach diese Konvertierungstabelle verwenden .

Durchbruch
quelle
Ich verstehe Affinität, aber dies wird einen Hyperthread nicht deaktivieren, nur einen vollständigen Kern. Ich glaube nicht, dass es innerhalb des Betriebssystems möglich ist, Nur Hyperthreading zu deaktivieren, nur im BIOS, aber einige BIOS haben diese Option nicht, meistens auf HP PCs. Ich hatte gehofft, jemand könnte mir das Gegenteil beweisen.
Moab,
1
Jeder physische Kern wird im Betriebssystem als zwei logische angezeigt. Wenn Sie einen dieser logischen Kerne deaktivieren, wird das Hyperthreading effektiv deaktiviert, da Anweisungen nur an einen der beiden logischen Kerne gesendet werden, sodass tatsächlich kein Hyperthreading erfolgt - die Anweisungswarteschlange wird direkt an den physischen Kern gesendet.
Durchbruch
Ich verstehe, aber es deaktiviert nur das Hyperthreading für diesen einen Kern. Ich brauche beide deaktiviert.
Moab
1
@Moab Dann aktivieren Sie einfach alle geraden oder ungeraden Kerne, um alle anderen zu deaktivieren. Verwenden Sie dazu die oben aufgeführten Masken. Wenn Sie also vier logische Kerne haben, verwenden Sie 00000101 oder 5 in hex als Hexmaske, um nur CPU0 und CPU2 als aktiviert festzulegen. Wenn Sie 8 logische Kerne haben, lautet Ihre Bitmaske 01010101 oder 55 in hex (um nur CPU0, 2, 4 und 6 zu aktivieren).
Durchbruch
2
@ Moab ist es technisch egal, solange du jeden anderen Core deaktivierst. Jeder Satz von zwei logischen Kernen bildet die Thread-Handler für einen einzelnen physischen Kern.
Durchbruch
2

Das Deaktivieren von Hyper-Threading ist eine reine BIOS-Angelegenheit.

Ich gehe davon aus, dass Sie Hyper-Threading deaktivieren möchten, weil Sie eine Anwendung haben, die nicht für diese Funktion optimiert ist und möglicherweise eine verringerte Leistung aufweist.

Bei der CPU-Nummerierung sind die physischen Kerne ungerade nummeriert. In einem HT-System mit zwei Kernen wären also die Kerne 1 und 3 die "echten" CPUs. Wenn Sie in msconfig 2 Kerne auswählen, werden die Kerne 1 und 2 der CPU aktiviert, sodass eine physische und logische CPU (HT) aktiv ist. Dies würde Ihnen nicht helfen, wenn Sie Probleme mit Software haben, die Probleme mit HT hat.

Dustin G.
quelle
Ja, aber ... Sie können den Task-Manager verwenden, um die Affinität für die CPUs 1 und 3
Ben Voigt,
Dustin G, das habe ich mir gedacht, aber es ist nahezu unmöglich, Artikel darüber zu finden. Vielen Dank.
Moab
0

In Windows ist es am einfachsten, die Affinität von explorer.exe zu ändern, da jeder Prozess, der von dort gestartet wird, die Affinitätsmaske erbt. Es ist immer noch alles andere als perfekt, aber zumindest machst du das nur einmal pro Sitzung.

E. Attia
quelle
Ich bin nicht sicher, ob dies die Frage beantwortet, da Prozessaffinität nicht dasselbe ist wie Hyperthreading.
Doktoro Reichard
Glücklicherweise sind die Dinge nicht auf dem, was Sie sicher sind oder nicht , sondern wie sie in MSDN (zum Beispiel) angegeben werden msdn.microsoft.com/en-us/library/windows/desktop/... GetLogicalProcessorInformation gibt den Prozess Affinitäten physikalischen maching / logische Prozessoren (dies ist ein genauer Weg). Auf Hyperthreading-Systemen mit 2 logischen Kernen SMT (wie z. B. Hyperthreading) ist Core # 0 Bit 0 und 1, Core # 1 Bit 2 und 3 der Affinitätsmaske usw. (dies ist eine empirische Methode). Ich wäre dankbar, wenn Sie vermeiden könnten, Dinge, bei denen Sie nur Intuitionen haben, herabzustimmen ...
E. Attia