ปิดการใช้งาน Hyperthreading ในรีจิสทรีของ Windows 7


18

ไบออสบางตัวไม่มีตัวเลือกในการปิดใช้งานไฮเปอร์เธรดของซีพียูมันมีวิธีปิดการใช้งานใน Windows 7 Registry หรือไม่? หรือเครื่องมือหรือซอฟต์แวร์

ฉันรู้เกี่ยวกับแท็บการบูต msconfig (ตัวเลือกขั้นสูง) และปิดการใช้งานตัวประมวลผลที่นั่นไม่แน่ใจว่าจะปิดการใช้งานแกนประมวลผลหรือไฮเปอร์เธรดที่สมบูรณ์หรือวิธีการบอก

32 บิตหรือ 64 บิต Windows 7

แก้ไข:

สมมติว่ามันเป็นแบบดูอัลคอร์หรือมากกว่าด้วยไฮเปอร์เธรด

ใน Device manager จะแสดงโปรเซสเซอร์ 4 ตัวในโปรเซสเซอร์ i5 Intel ของฉันและคุณไม่สามารถปิดใช้งานได้


5
ฉันคิดว่านี่เป็นคำถามที่เป็นไปไม่ได้ของเดือน
Moab

คุณไม่สามารถปิดการใช้งานใน BIOS ได้จริงเหรอ? เป็นรุ่นล่าสุดหรือไม่
KCotreau

2
เป็นพีซี HP ที่รู้จักกันดีสำหรับประวัติคนพิการไม่ว่าจะเป็นเวอร์ชั่นไหน
Moab

1
ชิป i5 ไม่ได้ถูกสร้างขึ้นเท่ากันทั้งหมดบางตัวมี 4 คอร์ทางกายภาพและ Hyper-threading ที่ปิดการใช้งานในขณะที่บางคอร์มีการเปิดใช้งาน 2 คอร์และ Hyper-threading - โดยปกติ notebbooks จะใช้ Hyper-threading และเดสก์ท็อปชิป คุณใช้เดสก์ท็อปหรือโน๊ตบุ๊คและคุณรู้จักรุ่น i5 หรือไม่?
ดัสตินจี

ฉันไม่ต้องกังวลเรื่อง Hyperthreading มากเกินไป มันได้เห็นการปรับปรุงครั้งใหญ่นับตั้งแต่ P4 ทุกวันนี้มันไม่ได้ทำให้ประสิทธิภาพแย่ลง
surfasb

คำตอบ:


3

จากแผ่นข้อมูลตัวประมวลผล Intel Core, เล่มที่ 1 , หน้า 38:

เทคโนโลยี Intel Hyper-Threading

[... ] คุณสมบัตินี้ต้องเปิดใช้งานโดยใช้ BIOS และต้องการการสนับสนุนระบบปฏิบัติการ

เพราะนี่คือ hyperthreading เป็นฮาร์ดแวร์ทางกายภาพที่เกิดขึ้นจริงในการตายของ CPU และทำให้สามารถเปิดใช้งาน / ปิดการใช้งานในระดับฮาร์ดแวร์เท่านั้น

หากคุณทราบว่าแอปพลิเคชันใดที่ทำงานได้ไม่ดีกับการทำไฮเปอร์เธรดคุณสามารถใช้เครื่องมือเช่น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 เป็น hex ได้เช่นกัน หากคุณไม่ทราบวิธีการแปลงฐานเหล่านี้คุณสามารถใช้ตารางการแปลงนี้ได้


ฉันเข้าใจความเป็นพี่น้องกัน แต่สิ่งนี้จะไม่ปิดใช้งานไฮเปอร์เธรดเพียงแกนกลางที่สมบูรณ์ ฉันไม่คิดว่ามันเป็นไปได้ในระบบปฏิบัติการที่จะไม่สามารถใช้งานได้เฉพาะการทำไฮเปอร์เธรดเท่านั้นในไบออส แต่ไบออสบางตัวไม่มีตัวเลือกนั้นส่วนใหญ่ในพีซีของ HP ฉันหวังว่าจะมีคนพิสูจน์ฉันผิด
Moab

1
แต่ละฟิสิคัลคอร์แสดงขึ้นใน OS เป็นสองโลจิคัล หากคุณปิดการใช้งานหนึ่งในแกนตรรกะเหล่านั้นคุณปิดการใช้งาน hyperthreading อย่างมีประสิทธิภาพเนื่องจากคำแนะนำจะถูกส่งไปยังหนึ่งในสองแกนตรรกะจึงไม่ทำ hyperthreading จริง - คิวการเรียนการสอนจะถูกส่งโดยตรงไปยังแกนหลักทางกายภาพ
พัฒนา

ฉันได้รับมัน แต่มันปิดการใช้งานไฮเปอร์เธรดสำหรับหนึ่งคอร์นั้นเท่านั้น ฉันต้องการทั้งสองอย่าง
Moab

1
@Moab จากนั้นคุณเพียงแค่เปิดใช้งานแกนคู่ที่เป็นเลขคี่หรือคี่เพื่อปิดการใช้งานโดยใช้มาสก์ที่ฉันระบุไว้ด้านบน ดังนั้นถ้าคุณมีโลจิคัลคอร์สี่คอร์ให้ใช้ 00000101 หรือ 5 ในฐานสิบหกเป็น hexmask ของคุณเพื่อตั้งค่าเฉพาะ CPU0 และ CPU2 ตามที่เปิดใช้งาน หากคุณมีโลจิคัล 8 คอร์ bitmask ของคุณจะเป็น 01010101 หรือ 55 ใน hex (เพื่อเปิดใช้งาน CPU0, 2, 4 และ 6 เท่านั้น)
พัฒนา

2
@ ทำให้มันไม่สำคัญทางเทคนิคตราบใดที่คุณปิดการใช้งานแกนกลางอื่น ๆ ชุดตรรกะสองแกนทุกชุดจะทำหน้าที่จัดการเธรดสำหรับฟิสิคัลคอร์เดียว
พัฒนา

2

การปิดใช้งาน Hyper-threading เป็นเรื่องเกี่ยวกับ BIOS เท่านั้น

ฉันสมมติว่าคุณต้องการปิดการใช้งาน Hyper-Threading เนื่องจากคุณมีแอปพลิเคชั่นที่ไม่ได้รับการปรับให้เหมาะสมกับฟีเจอร์นี้และอาจลดประสิทธิภาพลง?

เมื่อดูที่การกำหนดหมายเลข CPU แกนประมวลผลทางกายภาพจะมีเลขคี่ - ดังนั้นในระบบ Dual-Core, ระบบ HT, คอร์ 1 และ 3 จะเป็นซีพียู "ของจริง" หากคุณเลือก 2 คอร์ใน msconfig ซีพียู 1 และ 2 จะเปิดใช้งานดังนั้นคุณจะมี CPU ที่ใช้งานจริงและ Logical (HT) - สิ่งนี้จะไม่เป็นประโยชน์สำหรับคุณหากคุณมีปัญหากับซอฟต์แวร์ที่มีปัญหาเกี่ยวกับ HT


ใช่ แต่ ... คุณสามารถใช้ตัวจัดการงานเพื่อตั้งค่าความสัมพันธ์กับซีพียู 1 และ 3 ได้
Ben Voigt

ดัสตินจีนั่นคือสิ่งที่ฉันคิด แต่การค้นหาบทความใด ๆ เกี่ยวกับเรื่องนี้เป็นไปไม่ได้ ขอบคุณ
Moab

0

ใน Windows วิธีที่ง่ายที่สุดคือการเปลี่ยนความสัมพันธ์ของ explorer.exe เนื่องจากทุกกระบวนการที่เปิดจากนั้นจะสืบทอดมาสก์ของ affinity มันยังห่างไกลจากความสมบูรณ์แบบ แต่อย่างน้อยคุณก็ทำแค่ครั้งเดียวต่อเซสชั่น


ฉันไม่แน่ใจว่าสิ่งนี้ตอบคำถามได้อย่างไรเนื่องจากความสัมพันธ์ของกระบวนการไม่เหมือนกับ Hyperthreading
Doktoro Reichard

โชคดีสิ่งที่ไม่ได้ขึ้นอยู่กับสิ่งที่คุณแน่ใจหรือไม่ แต่สิ่งที่พวกเขามีการระบุไว้ใน MSDN (ตัวอย่าง) msdn.microsoft.com/en-us/library/windows/desktop/?hl=th GetLogicalProcessorInformation ให้กระบวนการที่ใช้กระบวนการทางกายภาพ / ตรรกะ โปรเซสเซอร์ (นี่เป็นวิธีที่แน่นอน) บนระบบไฮเปอร์เธรดที่มี 2 แกนตรรกะ SMT (เช่นไฮเปอร์เธรด) Core # 0 คือบิต 0 และ 1, Core # 1 บิต 2 และ 3 ของ affinity mask ฯลฯ ... (นี่เป็นวิธีเชิงประจักษ์) ฉันจะขอบคุณถ้าคุณสามารถหลีกเลี่ยงการ downvoting สิ่งที่คุณมีเพียงสัญชาติญาณใน ...
E. Attia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.