ความแตกต่างระหว่างมัลติเธรดและไฮเปอร์เธรดคืออะไร [ปิด]


10

ฉันได้ยินคำศัพท์หลายคำและหลายเธรด แต่สิ่งที่แตกต่างกันคืออะไร โปรเซสเซอร์ Intel ชนิดใดที่ใช้


2
คุณกำลังพยายามเปรียบเทียบสิ่งที่ไม่สามารถเปรียบเทียบได้โดยตรง เกี่ยวข้องกัน มันเหมือนกับถามว่า "ความแตกต่างระหว่างเท้ากับรองเท้าคืออะไร" นอกเหนือจากนั้นงานวิจัยของคุณเปิดเผยอะไรจนถึงตอนนี้? คุณจะได้รับการพิจารณาความแตกต่างตามคำจำกัดความที่รวบรวมได้จากอินเทอร์เน็ตได้อย่างง่ายดายที่ไหน?
Ƭᴇcʜιᴇ007


1
ฉันไม่รู้ว่าจะใส่ Multithreading หรือ Hyperthreading ฉันขอให้รู้จักพวกเขา
เพิ่มขึ้น

1
stack overflow nazis ปิดหัวข้อเป็น 'off topic' ... เป็นคำถามที่ดีมากเป็นที่นิยมและไม่ควรปิด ..
Robbo_UK

คำตอบ:


19

มัลติเธรดหมายถึงงานทั่วไปของการรันมากกว่าหนึ่งเธรดของการดำเนินการภายในระบบปฏิบัติการ การมัลติเธรดเรียกว่า "การประมวลผลหลายอย่าง" โดยทั่วไปซึ่งอาจรวมถึงกระบวนการของระบบหลายระบบ (ตัวอย่างง่าย ๆ บน Windows จะเป็นเช่นการเรียกใช้ Internet Explorer และ Microsoft Word ในเวลาเดียวกัน) หรืออาจประกอบด้วยหนึ่งกระบวนการที่มีหลายเธรดภายใน มัน.

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

โปรดทราบว่าเมื่อใดก็ตามที่มีเธรดซอฟต์แวร์เพิ่มเติมของการดำเนินการที่พยายามเรียกใช้งานในเวลาใดก็ตามมากกว่าที่มีเธรดการดำเนินการฮาร์ดแวร์ที่พร้อมใช้งาน(พร้อมกัน) เธรดซอฟต์แวร์เหล่านี้จะถูก "interleaved" ท่ามกลางคอร์ที่มีอยู่ ในกรณีของ "ตัวประมวลผลเดียว" (CPU แกนเดียวที่ไม่มีไฮเปอร์เธรด) ถ้าคุณมีเธรดซอฟต์แวร์มากกว่าหนึ่งเธรดพวกเขาจะเสมอแทรก ถ้าคุณมีซีพียูแบบ 4 คอร์ที่มีไฮเปอร์เธรดนั่นคือ 8 "เธรดฮาร์ดแวร์" ซึ่งหมายความว่าซีพียูสามารถดำเนินการประมวลผล 8 เธรดพร้อมกันได้ในเวลาเดียวกันดังนั้นหากคุณมี 8 เธรดซอฟต์แวร์ที่พยายามเรียกใช้ ; แต่ถ้าคุณมีเธรดซอฟต์แวร์ 9 เธรดหนึ่งในเธรดฮาร์ดแวร์จะต้องแทรกคู่ของเธรด (คู่ที่ถูกต้องของเธรดที่เลือกจะขึ้นอยู่กับการใช้ตัวกำหนดตารางเวลาของระบบปฏิบัติการ)


ในทางกลับกัน Hyperthreading หมายถึงเทคโนโลยีฮาร์ดแวร์เฉพาะที่สร้างโดย Intel ซึ่งช่วยให้หน่วยประมวลผลหลักเดียวสามารถแทรกหลายเธรดการทำงานได้อย่างมีประสิทธิภาพยิ่งขึ้น กล่าวอีกนัยหนึ่งซีพียูที่มีไฮเปอร์เธรดจะให้ประสิทธิภาพซึ่งค่อนข้างสูงกว่าซีพียูซึ่งเป็นอย่างอื่นเหมือนกัน แต่ไม่มีไฮเปอร์เธรดเนื่องจาก CPU ไฮเปอร์เธรดจะสามารถสร้างสมดุลที่สองพร้อมกัน (บางครั้งมากขึ้น วิธี) เธรดของการดำเนินการบนแกนที่กำหนด

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

ใช้ตัวอย่างต่อไปนี้โดยที่ถือว่า "1 คอร์" เพื่อให้ทำงานเหมือนกันทุกตัวอย่าง:

ตัวอย่างที่ 1: 2 แกนไม่มีไฮเปอร์เธรด
ตัวอย่างที่ 2: 4 แกนไม่มีไฮเปอร์เธรด
ตัวอย่างที่ 3: 2 แกนที่มีไฮเปอร์เธรด
ตัวอย่างที่ 4: 4 แกนที่มีไฮเปอร์เธรด

ในกรณีนี้ตัวอย่างที่ 4 จะเร็วที่สุดเสมอ ตัวอย่างที่ 2 บางครั้งอาจเร็วพอ ๆ กับตัวอย่างที่ 4 บนเวิร์กโหลดที่ไม่เหมาะสมอย่างยิ่งกับการใช้ประโยชน์จากการเพิ่มประสิทธิภาพของไฮเปอร์เธรด

ตัวอย่างที่ 3 ในทางกลับกันบางครั้งอาจบนเวิร์กโหลดที่ไฮเปอร์เธรดมีประโยชน์มากที่สุดเกือบจะเร็วเท่ากับตัวอย่างที่ 2 ถึงแม้ว่ามันจะมีครึ่งฟิสิคัลคอร์มาก

ตัวอย่างที่ 1 แน่นอนว่าช้าที่สุดสำหรับตัวอย่างทั้งหมด แต่บางครั้งมันอาจจะเร็วพอ ๆ กับตัวอย่างที่ 3 เมื่อเรียกใช้เวิร์กโหลดที่ไม่เหมาะสมกับการทำไฮเปอร์เธรด

ในมาตรฐานโลกแห่งความเป็นจริงด้วยซีพียู Intel ที่ทันสมัยเรามักจะพบว่าการทำไฮเปอร์เธรดนั้นส่งผลให้ประสิทธิภาพโดยรวมดีขึ้น 20% ถึง 40% เมื่อเทียบกับไฮเปอร์เธรดที่ไม่มีการไฮเปอร์เธรด BIOS) บางครั้งจะมีเวิร์กโหลดที่ปิดใช้งานไฮเปอร์เธรดแสดงข้อดีด้านประสิทธิภาพแต่เวิร์กโหลดเหล่านี้อาจหายากในการใช้งานจริง แต่ถ้าฉันมีตัวเลือกระหว่าง 4 คอร์กับไฮเปอร์เธรดหรือ 8 คอร์สมมติว่าแต่ละคอร์นั้นมีประสิทธิภาพเหมือนกันฉันจะเลือกซีพียู 8 คอร์ทุกครั้ง


2
แน่นอนว่ามัลติเธรดและมัลติโพรเซสซิงไม่ใช่สิ่งเดียวกัน เธรดที่แบ่งใช้บริบทการดำเนินการกับกระบวนการที่เกี่ยวข้องในขณะที่กระบวนการมีบริบทการดำเนินการของตนเอง อย่างไรก็ตามสำหรับคำตอบนี้ความแตกต่างนี้ไม่สำคัญ
Tero Kilkanen

1
เทคโนโลยี Hyperthreading ไม่ใช่ "สร้างโดย Intel"; สำหรับ mainline x86 เป็นเพียงชื่อทางการค้าสำหรับการมัลติเธรดพร้อมกัน หากผลิตอัลฟ่า 21464 มันจะเป็นหนึ่งในผู้ใช้ที่มีชื่อเสียงคนแรกของ SMT Intel ได้ผลิตการใช้ SMT ครั้งแรก (อาจยกเว้นโปรเซสเซอร์ที่รู้จักน้อยกว่า) กับ Pentium 4s บางตัว แต่แนวคิดพื้นฐานไม่ใช่การประดิษฐ์ของ Intel
Paul A. Clayton

2
เล่นลิ้น: hyperthreading ไม่ได้เป็นอย่างเคร่งครัดช้ากว่าแกนแยกต่างหาก หนึ่งสามารถคิดค้น (ประดิษฐ์) กรณีที่การแบ่งปันแคช L1 เป็นประโยชน์มากกว่าการใช้ทรัพยากรของคอร์อย่างเต็มที่ กรณีพิเศษอื่นอาจเป็นเมื่อเธรดหนึ่งแอ็คทีฟอยู่เสมอและอีกเหตุการณ์หนึ่งจะจัดการกับเหตุการณ์ที่เกิดขึ้นเป็นระยะ ๆ การปลุกแกนเป็นระยะนั้นมีราคาแพงกว่าการตื่นด้ายบนแกนกลางที่ใช้งานอยู่ สำหรับเธรดที่มีค่า ILP ต่ำมากหากการแย่งชิงแคชไม่ใช่ปัญหาดังนั้นประสิทธิภาพการใช้พลังงานที่มากขึ้นของการใช้คอร์เดี่ยวอาจช่วยให้การประมวลผลแบบเทอร์โบมากขึ้น (ประสิทธิภาพที่ดีขึ้น)
Paul A. Clayton

3
รู้รอบสามารถแก้ไขได้บน SU ดังนั้นหากคุณต้องการปรับปรุงโปรดอย่าลังเล นอกจากนี้โปรดจำไว้ว่าระดับความรู้ที่ชัดเจนของ OP; แม้คำตอบของฉันที่ยืนอยู่บนตัวของมันเองอาจเป็นเรื่องทางเทคนิคมากกว่าที่พวกเขาคาดหวังหรือต้องการ ฉันตั้งใจคัดรายละเอียดบางอย่างเพื่อให้ง่ายต่อการอธิบาย ฉันสงสัยว่า OP กำลังจะออกแบบตัวประมวลผลเร็ว ๆ นี้และจำเป็นต้องรู้รายละเอียดทั้งหมดเหล่านี้อย่างหมดจดหรือไม่ อย่างไรก็ตามความคิดเห็นที่น่าสนใจ
allquixotic

1
การแก้ไขที่แนะนำที่เปลี่ยนแปลงเนื้อหา (เช่นไม่ใช่แค่การแก้ไขไวยากรณ์ / พิมพ์ผิดหรือการเรียบเรียงใหม่เพื่อความชัดเจน) มีแนวโน้มที่จะถูกปฏิเสธ
Paul A. Clayton

4

มัลติเธรดเป็นคำศัพท์สำหรับการประมวลผลแบบขนานในระดับระบบปฏิบัติการ หน่วยประมวลผลไม่มีส่วนเกี่ยวข้องกับมัลติเธรด

Hyperthreading เป็นแนวคิดของ Intel ที่ใช้การประมวลผล "พร้อมกัน" ของหลายเธรดในโปรเซสเซอร์คอร์เดียว ระบบปฏิบัติการจะเห็นคอร์โปรเซสเซอร์สองคอร์แม้ว่าจะมีฟิสิคัลคอร์เพียงแกนเดียวเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.