Core ของ GPU: มันทำงานอย่างไรกับกราฟิก

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

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

แกนหลักของ GPU: มันทำงานอย่างไร

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

คอร์หรือโปรเซสเซอร์ใน GPU คืออะไร?

Ciclo Instrucción Unidad Control

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

ALU เป็นเพียงหน่วยประมวลผลดังนั้นจึงจำเป็นต้องมีหน่วยควบคุมเพื่อเป็นแกนหลักที่สมบูรณ์ และอะไรที่เราพิจารณาว่าเป็นแกนกลางที่สมบูรณ์? สิ่งที่ NVIDIA เรียกว่า SM อินเทล เรียก Sub-Slice และ เอเอ็มดี หน่วยคำนวณ

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

GPU ไม่ "รัน" โปรแกรม

GPU ของ NVIDIA

โปรดทราบว่า GPU ไม่ได้รันโปรแกรมอย่างที่เรารู้จักซึ่งเป็นลำดับของคำสั่ง ข้อยกเว้นคือโปรแกรม shader ที่ทำงานบนแกน GPU จริงๆ

สิ่งที่โปรแกรม shader ทำคือจัดการกับชุดข้อมูลหรือกราฟิกเบื้องต้นในขั้นตอนต่างๆ แต่ในระดับการทำงานของฮาร์ดแวร์สิ่งเหล่านี้จะถูกนำเสนอในรูปแบบของเมล็ด

เคอร์เนลเพื่อไม่ให้สับสนกับระบบปฏิบัติการคือชุดข้อมูล + ข้อมูลที่มีอยู่ในตัวซึ่งเรียกอีกอย่างว่าเธรดในบริบทของ GPU

GPU core แตกต่างจาก CPU core อย่างไร?

ซีพียู GPU

ความแตกต่างที่สำคัญคือ ซีพียูได้รับการออกแบบมาเพื่อการขนานกันในระดับคำสั่งเป็นหลัก ในขณะที่ GPU เฉพาะสำหรับการขนานกันในระดับเธรด

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

ซีพียูร่วมสมัยรวม ILP และ TLP ไว้ในสถาปัตยกรรมของพวกเขาในขณะที่ GPU ยังคงเป็น TLP ล้วนๆ ไม่มี ILP ใด ๆ เพื่อลดความซับซ้อนของชุดควบคุมและสามารถวางคอร์ได้มากที่สุด

ทำงานบน GPU กับทำงานบน CPU

ชิปโดย dentro

เวลาส่วนใหญ่เมื่อเธรดไปถึง ALU คอร์ GPU จะมีคำสั่งและข้อมูลโดยตรง แต่มีหลายครั้งที่ต้องค้นหาข้อมูลในแคชและในหน่วยความจำเพื่อหลีกเลี่ยงความล่าช้าในการเรียกใช้ตัวกำหนดตารางเวลาเคอร์เนล GPU สิ่งที่ทำคือสิ่งที่เรียกว่า Round-Robin และส่งผ่านเธรดนั้นเพื่อทำงานในภายหลัง

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

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