เธรดคืออะไรและพวกเขาทำอะไรในโปรเซสเซอร์?


27

ฉันดูสถิติของ Intel Pentium e5700 CPU

มันมีสองแกนและสองกระทู้ เธรดทำอะไรให้โปรเซสเซอร์ได้บ้าง มีความสัมพันธ์ระหว่างจำนวนของคอร์และจำนวนเธรดหรือไม่? เธรดมีจุดประสงค์อะไรสำหรับระบบโดยรวม?


ไม่ว่าจะเป็นจำนวนเธรดที่ CPU สามารถจัดการได้ในแต่ละครั้งหรือสถิติปลอมที่ Intel คิดค้นขึ้นมา
digitxp

3
โหวตให้ใกล้เคียงกับ IMO นี่เป็นเรื่องทั่วไปเกินไป - ในขณะที่ฉันลังเลที่จะพูดว่า "แค่ Google เท่านั้น" จุดประสงค์ของ Super User (และเว็บไซต์ที่คล้ายกัน) คือการตอบคำถามจริงไม่ใช่พจนานุกรมสำหรับคำศัพท์ทางเทคนิค ค้นหาได้ง่ายในแหล่งข้อมูลที่เหมาะสมกว่า
Shinrai

3
@Shinrai ฉันได้แก้ไขสิ่งนี้เพื่อให้ทั่วไปน้อยลง
Simon Sheehan

คำตอบ:


21

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

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

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

สิ่งนี้ช่วยให้แอปพลิเคชันแบบมัลติเธรด ( ไม่ใช่เธรดเดี่ยว) สามารถทำงานได้เร็วขึ้นมากเนื่องจากสามารถรันเธรดได้มากกว่าหนึ่งเธรดใน CPU ในครั้งเดียว


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


1
คุณสามารถอธิบายเธรดที่ใช้สำหรับโปรเซสเซอร์ได้ไหม +1 สำหรับการกล่าวขวัญ hyperthreading แต่เป็นเรื่องธรรมดามากในขณะนี้ (น่าจะเป็นในทุก i3 ของ)
ไซมอน Sheehan

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

จะเกิดอะไรขึ้นถ้าฉันได้สร้างโปรแกรม Java แบบมัลติเธรดที่มี 50 เธรดที่ทำงานพร้อมกันและฉันรันบน Intel i7-4790K ซึ่งมี 4 คอร์และ 8 เธรด นี่หมายความว่ามีเพียง 8 ใน 50 เธรดในแอปพลิเคชัน java เท่านั้นที่ทำงานพร้อมกันและที่เหลืออยู่ในคิว มันทำงานอย่างไร
Donato

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

@Breakthrough, Re " เพื่อให้คุณสามารถเรียกใช้แปดกระทู้พร้อมกัน ", อะไรคือข้อ จำกัด ของ simultaneity เช่นนี้เมื่อเทียบกับsimultaneity จริงที่นำเสนอโดยแต่ละคอร์ที่แท้จริง? นอกจากนี้ยังมีวิธีการที่จะเป็นไปได้ว่า " การใช้งานสามารถใช้งานได้เร็วขึ้นด้วย HyperThreading คนพิการ "?
Pacerier

9

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

เธรดเป็นงานที่ตัวประมวลผลต้องจัดการสำหรับคำอธิบายง่ายๆคุณสามารถสันนิษฐานได้ว่าทุกแอปพลิเคชันที่คุณเปิด (เช่นสีแผ่นจดบันทึกโปรแกรมเล่นสื่อ) มีเธรดของตัวเอง ... ตอนนี้ไม่ได้หมายความว่าคุณสามารถเปิดได้เท่านั้น 2 แอปพลิเคชั่นในครั้งเดียวเพียงเพราะโปรเซสเซอร์และระบบปฏิบัติการทำงานอย่างรวดเร็วที่ 'การสลับเธรด' เพื่อจัดการกับความต้องการของทุกแอปพลิเคชันที่คุณเปิด คุณจะได้สัมผัสกับประสิทธิภาพที่ดีขึ้นพร้อมคอร์มากขึ้นเพราะตอนนี้คุณสามารถขจัดงานทั้งหมดให้กับโปรเซสเซอร์คอร์ได้มากขึ้น

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

กฎทั่วไปของหัวแม่มือก็คือแกนทางกายภาพมากกว่าดีกว่ากระทู้เพิ่มเติม ดังนั้นถ้าคุณเปรียบเทียบโปรเซสเซอร์ที่มี 4 คอร์และ 4 เธรดจะดีกว่า 2 คอร์ 4 เธรด แต่ยิ่งโพรเซสเซอร์ของคุณรองรับได้มากเท่าไรมันก็จะทำงานได้ดีขึ้นในขณะที่มัลติทาสก์และสำหรับแอพพลิเคชั่นที่เข้มข้นมาก (การตัดต่อวิดีโอ, CAD, CAM, การบีบอัด, การเข้ารหัส ฯลฯ )


คุณหมายถึงอะไร "กล่อง"?
Pacerier


-1

คลิกที่ลิงค์ในบทความใน IE หรือ chrome ทุกครั้งที่คุณคลิกที่คุณสร้างเธรด ยิ่งคุณคลิกที่ลิงค์ยิ่งหัวข้อ มีซีพียู 4 คอร์ที่คุณมีเธรดได้ถึง 8 เธรดคุณสามารถเปิดลิงก์ได้ 8 อันก่อนที่จะเริ่มมีปัญหา ไม่สนใจการเชื่อมต่ออินเทอร์เน็ตของคุณ ดังนั้นแต่ละคอร์จะครอบคลุมสองลิงก์เหล่านั้น (เธรด) ที่คุณเปิด นั่นคือความคิดที่ IMO ถ้ามันสมเหตุสมผลกับทุกคน


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