ทำไมคอร์ CPU จึงมีความเร็วเท่ากันแทนที่จะเป็นแบบที่ต่างกัน?
หากคุณเคยเปรียบเทียบการจับจ่ายซื้อ CPU ใหม่มากคุณอาจสังเกตเห็นว่าแกนประมวลผลทั้งหมดดูเหมือนจะมีความเร็วมากกว่าการรวมกันของหน่วยประมวลผลที่แตกต่างกัน ทำไมถึงเป็นอย่างนั้น? โพสต์ SuperUser คำถาม & คำตอบนี้มีคำตอบสำหรับคำถามของผู้อ่านที่อยากรู้อยากเห็น.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
ผู้อ่าน SuperUser Jamie ต้องการทราบว่าเหตุใดแกนประมวลผลของ CPU จึงมีความเร็วเท่ากันแทนที่จะเป็นค่าที่ต่างกัน:
โดยทั่วไปหากคุณซื้อคอมพิวเตอร์เครื่องใหม่คุณจะพิจารณาว่าจะซื้อโปรเซสเซอร์ตัวใดตามปริมาณงานที่คาดหวังสำหรับคอมพิวเตอร์ ประสิทธิภาพของวิดีโอเกมมีแนวโน้มที่จะถูกกำหนดโดยความเร็วแกนเดี่ยวในขณะที่แอปพลิเคชันเช่นการตัดต่อวิดีโอจะถูกกำหนดโดยจำนวนแกนประมวลผล ในแง่ของสิ่งที่มีอยู่ในตลาดซีพียูทั้งหมดดูเหมือนจะมีความเร็วเท่ากันโดยมีความแตกต่างที่สำคัญคือเธรดเพิ่มเติมหรือแกนเพิ่มเติม.
ตัวอย่างเช่น:
- Intel Core i5-7600K, ความถี่พื้นฐาน 3.80 GHz, 4 คอร์, 4 เธรด
- Intel Core i7-7700K, ความถี่พื้นฐาน 4.20 GHz, 4 คอร์, 8 เธรด
- AMD Ryzen 5 1600X, ความถี่พื้นฐาน 3.60 GHz, 6 คอร์, 12 เธรด
- AMD Ryzen 7 1800X, ความถี่พื้นฐาน 3.60 GHz, 8 คอร์, 16 เธรด
ทำไมเราเห็นรูปแบบของแกนที่เพิ่มขึ้นนี้ แต่แกนทั้งหมดมีความเร็วสัญญาณนาฬิกาเท่ากัน? เหตุใดจึงไม่มีตัวแปรที่มีความเร็วสัญญาณนาฬิกาต่างกัน ตัวอย่างเช่นสองแกน "ใหญ่" และแกนเล็ก ๆ มากมาย.
แทนที่จะพูดสี่แกนที่ 4.0 GHz (เช่น 4 × 4 GHz สูงสุด 16 GHz) วิธีการเกี่ยวกับ CPU ที่มีสองแกนทำงานที่ 4.0 GHz และสี่แกนทำงานที่ 2.0 GHz (เช่น 2 × 4.0 GHz + 4 × 2.0 GHz, สูงสุด 16 GHz) ตัวเลือกที่สองจะดีพอ ๆ กันที่เวิร์กโหลดเธรดเดียว แต่อาจดีกว่าที่เวิร์กโหลดที่มีหลายเธรด?
ฉันถามคำถามนี้เป็นคำถามทั่วไปและไม่เฉพาะเจาะจงเกี่ยวกับ CPU ที่ระบุไว้ข้างต้นหรือเกี่ยวกับภาระงานเฉพาะอย่างใดอย่างหนึ่ง ฉันแค่อยากรู้ว่าทำไมรูปแบบคืออะไร.
ทำไมแกนประมวลผลของ CPU จึงมีความเร็วเท่ากันแทนที่จะต่างกัน?
คำตอบ
ผู้สนับสนุน SuperUser bwDraco มีคำตอบสำหรับเรา:
สิ่งนี้เรียกว่าการประมวลผลแบบหลายชั้น (HMP) ที่หลากหลายและถูกนำไปใช้อย่างแพร่หลายในอุปกรณ์พกพา ในอุปกรณ์ที่ใช้ ARM ซึ่งใช้ขนาดใหญ่ LITTLE ตัวประมวลผลประกอบด้วยคอร์ที่มีประสิทธิภาพและโปรไฟล์พลังงานที่แตกต่างกันเช่นคอร์บางตัวทำงานเร็ว แต่ดึงพลังงานจำนวนมาก (สถาปัตยกรรมที่เร็วกว่าและ / หรือนาฬิกาที่สูงกว่า) ในขณะที่อุปกรณ์อื่น ๆ สถาปัตยกรรมช้าลงและ / หรือนาฬิกาลดลง) สิ่งนี้มีประโยชน์เนื่องจากการใช้พลังงานมีแนวโน้มที่จะเพิ่มขึ้นอย่างไม่เป็นสัดส่วนเมื่อคุณเพิ่มประสิทธิภาพเมื่อคุณผ่านจุดหนึ่งไปแล้ว ความคิดที่นี่คือการได้รับประสิทธิภาพเมื่อคุณต้องการและแบตเตอรี่เมื่อคุณไม่ได้.
บนแพลตฟอร์มเดสก์ท็อปการใช้พลังงานเป็นปัญหาน้อยกว่าดังนั้นจึงไม่จำเป็นอย่างแท้จริง แอพพลิเคชั่นส่วนใหญ่คาดว่าแต่ละคอร์จะมีคุณสมบัติด้านประสิทธิภาพที่คล้ายกันและกระบวนการตั้งเวลาสำหรับระบบ HMP นั้นซับซ้อนกว่าการตั้งเวลาสำหรับระบบมัลติโพรเซสซิ่งแบบสมมาตร (SMP) แบบดั้งเดิม (ทางเทคนิค Windows 10 รองรับ HMP แต่ส่วนใหญ่ อุปกรณ์ที่ใช้ ARM big.LITTLE).
นอกจากนี้โปรเซสเซอร์เดสก์ท็อปและแล็ปท็อปส่วนใหญ่ในปัจจุบันไม่ได้จำกัดความร้อนหรือไฟฟ้าจนถึงจุดที่คอร์บางตัวต้องทำงานเร็วกว่าตัวอื่น ๆ แม้แต่ในช่วงเวลาสั้น ๆ โดยทั่วไปเราชนกำแพงกับความเร็วที่เราสามารถสร้างคอร์แต่ละคอร์ได้ดังนั้นการแทนที่คอร์บางส่วนด้วยคอร์ที่ช้ากว่าจะไม่ทำให้คอร์ที่เหลือทำงานเร็วขึ้น.
ในขณะที่มีโปรเซสเซอร์เดสก์ท็อปไม่กี่ตัวที่มีหนึ่งหรือสองคอร์ที่สามารถทำงานได้เร็วกว่าโปรเซสเซอร์อื่น ๆ แต่ความสามารถนี้ จำกัด เฉพาะโปรเซสเซอร์ Intel ระดับไฮเอนด์บางอย่าง (รู้จักกันในชื่อ Turbo Boost Max Technology 3.0) และเกี่ยวข้องเพียงเล็กน้อยเท่านั้น ประสิทธิภาพสำหรับแกนประมวลผลที่สามารถทำงานได้เร็วขึ้น.
ในขณะที่มีความเป็นไปได้ในการออกแบบโปรเซสเซอร์ x86 แบบดั้งเดิมที่มีทั้งคอร์ขนาดใหญ่, คอร์ที่รวดเร็วและคอร์ที่เล็กกว่า, คอร์ที่ช้ากว่าเพื่อเพิ่มประสิทธิภาพสำหรับเวิร์กโหลดแบบเธรดจำนวนมากซึ่งจะเพิ่มความซับซ้อนในการออกแบบโปรเซสเซอร์และแอพพลิเคชั่น.
ใช้หน่วยประมวลผลสมมุติพร้อมคอร์ Kaby Lake (ยุคที่เจ็ด) สองตัวและแกน Goldmont (Atom) ที่ช้าแปดตัว คุณจะมีทั้งหมด 10 คอร์และเวิร์กโหลดแบบเธรดที่ปรับให้เหมาะสมสำหรับโปรเซสเซอร์ชนิดนี้อาจเห็นประสิทธิภาพและประสิทธิภาพที่เหนือกว่าโปรเซสเซอร์ Kaby Lake แบบ quad-core ปกติ อย่างไรก็ตามแกนประเภทต่าง ๆ มีระดับประสิทธิภาพแตกต่างกันมากและแกนประมวลผลช้าไม่สนับสนุนคำสั่งบางส่วนสำหรับการสนับสนุนคอร์อย่างรวดเร็วเช่น AVX (ARM หลีกเลี่ยงปัญหานี้โดยกำหนดให้แกนทั้งใหญ่และ LITTLE รองรับคำแนะนำเดียวกัน ).
อีกครั้งแอพพลิเคชั่นมัลติเธรดที่ทำงานบน Windows ส่วนใหญ่ถือว่าทุกคอร์มีประสิทธิภาพในระดับเดียวกันหรือเกือบเท่ากันและสามารถดำเนินการตามคำสั่งเดียวกันดังนั้นความไม่สมมาตรแบบนี้น่าจะส่งผลให้มีประสิทธิภาพน้อยกว่าที่คิด ขัดข้องหากใช้คำสั่งที่แกนกลางที่ช้ากว่าไม่รองรับ ในขณะที่ Intel สามารถแก้ไขแกนประมวลผลช้าเพื่อเพิ่มการสนับสนุนการเรียนการสอนขั้นสูงเพื่อให้แกนประมวลผลทั้งหมดสามารถดำเนินการตามคำแนะนำทั้งหมดได้ แต่จะไม่แก้ไขปัญหาด้วยการสนับสนุนซอฟต์แวร์สำหรับโปรเซสเซอร์ที่ต่างกัน.
แนวทางที่แตกต่างในการออกแบบแอพพลิเคชั่นซึ่งใกล้เคียงกับที่คุณคิดในคำถามของคุณจะใช้ GPU เพื่อเร่งความเร็วของแอพพลิเคชั่นที่ขนานกันอย่างมาก สามารถทำได้โดยใช้ API เช่น OpenCL และ CUDA สำหรับโซลูชั่นชิปเดี่ยว AMD สนับสนุนการสนับสนุนฮาร์ดแวร์สำหรับการเร่งความเร็ว GPU ใน APUs ซึ่งรวม CPU แบบดั้งเดิมและ GPU แบบบูรณาการที่มีประสิทธิภาพสูงไว้ในชิปตัวเดียวกันกับสถาปัตยกรรมระบบที่แตกต่างแม้ว่าจะไม่ได้เห็นอุตสาหกรรมมากนัก ของแอปพลิเคชันพิเศษบางอย่าง.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.
เครดิตรูปภาพ: Mirko Waltermann (Flickr)