Texture Cache ทำงานอย่างไรในการพิจารณาหลาย shader units


คำตอบ:


14

ที่ระดับบนสุด GPU จะถูกแบ่งย่อยเป็นหลายแกนหลักของ shader GPU ขนาดเล็กในโน้ตบุ๊กหรือแท็บเล็ตอาจมีเพียงไม่กี่คอร์ในขณะที่ GPU เดสก์ท็อประดับสูงอาจมีหลายสิบ

นอกเหนือจากแกนของ shader แล้วยังมีหน่วยพื้นผิวด้วย พวกมันอาจจะถูกจัดกลุ่มพร้อมกับหน่วยพื้นผิวหนึ่งหน่วยต่อแกนของ shader หรือหน่วยพื้นผิวหนึ่งหน่วยที่แบ่งเป็นสองหรือสามแกนขึ้นอยู่กับ GPU

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

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

หน่วยพื้นผิวจะรวบรวมคำขอจำนวนมากและทำการคำนวณทางคณิตศาสตร์กับพวกมัน - การเลือกระดับ mip และ anisotropy แปลง UV เป็นพิกัด texel การใช้โหมด clamp / wrap เป็นต้นเมื่อรู้ว่าจำเป็นต้องใช้ Texel ใดมันจะอ่านผ่านทาง ลำดับชั้นของแคชแบบเดียวกับที่หน่วยความจำอ่านทำงานบน CPU (ดูใน L1 ก่อนถ้าไม่มี L2 แล้วตามด้วย DRAM) หากคำขอที่รอดำเนินการจำนวนมากต้องการสิ่งเดียวกันหรือใกล้เคียงกับเท็กซัส (ตามปกติ) คุณจะได้รับประสิทธิภาพมากมายที่นี่เนื่องจากคุณสามารถตอบสนองคำขอที่รอดำเนินการจำนวนมากได้ การดำเนินการทั้งหมดเหล่านี้ถูกไพพ์ไลน์ดังนั้นในขณะที่หน่วยพื้นผิวกำลังรอหน่วยความจำในแบทช์เดียวก็สามารถทำการคำนวณเลขที่อยู่สำหรับการร้องขออีกชุดหนึ่งและอื่น ๆ

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


1
ขอบคุณ! นั่นเป็นประโยชน์จริงๆ การจัดระเบียบค่าคงที่ / แคชเครื่องแบบใหม่ พวกเขามีเคล็ดลับนอกเหนือจากความแม่นยำ (ปานกลาง, ต่ำ) ฉันสามารถใช้เพื่อปรับปรุงอัตราส่วนการตีแคชเครื่องแบบหรือไม่? ลำดับที่ฉันประกาศเครื่องแบบสร้างความแตกต่าง (สำหรับการบรรจุแน่นขึ้น) หรือไม่?
เฟลิเป้ลิร่า

2
@PhilLira บรรจุสามารถสร้างความแตกต่างใช่ คอมไพเลอร์จะแทรกการแพ็ดเพื่อป้องกันไม่ให้เวกเตอร์ถูกแบ่งข้ามขอบเขต 16 ไบต์ดังนั้นพยายามหลีกเลี่ยง ฉันไม่คิดว่า Mediump / lowp ทำอะไรกับเครื่องแบบอย่างน้อยบนเดสก์ท็อป GPUs (อาจเป็นบนมือถือ) ฉันจะไม่กังวลมากเกินไปเกี่ยวกับอัตราส่วนแคชฮิตสม่ำเสมอ นั่นเป็นเรื่องยากมากหากเคยเป็นคอขวด
นาธานรีด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.