2012-01-03 9 views
18

क्या कोई बता सकता है कि एक अलग निर्देश कैश और डेटा कैश होने से हमें क्या लाभ होता है। इस बारे में समझाए गए एक अच्छे लिंक के लिए कोई भी पॉइंटर्स भी सराहना की जाएगी।अलग आईशैच और डीसीएके की आवश्यकता क्यों है

+1

एक डेटा और एक निर्देश के लिए है: अलग दरों पर दोनों हो सकता है 'मंथन', और विभिन्न उपयोग कर सकते है पैटर्न। –

+2

[विकिपीडिया से] (http://en.wikipedia.org/wiki/CPU_cache): _ "हार्वर्ड सीपीयू के साथ उच्च प्रदर्शन के लिए निर्देश और डेटा कैश को अलग किया जा सकता है लेकिन हार्डवेयर हार्डवेयर ओवरहेड को कम करने के लिए उन्हें भी जोड़ा जा सकता है।" _ तो वे ** हमेशा ** विशिष्ट नहीं हैं। –

+1

यहां एक मजेदार बोली है कि जेआईटी डेटा कैश के माध्यम से निर्देश लिखकर मुद्दों को बना सकता है, और जब वे निर्देशों को पुनर्प्राप्त करने का समय हो तो स्मृति/निचले साझा कैश में नहीं हैं, या निर्देश कैश में एक पुरानी निर्देश हो सकती है । आपको मैन्युअल रूप से सिंक्रनाइज़ेशन का ख्याल रखना होगा। – rsaxvc

उत्तर

18

मुख्य कारण यह है: प्रदर्शन। एक अन्य कारण बिजली की खपत है।

पृथक डीसीएसी और आईकैच समानांतर में निर्देश और डेटा लाने के लिए संभव बनाता है।

निर्देश और डेटा के विभिन्न पहुंच पैटर्न हैं।

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 के बिना पाइपलाइनिंग के बिना अधिक जटिल है। हम वृद्धि हुई जटिलता चाहते हैं। तथ्य यह है कि: अगला सीपीयू डिज़ाइन (आमतौर पर) पिछले डिज़ाइन की तुलना में अधिक जटिल है।)

+0

मैं कैश नियंत्रक की जटिलता का मतलब है। – rsaxvc

4

यह करना है कि सीपीयू की कौन सी कार्यात्मक इकाइयां प्राथमिक रूप से उस कैश तक पहुंचती हैं। चूंकि एएलयू और एफपीयू डेटा कैश तक पहुंचते हैं जो डिकोडर और शेड्यूलर निर्देश कैश तक पहुंचते हैं, और अक्सर पाइपलाइनिंग निर्देश प्रोसेसर और निष्पादन इकाई को एक साथ काम करने की अनुमति देती है, एक सिंगल कैश का उपयोग करके इन दो घटकों के बीच विवाद पैदा होता है। उन्हें अलग करके हम कुछ लचीलापन खो देते हैं और एक साथ कैश से डेटा लाने के लिए प्रोसेसर के इन दो प्रमुख घटकों की क्षमता प्राप्त करते हैं।

2

एक कारण जटिलता कम हो गया है - आप एक साझा कैश को कार्यान्वित कर सकते हैं जो एक साथ कई लाइनों को पुनर्प्राप्त कर सकता है, या बस असीमित रूप से (हिट-अंडर-मिस देखें), लेकिन यह कैश नियंत्रक को और अधिक जटिल बनाता है।

एक और कारण निष्पादन स्थिरता है - यदि आपके पास आईशैच और डीसीएसी की एक ज्ञात मात्रा है, तो डेटा का कैशिंग निर्देशों की कैश प्रणाली को भूखा नहीं कर सकता है, जो एक सरल साझा कैश में हो सकता है।

और जैसा कि दान ने कहा, उन्हें अलग करने से नियंत्रक जटिलता को जोड़ने के बिना पाइपलाइनिंग आसान हो जाती है।

0

आम तौर पर 2 प्रकार के आर्किटेक्चर होते हैं 1. वॉन न्यूमैन आर्किटेक्चर और 2. हार्दिक वास्तुकला। हार्दिक वास्तुकला 2 अलग-अलग यादों का उपयोग करता है। आप इस आर्म पेज http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3839.html

1

प्रोसेसर के एमईएम और फ़ेच चरणों के साथ-साथ एक साथ एल 1 कैश (संयुक्त मान लीजिए) तक पहुंच सकते हैं, ऐसे में संघर्ष हो सकता है जिसके रूप में प्राथमिकता दी जा सकती है (प्रदर्शन बाधा बन सकती है)। इसे हल करने का एक तरीका है दो पढ़ने वाले बंदरगाहों के साथ एल 1 कैश बनाना। लेकिन बंदरगाहों की संख्या में वृद्धि कैश क्षेत्र quadratically और इसलिए वृद्धि हुई बिजली की खपत बढ़ जाती है।

इसके अलावा, अगर एल 1 कैश संयुक्त एक है तो संभावना है कि कुछ डेटा ब्लॉक निर्देश जो महत्वपूर्ण थे और के बारे में पहुँचा पाने के लिए युक्त ब्लॉक की जगह हो सकती है। इन उत्खनन और पीछा कैश मिस समग्र प्रदर्शन को चोट पहुंचा सकता है।

इसके अलावा, अधिकांश समय प्रोसेसर अनुक्रमिक रूप से निर्देश प्राप्त करता है (कुछ अपवाद जैसे लक्ष्य, कूदता इत्यादि) जो निर्देश कैश को अधिक स्थानिक इलाके देता है और इसलिए अच्छी हिट दर देता है। इसके अलावा, के रूप में अन्य उत्तर में उल्लेख किया है, शायद ही (जैसे JIT compilers के रूप में स्वयं संशोधित कोड) ICache के लिए किसी भी लेखन कर रहे हैं। तो अलग icache और dcache डिजाइन उनके उपयोग पैटर्न और लोड/स्टोर कतारों की तरह अन्य घटकों पर विचार अनुकूलित किया जा सकता है, लिखने बफ़र्स आदि

संबंधित मुद्दे