बैंक स्विचिंग

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

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

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

तकनीक
बैंक स्विचिंग को कुछ रजिस्टर के साथ प्रोसेसर निर्देशों के पता स्थान को बढ़ाने का एक तरीका माना जा सकता है। उदाहरण:
 * 12 बिट एड्रेस वाले प्रोसेसर के लिए फॉलो-ऑन सिस्टम में 15 बिट एड्रेस बस होती है, लेकिन एड्रेस बस में हाई थ्री बिट्स को सीधे निर्दिष्ट करने का कोई तरीका नहीं है। उन बिट्स को प्रदान करने के लिए आंतरिक बैंक रजिस्टरों का उपयोग किया जा सकता है।
 * 15 बिट एड्रेस वाले प्रोसेसर के लिए फॉलो-ऑन सिस्टम में 18 बिट एड्रेस बस होती है, लेकिन लीगेसी निर्देशों में केवल 15 एड्रेस बिट्स होते हैं; आंतरिक बैंक रजिस्टरों का उपयोग उन बिट्स को प्रदान करने के लिए किया जा सकता है। कुछ नए निर्देश स्पष्ट रूप से बैंक को निर्दिष्ट कर सकते हैं।


 * 16-बिट बाहरी एड्रेस बस वाला एक प्रोसेसर केवल 216 = 65536 मेमोरी स्थानों को संबोधित कर सकता है। यदि सिस्टम में एक बाहरी लैच जोड़ा जाता है, तो इसका उपयोग यह नियंत्रित करने के लिए किया जा सकता है कि मेमोरी डिवाइस के दो सेटों में से कौन से 65536 पते वाले प्रत्येक को एक्सेस किया जा सकता है। लैच बिट को सेट या साफ़ करके प्रोसेसर बदल सकता है कि कौन सा सेट वर्तमान उपयोग में है। लैच को प्रोसेसर द्वारा कई तरीकों से सेट या साफ़ किया जा सकता है; एक विशेष मेमोरी एड्रेस को डिकोड किया जा सकता है और लैच को नियंत्रित करने के लिए उपयोग किया जा सकता है, या, अलग-अलग-डिकोडेड I/O एड्रेस वाले प्रोसेसर में, आउटपुट एड्रेस को डिकोड किया जा सकता है। कई बैंक-स्विचिंग कंट्रोल बिट्स को एक रजिस्टर में इकट्ठा किया जा सकता है, रजिस्टर में प्रत्येक अतिरिक्त बिट के साथ उपलब्ध मेमोरी स्पेस को लगभग दोगुना कर देता है। चूंकि बाहरी बैंक-चयन लैच (या रजिस्टर) प्रोसेसर के कार्यक्रम गणकसे सीधे जुड़ा नहीं है, प्रोग्राम काउंटर ओवरफ्लो होने पर यह स्वचालित रूप से स्थिति नहीं बदलता है; इसका बाहरी लैच द्वारा पता नहीं लगाया जा सकता है क्योंकि प्रोग्राम काउंटर प्रोसेसर का एक आंतरिक रजिस्टर है। अतिरिक्त मेमोरी प्रोग्राम के लिए मूल रूप से उपलब्ध नहीं है। प्रोसेसर के आंतरिक रजिस्टर अपनी मूल लंबाई पर बने रहते हैं, इसलिए प्रोसेसर बैंक द्वारा स्विच की गई सभी मेमोरी को सीधे नहीं फैला सकता है, उदाहरण के लिए, एक आंतरिक रजिस्टर को बढ़ाकर। इसके बजाय प्रोसेसर को बड़ी मेमोरी ऑब्जेक्ट्स तक पहुंचने के लिए स्पष्ट रूप से बैंक-स्विचिंग ऑपरेशन करना चाहिए। अन्य सीमाएँ हैं। आम तौर पर एक बैंक-स्विचिंग सिस्टम में प्रोग्राम मेमोरी का एक ब्लॉक होगा जो सभी बैंकों के लिए सामान्य है; कोई फर्क नहीं पड़ता कि वर्तमान में कौन सा बैंक सक्रिय है, पता स्थान के हिस्से के लिए स्मृति स्थानके केवल एक सेट का उपयोग किया जाएगा। इस क्षेत्र का उपयोग कोड रखने के लिए किया जाएगा जो बैंकों के बीच संक्रमण का प्रबंधन करता है, और इंटरप्ट को संसाधित करने के लिए भी।

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

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

माइक्रो कंप्यूटर का उपयोग
16-बिट एड्रेसिंग ( 8080,  Z80 ,  6502 ,  6809 , आदि) वाले प्रोसेसर जो आमतौर पर शुरुआती  विडियो गेम कंसोल  और  गृह कम्प्यूटर  में उपयोग किए जाते हैं, केवल 64  किलोबाइट  को सीधे संबोधित कर सकते हैं। अधिक मेमोरी वाले सिस्टम को पता स्थान को कई ब्लॉकों में विभाजित करना पड़ता था जिन्हें गतिशील रूप से बड़े पता स्थान के भागों में मैप किया जा सकता था। मेमोरी को 64 KB तक के अलग-अलग बैंकों में व्यवस्थित करके इस बड़े एड्रेस स्पेस को प्राप्त करने के लिए बैंक स्विचिंग का उपयोग किया गया था। विभिन्न आकारों के ब्लॉकों को बैंक के चुनिंदा रजिस्टरों या इसी तरह के तंत्र के माध्यम से अंदर और बाहर स्विच किया गया था। Cromemco बैंक स्विचिंग का उपयोग करने वाला पहला माइक्रो कंप्यूटर निर्माता था, जो अपने सिस्टम में 64 KB के 8 बैंकों का समर्थन करता था।

बैंक स्विचिंग का उपयोग करते समय कुछ सावधानी बरतने की आवश्यकता थी ताकि सबरूटीन  कॉल, इंटरप्ट,  कॉल स्टैक  आदि के संचालन को दूषित न किया जा सके। जबकि सीपीयू से अस्थायी रूप से स्विच की गई मेमोरी की सामग्री प्रोसेसर के लिए दुर्गम थी, इसका उपयोग अन्य हार्डवेयर द्वारा किया जा सकता है, जैसे कि वीडियो डिस्प्ले, डायरेक्ट मेमोरी एक्सेस, इनपुट / आउटपुट | आई / ओ डिवाइस, आदि। सीपी / एम प्लस | CP/M-80 3.0 1983 में जारी किया गया था और Z80-आधारित  TRS-80 s TRS-80 मॉडल 4 और TRS-80 मॉडल II समर्थित बैंक स्विचिंग को 64 KB से अधिक मेमोरी के उपयोग की अनुमति देने के लिए जो 8080 या Z80 प्रोसेसर कर सकता था पता।

बैंक स्विचिंग ने अतिरिक्त मेमोरी और फ़ंक्शंस को कंप्यूटर डिज़ाइन में जोड़ने की अनुमति दी, बिना खर्च और एक व्यापक पता बस  के साथ प्रोसेसर पर स्विच करने की असंगति के बिना। उदाहरण के लिए,  कमोडोर 64  ने पूर्ण 64 KB RAM की अनुमति देने के लिए बैंक स्विचिंग का उपयोग किया और अभी भी ROM और मेमोरी-मैप्ड I/O के लिए भी प्रदान करता है।  अटारी 8-बिट परिवार  अपने दो प्रोसेसर (6502 और एएनटीआईसी) को अलग-अलग रैम बैंकों तक पहुंचने की इजाजत दे सकता है, जिससे प्रोग्रामर को सीपीयू को दिखाई देने वाली मेमोरी का उपयोग किए बिना बड़े प्लेफील्ड और अन्य ग्राफिक ऑब्जेक्ट बनाने की इजाजत मिलती है।

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

आईबीएम पीसी
1985 में, लोटस सॉफ्टवेयर  और  इंटेल  कंपनियों ने  एमएस-डॉस  चलाने वाले  आईबीएम पीसी संगत  कंप्यूटरों में उपयोग के लिए  विस्तारित मेमोरी  स्पेसिफिकेशन (ईएमएस) 3.0 की शुरुआत की।  माइक्रोसॉफ्ट  1986 में संस्करण 3.2 और 1987 में 4.0 के लिए शामिल हुआ और विनिर्देश लोटस-इंटेल-माइक्रोसॉफ्ट ईएमएस या एलआईएम ईएमएस के रूप में जाना जाने लगा।   यह बैंक स्विचिंग तकनीक का एक रूप है जो मूल आईबीएम पीसी आर्किटेक्चर द्वारा परिभाषित 640 केबी से अधिक रैम की अनुमति देता है, इसे ऊपरी मेमोरी क्षेत्र में स्थित 64 केबी विंडो में टुकड़े-टुकड़े करके प्रदर्शित करता है। 64 KB को चार 16 KB पृष्ठों में विभाजित किया गया है, जिनमें से प्रत्येक को स्वतंत्र रूप से स्विच किया जा सकता है। कुछ  कंप्यूटर खेल  ने इसका उपयोग किया, और हालांकि ईएमएस अप्रचलित है, यह सुविधा आजकल  माइक्रोसॉफ़्ट विंडोज़   ऑपरेटिंग सिस्टम  द्वारा उन प्रोग्रामों के साथ पश्च संगतता प्रदान करने के लिए एमुलेटर है।

बाद में विस्तारित [[ विस्तारित मेमोरी विशिष्टता  ]]XMS), जो अब अप्रचलित भी है, सिद्धांत रूप में, 1 एमबी से ऊपर की मेमोरी के लिए बैंक स्विचिंग का अनुकरण करने के लिए एक मानक है (जिसे विस्तारित मेमोरी कहा जाता है), जो कि x 86  प्रोसेसर के  वास्तविक मोड  में सीधे संबोधित करने योग्य नहीं है जिसमें MS -डॉस चलता है। एक्सएमएस विस्तारित मेमोरी को पारंपरिक मेमोरी में कहीं भी कॉपी करने की अनुमति देता है, इसलिए बैंकों की सीमाएं तय नहीं होती हैं, लेकिन हर दूसरे तरीके से यह विस्तारित मेमोरी स्पेसिफिकेशन के बैंक स्विचिंग की तरह काम करता है, एक प्रोग्राम के परिप्रेक्ष्य से जो इसका उपयोग करता है। MS-DOS के बाद के संस्करणों (लगभग 5.0 संस्करण से शुरू) में EMM386 ड्राइवर शामिल था, जो XMS का उपयोग करके EMS मेमोरी का अनुकरण करता है, प्रोग्राम को विस्तारित मेमोरी का उपयोग करने की अनुमति देता है, भले ही वे EMS के लिए लिखे गए हों। Microsoft Windows उन प्रोग्रामों के लिए भी XMS का अनुकरण करता है, जिन्हें इसकी आवश्यकता होती है।

वीडियो गेम कंसोल
कुछ वीडियो गेम कंसोल में बैंक स्विचिंग का भी इस्तेमाल किया गया था। उदाहरण के लिए, अटारी 2600, केवल 4 KB ROM को संबोधित कर सकता था, इसलिए बाद में 2600  खेल कारतूस  में अधिक ROM के उपयोग की अनुमति देने के लिए अपने स्वयं के बैंक स्विचिंग हार्डवेयर शामिल थे और इस प्रकार अधिक परिष्कृत गेम (अधिक प्रोग्राम कोड के माध्यम से और समान रूप से) की अनुमति देते थे। महत्वपूर्ण, बड़ी मात्रा में गेम डेटा जैसे ग्राफिक्स और विभिन्न गेम चरण)।  निन्टेंडो एंटरटेनमेंट सिस्टम  में एक संशोधित  एमओएस प्रौद्योगिकी 6502  है, लेकिन इसके कारतूस में कभी-कभी एक  मेगाबिट्स  या अधिक रोम होता है, जिसे बैंक स्विचिंग के माध्यम से संबोधित किया जाता है जिसे  मल्टी-मेमोरी कंट्रोलर  कहा जाता है।  खेल का लड़का  कार्ट्रिज ने एमबीसी (मेमोरी बैंक कंट्रोलर) नामक एक चिप का इस्तेमाल किया, जो न केवल रॉम बैंक स्विचिंग की पेशकश करता है, बल्कि कार्ट्रिज  स्टेटिक रैंडम-एक्सेस मेमोरी  बैंक स्विचिंग और यहां तक ​​​​कि  अवरक्त  या रंबल मोटर्स जैसे बाह्य उपकरणों तक पहुंच प्रदान करता है। बैंक स्विचिंग अभी भी बाद के गेम सिस्टम पर इस्तेमाल किया जा रहा था। कई सेगा  मेगा ड्राइव  कार्ट्रिज, जैसे  सुपर स्ट्रीट फाइटर II  आकार में 4 एमबी से अधिक थे और इस तकनीक के उपयोग की आवश्यकता थी (4 एमबी अधिकतम पता आकार था)। गेमपार्क होल्डिंग्स से GP2X  हैंडहेल्ड दूसरे प्रोसेसर के लिए स्टार्ट एड्रेस (या मेमोरी ऑफ़सेट) को नियंत्रित करने के लिए बैंक स्विचिंग का उपयोग करता है।

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

वैकल्पिक और उत्तराधिकारी तकनीक
बाद में कई 16-बिट|16-बिट सिस्टम में मेमोरी खंड  द्वारा बैंक स्विचिंग को हटा दिया गया, जिसने बदले में मेमोरी प्रबंधन इकाइयों को पेजिंग करने का रास्ता दिया। हालांकि, एम्बेडेड सिस्टम में, बैंक स्विचिंग का उपयोग अक्सर इसकी सादगी, कम लागत और सामान्य प्रयोजन कंप्यूटिंग की तुलना में उन संदर्भों के लिए अक्सर बेहतर अनुकूलन के लिए किया जाता है।

यह भी देखें

 * बग़ल में पता स्थान, बीबीसी माइक्रो  पर बैंक स्विचिंग का एक उदाहरण
 * ओवरले (प्रोग्रामिंग)

इस पृष्ठ में अनुपलब्ध आंतरिक कड़ियों की सूची

 * बूटिंग
 * microcontroller
 * निर्देश सेट वास्तुकला
 * टीआरएस-80 मॉडल 4
 * टीआरएस-80 मॉडल II
 * प्राचीन
 * अपर मेमोरी एरिया
 * एम्यूलेटर
 * विस्तारित स्मृति
 * स्मृति प्रबंधन इकाई