ทำไมซีพียูแบบดูอัลคอร์ของฉันจึงได้รับการยอมรับว่าเป็นควอดคอร์?


52

หน่วยประมวลผลของฉันเป็นi3-380m Intel Core อย่างที่คุณเห็นมันเป็น 2 คอร์และ 4 เธรด

แม้ว่า Ubuntu 11.04 และ Windows 7 ทั้งสองดูเหมือนว่าจะเป็น CPU แบบ quad-core:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ทำไมนี้ เป็นเพราะมี 2 เธรดต่อคอร์แบ่งซีพียูในหน่วยประมวลผล 4 ตัว?

คำตอบ:


43

ดังที่กล่าวไว้คุณมีระบบดูอัลคอร์ที่มี 2 เธรดต่อคอร์

Intel ทำตลาดโดยใช้Hyperthreadingและมีหลายวิธีในหลายปีที่ผ่านมาโดยผู้ผลิตหลายราย

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

เพื่อลดความซับซ้อนของวิธีการที่ซีพียูเห็นต่อระบบแต่ละไฮเปอร์เธรดถูกมองว่าเป็นซีพียูแยกกันดังนั้นโปรเซสเซอร์ดูอัลคอร์ 2 เธรดต่อคอร์จึงปรากฏเป็นโปรเซสเซอร์คอร์คอร์

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


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

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

@Mokubai ลิงก์ที่จอดรถหลักไม่ทำงาน
Biswapriyo

49

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


7
สิ่งนี้เป็นที่รู้จักกันในชื่อฟิสิคัลคอลตรรกะหรือไม่?
xdumaine

11
ใช่แกนทางกายภาพคือ - ดี ... ทางกายภาพ คุณสามารถสัมผัสมัน แกน Hyperthreaded arent จริงจึงมีเหตุผล คุณสามารถแบ่งคอร์ฟิสิคัลออกเป็นโลจิคัลคอร์ผ่าน virtualiztion ได้เช่นกัน
Keltari

3
@Keltari จริง ๆ แล้วมันมีส่วนกายภาพอยู่ด้วย ... Hyperthreading เป็นส่วนประกอบฮาร์ดแวร์ใน CPU core (และสามารถปิดการใช้งานได้เฉพาะในระดับฮาร์ดแวร์) ดูเอกสารทางเทคนิคของ Intel นี้สำหรับรายละเอียด โดยพื้นฐานแล้วจะแบ่งปันทรัพยากรหลักระหว่างหน่วยปฏิบัติการทางกายภาพสองหน่วย ในทางเทคนิคคอร์ทั้งสองที่ระบบปฏิบัติการมองเห็นในคอร์ไฮเปอร์เธรดนั้นเป็น "ตรรกะ" ไม่มีทั้งฟิสิคัลและโลจิคัล
พัฒนา

1
true, hyperthreading เป็นฟิสิคัลส่วนหนึ่งของโปรเซสเซอร์ แต่ไม่ใช่ฟิสิคัลคอร์
Keltari

1
วิธีที่ดีที่สุดในการคิดถึง HT คือ "แกนกลางและครึ่ง" ที่ใช้ทรัพยากรร่วมกับพี่ชายมากกว่าแกนกลางแยกกัน อย่างไรก็ตามมันมีความสามารถในการดำเนินการเธรด "ด้วยตัวเอง" และระบบปฏิบัติการถือว่าเป็นหน่วยดำเนินการเธรด (ซึ่งคุณเชื่อมโยงกับแกนหลัก)
crasic

12

สิ่งต่าง ๆ มีความซับซ้อนมากกว่าในวันที่มีคำสั่ง cpu หนึ่งคำสั่งต่อหนึ่งรอบสัญญาณนาฬิกา

ขณะนี้มีท่อสำหรับแต่ละคำสั่งที่ประกอบด้วยหลายขั้นตอน ฉันได้ยินมามากถึง 41 แล้วแม้ว่าจะผ่านมาไม่นานและฉันก็ไม่รู้ว่าท่อซีพียูในปัจจุบันมีลักษณะอย่างไร ฉันรู้ว่าถ้าไปป์ไลน์ยาวพอคุณสามารถเริ่มต้นคำสั่งใหม่ลงไปป์ไลน์ก่อนที่คำสั่งสุดท้ายจะเสร็จสิ้นบางครั้งในรอบสัญญาณนาฬิกาเดียวกันเพื่อให้แกนเดี่ยวของคุณทำสองสิ่งได้อย่างมีประสิทธิภาพพร้อมกัน

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

เป็นที่น่าสังเกตว่าที่นี่ในขณะที่การทำไฮเปอร์เธรดสามารถเพิ่มจำนวนงานที่คุณได้รับจากซีพียูได้อย่างมีนัยสำคัญ มันอาจหมายถึงการปรับปรุงเพียงเล็กน้อยที่ 15% หรือเพิ่มขึ้น 40% ในบางกรณีคุณอาจต้องการปิดการใช้งานคุณสมบัติเพื่อให้แกนที่เหลือมีการเข้าถึงแบบเต็มไปยังแคช L1 / L2 สำหรับคอร์นั้น (บางครั้งทำได้กับเซิร์ฟเวอร์ฐานข้อมูลเฉพาะ)

เมื่อชิปของคุณโฆษณาตัวเองว่ามี 2 คอร์ที่มี 4 เธรดนั่นหมายความว่าเป็นโปรเซสเซอร์แบบดูอัลคอร์ที่รองรับการทำไฮเปอร์เธรด


2

ลองดูที่เพจ intel นี้ - มันมีอนิเมชั่นมากมายที่แสดงให้เห็นว่าการทำไฮเปอร์เธรดเร็วขึ้นแค่ไหน

นี่Utilization of Processor Resourcesคือแอนิเมชั่นที่ดีที่สุดลองดูแล้วคลิกปุ่ม "ล่วงหน้า"


1

ทำไมนี้ เป็นเพราะมี 2 เธรดต่อคอร์แบ่งซีพียูในหน่วยประมวลผล 4 ตัว?

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


คุณรู้ไหมว่าทำไม?
จริงจัง

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