คอร์มากขึ้นไม่ได้หมายความว่าคอมพิวเตอร์มีประสิทธิภาพมากขึ้น

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

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

คอร์มากขึ้นไม่ได้หมายความว่าคอมพิวเตอร์มีประสิทธิภาพมากขึ้น

โปรแกรมไม่เคยปรับขนาดตามจำนวนคอร์

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

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

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

การเรนเดอร์ Futuro Procesadores

การแบ่งงานกันหลายแกน

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

มัลติไฮโล นิวเคลียส

อย่างไรก็ตาม การแบ่งงานระหว่างคอร์ต่างๆ นั้น เป็นงานเพิ่มเติมที่มักจะมอบให้กับคอร์ที่ทำหน้าที่เป็นตัวนำและต้องทำดังนี้

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

โซลูชันนี้ถูกนำมาใช้โดย SONY, Toshiba และ IBM ใน Cell Broadband Engine ซึ่งเป็นโปรเซสเซอร์กลางของ PS3 โดยที่แกนหลักมีหน้าที่ควบคุมส่วนที่เหลือ แม้ว่า Atari Jaguar จะอยู่ไกลออกไปมากก็ตาม สำหรับ PS4 SONY ไม่ทำโมเดลนี้ซ้ำแล้วซ้ำอีกและไม่มีใครนำมาใช้กับ PC เพราะมันเป็นฝันร้าย อย่างไรก็ตาม มันเป็นวิธีการแบ่งงานที่มีประสิทธิภาพที่สุด

ไม่ใช่ทุกสิ่งที่สามารถทำงานบนหลายคอร์ได้

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

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

ในกรณีแรก T/N ใช้กับ 100% ในกรณีที่สอง เราเข้าสู่สิ่งที่เรียกว่ากฎของอัมดาห์ลแล้ว ซึ่งการเร่งความเร็วเนื่องจากการเพิ่มจำนวนคอร์เป็นเพียงบางส่วน และในกรณีที่สาม เราเพียงแค่ต้องการทั้งหมด พลังของแกนเดียวสำหรับงานนั้น

อะไรที่ทำให้ CPU แตกต่างจาก GPU ในมัลติเธรด

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

ซีพียู GPU

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