4 หัวแท้ กับ 4 หัวเทียมต่างกันยังไงครับ
Announcement
Collapse
No announcement yet.
4 หัวแท้ กับ 4 หัวเทียมต่างกันยังไง
Collapse
X
-
เอาแบบง่ายๆเปรียบเทียบ
เหมือน cpu เป็นคน ข้อมูลเป็นอาหาร
คนกำลังกินข้าวอยู่
หัวแท้ หรือ core คือ " ปาก "
หัวเทียม หรือ thread คือ " มือ " ที่ใช้หยิบอาหารเข้าปาก
1 core 2 thread คือ มี 2 มือช่วยกันหยิบอาหารเข้าปาก 1 ปาก
และ 2 core 2 thread คือ มี 2 มือ แต่ละมือก็หยิบอาหารใส่คนละ 1 ปาก แยกจากกัน
ตามโจทย์ของคุณ
4 หัวเทียม คือ 2 core 4 thread มี 2 ปาก 4 มือ
4 หัวแท้ คือ 4 core 4 thread มี 4 ปาก 4 มือ
ในสภาวะปกติ ข้อมูลมาน้อย cpu ทำงานแบบชิลๆ การมีหัวเทียมอาจช่วยเพิ่มประสิทธิภาพในการทำงานได้บ้าง เหมือนกับมีมือช่วยหยิบอาหารให้ปากเคี้ยว ( ตัวอย่างงานแบบง่ายๆ เช่น 3dmark06
)
แต่ในสภาวะทำงานจริงๆจัง cpu ทำงาน 100% การมีหัวเทียมก็ไม่ได้ช่วยอะไร เนื่องจากข้อมูลมันมากเกิน ปากเคี้ยวไม่ทัน ดังนั้นจะมีเป็นสิบเป็นร้อยมือไปก็ไม่ได้ช่วยอะไร ( เพราะอาหารมันยังเต็มปากอยู่เลย )
ซึ่งก็ตรงกับสภาวะจริงๆคือ ถ้า cpu 100% แล้ว หัวปลอมจะ 0 ตลอด ไม่วิ่งเลย...
ว่าจะอธิบายสั้นๆ ล่อไปซะยาวเลย ก็คงประมาณนี้ล่ะครับ
Last edited by KarooKKooK; 23 Jun 2011, 23:46:33.
Comment
-
ลองนึงภาพตามนะครับ
เหมือนเรามีแก้วน้ำอยู่ใบนึง
เทคโนโลยี HT (ไฮเปอร์เทรดดิ้ง) คือเมื่อเราเติมน้ำไม่เต็มแก้ว ก็เติมได้เพิ่มอีกครั้ง
ในตัว CPU ที่มี HT เองถ้างานยังไม่เต็ม 100% ก็จะดึงงานเล็กๆงานอื่นไปประมวลผลพร้อมๆกันได้อีกงาน
ส่วน Core แท้ คือน้ำสองแก้ว, ทุกอย่างแยกกันโดยสิ้นเชิง
ถ้าตามทฤษฎีแล้ว จะเห็นว่า ถ้า CPU ทำงานไม่หนักมาก แต่ทำหลายๆอย่างพร้อมๆกัน ก็จะไม่มีความแตกต่าง แท้กะเทียม
แต่ปฎิบัติจริงโปรแกรม "ไม่ได้ support HT ทุกโปรแกรม" และเมื่อ run full load อยู่ HT มันทำงานไม่ได้ครับ เพราะเหมือนน้ำเต็มแก้วอยู่แล้ว เติมอะไรไปอีกไม่ได้
Run Benchmark ไม่เห็นผลหรอกครับ แต่ถ้าใช้งานกับแอฟฟลิเคชั่นจริง ๆ แล้ว มันไม่ลื่น
Comment
-
หัวเทียม แต่ละคอร์จะมีส่วนที่เรียกว่า Architectural_state สองส่วน แต่มีส่วนที่เป็นทรัพยากรในการประมวลผลจริงๆ แค่ส่วนเดียว ทำให้เราเห็นในระบบปฏิบัติการเหมือนมี 2 คอร์ ต่อคอร์จริงๆ หนึ่งคอร์
เมื่อระบบปฏิบัติการถูกทำให้เข้าใจว่ามันสามารถรับงานได้พร้อมกัน 2 งาน มันจึงพยายามจัดสรรโปรเซสต่างๆ เข้าไปประมวลผล 2 โปรเซสพร้อมๆ กัน ทำให้ในบางช่วงเวลาที่ทรัพยากรสำหรับการประมวลผลตัวจริงนั้นไม่ได้ถูกใช้ประมวลผลในโปสเซสปัจจุบันที่กำลังทำอยู่อย่างเช่นตอนที่กำลังรออะไรสักอย่างอยู่ สามารถประมวลผลงานอีกงานหนึ่งที่ถูกส่งมาเพราะเข้าใจว่ามี 2 คอร์นั้น ทำไปก่อนในระหว่างรอได้
ภาวะที่โปรเซสกำลังรองาน (Stall) มีตัวอย่างเช่น cache miss (คือเข้าไปหาข้อมูลในเคช แต่ละระดับแล้วหาไม่เจอ ต้องไปเริ่มหาต่อในเคชที่ช้าลง), branch misprediction, data dependency (ข้อมูลที่เรียกมามันซ้ำซ้อน) ฯ
ใน P4 HT รุ่นแรกๆ ที่ได้เริ่มมีการนำ HyperThreading เข้ามาใช้ พบว่าการออกแบบให้เพิ่มส่วน HT เข้าไปจาก คอร์แท้ธรรมดาๆ ปกติ จะใช้เนื้อที่ชิปเพิ่มจากเดิมแค่ 5% เท่านั้น แต่กลับได้ประสิทธิภาพเพิ่มขึ้น 5-30% นั่นหมายถึงคุ้มค่าที่จะเพิ่ม HT เข้าไป
ส่วน คอร์แท้ก็เข้าใจง่ายว่า ตัวรับงาน 2 ตัว มีทัรัพยากรในการประมวลผล 2 ชุด ทำงานพร้อมกัน 2 งาน ไม่ต้องรอกัน มักจะทำงานเสร็จเร็วเกือบ 2 เท่า ถ้าได้รับการจัดสรรงานอย่างเหมาะสม
หัวเทียม = Hyper Threading
หลายหัวแท้ = Multi Core
หลายหัวแท้ แบบเยอะๆ = Many Core
Comment
-
โหเห็นภาพชัดเจนครับท่าน 55+Originally posted by KarooKKooK View Postเอาแบบง่ายๆเปรียบเทียบ
เหมือน cpu เป็นคน ข้อมูลเป็นอาหาร
คนกำลังกินข้าวอยู่
หัวแท้ หรือ core คือ " ปาก "
หัวเทียม หรือ thread คือ " มือ " ที่ใช้หยิบอาหารเข้าปาก
1 core 2 thread คือ มี 2 มือช่วยกันหยิบอาหารเข้าปาก 1 ปาก
และ 2 core 2 thread คือ มี 2 มือ แต่ละมือก็หยิบอาหารใส่คนละ 1 ปาก แยกจากกัน
ตามโจทย์ของคุณ
4 หัวเทียม คือ 2 core 4 thread มี 2 ปาก 4 มือ
4 หัวแท้ คือ 4 core 4 thread มี 4 ปาก 4 มือ
ในสภาวะปกติ ข้อมูลมาน้อย cpu ทำงานแบบชิลๆ การมีหัวเทียมอาจช่วยเพิ่มประสิทธิภาพในการทำงานได้บ้าง เหมือนกับมีมือช่วยหยิบอาหารให้ปากเคี้ยว ( ตัวอย่างงานแบบง่ายๆ เช่น 3dmark06
)
แต่ในสภาวะทำงานจริงๆจัง cpu ทำงาน 100% การมีหัวเทียมก็ไม่ได้ช่วยอะไร เนื่องจากข้อมูลมันมากเกิน ปากเคี้ยวไม่ทัน ดังนั้นจะมีเป็นสิบเป็นร้อยมือไปก็ไม่ได้ช่วยอะไร ( เพราะอาหารมันยังเต็มปากอยู่เลย )
ซึ่งก็ตรงกับสภาวะจริงๆคือ ถ้า cpu 100% แล้ว หัวปลอมจะ 0 ตลอด ไม่วิ่งเลย...
ว่าจะอธิบายสั้นๆ ล่อไปซะยาวเลย ก็คงประมาณนี้ล่ะครับ
Comment
Comment