2012-07-05 13 views
9

मैं थोड़ा फंस गया हूं क्योंकि मुझे कैश के "डेटा" भाग को शामिल करने वाली कुछ भी नहीं मिल सकती है, जो कुछ भी मैंने गुग किया है, वह कैश के पते के साथ 99.9% है। सवाल मैंने पूछा था के रूप में इस तरह के"डेटा बिट" क्षमता बनाम "ओवरहेड बिट" आकार?

 
Contrast the difference between "data bit" capacity and "overhead bit" size 
for the two caches. 

शब्दों है मैं इस सवाल का जवाब तो मैं वास्तविक सेट आकार और नहीं क्या पोस्ट करने के लिए नहीं जा रहा हूँ नहीं करना चाहती, मैं सिर्फ करने के लिए एक दिशा शायद एक वेबसाइट या रहा हूँ दोनों को "विपरीत" करने का एक स्पष्टीकरण। किसी भी संभावित मदद की सराहना की है!

+4

सीखने का सबसे अच्छा तरीका दिशा के लिए पूछना है और जवाब नहीं –

उत्तर

2

मुझे यकीन नहीं है कि आपने हमें इस प्रश्न के लिए पर्याप्त संदर्भ दिया है, लेकिन यहां जाता है।

कैशों को न केवल वास्तविक कैश किए गए डेटा को स्टोर करना होता है, बल्कि यह भी - डेटा के प्रत्येक टुकड़े के लिए - "इंडेक्स" जो इसका संदर्भ देता है। तो जब आप रिकॉर्ड एन को देखते हैं, तो कैश को न केवल रिकॉर्ड एन का मान रखना होता है, बल्कि एन - ताकि आप वास्तव में डेटा देख सकें। और यह इसे देखने का एक बहुत ही सरल तरीका है। कैश अन्य मेटाडाटा वैधता और पिछले उपयोग समय, आदि इंगित करने के लिए हो सकता है

उदाहरण # 1: 32-बिट पता स्थान

प्रत्येक कैश प्रविष्टि डेटा मान संग्रहीत करने के लिए में बाइट्स की एक कैश (8 बिट) के साथ साथ पता (32bits) = 40 बिट,

उदाहरण # 2: एक 32-बिट पता स्थान

प्रत्येक कैश प्रविष्टि डेटा मान संग्रहीत करने के लिए में 32-बिट शब्दों का एक कैश (32 बिट्स) प्लस पता (32 बिट्स) = 64 बिट्स,

आप देख सकते हैं कि उदाहरण # 1 में काफी अधिक ओवरहेड है।

हमेशा के रूप में, विकिपीडिया मदद कर सकता है। http://en.wikipedia.org/wiki/Cache_(computing)

+0

जब हम 32 बिट मेमोरी एड्रेस स्पेस को परिभाषित करते हैं, तो यह हमेशा 32 बाइट्स + डेटासाइज होगा? –

+0

@ उपयोगकर्ता 1260028 - ठीक है, नहीं। 32-बिट एड्रेस स्पेस में 2^32 बाइट्स == 2^30 इन्स होंगे - इसलिए आपको उस मामले में केवल 30 बिट्स की आवश्यकता हो सकती है। इस पर निर्भर करता है कि आपका कैश कैसे काम करता है। प्लस ध्वज बिट्स ... – Roddy

1

चूंकि आपने कंप्यूटर आर्किटेक्चर को टैग किया है और सी मुझे लगता है कि यह एक ऐसा कार्य है जहां आपको सी या कुछ प्रकार के कैश "सिम्युलेटर" बनाने के लिए कहा जाता है। और सवाल में "दो कैश" दो अलग-अलग प्रकार के कैशिंग (पूर्ण सहयोगी, एन-रास्ता, प्रत्यक्ष मैप किए गए ..) का संदर्भ देते हैं। उस दायरे में, सवाल आपको दो प्रकार के कैशों और मुख्य रूप से 'ओवरहेड बिट' आकार के बीच के अंतर के बारे में चर्चा करने के लिए कह रहा है, यहां कैश प्रविष्टियों (वैध बिट, ऑफ़सेट, टैग) और " डेटा बिट "कैश लाइन में संग्रहीत वास्तविक डेटा है। मुझे उम्मीद है कि यह मदद करता है।

2

कैश स्टोर डेटा, आमतौर पर एसआरएएम में डेटा सरणी की तरह, लेकिन ओवरहेड भी होता है। मुझे विशेष रूप से "डेटा बिट आकार" और "ओवरहेड बिट साइज" शब्द पसंद नहीं हैं, क्योंकि (ए) ओवरहेड है जो स्टोरेज बिट सेल नहीं है, और (बी) सभी बिट सेल समान रूप से महंगा नहीं हैं। लेकिन चलो अब उन शर्तों के साथ चलते हैं।

मेरा लेना यह है कि "ओवरहेड बिट साइज" शायद टैग बिट्स की संख्या को संदर्भित करता है जिन्हें कैश तक पहुंचने के लिए संग्रहीत करने की आवश्यकता होती है। अक्सर ये एक अलग सरणी में संग्रहीत होते हैं, एक डेटा सरणी डेटा सरणी से अलग होती है। डेटा बिट्स की संख्या की तुलना करें।

एक 32 KiB (किलोबाइट) कैश पर विचार करें, 64 बी (बाइट) कैश लाइनों के साथ:

तीन सरल उदाहरण हैं। आम तौर पर, हम पते के 0-5 बिट्स को कैश लाइन ऑफसेट होने देंगे।

32 कीबी/(64 बी/लाइन) => 2^(5 + 10)/2^6 => 2^9 => 512 कैश लाइनें।

--- ++ उदाहरण 1: प्रत्यक्ष मैप

हमें कल्पना करो कि यह एक सीधा मैप किया कैश में है। फिर हम अगली 9 बिट्स, पते के 6-14 बिट्स को कैश लाइनों की सरणी में "इंडेक्स" के रूप में ले सकते हैं।

अभी तक इतना अच्छा है। अब, टैग को समझने के लिए, हमें पूर्ण पता चौड़ाई जानना होगा। आइए हम कहते हैं कि यह 64 बिट्स है (हालांकि अधिकांश "64-बिट" मशीनें केवल 2012 तक 40 या 48 बिट्स लागू करती हैं)। किसी अन्य कैश लाइन से कैश लाइन को अलग करने के लिए जो कैश में एक ही प्रविष्टि के लिए मानचित्र करता है, हमें टैग के शेष बिट्स को स्टोर करने की आवश्यकता होती है, टैग के रूप में 15-63, 49 बिट्स बिट्स को स्टोर करने की आवश्यकता होती है।

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

ओवरहेड: डेटा के प्रत्येक 64 बी (512 बिट्स) के लिए टैग के 49 बिट्स।

कुल: * टैग या "भूमि के ऊपर": 512 * 49 बिट * डेटा बिट्स: 512 * 512 = 32KiB = 256 KiB (Kibi-बिट)।

--- ++ उदाहरण 2: 8-सैट साहचर्य

अब कल्पना करो कि कैश 8 रास्ता साहचर्य है करते हैं। इसका मतलब है कि 512 लाइनों को 512/8 = 64 सेट में विभाजित किया जाएगा, जिनमें प्रत्येक 8 लाइनें होंगी।

कैश लाइन के अंदर ऑफसेट अभी भी 0-5 बिट्स है।

हालांकि, अब हमें सेट नंबर निर्धारित करने के लिए इंडेक्स के रूप में केवल 6 बिट्स की आवश्यकता है। बिट्स 6-11।

टैग को शेष बकाया बिट्स, बिट्स 12-63, 52 बिट्स की आवश्यकता है।

तो, 812 सहयोगी कैश के लिए टैग ओवरहेड डेटा के 512 बिट्स के लिए 52 बिट्स टैग है।

कुल: * टैग: 512 * 52 बिट * डेटा: 512 Kib

प्रत्यक्ष के लिए टैग के 49 बिट्स मैप किया गया करने के लिए की तुलना करें। 8-रास्ता सेट एसोसिएटिव मूल रूप से टैग में लॉग 2 (8) और बिट्स चलाता है; आम तौर पर, टैग में एन-वे सेट एसोसिएटिव चाल छत (लॉग 2 (एन)) बिट्स सेट करते हैं।

--- ++ उदाहरण 3: पूरी तरह से साहचर्य

यह सीधा मैप किया गया से स्पेक्ट्रम के दूर अंत है। हमारे पास अभी भी प्रति कैश लाइन के 512 बिट डेटा हैं, लेकिन अब 6 बिट ऑफसेट को छोड़कर, संपूर्ण 64 बिट पता टैग है। पूरी तरह से सहयोगी के लिए टैग के 58 बिट्स, 8 बिट्स के लिए 52 बिट्स बनाम, प्रत्यक्ष मैप के लिए 49 बिट्स बनाम।

लेकिन याद रखें मैंने कहा था कि मैं "ओवरहेड बिट्स" शब्द को नापसंद करता हूं? एक पूरी तरह से सहयोगी कैश में टैग बिट्स को आम तौर पर सामान्य भंडारण बिट्स नहीं होना चाहिए, बल्कि तुलनात्मक रूप से एक्सओआर द्वार भी होना चाहिए। इस तरह के "सीएएम (सामग्री एड्रेसेबल मेमोरी)" बिट्स आमतौर पर साधारण बिट्स की तुलना में अधिक महंगे होते हैं।

--- + निष्कर्ष

तो, मुझे लगता है कि यह है कि क्या अपने शिक्षक चाहता है: टैग बिट्स बनाम डेटा बिट्स के एक सीधी तुलना। यह ओवरहेड पर निचला बाध्य है।

एन-वे सेट सेट एसोसिएटिव से पूरी तरह से सहयोगी के माध्यम से सीधे मैप किए गए स्पेक्ट्रम एक उदाहरण प्रदान करता है। लेकिन कैश डिजाइन के अन्य पहलू हैं जो ओवरहेड को प्रभावित करते हैं। उदाहरण के लिए:

  • यदि आप विभिन्न पता आकारों का उपयोग करते हैं, तो प्रतिशत ओवरहेड परिवर्तन। जैसे 32 बिट पते में डायरेक्ट मैप किए गए उदाहरण में केवल 17 बिट्स टैग होंगे, 64 बिट एड्रेस के लिए 49 बिट्स बनाम।

  • यदि आप कैश इंडेक्सिंग फ़ंक्शन बदलते हैं, तो आपको टैग आकार बदलना पड़ सकता है। उदाहरण के लिए, कैश लाइनों या कैश में सेट की प्रमुख संख्या होने के कुछ फायदे हैं, उदा। एक सिरेक्ट मैप किए गए कैश के लिए 512 की बजाय 511 लाइनें। इस तरह के प्राइम नंबरों ने अनुनाद की समस्याओं को कम कर दिया है। लेकिन बस किया, उन्हें टैग चौड़ाई को पूर्ण चौड़ाई 58 बिट्स में बढ़ाने की आवश्यकता है।

  • संचरित कैश जैसी योजनाएं टैग बिट्स के कुछ हिस्सों को साझा करने की अनुमति देती हैं।

और इसी तरह।

एक ट्यूटोरियल वेबसाइट के लिए के रूप में:

  • माफ करना, मैं इस तरह के शुरुआत सामग्री के लिए एक के बारे में पता नहीं है। लेकिन मैं कई विश्वविद्यालयों से कक्षा नोट्स के लिए Google होगा।

  • मेरी वेबसाइट, http://comp-arch.net, कंप्यूटर आर्किटेक्चर में उन्नत विषयों को शामिल करता है। लेकिन comp.arch पर रखने के लिए इस तरह की चीज बहुत बुनियादी, बहुत प्राथमिक है। हालांकि मुझे लगता है कि मुझे उन्नत विषयों पर जाने से पहले मूल बातें के कुछ सरल स्पष्टीकरण लिखना चाहिए। कभी-कभी मैं यहां ऐसे ट्यूटोरियल लिखता हूं, लेकिन मैंने उन्हें एकत्र नहीं किया है।

  • यूएसईनेट न्यूज ग्रुप comp.arch उपयोगी हो सकता है।

--- + स्टैक ओवरफ्लो पर प्रोग्रामर के लिए यह क्यों मायने रखता है?

यह मुख्य रूप से एक हार्डवेयर विषय है।

लेकिन प्रोग्रामर ट्यूनिंग कोड को सर्वश्रेष्ठ प्रदर्शन प्राप्त करने के लिए इस तरह की चीजों को समझने की आवश्यकता है।

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