कई छाया इकाइयों को देखते हुए बनावट कैश कैसे काम करता है


11

आधुनिक जीपीयू में कई समानांतर छायांकन इकाइयां हैं। मैं यह जानना चाहता हूं कि उस परिदृश्य में बनावट कैश का प्रबंधन कैसे किया जाता है।

जवाबों:


14

शीर्ष स्तर पर, एक GPU को कई प्रकार के shader cores में विभाजित किया जाता है। नोटबुक या टैबलेट में एक छोटा जीपीयू केवल कुछ कोर हो सकता है जबकि एक उच्च अंत डेस्कटॉप जीपीयू दर्जनों हो सकता है।

शैडर कोर के अलावा बनावट इकाइयां भी हैं। उन्हें GPU के आधार पर एक बनावट इकाई प्रति shader core, या दो या तीन shader कोर के बीच साझा की गई एक बनावट इकाई के साथ समूहीकृत किया जा सकता है।

पूरी चिप एक ही L2 कैश साझा करती है, लेकिन विभिन्न इकाइयों में व्यक्तिगत L1 कैश होगा। बनावट इकाइयों में बनावट कैश है, और shader इकाइयों में निर्देश और स्थिरांक / वर्दी के लिए कैश हैं, और शायद बफर डेटा के लिए एक अलग कैश है जो इस बात पर निर्भर करता है कि बफर लोड बनावट लोड से अलग पथ है या नहीं (GPU आर्किटेक्चर द्वारा भिन्न होता है)।

बनावट इकाइयाँ स्वतंत्र रूप से और अतुल्यकालिक रूप से shader cores से संचालित होती हैं। जब एक शेडर पढ़ी गई बनावट करता है, तो यह उन दोनों के बीच एक छोटी बस में बनावट इकाई को एक अनुरोध भेजता है; यदि संभव हो तो shader निष्पादित करना जारी रख सकता है, या यह निलंबित हो सकता है और अन्य shader थ्रेड को चलाने की अनुमति दे सकता है, जबकि यह बनावट के समाप्त होने का इंतजार करता है।

बनावट इकाई अनुरोधों का एक समूह बनाती है और उन पर संबोधन गणित का प्रदर्शन करती है - एमआइपी स्तर और अनिसोट्रॉपी का चयन करते हुए, यूवी को टेक्सल निर्देशांक में परिवर्तित करना, क्लैम्प / रैप मोड आदि को लागू करना, एक बार यह पता चल जाता है कि इसे किन टेक्सल्स की जरूरत है, यह उन्हें पढ़ता है। कैश पदानुक्रम, उसी तरह कि मेमोरी एक सीपीयू पर काम करती है (पहले L1 में देखें, अगर वहाँ नहीं है तो L2, फिर DRAM)। यदि कई लंबित बनावट अनुरोध सभी समान या पास के टेक्सल्स चाहते हैं (जैसा कि वे अक्सर करते हैं), तो आपको यहां बहुत अधिक दक्षता मिलती है, क्योंकि आप केवल कुछ मेमोरी लेनदेन के साथ कई लंबित अनुरोधों को पूरा कर सकते हैं। इन सभी ऑपरेशनों को पाइपलाइन किया जाता है, इसलिए जब बनावट इकाई एक बैच पर मेमोरी की प्रतीक्षा कर रही है, तो यह दूसरे बैच के अनुरोधों के लिए संबोधित गणित कर सकता है, और इसी तरह।

एक बार डेटा वापस आने के बाद, बनावट इकाई संपीड़ित प्रारूपों को डिकोड करेगी, आवश्यक रूप से रूपांतरण और फ़िल्टरिंग करेगी, फिर परिणाम को वापस shader कोर पर लौटाएगी।


1
धन्यवाद! यह वास्तव में मददगार था। स्थिरांक / वर्दी कैश को विनियमित करना। क्या वे सटीक (मध्यम, निम्न) के अलावा कोई भी सुझाव हैं जो मैं वर्दी कैश हिट अनुपात में सुधार करने के लिए उपयोग कर सकता हूं? क्या जिस क्रम में मैं वर्दी की घोषणा करता हूं उससे कोई फर्क पड़ता है (जैसा कि अधिक कसकर पैक करने के लिए)?
फेलिप लीरा

2
@PhilLira पैकिंग फर्क कर सकती है, हाँ। कंपाइलर 16-बाइट सीमाओं के बीच विभाजित होने से रोकने के लिए पैडिंग सम्मिलित करेगा, इसलिए इससे बचने की कोशिश करें। मुझे नहीं लगता कि मध्यम / निम्न वास्तव में वर्दी पर कुछ भी करता है, कम से कम डेस्कटॉप जीपीयू पर (शायद यह मोबाइल पर करता है)। मैं हालांकि समान कैश हिट अनुपात के बारे में बहुत अधिक चिंता नहीं करूंगा। यह शायद ही कभी, अगर एक अड़चन है।
नाथन रीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.