ความสับสนอย่างหนึ่งที่เกิดจากการตลาดของผู้ผลิตการ์ดแสดงผลคือเมื่อพูดถึงจำนวนคอร์ที่ก GPU มีเราคาดว่าพวกเขาโกหกเพื่อให้ตัวเลขเกินจริง แต่สิ่งที่เราเข้าใจโดยคอร์ใน GPU เราสามารถเปรียบเทียบกับสิ่งที่ ซีพียู และมีความแตกต่างอะไรบ้าง?
เมื่อคุณไปซื้อกราฟิกการ์ดรุ่นล่าสุดสิ่งแรกที่คุณเห็นคือมันบอกคุณเกี่ยวกับคอร์หรือโปรเซสเซอร์จำนวนมหาศาล แต่จะเกิดอะไรขึ้นถ้าเราบอกคุณว่ามันเป็นระบบการตั้งชื่อที่ไม่ถูกต้อง?
กับดักที่ผู้ผลิตทำคือการเรียก ALU หรือหน่วยประมวลผลอย่างง่ายภายใต้ชื่อคอร์เป็นต้น NVIDIA เรียกแกน ALUs CUDA ที่ทำงานในจุดลอยตัว 32 บิต แต่ถ้าเราเข้มงวดเราจะไม่สามารถเรียกมันว่าคอร์หรือโปรเซสเซอร์ได้อีกต่อไป พวกเขาไม่เป็นไปตามข้อกำหนดขั้นพื้นฐานที่จะได้รับการพิจารณาในลักษณะดังกล่าว
คอร์หรือโปรเซสเซอร์ใน GPU คืออะไร?
คอร์หรือตัวประมวลผลคือวงจรรวมใด ๆ หรือเป็นส่วนหนึ่งที่ร่วมกันสามารถดำเนินการวงจรคำสั่งที่สมบูรณ์ได้นี่คือการรวบรวมคำสั่งจากหน่วยความจำการถอดรหัสและการดำเนินการของพวกเขา
ALU เป็นเพียงหน่วยประมวลผลดังนั้นจึงจำเป็นต้องมีหน่วยควบคุมเพื่อเป็นแกนหลักที่สมบูรณ์ และอะไรที่เราพิจารณาว่าเป็นแกนกลางที่สมบูรณ์? สิ่งที่ NVIDIA เรียกว่า SM อินเทล เรียก Sub-Slice และ เอเอ็มดี หน่วยคำนวณ
เหตุผลก็คือมันอยู่ในหน่วยเหล่านี้ซึ่งวงจรคำสั่งทั้งหมดเกิดขึ้นและไม่ได้อยู่ใน ALU หรือหน่วยการดำเนินการซึ่งรับผิดชอบเฉพาะส่วนหนึ่งของวงจรคำสั่งเท่านั้น
GPU ไม่ "รัน" โปรแกรม
โปรดทราบว่า GPU ไม่ได้รันโปรแกรมอย่างที่เรารู้จักซึ่งเป็นลำดับของคำสั่ง ข้อยกเว้นคือโปรแกรม shader ที่ทำงานบนแกน GPU จริงๆ
สิ่งที่โปรแกรม shader ทำคือจัดการกับชุดข้อมูลหรือกราฟิกเบื้องต้นในขั้นตอนต่างๆ แต่ในระดับการทำงานของฮาร์ดแวร์สิ่งเหล่านี้จะถูกนำเสนอในรูปแบบของเมล็ด
เคอร์เนลเพื่อไม่ให้สับสนกับระบบปฏิบัติการคือชุดข้อมูล + ข้อมูลที่มีอยู่ในตัวซึ่งเรียกอีกอย่างว่าเธรดในบริบทของ GPU
GPU core แตกต่างจาก CPU core อย่างไร?
ความแตกต่างที่สำคัญคือ ซีพียูได้รับการออกแบบมาเพื่อการขนานกันในระดับคำสั่งเป็นหลัก ในขณะที่ GPU เฉพาะสำหรับการขนานกันในระดับเธรด
การขนานกันของระดับคำสั่งมีจุดมุ่งหมายเพื่อลดเวลาการเรียนการสอนของโปรแกรมโดยดำเนินการหลายคำสั่งพร้อมกัน เมล็ดที่ขึ้นอยู่กับความเท่าเทียมกันในระดับเธรดจะใช้โปรแกรมหลายโปรแกรมในเวลาเดียวกันและดำเนินการควบคู่กันไป ,
ซีพียูร่วมสมัยรวม ILP และ TLP ไว้ในสถาปัตยกรรมของพวกเขาในขณะที่ GPU ยังคงเป็น TLP ล้วนๆ ไม่มี ILP ใด ๆ เพื่อลดความซับซ้อนของชุดควบคุมและสามารถวางคอร์ได้มากที่สุด
ทำงานบน GPU กับทำงานบน CPU
เวลาส่วนใหญ่เมื่อเธรดไปถึง ALU คอร์ GPU จะมีคำสั่งและข้อมูลโดยตรง แต่มีหลายครั้งที่ต้องค้นหาข้อมูลในแคชและในหน่วยความจำเพื่อหลีกเลี่ยงความล่าช้าในการเรียกใช้ตัวกำหนดตารางเวลาเคอร์เนล GPU สิ่งที่ทำคือสิ่งที่เรียกว่า Round-Robin และส่งผ่านเธรดนั้นเพื่อทำงานในภายหลัง
ใน CPU นั้นไม่สามารถทำได้เหตุผลก็คือเธรดเป็นชุดคำสั่งที่ซับซ้อนมากและมีการพึ่งพาระหว่างกันสูงในขณะที่ใน GPU จะไม่มีปัญหาสำหรับสิ่งนี้เนื่องจากเธรดการดำเนินการมีขนาดเล็กมาก มีอยู่ใน“ เมล็ด” หลาย ๆ ครั้งของระยะเวลาการเรียนการสอนเดียว
ในความเป็นจริงสิ่งที่ GPU ทำคือรวบรวมชุดของเมล็ดในสิ่งที่เรียกว่า wave โดยกำหนดให้แต่ละ wave เป็น ALU ของ GPU ซึ่งจะดำเนินการแบบเรียงซ้อนและเรียงตามลำดับ เคอร์เนลแต่ละเคอร์เนลมีเธรดหรือเคอร์เนล จำกัด ซึ่งจะทำให้ไม่ว่างไปสักพักจนกว่าจะต้องมีรายการใหม่ด้วยวิธีนี้เพื่อหลีกเลี่ยงไม่ให้คอร์จำนวนมากส่งคำขอไปยังหน่วยความจำอยู่ตลอดเวลา