फ्लैट मेमोरी मॉडल

फ्लैट मेमोरी मॉडल या लीनियर मेमोरी मॉडल एक मेमोरी एड्रेसिंग प्रतिमान को संदर्भित करता है जिसमें मेमोरी प्रोग्राम को एकल सन्निहित एड्रेस स्पेस के रूप में दिखाई देती है। सीपीयू सीधे (और एड्रेसिंग मोड या सिक्वेंशियल एड्रेसिंग मोड्स) मेमोरी को किसी भी प्रकार के मेमोरी सेगमेंटेशन या पेजिंग स्कीम का सहारा लिए बिना सभी उपलब्ध कंप्यूटर मेमोरी लोकेशन को एड्रेस कर सकता है।

ऑपरेटिंग प्रणाली की कार्यक्षमता, संसाधन सुरक्षा, कंप्यूटर मल्टीटास्किंग की सुविधा के लिए या प्रोसेसर के भौतिक एड्रेस स्पेस द्वारा लगाई गई सीमाओं से परे मेमोरी क्षमता को बढ़ाने के लिए मेमोरी प्रबंधन और सीपीयू कैश या एड्रेस ट्रांसलेशन अभी भी फ्लैट मेमोरी मॉडल के शीर्ष पर प्रयुक्त किया जा सकता है। किंतु फ्लैट मेमोरी मॉडल की प्रमुख विशेषता यह है कि संपूर्ण मेमोरी स्पेस रैखिक, अनुक्रमिक और सन्निहित है।

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

एक सामान्य प्रयोजन के कंप्यूटर प्रणाली में, जिसमें मल्टीटास्किंग, संसाधन आवंटन और सुरक्षा की आवश्यकता होती है, फ्लैट मेमोरी प्रणाली को कुछ मेमोरी मैनेजमेंट स्कीम द्वारा संवर्धित किया जाना चाहिए, जो सामान्यतः समर्पित हार्डवेयर (सीपीयू के अंदर या बाहर) और सॉफ्टवेयर के संयोजन के माध्यम से ऑपरेटिंग प्रणाली में कार्यान्वित किया जाता है। फ्लैट मेमोरी मॉडल (भौतिक एड्रेसिंग स्तर पर) अभी भी इस प्रकार के मेमोरी प्रबंधन को प्रयुक्त करने के लिए सबसे बड़ा लचीलापन प्रदान करता है।

अधिकांश प्रोसेसर आर्किटेक्चर फ्लैट मेमोरी डिज़ाइन को प्रयुक्त करते हैं, जिसमें सभी प्रारंभिक 8 बिट प्रोसेसर, मोटोरोला 68000 श्रृंखला आदि सम्मिलित हैं। अपवाद मूल इंटेल 8086 था, इंटेल का पहला 16-बिट माइक्रोप्रोसेसर, जिसने कच्चे खंडित मेमोरी मॉडल को प्रयुक्त किया जिसने अनुमति दी सभी पतों को 16-बिट से अधिक तक विस्तारित करने की लागत के बिना 64 KiB से अधिक मेमोरी तक पहुंचे।

मेमोरी मॉडल
अधिकांश आधुनिक मेमोरी मॉडल तीन श्रेणियों में से एक में आते हैं:

फ्लैट मेमोरी मॉडल

 * प्रोग्रामर, साफ डिजाइन के लिए सरल इंटरफ़ेस
 * एक समान पहुंच गति के कारण सबसे अधिक लचीलापन (विभाजित मेमोरी पेज स्विच सामान्यतः अन्य पेजों की लंबी पहुंच के कारण भिन्न विलंबता उत्पन्न करते हैं, या तो बदलते पेज में अतिरिक्त सीपीयू तर्क, या हार्डवेयर आवश्यकताओं के कारण)
 * सरल नियंत्रक अनुप्रयोगों के लिए न्यूनतम हार्डवेयर और सीपीयू रियल एस्टेट
 * अधिकतम निष्पादन गति, बस सीपीयू या तर्क के कारण कोई विलंबता नहीं है।
 * सामान्य कंप्यूटिंग या मल्टीटास्किंग ऑपरेटिंग प्रणाली के लिए उपयुक्त नहीं है जब तक कि बढ़ाया न जाए अतिरिक्त मेमोरी प्रबंधन हार्डवेयर/सॉफ्टवेयर के साथ; किंतु आधुनिक जटिल निर्देश सेट कंप्यूटर प्रोसेसर में लगभग सदैव ऐसा ही होता है, जो फ्लैट मेमोरी मॉडल पर उन्नत मेमोरी प्रबंधन और सुरक्षा तकनीक को प्रयुक्त करता है। लिनक्स उदा. फ्लैट मेमोरी मॉडल का उपयोग करता है, x86 मेमोरी सेगमेंटेशन या प्रैक्टिस देखें।

पेजेड मेमोरी मॉडल

 * मल्टीटास्किंग, सामान्य ऑपरेटिंग प्रणाली डिज़ाइन, संसाधन सुरक्षा और आवंटन के लिए उपयुक्त
 * वर्चुअल मेमोरी कार्यान्वयन के लिए उपयुक्त
 * अधिक सीपीयू रियल एस्टेट, कुछ कम गति
 * कार्यक्रम के लिए और अधिक जटिल
 * कठोर पेज सीमाएँ, सदैव सबसे अधिक मेमोरी कुशल नहीं
 * पेंटियम प्रो में फिजिकल एड्रेस एक्सटेंशन (पीएई) और बाद में x86 सीपीयू का उपयोग करते समय इस मेमोरी मॉडल की आवश्यकता होती है जिससे 4GB से अधिक भौतिक मेमोरी को संबोधित करने के लिए 36-बिट भौतिक पतों का समर्थन किया जा सकता है ।

x86 सेगमेंटेड मेमोरी मॉडल

 * पेजेड मेमोरी के समान, किंतु पेजिंग दो अपेक्षाकृत स्थानांतरित रजिस्टरों के निहित जोड़ से प्राप्त की जाती है: खंड: ऑफसेट
 * परिवर्तनीय पेज सीमाएँ, पेजेड मेमोरी मॉडल की तुलना में अधिक कुशल और लचीली
 * प्रोग्रामर के दृष्टिकोण से अधिक जटिल और विचित्र
 * कंपाइलर्स के लिए और अधिक कठिन
 * पेज ओवरलैप / नष्ट संसाधन सुरक्षा और अलग कर सकते हैं
 * मैनी टू वन एड्रेस ट्रांसलेशन पत्राचार: कई खंड: ऑफसेट संयोजन एक ही भौतिक पते पर हल होते हैं
 * प्रोग्रामिंग त्रुटियों की अधिक संभावना
 * मूल इंटेल 8086, 8088, 80186, 80286 में प्रयुक्त किया गया, और 80386 और बाद की सभी x86 मशीनों द्वारा वर्तमान पेंटियम और कोर 2 प्रोसेसर के माध्यम से समर्थित है। यह मेमोरी मॉडल तब से x86 मशीनों में बना हुआ है, जो अब मल्टी-मोड ऑपरेशन प्रदान करते हैं और संभवतः ही कभी संगत सेगमेंट मोड में कार्य करते हैं। विवरण के लिए x86 मेमोरी सेगमेंटेशन देखें।

x86 आर्किटेक्चर के अन्दर, वास्तविक मोड (या अनुकरण) में कार्य करते समय, भौतिक पते की गणना इस प्रकार की जाती है:
 * पता = 16 × खंड + ऑफसेट

(अर्थात, 16-बिट सेगमेंट रजिस्टर को 4 बिट्स से स्थानांतरित कर दिया जाता है और 16-बिट ऑफ़सेट में जोड़ा जाता है, जिसके परिणामस्वरूप 20-बिट पता होता है।)

यह भी देखें

 * एड्रेस स्पेस
 * मेमोरी मॉडल (बहुविकल्पी)