มัลติคอร์และชิปมัลติโปรเซสเซอร์
ชิปมัลติโปรเซสเซอร์รวมคอร์ประมวลผลหลายคอร์ไว้บนดาย (die) เดียวกัน โดยใช้แคชและอินเทอร์เฟซหน่วยความจำร่วมกัน เพื่อให้การประมวลผลแบบขนานระดับเธรด (thread-level parallelism) เป็นตัวขับเคลื่อนการเติบโตของประสิทธิภาพ แทนที่จะเป็นความเร็วสัญญาณนาฬิกาที่สูงขึ้น
Definition
โปรเซสเซอร์มัลติคอร์ หรือชิปมัลติโปรเซสเซอร์ คือวงจรรวมเดี่ยวที่ประกอบด้วยคอร์ประมวลผลอิสระหลายคอร์ ซึ่งใช้ทรัพยากรบางส่วนบนชิปและระบบหน่วยความจำร่วมกัน ออกแบบมาเพื่อประมวลผลเธรดหรือโปรแกรมหลายรายการพร้อมกัน
Scope
หัวข้อนี้ครอบคลุมการจัดระเบียบของชิปมัลติคอร์: จำนวนคอร์และความแตกต่างหลากหลาย (heterogeneity), ลำดับชั้นของแคชแบบใช้ร่วมกันและแบบส่วนตัว, การเชื่อมต่อภายในชิป (on-chip interconnects), และวิธีที่ประสิทธิภาพเพิ่มขึ้นตามจำนวนคอร์ภายใต้กฎของแอมดาล (Amdahl's law) โดยจะกล่าวถึงโครงสร้างฮาร์ดแวร์ของระบบมัลติคอร์ ไม่รวมกลไกความสอดคล้องและความคงที่ที่ใช้ร่วมกับหัวข้อหน่วยความจำที่ใช้ร่วมกันอื่นๆ (shared-memory-and-coherence, cache coherence protocols) และเอนจินแบบคอร์เดี่ยว (processor microarchitecture)
Core questions
- เหตุใดโปรเซสเซอร์จึงเปลี่ยนจากคอร์เดี่ยวที่เร็วไปเป็นหลายคอร์?
- คอร์ แคช และการเชื่อมต่อถูกจัดระเบียบอย่างไรบนชิป?
- กฎของแอมดาลจำกัดความเร็วที่เพิ่มขึ้นจากการเพิ่มคอร์ได้อย่างไร?
- เมื่อใดที่คอร์แบบหลากหลาย (heterogeneous cores) ดีกว่าคอร์ที่เหมือนกัน?
Key concepts
- ชิปมัลติโปรเซสเซอร์
- การประมวลผลแบบขนานระดับเธรด
- แคชแบบใช้ร่วมกันเทียบกับแคชส่วนตัว
- การเชื่อมต่อภายในชิป
- จำนวนคอร์และการปรับขนาด
- คอร์แบบหลากหลาย (big.LITTLE)
- กฎของแอมดาล
- ข้อจำกัดด้านพลังงานและความร้อน
Key theories
- กฎของแอมดาลสำหรับการปรับขนาดมัลติคอร์
- ส่วนที่เป็นลำดับของเวิร์กโหลดจำกัดความเร็วที่เพิ่มขึ้นได้จากการเพิ่มคอร์; ข้อจำกัดนี้อธิบายว่าทำไมการเพิ่มจำนวนคอร์เพียงอย่างเดียวจึงให้ผลตอบแทนที่ลดลง และกระตุ้นให้ลดคอขวดแบบลำดับและใช้การออกแบบที่หลากหลาย
Mechanisms
ชิปมัลติคอร์จะวางคอร์หลายคอร์ไว้บนดายเดียวกัน โดยทั่วไปจะมีแคชระดับแรกแบบส่วนตัว, แคชระดับสุดท้ายที่ใช้ร่วมกัน, และเครือข่ายหรือวงแหวนบนชิปที่เชื่อมต่อกับตัวควบคุมหน่วยความจำ เวิร์กโหลดจะได้รับประสิทธิภาพเพิ่มขึ้นจากการรันเธรดบนคอร์ที่แตกต่างกัน การออกแบบที่หลากหลาย (heterogeneous designs) จะรวมคอร์ประสิทธิภาพสูงขนาดใหญ่เข้ากับคอร์ประสิทธิภาพต่ำขนาดเล็ก โดยจัดตารางงานไปยังคอร์ที่เหมาะสมที่สุดเพื่อรักษาสมดุลระหว่างความเร็วและพลังงาน
Clinical relevance
มัลติคอร์เป็นการออกแบบโปรเซสเซอร์ที่โดดเด่นในปัจจุบัน ตั้งแต่โทรศัพท์ไปจนถึงเซิร์ฟเวอร์ เนื่องจากความถี่สัญญาณนาฬิกาหยุดนิ่งภายใต้ข้อจำกัดด้านพลังงาน การเพิ่มขึ้นของมัลติคอร์ทำให้ภาระด้านประสิทธิภาพตกอยู่กับซอฟต์แวร์แบบขนาน: แอปพลิเคชันต้องเป็นแบบมัลติเธรดจึงจะได้รับประโยชน์ ทำให้การประมวลผลพร้อมกัน (concurrency) กลายเป็นข้อกังวลหลักในการเขียนโปรแกรม และกฎของแอมดาลกลายเป็นข้อจำกัดเชิงปฏิบัติในระบบจริง
History
ชิปมัลติโปรเซสเซอร์สำหรับการวิจัย เช่น Hydra ของ Stanford ในทศวรรษ 1990 ได้คาดการณ์ยุคมัลติคอร์ การหยุดชะงักของการเพิ่มความถี่สัญญาณนาฬิกาประมาณปี 2004–2005 ผลักดันให้ CPU กระแสหลักเปลี่ยนไปใช้การออกแบบแบบดูอัลคอร์และต่อมาเป็นแบบหลายคอร์ สถาปัตยกรรมแบบหลากหลายที่รวมคอร์ประสิทธิภาพสูงและคอร์ประหยัดพลังงานเข้าด้วยกันได้กลายเป็นที่นิยมในเวลาต่อมา โดยเฉพาะในโปรเซสเซอร์สำหรับมือถือและแล็ปท็อป
Debates
- คอร์จำนวนมากเทียบกับคอร์ที่แข็งแกร่งกว่า
- เมื่อมีข้อจำกัดด้านพลังงานและพื้นที่ นักออกแบบถกเถียงกันว่าจะเพิ่มคอร์ที่เรียบง่ายจำนวนมาก, คอร์ที่ทรงพลังน้อยลง, หรือการผสมผสานแบบหลากหลาย; ทางเลือกที่ดีที่สุดขึ้นอยู่กับว่าเวิร์กโหลดเป้าหมายเป็นแบบขนานมากน้อยเพียงใด โดยกฎของแอมดาลจะสนับสนุนคอร์ที่แข็งแกร่งเมื่อส่วนที่เป็นลำดับมีนัยสำคัญ
Key figures
- Gene Amdahl
- John L. Hennessy
- David A. Patterson
- Kunle Olukotun
Related topics
Seminal works
- hennessy2019
- amdahl1967
Frequently asked questions
- เหตุใดการเพิ่มจำนวนคอร์เป็นสองเท่าจึงไม่ทำให้ประสิทธิภาพเพิ่มขึ้นเป็นสองเท่า?
- ตามกฎของแอมดาล ส่วนใดๆ ของโปรแกรมที่ต้องทำงานแบบลำดับจะจำกัดประโยชน์ของคอร์ที่เพิ่มเข้ามา การสื่อสาร การซิงโครไนซ์ และการแย่งชิงทรัพยากรที่ใช้ร่วมกันจะเพิ่มโอเวอร์เฮดเพิ่มเติม ดังนั้นความเร็วที่เพิ่มขึ้นจริงมักจะต่ำกว่าการปรับขนาดเชิงเส้นในอุดมคติมาก
- คอร์แบบหลากหลาย (big.LITTLE) คืออะไร?
- การออกแบบแบบหลากหลายจะรวมคอร์ขนาดใหญ่ประสิทธิภาพสูงเข้ากับคอร์ขนาดเล็กที่ประหยัดพลังงานบนชิปเดียวกัน ระบบจะจัดตารางงานที่ต้องการประสิทธิภาพสูงให้กับคอร์ขนาดใหญ่ และงานเบาๆ หรืองานเบื้องหลังให้กับคอร์ขนาดเล็ก ซึ่งช่วยปรับปรุงประสิทธิภาพการใช้พลังงานโดยไม่ลดทอนประสิทธิภาพสูงสุด