वर्चुअल मेमोरी सपोर्ट करने के लिए प्रोसेसर के लिए MMU (मेमोरी मैनेजमेंट यूनिट) चिप आवश्यक है?


14

वर्चुअल मेमोरी सपोर्ट करने के लिए प्रोसेसर के लिए MMU (मेमोरी मैनेजमेंट यूनिट) चिप आवश्यक है?

क्या सॉफ्टवेयर में MMU कार्यक्षमता का अनुकरण करना संभव है? (मुझे पता है कि प्रदर्शन पर इसका बड़ा असर पड़ेगा।


कोई भी पूरी तरह से सक्षम कंप्यूटर किसी भी अन्य कंप्यूटर को पर्याप्त प्रदर्शन हिट के साथ अनुकरण कर सकता है। या किसी भी हार्डवेयर का अनुकरण करें। एकमात्र सवाल प्रदर्शन हिट की भयावहता है।
२०:३५ पर वैलिटी

प्रत्येक प्रोसेसर को आज एक TLB की आवश्यकता होती है, इसलिए इसमें एक अंतर्निहित MM-Unit है।
रास्टाफाइल

जवाबों:


22

कोई भी सिस्टम एमुलेटर जो एमएमयू युक्त एक प्रणाली का अनुकरण करता है, सॉफ्टवेयर में एमएमयू को प्रभावी ढंग से अनुकरण करता है, इसलिए आपके प्रश्न का उत्तर "हां" है। हालाँकि , वर्चुअल मेमोरी में मेमोरी एक्सेस कंट्रोल या कम से कम एड्रेस ट्रांसलेशन को लागू करने के कुछ तरीके की आवश्यकता होती है, इसलिए इसे या तो सीपीयू के पूर्ण सॉफ्टवेयर इम्यूलेशन की जरूरत होती है, जो सॉफ्टवेयर को नियंत्रित करता है, या इसे हार्डवेयर सहायता की आवश्यकता होती है।

तो आप किसी भी MMU के साथ एक प्रणाली का निर्माण कर सकते हैं, इसमें QEMU को पोर्ट कर सकते हैं, लापता मेमोरी को वर्चुअल मेमोरी को वास्तव में उपयोगी बनाने के लिए जोड़ सकते हैं ( जैसे , होस्ट सिस्टम पर स्वैप के लिए समर्थन जोड़ें), और QEMU में MMU की आवश्यकता वाली ऑपरेटिंग सिस्टम को चलाएं, सभी सुरक्षा के साथ आप अतिथि ऑपरेटिंग सिस्टम (QEMU बग्स को छोड़कर) में अपेक्षा करेंगे।

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

व्यवहार में, यह आमतौर पर माना जाता है कि वर्चुअल मेमोरी सपोर्ट के लिए कम से कम ऑपरेटिंग सिस्टम स्तर पर MMU की आवश्यकता होती है। जैसा कि एमएमयू-कम कर्नेल को इंगित किया गया है ? , लिनक्स कर्नेल का निर्माण संभव है ताकि यह एमएमयू के बिना सिस्टम पर चल सके, लेकिन परिणामस्वरूप कॉन्फ़िगरेशन बहुत ही असामान्य है और केवल बहुत विशिष्ट उपयोग-मामलों के लिए उपयुक्त है (विशेष रूप से कोई शत्रुतापूर्ण सॉफ़्टवेयर के साथ)। यह वर्चुअल मेमोरी (स्वैपिंग, mmap...) की आवश्यकता वाले कई परिदृश्यों का समर्थन नहीं कर सकता है ।


इसलिए वर्चुअल मशीन अनुप्रयोगों में MMU एमुलेटर घटक भी होता है?
योयो_फुन

हां - आवश्यक रूप से एक अलग घटक के रूप में नहीं, लेकिन उनके पास अनुकरण में आवश्यक समर्थन है।
स्टीफन किट

7
@ जेनिफरएंडरसन: कुछ आधुनिक सीपीयू में ऐसे फीचर्स होते हैं जो एमुलेटर (आंशिक रूप से) को एमएमयू एमएमयू को ही ऑफलोड करते हैं। उदाहरण के लिए, एमुलेटर के अंदर चलने वाला प्रोग्राम मेमोरी के कई उत्सर्जित पृष्ठों का उपयोग करेगा, मेमोरी के ये पृष्ठ निश्चित रूप से एमुलेटर द्वारा उपयोग की जाने वाली मेमोरी के पन्नों में "नेस्टेड" होते हैं। दोनों नए उच्च अंत इंटेल और एएमडी सीपीयू के पास नेस्टेड पेज टेबल के लिए समर्थन है, जो एमुलेटर को एमएमयू के भीतर ही यह बताने की अनुमति देता है, बजाय इसके (महंगा) अनुकरण करने के।
जोर्ग डब्ल्यू मित्तग

@ Jörg वास्तव में, स्पष्टीकरण के लिए धन्यवाद। अधिकांश हाइपरवेज़र्स में अभी भी कुछ स्तर के सॉफ़्टवेयर इम्यूलेशन शामिल हैं, ताकि वे अतिरिक्त हार्डवेयर समर्थन के बिना काम करेंगे। प्रश्न के "क्या यह संभव है" पहलू;
स्टीफन किट

3
@ जेनिफरएंडरसन: हां, इस कार्यक्षमता को विशेष रूप से पैरा-वर्चुअलाइजेशन के लिए पेश किया गया था। (ध्यान दें कि यह नया कुछ भी नहीं है, हार्डवेयर-असिस्टेड पैरा-वर्चुअलाइजेशन 1960 के दशक की शुरुआत से मेनफ्रेम दुनिया में मौजूद है।) हालांकि यह पता चला है, कि इसका उपयोग अन्य दिलचस्प अनुप्रयोगों के लिए भी किया जा सकता है, जैसे कि गारबेज कलेक्शन को तेज करना। अज़ुल के ज़िंग जेवीएम में सी 4 कलेक्टर एक उदाहरण के लिए)। हालाँकि, ध्यान दें, कि यह सब दोनों दिशाओं में काम करता है: उसी तरह जो वर्चुअलाइजेशन समर्थन के साथ MMUs का विस्तार प्रदर्शन अनुकूलन और वर्चुअलाइजेशन से ज्यादा कुछ नहीं है ...
Jörg W Mittag

7

यह बिल्कुल उसी पर निर्भर करता है जिसे आप वर्चुअल मेमोरी कहते हैं। एक दिलचस्प मॉडल पुराना Win16 मॉडल (पुराने विंडोज 3.x से जाना जाता है, विंडोज एनटी से जाना जाता है)। उस मॉडल में, आप के लिए किया था GlobalLockऔर GlobalUnlock, LocalLockऔर LocalUnlockकार्य करता है। ये वर्चुअल मेमोरी के सहकारी, मैनुअल प्रबंधन का एक रूप थे। जैसा कि यह (एप्लिकेशन) सॉफ्टवेयर में किया गया था, इसके लिए MMU की आवश्यकता नहीं थी। और मेमोरी इस मायने में वर्चुअल थी कि अनलॉक की गई मेमोरी को डिस्क में स्वैप किया जा सकता था।

हालांकि, Win16 मॉडल में विभिन्न प्रक्रियाओं के बीच कोई सुरक्षा नहीं है। यदि स्मृति में कोई अन्य प्रक्रिया डेटा छोड़ देती है, तो आप इसे अधिलेखित कर सकते हैं। यह मौलिक प्रतिबंध नहीं है। एसएसडी के इन दिनों के साथ, आप पूरी तरह से मेमोरी से एक नॉन-रनिंग प्रक्रिया को हटा सकते हैं, और उचित समय में ऐसा कर सकते हैं।


7

हार्डवेयर MMU होना आवश्यक नहीं है, यदि आपके पास ऐसा सॉफ़्टवेयर है जो भौतिक मेमोरी से प्रक्रियाओं को स्वैप कर सकता है ।

यह प्रारंभिक मल्टी-टास्किंग ऑपरेटिंग सिस्टम के संचालन का तरीका था। किसी भी समय स्मृति में केवल एक ही प्रक्रिया होती है, जब इसकी समय-सीमा समाप्त हो जाती है (तो आप देख सकते हैं कि यह बड़ी प्रक्रियाओं के साथ समस्याग्रस्त हो जाता है)। वर्तमान में चल रही प्रक्रिया द्वारा देखी गई मेमोरी सामग्री वैसी नहीं है जैसी किसी अन्य प्रक्रिया द्वारा देखी गई है, और प्रत्येक का पता स्थान का अपना दृष्टिकोण है।

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


2
हालांकि, यह वास्तव में आभासी स्मृति नहीं है, यह सिर्फ प्रक्रिया स्वैपिंग है ... (हमें इस प्रश्न के लिए उचित रूप से "आभासी स्मृति" को परिभाषित करने की आवश्यकता होगी!)
स्टीफन किट

प्रत्येक प्रक्रिया का पता स्थान का अपना दृष्टिकोण है - मैं उस परिभाषा को स्पष्ट करने के लिए संपादित करूँगा जिसका उपयोग मैं कर रहा हूँ।
टोबी स्पाइट

सही है, लेकिन यह सभी प्रक्रियाओं के लिए एक ही एक-से-एक मैपिंग है। (प्रक्रियाओं के दृष्टिकोण से बहुत अंतर नहीं है, इसलिए वहां कोई वास्तविक तर्क नहीं है ...)
स्टीफन किट

0

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

बुरॉग्स बी 5000 (अब यूनिसिस एमसीपी मशीन) ने मेमोरी डिस्क्रिप्टर का इस्तेमाल किया जो स्मृति सीमाओं को लागू करता है - एक सीमा के बाहर जाता है और आपका प्रोग्राम डंप हो जाता है (सीमाओं का सम्मान करना एक अच्छे समाज का आधार है, लेकिन कुछ विशेषाधिकार का दुरुपयोग करते हैं, इसलिए सीमाओं को लागू किया जाना चाहिए)।

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

इन मशीनों ने एक श्रेणीबद्ध मेमोरी मॉडल लागू किया। एमएमयू फ्लैट मेमोरी की कमियों के लिए बना प्रतीत होता है, यूजर ऑब्जेक्ट को फ्लैट मेमोरी में मैप करने की आवश्यकता होती है। JK Iliffe ने इस मॉडल के साथ ICL मशीनें भी डिजाइन की हैं:

http://www.computerconservationsociety.org/resurrection/res74.htm#f

https://en.wikipedia.org/wiki/Burroughs_large_systems

इन मशीनों और आज के अधिकांश लोगों के बीच का अंतर यह है कि वे पूरी प्रणाली वास्तुकला को संबोधित करते हैं, न कि केवल सीपीयू वास्तुकला को।

तो ऐसा लगता है कि न केवल एमएमयू आवश्यक नहीं हैं, लेकिन सिस्टम उनके बिना बेहतर हैं।


-1

अधिकांश डेस्कटॉप, लैपटॉप और सर्वर प्रोसेसर में मेमोरी-मैनेजमेंट हार्डवेयर में एक या अधिक टीएलबी शामिल होते हैं, और यह लगभग हमेशा किसी भी प्रोसेसर में मौजूद होता है जो पृष्ठांकित या खंडित वर्चुअल मेमोरी का उपयोग करता है ।

Translation_lookaside_buffer

और फिर, वर्चुअल मेमोरी के बारे में पढ़ें, और यह वास्तव में किसके लिए है। विशाल वर्चुअल एड्रेस स्पेस मुख्य विचार नहीं है। मुख्य विचार कई स्तरों पर कैशिंग / बफरिंग है।

यह सरल से बहुत दूर है, लेकिन यह टीएलबी मेमोरी कैश हार्डवेयर का एक महत्वपूर्ण टुकड़ा है कर्नेल का मिमी सबसिस्टम बनाता है (अन्यथा वीएम काफी हद तक खत्म हो जाएगा)।


वी एम =

वर्चुअल मेमोरी या वर्चुअल मशीन। बहुत अलग, बहुत जुड़ा हुआ।


तो जवाब है नहीं, MMU चिप ( मेनबोर्ड पर सीपीयू के बाहर एक अलग इकाई ) आवश्यक नहीं है।

हां, कुछ हार्डवेयर एमएमयू (सीपीयू में) उपयोगी वीएम के बारे में सोचने के लिए आवश्यक है। (यह x86 प्लेटफॉर्म के लिए इस 8086 विभाजन के साथ शुरू हुआ )

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.