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