में लोड होने का निर्णय लेता है, मान लें कि कंप्यूटर में 64k एल 1 कैश और 512k एल 2 कैश है।यह समझना कि सीपीयू कैश मेमोरी
प्रोग्रामर ने मुख्य स्मृति में डेटा के 10 एमबी के एक सरणी को बनाया/पॉप्युलेट किया है (उदाहरण के लिए 3 डी मॉडल का वर्टेक्स/इंडेक्स डेटा)।
सरणी की तरह structs की एक श्रृंखला शामिल हो सकता है:
struct x
{
vec3 pos;
vec3 normal;
vec2 texcoord;
};
अगला प्रोग्रामर यह सब डेटा, उदा पर कुछ कार्रवाई करने के लिए है GPU को डेटा पास करने से पहले, एक बार सामान्य गणना।
सीपीयू कैसे तय करता है कि एल 2 कैश में डेटा कैसे लोड हो जाता है?
प्रोग्रामर कैसे किसी भी दिए गए आर्किटेक्चर के लिए कैश लाइन का आकार जांच सकता है?
प्रोग्रामर कैसे सुनिश्चित कर सकता है कि डेटा व्यवस्थित किया गया है ताकि यह कैश लाइनों में फिट हो सके?
क्या बाइट सीमाओं के लिए डेटा संरेखण एकमात्र चीज है जिसे इस प्रक्रिया में सहायता के लिए किया जा सकता है?
प्रोग्रामर कैश मिस को कम करने के लिए क्या कर सकता है?
क्या प्रोफाइलिंग उपकरण उपलब्ध हैं जो विंडोज़ और लिनक्स प्लेटफॉर्म के लिए अनुकूलन प्रक्रिया को देखने में मदद करेंगे?
यह एक बहुत बड़ा सवाल है, इसलिए मुझे उम्मीद है कि यह "पकड़ पर रखेगा" .. वैसे भी, अच्छा कैश उपयोग सुनिश्चित करने के लिए, Arrays लेआउट के एक स्ट्रक्चर पर स्विच करने पर विचार करें। यह सुनिश्चित करेगा कि आप उस डेटा पर कैश स्पेस को बर्बाद नहीं करेंगे जो आप तुरंत उपयोग नहीं कर रहे हैं। वीसीएक्स को विभाजित करना शायद एक अच्छा विचार है, लेकिन एक अलग कारण के लिए: वेक्टरेशन। – harold
कैश मिस को कम करने के लिए, http://stackoverflow.com/questions/460666/decreasing-cache-misses-through-good-design – fizzbuzz
पर एक नज़र डालें, मैं अधिकतर प्रश्न बंद करने के खिलाफ हूं (होल्ड पर, हां! बटन अभी भी "करीबी" कहता है), लेकिन यहां इतने सारे प्रश्न हैं कि यह अप्रिय है। यह विश्वविद्यालय वर्ग में एक बड़ी पाठ्यचर्या इकाई के लिए सामग्री होगी। यदि आप इनमें से कम से कम कुछ के जवाब जानते हैं, तो कृपया उन्हें प्रश्न में प्रदान करें। तथ्य यह है कि आप जानते हैं कि कैश लाइन क्या बताती है कि आप यह भी जानते हैं कि सीपीयू कैसे निर्णय लेता है कि एल 2 में डेटा कैसे लोड किया जाए। – Potatoswatter