क्या सीपीयू कैश में स्पष्ट रूप से स्थैतिक ऑब्जेक्ट्स बनाना संभव है, यह सुनिश्चित करने के लिए कि वे ऑब्जेक्ट हमेशा कैश में रहते हैं, इसलिए RAM या God forbid - hdd वर्चुअल मेमोरी में सभी तरह तक पहुंचने से कोई प्रदर्शन हिट नहीं लिया जाता है?सी/सी ++ में सीपीयू कैश में स्थैतिक मेमोरी आवंटित करें: क्या यह संभव है?
मैं एल 1, एल 2, निर्देश या किसी अन्य कैश को लक्षित करने का इरादा नहीं रखते, बड़े एल 3 साझा कैश को लक्षित करने में विशेष रुचि रखता हूं, केवल स्मृति की सबसे बड़ी ऑन-डाई चब है।
और इसे पोस्ट करने से पहले मैंने खोजे गए अन्य धागे से अलग होने के लिए स्पष्ट करने के लिए, मुझे पूरे कैश का निजीकरण करने में कोई दिलचस्पी नहीं है, केवल कुछ छोटे, कुछ वर्ग के क्षेत्र के लायक हैं।
मुझे लगता है कि आप सबसे अच्छा कर सकते हैं जीसीसी के [__builtin_prefetch मैक्रो] (http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Other-Builtins.html) का उपयोग करना है। आईआईआरसी कैश कोड द्वारा एड्रेसेबल नहीं है, सीपीयू इसे स्वयं प्रबंधित करता है (कम से कम x86 पर)। –
किस प्रकार का प्रोसेसर? कुछ आर्किटेक्चर में डेटा की आवश्यकता होने से पहले कैश संकेत देने या कैश प्रीफेच को निर्देशित करने के निर्देश हैं। – TJD
शॉर्ट एवर: नहीं आप नहीं कर सकते। केवल एक चीज जो आप कर सकते हैं वह संदर्भ के इलाके को तंग रखती है। स्मृति में होने की उम्मीद न करें, लेकिन पिछले ऑपरेशन द्वारा उपयोग किए गए डेटा के नजदीक डेटा तक पहुंचने का प्रयास करें। साथ ही: कैश सीमाओं पर आपके डेटा को गठबंधन रखने से आप एक और कैश लाने से बच सकते हैं। बीटीडब्ल्यू कैश * स्लॉट * लगातार नहीं होना चाहिए। X86 पर, आईआईआरसी चार एल 1 स्लॉट और सैकड़ों या हजारों एल 2 स्लॉट हैं। (जिसे आपको मल्टीप्रोसेस मशीन पर अन्य प्रक्रियाओं के साथ साझा करना है)। – wildplasser