ทำไมเราถึงมีซีพียูที่มีคอร์ทั้งหมดด้วยความเร็วเท่ากันและไม่ใช่การผสมผสานของความเร็วที่แตกต่างกัน?


79

โดยทั่วไปหากคุณซื้อคอมพิวเตอร์เครื่องใหม่คุณจะพิจารณาว่าควรซื้อโปรเซสเซอร์ชนิดใดตามปริมาณงานที่คุณคาดหวัง ประสิทธิภาพในเกมมีแนวโน้มที่จะถูกกำหนดด้วยความเร็วแกนเดียวในขณะที่แอปพลิเคชันเช่นการตัดต่อวิดีโอจะถูกกำหนดโดยจำนวนแกน

ในแง่ของสิ่งที่มีอยู่ในตลาด - ซีพียูทั้งหมดดูเหมือนจะมีความเร็วเท่ากันโดยมีความแตกต่างที่สำคัญคือเธรดที่มากขึ้นหรือแกนเพิ่มเติม

ตัวอย่างเช่น:

  • 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 (เช่น 4x4 GHz ~ 16 GHz สูงสุด) สิ่งที่เกี่ยวกับ CPU ที่มีสองคอร์รันที่ 4.0 GHz และพูด 4 คอร์ที่ทำงานที่ 2 GHz (เช่น 2x4.0 GHz + 4x2.0 GHz ~ 16 GHz สูงสุด) ตัวเลือกที่สองจะไม่ดีเท่ากันในเวิร์กโหลดเธรดเดียว แต่อาจดีกว่าที่เวิร์กโหลดแบบมัลติเธรดหรือไม่

ฉันถามคำถามนี้เป็นประเด็นทั่วไป - ไม่เฉพาะเจาะจงเกี่ยวกับซีพียูเหล่านั้นที่ฉันระบุไว้ข้างต้นหรือเกี่ยวกับภาระงานเฉพาะอย่างใดอย่างหนึ่งโดยเฉพาะ ฉันแค่อยากรู้ว่าทำไมรูปแบบเป็นเช่นนั้น


15
มีโทรศัพท์มือถือจำนวนมากที่มีคอร์อย่างรวดเร็วและช้าและในเซิร์ฟเวอร์มัลติคอร์ที่ทันสมัยเกือบทุกรุ่นซีพียูความเร็วคอร์นาฬิกาจะขึ้นอยู่กับโหลดบางคนถึงกับปิดคอร์เมื่อไม่ใช้ บนคอมพิวเตอร์ที่ใช้งานทั่วไปที่คุณไม่ได้ออกแบบเพื่อการประหยัดพลังงาน แต่มีแกนประมวลผลเพียงสองประเภทเท่านั้น (CPU และ GPU) เพียงแค่ทำให้แพลตฟอร์มมีความยืดหยุ่นมากขึ้น
eckes

5
ก่อนที่ตัวกำหนดตารางเวลาเธรดสามารถเลือกได้อย่างชาญฉลาดเกี่ยวกับแกนกลางที่จะใช้ต้องพิจารณาว่ากระบวนการใดสามารถใช้ประโยชน์จากหลายคอร์ได้ การทำเช่นนั้นน่าเชื่อถือจะเป็นปัญหาอย่างมากและมีแนวโน้มที่จะเกิดข้อผิดพลาด โดยเฉพาะอย่างยิ่งเมื่อสิ่งนี้สามารถเปลี่ยนแปลงแบบไดนามิกตามความต้องการของแอปพลิเคชัน ในหลายกรณีผู้จัดตารางเวลาจะต้องเลือกตัวเลือกที่เหมาะสมที่สุดเมื่อมีการใช้งานแกนที่ดีที่สุด แกนที่เหมือนกันทำให้สิ่งต่าง ๆ ง่ายขึ้นให้ความยืดหยุ่นสูงสุดและโดยทั่วไปมีประสิทธิภาพที่ดีที่สุด
LMiller7

33
ความเร็วของสัญญาณนาฬิกาไม่สามารถบอกได้ว่าเป็นสารเติมแต่งในลักษณะที่คุณอธิบายไว้ การมีสี่คอร์ทำงานที่ 4 Ghz ไม่ได้หมายความว่าคุณมี "รวม" ที่ 16 GHz และไม่ได้หมายความว่า 16 Ghz นี้สามารถแบ่งพาร์ติชันออกเป็น 8 ตัวประมวลผลที่รันที่ 2 Ghz หรือ 16 ตัวประมวลผลที่ 1 GHz
Bob Jarvis

16
หลักฐานของคำถามนั้นผิด ซีพียูสมัยใหม่นั้นสามารถทำงานคอร์ได้อย่างสมบูรณ์แบบด้วยความเร็วที่ต่างกัน
phuclv

คำตอบ:


85

เรื่องนี้เป็นที่รู้จักกันในนามต่างกันประมวลผล ( HMP ) และอุปกรณ์มือถืออย่างกว้างขวาง ในอุปกรณ์ที่ใช้ ARM ซึ่งใช้ขนาดใหญ่ LITTLEตัวประมวลผลประกอบด้วยคอร์ที่มีประสิทธิภาพและโปรไฟล์พลังงานที่แตกต่างกันเช่นคอร์บางตัวทำงานเร็ว แต่ดึงพลังงานจำนวนมาก (สถาปัตยกรรมที่เร็วกว่าและ / หรือนาฬิกาที่สูงกว่า) ในขณะที่อุปกรณ์อื่น ๆ สถาปัตยกรรมช้าลงและ / หรือนาฬิกาลดลง) สิ่งนี้มีประโยชน์เนื่องจากการใช้พลังงานมีแนวโน้มที่จะเพิ่มขึ้นอย่างไม่เป็นสัดส่วนเมื่อคุณเพิ่มประสิทธิภาพเมื่อคุณผ่านจุดหนึ่งไปแล้ว ความคิดที่นี่คือการได้รับประสิทธิภาพเมื่อคุณต้องการและแบตเตอรี่เมื่อคุณไม่ได้

บนแพลตฟอร์มเดสก์ท็อปการใช้พลังงานน้อยกว่าปัญหาดังนั้นจึงไม่จำเป็นอย่างแท้จริง แอปพลิเคชันส่วนใหญ่คาดว่าแต่ละคอร์จะมีคุณสมบัติด้านประสิทธิภาพที่คล้ายกันและกระบวนการกำหนดเวลาสำหรับระบบ HMP นั้นซับซ้อนกว่าการตั้งเวลาสำหรับระบบ SMP แบบดั้งเดิม (Windows 10 ในทางเทคนิครองรับ HMP แต่ส่วนใหญ่ใช้สำหรับอุปกรณ์พกพาที่ใช้ ARM big.LITTLE)

นอกจากนี้โปรเซสเซอร์เดสก์ท็อปและแล็ปท็อปส่วนใหญ่ในปัจจุบันไม่ได้จำกัดความร้อนหรือไฟฟ้าไปจนถึงจุดที่คอร์บางตัวต้องทำงานเร็วกว่าตัวอื่น ๆ แม้แต่ในช่วงเวลาสั้น ๆ โดยพื้นฐานแล้วเราชนกำแพงกับความเร็วที่เราสามารถสร้างคอร์แต่ละคอร์ได้ดังนั้นการแทนที่คอร์บางคอร์ด้วยคอร์เซ็ตที่ช้ากว่าจะไม่ยอมให้คอร์ที่เหลือทำงานเร็วกว่า

ในขณะที่มีโปรเซสเซอร์เดสก์ท็อปไม่กี่ตัวที่มีหนึ่งหรือสองคอร์ที่สามารถทำงานได้เร็วกว่าโปรเซสเซอร์อื่น ๆ แต่ความสามารถนี้ จำกัด เฉพาะโปรเซสเซอร์ Intel ระดับไฮเอนด์บางตัวเท่านั้น (ในฐานะ Turbo Boost Max Technology 3.0) และมีประสิทธิภาพเล็กน้อยเท่านั้น สำหรับแกนที่สามารถทำงานได้เร็วขึ้น


ในขณะที่มีความเป็นไปได้ที่จะออกแบบโปรเซสเซอร์ x86 แบบดั้งเดิมที่มีทั้งคอร์ขนาดใหญ่, คอร์เร็วและคอร์ที่เล็กกว่าและช้ากว่าเพื่อเพิ่มประสิทธิภาพสำหรับเวิร์กโหลดแบบเธรดจำนวนมากซึ่งจะเพิ่มความซับซ้อนในการออกแบบโปรเซสเซอร์

ใช้หน่วยประมวลผลสมมุติพร้อมคอร์Kaby Lake (คอร์ยุคที่เจ็ด) สองตัวและแกนGoldmont (Atom) ที่ช้าแปดคอร์ คุณจะต้องรวมเป็น 10 แกนและปริมาณงานที่หนักเธรดที่ดีที่สุดสำหรับชนิดของการประมวลผลนี้อาจจะเห็นกำไรในประสิทธิภาพและประสิทธิผลมากกว่าปกติ quad-core Kaby ทะเลสาบประมวลผล แต่ประเภทที่แตกต่างกันของแกนมีระดับประสิทธิภาพการทำงานที่แตกต่างกันอย่างดุเดือดและแกนช้าไม่ได้สนับสนุนบางส่วนของคำแนะนำการสนับสนุนแกนรวดเร็วเช่นAVX (ARM หลีกเลี่ยงปัญหานี้โดยกำหนดให้ทั้งคอร์ใหญ่และคอร์เล็กน้อยเพื่อรองรับคำแนะนำเดียวกัน)

อีกครั้งแอพพลิเคชั่นแบบมัลติเธรดที่ทำงานบน Windows ส่วนใหญ่คิดว่าทุกคอร์มีประสิทธิภาพในระดับเดียวกันหรือเกือบเท่ากันและสามารถดำเนินการตามคำสั่งเดียวกันดังนั้นความไม่สมมาตรแบบนี้น่าจะส่งผลให้ประสิทธิภาพลดลง มันใช้คำแนะนำที่ไม่ได้รับการสนับสนุนจากแกนช้า ในขณะที่ Intel สามารถแก้ไขแกนประมวลผลช้าเพื่อเพิ่มการสนับสนุนการเรียนการสอนขั้นสูงเพื่อให้แกนประมวลผลทั้งหมดสามารถดำเนินการตามคำแนะนำทั้งหมดได้ แต่จะไม่แก้ไขปัญหาด้วยการสนับสนุนซอฟต์แวร์สำหรับโปรเซสเซอร์ที่ต่างกัน

แนวทางที่แตกต่างในการออกแบบแอพพลิเคชั่นซึ่งใกล้เคียงกับที่คุณคิดในคำถามของคุณจะใช้ GPU เพื่อเร่งความเร็วของแอพพลิเคชั่นที่ขนานกันอย่างมาก ซึ่งสามารถทำได้โดยใช้ API เช่นOpenCLและCUDA สำหรับโซลูชั่นชิปเดี่ยว AMD สนับสนุนการสนับสนุนฮาร์ดแวร์สำหรับการเร่งความเร็ว GPU ใน APUs ซึ่งรวม CPU แบบดั้งเดิมและ GPU แบบบูรณาการที่มีประสิทธิภาพสูงไปยังชิปเดียวกันกับHeterogeneous System Architectureแม้ว่านี่จะไม่ได้เห็นอุตสาหกรรมมากนัก ของแอปพลิเคชันพิเศษบางอย่าง


1
Windows มีแนวคิดเกี่ยวกับ 'แอป', 'กระบวนการเบื้องหลัง' และ 'กระบวนการ Windows' ดังนั้นสิ่งนี้จะไม่ขยายไปถึงระดับฮาร์ดแวร์?
Jamie

2
@Jamie กระบวนการ "แบ็คกราวน์" ได้รับชิ้นส่วนเวลาที่เล็กลงและมีแนวโน้มที่จะถูกขัดจังหวะมากขึ้น Windows 10 มีบทบาทในระบบ HMP บ้าง แต่ก็ยังมีข้อมูลไม่มากนัก
Bob

ดังนั้นฉันคิดว่าหลังจากการแก้ไข @bwDraco มีคำตอบสำหรับฉันแล้ว หากมีหน่วยประมวลผลแบบ 'ผสม' มันสามารถรองรับชุดคำสั่งเดียวกันได้อย่างง่ายดายหากมันถูกสร้างขึ้นในลักษณะนั้นดังนั้นเราจะต้องใช้ตัวจัดกำหนดการบางอย่างเพื่อเลือกแกนหลักที่เหมาะสม ฉันคิดว่าแอปพลิเคชันที่ได้รับประโยชน์จากการไปที่แกนเล็ก ๆ จำนวนมากอาจจะได้รับประโยชน์มากขึ้นจากการไปที่แกนขนาดเล็กจำนวนมากและจำนวนมาก ดังนั้นเราจึงมีการเร่งความเร็วของ GPU
Jamie

3
โปรดทราบว่าเคส GPU นั้นไม่ได้ทำการซื้อขาย 2 คอร์ใหญ่สำหรับ 10 คอร์เล็กและคอร์ช้า แต่จะค่อนข้างดี (หยาบมาก) เทียบเท่ากับการเทรดคอร์ 2 คอร์สำหรับ 1024 คอร์ที่เล็กและคอร์ช้า ขนานกันอย่างหนาแน่นไม่ใช่แค่ขนานกันอีกเล็กน้อย
Yakk

4
Intel อาจได้รับ Goldmont core เพื่อรันคำสั่ง AVX2 โดยไม่ต้องมีซิลิกอนมาก (ช้าลงโดยการถอดรหัสเป็น 128b ops) Knight's Landing (Xeon Phi) มีแกนประมวลผล Silvermont ที่ใช้ AVX512 ดังนั้นจึงไม่เหมือนกับการแก้ไข Silvermont แต่ KNL จะเพิ่มการดำเนินการที่ไม่เป็นไปตามคำสั่งสำหรับ vector ในขณะที่ Silver / Goldmont ปกติทำเพียง OOO สำหรับจำนวนเต็มดังนั้นพวกเขาอาจต้องการออกแบบมันให้ใกล้เคียงกับ Goldmont มากกว่า KNL อย่างไรก็ตามชุด insn ไม่ใช่ปัญหาจริง มันรองรับระบบปฏิบัติการและได้รับประโยชน์เล็ก ๆ น้อย ๆ ซึ่งเป็นอุปสรรคที่แท้จริงในการใช้จ่ายพื้นที่บนแกนหลักที่ใช้พลังงานต่ำ
Peter Cordes

68

สิ่งที่คุณขอเป็นเหตุผลที่เป็นระบบในปัจจุบันโดยใช้ multiprocessing สมมาตร มากกว่า multiprocessing สมมาตร

ระบบมัลติโพรเซสเซอร์แบบอสมมาตรถูกนำมาใช้ในสมัยก่อนเมื่อคอมพิวเตอร์มีขนาดใหญ่และตั้งอยู่ในหลาย ๆ หน่วย

ซีพียูสมัยใหม่ถูกนำมาใช้เป็นหนึ่งหน่วยในหนึ่งตายซึ่งง่ายกว่ามากที่จะไม่ผสมซีพียูประเภทต่าง ๆ เนื่องจากพวกเขาทั้งหมดแชร์บัสและแรมเดียวกัน

นอกจากนี้ยังมีข้อ จำกัด ของนาฬิกาที่ควบคุมรอบการทำงานของ CPU และการเข้าถึง RAM สิ่งนี้จะเป็นไปไม่ได้เมื่อผสมซีพียูด้วยความเร็วที่แตกต่างกัน คอมพิวเตอร์ทดลองที่ไม่มีนาฬิกามีอยู่จริงและรวดเร็วมาก แต่ความซับซ้อนของฮาร์ดแวร์สมัยใหม่ทำให้สถาปัตยกรรมง่ายขึ้น

ตัวอย่างเช่นแกน Sandy Bridge และ Ivy Bridge ไม่สามารถทำงานด้วยความเร็วที่แตกต่างกันในเวลาเดียวกันเนื่องจาก L3 cache bus ทำงานที่ความเร็วสัญญาณนาฬิกาเท่ากับคอร์ดังนั้นเพื่อป้องกันปัญหาการซิงโครไนซ์พวกเขาทั้งหมดต้องทำงานด้วยความเร็วนั้น หรือจอด / ปิด (ลิงค์: Sandy Bridge Architecture ของ Intel เปิดเผย ) (ตรวจสอบแล้วในความคิดเห็นด้านล่างสำหรับ Skylake)

[แก้ไข] บางคนเข้าใจผิดว่าคำตอบของฉันหมายถึงการพูดว่าการผสม CPU เป็นไปไม่ได้ เพื่อประโยชน์ของพวกเขา I state: การผสม CPU ที่แตกต่างกันไม่ได้เกินกว่าเทคโนโลยีในปัจจุบัน แต่ไม่ได้ทำ - "ทำไมไม่" เป็นคำถาม ดังที่ได้กล่าวไว้ข้างต้นสิ่งนี้จะมีความซับซ้อนทางเทคนิคดังนั้นค่าใช้จ่ายและสำหรับกำไรทางการเงินที่น้อยเกินไปหรือไม่มีเลยจึงไม่ได้สนใจผู้ผลิต

นี่คือคำตอบสำหรับความคิดเห็นด้านล่าง:

Turbo Boost จะเปลี่ยนความเร็วของ CPU เพื่อให้สามารถเปลี่ยนแปลงได้

Turbo Boost นั้นทำโดยการเร่งนาฬิกาและเปลี่ยนตัวคูณซึ่งเป็นสิ่งที่ผู้คนทำเมื่อโอเวอร์คล็อกยกเว้นว่าฮาร์ดแวร์ทำเพื่อเรา นาฬิกาจะถูกแชร์ระหว่างคอร์ในซีพียูเดียวกันดังนั้นความเร็วนี้จะสม่ำเสมอทั้งซีพียูและคอร์ทั้งหมด

โทรศัพท์บางรุ่นมีความเร็วแตกต่างกันมากกว่าหนึ่ง CPU

โทรศัพท์ดังกล่าวมักจะมีเฟิร์มแวร์ที่กำหนดเองและสแต็คซอฟต์แวร์ที่เกี่ยวข้องกับ CPU แต่ละตัวเช่นซีพียูสองตัวแยกกัน (หรือเช่นซีพียูและ GPU) และพวกเขาไม่มีมุมมองเดียวของหน่วยความจำระบบ ความซับซ้อนนี้ยากที่จะตั้งโปรแกรมและดังนั้น Asymmetric multiprocessing จึงถูกทิ้งไว้ใน realm ของมือถือเนื่องจากมันต้องการการพัฒนาซอฟท์แวร์ฮาร์ดแวร์ใกล้ระดับต่ำ นี่คือเหตุผลที่ไม่พบการกำหนดค่าดังกล่าวในพีซี (ยกเว้น CPU / GPU หากเราขยายนิยามได้เพียงพอ)

เซิร์ฟเวอร์ของฉันที่มี 2x Xeon E5-2670 v3 (12 คอร์พร้อม HT) มีแกนที่ 1.3 GHz, 1.5 GHz, 1.6 GHz, 2.2 GHz, 2.5 GHz, 2.7 GHz, 2.8 GHz, 2.9 GHz และความเร็วอื่น ๆ อีกมากมาย

คอร์อาจเป็นแอ็คทีฟหรือไม่ได้ใช้งาน คอร์ทั้งหมดที่แอ็คทีฟในเวลาเดียวกันรันที่ความถี่เดียวกัน สิ่งที่คุณเห็นเป็นเพียงสิ่งประดิษฐ์ของเวลาหรือค่าเฉลี่ย ฉันมีตัวเองยังตั้งข้อสังเกตว่า Windows ไม่ได้เป็นแกนหลักเป็นเวลานาน แต่ค่อนข้างแยกสวนสาธารณะ / unparks แกนทั้งหมดเร็วกว่าอัตราการรีเฟรชของการตรวจสอบทรัพยากร แต่ฉันไม่ทราบสาเหตุของพฤติกรรมนี้ซึ่งอาจอยู่เบื้องหลัง หมายเหตุข้างต้น

โปรเซสเซอร์ Intel Haswell มีตัวควบคุมแรงดันไฟฟ้าในตัวที่เปิดใช้งานแรงดันไฟฟ้าและความถี่สำหรับแต่ละคอร์

อุปกรณ์ควบคุมแรงดันไฟฟ้าส่วนบุคคลแตกต่างจากความเร็วสัญญาณนาฬิกา ไม่ใช่ทุกคอร์ที่เหมือนกัน - บางคอร์นั้นเร็วกว่า แกนที่เร็วขึ้นจะได้รับพลังงานน้อยลงเล็กน้อยสร้างห้องที่จะเพิ่มพลังให้กับแกนที่อ่อนแอกว่า ตัวควบคุมแรงดันไฟฟ้าหลักจะถูกตั้งค่าให้ต่ำที่สุดเพื่อรักษาความเร็วสัญญาณนาฬิกาปัจจุบัน หน่วยควบคุมพลังงานบน CPU ควบคุมแรงดันไฟฟ้าและจะแทนที่คำร้องขอระบบปฏิบัติการในกรณีที่จำเป็นสำหรับแกนที่มีคุณภาพแตกต่างกัน สรุป: หน่วยงานกำกับดูแลส่วนบุคคลมีไว้เพื่อให้แกนประมวลผลทั้งหมดทำงานอย่างประหยัดด้วยความเร็วสัญญาณนาฬิกาเดียวกันไม่ใช่สำหรับการตั้งค่าความเร็วคอร์ส่วนบุคคล


3
อา mshorter มากขึ้นและตรงประเด็น +1
Hennes

6
@harrymc มีบล็อกตัวประสานที่จัดการมันได้อย่างสมบูรณ์แบบ DRAM ทำงานช้ากว่าความเร็วคอร์และคุณสามารถให้คอร์ Intel ทำงานด้วยความเร็วที่แตกต่างกันบนชิปตัวเดียวกัน
pjc50

10
โปรเซสเซอร์ Intel Core-series ทำงานด้วยความเร็วที่แตกต่างกันบนแม่พิมพ์เดียวกันตลอดเวลา
Nick T

9
การมีอยู่เพียงอย่างเดียวของสถาปัตยกรรม LITTLE ที่มีขนาดใหญ่และการเพิ่มนาฬิกาแกนหลักอิสระพิสูจน์ให้คุณผิด มัลติโพรเซสซิงต่างกันเป็นกระแสหลัก มันสามารถทำได้ก็จะทำในโทรศัพท์ แต่สำหรับเหตุผลบางอย่างที่ไม่ได้อยู่ในเดสก์ท็
Agent_L

9
@Agent_L: เหตุผลก็คือความซับซ้อน ซีพียูเดสก์ท็อปมีราคาแพงพออยู่แล้ว ดังนั้นฉันพูดซ้ำ: ทุกสิ่งเป็นไปได้ แต่คำถามที่แท้จริงคือทำไมมันไม่ทำไม่ว่าจะสามารถทำได้ อย่าโจมตีฉันราวกับว่าฉันอ้างว่าสิ่งนี้เป็นไปไม่ได้ - ทั้งหมดที่ฉันพูดคือมันซับซ้อนเกินไปและมีค่าใช้จ่ายสูง
harrymc

46

ทำไมเราไม่มีตัวแปรที่มีความเร็วสัญญาณนาฬิกาต่างกัน กล่าวคือ 2 แกน 'ใหญ่' และแกนเล็กจำนวนมาก

เป็นไปได้ว่าโทรศัพท์ในกระเป๋ากีฬาของคุณจะมีการจัดเรียงอย่างตรงที่ - ARM ใหญ่ LITTLEทำงานได้ตามที่คุณอธิบาย มันไม่ได้เป็นเพียงความแตกต่างของความเร็วสัญญาณนาฬิกา แต่มันอาจเป็นประเภทแกนหลักที่แตกต่างกันอย่างสิ้นเชิง - โดยทั่วไปแล้วสัญญาณนาฬิกาที่ช้ากว่านั้นยังเป็น "dumber" (ไม่มีการประมวลผลที่ไม่เป็นไปตามคำสั่ง

เป็นความคิดที่ดีที่จะประหยัดแบตเตอรี่ แต่มีข้อบกพร่องของตัวเอง การทำบัญชีเพื่อย้ายสิ่งต่าง ๆ ระหว่างซีพียูที่แตกต่างกันมีความซับซ้อนมากขึ้นการสื่อสารกับอุปกรณ์ต่อพ่วงที่เหลือมีความซับซ้อนมากขึ้นและที่สำคัญที่สุดคือการใช้คอร์ดังกล่าวอย่างมีประสิทธิภาพตัวกำหนดเวลางานจะต้องฉลาดมาก .

การจัดเรียงที่เหมาะสมคือการเรียกใช้งานพื้นหลังที่ไม่สำคัญเวลาทำงานหรืองานที่มีการโต้ตอบขนาดเล็กบนแกน "น้อย" และปลุกวัตถุ "ใหญ่" สำหรับการคำนวณขนาดใหญ่และยาวเท่านั้น กินแบตเตอรีมากกว่า) หรือสำหรับงานแบบโต้ตอบขนาดกลางที่ผู้ใช้รู้สึกเฉื่อยในแกนเล็ก ๆ น้อย ๆ

อย่างไรก็ตามตัวกำหนดตารางเวลามีข้อมูลที่ จำกัด เกี่ยวกับชนิดของงานที่แต่ละงานอาจทำงานอยู่และต้องหันไปใช้วิธีแก้ปัญหาบางอย่าง (หรือข้อมูลภายนอกเช่นบังคับให้มีรูปแบบความสัมพันธ์ในงานที่กำหนด) เพื่อตัดสินใจว่าจะจัดตารางเวลาไว้อย่างไร ถ้ามันผิดคุณอาจเสียเวลา / กำลังมากในการรันงานบนคอร์ที่ช้าและให้ประสบการณ์ผู้ใช้ที่ไม่ดีหรือใช้คอร์ "ใหญ่" สำหรับงานที่มีลำดับความสำคัญต่ำดังนั้นจึงสิ้นเปลืองพลังงาน / ขโมยพวกเขาออกไปจากงานที่ต้องการพวกเขา

นอกจากนี้ในระบบมัลติโพรเซสเซอร์แบบอสมมาตรมักจะมีค่าใช้จ่ายมากกว่าในการโยกย้ายงานไปยังแกนที่แตกต่างจากระบบ SMP ดังนั้นตัวกำหนดตารางเวลาจึงต้องคาดเดาเริ่มต้นที่ดีแทนที่จะพยายามเรียกใช้แกนสุ่มแบบสุ่มและเคลื่อนย้าย มันรอบต่อมา


ตัวเลือกของ Intel ที่นี่แทนคือการมีจำนวนคอร์อัจฉริยะที่เร็วกว่าและเหมือนกัน แต่มีการปรับสเกลความถี่ที่ก้าวร้าวมาก เมื่อ CPU ไม่ว่างมันจะเพิ่มขึ้นอย่างรวดเร็วตามความเร็วสัญญาณนาฬิกาสูงสุดทำงานให้เร็วที่สุดเท่าที่จะทำได้จากนั้นปรับขนาดให้ต่ำลงเพื่อกลับไปที่โหมดการใช้พลังงานขั้นต่ำ สิ่งนี้ไม่ได้มีภาระเฉพาะในตัวกำหนดตารางเวลาและหลีกเลี่ยงสถานการณ์เลวร้ายที่อธิบายไว้ข้างต้น แน่นอนแม้ว่าในโหมดนาฬิกาต่ำแกนเหล่านี้คือ "ฉลาด" ดังนั้นพวกเขาอาจจะกินมากกว่านาฬิกาใหญ่ "โง่" ใหญ่แกนเล็ก ๆ น้อย ๆ


1
การวิเคราะห์พฤติกรรมควรเรียบง่าย การสลับงานโดยไม่สมัครใจใด ๆ (การใช้ไทม์ซเต็ม) เป็นการบ่งชี้ว่าซีพียูช้าไม่เหมาะสมสำหรับงาน การใช้งานต่ำมากและสวิตช์งานอาสาสมัครทั้งหมดเป็นการระบุว่าสามารถย้ายงานไปยังซีพียูช้า
..

3
ปัญหาอีกอย่างก็คือ 4 คอร์ 2GHz โง่อาจมีขนาดตายมากกว่า 2 คอร์ 4GHz สมาร์ทหรือพวกเขาอาจจะเล็กลงและใช้พลังงานน้อยกว่า 4 GHz คอร์ แต่ก็ทำงานได้ช้ากว่ามาก
phuclv

2
@R: ตามหลักการฉันเห็นด้วยกับคุณ แต่ถึงแม้จะเปิดใช้งานการสนับสนุนตัวกำหนดเวลาพื้นฐานบางอย่างสำหรับเรื่องนี้ฉันเห็นการแกนที่น่าหัวเราะบนกระดาน ARM ที่ฉันใช้ดังนั้นจะต้องมีอย่างอื่น นอกจากนี้ซอฟต์แวร์ multithreaded "ปกติ" ส่วนใหญ่เขียนด้วยใจใน SMP ดังนั้นจึงไม่ใช่เรื่องผิดปกติที่จะเห็นเธรดพูลใหญ่เท่ากับจำนวนแกนทั้งหมดโดยที่งานลากบนแกนที่ช้า
Matteo Italia

1
@Ramhound: ส่วน 10-core 120W มีงบประมาณพลังงาน 12W ต่อคอร์ (ยกเว้นในโหมดเทอร์โบ single-core) นี่คือเหตุผลที่พบนาฬิกาแบบ Single-Core ที่สูงที่สุดในชิ้นส่วนแบบ quad-core ที่เช่นi7-6700kของ Intel มีงบประมาณพลังงาน 91W สำหรับ 4 คอร์: 22.75W ต่อคอร์ที่ยังคงทำงานอยู่ทุกคอร์ (ที่ 4.0GHz แม้จะมี ปริมาณงาน AVX2 + FMA เช่น Prime95) นี่คือเหตุผลว่าทำไม headroom Turbo แบบซิงเกิลคอร์จึงมีเพียง 0.2GHz พิเศษเทียบกับ Broadwell E5-2699v4 22-core ที่มี 2.2GHz base @ 145W, 3.6GHz turbo
Peter Cordes

@Ramhound: เพิ่มคำตอบที่ขยายออกไป Xeon แบบหลายคอร์น่าจะเป็นว่าสิ่งที่ OP ที่กำลังมองหา: การดำเนินงานเป็นจำนวนมากแกนพลังงานต่ำหรือใช้จ่ายจำนวนมากกำลังทำงานด้ายเดียวอย่างรวดเร็วเมื่อเป็นไปได้ (เทอร์โบ)
Peter Cordes

14

ประสิทธิภาพของเกมมีแนวโน้มที่จะถูกกำหนดโดยความเร็วแกนเดียว

ในอดีต (เกมยุค DOS): ถูกต้อง
วันนี้มันไม่เป็นความจริงอีกต่อไป เกมที่ทันสมัยหลายเกมได้รับการตอบรับและได้รับประโยชน์จากหลายคอร์ เกมบางเกมค่อนข้างมีความสุขกับ 4 คอร์และดูเหมือนว่าจะเพิ่มขึ้นเมื่อเวลาผ่านไป

ในขณะที่แอปพลิเคชันเช่นการตัดต่อวิดีโอจะถูกกำหนดตามจำนวนแกนประมวลผล

เรียงจากจริง

จำนวนแกน * คูณความเร็วของแกน * ประสิทธิภาพ
หากคุณเปรียบเทียบแกนที่เหมือนกันชุดเดียวกับชุดของแกนที่เหมือนกันแสดงว่าคุณถูกต้องที่สุด

ในแง่ของสิ่งที่มีอยู่ในตลาด - ซีพียูทั้งหมดดูเหมือนจะมีความเร็วเท่ากันโดยมีความแตกต่างที่สำคัญคือเธรดที่มากขึ้นหรือแกนเพิ่มเติม ตัวอย่างเช่น:

Intel Core i5 7600k, Base Freq 3.80 GHz, 4 Cores Intel Core i7 7700k, Base Freq 4.20 GHz, 4 Cores, 8 เธรด AMD Ryzen 1600x, Base Freq 3.60 GHz, 6 Cores, 12 Them AMD Ryzen 1800x, Base Freq 3.60 GHz, 8 Cores, 16 เธรด

การเปรียบเทียบสถาปัตยกรรมที่แตกต่างเป็นสิ่งที่อันตราย แต่ตกลง ...

แล้วทำไมเราถึงเห็นรูปแบบการเพิ่มแกนนี้ด้วยแกนทั้งหมดที่มีความเร็วสัญญาณนาฬิกาเท่ากัน?

ส่วนหนึ่งเป็นเพราะเราพบอุปสรรค การเพิ่มความเร็วสัญญาณนาฬิกาเพิ่มเติมหมายถึงพลังงานที่ต้องใช้มากขึ้นและสร้างความร้อนมากขึ้น ความร้อนที่มากขึ้นหมายถึงพลังงานที่จำเป็นยิ่งขึ้น เราลองมาแล้วผลลัพธ์ก็คือเพนเที่ยมที่น่ากลัวและร้อนแรง ยากที่จะเย็น และไม่เร็วกว่า Pentium-M ที่ออกแบบมาอย่างชาญฉลาด (A P4 ที่ 3.0GHz นั้นเร็วพอ ๆ กับ P-mob ที่ 1.7GHz)

ตั้งแต่นั้นมาเรามักจะเลิกใช้การเร่งความเร็วนาฬิกาและเราสร้างโซลูชันที่ชาญฉลาดแทน ส่วนหนึ่งของนั้นคือการใช้หลายคอร์มากกว่าความเร็วสัญญาณนาฬิกาดิบ

เช่นคอร์ 4GHz เดียวอาจดึงพลังงานได้มากและสร้างความร้อนได้มากถึง 3 คอร์ 2GHz หากซอฟต์แวร์ของคุณสามารถใช้หลายแกนได้มันจะเร็วขึ้นมาก

ไม่ใช่ซอฟต์แวร์ทุกตัวที่สามารถทำเช่นนั้นได้ แต่โดยทั่วไปซอฟต์แวร์ที่ทันสมัยสามารถทำได้

ซึ่งบางส่วนตอบว่าทำไมเรามีชิปที่มีหลายคอร์และทำไมเราจึงขายชิปที่มีจำนวนคอร์ที่แตกต่างกัน

สำหรับความเร็วนาฬิกาฉันคิดว่าฉันสามารถระบุสามคะแนน:

  • ซีพียูที่ใช้พลังงานต่ำทำให้รู้สึกถึงบางกรณีซึ่งไม่จำเป็นต้องใช้ความเร็วในการดิบ เช่นตัวควบคุมโดเมน, การตั้งค่า NAS, ... สำหรับสิ่งเหล่านี้เรามีซีพียูความถี่ต่ำ บางครั้งถึงกับมีแกนเพิ่มเติม (เช่น CPU ความเร็วต่ำ 8 มม. เหมาะสมสำหรับเว็บเซิร์ฟเวอร์)
  • สำหรับส่วนที่เหลือเรามักจะอยู่ใกล้กับความถี่สูงสุดที่เราสามารถทำได้โดยไม่ต้องออกแบบในปัจจุบันของเราร้อนเกินไป (พูด 3 ถึง 4GHz ด้วยการออกแบบปัจจุบัน)
  • และยิ่งไปกว่านั้นเรายังทำเรื่องไร้สาระ CPU ไม่ได้ถูกสร้างขึ้นอย่างเท่าเทียมกัน CPU บางตัวทำคะแนนไม่ดีหรือทำคะแนนไม่ดีในส่วนของชิปของพวกเขาปิดการใช้งานชิ้นส่วนเหล่านั้นและขายเป็นผลิตภัณฑ์ที่แตกต่างกัน

ตัวอย่างคลาสสิกของเรื่องนี้คือชิป AMD 4 คอร์ ถ้าคอร์ตัวใดตัวหนึ่งเสียมันจะถูกปิดใช้งานและขายเป็นชิป 3 คอร์ เมื่อความต้องการ 3 คอร์เหล่านี้สูงแม้กระทั่งคอร์ 4 คอร์บางรุ่นที่ขายเป็นรุ่น 3 คอร์และด้วยการแฮ็กซอฟต์แวร์ที่ถูกต้องคุณสามารถเปิดใช้งานคอร์ที่ 4 ได้อีกครั้ง

และสิ่งนี้ไม่เพียงทำกับจำนวนคอร์ แต่ยังส่งผลต่อความเร็ว ชิปบางตัวทำงานร้อนกว่าชิปอื่น ๆ ร้อนเกินไปและขายเป็นซีพียูความเร็วต่ำ (ที่ความถี่ที่ต่ำกว่าหมายถึงความร้อนที่เกิดขึ้นน้อยลง)

และจากนั้นก็มีการผลิตและการตลาดและมันทำให้ยุ่งเหยิงยิ่งขึ้นไปอีก

ทำไมเราไม่มีตัวแปรที่มีความเร็วสัญญาณนาฬิกาต่างกัน กล่าวคือ 2 แกน 'ใหญ่' และแกนเล็กจำนวนมาก

พวกเราทำ. ในสถานที่ที่เหมาะสม (เช่นโทรศัพท์มือถือ) เรามักจะมี SoC ที่มีซีพียูช้าๆ (ใช้พลังงานต่ำ) และแกนประมวลผลที่เร็วขึ้น อย่างไรก็ตามในเดสก์ท็อปพีซีทั่วไปไม่สามารถทำได้ มันจะทำให้การตั้งค่ามีความซับซ้อนมากขึ้นมีราคาแพงกว่าและไม่มีแบตเตอรี่ให้ระบาย


1
ในขณะที่ฉันชี้ให้เห็น - "ฉันถามคำถามนี้เป็นประเด็นทั่วไป - ไม่เฉพาะเจาะจงเกี่ยวกับซีพียูเหล่านั้นที่ฉันระบุไว้ข้างต้น" และมีเหตุผลที่ฉันให้สองตัวอย่างจากแต่ละสถาปัตยกรรม หากเราปฏิบัติต่อสถานการณ์ทั้งสองเป็น 1 แกนใหญ่ทั้งหมดและ 2. สองใหญ่ & เล็กสอง - ฉันคิดว่าทุกจุดที่คุณพูดถึงนำไปใช้กับทั้งสองกรณี - เช่น ความเร็วแกนเดี่ยวสูงสุดเชิงทฤษฎี, การทอดของชิป, การลดการล็อคเมื่อไม่ใช้งาน
Jamie

แกนความเร็วสูงสุดเดียวนั้นไม่ใช่สิ่งที่น่าสนใจเมื่อมันไม่ได้ถูกเลือก ตัวกำหนดตารางเวลาจะต้องได้รับการอัปเดตเพื่อเลือกใช้แกนความเร็วสูงอย่างแท้จริง
Hennes

10

ทำไมเราไม่มีตัวแปรที่มีความเร็วสัญญาณนาฬิกาต่างกัน ตัวอย่างเช่นสองแกน 'ใหญ่' และแกนเล็ก ๆ มากมาย

ถ้าเราไม่ได้กังวลอย่างมากเกี่ยวกับการใช้พลังงานมันจะไม่มีเหตุผลที่จะยอมรับค่าใช้จ่ายทั้งหมดที่เกี่ยวข้องกับคอร์เพิ่มเติมและไม่ได้รับประสิทธิภาพที่ดีที่สุดจากคอร์นั้นเท่าที่จะทำได้ ความเร็วสัญญาณนาฬิกาสูงสุดนั้นขึ้นอยู่กับกระบวนการผลิตเป็นหลักและชิปทั้งหมดทำโดยกระบวนการเดียวกัน ดังนั้นอะไรคือข้อดีที่จะทำให้แกนบางส่วนช้าลงกว่ากระบวนการผลิตที่รองรับ?

เรามีแกนที่สามารถชะลอความเร็วลงเพื่อประหยัดพลังงาน สิ่งที่จะเป็นจุด จำกัด ประสิทธิภาพสูงสุดของพวกเขา?


2
นี่คือสิ่งที่ฉันคิด เหตุใดจึงต้องใช้ส่วนประกอบที่ด้อยกว่าโดยเจตนาเมื่อพวกเขาทั้งหมดอาจเป็นยอด +1
MPW

1
@MPW ตัวเลือกไม่ได้อยู่ระหว่างการสร้างแกนขนาดใหญ่และจากนั้นก็ทำหมันมันอยู่ระหว่างขนาดใหญ่และแกนใหญ่ขนาดเล็กจำนวนมาก เนื่องจากคุณมีสถานการณ์การแข่งขันที่สอง - ประสิทธิภาพของเธรดเดี่ยวและประสิทธิภาพของเธรดที่หลากหลาย - ทำไมไม่เพิ่มทั้งสองอย่าง เรารู้หรือไม่ว่าคุณไม่สามารถผลิตชิปที่มีแกนขนาดเล็กและแกนใหญ่จำนวนมากได้
Jamie

@Jamie คุณสามารถสร้างชิปที่มีแกนขนาดเล็กและใหญ่จำนวนมาก แต่แกนที่เล็กกว่าจะไม่ทำงานที่ความเร็วสัญญาณนาฬิกาที่ต่ำกว่า
David Schwartz

ถ้าพวกเขาถูกออกแบบมาอย่างนั้น ... คำถามก็คือทำไมพวกเขาถึงไม่ได้ออกแบบมาตั้งแต่ต้นไม่ใช้กระบวนการผลิตที่มีอยู่แล้วทำหมันมัน
Jamie

@Jamie ฉันไม่เข้าใจสิ่งที่คุณพูด ซีพียูทั้งหมดจะต้องทำด้วยกระบวนการผลิตเดียวกันและความเร็วสัญญาณนาฬิกาสูงสุดนั้นส่วนใหญ่เป็นลักษณะของกระบวนการผลิต แกนประมวลผลที่ต้องการความเร็วสัญญาณนาฬิกาที่ต่ำกว่าที่ระดับการประดิษฐ์เดียวกันโดยทั่วไปจะมีความซับซ้อนมากขึ้นและใช้พื้นที่มากขึ้นมิฉะนั้นเหตุใดจึงต้องใช้ความเร็วสัญญาณนาฬิกาที่ต่ำกว่า
David Schwartz

9

ทำไมเราไม่มีตัวแปรที่มีความเร็วสัญญาณนาฬิกาต่างกัน ตัวอย่างเช่นสองแกน 'ใหญ่' และแกนเล็ก ๆ มากมาย

ความเร็วสัญญาณนาฬิกาที่กำหนดไม่ได้มีความหมายมากนักสำหรับตัวประมวลผลที่ใหญ่กว่าทุกวันนี้เนื่องจากมันมีความสามารถในการตั้งนาฬิกาเองขึ้นและลง คุณกำลังถามว่าพวกเขาสามารถเรียงแกนต่างกันขึ้น ๆ ลง ๆ หรือไม่

ฉันแปลกใจมากกับคำตอบอื่น ๆ อีกมากมาย โปรเซสเซอร์สมัยใหม่สามารถทำเช่นนี้ได้ ตัวอย่างเช่นคุณสามารถทดสอบได้โดยการเปิด CPU-Z บนสมาร์ทโฟน - Google Pixel ของฉันมีความสามารถในการรันคอร์ที่แตกต่างกันด้วยความเร็วที่แตกต่างกันได้อย่างสมบูรณ์แบบ:

มันมีชื่อว่า 2.15 Ghz แต่สองแกนมีที่ 1.593 Ghz และสองอยู่ที่ 1.132 Ghz

ในความเป็นจริงตั้งแต่ปี 2009 ซีพียู Intel ที่เป็นกระแสหลักมีเหตุผลที่จะเพิ่มคอร์แต่ละคอร์ให้สูงขึ้นในขณะที่โอเวอร์คล็อกคอร์อื่น ๆ ทำให้มีแกนเดี่ยวที่ดีกว่าในขณะที่เหลืออยู่ในงบประมาณ TDP: http://www.anandtech.com/show/2832/4

โปรเซสเซอร์ Intel รุ่นใหม่ที่มี "ชื่นชอบคอร์" (ศัพท์การตลาดของ Intel) แต่ละคอร์มีลักษณะเฉพาะที่โรงงานโดยมีคอร์ที่เร็วที่สุดที่สามารถเพิ่มความสูงได้เป็นพิเศษ: http://www.anandtech.com/show/11550/the-intel -skylakex ตรวจทาน-core-i9-7900x-i7-7820x และ i7-7800x ทดสอบ / 7

ชิป Bulldozer ของ AMD มีรุ่นดั้งเดิมของสิ่งนี้: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

ชิป Ryzen ใหม่ของ AMD อาจมีสิ่งนี้เช่นกันแม้ว่าจะไม่ได้ระบุไว้อย่างชัดเจนที่นี่: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -ON-1800x-1700x และ 1700-1711


คุณกำลังตอบคำถามอื่น คำถามคือมีแกนขนาดใหญ่จำนวนมากเทียบกับแกนขนาดใหญ่สองแกนและแกนขนาดเล็กจำนวนมาก - ข้อดีของทั้งสองสถานการณ์ ในทั้งสองสถานการณ์คุณสามารถตั้งเวลาขึ้นและลงตามความต้องการหรือเพิ่มแกนหลักได้
Jamie

3
นั่นไม่ใช่วิธีที่ฉันอ่านคำถาม คำถามไม่ได้กล่าวถึงแกนที่แตกต่างกันในเชิงสถาปัตยกรรมแม้จะใช้คำว่า "ใหญ่" และ "เล็ก" มันเน้นเฉพาะความเร็วสัญญาณนาฬิกา
Grant Wu

8

ในระบบที่ทันสมัยคุณมักจะมีแกนทั้งหมดที่ทำงานด้วยความเร็วที่แตกต่างกัน การจัดเรียงแกนหลักที่ไม่ได้ใช้ลดการใช้พลังงานและระบายความร้อนซึ่งเป็นสิ่งที่ดีและคุณสมบัติเช่น "เทอร์โบบูสต์" ให้หนึ่งหรือสองคอร์ทำงานได้เร็วขึ้นอย่างมีนัยสำคัญตราบใดที่คอร์อื่น ๆ ไม่ได้ทำงาน และปริมาณความร้อนของบรรจุภัณฑ์ทั้งหมดไม่สูงเกินไป ในกรณีของชิปที่มีคุณสมบัติดังกล่าวความเร็วที่คุณเห็นในรายการคือความเร็วสูงสุดที่คุณจะได้รับพร้อมกับคอร์ทั้งหมดในครั้งเดียว และทำไมแกนทั้งหมดจึงมีความเร็วสูงสุดเท่ากัน? พวกมันทั้งหมดได้รับการออกแบบที่เหมือนกันบนชิปตัวเดียวกันวางด้วยกระบวนการเซมิคอนดักเตอร์เดียวกันดังนั้นทำไมพวกเขาถึงแตกต่างกัน

เหตุผลที่แกนประมวลผลทั้งหมดเหมือนกันก็คือเพราะทำให้เธรดที่ทำงานบนแกนหนึ่งที่จุดหนึ่งง่ายที่สุดในการเริ่มทำงานบนแกนที่แตกต่างกันในจุดอื่น ดังที่กล่าวไว้ในที่อื่น ๆ มีชิปที่ใช้กันทั่วไปซึ่งไม่เป็นไปตามหลักการของคอร์ที่เหมือนกันนั่นคือซีพียู ARM "big.LITTLE" แม้ว่าในใจของฉันความแตกต่างที่สำคัญที่สุดระหว่างแกน "ใหญ่" และ "น้อย" ไม่ใช่ความเร็วสัญญาณนาฬิกา (แกน "ใหญ่" มีแนวโน้มว่าจะเป็นนักเล่นที่กว้างกว่าและมีการเก็งกำไรมากขึ้นซึ่งจะได้รับคำแนะนำเพิ่มเติมต่อนาฬิกาที่ราคาสูงกว่า การใช้พลังงานในขณะที่แกน "น้อย" นั้นใกล้ชิดกับ ARM ของปัญหาเดี่ยวที่เป็นไปตามลำดับและรากพลังงานต่ำ) เนื่องจากพวกเขา

และเมื่อเข้าสู่ขอบเขตของการคำนวณที่แตกต่างกันมันก็กลายเป็นเรื่องธรรมดาที่จะเห็นคอร์ "CPU" และ "GPU" ที่รวมอยู่ในชิปเดียวกัน สิ่งเหล่านี้มีการออกแบบที่แตกต่างกันอย่างทั่วถึงเรียกใช้ชุดคำสั่งต่าง ๆ ได้รับการแก้ไขแตกต่างกันและโดยทั่วไปจะมีการตอกบัตรต่างกันเช่นกัน


7

ประสิทธิภาพการทำงานที่เดียวด้ายอย่างรวดเร็วและผ่านด้ายหลายสูงมากเป็นสิ่งที่คุณได้รับกับ CPU เหมือนของ Intel Xeon E5-2699v4

มันเป็น Broadwell 22 คอร์ ความเร็วสัญญาณนาฬิกาที่ยั่งยืนอยู่ที่ 2.2GHz พร้อมคอร์ทั้งหมดที่ใช้งานอยู่ (เช่นการเข้ารหัสวิดีโอ) แต่เทอร์โบแบบคอร์เดี่ยวสูงสุดคือ 3.6GHz

ดังนั้นในขณะที่ทำงานแบบขนานจะใช้งบประมาณพลังงาน 145W เป็น 22 แกน 6.6W แต่ในขณะที่ทำงานที่มีเธรดเพียงไม่กี่ตัวงบประมาณพลังงานเดียวกันนั้นทำให้แกนประมวลผลบางตัวไม่เกิน 3.6GHz ( หน่วยความจำแบบ single-core ที่ต่ำกว่าและแบนด์วิดท์ L3-cache ใน Xeon ขนาดใหญ่หมายความว่ามันอาจจะทำงานได้ไม่เร็วเท่ากับ quad-core บนเดสก์ท็อปที่ 3.6GHz แต่แกนเดียวใน CPU ของ Intel สามารถใช้งานได้มากกว่า แบนด์วิดธ์หน่วยความจำทั้งหมด)

ความเร็วสัญญาณนาฬิกา 2.2GHz นั้นต่ำมากเนื่องจากข้อ จำกัด ทางความร้อน ยิ่งแกนประมวลผลมี CPU มากเท่าไหร่ก็ยิ่งทำงานช้าลงเมื่อมันทำงานทั้งหมด เอฟเฟกต์นี้ไม่ใหญ่มากในซีพียู 4 และ 8 คอร์ที่คุณพูดถึงในคำถามเพราะ 8 นั้นไม่ได้มีหลายคอร์และพวกเขามีงบประมาณด้านพลังงานสูงมาก ซีพียูเดสก์ทอปแม้ผู้ที่ชื่นชอบอย่างเห็นได้ชัดแสดงผลนี้: อินเทล Skylake-X i9-7900X เป็นส่วน 10c20t กับ 3.3GHz ฐานสูงสุดเทอร์โบ 4.5GHz นั่นคือ headroom เทอร์โบแบบ single-core มากขึ้นกว่า i7-6700k (4.0GHz ยั่งยืน / 4.2GHz เทอร์โบโดยไม่ต้องโอเวอร์คล็อก)

การปรับสเกลความถี่ / แรงดันไฟฟ้า (DVFS) อนุญาตให้แกนเดียวกันทำงานในช่วงกว้างของกราฟประสิทธิภาพ / ประสิทธิภาพ ดูเพิ่มเติมที่การนำเสนอ IDF2015 นี้เกี่ยวกับการจัดการพลังงาน Skylakeพร้อมรายละเอียดที่น่าสนใจมากมายเกี่ยวกับสิ่งที่ซีพียูสามารถทำได้อย่างมีประสิทธิภาพและแลกเปลี่ยนประสิทธิภาพเทียบกับประสิทธิภาพทั้งแบบคงที่เวลาออกแบบและการบินด้วย DVFS

อีกด้านหนึ่งของสเปกตรัมนั้น Intel Core-M ซีพียูมีความถี่ที่ต่ำมากเช่น 1.2GHz ที่ 4.5Wแต่สามารถเทอร์โบสูงสุด 2.9GHz ด้วยการใช้งานหลายคอร์พวกเขาจะรันคอร์ด้วยความเร็วสัญญาณนาฬิกาที่มีประสิทธิภาพมากขึ้นเช่นเดียวกับ Xeons ยักษ์

คุณไม่จำเป็นต้องมีสถาปัตยกรรมสไตล์ที่แตกต่างกันมาก LITTLE เพื่อรับประโยชน์สูงสุด แกนเล็ก ๆ ใน ARM ใหญ่ LITTLE เป็นแกนเรียงตามลําดับที่ไม่ดีต่อการคำนวณ ประเด็นก็คือเรียกใช้ UI ด้วยพลังงานที่ต่ำมาก พวกเขาจำนวนมากจะไม่ยอดเยี่ยมสำหรับการเข้ารหัสวิดีโอหรือการกระทืบหมายเลขร้ายแรงอื่น ๆ ( @ LưuVĩnhPhúcพบการสนทนาบางอย่างเกี่ยวกับสาเหตุที่ x86 ไม่ได้ใหญ่ LITTLEโดยทั่วไปการใช้ซิลิกอนพิเศษในแกนที่ช้ามากที่ใช้พลังงานต่ำจะไม่คุ้มค่าสำหรับการใช้งานเดสก์ท็อป / แล็ปท็อปทั่วไป)


ในขณะที่แอปพลิเคชันเช่นการตัดต่อวิดีโอจะถูกกำหนดตามจำนวนแกนประมวลผล [จะไม่ 2x 4.0 GHz + 4x 2.0 GHz จะดีกว่าที่ปริมาณงานแบบมัลติเธรดมากกว่า 4x 4GHz หรือไม่]

นี่คือความเข้าใจผิดที่สำคัญของคุณ ดูเหมือนว่าคุณกำลังคิดว่าจำนวนนาฬิกาทั้งหมดในแต่ละวินาทีจะมีประโยชน์มากกว่าหากกระจายไปทั่วคอร์มากขึ้น ไม่เคยเป็นอย่างนั้น มันเป็นเช่นนั้นมากขึ้น

cores * perf_per_core * (scaling efficiency)^cores

( perf_per_coreไม่ใช่สิ่งเดียวกับความเร็วสัญญาณนาฬิกาเนื่องจาก 3GHz Pentium4 จะทำงานได้น้อยลงต่อวงจรนาฬิกามากกว่า 3GHz Skylake)

ที่สำคัญกว่านั้นคือหายากมากที่ประสิทธิภาพคือ 1.0 งานคู่ขนานที่น่าอับอายบางงานทำสเกลเกือบเป็นเส้นตรง (เช่นการคอมไพล์ไฟล์หลายไฟล์) แต่การเข้ารหัสวิดีโอไม่เป็นเช่นนั้น สำหรับ x264 การปรับสเกลทำได้ดีมากถึงสองสามคอร์ แต่แย่ลงด้วยคอร์ที่มากขึ้น เช่นการเพิ่มจาก 1 ถึง 2 คอร์จะเพิ่มความเร็วเป็นสองเท่า แต่การเพิ่มจาก 32 เป็น 64 คอร์จะช่วยได้น้อยกว่ามากสำหรับการเข้ารหัส 1080p ทั่วไป จุดที่ความเร็วสูงสุดขึ้นอยู่กับการตั้งค่า ( -preset veryslowทำการวิเคราะห์เพิ่มเติมในแต่ละเฟรมและสามารถทำให้แกนเพิ่มเติมยุ่งกว่า-preset fast)

ด้วยแกนที่ช้ามาก ๆ ชิ้นส่วนแบบเธรดเดียวของ x264 จะกลายเป็นคอขวด (เช่นการเข้ารหัสบิตสุดท้าย CABAC บิตสตรีมมันเป็น h.264 เทียบเท่ากับ gzip และไม่ขนานกัน) การมีคอร์เร็วสองสามแกนจะแก้ปัญหานั้นถ้าระบบปฏิบัติการรู้วิธีกำหนดเวลาให้ (หรือถ้า x264 ตรึงเธรดที่เหมาะสมเพื่อ แกนอย่างรวดเร็ว)

x265 สามารถใช้ประโยชน์จากคอร์มากกว่า x264 เนื่องจากมีการวิเคราะห์ที่ต้องทำมากกว่าและการออกแบบ WPP ของ h.265 ช่วยให้เข้ารหัสและถอดรหัสแบบขนานมากขึ้น แต่สำหรับ 1080p คุณหมดความขนานเพื่อหาช่องโหว่ในบางจุด


หากคุณมีวิดีโอหลายรายการที่จะเข้ารหัสให้ทำวิดีโอหลาย ๆ ไฟล์ในแนวขนานกันยกเว้นการแข่งขันสำหรับทรัพยากรที่ใช้ร่วมกันเช่นความจุแคช L3 และแบนด์วิดธ์และแบนด์วิดท์หน่วยความจำ คอร์ที่เร็วขึ้นจะได้รับประโยชน์มากขึ้นจากแคช L3 ในปริมาณเท่ากันเนื่องจากพวกเขาไม่จำเป็นต้องทำงานกับส่วนต่าง ๆ ของปัญหาพร้อมกัน


4

ในขณะที่มีความเป็นไปได้ในการออกแบบคอมพิวเตอร์ที่มีส่วนต่าง ๆ ทำงานด้วยความเร็วที่แตกต่างกันการตัดสินโดยอนุญาโตตุลาการของทรัพยากรมักต้องการความสามารถในการตัดสินใจได้อย่างรวดเร็วว่าคำขอใดที่จะต้องให้บริการก่อน . การตัดสินใจในสิ่งต่าง ๆส่วนใหญ่แล้วค่อนข้างเรียบง่าย วงจร "Quiz Buzzer" สามารถนำไปใช้ได้กับทรานซิสเตอร์เพียงสองตัว ปัญหาคือการตัดสินใจที่รวดเร็วและเชื่อถือได้ยากที่จะคลุมเครือ วิธีปฏิบัติในการทำเช่นนั้นในหลาย ๆ กรณีคือการใช้การตัดสินใจที่เรียกว่า "synchronizer" ซึ่งสามารถหลีกเลี่ยงความคลุมเครือ แต่แนะนำการหน่วงเวลาสองรอบ ใครสามารถออกแบบตัวควบคุมแคชซึ่งจะตัดสินได้อย่างน่าเชื่อถือในระบบทั้งสองพร้อมนาฬิกาแยกต่างหากหากเรายินดีที่จะทนต่อความล่าช้าสองรอบในทุกการดำเนินการเพื่อพิจารณาว่าใครจะเป็นผู้ตัดสิน วิธีการดังกล่าวจะมีประโยชน์น้อยกว่าหากใครต้องการแคชเพื่อตอบสนองทันทีต่อการร้องขอในกรณีที่ไม่มีความขัดแย้งเนื่องจากแม้แต่คำขอที่ไม่มีการโต้แย้งก็ยังคงมีความล่าช้าสองรอบ

การรันทุกอย่างออกจากนาฬิกาทั่วไปจะช่วยลดความจำเป็นในการซิงโครไนซ์ซึ่งจะช่วยหลีกเลี่ยงความล่าช้าในการสื่อสารสองรอบทุกครั้งที่มีความจำเป็นในการส่งข้อมูลหรือควบคุมสัญญาณระหว่างโดเมนนาฬิกา


4

คอมพิวเตอร์เดสก์ท็อปทำสิ่งนี้แล้ว

มีซีพียู (จำนวนชุด) โดยมีเธรด 1-72 เธรดใช้งานพร้อมกันและ GPU (ชุด) พร้อมชุดประมวลผล 16-7168 ชุด

กราฟิกเป็นตัวอย่างของงานที่เราพบว่ามีงานใหญ่ขนานที่มีประสิทธิภาพ GPU ได้รับการปรับให้เหมาะสำหรับการทำงานประเภทที่เราต้องการทำกราฟิก (แต่ไม่ จำกัด เฉพาะ)

นี่คือคอมพิวเตอร์ที่มีแกนขนาดใหญ่ไม่กี่แกนและแกนขนาดเล็กจำนวนมาก

โดยทั่วไปการซื้อขายหนึ่งคอร์ที่ X FLOPS สำหรับสามคอร์ที่ X / 2 FLOPS นั้นไม่คุ้มค่า แต่การซื้อขายหนึ่งคอร์ที่ X FLOPS สำหรับหนึ่งร้อยคอร์ที่ X / 5 FLOPS นั้นคุ้มค่ามาก

เมื่อโปรแกรมนี้คุณสร้างรหัสที่แตกต่างกันมากสำหรับ CPU และ GPU มีการดำเนินการจำนวนมากเพื่อแบ่งปริมาณงานเพื่อให้ GPU ได้รับงานที่ทำได้ดีที่สุดใน GPU และ CPU ได้งานที่ทำได้ดีที่สุดใน CPU

การเขียนโค้ดสำหรับ CPU นั้นง่ายกว่ามากเพราะโค้ดขนานใหญ่นั้นยากที่จะทำให้ถูกต้อง ดังนั้นเมื่อผลตอบแทนมีขนาดใหญ่มันก็คุ้มค่าที่จะซื้อขายประสิทธิภาพแบบ single-core สำหรับสถานการณ์แบบ multi-core GPU ให้ผลตอบแทนมหาศาลเมื่อใช้อย่างถูกต้อง

ตอนนี้อุปกรณ์มือถือทำเช่นนี้ด้วยเหตุผลอื่น พวกเขามีแกนพลังงานต่ำที่ช้าลงอย่างมีนัยสำคัญ แต่ใช้พลังงานน้อยลงอย่างมีนัยสำคัญต่อหน่วยของการคำนวณเช่นกัน สิ่งนี้ทำให้พวกเขายืดอายุการใช้งานแบตเตอรี่ได้นานขึ้นเมื่อไม่ได้ทำงานหนักของ CPU ที่นี่เรามี "ผลตอบแทนขนาดใหญ่" ที่แตกต่างกัน ไม่ใช่ประสิทธิภาพ แต่มีประสิทธิภาพด้านพลังงาน มันยังคงต้องใช้ความพยายามอย่างมากในส่วนของระบบปฏิบัติการและอาจเป็นตัวเขียนแอปพลิเคชันเพื่อให้มันทำงานได้อย่างถูกต้อง เฉพาะผลตอบแทนที่ยิ่งใหญ่ทำให้มันคุ้มค่า


-1

เหตุผลที่ระบบทั่วไปมีแกนที่ความเร็วเดียวกันนั้นเป็นปัญหาทางคณิตศาสตร์อย่างง่าย เวลาอินพุตและเอาต์พุต (พร้อมการปรับให้เหมาะสม) ขึ้นอยู่กับค่าคงที่ชุดเดียว (ซึ่งสามารถปรับได้ = คูณด้วยจำนวนหน่วย)

และบางคนที่นี่บอกว่าอุปกรณ์พกพามีหลายซีพียูด้วยความเร็วที่แตกต่างกัน นั่นไม่ใช่ความจริง ไม่ใช่หน่วยประมวลผลกลางหากไม่ใช่หน่วยประมวลผลกลาง ไม่ว่าผู้ผลิตจะระบุว่าเป็นหรือไม่ก็ตาม ในกรณีนั้น [ไม่ใช่ซีพียู] เป็นเพียงแค่ "แพ็คเกจการสนับสนุน"


-10

ฉันไม่คิดว่า OP เข้าใจอิเล็กทรอนิกส์ขั้นพื้นฐาน คอมพิวเตอร์ทุกเครื่องต้องการสิ่งหนึ่งสำหรับพวกเขาในการทำงาน - นาฬิกา วงจรนาฬิกาที่สร้างโดยนาฬิกาภายในเป็นเครื่องเมตรอนอมสำหรับการเคลื่อนไหวของข้อมูลทั้งหมด เพื่อให้บรรลุความสอดคล้องกันการดำเนินการทั้งหมดจะต้องเชื่อมโยงกับนาฬิกาทั่วไป สิ่งนี้เป็นจริงสำหรับการประมวลผลข้อมูลภายในทั้งบนคอมพิวเตอร์แยกและเครือข่ายทั้งหมด

หากคุณต้องการแยกคอร์ใน CPU โดยใช้ความถี่ที่ต่างกันคุณสามารถออกแบบแพลตฟอร์มดังกล่าวได้อย่างแน่นอน ถึงแม้ว่ามันจะต้องมีวิศวกรรมโซลูชันมาเธอร์บอร์ดที่เชื่อมโยงแต่ละคอร์แต่ละตัวเข้ากับชุดย่อยของคุณสมบัติเมนบอร์ดที่แยกต่างหาก คุณจะเหลือคอมพิวเตอร์ 4 เครื่องแทนคอมพิวเตอร์แบบ quad-core

อีกวิธีหนึ่งคือเมื่อบุคคลอื่นชี้ให้เห็นคุณสามารถเพิ่มรหัสลงในเคอร์เนลของคุณซึ่งปรับความถี่หลักเป็นรายบุคคล ซึ่งจะทำให้ประสิทธิภาพในการทำงานลดลง คุณสามารถมีความเร็วหรือประสิทธิภาพการใช้พลังงาน - แต่คุณไม่สามารถมีทั้งสองอย่าง


1
ฉันไม่ได้ดังนั้นคำถามของฉัน เปรียบเทียบ Intel i5 7600 กับ i5 7600k เราจะเห็นว่านาฬิกาพื้นฐานคือ 100mhz สำหรับทั้งสองและความแตกต่างคืออัตราส่วนหลัก ดังนั้นคุณสามารถมีสองคอร์ที่มีนาฬิกาพื้นฐานเดียวกันที่ 100mhz แต่มีอัตราส่วนหลักที่แตกต่างกัน - สถานการณ์นี้ละเมิดข้อกำหนดซิงโครนิตี้หรือไม่?
Jamie

4
ใช่นี่มันเกินความจริงเกินไป มันไม่เป็นความจริงเลยที่การดำเนินการทั้งหมดจะต้องเชื่อมโยงกับนาฬิกาเดียวกันมีโดเมนนาฬิกามากมายและเป็นไปได้อย่างสมบูรณ์ในการรันคอร์ต่าง ๆ ด้วยความเร็วเดียวกัน นาฬิกาบัสไม่เหมือนกับนาฬิกาภายใน ฯลฯ
pjc50

11
ชิปที่ทันสมัยมีโดเมนนาฬิกาหลายโดเมนอยู่แล้ว (แม้แต่ RTC ของไมโครคอนโทรลเลอร์ราคาถูกและเป็นใบ้ก็ยังทำงานบนโดเมน 32.7kHz แยกต่างหาก) คุณต้องซิงโครไนซ์ระหว่างโดเมนนาฬิกา แม้จะมีนาฬิกาทั่วไปคุณก็สามารถแบ่งได้ 2, 4, 8 และอื่น ๆ
Michael

1
จริงทั้งหมด แต่ก็ยังลดประสิทธิภาพการทำงาน และนั่นเป็นเป้าหมายในการแสดงเสมอ นั่นคือประเด็นของฉัน แน่นอนว่าคุณสามารถทำได้ แต่คุณจะได้รับชมการแสดง
RyRoUK

"ลดประสิทธิภาพ" - เปรียบเทียบกับอะไร คุณกำลังสมมติว่าสถานะพื้นฐานที่คุณมีตัวประมวลผล n ตัวที่ทำงานด้วยนาฬิกาเดียวกัน ไม่จำเป็นต้องเป็นอย่างนั้น หน่วยประมวลผล X + โปรเซสเซอร์ Y เป็นโซลูชั่นที่ทรงพลัง / ยืดหยุ่นกว่าโปรเซสเซอร์ X เพียงอย่างเดียวไม่ว่าโปรเซสเซอร์ Y คืออะไร
hmijail
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.