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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

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

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