คุณคำนวณความเร็วโปรเซสเซอร์บนโปรเซสเซอร์แบบมัลติคอร์ได้อย่างไร
การมาถึงของโปรเซสเซอร์แบบมัลติคอร์ระดับผู้บริโภคที่ประหยัดนั้นทำให้เกิดคำถามขึ้นสำหรับผู้ใช้หลายคน: คุณจะคำนวณความเร็วที่แท้จริงของระบบมัลติคอร์ได้อย่างไร? ระบบ 3Ghz แบบ 4 คอร์เป็น 12Ghz จริงหรือ อ่านต่อในขณะที่เราตรวจสอบ.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser ซึ่งเป็นแผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มไดรฟ์ชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
เครื่องอ่าน SuperUser NReilingh อยากรู้ว่าการคำนวณความเร็วโปรเซสเซอร์สำหรับระบบมัลติคอร์เป็นจริงได้อย่างไร:
ถูกต้องหรือไม่ที่จะพูดเช่นว่าโปรเซสเซอร์ที่มีสี่คอร์แต่ละตัวทำงานที่ 3GHz จริง ๆ แล้วโปรเซสเซอร์ทำงานที่ 12GHz?
ฉันเคยเข้าสู่ข้อโต้แย้ง“ Mac vs. PC” (ซึ่งไม่ได้เป็นจุดสนใจของหัวข้อนี้…ที่ย้อนกลับไปในโรงเรียนมัธยมกลาง) กับคนรู้จักที่ยืนยันว่า Mac ถูกโฆษณาเพียง 1Ghz เพราะเป็นคู่ - โปรเซสเซอร์ G4 แต่ละตัวทำงานที่ 500MHz.
ในขณะที่ฉันรู้ว่าสิ่งนี้จะ hogwash ด้วยเหตุผลที่ฉันคิดว่าคนส่วนใหญ่เห็นได้ชัด แต่ฉันเพิ่งเห็นความคิดเห็นในเว็บไซต์นี้เพื่อผลของ "6 แกน x 0.2GHz = 1.2Ghz" และนั่นทำให้ฉันคิดอีกครั้งว่า มีคำตอบที่แท้จริงสำหรับเรื่องนี้.
ดังนั้นนี่คือคำถามทางเทคนิคเชิงปรัชญา / เชิงลึกเกี่ยวกับความหมายของการคำนวณความเร็วสัญญาณนาฬิกา ฉันเห็นความเป็นไปได้สองอย่าง:
- แต่ละแกนเป็นจริงทำการคำนวณ x ต่อวินาทีดังนั้นจำนวนการคำนวณทั้งหมดคือ x (แกน).
- ความเร็วนาฬิกาค่อนข้างนับจำนวนรอบที่โปรเซสเซอร์ผ่านไปในระยะเวลาหนึ่งวินาทีดังนั้นตราบใดที่แกนประมวลผลทั้งหมดทำงานด้วยความเร็วเท่ากันความเร็วของนาฬิกาแต่ละรอบจะยังคงเหมือนเดิมไม่ว่าจะมีกี่คอร์ก็ตาม . กล่าวอีกนัยหนึ่ง Hz = (core1Hz + core2Hz + …) / cores.
ดังนั้นวิธีที่เหมาะสมในการแสดงความเร็วสัญญาณนาฬิกาทั้งหมดคืออะไรและที่สำคัญกว่านั้นคือมันเป็นไปได้หรือไม่ที่จะใช้การตั้งชื่อความเร็วแกนเดียวในระบบมัลติคอร์?
คำตอบ
ผู้สนับสนุน SuperUser Mokubai ช่วยล้างสิ่งต่าง ๆ เขาเขียน:
เหตุผลหลักที่โปรเซสเซอร์ Quad-core 3GHz นั้นไม่เคยเร็วเท่า 12GHz แบบ single-core นั้นจะเกี่ยวข้องกับการทำงานของตัวประมวลผลนั้น ๆ เช่น i-single-threaded หรือ multi-threaded กฎหมายของอัมดาห์เป็นสิ่งสำคัญเมื่อพิจารณาประเภทของงานที่คุณกำลังทำอยู่.
หากคุณมีงานที่เป็นเชิงเส้นโดยเนื้อแท้และจะต้องทำอย่างละเอียดทีละขั้นตอนเช่น (โปรแกรมอย่างง่ายอย่างไม่มีการลด)
10: a = a + 1
20: ข้ามไป 10
จากนั้นงานจะขึ้นอยู่กับผลลัพธ์ของการส่งผ่านก่อนหน้าและไม่สามารถเรียกใช้สำเนาของตัวเองได้หลายชุดโดยไม่ทำให้ค่าของ
'a'
เนื่องจากแต่ละสำเนาจะได้รับค่าของ'a'
ในเวลาที่ต่างกันและเขียนมันกลับต่างกัน สิ่งนี้ จำกัด ภารกิจไว้ที่เธรดเดี่ยวและดังนั้นภารกิจสามารถรันบนคอร์เดียวในเวลาใดก็ตามถ้ามันถูกเรียกใช้บนหลายคอร์ดังนั้นความเสียหายของการซิงโครไนซ์จะเกิดขึ้น ซึ่ง จำกัด ไว้ที่ 1/2 ของกำลัง cpu ของระบบดูอัลคอร์หรือ 1/4 ในระบบควอดคอร์.ตอนนี้ทำงานเช่น:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: ข้ามไป 10
บรรทัดทั้งหมดเหล่านี้มีความเป็นอิสระและสามารถแบ่งออกเป็น 4 โปรแกรมแยกกันเช่นครั้งแรกและเรียกใช้ในเวลาเดียวกันแต่ละคนสามารถใช้พลังงานอย่างเต็มประสิทธิภาพของแกนใดแกนหนึ่งโดยไม่มีปัญหาการซิงโครไนซ์ซึ่งเป็นกฎของ Amdahl เข้ามามัน.
ดังนั้นหากคุณมีแอพพลิเคชั่นแบบเธรดเดียวที่ทำการคำนวณแรงเดรัจฉานหน่วยประมวลผล 12GHz ตัวเดียวจะชนะถ้าคุณสามารถแยกงานออกเป็นส่วนต่าง ๆ และแบบมัลติเธรด 4 คอร์ก็เข้ามาใกล้ แต่ไม่ถึง ประสิทธิภาพเดียวกันตามกฎหมายของ Amdahl.
สิ่งสำคัญที่ระบบหลาย CPU ให้คุณคือการตอบสนอง บนเครื่องแกนเดียวที่ทำงานหนักระบบอาจดูเฉื่อยชาเนื่องจากเวลาส่วนใหญ่สามารถถูกใช้โดยงานหนึ่งงานและงานอื่น ๆ จะทำงานเพียงแค่ช่วงสั้น ๆ ระหว่างงานที่มีขนาดใหญ่ขึ้นส่งผลให้ระบบที่ดูเหมือนเฉื่อยชาหรือผิดเพี้ยน . ในระบบมัลติคอร์งานหนักจะได้รับหนึ่งคอร์และงานอื่น ๆ ทั้งหมดเล่นในคอร์อื่นทำให้ทำงานได้อย่างรวดเร็วและมีประสิทธิภาพ.
อาร์กิวเมนต์ของ“ 6 cores x 0.2GHz = 1.2Ghz” นั้นเป็นขยะในทุกสถานการณ์ยกเว้นงานที่ขนานกันอย่างสมบูรณ์และเป็นอิสระ มีงานจำนวนมากที่ขนานกันอย่างมาก แต่พวกเขายังต้องการการซิงโครไนซ์ในบางรูปแบบ Handbrake เป็น trancoder วิดีโอที่ดีมากในการใช้ซีพียูทั้งหมดที่มีอยู่ แต่มันต้องการกระบวนการแกนเพื่อเก็บเธรดอื่น ๆ ที่เต็มไปด้วยข้อมูลและรวบรวมข้อมูลที่พวกเขาทำด้วย.
- แต่ละแกนเป็นจริงทำการคำนวณ x ต่อวินาทีดังนั้นจำนวนการคำนวณทั้งหมดคือ x (แกน).
แต่ละแกนมีความสามารถในการทำการคำนวณ x ต่อวินาทีสมมติว่าเวิร์กโหลดมีความเหมาะสมแบบขนานบนโปรแกรมเชิงเส้นสิ่งที่คุณมีคือ 1 แกน.
- ความเร็วนาฬิกาค่อนข้างนับจำนวนรอบที่โปรเซสเซอร์ผ่านไปในระยะเวลาหนึ่งวินาทีดังนั้นตราบใดที่แกนประมวลผลทั้งหมดทำงานด้วยความเร็วเท่ากันความเร็วของนาฬิกาแต่ละรอบจะยังคงเหมือนเดิมไม่ว่าจะมีกี่คอร์ก็ตาม . กล่าวอีกนัยหนึ่ง Hz = (core1Hz + core2Hz + …) / cores.
ฉันคิดว่ามันเป็นความเข้าใจผิดที่คิดว่า 4 x 3GHz = 12GHz อนุญาตให้ใช้งานคณิตศาสตร์ได้ แต่คุณกำลังเปรียบเทียบแอปเปิ้ลกับส้มและจำนวนเงินไม่ถูกต้อง GHz ไม่สามารถรวมเข้าด้วยกันได้ในทุกสถานการณ์ ฉันจะเปลี่ยนเป็น 4 x 3GHz = 4 x 3GHz.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.