क्या कोई बता सकता है कि एक अलग निर्देश कैश और डेटा कैश होने से हमें क्या लाभ होता है। इस बारे में समझाए गए एक अच्छे लिंक के लिए कोई भी पॉइंटर्स भी सराहना की जाएगी।अलग आईशैच और डीसीएके की आवश्यकता क्यों है
उत्तर
मुख्य कारण यह है: प्रदर्शन। एक अन्य कारण बिजली की खपत है।
पृथक डीसीएसी और आईकैच समानांतर में निर्देश और डेटा लाने के लिए संभव बनाता है।
निर्देश और डेटा के विभिन्न पहुंच पैटर्न हैं।
iCache के लिए लिखना दुर्लभ है। सीपीयू डिज़ाइनर iCache और CPU आर्किटेक्चर को इस धारणा के आधार पर अनुकूलित कर रहे हैं कि कोड परिवर्तन दुर्लभ हैं। उदाहरण के लिए, AMD Software Optimization Guide for 10h and 12h Processors बताता है कि:
प्रीडोडिंग शुरू होता है क्योंकि एल 1 निर्देश कैश भर जाता है। Predecode जानकारी जेनरेट और निर्देश कैश के साथ संग्रहीत किया जाता है।
इंटेल Nehalem सीपीयू लूपबैक बफर सुविधाओं, और इस के अलावा सैंडी ब्रिज सीपीयू एक μop कैश The microarchitecture of Intel, AMD and VIA CPUs की सुविधा है। ध्यान दें कि ये कोड से संबंधित विशेषताएं हैं, और डेटा के संबंध में कोई प्रत्यक्ष समकक्ष नहीं है। उन्हें प्रदर्शन का लाभ होता है, और चूंकि इंटेल "सीपीयू डिजाइनरों" को उन सुविधाओं को पेश करने के लिए "प्रतिबंधित" करता है, जिसके परिणामस्वरूप बिजली की खपत में अत्यधिक वृद्धि होती है, वे संभावित रूप से कुल बिजली की खपत का लाभ भी लेते हैं।
अधिकांश CPUs में डेटा अग्रेषण नेटवर्क (अग्रेषण लोड करने के लिए स्टोर) की सुविधा होती है। कोड के संबंध में "अग्रेषण लोड करने के लिए स्टोर" नहीं है, बस इसलिए कि डेटा को डेटा से बहुत कम बार संशोधित किया जा रहा है।
कोड डेटा से अलग पैटर्न प्रदर्शित करता है।
यह कहा गया है कि, अधिकांश CPUs आजकल में एकीकृत L2 कैश है जिसमें कोड और डेटा दोनों हैं। इसका कारण यह है कि अलग-अलग एल 2 आई और एल 2 डी कैश किसी भी मापनीय प्रदर्शन लाभ प्रदान करने में असफल होने पर ट्रांजिस्टर बजट का व्यर्थ रूप से उपभोग करेंगे।
(निश्चित रूप से, अलग iCache और dCache होने का कारण कम जटिलता नहीं है क्योंकि यदि कारण जटिलता कम हो गई है तो मौजूदा CPU डिज़ाइनों में से कोई भी पाइपलाइनिंग नहीं होगी।पाइपलाइनिंग के साथ एक सीपीयू एक CPU के बिना पाइपलाइनिंग के बिना अधिक जटिल है। हम वृद्धि हुई जटिलता चाहते हैं। तथ्य यह है कि: अगला सीपीयू डिज़ाइन (आमतौर पर) पिछले डिज़ाइन की तुलना में अधिक जटिल है।)
मैं कैश नियंत्रक की जटिलता का मतलब है। – rsaxvc
यह करना है कि सीपीयू की कौन सी कार्यात्मक इकाइयां प्राथमिक रूप से उस कैश तक पहुंचती हैं। चूंकि एएलयू और एफपीयू डेटा कैश तक पहुंचते हैं जो डिकोडर और शेड्यूलर निर्देश कैश तक पहुंचते हैं, और अक्सर पाइपलाइनिंग निर्देश प्रोसेसर और निष्पादन इकाई को एक साथ काम करने की अनुमति देती है, एक सिंगल कैश का उपयोग करके इन दो घटकों के बीच विवाद पैदा होता है। उन्हें अलग करके हम कुछ लचीलापन खो देते हैं और एक साथ कैश से डेटा लाने के लिए प्रोसेसर के इन दो प्रमुख घटकों की क्षमता प्राप्त करते हैं।
एक कारण जटिलता कम हो गया है - आप एक साझा कैश को कार्यान्वित कर सकते हैं जो एक साथ कई लाइनों को पुनर्प्राप्त कर सकता है, या बस असीमित रूप से (हिट-अंडर-मिस देखें), लेकिन यह कैश नियंत्रक को और अधिक जटिल बनाता है।
एक और कारण निष्पादन स्थिरता है - यदि आपके पास आईशैच और डीसीएसी की एक ज्ञात मात्रा है, तो डेटा का कैशिंग निर्देशों की कैश प्रणाली को भूखा नहीं कर सकता है, जो एक सरल साझा कैश में हो सकता है।
और जैसा कि दान ने कहा, उन्हें अलग करने से नियंत्रक जटिलता को जोड़ने के बिना पाइपलाइनिंग आसान हो जाती है।
आम तौर पर 2 प्रकार के आर्किटेक्चर होते हैं 1. वॉन न्यूमैन आर्किटेक्चर और 2. हार्दिक वास्तुकला। हार्दिक वास्तुकला 2 अलग-अलग यादों का उपयोग करता है। आप इस आर्म पेज http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3839.html
प्रोसेसर के एमईएम और फ़ेच चरणों के साथ-साथ एक साथ एल 1 कैश (संयुक्त मान लीजिए) तक पहुंच सकते हैं, ऐसे में संघर्ष हो सकता है जिसके रूप में प्राथमिकता दी जा सकती है (प्रदर्शन बाधा बन सकती है)। इसे हल करने का एक तरीका है दो पढ़ने वाले बंदरगाहों के साथ एल 1 कैश बनाना। लेकिन बंदरगाहों की संख्या में वृद्धि कैश क्षेत्र quadratically और इसलिए वृद्धि हुई बिजली की खपत बढ़ जाती है।
इसके अलावा, अगर एल 1 कैश संयुक्त एक है तो संभावना है कि कुछ डेटा ब्लॉक निर्देश जो महत्वपूर्ण थे और के बारे में पहुँचा पाने के लिए युक्त ब्लॉक की जगह हो सकती है। इन उत्खनन और पीछा कैश मिस समग्र प्रदर्शन को चोट पहुंचा सकता है।
इसके अलावा, अधिकांश समय प्रोसेसर अनुक्रमिक रूप से निर्देश प्राप्त करता है (कुछ अपवाद जैसे लक्ष्य, कूदता इत्यादि) जो निर्देश कैश को अधिक स्थानिक इलाके देता है और इसलिए अच्छी हिट दर देता है। इसके अलावा, के रूप में अन्य उत्तर में उल्लेख किया है, शायद ही (जैसे JIT compilers के रूप में स्वयं संशोधित कोड) ICache के लिए किसी भी लेखन कर रहे हैं। तो अलग icache और dcache डिजाइन उनके उपयोग पैटर्न और लोड/स्टोर कतारों की तरह अन्य घटकों पर विचार अनुकूलित किया जा सकता है, लिखने बफ़र्स आदि
- 1. क्यों "{} \" की आवश्यकता है?
- 2. $ रूट की आवश्यकता क्यों है?
- 3. ट्विस्ट की आवश्यकता क्यों है?
- 4. प्रिंटवाइटर की आवश्यकता क्यों है?
- 5. स्कैनफ की आवश्यकता क्यों है?
- 6. क्यों वेक्टर की आवश्यकता है?
- 7. टाइपफ़ोफ़ की आवश्यकता क्यों है?
- 8. वर्चुअल मशीनों की आवश्यकता क्यों है?
- 9. क्यों vundle filetype बंद की आवश्यकता है
- 10. क्यों 'की आवश्यकता होती है' चाहिए पैकेज
- 11. हमें लक्ष्य नामस्थान की आवश्यकता क्यों है?
- 12. हमें डेटाबेस और फ़ाइल सिस्टम के लिए बी-ट्री जैसे अलग डेटास्ट्रक्चर की आवश्यकता क्यों है?
- 13. ओआरएम में इकाइयों को अलग करने और विलय करने की आवश्यकता क्यों है?
- 14. मुझे अलग-अलग DLL के रूप में SharpSvn-DB44-20-win32 और SharpSvn-Sasl21-23-win32 की आवश्यकता क्यों है?
- 15. हमें डिज़ाइन पैटर्न की आवश्यकता क्यों है
- 16. हमें strdup() की आवश्यकता क्यों है?
- 17. हमें वेब-सॉकेट की आवश्यकता क्यों है?
- 18. हमें संरचना की आवश्यकता क्यों है? (सी #)
- 19. मुझे यहां अर्धविराम की आवश्यकता क्यों है?
- 20. सत्र_ नष्ट क्यों करें() की आवश्यकता है?
- 21. मुझे इंटरफ़ेस की आवश्यकता क्यों है?
- 22. क्यों एनएस में की आवश्यकता होती है समारोह की आवश्यकता होती है
- 23. वेब को HTTP की आवश्यकता क्यों है?
- 24. हमें फ़ील्ड टैग की आवश्यकता क्यों है?
- 25. जावा: रैपर वर्गों की आवश्यकता क्यों है?
- 26. हमें "हटाएं []" ऑपरेटर की आवश्यकता क्यों है?
- 27. क्यों, आयात लॉगिंग और आयात logging.config दोनों की आवश्यकता है?
- 28. कुछ भाषाओं को बॉक्सिंग और अनबॉक्सिंग की आवश्यकता क्यों है?
- 29. मुझे मैक्स एंडपॉइंट और httpGetEnable दोनों की आवश्यकता क्यों है?
- 30. मुझे आईएलके, पीडीबी और एक्सपी फाइलों की आवश्यकता क्यों है?
एक डेटा और एक निर्देश के लिए है: अलग दरों पर दोनों हो सकता है 'मंथन', और विभिन्न उपयोग कर सकते है पैटर्न। –
[विकिपीडिया से] (http://en.wikipedia.org/wiki/CPU_cache): _ "हार्वर्ड सीपीयू के साथ उच्च प्रदर्शन के लिए निर्देश और डेटा कैश को अलग किया जा सकता है लेकिन हार्डवेयर हार्डवेयर ओवरहेड को कम करने के लिए उन्हें भी जोड़ा जा सकता है।" _ तो वे ** हमेशा ** विशिष्ट नहीं हैं। –
यहां एक मजेदार बोली है कि जेआईटी डेटा कैश के माध्यम से निर्देश लिखकर मुद्दों को बना सकता है, और जब वे निर्देशों को पुनर्प्राप्त करने का समय हो तो स्मृति/निचले साझा कैश में नहीं हैं, या निर्देश कैश में एक पुरानी निर्देश हो सकती है । आपको मैन्युअल रूप से सिंक्रनाइज़ेशन का ख्याल रखना होगा। – rsaxvc