2012-03-22 10 views
7

मैंने इस विषय पर केवल दो लेख पढ़े हैं जो असंगतता असंगत प्रदान करते हैं, इसलिए मैं जानना चाहता हूं कि कौन सा सही है। शायद दोनों सही हैं, लेकिन किस संदर्भ में?कैश नियंत्रक कितने बाइट्स मुख्य स्मृति से L2 कैश में एक समय लाता है?

first एक कहती है कि हम एक पृष्ठ आकार एक समय

कैश नियंत्रक हमेशा के अवलोकन है स्मृति पदों लोड और है कि बस किया गया है स्मृति स्थिति के बाद कई स्मृति पदों से डेटा लोड किया जा रहा लाने पढ़ें।

आपको एक वास्तविक उदाहरण देने के लिए, यदि सीपीयू लोड किए गए डेटा को 1,000 में संग्रहीत किया गया है, तो कैश नियंत्रक पता 1,000 के बाद "n" पते से डेटा लोड करेगा। यह संख्या "एन" पृष्ठ कहा जाता है; यदि कोई दिया गया प्रोसेसर 4 केबी पृष्ठों (जो कि एक सामान्य मान है) के साथ काम कर रहा है, तो यह लोड होने वाली वर्तमान मेमोरी स्थिति के नीचे 4,096 पते से डेटा लोड करेगा (हमारे उदाहरण में पता 1,000)। निम्नलिखित चित्र में, हम इस उदाहरण को चित्रित करते हैं।

enter image description here

second एक कहती है कि हम sizeof (कैश पंक्ति) + sizeof (prefetcher) एक समय लाने

तो हम संक्षेप में प्रस्तुत कर सकते हैं कि स्मृति कैश के रूप में काम करता है:

  1. सीपीयू "ए" पते में संग्रहीत निर्देश/डेटा मांगता है।
  2. चूंकि पता "ए" से सामग्री मेमोरी कैश के अंदर नहीं है, इसलिए सीपीयू को इसे सीधे राम से प्राप्त करना है।
  3. कैश नियंत्रक स्मृति कैश में "ए" पते से शुरू होने वाली रेखा (आमतौर पर 64 बाइट्स) लोड करता है। सीपीयू से अनुरोध किया गया यह अधिक डेटा है, इसलिए यदि प्रोग्राम अनुक्रमिक रूप से (यानी पता + 1 के लिए पूछता है) चलाता है तो अगला निर्देश/डेटा सीपीयू पूछेगा मेमोरी कैश में पहले ही लोड हो जाएगा।
  4. प्रीफ़ेचर नामक एक सर्किट इस लाइन के बाद स्थित अधिक डेटा लोड करता है, यानी को कोड से + 64 पर कैश में सामग्री लोड करना प्रारंभ होता है। आपको एक वास्तविक उदाहरण देने के लिए, पेंटियम 4 सीपीयू में 256-बाइट प्रीफ़ेचर है, इसलिए यह पहले से ही कैश में लोड होने वाली लाइन के बाद अगले 256 बाइट लोड करता है।
+0

यह एक पूर्ण पृष्ठ नहीं हो सकता है। वर्तमान प्रोसेसर 32-बिट मोड में 4 एमबी तक के पेज और 64-बिट मोड में 1 जीबी का समर्थन कर सकते हैं। Drepper के मेमोरी पेपर के लिंक के लिए – ughoavgfhw

उत्तर

9

पूरी तरह से हार्डवेयर कार्यान्वयन निर्भर। कुछ कार्यान्वयन एक समय में मुख्य स्मृति से एक पंक्ति को — पर लोड करते हैं और कैश लाइन आकार विभिन्न प्रोसेसर के बीच बहुत भिन्न होते हैं। मैंने 64 बाइट्स से 256 बाइट तक लाइन आकारों को देखा है। असल में "कैश लाइन" का आकार क्या है कि जब सीपीयू मुख्य रैम से स्मृति का अनुरोध करता है, तो यह एक समय में एन बाइट्स करता है। तो यदि n 64 बाइट्स है, और आप 0x1004 पर 4-बाइट पूर्णांक लोड करते हैं, तो एमएमयू वास्तव में बस में 64 बाइट्स भेज देगा, सभी पते 0x1000 से 0x1040 तक भेजे जाएंगे। डेटा का यह पूरा हिस्सा डेटा कैश में एक पंक्ति के रूप में संग्रहीत किया जाएगा।

कुछ एमएमयू बस प्रति अनुरोध में एकाधिक कैश लाइन ला सकते हैं - ताकि एक मशीन पर 0x1000 पते पर अनुरोध कर सकें जिसमें 64 बाइट कैश हैं, वास्तव में 0x1000 से 0x1100 तक चार लाइनें लोड करते हैं।Some systems आपको इसे स्पष्ट कैश प्रीफेच या डीएमए ऑपकोड के साथ स्पष्ट रूप से करने दें।

हालांकि, आपके पहले लिंक के माध्यम से आलेख पूरी तरह से गलत है। यह एक हार्डवेयर cache line के साथ एक ओएस memory page के आकार को भ्रमित करता है। ये पूरी तरह से अलग अवधारणाएं हैं। पहला वर्चुअल एड्रेस स्पेस का न्यूनतम आकार है जिसे ओएस एक बार आवंटित करेगा। उत्तरार्द्ध एक विस्तार है कि सीपीयू मुख्य रैम से कैसे बात करता है।

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

कंप्यूटर मेमोरी के बारे में सब कुछ सीखने के लिए एक अच्छी जगह और क्यों कैश उनके काम करते हैं, Ulrich Drepper का पेपर, What Every Programmer Should Know About Memory है।

+0

+1। लेकिन, पृष्ठ का आकार निश्चित रूप से एक एचडब्ल्यू सुविधा है और ओएस इसके लिए मनमाना मूल्य नहीं चुन सकता है (उदाहरण के लिए, पेज टेबल कैसे काम करते हैं)। – janneb

+0

@janneb यह उत्तर कैश fetch, डी-ईआरएटी पृष्ठ आकार, टीएलबी आकार, और सॉफ्टवेयर वीएमईएम तालिका आकार के बीच अंतर पर चर्चा करने के लिए सही जगह की तरह प्रतीत नहीं होता था। लेकिन लंबी कहानी छोटी है, कई कार्यान्वयन टीएलबी में परिवर्तनीय पृष्ठ आकार की अनुमति देते हैं। मेरे पास एक डेस्क है जो मेरी मेज पर बैठी है जो स्मृति को 4kb, 64kb, या 4mb पृष्ठों के रूप में आवंटित करने की अनुमति देती है। – Crashworks

+0

निश्चित रूप से नहीं, लेकिन जैसा कि यह अभी है, आपके उत्तर को पढ़कर एक गलत समझ हो सकती है कि मेमोरी पेज केवल ओएस कार्यान्वयन के विवरण हैं, जबकि हकीकत में यह गहराई से जुड़ा हुआ है कि एचडब्ल्यू वर्चुअल-> भौतिक पता लुकअप कैसे करता है। – janneb

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