GPU จาก AMD และ NVIDIA อนาคตที่ไม่มี RT Cores สำหรับ RT หรือไม่?

เป็นไปได้ไหมที่ในอนาคต RT Cores จะหายไปจาก GPU ในอนาคตของ NVIDIA, อินเทล และ / หรือ เอเอ็มดีเหรอ? หน่วย Shader ที่มีพลังในการประมวลผลมหาศาลสามารถเติบโตเพียงพอจนถึงจุดที่ทำให้การรวมสามารถจ่ายได้อย่างสมบูรณ์หรือไม่? ประเภทของหน่วยเหล่านี้?

RT Cores, Ray Accelerator Units หรือหน่วยทางแยกเป็นหน่วยพิเศษที่รับผิดชอบงานเดียวใน GPU และเป็นครั้งแรกจาก NVIDIA RTX ตัวแรก

GPU จาก AMD และ NVIDIA

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

RT Cores หรือหน่วยสี่แยกคืออะไร?

RT คอร์ NVIDIA

RT Cores ใน NVIDIA หรือ Ray Accelerator Units ใน AMD เป็นหน่วยที่รับผิดชอบในการคำนวณจุดตัดระหว่างรังสีและองค์ประกอบต่างๆของฉากเพื่อทำความเข้าใจว่ายูนิตประเภทนี้ต้องการอะไรในฮาร์ดแวร์ของกราฟิกการ์ดใหม่ที่เรา ต้องเข้าใจว่าอัลกอริทึมการติดตามรังสีรุ่นที่ง่ายที่สุดทำงานอย่างไร:

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

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

Möller - Trumbore algorithm สำหรับจุดตัดระหว่างรังสีและสามเหลี่ยม

Intersección Rayo Triangulo RT แกน

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

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

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

ค่าใช้จ่ายของอัลกอริทึมMöller - Trumbore

แกน Algoritmo Moller-Trumbore RT

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

กล่าวอีกนัยหนึ่งเราต้องการ 27 FLOPS ไม่ใช่ต่อพิกเซล แต่เป็นต่อพิกเซลและจุดตัดตอนนี้ให้คิดถึงจำนวนทางแยกและพิกเซลในฉากแล้วคุณจะได้ทราบคร่าวๆว่าเหตุใดหน่วยทางแยกหรือแกน RT จึงมีความจำเป็น

ประเภทของโปรแกรม shader ที่แทนที่ RT Cores

อีทาพาส DXR

ในข้อกำหนด API สำหรับ Ray Tracing แบบเรียลไทม์ทั้งใน DXR ภายใน DX12 Ultimate และในส่วนขยาย Ray Tracing สำหรับ Vulkan มี shader ประเภทหนึ่งที่ล้าสมัยซึ่งก็คือ Intersection Shader ซึ่งจะแทนที่หน่วยสี่แยกโดยสิ้นเชิง ในฮาร์ดแวร์ที่ไม่มีอยู่

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

ดิเซโน เซอร์กิตอส ปาเปล

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

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

หน่วยฟังก์ชันคงที่ไม่เคยถูกลบออกจาก GPU

GPU ของ NVIDIA

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

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

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